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