(57)【要約】【課題】  山分け対象の鋼材が多い場合であっても、山分け計画を確実に作成することができるようにする。【解決手段】  実現可能山ｍjのコストｃjから当該実現可能山ｍjに対する双対コストＰiを減算した値が「０」以下である場合（Ｓ２０５でＹｅｓである場合）に、実現可能山ｍjの集合Ｃ（行列Ａ）に実現可能山ｍjを追加する（Ｓ２０６）。かかる実現可能山ｍjの追加を、実現可能山ｍjのコストｃjから当該実現可能山ｍjに対する双対コストＰiを減算した値が「０」を上回るまで（Ｓ２０５でＮｏとなるまで）繰り返し行う。このようにして得られた実現可能山ｍjの集合Ｃを用いて原問題Ｐを解いて決定変数ｘ［ｊ］を導出し、実現可能山群の最適解｛ｍj_opt｝を導出する（Ｓ２０７）。【選択図】  図２
2018073171.tif 000002
【特許請求の範囲】
【請求項１】
鉄鋼プロセスにおける工程間の置場として鋼材を配置するヤードに搬入される複数の鋼材を、所定の山積み制約を満たすように山積みして、次工程に払い出す最終的な山姿となった複数の払出山に山分けするための山分け計画を作成する問題を集合分割問題とし、該集合分割問題を、列生成法を用いて解くことにより山分け計画を作成する鋼材の山分け計画作成装置であって、
前記鋼材を、前記山積み制約を満たす様に積んだ山である複数の実現可能山のそれぞれについて、該実現可能山を解として採用する場合に「１」となり、該実現可能山を解として採用しない場合に「０」となる０−１変数を決定変数として、該実現可能山に対する前記鋼材の山立てについての評価指標と、初期解として与えられた実現可能山の集合とを用いて、前記複数の鋼材を重複することなく且つ漏れなく含む前記実現可能山の最適な組み合わせを求める問題を原問題とし、
前記原問題の線形緩和問題を主問題とした場合の双対問題の最適解である双対解を導出する双対解導出手段と、
前記原問題の最適解を構成する実現可能山の候補である候補山を生成する列生成子問題の最適解を導出する列生成手段と、
前記列生成手段により導出された前記候補山が、収束要件を満足するか否かを判定する判定手段と、
前記判定手段により、前記列生成手段により導出された前記候補山が、前記収束要件を満足しないと判定されると、前記列生成手段により生成された前記候補山を前記実現可能山の集合に追加する列追加手段と、
前記判定手段により、前記列生成手段により導出された前記候補山が、前記収束要件を満足すると判定されると、その時点で得られている前記実現可能山の集合に基づいて、前記原問題の最適解として、前記実現可能山の組み合わせを導出する最適解導出手段と、を有し、
前記判定手段は、前記双対解導出手段による前記双対解の導出と、前記列生成手段による前記列生成子問題の最適解の導出と、前記判定手段による前記判定とを繰り返す収束計算を、前記収束要件を満足すると判定するまで実行し、
前記列生成子問題は、前記双対解と、前記山積み制約とを用いて、前記実現可能山の集合に追加する前記候補山を求める問題であることを特徴とする鋼材の山分け計画作成装置。
【請求項２】
前記原問題は、前記複数の鋼材のそれぞれについて、前記実現可能山の集合の中から、該鋼材を含む前記実現可能山が必ず１つ選択されるという制約を表す制約式であって、前記決定変数を用いて表される制約式と、前記実現可能山の集合に含まれる前記実現可能山のコストの総和を求める目的関数であって、前記決定変数および前記実現可能山のコストを用いて表される目的関数と、を用いて、該制約式を満足する範囲で該目的関数の値が最小になる前記決定変数を決定する０−１整数計画問題であり、
前記実現可能山のコストは、前記実現可能山に対する前記鋼材の山立てについての評価指標として、前記実現可能山の総数および逆転対の数を含み、
前記逆転対は、同一の前記実現可能山において前記ヤードへの到着順が早い方の前記鋼材が遅い方の前記鋼材よりも上に積まれる逆転の関係にある前記鋼材の対であることを特徴とする請求項１に記載の鋼材の山分け計画作成装置。
【請求項３】
前記双対問題は、前記実現可能山の集合に含まれる前記実現可能山のそれぞれのコストが、該実現可能山に対する双対コスト以上であるという制約を表す制約式であって、該実現可能山のコスト、該実現可能山に対応する山構成鋼材有無変数、および双対変数を用いて表される制約式と、前記複数の鋼材についての該双対変数の総和を求める目的関数であって、該双対変数を用いて表される目的関数と、を用いて、該制約式を満足する範囲で該目的関数の値が最大になる該双対変数の値を前記双対解として決定する線形計画問題であり、
前記双対変数は、前記鋼材毎に定められる変数であり、
前記実現可能山に対する双対コストは、前記鋼材に対する前記双対変数の値と、該鋼材と該実現可能山に対応する山構成鋼材有無変数との積の、前記複数の鋼材についての総和で表され、
前記山構成鋼材有無変数は、前記鋼材毎に定められる０−１変数であって、前記実現可能山に前記鋼材が含まれる場合に「１」となり、そうでない場合に「０」となる０−１変数であることを特徴とする請求項２に記載の鋼材の山分け計画作成装置。
【請求項４】
前記列生成子問題は、前記山積み制約を表す制約式であって、前記山構成鋼材有無変数および鋼材上下関係変数を用いて表される制約式と、前記候補山となる前記実現可能山のコストから、該実現可能山に対する前記双対コストを減算した値を求める目的関数であって、前記双対変数、該山構成鋼材有無変数、および該鋼材上下関係変数を用いて表される目的関数と、を用いて、該制約式を満足する範囲で該目的関数の値が最小になる該山構成鋼材有無変数および該鋼材上下関係変数を決定する０−１整数計画問題であり、
前記鋼材上下関係変数は、２つの前記鋼材の組み合わせにより定まる０−１変数であって、同一の前記払出山における２つの前記鋼材の上下関係を表す０−１変数であることを特徴とする請求項３に記載の鋼材の山分け計画作成装置。
【請求項５】
前記列生成子問題は、前記候補山となる前記実現可能山のコストが、該実現可能山に対する前記双対コスト以下であることを表す制約式を更に有する問題であり、
前記列生成手段は、前記列生成子問題の実行可能解が得られた時点で、該列生成子問題に対する計算を打ち切り、該実行可能解である前記山構成鋼材有無変数に基づいて、前記候補山を生成することを特徴とする請求項４に記載の鋼材の山分け計画作成装置。
【請求項６】
前記列生成手段は、前記列生成子問題における上界値および下界値に基づいて双対ギャップを導出し、該双対ギャップが閾値以下であると判定すると、該列生成子問題に対する計算を打ち切り、その時点で得られている前記列生成子問題の解である前記山構成鋼材有無変数に基づいて、前記候補山を生成し、
前記列生成子問題に対する計算を打ち切るか否かを判定する双対ギャップの閾値は、前記列生成子問題の前回の解である前記山構成鋼材有無変数に基づく前記候補山である前記実現可能山のコストから該実現可能山に対する前記双対コストを減算した値の絶対値が小さいほど、小さい値を有することを特徴とする請求項４に記載の鋼材の山分け計画作成装置。
【請求項７】
前記判定手段は、前記列生成手段により導出された前記候補山である前記実現可能山のコストから該実現可能山に対する前記双対コストを減算した値が０（ゼロ）以下であるときに、前記収束要件を満足しないと判定することを特徴とする請求項３〜６の何れか１項に記載の鋼材の山分け計画作成装置。
【請求項８】
前記最適解導出手段により導出された前記実現可能山の組み合わせに対して更に追加する実現可能山を導出する後処理手段を更に有し、
前記後処理手段は、前記列生成子問題の最適解である前記山構成鋼材有無変数に基づいて、前記更に追加する実現可能山の候補である追加候補山を導出する後処理用列生成手段と、
前記後処理用列生成手段により導出された前記追加候補山が、前記収束要件よりも緩和された収束要件を満足するか否かを判定する後処理用判定手段と、
前記後処理用判定手段により、前記後処理用列生成手段により導出された前記候補山が、前記緩和された収束要件を満足しないと判定されると、前記後処理用列生成手段により導出された前記追加候補山が、前記実現可能山の集合に含まれているか否かを判定する後処理用登録有無判定手段と、
前記後処理用登録有無判定手段により、前記後処理用列生成手段により導出された前記追加候補山が、前記実現可能山の集合に含まれていると判定されると、前記列生成子問題を変更する後処理用問題変更手段と、
前記後処理用登録有無判定手段により、前記後処理用列生成手段により導出された前記追加候補山が、前記実現可能山の集合に含まれていないと判定されると、該追加候補山を、該実現可能山の集合に追加する後処理用列追加手段と、
前記後処理用判定手段により、前記後処理用列生成手段により導出された前記追加候補山が、前記緩和された収束要件を満足すると判定されると、その時点で得られている前記実現可能山の集合に基づいて、前記原問題の最適解として、前記実現可能山の組み合わせを導出する後処理用最適解導出手段と、を更に有し、
前記後処理用判定手段は、前記後処理用列生成手段による前記追加候補山の導出と、前記後処理用判定手段による前記判定と、前記後処理用登録有無判定手段による前記判定と、前記後処理用列追加手段による前記追加候補山の追加または前記後処理用問題変更手段による前記列生成子問題の変更とを繰り返す収束計算を、前記緩和された収束条件を満足すると判定するまで行い、
前記後処理用判定手段は、前記後処理用列生成手段により導出された前記追加候補山としての前記実現可能山のコストから該実現可能山に対する双対コストを減算した値が、双対誤差以下である場合に、前記緩和された収束要件を満足しないと判定し、
前記双対誤差は、前記原問題の目的関数の値であって、前記原問題の最適解に対応する目的関数の値から、前記双対問題の目的関数の値であって、前記双対問題の最適解に対応する目的関数の値を減算した値であり、
前記後処理用列追加手段は、前記後処理用登録有無判定手段により、前記後処理用列生成手段により導出された前記追加候補山が、前記実現可能山の集合に含まれていると判定されると、該追加候補山を、該実現可能山の集合に追加せず、
前記後処理用列生成手段は、前記後処理用列生成手段により導出された前記追加候補山が、前記実現可能山の集合に含まれていると判定されると、前記後処理用問題変更手段により変更された列生成子問題の最適解である前記山構成鋼材有無変数に基づいて、前記追加候補山を導出することを特徴とする請求項３〜７の何れか１項に記載の鋼材の山分け計画作成装置。
【請求項９】
前記後処理用問題変更手段は、前記列生成子問題に対し、同一列選択抑制用制約式を追加した問題に該列生成子問題を変更し、
前記同一列選択抑制用制約式は、該変更された列生成子問題の目的関数の値であって、該変更された列生成子問題の最適解に対応する目的関数の値が、前回使用した前記列生成子問題の目的関数の値であって、前回使用した前記列生成子問題の最適解に対応する目的関数の値に正の値を加算した値以上であることを表す制約式であることを特徴とする請求項８に記載の鋼材の山分け計画作成装置。
【請求項１０】
前記後処理用問題変更手段は、前記列生成子問題に対し、同一列選択抑制用制約式を追加した問題に該列生成子問題を変更し、
前記同一列選択抑制用制約式は、前記後処理用登録有無判定手段により前記実現可能山の集合に含まれていると判定された前記追加候補山を構成しない前記鋼材を前記追加候補山に含めることを表す制約式、または、前記後処理用登録有無判定手段により前記実現可能山の集合に含まれていると判定された前記追加候補山を構成する前記鋼材を前記追加候補山に含めないことを表す制約式であることを特徴とする請求項８に記載の鋼材の山分け計画作成装置。
【請求項１１】
前記後処理用問題変更手段は、前記列生成子問題に対し、前記判定手段により前記収束条件を満足すると判定される直前に前記双対解導出手段により導出された前記双対解である双対最適解の各要素に対してランダムに摂動を与えた問題に該列生成子問題を変更することを特徴とする請求項８に記載の鋼材の山分け計画作成装置。
【請求項１２】
鉄鋼プロセスにおける工程間の置場として鋼材を配置するヤードに搬入される複数の鋼材を、所定の山積み制約を満たすように山積みして、次工程に払い出す最終的な山姿となった複数の払出山に山分けするための山分け計画を作成する問題を集合分割問題とし、該集合分割問題を、列生成法を用いて解くことにより山分け計画を作成する鋼材の山分け計画作成方法であって、
前記鋼材を、前記山積み制約を満たす様に積んだ山である複数の実現可能山のそれぞれについて、該実現可能山を解として採用する場合に「１」となり、該実現可能山を解として採用しない場合に「０」となる０−１変数を決定変数として、該実現可能山に対する前記鋼材の山立てについての評価指標と、初期解として与えられた実現可能山の集合とを用いて、前記複数の鋼材を重複することなく且つ漏れなく含む前記実現可能山の最適な組み合わせを求める問題を原問題とし、
前記原問題の線形緩和問題を主問題とした場合の双対問題の最適解である双対解を導出する双対解導出工程と、
前記原問題の最適解を構成する実現可能山の候補である候補山を生成する列生成子問題の最適解を導出する列生成工程と、
前記列生成工程により導出された前記候補山が、収束要件を満足するか否かを判定する判定工程と、
前記判定工程により、前記列生成工程により導出された前記候補山が、前記収束要件を満足しないと判定されると、前記列生成工程により生成された前記候補山を前記実現可能山の集合に追加する列追加工程と、
前記判定工程により、前記列生成工程により導出された前記候補山が、前記収束要件を満足すると判定されると、その時点で得られている前記実現可能山の集合に基づいて、前記原問題の最適解として、前記実現可能山の組み合わせを導出する最適解導出工程と、を有し、
前記判定工程は、前記双対解導出工程による前記双対解の導出と、前記列生成工程による前記列生成子問題の最適解の導出と、前記判定工程による前記判定とを繰り返す収束計算を、前記収束要件を満足すると判定するまで実行し、
前記列生成子問題は、前記双対解と、前記山積み制約とを用いて、前記実現可能山の集合に追加する前記候補山を求める問題であることを特徴とする鋼材の山分け計画作成方法。
【請求項１３】
請求項１〜１１の何れか１項に記載の鋼材の山分け計画作成装置の各手段としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、鋼材の山分け計画作成装置、鋼材の山分け計画作成方法、およびプログラムに関し、特に、ヤードにおける鋼材の山分け計画を作成するために用いて好適なものである。
【背景技術】
【０００２】
鉄鋼プロセスにおいて、例えば製鋼工程から次工程の圧延工程へスラブ等の鋼材を搬送する際、鋼材は、一旦ヤードと呼ばれる一時保管場所に搬入されて置かれた後、次工程である圧延工程（加熱炉）の処理時刻に合わせてヤードから搬出される。そのヤードのレイアウトの一例を図５に示す。ヤードとは、図５に示すように、上流工程より払い出された鋼材などの鋼材を、下流工程に供給するためのバッファーエリアとして、縦横に区画された置場５０１〜５０４である。縦方向の分割区分を"棟"、横方向の分割区分を"列"と称することが多い。クレーン(１Ａ、１Ｂ、２Ａ、２Ｂ)は棟内を移動可能であり、同一棟内での異なる列の間で鋼材の移送を行う。また搬送テーブルにより棟間の鋼材の移送を行う。搬送指令を作成する際は"棟"及び"列"を指定することにより、どこへ鋼材を搬送するかを示す（図５の置場５０１〜５０４に括弧書きで付されている番号（１１）、（１２）、（２１）、（２２）を参照）。
【０００３】
図５を例にヤードでの基本的な作業の流れを示す。まず、前工程である製鋼工程の連鋳機５１０から搬出された鋼材は、パイラー５１１を経由して受入テーブルＸでヤードまで搬入され、クレーン１Ａ、１Ｂ、２Ａ、２Ｂにより、区画された置場５０１〜５０４の何れかに搬送され、山積みして置かれる。そして、次工程である圧延工程の製造スケジュールに合わせ、再びクレーン１Ａ、１Ｂ、２Ａ、２Ｂにより払出テーブルＺに載せられ、圧延工程へと搬送される。一般に、ヤードにおいて鋼材は、前記の様に山積みされた状態で置かれる。これは、限られたヤード面積を有効に活用するためである。一方、鋼材を積み上げる際、次工程へ供給し易いよう、次工程の処理順番に鋼材が上から積まれている必要がある。さらに、積み姿が不安定な逆ピラミッド状に鋼材を積まないようにする必要がある。このように、鋼材を複数の最適山（＝払出山：次工程へ払い出す最終的な山姿となった山）に分けることを山分けと呼ぶ。
【０００４】
ここで、次工程である圧延工程の加熱炉の燃料原単位を削減するため、可及的に高い温度の鋼材を加熱炉に払い出す（装入する）ことが求められる。このため、昨今、ヤード内に保温設備を設置し、保温設備の中に前述したようにして鋼材を山積みした状態で保管することが行われている。このように保温設備を用いる場合でも、置場５０１〜５０４に直接鋼材を山積みする場合と同様に、保温設備を有効に活用するため、保温設備の中において、可及的に高さの高い払出山を作成することが必要である。
【０００５】
また、次工程の処理順番に鋼材が上から積まれていること、および積み形状が不安定な逆ピラミッド状に鋼材を積めないなどの制約（これを「積姿制約」と称する）がある。更に、山立てを行う際の作業負荷も見逃せない要素である。すなわち、山分けを行う上で、作業スペースの問題や作業を行うクレーン等の搬送機器の能力の兼ね合いから、山積みを行うための搬送作業数ができるだけ少ないことが求められる。山分けの場合には、ヤードに到着する順に鋼材を積んでいくことが出来れば理想的である。一方で、圧延工程への払出時の仮置き（山繰り）を無くし、払出作業を迅速に行うために、払出山においては、圧延工程の加熱炉への払出が早いものを上に積むのが基本である。従って、現実的には、ヤードへの到着順と払出山における積順とが食い違う場合がある。すなわち、ヤードへの到着順が早い方の鋼材を遅い方の鋼材よりも同一の払出山の上の段に積まなければならない場合がある。その場合には、相対的に下段に積まれる鋼材がヤードに到着するまで、先にヤードに到着した鋼材を一旦仮置き場に仮置きし、相対的に下段に積まれる鋼材がヤードに到着し山積みされてから、その鋼材の上に、仮置き場の鋼材を積む作業が必要となる。したがって、この様な作業ができるだけ少なくなるような山立てをすることが望まれる。
【０００６】
以上のように、ヤード管制では、前記制約の下で可及的に少ない作業負荷で、可及的に高い山立てを行う作業計画を策定することが望まれる。
鋼材置き場でサイズや次工程（圧延工程の加熱炉）での処理順序が異なる複数枚の鋼材を複数の山に分けて山積みする山分け問題を解決するには、対象鋼材により生成可能な全ての山分け候補の中から、ヤードへの受入時の山分け負荷や圧延工程の加熱炉への払出時の作業負荷などの評価関数を最適化する山分けの組み合わせを求めることが不可欠である。
【０００７】
このような大規模問題への対処方法として、特許文献１には、何れの対象鋼材も複数の山に重複使用されてはならず、且つ、何れかの山にて使用されねばならないという制約の下で、実現可能山の選択時の評価値の総和が最小になる実現可能山の組み合わせを、集合分割問題として求めることにより山分け計画を作成する手法が開示されている。ここで、実現可能山とは、対象鋼材を要素とする全体集合に対する部分集合であって、山積み制約を満たす部分集合である。山積み制約は、鋼材を山積みする際に課せられる制約である。払出順が早い鋼材の方が山の上側に配置されなければならないという制約等が山積み制約に含まれる。特許文献１では、全ての部分集合に対して山積み可否のチェックを行うのではなく、最下段から順次上段に向かって実現可能な鋼材のみを積み上げる（分岐する）方式により実現可能山のみを生成する。
【０００８】
しかしながら、特許文献１に記載の技術を、山分け計画の作成対象となる鋼材要素数が５０〜１００程度となる大規模問題に適用すると、実現可能山の数が１億個を超えることも頻繁に起こり、その場合には、計算機資源（主に主メモリ）の容量制限に掛かり、実現可能山を列挙できない事態が起こる。また、そこまでの規模にはならず、かろうじて実現可能山の列挙まではできた場合でも、その後の集合分割問題を最適計算する際、決定変数の数が実現可能山の数となるため、計算途中でメモリ容量を超えるか実用時間内では求解できない状況となる。
【０００９】
この様な実行可能解が列挙不能となるような大規模な問題に対し、集合分割問題を適用し最適解を得る方法として特許文献２には、自然言語処理におけるアライメント問題（二つの系列が与えられたときに片方の系列のどの要素がもう片方の系列のどの要素に対応するかを求める問題）に列生成法を用いる手法が開示されている。列生成法は大規模な線形計画問題を一括で解く代わりに、逐次的に変数を追加しながら元の問題の部分問題を解くことで元の問題の最適解を求める手法である。従って、ヤードにおける山分け問題に対してもこの手法を適用することが考えられる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１６−８１１８６号公報
【特許文献２】特開２０１５−１７０１３１号公報
【特許文献３】特開２０１１−１０５４８３号公報
【非特許文献】
【００１１】
【非特許文献１】久保幹雄、田村明久、松井知己編、「応用数理計画ハンドブック」、株式会社朝倉書店、２００２年５月、p.133、337、621、634
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、特許文献２に記載の技術では、あくまでも解法の枠組みを提供しているのみで解法そのものを提供していない。従って、適用対象に応じて、適用方法を考案する必要がある。また、特許文献２に記載の技術では、アライメント問題を前提としているため、特許文献２に記載の技術を山分け問題に適用することは容易ではない。
【００１３】
本発明は、以上の問題点に鑑みてなされたものであり、山分け対象の鋼材が多い場合であっても、山分け計画を確実に作成することができるようにすることを目的とする。
【課題を解決するための手段】
【００１４】
本発明の鋼材の山分け計画作成装置は、鉄鋼プロセスにおける工程間の置場として鋼材を配置するヤードに搬入される複数の鋼材を、所定の山積み制約を満たすように山積みして、次工程に払い出す最終的な山姿となった複数の払出山に山分けするための山分け計画を作成する問題を集合分割問題とし、該集合分割問題を、列生成法を用いて解くことにより山分け計画を作成する鋼材の山分け計画作成装置であって、前記鋼材を、前記山積み制約を満たす様に積んだ山である複数の実現可能山のそれぞれについて、該実現可能山を解として採用する場合に「１」となり、該実現可能山を解として採用しない場合に「０」となる０−１変数を決定変数として、該実現可能山に対する前記鋼材の山立てについての評価指標と、初期解として与えられた実現可能山の集合とを用いて、前記複数の鋼材を重複することなく且つ漏れなく含む前記実現可能山の最適な組み合わせを求める問題を原問題とし、前記原問題の線形緩和問題を主問題とした場合の双対問題の最適解である双対解を導出する双対解導出手段と、前記原問題の最適解を構成する実現可能山の候補である候補山を生成する列生成子問題の最適解を導出する列生成手段と、前記列生成手段により導出された前記候補山が、収束要件を満足するか否かを判定する判定手段と、前記判定手段により、前記列生成手段により導出された前記候補山が、前記収束要件を満足しないと判定されると、前記列生成手段により生成された前記候補山を前記実現可能山の集合に追加する列追加手段と、前記判定手段により、前記列生成手段により導出された前記候補山が、前記収束要件を満足すると判定されると、その時点で得られている前記実現可能山の集合に基づいて、前記原問題の最適解として、前記実現可能山の組み合わせを導出する最適解導出手段と、を有し、前記判定手段は、前記双対解導出手段による前記双対解の導出と、前記列生成手段による前記列生成子問題の最適解の導出と、前記判定手段による前記判定とを繰り返す収束計算を、前記収束要件を満足すると判定するまで実行し、前記列生成子問題は、前記双対解と、前記山積み制約とを用いて、前記実現可能山の集合に追加する前記候補山を求める問題であることを特徴とする。
【００１５】
本発明の鋼材の山分け計画作成方法は、鉄鋼プロセスにおける工程間の置場として鋼材を配置するヤードに搬入される複数の鋼材を、所定の山積み制約を満たすように山積みして、次工程に払い出す最終的な山姿となった複数の払出山に山分けするための山分け計画を作成する問題を集合分割問題とし、該集合分割問題を、列生成法を用いて解くことにより山分け計画を作成する鋼材の山分け計画作成方法であって、前記鋼材を、前記山積み制約を満たす様に積んだ山である複数の実現可能山のそれぞれについて、該実現可能山を解として採用する場合に「１」となり、該実現可能山を解として採用しない場合に「０」となる０−１変数を決定変数として、該実現可能山に対する前記鋼材の山立てについての評価指標と、初期解として与えられた実現可能山の集合とを用いて、前記複数の鋼材を重複することなく且つ漏れなく含む前記実現可能山の最適な組み合わせを求める問題を原問題とし、前記原問題の線形緩和問題を主問題とした場合の双対問題の最適解である双対解を導出する双対解導出工程と、前記原問題の最適解を構成する実現可能山の候補である候補山を生成する列生成子問題の最適解を導出する列生成工程と、前記列生成工程により導出された前記候補山が、収束要件を満足するか否かを判定する判定工程と、前記判定工程により、前記列生成工程により導出された前記候補山が、前記収束要件を満足しないと判定されると、前記列生成工程により生成された前記候補山を前記実現可能山の集合に追加する列追加工程と、前記判定工程により、前記列生成工程により導出された前記候補山が、前記収束要件を満足すると判定されると、その時点で得られている前記実現可能山の集合に基づいて、前記原問題の最適解として、前記実現可能山の組み合わせを導出する最適解導出工程と、を有し、前記判定工程は、前記双対解導出工程による前記双対解の導出と、前記列生成工程による前記列生成子問題の最適解の導出と、前記判定工程による前記判定とを繰り返す収束計算を、前記収束要件を満足すると判定するまで実行し、前記列生成子問題は、前記双対解と、前記山積み制約とを用いて、前記実現可能山の集合に追加する前記候補山を求める問題であることを特徴とする。
【００１６】
本発明のプログラムは、前記鋼材の山分け計画作成装置の各手段としてコンピュータを機能させることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、山分け対象の鋼材が多い場合であっても、山分け計画を確実に作成することができる。
【図面の簡単な説明】
【００１８】
【図１】図１は、鋼材の山分け計画作成装置の機能的な構成の一例を示す図である。
【図２】図２は、鋼材の山分け計画作成方法の一例を説明するフローチャートである。
【図３】図３は、図２のステップＳ２１０の列生成後処理の詳細について説明するフローチャートである。
【図４】図４は、山分け計画の作成結果の一例を示す図である。
【図５】図５は、ヤードのレイアウトの一例を示す図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照しながら、本発明の一実施形態を説明する。
（原問題Ｐ）
まず、本実施形態で解くべき問題である原問題Ｐについて説明する。本実施形態では、原問題Ｐを集合分割問題とする。集合分割問題は、全体集合Ｎの任意の部分集合Ｓjが、そのコストｃjを持つという前提で、以下の（１）式に示すように、全体集合Ｎの要素ｉを、重複なく且つ漏れなく部分集合ｍ1,ｍ2,・・・,ｍkに分割する問題である。このとき、部分集合ｍ1,ｍ2,・・・,ｍkに対するコストｃ1,ｃ2,・・・,ｃkの総和が最小となるようにする。以下の（１）式は、全体集合Ｎの要素ｉを重複なく且つ漏れなく部分集合ｍ1,ｍ2,・・・,ｍkに分割することを表す。
【００２０】
【数１】
2018073171.tif 000003
【００２１】
要素の数がｎ個の全体集合Ｎ＝｛1,2,・・・,ｎ｝の部分集合の集合（集合族）Ｃ＝｛ｍ1,・・・,ｍj,・・・,ｍk｝（ｍj⊆Ｎ）の要素ｍjのコストをｃjとする。ｉ行ｊ列の行列Ａにおいて、行を要素ｉ（∈Ｎ）に、列を部分集合ｍj（∈Ｃ）にそれぞれ対応させると共に、要素ｉを鋼材とし、部分集合ｍjを実現可能山とする。そうすると、以下のようにして山立て問題を０−１整数計画問題として定式化することができる。
【００２２】
＜決定変数＞
原問題Ｐの決定変数ｘ［ｊ］は、実現可能山ｍjを採用する場合に「１」、そうでない場合に「０（ゼロ）」となる０−１変数である。
＜制約式＞
原問題Ｐの制約式は、鋼材ｉ∈Ｎのそれぞれについて、当該鋼材ｉを含む集合族（部分集合ｍjの集合）Ｍj（ｉ）⊆Ｃの中から、一つの部分集合ｍjだけが選択されなければならないことを表す制約式であり、以下の（２）式で表される。
尚、鋼材ｉは、１つの鋼材であっても、１つの搬送機器（クレーン１Ａ、１Ｂ、２Ａ、２Ｂ）で搬送することができる鋼材の纏まり（搬送ロット）であってもよい。搬送ロットを決定する方法は、例えば、特許文献３に記載されているので、ここでは、その詳細な説明を省略する。
【００２３】
【数２】
2018073171.tif 000004
【００２４】
ここで、行列Ａの要素ａij（ｉ行ｊ列の要素）を、実現可能山ｍjが鋼材ｉを含む場合にａij＝１、含まない場合にａij＝０と定義する。この場合、行列Ａの或る列ｊにおいて、「１」の値を持つ行に対応する鋼材ｉが、当該列ｊに対応する実現可能山を構成する鋼材であり、当該列ｊにおいて、「０」の値を持つ行に対応する鋼材ｉは、当該列ｊに対応する実現可能山を構成しない。このようにして行列Ａの要素ａijを定義すると、（２）式は、行列Ａにより、以下の（２−１）式のように表記できる。ここで、（２−１）式の右辺は、全ての要素が「１」となるベクトルである。尚、各数式において、太字で示すものはベクトルを表す。
【００２５】
【数３】
2018073171.tif 000005
【００２６】
＜目的関数＞
原問題Ｐの目的関数は、コストｃjの総和が最小になるように実現可能山ｍjを選択することを目的とする関数であり、以下の（３）式で表される。
【００２７】
【数４】
2018073171.tif 000006
【００２８】
コストｃjは、実現可能山ｍjを原問題Ｐの最適解として選択するか否かを判断するための評価値であり、実現可能山ｍjに対する鋼材ｉの山立てを評価する１つまたは複数の評価指標に基づいて定められる。（３）式をベクトル表記すると、以下の（３−１）式のようになる。
【００２９】
【数５】
2018073171.tif 000007
【００３０】
本実施形態では、実現可能山（払出山）の総数ｃ1j（以下、必要に応じて「総山数」と称する）と、逆転対数ｃ2jをコストｃjに含める（逆転対の詳細については後述する）。そうすると、原問題Ｐの目的関数は、以下の（４）式で表される。尚、実現可能山ｍj（ｍj∈Ｃ）のコストｃjと、総山数ｃ1jおよび逆転対数ｃ2jとの関係は、以下の（４−１）式のようになる。
【００３１】
【数６】
2018073171.tif 000008
【００３２】
ここで、「１」の値を有する決定変数ｘ［ｊ］の数が総山数になるので、何れの実現可能山ｍjにおいても総山数ｃ1jの値は「１」になる。よって、（４）式では、総山数ｃ1jを評価する項（右辺第１項）を、その他のコストである逆転対数ｃ2jを評価する項（右辺第２項）と分離して表記している。ｋ1、ｋ2は、重み係数であり、各評価指標（総山数ｃ1j、逆転対数ｃ2j）のバランスをとるためのものである。重み係数ｋ1、ｋ2により、各評価指標（総山数ｃ1j、逆転対数ｃ2j）の相対的な重みを決定することができる。例えば、総山数ｃ1jを逆転対数ｃ2jよりも重要な評価指標（優先して評価する評価指標）とする場合には、総山数ｃ1jに対する重み係数ｋ1の値を大きくすることと、逆転対数ｃ2jに対する重み係数ｋ2の値を小さくすることとの少なくとも何れか一方を採用する。以上のように本実施形態では、総山数ｃ1jを評価する項と、逆転対数ｃ2jを評価する項との重み付き線形和で原問題Ｐの目的関数を表す場合を例に挙げる。
【００３３】
ここで、逆転対数について説明する。背景技術の欄で説明したように、払出山において相対的に下段に積まれる鋼材がヤードに到着するまで、先にヤードに到着した鋼材を一旦仮置き場に仮置きし、相対的に下段に積まれる鋼材がヤードに到着し山積みされてから、その鋼材の上に、仮置き場の鋼材を積む作業ができるだけ少なくなるように山立てをすることが望まれる。尚、この作業を山繰りと称する。このような仮置きの発生数は、数学的には「逆転数または転倒数(inversion number)」として表現することができる。この様に、任意の鋼材の対｛ｉ1,ｉ2｝⊆Ｎについて、同一の払出山に積むことは可能で、同一の払出山に積む際には、到着順と積み順とを入れ替える必要のある鋼材対を逆転対とし、この集合Ｒ（逆転対集合）を、以下の（４−２）式のように定義する。
【００３４】
【数７】
2018073171.tif 000009
【００３５】
その際、実現可能山ｍjに含まれる逆転対の数がｃ2jに対応する。このように逆転対とは、同一の払出山においてヤードへの到着順が早い方の鋼材ｉ1が遅い方の鋼材ｉ2よりも上に積まれる逆転の関係にある鋼材対をいい、その数を逆転対数と定義する。逆転対が１つあると、この例では、到着順が早い方の鋼材ｉ1が前述した仮置きが必要な鋼材となる。仮置きを行うために１回の山繰りが発生するので、逆転対数は、仮置きの数の目安となる。尚、逆転対集合Ｒを抽出するには、任意の鋼材ｉのヤードへの到着順と、払出山での積み順（即ち、払出順）とを判定するための情報が必要となる。仮置き数は実現可能山ｍjに含まれる逆転対集合＝｛（ｉ1, ｉ2）｜ｉ1がｉ2より到着順が先｝に対し、同じ鋼材を二重に計数しないよう考慮して鋼材ｉ1を計数したものとなる。
【００３６】
以上のように本実施形態では、（２）式の制約式を満足する範囲で（４）式の目的関数Ｊの値を最小にする決定変数ｘ［ｊ］を求める問題を原問題Ｐとする。特許文献１に記載の技術では、山分け計画の対象となる鋼材ｉの全体集合Ｎから、全ての実現可能山ｍjを生成したものを実現可能山ｍjの集合Ｃとして、原問題Ｐを解く。これに対し、本実施形態では、後述するように列生成法を用いて、山分け計画の対象となる鋼材ｉの全体集合Ｎから実現可能山ｍjを生成したものを実現可能山ｍjの集合Ｃとして、原問題Ｐを解く。従って、本実施形態では、（通常は）実現可能山ｍjの集合Ｃに全ての実現可能山ｍjは含まれず、最適な実現可能山ｍjを得るために必要な実現可能山ｍjの候補だけを列生成法により生成する。
【００３７】
尚、本実施形態では、コストｃjが、総山数ｃ1jと逆転対数ｃ2jである場合を例に挙げて説明する。しかしながら、コストｃjは、鋼材ｉの山立て（実現可能山ｍj）を評価する評価指標であれば、総山数や逆転対数あるいは仮置き数に限定されない。例えば、ヤード受入れ時・次工程への払出時の鋼材ｉの放熱量をコストｃjに更に含めてもよい。
【００３８】
（鋼材の山分け計画作成装置１００）
次に、鋼材の山分け計画作成装置の一例について説明する。図１は、鋼材の山分け計画作成装置１００の機能的な構成の一例を示す図である。鋼材の山分け計画作成装置１００のハードウェアは、例えば、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＨＤＤ、および各種のインターフェースを備える情報処理装置や、専用のハードウェアを用いることにより実現される。
【００３９】
本実施形態の鋼材の山分け計画作成装置１００では、列生成法を用いて集合分割問題を解くことにより山分け計画を作成する。そこで、まず、列生成法の概要を説明する。
<<双対問題の最適解の導出>>
列生成法では、原問題Ｐ（集合分割問題）の最適解の候補となる実現可能山ｍjの集合Ｃの初期値に基づいて、当該原問題Ｐの線形緩和問題を主問題とした場合の双対問題Ｄの最適解を導出する（以下の説明では、この双対問題Ｄの最適解を必要に応じて双対解と称する）。
<<列生成子問題の最適解の導出>>
そして、当該双対解を使って列生成子問題Ｓの最適解を導出して、原問題Ｐの最適解の候補となる実現可能山ｍjを生成する。
<<収束条件の判定>>
生成した実現可能山ｍjが収束条件を満足するか否かを判定する。ここでの収束条件とは、生成した実現可能山ｍjに対する前記コストｃjと当該実現可能山ｍjに含まれる鋼材に対する前記双対解の総和（以下、必要に応じて双対コストと称する）とを比較し、双対コストがコストｃjを超える、或いは生成した実現可能山ｍjが既に実現可能山ｍjの集合Ｃに含まれておれば収束と判定するものである。
【００４０】
<<列の追加>>
この判定の結果、実現可能山ｍjが収束条件を満足しない場合には、生成した実現可能山ｍjを実現可能山ｍjの集合Ｃに追加し、前記<<双対問題の最適解の導出>>に戻る。収束条件を満足する場合には、繰り返し処理を終了し、下記の<<原問題の最適解の導出>>に処理を移す。
<<原問題の最適解の導出>>
そして、収束要件を満足すると、収束条件を満足した時点で得られている実現可能山ｍjの集合の中から最適な実現可能山ｍjの組み合わせを、原問題Ｐを解くことにより導出する。
尚、列生成法と総称される技術には幾つかの異なる手法があり、以上の手法はその一つであるが、当該列生成法自体は、非特許文献２に記載されているように公知の技術である。
【００４１】
また、原問題Ｐの最適解と双対問題Ｄの最適解との差が大きい場合には、列生成後処理を行う。以上の列生成法は、線形計画問題に対する手法である。従って、列生成法を原問題Ｐである０−１整数計画問題に適用した場合には、原問題Ｐの最適解が、本来の最適解に達していないことが起こり得る。そこで、列生成後処理により、前述した最適な実現可能山ｍjの集合Ｃに対して追加する実現可能山ｍjを更に生成し、原問題Ｐの最適解を、可能な限り本来の最適解に近づける。
【００４２】
列生成後処理では、前述した列生成子問題Ｓの最適解を導出して、最適な実現可能山ｍjの組み合わせに対して追加する候補となる実現可能山ｍjを生成することと、前述した収束要件を緩和させた収束条件を当該実現可能山ｍjが満足するか否かを判定することと、当該緩和させた収束条件を満足していない場合に当該実現可能山ｍjを実現可能山ｍjの集合Ｃへ追加することとを、前述した収束条件を緩和させた収束条件を満足するまで繰り返し行う。このとき、生成した実現可能山ｍjが既に実現可能山ｍjの集合Ｃに存在する場合には、実現可能山ｍjの集合Ｃに存在していない実現可能山ｍjが生成されるように、前述した列生成子問題Ｓを変更した上で、前述した繰り返しの処理を行う。
【００４３】
次に、鋼材の山分け計画作成装置１００の機能的な構成の一例を説明する。
＜鋼材情報取得部１０１＞
鋼材情報取得部１０１は、山分け計画の作成対象となる鋼材ｉ∈Ｎのそれぞれの情報を取得する。以下の説明では、この情報を必要に応じて鋼材情報と称する。鋼材情報には、例えば、鋼材のＩＤ（識別情報）と、当該鋼材のサイズ（幅、長さ）と、当該鋼材のヤードへの到着順と、当該鋼材の次工程への払出順とが含まれる。尚、到着順および払出順は、鋼材情報に含まれる鋼材の中での相対的な順序である。
【００４４】
鋼材情報取得部１０１は、例えば、鋼材管理装置から鋼材情報を取得する。ただし、必ずしもこのようにする必要はなく、鋼材情報取得部１０１は、鋼材の山分け計画作成装置１００のユーザインターフェースに対するユーザの操作により入力された鋼材情報を取得してもよい。鋼材情報取得部１０１は、例えば、ＣＰＵ、ＲＯＭ、ＲＡＭ、および通信インターフェース（またはユーザインターフェース）を用いることにより実現される。
【００４５】
＜初期列集合設定部１０２＞
初期列集合設定部１０２は、山分け計画の作成対象となる鋼材ｉの全体集合Ｎ＝｛１,２,・・・,ｉ,・・・,ｎ｝、即ち、鋼材情報に含まれる鋼材ｉから、実現可能山ｍjの集合Ｃの初期値を設定する。このとき、初期列集合設定部１０２は、鋼材情報に含まれる鋼材ｉを重複なく且つ漏れなく含み、更に、後述する上載せ禁止制約（（１６）式を参照）および山高さ制約（（１７）式を参照）を満足するように、実現可能山ｍjの集合Ｃの初期値を設定する。その一例として、本実施形態では、初期列集合設定部１０２は、以下の（５）式のように、それぞれの実現可能山ｍjが、相互に異なる任意の１つの鋼材ｉのみを要素として持つように、実現可能山ｍjの集合Ｃの初期値を設定する。
【００４６】
【数８】
2018073171.tif 000010
【００４７】
例えば、ユーザは、鋼材の山分け計画作成装置１００のユーザインターフェースを操作することにより、実現可能山ｍjの集合Ｃの初期値の情報を入力し、初期列集合設定部１０２が、鋼材の山分け計画作成装置１００内の記憶媒体に当該情報を記憶することにより、実現可能山ｍjの集合Ｃの初期値を設定することができる。ただし、必ずしもこのようにする必要はなく、例えば、初期列集合設定部１０２は、予め定められたロジックにより、実現可能山ｍjの集合Ｃの初期値を導出してもよい。初期列集合設定部１０２は、例えば、ＣＰＵ、ＲＯＭ、ＲＡＭ、およびユーザインターフェースを用いることにより実現される。
【００４８】
＜双対解導出部１０３＞
双対解導出部１０３は、前述した原問題Ｐ（集合分割問題）の線形緩和問題を主問題とした場合の双対問題Ｄの最適解である双対解を導出する。原問題Ｐ自体は０−１整数計画問題であるが、双対問題Ｄは線形緩和問題（線形計画問題）になる。０−１整数計画問題である原問題Ｐの線形緩和問題を主問題とした場合の双対問題Ｄは、主問題と双対問題との関係から、以下のように定式化できる。
【００４９】
原問題Ｐは最小化問題なので、（３−１）式に示す目的関数Ｊの最適な下限値を求める問題を考察することにより双対問題Ｄが得られる。そこで、以下の（６）式を満足する変数ｐTを考える（ｐTはベクトルである）。
【００５０】
【数９】
2018073171.tif 000011
【００５１】
（６）式の両辺にｘ（≧０）を右から掛けると、以下の（７）式が成り立つ（（３−１）式に示したようにｘはベクトルである）。
【００５２】
【数１０】
2018073171.tif 000012
【００５３】
つまり（７）式の左辺（＝ｐTＡｘ）が原問題Ｐの目的関数Ｊの下限となる。原問題Ｐの目的関数Ｊのより良い下限値を与えるには、（６）式（＝ｐTＡ≦ｃ）の条件下で、（７）式の左辺（＝ｐTＡｘ）を最大化する問題を考えればよい。ここで、原問題Ｐの制約式である（２−１）式より、以下の（８）式が成り立つ。
【００５４】
【数１１】
2018073171.tif 000013
【００５５】
従って、以下のようにして双対問題Ｄが定式化される。尚、集合分割問題の線形緩和問題を主問題とする双対問題自体は、非特許文献１に記載されているように公知の技術で実現できるので、ここでは、その詳細な説明を省略する。
【００５６】
［決定変数］
本実施形態では、双対変数ｐ［ｉ］を双対問題Ｄの決定変数とする。
双対変数ｐ［ｉ］は、鋼材ｉ毎に定められる連続変数（−∞＜ｐ［ｉ］＜∞）である。双対変数ｐ［ｉ］の数は、ｎ個（鋼材情報に含まれる鋼材ｉの数）である。
【００５７】
［制約式］
双対問題Ｄの制約式は、前述した（６）式で表される。ここで、行列Ａは、双対解導出部１０３の計算の際に生成されている実現可能山ｍjの集合Ｃに対応する。双対解導出部１０３の最初の計算においては、行列Ａは、初期列集合設定部１０２により設定された実現可能山ｍjの集合Ｃの初期値に対応する。
（６）式を要素毎に表記すると、双対問題Ｄの制約式は、以下の（９）式で表される。尚、（９）式の左辺（Σｐ［ｉ］・ｍj［ｉ］（＝Ｐj））は前述の「双対コスト」と同じものである。（９）式に示すように、双対コストＰjは、鋼材ｉに対する双対変数ｐ［ｉ］の値と、行列Ａの列ｊの値であって、該鋼材ｉに対応する行ｉにおける値（「０」または「１」）との積の、鋼材情報に含まれる鋼材ｉについての総和で表される。
【００５８】
【数１２】
2018073171.tif 000014
【００５９】
（９）式において、ｍj［ｉ］は、行列Ａのｊ列そのものであり、ｊ列に対応する実現可能山ｍjが鋼材ｉを含めば「１」、そうでなければ「０」となる０−１変数である。従って、（９）式の制約式の数は、双対解導出部１０３の計算の際に生成されている実現可能山ｍj（列）の数（即ち、集合Ｃの要素数）となる。
【００６０】
［目的関数］
（６）式の条件下では、（７）式および（８）式より以下の（１０）式が成り立つので、（８）式のΣｐ［ｉ］は、ｃｘの下限値となる（（３−１）式に示したようにｃ、ｘはベクトルである）。できるだけ大きいΣｐ［ｉ］を求めれば、原問題Ｐの目的関数Ｊのより良い下限値が得られることになる。従って、双対問題Ｄの目的関数Ｊは最大化問題となり、以下の（１１）式のようになる。
【００６１】
【数１３】
2018073171.tif 000015
【００６２】
以上のように本実施形態では、（９）式の制約式を満足する範囲で（１１）式の目的関数Ｊの値を最大にする双対変数ｐ［ｉ］を求める問題を双対問題Ｄとする。従って、双対解導出部１０３は、例えば、CPLEX（登録商標）等の公知のソルバーを用いて線形計画法による最適化計算を行うことにより、（９）式の制約式を満足する範囲で（１１）式の目的関数Ｊの値を最大にする双対変数ｐ［ｉ］を、双対問題Ｄの最適解（双対解ｐsol［ｉ］）として導出する。
双対解導出部１０３は、例えば、ＣＰＵ、ＲＯＭ、ＲＡＭ、およびＨＤＤを用いることにより実現される。
【００６３】
＜列生成部１０４＞
列生成部１０４は、列生成子問題Ｓを解くことにより、原問題Ｐの最適解の候補、即ち、実現可能山ｍjの集合Ｃに追加される実現可能山ｍjの候補を導出する。前述したように行列Ａの列ｊが実現可能山ｍjに対応するので、列生成部１０４は、行列Ａに追加される列ｊの要素を導出することになる。
【００６４】
本実施形態において列生成子問題Ｓは、山積み制約を満たす範囲で、実現可能山ｍjのコストｃjから当該実現可能山ｍjに対する双対コストＰj（＝Σｐ［ｉ］・ｍj［ｉ］）を減算した値（以下の（１２）式を参照）が最小となる実現可能山ｍjを求める問題である。
【００６５】
【数１４】
2018073171.tif 000016
【００６６】
［決定変数］
本実施形態では、山構成鋼材有無変数ｍj［ｉ］と鋼材上下関係変数ｙ［ｉ1］［ｉ2］を列生成子問題Ｓの決定変数とする。
山構成鋼材有無変数ｍj［ｉ］は、（９）式に示すｍj［ｉ］と同じ変数である。山構成鋼材有無変数ｍj［ｉ］は、鋼材ｉ毎に定められ、実現可能山ｍjに鋼材ｉが含まれる場合に「１」となり、そうでない場合に「０」となる０−１変数である。
鋼材上下関係変数ｙ［ｉ1］［ｉ2］は、同一の実現可能山ｍj（払出山）において、鋼材ｉ1を相対的に下に配置し、鋼材ｉ2を相対的に上に配置する場合に「１」となり、そうでない場合に「０」となる０−１変数である。
【００６７】
［制約式］
本実施形態では、鋼材上下関係変数定義制約式、上載せ禁止制約式、および山高さ制約式を列生成子問題Ｓの制約式とする。
鋼材上下関係変数定義制約式は、鋼材上下関係変数ｙ［ｉ1］［ｉ2］を定義するための制約式であり、以下の（１３）式〜（１５）式で表される。
【００６８】
【数１５】
2018073171.tif 000017
【００６９】
上載せ禁止制約式は、山積み制約の一例であり、同一の実現可能山ｍj（払出山）において、鋼材ｉの上に配置することができない鋼材を規定する制約式である。同一の実現可能山ｍj（払出山）において鋼材ｉの上に配置することができない鋼材の集合をＵ（ｉ）−とし、その要素をｉUとすると、上載せ禁止制約式は、以下の（１６）式で表される。尚、Ｕ（ｉ）−は、（１６）式において、Ｕ（ｉ）の上に−を引いたもの（同一の実現可能山ｍj（払出山）において鋼材ｉの上に配置することができない鋼材の集合）である。以下の説明では、同一の実現可能山ｍj（払出山）において鋼材ｉの上に配置することができない鋼材の集合を必要に応じて上載せ禁止集合と称する。
【００７０】
【数１６】
2018073171.tif 000018
【００７１】
上載せ禁止集合Ｕ（ｉ）−は、ヤード管理方法等に応じて定めることができるが、例えば、以下のようにして定めることができる。ヤードにおける山立てでは、鋼材ｉの次工程への払い出しをスムーズに行うために、同一の実現可能山ｍj（払出山）において払出順が早い鋼材ｉであるほど上に積まれる必要がある。また、実現可能山ｍj（払出山）の積姿を安定にするために、極端な逆ピラミッド形状になるように山積みすることを避ける必要がある。即ち、同一の実現可能山ｍj（払出山）において相対的に上に配置される鋼材ｉの幅・長さから、相対的に下に積まれる鋼材ｉの幅・長さを減算した値が、規定値よりも大きくならないようにする必要がある。これらの要件により、同一の実現可能山ｍj（払出山）において鋼材ｉの上に他の鋼材を配置することができるか否かが一意に定められる。列生成部１０４は、鋼材情報に含まれる鋼材のサイズおよび払出順に基づいて、鋼材情報に含まれるそれぞれの鋼材ｉについて、これらの要件を満たさない鋼材の集合を上載せ禁止集合Ｕ（ｉ）−として導出する。
【００７２】
山高さ制約式は、山積み制約の一例であり、一つの実現可能山ｍj（払出山）の高さの最大値を規定する制約式であり、以下の（１７）式で表される。
【００７３】
【数１７】
2018073171.tif 000019
【００７４】
（１７）式において、ｎｍｂ［ｉ］は、鋼材ｉの数である。前述したように本実施形態では、鋼材ｉは、１つの鋼材であっても、１つの搬送機器（クレーン１Ａ、１Ｂ、２Ａ、２Ｂ）で搬送することができる鋼材の纏まり（複数の鋼材）であってもよい。１つの搬送機器（クレーン１Ａ、１Ｂ、２Ａ、２Ｂ）が２以上の鋼材を搬送することができず、鋼材ｉを１つ１つの鋼材に対応させる場合、（１７）式においてｎｍｂ［ｉ］は、「１」になる。また、山積上限数（一つの実現可能山ｍj（払出山）に積むことができる鋼材の上限数）をｈmaxとする。ただし、山高さ制約式は、必ずしも（１７）式のようにする必要はない。例えば、各鋼材ｉの厚みが異なる場合には、以下のようにすればよい。まず、鋼材情報に、鋼材ｉの厚みを含め、当該鋼材ｉに対する山構成鋼材有無変数ｍj［ｉ］に、当該鋼材ｉの厚みを掛けたものの、鋼材情報に含まれる全ての鋼材ｉについての和が、一つの実現可能山ｍj（払出山）の高さの最大値以下であることを示す山高さ制約式を用いてもよい。
【００７５】
［目的関数］
主問題と双対問題の関係（弱双対定理）から、本来は、主問題の目的関数の値は、主問題が最小化問題の場合、双対問題の目的関数の値以上になる。本実施形態では、主問題の目的関数は（３）式であり、双対問題の目的関数は（１１）式である。従って、本来は、実現可能山ｍjのコストｃjは、当該実現可能山ｍjに対する双対コストＰj以上（ｃj≧Ｐj）になる。また、実現可能山ｍjのコストｃjと、当該実現可能山ｍjに対する双対コストＰjとが等しい（ｃj＝Ｐj）ときの主問題および双対問題の解はそれぞれ真の最適解となる。
【００７６】
よって、実現可能山ｍjのコストｃjが、当該実現可能山ｍjに対する双対コストＰjを下回る（ｃj＜Ｐj）場合には、双対問題Ｄの双対解は、双対問題Ｄの真の最適解となっていない。即ち、この場合には、実現可能山ｍjの集合Ｃ（行列Ａ）に実現可能山ｍjが十分に追加されていないことになる。よって、実現可能山ｍjのコストｃjが、当該実現可能山ｍjに対する双対コストＰj以下（ｃj≦Ｐj）になるときの実現可能山ｍj（山構成鋼材有無変数ｍj［ｉ］）は、原問題Ｐの最適解の候補となり、実現可能山ｍjの集合Ｃ（行列Ａ）に追加される必要がある。
【００７７】
以上のことから本実施形態の列生成子問題Ｓでは、実現可能山ｍjのコストｃjが、当該実現可能山ｍjに対する双対コストＰj以下（ｃj≦Ｐj）になる実現可能山ｍj（山構成鋼材有無変数ｍj［ｉ］）を求めることを主目的とする。そこで、本実施形態では、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が最小となるときの実現可能山ｍj（山構成鋼材有無変数ｍj［ｉ］）を、原問題Ｐの最適解の候補として求める問題を、列生成子問題Ｓとする。当該値（＝ｃj−Ｐj）の最小値が「０」以下（即ち、ｃj≦Ｐj）であるか否かを判定することにより、当該実現可能山ｍj（山構成鋼材有無変数ｍj［ｉ］）を、実現可能山ｍjの集合Ｃ（行列Ａ）に追加すべきか否かを判定することができるからである。
【００７８】
列生成子問題Ｓの決定変数である山構成鋼材有無変数ｍj［ｉ］により定まる実現可能山ｍjのコストｃjは、鋼材上下関係変数ｙ［ｉ1］［ｉ2］を用いると、（４−１）式より、以下の（１８）式で表される。
【００７９】
【数１８】
2018073171.tif 000020
【００８０】
ここで、Ｒは、（４−２）式で定義した逆転対集合である。（１８）式の右辺第２項は、実現可能山ｍjにおける逆転対数に対応する。
【００８１】
また、前述したように双対コストＰjは、（９）式の左辺で表されるので、以下の（１９）式のようになる。
【００８２】
【数１９】
2018073171.tif 000021
【００８３】
前述したように本実施形態では、列生成子問題Ｓは、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が最小となるときの実現可能山ｍj（山構成鋼材有無変数ｍj［ｉ］）を求める問題である。従って、列生成子問題Ｓの目的関数ＪSは、（１８）式から（１９）式を減算することにより得られるが、（１８）式の右辺第１項は定数であるので、これを除外して表記すると、以下の（２０）式のようになる。
【００８４】
【数２０】
2018073171.tif 000022
【００８５】
以上のように、（１３）式〜（１７）式の制約式を満足する範囲で（２０）式の目的関数ＪSの値を最小にする決定変数（山構成鋼材有無変数ｍj［ｉ］および鋼材上下関係変数ｙ［ｉ1］［ｉ2］）を、列生成子問題Ｓの最適解として導出すればよい。
ところで、列生成子問題Ｓは０−１整数計画問題であり、且つ、繰り返し解かれるものである。従って、列生成子問題Ｓの計算時間が全体の計算時間に大きく依存することになる。そこで、列生成子問題Ｓの高速化を行うために、本実施形態では、以下の手法を採用する。
【００８６】
前述したように列生成子問題Ｓは、実現可能山ｍjのコストｃjが、当該実現可能山ｍjに対する双対コストＰj以下（ｃj≦Ｐj）になる実現可能山ｍj（山構成鋼材有無変数ｍj［ｉ］）を求めることを主目的とする。従って、この主目的を達成していれば、必ずしも、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）の最小値を求める必要はないと考えられる。
そこで、本実施形態では、（１３）式〜（１７）式の制約式に、実現可能山ｍjのコストｃjが、当該実現可能山ｍjに対する双対コストＰj以下（ｃj≦Ｐj）であるという制約式を更に追加する。即ち、以下の（２１）式の制約式を追加する。
【００８７】
【数２１】
2018073171.tif 000023
【００８８】
（２１）式の制約式を追加する場合には、実行可能解が得られさえすればよいことにするので、実行可能解が求まり次第、計算を終了させる。
従って、本実施形態では、列生成部１０４は、CPLEX（登録商標）等の公知のソルバーを用いて０−１整数計画法による最適化計算を行うことにより、（１３）式〜（１７）式、（２１）式の制約式を満足する範囲で（２０）式の目的関数ＪSの値を最小にする決定変数（山構成鋼材有無変数ｍj［ｉ］および鋼材上下関係変数ｙ［ｉ1］［ｉ2］）を導出する。そして、列生成部１０４は、導出した決定変数（山構成鋼材有無変数ｍj［ｉ］および鋼材上下関係変数ｙ［ｉ1］［ｉ2］）から、（１８）式および（１９）式により、実現可能山ｍjのコストｃjと、当該実現可能山ｍjに対する双対コストＰjとを導出する。尚、実行可能解が求まり次第、計算を終了させることにより、実質的に（２０）式の目的関数ＪSは考慮されることなく、実行可能解が導出されることになる。
列生成部１０４は、例えば、ＣＰＵ、ＲＯＭ、ＲＡＭ、およびＨＤＤを用いることにより実現される。
【００８９】
＜判定部１０５＞
前述したように、実現可能山ｍjのコストｃjが、当該実現可能山ｍjに対する双対コストＰj以下（ｃj≦Ｐj）である場合には、実現可能山ｍjの集合Ｃ（行列Ａ）に実現可能山ｍjが十分に追加されていない。そこで、判定部１０５は、列生成部１０４で導出された、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が「０」以下であるか否かを判定する。
【００９０】
この判定の結果、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が「０」以下である場合には、列生成部１０４により導出された（最新の）山構成鋼材有無変数ｍj［ｉ］に基づく実現可能山ｍjを、実現可能山ｍjの集合Ｃ（行列Ａ）に追加する必要がある。一方、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が「０」を上回る場合には、実現可能山ｍjをこれ以上実現可能山ｍjの集合Ｃ（行列Ａ）に追加しても、当該実現可能山ｍjが原問題Ｐの最適解の候補になることはないと見なせる。
判定部１０５は、例えば、ＣＰＵ、ＲＯＭ、ＲＡＭ、およびＨＤＤを用いることにより実現される。
【００９１】
＜列追加部１０６＞
列追加部１０６は、判定部１０５により、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が「０」以下であると判定されると、列生成部１０４により導出された（最新の）山構成鋼材有無変数ｍj［ｉ］に基づく実現可能山ｍjを、実現可能山ｍjの集合Ｃ（行列Ａ）に追加する。例えば、列追加部１０６は、現在の行列Ａの最後の列の次の列に、列生成部１０４により導出された（最新の）山構成鋼材有無変数ｍj［ｉ］に基づく実現可能山ｍjの情報を追加する。
列追加部１０６は、例えば、ＣＰＵ、ＲＯＭ、ＲＡＭ、およびＨＤＤを用いることにより実現される。
【００９２】
＜実現可能山ｍjを追加した後の繰り返し計算＞
以上のようにして列追加部１０６により実現可能山ｍjが追加されると、山構成鋼材有無変数ｍj［ｉ］が増える。そこで、双対解導出部１０３は、新たな山構成鋼材有無変数ｍj［ｉ］を用いて、（９）式の制約式を満足する範囲で（１１）式の目的関数Ｊの値を最大にする双対変数ｐ［ｉ］を導出する。
【００９３】
更に、列生成部１０４は、このようにして導出された双対変数ｐ［ｉ］を用いて、（１３）式〜（１７）式、（２１）式の制約式を満足する範囲で（２０）式の目的関数ＪSの値を最小にする決定変数（山構成鋼材有無変数ｍj［ｉ］および鋼材上下関係変数ｙ［ｉ1］［ｉ2］）を導出する。そして、列生成部１０４は、導出した決定変数（山構成鋼材有無変数ｍj［ｉ］および鋼材上下関係変数ｙ［ｉ1］［ｉ2］）から、（１８）式および（１９）式により、実現可能山ｍjのコストｃjと、当該実現可能山ｍjに対する双対コストＰjとを導出する。
【００９４】
そして、判定部１０５は、このようにして導出された、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が「０」以下であるか否かを判定する。この判定の結果、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が「０」以下である場合には、列生成部１０４により導出された（最新の）山構成鋼材有無変数ｍj［ｉ］に基づく実現可能山ｍjが、実現可能山ｍjの集合Ｃ（行列Ａ）に含まれているか否かを判定し、含まれていない場合には列追加部１０６は、列生成部１０４により導出された（最新の）山構成鋼材有無変数ｍj［ｉ］に基づく実現可能山ｍjを、実現可能山ｍjの集合Ｃ（行列Ａ）に追加する。
以上の処理を、判定部１０５により、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が「０」を上回ると判定するまで、或いは実現可能山ｍjがその時点での集合Ｃ（行列Ａ）に既に含まれていると判定するまで繰り返し行う。
【００９５】
＜最適解導出部１０７＞
最適解導出部１０７は、判定部１０５により、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が「０」を上回る或いは実現可能山ｍjが既に実現可能山ｍjの集合Ｃ（行列Ａ）に含まれていると判定されると起動する。
最適解導出部１０７は、前述した原問題Ｐの求解を行う。具体的に説明すると最適解導出部１０７は、判定部１０５により、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が「０」を上回ると判定された時点で得られている（最新の）実現可能山ｍjの集合Ｃ（行列Ａ）を用いて、CPLEX（登録商標）等の公知のソルバーを用いて０−１整数計画法による最適化計算を行うことにより、（２）式の制約式を満足する範囲で（４）式の目的関数Ｊの値を最小にする決定変数ｘ［ｊ］を導出し、実現可能山群の最適解｛ｍj_opt｝を導出する。前述したように従来は、山分け計画の対象となる鋼材ｉの全体集合Ｎから、全ての実現可能山ｍjを生成したものを実現可能山ｍjの集合Ｃとして、原問題Ｐを解く。これに対し、本実施形態では、実現可能山ｍjの集合Ｃの初期値と、列追加部１０６により追加された実現可能山ｍjとを実現可能山ｍjの集合Ｃとして、原問題Ｐを解く。前述したように、本実施形態では、実現可能山ｍjの集合Ｃ（行列Ａ）が収束し、実現可能山ｍjが原問題Ｐの最適解の候補になることはないと見なせる場合には、列追加部１０６による実現可能山ｍjの追加は行われない。従って、計算精度を大きく落とすことなく、実現可能山ｍjの列挙数を少なくすることができる。その結果、主として計算機の主メモリが不足することにより、実現可能山ｍjの列挙ができないことや、列挙出来たとしてもその後の集合分割問題を解くことが出来ないこと等により、山立て計画を作成することができないという事態が生じることを抑制することができる。
最適解導出部１０７は、例えば、ＣＰＵ、ＲＯＭ、ＲＡＭ、およびＨＤＤを用いることにより実現される。
【００９６】
＜後処理部１０８＞
前述したように原問題Ｐは、０−１整数計画問題である。一方、本来、列生成法は、線形計画問題に対する手法である。従って、列生成法を０−１整数計画問題に対し適用した場合には、実現可能山ｍjの集合Ｃに対する原問題Ｐの最適解（実現可能山群の最適解｛ｍj_opt｝）が、本来の最適解（即ち、全ての実現可能山ｍjを用いて原問題Ｐを解いた時の解）に達していないことが起こり得る。
【００９７】
そこで本実施形態では、最適解導出部１０７により導出された原問題Ｐの最適解（実現可能山群の最適解｛ｍj_opt｝）が、本来の最適解に達しているか否かを判定する。この判定の結果、本来の最適解に達していない場合には、実現可能山ｍjを、実現可能山ｍjの集合Ｃ（行列Ａ）に追加し、原問題Ｐの最適解を、可能な限り、本来の最適解に近づけるようにする。
【００９８】
そのために本実施形態では、後処理部１０８は、双対誤差が閾値ＴＨ未満であるか否かを判定する。双対誤差は、上界値ＪUから下界値ＪLを減算した値（＝ＪU−ＪL）である。上界値ＪUは、原問題Ｐの最適解（実現可能山群の最適解｛ｍj_opt｝）に対応する原問題Ｐの目的関数Ｊ（（４）式）の値である。下界値ＪLは、判定部１０５により、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が「０」以下ではない-と判定される直前に双対解導出部１０３により導出された（最新の）双対解ｐsol［ｉ］に対応する双対問題Ｄの目的関数Ｊ（（１１）式）の値である。閾値ＴＨは、原問題Ｐの目的関数Ｊ（（４）式）の値の最小変動量になる。（４）式において、ｋ1＝５．０、ｋ2＝１．０とした場合、（決定変数ｘ［ｊ］は０−１変数であるので）原問題Ｐの目的関数Ｊの値の最小変動量は、ｋ2（＝１．０）になる。このようにして双対誤差（＝ＪU−JL）および閾値ＴＨを定めることにより、双対誤差（＝ＪU−JL）が閾値ＴＨ未満である場合には、最適解導出部１０７により導出された原問題Ｐの最適解（実現可能山群の最適解｛ｍj_opt｝）が、本来の最適解に達していると見なすことができる。上界値ＪUと下界値ＪLとがこれ以上近づかないと見なせるからである。
【００９９】
一方、双対誤差（＝ＪU−JL）が閾値ＴＨ以上の場合には、後処理部１０８は、列生成後処理を実行する。
列生成後処理では、まず、後処理部１０８は、前述した列生成部１０４と同じ処理を行う。即ち、後処理部１０８は、（１３）式〜（１７）式、（２１）式の制約式を満足する範囲で（２０）式の目的関数ＪSの値を最小にする決定変数（山構成鋼材有無変数ｍj［ｉ］および鋼材上下関係変数ｙ［ｉ1］［ｉ2］）の導出と、実現可能山ｍjのコストｃjおよび当該実現可能山ｍjに対する双対コストＰjの導出とを行う。尚、このときに使用する双対解ｐsol［ｉ］は、原問題Ｐの最適解（実現可能山群の最適解｛ｍj_opt｝）が導出された直前に双対解導出部１０３で導出された双対解ｐsol［ｉ］（以下、必要に応じて双対最適解ｐopt［ｉ］と称する）である。
【０１００】
次に、後処理部１０８は、このようにして導出された、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が双対誤差（＝ＪU−JL）以下であるか否かを判定する。前述したように、判定部１０５では、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が「０」以下であるか否かを判定する。これに対し、後処理部１０８では、当該値（＝ｃj−Ｐj）が、双対誤差（＝ＪU−JL）以下であるか否かを判定する。このように列生成後処理では、判定部１０５による判定条件を緩和する（即ち、ｃj−Ｐjと比較する値を大きくする）。
【０１０１】
この判定の結果、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が双対誤差（＝ＪU−JL）以下である場合、後処理部１０８は、当該判定の直前に導出した（最新の）山構成鋼材有無変数ｍj［ｉ］に基づく実現可能山ｍjを、実現可能山ｍjの集合Ｃに追加する。
そして、後処理部１０８は、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が双対誤差（＝ＪU−JL）以下でなくなるまで、前述した処理を繰り返し行う。即ち、後処理部１０８は、決定変数（山構成鋼材有無変数ｍj［ｉ］、鋼材上下関係変数ｙ［ｉ1］［ｉ2］）、実現可能山ｍjのコストｃj、および当該実現可能山ｍjに対する双対コストＰjの導出と、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が双対誤差（＝ＪU−JL）以下であるか否かの判定と、実現可能山ｍjの追加とを繰り返し行う。
【０１０２】
ところで、この手法では、実現可能山ｍjの集合Ｃに既に登録済みの実現可能山ｍjが再生成される可能性がある。そこで、本実施形態では、後処理部１０８は、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が双対誤差（＝ＪU−JL）以下である場合、当該実現可能山ｍjを、実現可能山ｍjの集合Ｃに追加する前に、当該実現可能山ｍjが、実現可能山ｍjの集合Ｃに既に登録されているか否かを判定する。
【０１０３】
この判定の結果、新たに導出した実現可能山ｍjが、実現可能山ｍjの集合Ｃに登録されていない場合、後処理部１０８は、当該実現可能山ｍjを、実現可能山ｍjの集合Ｃに追加する。
一方、新たに導出した実現可能山ｍjが、実現可能山ｍjの集合Ｃに既に登録されている場合、後処理部１０８は、実現可能山ｍjの導出に用いる列生成子問題Ｓを変更する。本実施形態では、列生成子問題Ｓに以下の（２２）式の制約式を追加する。
【０１０４】
【数２２】
2018073171.tif 000024
【０１０５】
ここで、ＪSpは、実現可能山ｍjの集合Ｃ（行列Ａ）に既に登録されている実現可能山ｍjを新たに導出したときの列生成子問題Ｓの目的関数ＪS（（２０）式）の値である。ＪSは、（再計算する際の）（２０）式の目的関数ＪSの値である。αは、正の値（微小値）である。
このように新たに導出した実現可能山ｍjが、実現可能山ｍjの集合Ｃ（行列Ａ）に既に登録されている場合、後処理部１０８は、（１３）式〜（１７）式、（２１）式、（２２）式の制約式を満足する範囲で（２０）式の目的関数ＪSの値を最小にする決定変数（山構成鋼材有無変数ｍj［ｉ］および鋼材上下関係変数ｙ［ｉ1］［ｉ2］）を導出し、導出した決定変数から、（１８）式および（１９）式により、実現可能山ｍjのコストｃjと、当該実現可能山ｍjに対する双対コストＰjとを導出する。
【０１０６】
そして、前述したように、後処理部１０８は、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が双対誤差（＝ＪU−JL）以下であるか否かを判定する。この判定の結果、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が双対誤差（＝ＪU−JL）以下である場合には、当該実現可能山ｍjが、実現可能山ｍjの集合Ｃに既に登録されているか否かを判定する。この判定の結果、実現可能山ｍjが、実現可能山ｍjの集合Ｃに既に登録されている場合、後処理部１０８は、正の値を有する微小値を（２２）式のαに加算して（即ち、（２２）式の右辺の値を微増させて）列生成子問題Ｓを再変更する。
【０１０７】
後処理部１０８は、実現可能山ｍjが、原問題Ｐの最適解（実現可能山群の最適解｛ｍj_opt｝）に追加されるまで、以上の処理を繰り返し行う。即ち、後処理部１０８は、決定変数（山構成鋼材有無変数ｍj［ｉ］、鋼材上下関係変数ｙ［ｉ1］［ｉ2］）、実現可能山ｍjのコストｃj、および当該実現可能山ｍjに対する双対コストＰjの導出と、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が双対誤差（＝ＪU−JL）以下であるか否かの判定と、当該実現可能山ｍjが、実現可能山ｍjの集合Ｃに既に登録されているか否かの判定と、列生成子問題Ｓの変更とを繰り返し行う。
【０１０８】
そして、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が双対誤差（＝ＪU−JL）を超えると、後処理部１０８は、以上のようにして実現可能山ｍjが追加された実現可能山ｍjの集合Ｃ（列が追加された行列Ａ）を用いて、前述した原問題Ｐの求解を行う。即ち、後処理部１０８は、以上のようにして実現可能山ｍjが追加された実現可能山ｍjの集合Ｃ（列が追加された行列Ａ）を用いて、（２）式の制約式を満足する範囲で（４）式の目的関数Ｊの値を最小にする決定変数ｘ［ｊ］を導出し、実現可能山群の最適解｛ｍj_opt｝を導出する。そして、後処理部１０８は、当該導出した実現可能山群の最適解｛ｍj_opt｝を導出したときの目的関数Ｊの値である実現可能山群の最適値ＪU2が、前述したようにして最適解導出部１０７により導出された実現可能山群の最適解｛ｍj_opt｝を導出したときの目的関数Ｊの値である実現可能山群の最適値ＪUに対し改善（変更）されていれば、実現可能山群の最適解｛ｍj_opt｝を更新する。そして、列生成後処理を終了する（ここでは後処理を行う前の実現可能山群に対する最適値をＪU、後処理にて追加された列を含む実現可能山群に対する最適値をＪU2としている）。
【０１０９】
尚、以上のようにして変更した列生成子問題Ｓが実行不可能となった場合、または、（２２）式における列生成子問題Ｓの目的関数ＪSの下限値（＝ＪSp＋α）が双対誤差（＝ＪU−ＪL）に到達した場合にも、後処理部１０８は、実現可能山ｍjが追加された実現可能山ｍjの集合Ｃ（列が追加された行列Ａ）を用いて、（２）式の制約式を満足する範囲で（４）式の目的関数Ｊの値を最小にする決定変数ｘ［ｊ］を導出して、実現可能山群の最適解｛ｍj_opt｝を導出し、当該実現可能山群の最適解｛ｍj_opt｝を導出したときの目的関数Ｊの値である実現可能山群の最適値ＪU2が、最適解導出部１０７により導出された実現可能山群の最適解｛ｍj_opt｝を導出したときの目的関数Ｊの値である実現可能山群の最適値ＪUに対し改善されていれば、実現可能山群の最適解｛ｍj_opt｝を更新し、列生成後処理を終了する。また、後処理部１０８も、双対解導出部１０３および列生成部１０４と同様に、CPLEX（登録商標）等の公知のソルバーを用いて０−１整数計画法および線形計画法による最適化計算を行うことにより、前述した処理を実行することができる。
後処理部１０８は、例えば、ＣＰＵ、ＲＯＭ、ＲＡＭ、およびＨＤＤを用いることにより実現される。
【０１１０】
＜出力部１０９＞
出力部１０９は、実現可能山群の最適解｛ｍj_opt｝の情報を山分け計画の情報として出力する。後処理部１０８により実現可能山群の最適解｛ｍj_opt｝が更新されている場合には、更新された実現可能山群の最適解｛ｍj_opt｝の情報を山分け計画の情報として出力する。出力部１０９は、例えば、実現可能山のＩＤと、当該ＩＤの実現可能山に属する鋼材のＩＤとを含む情報を山分け計画の情報とすることができる。また、鋼材のＩＤは、鋼材情報に含まれるＩＤである。
また、出力部１０９は、鋼材情報に含まれる鋼材のサイズと、上載せ禁止制約式とに基づいて、実現可能山に属する鋼材の当該実現可能山における積順を導出し、当該積順の情報を山分け計画の情報に含めて出力してもよい。
【０１１１】
山分け計画の情報の出力の形態としては、例えば、外部装置への送信と、鋼材の山分け計画作成装置１００の内部または外部の記憶媒体の記憶との少なくとも何れか１つを採用することができる。
また、出力部１０９は、山分け計画の情報と、鋼材情報に含まれる鋼材の到着順と、ヤードの置場５０１〜５０４および搬送機器（クレーン１Ａ、１Ｂ、２Ａ、２Ｂ）の情報に基づいて、どのタイミングでどの搬送機器によりどの鋼材をどの場所に搬送するのかを特定し、特定した内容に基づいて、搬送機器に対する動作指令を行うことができる。この場合には、山分け計画の情報を出力しなくてもよい。
【０１１２】
（動作フローチャート）
次に、図２および図３のフローチャートを参照しながら、本実施形態の鋼材の山分け計画作成方法の一例を説明する。
まず、ステップＳ２０１において、鋼材情報取得部１０１は、鋼材情報を取得する。
次に、ステップＳ２０２において、初期列集合設定部１０２は、実現可能山ｍjの集合Ｃの初期値を設定する。
【０１１３】
次に、ステップＳ２０３において、双対解導出部１０３は、実現可能山ｍjの集合Ｃの現在値に基づいて、（９）式の制約式を満足する範囲で（１１）式の目的関数Ｊの値を最大にする双対変数ｐ［ｉ］を、双対問題Ｄの最適解（双対解ｐsol［ｉ］）として導出する。最初にステップＳ２０３を行うときには、実現可能山ｍjの集合Ｃの現在値は、ステップＳ２０２で設定された実現可能山ｍjの集合Ｃの初期値である。
【０１１４】
次に、ステップＳ２０４において、列生成部１０４は、ステップＳ２０３で導出された（最新の）双対解ｐsol［ｉ］を用いて、（１３）式〜（１７）式、（２１）式の制約式を満足する範囲で（２０）式の目的関数ＪSの値を最小にする決定変数（山構成鋼材有無変数ｍj［ｉ］および鋼材上下関係変数ｙ［ｉ1］［ｉ2］）を導出する。そして、列生成部１０４は、導出した決定変数（山構成鋼材有無変数ｍj［ｉ］および鋼材上下関係変数ｙ［ｉ1］［ｉ2］）から、（１８）式および（１９）式により、実現可能山ｍjのコストｃjと、当該実現可能山ｍjに対する双対コストＰjとを導出する。
【０１１５】
次に、ステップＳ２０５において、判定部１０５は、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が「０」以下であるか否かを判定する。この判定の結果、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が「０」以下である場合には、ステップＳ２０６に進む。
【０１１６】
ステップＳ２０６に進むと、判定部１０５は、ステップＳ２０４で導出された（最新の）山構成鋼材有無変数ｍj［ｉ］に基づく実現可能山ｍjが、実現可能山ｍjの集合Ｃに含まれているか否かを判定する。この判定の結果、ステップＳ２０４で導出された（最新の）山構成鋼材有無変数ｍj［ｉ］に基づく実現可能山ｍjが、実現可能山ｍjの集合Ｃに含まれている場合には、後述するステップＳ２０８に進む。一方、ステップＳ２０４で導出された（最新の）山構成鋼材有無変数ｍj［ｉ］に基づく実現可能山ｍjが、実現可能山ｍjの集合Ｃに含まれていない場合には、ステップＳ２０７に進む。
【０１１７】
ステップＳ２０７に進むと、列追加部１０６は、ステップＳ２０４で導出された（最新の）山構成鋼材有無変数ｍj［ｉ］に基づく実現可能山ｍjを、実現可能山ｍjの集合Ｃに追加し、実現可能山ｍjの集合Ｃの現在値を更新する。そして、ステップＳ２０３に戻り、ステップＳ２０５において、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が「０」を超えると判定されるか、または、ステップＳ２０６において、ステップＳ２０４で導出された（最新の）山構成鋼材有無変数ｍj［ｉ］に基づく実現可能山ｍjが、実現可能山ｍjの集合Ｃに含まれていると判定されるまで、ステップＳ２０３〜Ｓ２０７の処理を繰り返し行う。
【０１１８】
以上のようにしてステップＳ２０５において、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が「０」以下でないと判定されるか、または、ステップＳ２０６において、ステップＳ２０４で導出された（最新の）山構成鋼材有無変数ｍj［ｉ］に基づく実現可能山ｍjが、実現可能山ｍjの集合Ｃに含まれていると判定されると、ステップＳ２０８に進む。ステップＳ２０８に進むと、最適解導出部１０７は、当該判定の時点で得られている（最新の）実現可能山ｍjの集合Ｃ（行列Ａ）を用いて、（２）式の制約式を満足する範囲で（４）式の目的関数Ｊの値を最小にする決定変数ｘ［ｊ］を導出し、実現可能山群の最適解｛ｍj_opt｝を導出する。
【０１１９】
次に、ステップＳ２０９において、後処理部１０８は、双対誤差（＝ＪU−ＪL）が閾値ＴＨ未満であるか否かを判定する。この判定の結果、双対誤差（＝ＪU−JL）が閾値ＴＨ未満である場合には、ステップＳ２０８で導出された実現可能山群の最適解｛ｍj_opt｝が、本来の最適解（全ての実現可能山ｍjを用いて原問題Ｐを解いた時の解）であると見なせるので、ステップＳ２１０の処理を省略して後述するステップＳ２１１に進む。
一方、双対誤差（＝ＪU−JL）が閾値ＴＨ未満でない場合には、ステップＳ２０７で導出された実現可能山群の最適解｛ｍj_opt｝に実現可能山ｍjを追加して、原問題Ｐの最適解を、可能な限り、本来の最適解に近づけるようにするために、ステップＳ２１０に進み、後処理部１０８は、列生成後処理を実行する。そして、ステップＳ２１１に進む。列生成後処理の詳細については、図３を参照しながら後述する。
【０１２０】
ステップＳ２１１に進むと、出力部１０９は、実現可能山群の最適解｛ｍj_opt｝の情報を山分け計画の情報として出力する。そして、図２のフローチャートによる処理を終了する。
【０１２１】
次に、図３のフローチャートを参照しながら、図２のフローチャートのステップＳ２１０の列生成後処理の詳細について説明する。
まず、ステップＳ３０１において、後処理部１０８は、双対最適解ｐopt［ｉ］（即ち、ステップＳ２０５でＮｏと判定される直前にステップＳ２０３で導出された双対解ｐsol［ｉ］）を用いて、（１３）式〜（１７）式、（２１）式の制約式を満足する範囲で（２０）式の目的関数ＪSの値を最小にする決定変数（山構成鋼材有無変数ｍj［ｉ］および鋼材上下関係変数ｙ［ｉ1］［ｉ2］）を導出する。そして、後処理部１０８は、導出した決定変数（山構成鋼材有無変数ｍj［ｉ］および鋼材上下関係変数ｙ［ｉ1］［ｉ2］）から、（１８）式および（１９）式により、実現可能山ｍjのコストｃjと、当該実現可能山ｍjに対する双対コストＰjとを導出する。
【０１２２】
次に、ステップＳ３０２において、後処理部１０８は、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が双対誤差（＝ＪU−ＪL）以下であるか否かを判定する。この判定の結果、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が双対誤差（＝ＪU−ＪL）以下である場合には、ステップＳ３０３に進む。
【０１２３】
ステップＳ３０３に進むと、後処理部１０８は、ステップＳ３０１で導出された山構成鋼材有無変数ｍj［ｉ］に基づく実行可能山ｍjが、実現可能山ｍjの集合Ｃに既に登録されているか否かを判定する。この判定の結果、実現可能山ｍjの集合Ｃに既に登録されている場合には、ステップＳ３０４に進む。
【０１２４】
ステップＳ３０４に進むと、後処理部１０８は、列生成子問題Ｓを変更する。具体的に本実施形態では、列生成子問題Ｓに以下の（２２）式の制約式を追加する。また、既に（２２）式の制約式が追加されている場合には、ステップＳ３０４の処理が行われる度に、正の値を有する微小値を（２２）式のαの値に加算し、αの値を更新する。そして、ステップＳ３０１に戻り、後処理部１０８は、双対最適解ｐopt［ｉ］（即ち、ステップＳ２０５でＮｏと判定される直前にステップＳ２０３で導出された双対解ｐsol［ｉ］）を用いて、（１３）式〜（１７）式、（２１）式、（２２）式の制約式を満足する範囲で（２０）式の目的関数ＪSの値を最小にする決定変数（山構成鋼材有無変数ｍj［ｉ］および鋼材上下関係変数ｙ［ｉ1］［ｉ2］）を導出する。以上のステップＳ３０１〜Ｓ３０４の処理を、ステップＳ３０２において、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が双対誤差（＝ＪU−ＪL）以下でないと判定されるか、または、ステップＳ３０３において、実現可能山ｍjの集合Ｃに登録されていないと判定されるまで繰り返し行う。
【０１２５】
ステップＳ３０３において、実現可能山ｍjの集合Ｃに登録されていないと判定されると、ステップＳ３０５に進む。ステップＳ３０５に進むと、後処理部１０８は、ステップＳ３０１で導出した（最新の）実現可能山ｍjを、実現可能山ｍjの集合Ｃに追加する。そして、前述したステップＳ３０１に戻り、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が双対誤差（＝ＪU−ＪL）を超えるまで、ステップＳ３０１〜Ｓ３０５の処理を繰り返し行う。そして、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が双対誤差（＝ＪU−ＪL）を超えると、ステップＳ３０６に進む。ステップＳ３０６に進むと、後処理部１０８は、ステップＳ３０５で実現可能山ｍjが追加された実現可能山ｍjの集合Ｃを用いて、（２）式の制約式を満足する範囲で（４）式の目的関数Ｊの値を最小にする決定変数ｘ［ｊ］を導出して、実現可能山群の最適解｛ｍj_opt｝を導出する。そして、後処理部１０８は、当該実現可能山群の最適解｛ｍj_opt｝を導出したときの目的関数Ｊの値である実現可能山群の最適値ＪU2が、ステップＳ２０８で実現可能山群の最適解｛ｍj_opt｝を導出したときの目的関数Ｊの値である実現可能山群の最適値ＪUに対し改善されていれば、実現可能山群の最適解｛ｍj_opt｝を当該導出した実現可能山群の最適解｛ｍj_opt｝に更新する。そして、図３のフローチャートによる処理を終了する。
【０１２６】
（実施例）
次に、実施例を説明する。本実施例では、特許文献１に記載の技術を用いた場合には、実現可能山を列挙できないような問題、および、実現可能山は列挙できるが、その後の集合分割問題が求解できないような問題について、本実施形態の手法を適用し、その効果を調べた。ここで、実現可能山を列挙できないとは、実現可能山を列挙する計算過程で主メモリの容量が上限に達し、計算続行が不可能になることを指す。また、集合分割問題が求解できないとは、数時間を要しても求解できない、または、最適解の計算過程で主メモリの容量が上限に達し、計算続行が不可能になることを指す。
【０１２７】
本実施例では、以下の計算環境で計算を行った。
プロセッサ：Intel（登録商標）Xeon（登録商標）CPU E5-2687W＠301GHz（２プロセッサ）
実装メモリ（RAM）：128GB
OS：Windows7（登録商標） Professional 64ビットオペレーションシステム
最適計算ソフト：ILOG  CPLEX（登録商標） Cplex11.0 Concert25
【０１２８】
図４に、山分け計画の作成結果の一例を示す。図４において、比較例は、特許文献１の手法を指し、発明例は、本実施形態の手法を指す。「Ｇｒ数」は、鋼材ｉの数である。Ｇｒ数の隣にかっこ書きで示す「鋼材数」は、鋼材ｉを構成する（１つ１つの）鋼材の総数である。実現可能山の数は、実現可能山を全数列挙する特許文献１の手法（比較例）によって求めたものである。繰り返し数は、図２のステップＳ２０３〜Ｓ２０６の繰り返しの回数である。上界値／下界値は、双対誤差を求める際に使用した上界値ＪU、下界値ＪLである。双対Ｇａｐは、上界値ＪUから下界値ＪLを減算した値を上界値ＪUで割った値に１００を掛けた値（＝｛（上界値ＪU−下界値ＪL）÷上界値ＪU｝×１００）である。また、「＞１０8」は、実現可能山を列挙できなかったことを示す。「不能」は、集合分割問題が求解できなかったことを示す。
【０１２９】
図４において、Data ID 04,10,12,15,22は、特許文献１の手法（比較例）では、実現可能山を列挙する途中で主メモリがオーバーフローするケースである。Data ID 08,11は、実現可能山を列挙できるが、その後の集合分割問題が求解できなかったケースである。何れのケースにおいても、特許文献１の手法では、解すら得られない難問題であったが、本実施形態の手法（発明例）では、何れの問題も最適解あるいは最適解に近いと思われる実行可能解が得られている。また、Data ID 20のように、特許文献１の手法では、集合分割問題の最適解まで求解できても、計算時間が長くなるようなケースに対し、本実施形態の手法を適用すれば、特許文献１に記載の技術よりも計算時間を大幅に短縮することが分かる。
【０１３０】
（まとめ）
以上のように本実施形態では、実現可能山ｍjのコストｃjから当該実現可能山ｍjに対する双対コストＰiを減算した値が「０」以下である場合に、実現可能山ｍjの集合Ｃ（行列Ａ）に実現可能山ｍjを追加する。かかる実現可能山ｍjの追加を、実現可能山ｍjのコストｃjから当該実現可能山ｍjに対する双対コストＰiを減算した値が「０」を上回るまで繰り返し行う。このようにして得られた実現可能山ｍjの集合Ｃを用いて原問題Ｐを解いて決定変数ｘ［ｊ］を導出し、実現可能山群の最適解｛ｍj_opt｝を導出する。
【０１３１】
従って、山分け問題に列生成法を適用することができるようになり、実現可能山の候補として可及的に過不足なく実現可能山の候補を列挙することができる（即ち、全ての実現可能山を列挙する必要がなくなる）。従って、特許文献１に記載の技術では、実現化の山を列挙すらできないような大規模な問題であっても、可及的に適切な山分け計画を確実に作成することができる。
【０１３２】
また、列生成法は、これを用いることで線形計画問題の最適解を得られることは保証されているが、集合分割問題の様な0-1整数計画問題に対しては、解の下限は求まるものの、最適解を得られることは必ずしも保証されていない。特許文献２に記載の技術でもこの点は課題として残されたままである。これに対し本実施形態では、列生成後処理を行うので、可及的に最適な解を導出することができる。
【０１３３】
また、列生成法は、繰り返し計算となることから計算時間を要する方法である。このため、山分け計画をリアルタイム制御に利用するには可及的に計算時間を短縮する方法が必要となる場合がある。しかし、特許文献２では、２つの異なる文書に含まれる文の対応関係を求めるようなオフラインで使用する用途を前提としているため、この課題については触れられていない。これに対し本実施形態では、列生成子問題Ｓを解く際に、（２１）式のように、実現可能山ｍjのコストｃjが、当該実現可能山ｍjに対する双対コストＰj以下（ｃj≦Ｐj）であるという制約を追加する。従って、計算時間のかかる列生成子問題Ｓの計算時間を短縮することができる。
【０１３４】
（変形例）
＜変形例１＞
本実施形態では、列生成子問題Ｓを解く際に、（２１）式の制約式を追加することにより、列生成子問題Ｓの計算時間を短縮する場合を例に挙げて説明した。しかしながら、列生成子問題Ｓの計算時間を短縮する手法は、このような手法に限定されない。例えば、列生成子問題Ｓの計算の打ち切りの条件となる双対ギャップを、列生成子問題Ｓ（ステップＳ２０４）を実行する度に調整してもよい。
【０１３５】
即ち、列生成部１０４による列ｊ（実現可能山ｍj）の繰り返し計算が進行すると、実現可能山ｍjの集合Ｃに追加される実現可能山ｍjが増えるので、双対解を計算する実現可能山ｍjも増える。従って、双対解が双対問題Ｄの真の最適解に近づき、それに伴い、列生成子問題Ｓの最適解（山構成鋼材有無変数ｍj［ｉ］および鋼材上下関係変数ｙ［ｉ1］［ｉ2］）に基づいて得られる、実現可能山ｍjのコストｃjおよび当該実現可能山ｍjに対する双対コストＰjは、ｃj＜Ｐjの状態で双対コストＰjが実現可能山ｍjのコストｃjに徐々に近づいてくる。
【０１３６】
つまり、列生成部１０４による実現可能山ｍjの繰り返し計算が進行するほど、列生成部１０４で計算される最適解（山構成鋼材有無変数ｍj［ｉ］）から得られる実現可能山ｍjが、原問題Ｐの真の最適解である信憑性が高まるので、計算精度を高めることが求められる。従って、前回の計算において列生成部１０４で列生成子問題Ｓの最適解に基づいて得られる、実現可能山ｍjのコストｃjから当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）に応じて、列生成子問題Ｓの計算の打ち切りの条件となる双対ギャップを設定すればよい。
【０１３７】
この場合、例えば、列生成部１０４は、列生成子問題Ｓの計算の打ち切りの条件となる双対ギャップＧａｐ［％］を、以下の（２３）式に従って設定する。
【０１３８】
【数２３】
2018073171.tif 000025
【０１３９】
ここで、βは、０を上回る係数であり、予め設定される。係数βの値が大きくなるほど計算時間は早くなるが計算精度が低下するので、計算時間と計算精度との兼ね合いから係数βの値を決めるのが好ましい。例えば、係数βを「１」にすることができる。Ｖopt_prvは、前回のステップＳ２０４の計算において導出される値であり、実現可能山ｍjのコストｃjから当該実現可能山ｍjに対する双対コストＰiを減算した値（＝ｃj−Ｐj）である。尚、（２３）式の右辺にマイナスがついているのは、列生成子問題Ｓの繰り返し計算が行われている間（図２のステップＳ２０５でＹｅｓとなる場合）には、実現可能山ｍjのコストｃjから当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）はマイナスの値になるからである。このように、実現可能山ｍjのコストｃjから当該実現可能山ｍjに対する双対コストＰiを減算した値（＝ｃj−Ｐj＝Ｖopt_prv）の絶対値が小さいほど、列生成子問題Ｓの計算の打ち切りの条件となる双対ギャップＧａｐ［％］は小さくなる。
【０１４０】
また、双対ギャップは、以下の（２４）式で定義されるものである。
【０１４１】
【数２４】
2018073171.tif 000026
【０１４２】
ここで、双対ギャップを規定する上界値・下界値は、列生成部１０４（図２のステップＳ２０４）で列生成子問題Ｓを解く際に得られる上界値・下界値である。上界値は、列生成子問題Ｓの実行可能解のうちの最良の解（最適解）を目的関数ＪSに与えたときの目的関数ＪSの値である。下界値は、列生成子問題Ｓを分枝限定法等により解く際に使用する線形緩和問題の解のうち最も悪い解（最大値）を当該線形緩和問題の目的関数に与えたときの当該目的関数の値である。
【０１４３】
列生成部１０４は、図２のステップＳ２０４で列生成子問題Ｓを解く際に、（２４）式の計算を行うことにより、双対ギャップを導出する。また、列生成部１０４は、（２３）式の計算を行うことにより、列生成子問題Ｓの計算の打ち切りの条件となる双対ギャップＧａｐを導出して記憶する。列生成部１０４は、（２４）式の計算を行うことにより導出した双対ギャップが、係数βを「１」にした場合には、前回の列生成子問題Ｓの計算時に導出した双対ギャップＧａｐ以下になった時点で、列生成子問題Ｓの計算を打ち切り、その時点で得られている解（山構成鋼材有無変数ｍj［ｉ］および鋼材上下関係変数ｙ［ｉ1］［ｉ2］）を最適解とする。
尚、（２１）式の制約式を加えた上で、本変形例１で説明した処理を行ってもよい。
【０１４４】
＜変形例２＞
本実施形態では、列生成後処理においてステップＳ３０１で導出された山構成鋼材有無変数ｍj［ｉ］に基づく実行可能山ｍjが、実現可能山ｍjの集合Ｃに既に登録されている場合には、（２２）式のようにして列生成子問題Ｓを変更する場合を例に挙げて説明した。しかしながら、列生成子問題Ｓを変更する手法は、このような手法に限定されない。
【０１４５】
その手法の第１の例として、後処理部１０８は、実現可能山ｍjの集合Ｃに既に登録されていると判定された実現可能山ｍjに含まれていない鋼材（山構成鋼材有無変数ｍj［ｉ］の値が「０」である鋼材ｉ）に対し、ｍj［ｉ］＝１とする制約式を（２２）式に替えて用いることができる。また、これとは逆に、実現可能山ｍjの集合Ｃに既に登録されていると判定された実現可能山ｍjに含まれている鋼材（山構成鋼材有無変数ｍj［ｉ］の値が「１」である鋼材ｉ）に対し、ｍj［ｉ］＝０とする制約式を（２２）式に替えて用いることができる。
【０１４６】
また、第２の例として、後処理部１０８は、列生成子問題Ｓに使用する双対最適解ｐopt［ｉ］の各要素に対し、ランダムに微小な摂動を与える（ランダムに正または負の値を加算する）ことを、ステップＳ３０１で導出された山構成鋼材有無変数ｍj［ｉ］に基づく実現可能山ｍjが実現可能山ｍjの集合Ｃ（行列Ａ）に登録されるまで繰り返し行うことができる。前出の双対解ｐsol［ｉ］が、繰り返し処理のなかでステップＳ２０３に於いて毎回導出される、双対問題Ｄの最適解であるのに対して、前述したように双対最適解ｐopt［ｉ］は、当該繰り返し処理が完了した時点に於ける双対問題Ｄの最適解であることを示す。
【０１４７】
＜変形例３＞
図２のステップＳ２０７において原問題Ｐの最適解（実現可能山群の最適解｛ｍj_opt｝）が導出された場合には、その時点でステップＳ２０３において導出された（最新の）双対最適解ｐopt［ｉ］は高精度である。従って、本実施形態では、列生成後処理において、双対問題Ｄを解かずに列生成子問題Ｓを解く場合を例に挙げて説明した。しかしながら、列生成後処理においても、双対最適解ｐopt［ｉ］を導出してもよい。この場合、実現可能山ｍjの集合Ｃに追加された実現可能山ｍjに基づいて双対最適解ｐopt［ｉ］を導出し、導出した双対最適解ｐopt［ｉ］を用いて、列生成子問題Ｓを解くことになる。
【０１４８】
＜その他の変形例＞
尚、以上説明した本発明の実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、前記プログラムを記録したコンピュータ読み取り可能な記録媒体及び前記プログラム等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
また、以上説明した本発明の実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【０１４９】
（請求項との関係）
以下に、請求項と実施形態との対応関係の一例について説明する。請求項の記載が実施形態の記載に限定されないことは、変形例等において説明した通りである。
＜請求項１＞
決定変数は、例えば、決定変数ｘ［ｊ］により実現される。
前記実現可能山に対する前記鋼材の山立てについての評価指標は、例えば、コストｃj（総総数ｃ1j、逆転対数ｃ2j）により実現される。
初期解として与えられた実現可能山の集合は、例えば、初期列集合設定部１０２により設定される実現可能山ｍjの集合Ｃの初期値により実現される。
双対解導出手段は、例えば、双対解導出部１０３により実現される。
列生成手段は、例えば、列生成部１０４により実現される。候補山は、例えば、列生成部１０４により導出される山構成鋼材有無変数ｍj［ｉ］に基づく実現可能山ｍjにより実現される。
判定手段は、例えば、判定部１０５により実現される。
列追加手段は、例えば、列追加部１０６により実現される。
最適解導出手段は、例えば、最適解導出部１０７により実現される。
山積み制約は、例えば、（１６）式、（１７）式により実現される。
双対解は、双対解ｐsol［ｉ］により実現される。
＜請求項２＞
制約式は、例えば、（２）式の制約式により実現される。
目的関数は、例えば、（４）式により実現される。
実現可能山のコストは、例えば、コストｃjにより実現され、実現可能山の総数は、例えば、総山数ｃ1jにより実現され、逆転対の数は、例えば、逆転対数ｃ2jにより実現される。
＜請求項３＞
制約式は、例えば、（９）式により実現される。
目的関数は、例えば、（１１）式により実現される。
前記実現可能山に対する双対コストは、例えば、双対コストＰjにより実現される（（９）式の左辺も参照のこと）。
該鋼材と該実現可能山に対応する山構成鋼材有無変数は、例えば、山構成鋼材有無変数ｍj［ｉ］により実現される。
双対変数は、例えば、ｐ［ｉ］により実現される。
＜請求項４＞
制約式は、例えば、（１３）式〜（１７）式により実現される。
目的関数は、例えば、（２０）式により実現される。
鋼材上下関係変数は、例えば、ｙ［ｉ1］［ｉ2］により実現される。
＜請求項５＞
制約式は、例えば、（２１）式により実現される。
＜請求項６＞
請求項６は、例えば、＜変形例１＞に対応する。
前記列生成子問題に対する計算を打ち切るか否かを判定する双対ギャップの閾値は、例えば、（２３）式の双対ギャップＧａｐ［％］により実現される。
＜請求項７＞
請求項７は、例えば、判定部１０５が、図２のステップＳ２０５において、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値（＝ｃj−Ｐj）が「０」以下であるか否かを判定することに対応する。
＜請求項８＞
後処理手段は、例えば、後処理部１０８により実現される。
後処理用列生成手段は、例えば、後処理部１０８が、図３のステップＳ３０１の処理を実行することにより実現される。追加候補山は、例えば、このステップＳ３０１の処理で後処理部１０８により導出される山構成鋼材有無変数ｍj［ｉ］に基づく実現可能山ｍjにより実現される。
後処理用判定手段は、例えば、後処理部１０８が、図３のステップＳ３０２の処理を実行することにより実現される。収束条件が緩和されていることは、図２のステップＳ２０５において、実現可能山ｍjのコストｃjから、当該実現可能山ｍjに対する双対コストＰjを減算した値が「０」以下であるか否かを判定しているのに対し、図３のステップＳ３０２では、双対誤差（＝ＪU−ＪL）以下であるか否かを判定していることに対応する。
後処理用登録有無判定手段は、例えば、後処理部１０８が、図３のステップＳ３０３の処理を実行することにより実現される。
後処理用問題変更手段は、例えば、後処理部１０８が、図３のステップＳ３０４の処理を実行することにより実現される。
後処理用列追加手段は、例えば、後処理部１０８が、図３のステップＳ３０５の処理を実行することにより実現される。
後処理用最適解導出手段は、例えば、後処理部１０８が、図３のステップＳ３０６の処理を実行することにより実現される。
双対誤差は、例えば、双対誤差（＝ＪU−ＪL）により実現される。
変更された列生成子問題は、例えば、元の列生成子問題に対し、（２２）式の制約式を追加したり、変形例２のようにしたりすることにより実現される。
＜請求項９＞
同一列選択抑制用制約式は、例えば、（２２）式により実現される。
＜請求項１０＞
同一列選択抑制用制約式は、例えば、変形例２の第１の例に示す制約式（山構成鋼材有無変数ｍj［ｉ］の値が「０」である鋼材ｉに対し、ｍj［ｉ］＝１とする制約式、山構成鋼材有無変数ｍj［ｉ］の値が「１」である鋼材ｉに対し、ｍj［ｉ］＝０とする制約式）により実現される。
＜請求項１１＞
請求項１１は、例えば、変形例２の第２の例に対応する。
【符号の説明】
【０１５０】
１００：鋼材の山分け計画作成装置、１０１：鋼材情報取得部、１０２：初期列集合設定部、１０３：双対解導出部、１０４：列生成部、１０５：判定部、１０６：列追加部、１０７：最適解導出部、１０８：後処理部、１０９：出力部
【図１】
2018073171.tif 000027
【図２】
2018073171.tif 000028
【図３】
2018073171.tif 000029
【図４】
2018073171.tif 000030
【図５】
2018073171.tif 000031