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