(57)【要約】【課題】  山分け計画の最適解を導出する際に、原問題が整数計画問題であることに起因する誤差をなくしつつ高速に求解する。【解決手段】  山分け計画作成装置１００は、列挙した実現可能山に対する列主双対ギャップＺ［ｊ］を量子化し、当該実現可能山を、量子化した列主双対ギャップｚ［ｊ］毎に分類する。山分け計画作成装置１００は、分類した実現可能山のパターンから、量子条件を満たす実現可能山のパターンとして１つまたは複数のパターンの１つだけを必ず選択し、且つ、当該パターンに含まれる実現可能山を１つずつ必ず選択することを、集合分割問題における制約条件に含めて集合分割問題を解く。【選択図】  図１
2020107209.tif 000002
【特許請求の範囲】
【請求項１】
所定の山積み制約を満たすように対象材を積んだ山である実現可能山の組み合わせを、山分け対象の複数の対象材を重複することなく且つ漏れなく含むように求める整数計画問題を原問題とし、前記原問題の線形緩和問題を主問題とした場合の双対問題の最適解である双対最適解を用いて、前記山分け対象の複数の対象材を山分けするための山分け計画を作成する山分け計画作成装置であって、
全部または一部の前記実現可能山を列挙し、列挙した前記実現可能山を対象として、前記双対問題の最適解である双対最適解を導出する双対問題求解手段と、
前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の集合を導出することを、集合分割問題を解くことにより行う最適解導出手段と、を有し、
前記最適解導出手段は、前記双対問題の求解の対象である前記実現可能山に対する前記原問題の評価値と、当該実現可能山に対する前記双対問題の評価値との差である列主双対ギャップを量子化すると共に、前記原問題の評価値の予想される最適値と前記双対問題の評価値の最適値との差である最適解における主双対ギャップを量子化する量子化手段と、
前記量子化手段により量子化された前記列主双対ギャップの中から、量子条件を満たすように選択された、量子化された前記列主双対ギャップに基づいて、前記実現可能山の組み合わせを選別する選別手段と、
前記選別手段により選別された、前記実現可能山の組み合わせから、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の集合を導出することを、集合分割問題を解くことにより行う求解手段と、を更に有し、
前記量子条件は、前記量子化手段により量子化された前記列主双対ギャップの解を構成する列に対する和が、前記量子化手段により量子化された最適解における前記主双対ギャップと最適解において一致するという条件であることを特徴とする山分け計画作成装置。
【請求項２】
前記最適解導出手段は、前記量子化手段により量子化された前記列主双対ギャップが同じになる前記実現可能山が同じグループに属するように、前記双対問題の求解の対象である前記実現可能山を分類する分類手段を更に有し、
前記選別手段は、前記分類手段により分類された前記実現可能山の単位で、前記実現可能山の組み合わせを選別することを特徴とする請求項１に記載の山分け計画作成装置。
【請求項３】
前記選別手段は、最適解における前記主双対ギャップとしてとり得る値が小さいものから順に、前記量子条件で規定される、最適解における前記主双対ギャップを設定することを特徴とする請求項１または２に記載の山分け計画作成装置。
【請求項４】
前記選別手段は、前記量子化手段により量子化された前記列主双対ギャップの上限値であって、当該選別手段による選別対象の前記実現可能山に対する前記列主双対ギャップの上限値を小さい値から順に設定し、前記量子条件で規定される、最適解における前記主双対ギャップを、前記双対最適解に対応する前記双対問題の評価値である双対最適値に基づいて、前記上限値に応じた値に設定することを特徴とする請求項１〜３の何れか１項に記載の山分け計画作成装置。
【請求項５】
前記求解手段は、当該求解手段により求解される解として採用される前記実現可能山の総和と、前記選別手段により選別された前記実現可能山の組み合わせの１つにおける当該実現可能山の総和とが等しいことを示す第１の制約条件と、前記選別手段により選別された前記実現可能山の組み合わせを１つだけ必ず採用することを示す第２の制約条件とを満足するように、前記選別手段により選別された前記実現可能山の組み合わせから、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の集合を導出することを、集合分割問題を解くことにより行うことを特徴とする請求項１〜４の何れか１項に記載の山分け計画作成装置。
【請求項６】
前記量子化手段は、前記列主双対ギャップに、前記双対問題求解手段により導出された前記双対最適解を既約分数で表現した場合の分母の最小公倍数を掛けることにより、前記列主双対ギャップを量子化すると共に、最適解における前記主双対ギャップに前記最小公倍数を掛けることにより、最適解における前記双対ギャップを量子化することを特徴とする請求項１〜５の何れか１項に記載の山分け計画作成装置。
【請求項７】
前記最適解導出手段は、前記原問題の評価値の取り得る範囲を示す第３の制約条件を満足するように、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の集合を導出することを、集合分割問題を解くことにより行うことを特徴とする請求項１〜６の何れか１項に記載の山分け計画作成装置。
【請求項８】
前記第３の制約条件は、前記原問題の評価値の取り得る範囲が、前記双対最適解に対応する前記双対問題の評価値である双対最適値に応じて定まることを示す制約条件であることを特徴とする請求項７に記載の山分け計画作成装置。
【請求項９】
前記原問題は、複数の前記実現可能山のそれぞれについて、当該実現可能山を解として採用するか否かにより定まる２値変数を決定変数として、当該実現可能山に対する前記対象材の山立てについての評価値であるコストと、前記決定変数を含む目的関数の値が最小または最大になる前記決定変数を求めることにより、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の最適な組み合わせを求める問題であり、
前記第３の制約条件は、前記目的関数の取り得る範囲を示す制約条件であることを特徴とする請求項７または８に記載の山分け計画作成装置。
【請求項１０】
前記原問題は、前記目的関数の値が最小になる前記決定変数を求めることにより、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の最適な組み合わせを求める問題であり、
前記第３の制約条件は、前記目的関数の値の下限値を示す制約条件であることを特徴とする請求項９に記載の山分け計画作成装置。
【請求項１１】
前記列挙は、相対的に下段に配置される前記対象材に対し前記山積み制約を満たす前記対象材を、相対的に下段に配置される前記対象材の上に配置することができる前記対象材として特定することを、最下段から順番に行うにより実行されることを特徴とする請求項１〜１０の何れか１項に記載の山分け計画作成装置。
【請求項１２】
前記原問題は、複数の前記実現可能山のそれぞれについて、当該実現可能山を解として採用するか否かにより定まる２値変数を決定変数として、当該実現可能山に対する前記対象材の山立てについての評価値であるコストと、前記決定変数を含む目的関数の値が最小または最大になる前記決定変数を求めることにより、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の最適な組み合わせを求める問題であることを特徴とする請求項１〜１１の何れか１項に記載の山分け計画作成装置。
【請求項１３】
前記山分け計画は、鉄鋼プロセスにおける工程間の置場として鋼材を配置するヤードに搬入される複数の鋼材を、所定の山積み制約を満たすように山積みして、次工程に払い出す最終的な山姿となった複数の払出山に山分けするための計画であることを特徴とする請求項１〜１２の何れか１項に記載の山分け計画作成装置。
【請求項１４】
所定の山積み制約を満たすように対象材を積んだ山である実現可能山の組み合わせを、山分け対象の複数の対象材を重複することなく且つ漏れなく含むように求める整数計画問題を原問題とし、前記原問題の線形緩和問題を主問題とした場合の双対問題の最適解である双対最適解を用いて、前記山分け対象の複数の対象材を山分けするための山分け計画を作成する山分け計画作成方法であって、
全部または一部の前記実現可能山を列挙し、列挙した前記実現可能山を対象として、前記双対問題の最適解である双対最適解を導出する双対問題求解工程と、
前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の集合を導出することを、集合分割問題を解くことにより行う最適解導出工程と、を有し、
前記最適解導出工程は、前記前記双対問題の求解の対象である前記実現可能山に対する前記原問題の評価値と、当該実現可能山に対する前記双対問題の評価値との差である列主双対ギャップを量子化すると共に、前記原問題の評価値の予想される最適値と前記双対問題の評価値の最適値との差である最適解における主双対ギャップを量子化する量子化工程と、
前記量子化工程により量子化された前記列主双対ギャップの中から、量子条件を満たすように選択された、量子化された前記列主双対ギャップに基づいて、前記実現可能山の組み合わせを選別する選別工程と、
前記選別工程により選別された、前記実現可能山の組み合わせから、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の集合を導出することを、集合分割問題を解くことにより行う求解工程と、を更に有し、
前記量子条件は、前記量子化工程により量子化された前記列主双対ギャップの解を構成する列に対する和が、前記量子化工程により量子化された最適解における前記主双対ギャップと最適解において一致するという条件であることを特徴とする山分け計画作成方法。
【請求項１５】
請求項１〜１３の何れか１項に記載の山分け計画作成装置の各手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、山分け計画作成装置、山分け計画作成方法、およびプログラムに関し、特に、対象材を山分けするために用いて好適なものである。
【背景技術】
【０００２】
製鉄プロセスにおいて、例えば製鋼工程から次工程の圧延工程へ鋼材を搬送する際、鋼材は、一旦ヤードと呼ばれる一時保管場所に置かれた後、次工程である圧延工程（加熱炉）の処理時刻に合わせてヤードから搬出される。そのヤードのレイアウトの一例を図１０に示す。ヤードは、図１０に示すように、上流工程より払い出された鋼材などを下流工程に供給するためのバッファーエリアとして、縦横に区画された置場１００１〜１００４から構成される。縦方向の分割区分を"棟"、横方向の分割区分を"列"と称することが多い。クレーン(１Ａ、１Ｂ、２Ａ、２Ｂ)は棟内を移動可能であり、同一棟内での異なる列の間で鋼材の移送を行う。また搬送テーブルにより棟間の鋼材の移送を行う。搬送指令を作成する際は"棟"及び"列"を指定することにより、どこへ鋼材を搬送するか指令できる。
【０００３】
図１０を例にヤードでの基本的な作業の流れを示す。まず、前工程である製鋼工程の連鋳機１０１０から搬出された鋼材は、パイラー１０１１を経由して受入テーブルＸでヤードまで搬入され、クレーン１Ａ、１Ｂ、２Ａ、２Ｂにより、区画された置場１００１〜１００４の何れかに搬送され、山積みして置かれる。そして、次工程である圧延工程の製造スケジュールに合わせ、再びクレーン１Ａ、１Ｂ、２Ａ、２Ｂにより払出テーブルＺに載せられ、圧延工程へと搬送される。一般に、ヤードにおいて鋼材は、前記の様に山積みされた状態で置かれる。これは、限られたヤード面積を有効に活用するためである。一方、鋼材を積み上げる際、次工程へ供給し易いよう、次工程の処理順番に鋼材が上から積まれている必要がある。さらに、積み姿が不安定な逆ピラミッド状に鋼材を積まないようにする必要がある。このように、鋼材を複数の最適山（＝払出山：次工程へ払い出す最終的な山姿となった山）に分けることを山分けと呼ぶ。
【０００４】
ここで、次工程である圧延工程の加熱炉の燃料原単位を削減するため、可及的に高い温度の鋼材を加熱炉に払い出す（装入する）ことが求められる。このため、昨今、ヤード内に保温設備を設置し、保温設備の中に前述したようにして鋼材を山積みした状態で保管することが行われている。このように保温設備を用いる場合でも、置場１００１〜１００４に直接鋼材を山積みする場合と同様に、保温設備を有効に活用するため、保温設備の中において、可及的に高さの高い払出山を作成することが必要である。
【０００５】
一方、鋼材を積み上げる際には、次工程へ供給しやすいよう、次工程の処理順番に鋼材が上から積まれていること、および積み形状が不安定な逆ピラミッド状に鋼材を積めないことなどの制約（これを「積姿制約」と称する）がある。更に、山立てを行う際の作業負荷（この作業負荷を山繰り負荷（上から払出順に鋼材を積み替えるための負荷）という）も見逃せない要素である。従って、ヤード管制では、前記制約下で出来るだけ少ない作業負荷で、できるだけ高い山立てを行う作業計画を策定することが望まれる。
【０００６】
鋼材置き場でサイズや次工程（圧延工程の加熱炉）での処理順序が異なる複数枚の鋼材を複数の山に分けて山積みする山分け問題を解決するには、対象鋼材により生成可能な全ての山分け候補の中から、ヤードへの受入時の山分け負荷や圧延工程の加熱炉への払出時の作業負荷などの評価関数を最適化する山分けの組み合わせを求めることが不可欠である。
【０００７】
このような大規模問題への対処方法として、特許文献１には、対象鋼材を要素とする全体集合に対し、山積み制約を満たす部分集合である実現可能山を全て列挙し、山数および山繰り負荷（受入の際、払い出し順に積み替えるための負荷）を最小化する目的関数の下、集合分割問題として最適な実現可能山の組み合わせを求めることにより最適な山分け計画を行う手法が開示されている。ここで、実現可能山とは、対象鋼材を要素とする全体集合に対する部分集合であって、山積み制約を満たす部分集合である。山積み制約は、鋼材を山積みする際に課せられる制約である。払出順が早い鋼材の方が山の上側に配置されなければならないという制約等が山積み制約に含まれる。
【０００８】
特許文献１に記載の方法は厳密解法であることから、目的関数として設定した山の総数および山繰り負荷に対する最適な山分け計画を作成することが期待できる。また、特許文献１に記載の方法では、実現可能の見込みのない部分集合のチェックを効率的に省略できるよう、最下段から順次上段に向かって実現可能な鋼材のみを積み上げる（分岐する）方式により実現可能山のみを生成する。
【０００９】
しかしながら、特許文献１に記載の技術を、山分け計画の作成対象となる鋼材の要素数が５０〜８０程度となる大規模問題に適用すると、実現可能山の数が１億個を超えることも頻繁に起こる。このような場合には、計算機資源（主に主メモリ）の容量制限に掛かり、実現可能山を列挙できない事態が起こる。また、そこまでの規模にはならず、かろうじて実現可能山の列挙まではできた場合でも、その後の集合分割問題を最適計算する際、決定変数の数が実現可能山の数となる。このため、計算途中でメモリ容量を超えるか実用時間内では求解できない状況となる。
【００１０】
このような問題に対して、特許文献２には、列生成法を応用することにより、実現可能山の全列挙を避け、最適解の要素となり得る実現可能山群を選択的に抽出する手法が開示されている。
特許文献２に記載の技術では、対象鋼材を重複することなく且つ漏れなく含む実現可能山の最適な組み合わせを求める問題を原問題とする。また、原問題の線形緩和問題を主問題とした場合の双対問題の最適解である双対解（後述する暫定双対解に相当）と、山積み制約とを用いて、実現可能山の集合に追加する候補山（列）を、原問題の最適解を構成する実現可能山の候補として求める問題を列生成子問題とする。これら双対解の導出と、列生成子問題の求解（候補山（列）の導出）とを収束要件が満足するまで繰り返し実行し、当該収束要件を満足したときに得られている実現可能山の集合に基づいて、原問題の最適解を導出する。ここで、収束要件は、実現可能山の列コストが当該実現可能山に対する双対コスト以下であるという要件である。
【００１１】
特許文献２に記載の方法は、原問題の"最適解の構成要素となる可能性のある"部分集合（列（実現可能山））のみを繰り返し生成し、その部分集合（列（実現可能山））に対する部分問題を列生成子問題により求解することにより原問題の最適解を得ようとする手法である。ここでの「最適解の構成要素となる可能性の有無」は、当該列が、最適性基準を満たしているか否か、即ち、実現可能山の列コストが当該実現可能山に対する双対コスト以下か否かにより判定される。弱双対定理の下では、最小化問題の場合、実行可能解に対し、「原問題（主問題）の評価値≧双対問題の評価値」の関係が成り立ち、最適解のときのみ両者一致する（即ち、原問題（主問題）および双対問題の目的関数値が一致するとき、それぞれの解はそれぞれ真の最適解になる）ことから、前記の条件が最適解判定に利用できる。ここで、各実現可能山の列コスト(主問題の評価値) が、当該実現可能山に対する双対コスト以下か否か（当該列が、最適性基準を満たしているか否か）を判定するには、双対最適解が必要となる。従って、列生成法では、列生成子問題による列の生成とそれまでに生成された列による双対問題の求解とを繰り返す。つまり、列生成法では、原問題を求解するために必要な列群を、それに対応する回数だけ、列生成子問題を解くことによって得る。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１６−８１１６８号公報
【特許文献２】特開２０１８−７３１７１号公報
【特許文献３】特開２０１１−１０５４８３号公報
【非特許文献】
【００１３】
【非特許文献１】久保幹雄、田村明久、松井知己編、「応用数理計画ハンドブック」、株式会社朝倉書店、２００２年５月、p.133、337、621、634
【発明の概要】
【発明が解決しようとする課題】
【００１４】
ここで、原問題は、０−１整数計画問題であるのに対し、列生成法は、線形計画問題に対する手法である。従って、列生成法により導出した最適解が本来の最適解でないことがある。そこで、特許文献２では、以上のようにして導出した原問題の最適解が本来の最適解でない場合には、後処理を行って列生成法で得られた列群に、当該列群に含まれていない実現可能山を追加し、列生成法で得られた疑似最適解を本来の最適解に近づけるようにする。しかしながら、特許文献２に記載の技術では、後処理において、前述した収束条件を緩和する（実現可能山の列コストから当該実現可能山に対する双対コストを減算した値が０より大きい閾値以下であるか否かを判定する）ことにより、実現可能山を追加しても原問題の最適解を本来の最適解に十分に近づけることができない場合がある。
【００１５】
本発明は、以上のような問題点に鑑みてなされたものであり、山分け計画の最適解を導出する際に、原問題が整数計画問題であることに起因する誤差をなくしつつ高速に求解することができるようにすることを目的とする。
【課題を解決するための手段】
【００１６】
本発明の山分け計画作成装置は、所定の山積み制約を満たすように対象材を積んだ山である実現可能山の組み合わせを、山分け対象の複数の対象材を重複することなく且つ漏れなく含むように求める整数計画問題を原問題とし、前記原問題の線形緩和問題を主問題とした場合の双対問題の最適解である双対最適解を用いて、前記山分け対象の複数の対象材を山分けするための山分け計画を作成する山分け計画作成装置であって、全部または一部の前記実現可能山を列挙し、列挙した前記実現可能山を対象として、前記双対問題の最適解である双対最適解を導出する双対問題求解手段と、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の集合を導出することを、集合分割問題を解くことにより行う最適解導出手段と、を有し、前記最適解導出手段は、前記双対問題の求解の対象である前記実現可能山に対する前記原問題の評価値と、当該実現可能山に対する前記双対問題の評価値との差である列主双対ギャップを量子化すると共に、前記原問題の評価値の予想される最適値と前記双対問題の評価値の最適値との差である最適解における主双対ギャップを量子化する量子化手段と、前記量子化手段により量子化された前記列主双対ギャップの中から、量子条件を満たすように選択された、量子化された前記列主双対ギャップに基づいて、前記実現可能山の組み合わせを選別する選別手段と、前記選別手段により選別された、前記実現可能山の組み合わせから、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の集合を導出することを、集合分割問題を解くことにより行う求解手段と、を更に有し、前記量子条件は、前記量子化手段により量子化された前記列主双対ギャップの解を構成する列に対する和が、前記量子化手段により量子化された最適解における前記主双対ギャップと最適解において一致するという条件であることを特徴とする。
【００１７】
本発明の山分け計画作成方法は、所定の山積み制約を満たすように対象材を積んだ山である実現可能山の組み合わせを、山分け対象の複数の対象材を重複することなく且つ漏れなく含むように求める整数計画問題を原問題とし、前記原問題の線形緩和問題を主問題とした場合の双対問題の最適解である双対最適解を用いて、前記山分け対象の複数の対象材を山分けするための山分け計画を作成する山分け計画作成方法であって、全部または一部の前記実現可能山を列挙し、列挙した前記実現可能山を対象として、前記双対問題の最適解である双対最適解を導出する双対問題求解工程と、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の集合を導出することを、集合分割問題を解くことにより行う最適解導出工程と、を有し、前記最適解導出工程は、前記前記双対問題の求解の対象である前記実現可能山に対する前記原問題の評価値と、当該実現可能山に対する前記双対問題の評価値との差である列主双対ギャップを量子化すると共に、前記原問題の評価値の予想される最適値と前記双対問題の評価値の最適値との差である最適解における主双対ギャップを量子化する量子化工程と、前記量子化工程により量子化された前記列主双対ギャップの中から、量子条件を満たすように選択された、量子化された前記列主双対ギャップに基づいて、前記実現可能山の組み合わせを選別する選別工程と、前記選別工程により選別された、前記実現可能山の組み合わせから、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の集合を導出することを、集合分割問題を解くことにより行う求解工程と、を更に有し、前記量子条件は、前記量子化工程により量子化された前記列主双対ギャップの解を構成する列に対する和が、前記量子化工程により量子化された最適解における前記主双対ギャップと最適解において一致するという条件であることを特徴とする。
【００１８】
本発明のプログラムは、前記山分け計画作成装置の各手段としてコンピュータを機能させるためのものである。
【発明の効果】
【００１９】
本発明によれば、山分け計画の最適解を導出する際に、原問題が整数計画問題であることに起因する誤差をなくしつつ高速に求解することができる。
【図面の簡単な説明】
【００２０】
【図１】山分け計画作成装置の機能的な構成の第１の例を示す図である。
【図２】列（実現可能山）の列挙方法の一例を説明する図である。
【図３】量子条件の一例を説明する図である。
【図４】山分け計画作成方法の第１の例を説明するフローチャートである。
【図５】山分け計画作成装置の機能的な構成の第２の例を示す図である。
【図６−１】山分け計画作成方法の第２の例を説明するフローチャートである。
【図６−２】図６−１に続くフローチャートである。
【図７】第１の実施例における山分け計画の作成結果を示す図である。
【図８】第２の実施例における山分け計画の作成結果を示す図である。
【図９】第３の実施例における山分け計画の作成結果を示す図である。
【図１０】ヤードのレイアウトの一例を示す図である。
【発明を実施するための形態】
【００２１】
以下、図面を参照しながら、本発明の実施形態を説明する。
（第１の実施形態）
まず、第１の実施形態を説明する。
＜原問題Ｐ＞
まず、本実施形態で解くべき問題である原問題Ｐについて説明する。本実施形態では、原問題Ｐを集合分割問題とする。集合分割問題は、全体集合Ｎの任意の部分集合Ｓjが、その列コスト（当該列の原問題評価値）ｃjを持つという前提で、以下の（１）式に示すように、全体集合Ｎの要素ｉを、重複なく且つ漏れなく部分集合ｍ1,ｍ2,・・・,ｍkに分割する問題である。このとき、部分集合ｍ1,ｍ2,・・・,ｍkに対する列コストｃ1,ｃ2,・・・,ｃkの総和が最小となるようにする。以下の（１）式は、全体集合Ｎの要素ｉを重複なく且つ漏れなく部分集合ｍ1,ｍ2,・・・,ｍkに分割することを表す。
【００２２】
【数１】
2020107209.tif 000003
【００２３】
要素の数がｎ個の全体集合Ｎ＝｛1,2,・・・,I,・・・,ｎ｝の部分集合の集合（集合族）Ｃ＝｛ｍ1,・・・,ｍj,・・・,ｍk｝（ｍj⊆Ｎ）の要素ｍjのコストをｃjとする。要素ｉを鋼材とし、部分集合ｍj（∈Ｃ）を実現可能山とする。そうすると、以下のようにして山立て問題を０−１計画問題として定式化することができる。
【００２４】
＜決定変数＞
原問題Ｐの決定変数ｘ［ｊ］は、実現可能山ｍjを採用する場合に「１」、そうでない場合に「０（ゼロ）」となる０−１変数である。
＜制約式＞
原問題Ｐの制約式は、鋼材ｉ∈Ｎのそれぞれについて、当該鋼材ｉを含む集合族（部分集合ｍjの集合）Ｍj（ｉ）⊆Ｃの中から、一つの部分集合ｍjだけが選択されなければならないことを表す制約式であり、以下の（２）式で表される。
尚、鋼材ｉは、１つの鋼材であっても、１つの搬送機器（クレーン１Ａ、１Ｂ、２Ａ、２Ｂ）で搬送することができる鋼材の纏まり（搬送ロット）であってもよい。搬送ロットを決定する方法は、例えば、特許文献３に記載されているので、ここでは、その詳細な説明を省略する。
【００２５】
【数２】
2020107209.tif 000004
【００２６】
ここで、行列Ａの要素ａij（ｉ行ｊ列の要素）を、実現可能山ｍjが鋼材ｉを含む場合にａij＝１、含まない場合にａij＝０と定義する。この場合、行列Ａの或る列ｊにおいて、「１」の値を持つ行に対応する鋼材ｉが、当該列ｊに対応する実現可能山を構成する鋼材であり、当該列ｊにおいて、「０」の値を持つ行に対応する鋼材ｉは、当該列ｊに対応する実現可能山を構成しない。このようにして行列Ａの要素ａijを定義すると、（２）式は、行列Ａにより、以下の（２−１）式のように表記できる。ここで、（２−１）式の右辺は、全ての要素が「１」となるベクトルである。尚、各数式において、太字で示すものはベクトルを表す。尚、行列Ａの要素ａijが１（ａij＝１）ならば、列ｊは行ｉを被覆（カバー）すると称する。
【００２７】
【数３】
2020107209.tif 000005
【００２８】
＜目的関数＞
原問題Ｐの目的関数は、列コストｃjの総和が最小になるように実現可能山ｍjを選択することを目的とする関数であり、以下の（３）式で表される。
【００２９】
【数４】
2020107209.tif 000006
【００３０】
列コストｃjは、実現可能山ｍjを原問題Ｐの最適解として選択するか否かを判断するための評価値であり、実現可能山ｍjに対する鋼材ｉの山立てを評価する１つまたは複数の評価指標に基づいて予め定められる。（３）式をベクトル表記すると、以下の（３−１）式のようになる。
【００３１】
【数５】
2020107209.tif 000007
【００３２】
本実施形態では、実現可能山（払出山）の山数ｃ1j即ち１と、積み替え数(逆転対数)ｃ2jに対しそれぞれ重み係数ｋ1、ｋ2を掛けたものが列コストｃjとなる（逆転対の詳細については後述する）。そうすると、原問題Ｐの目的関数は、以下の（４）式で表される。尚、実現可能山ｍj（ｍj∈Ｃ）の列コストｃjと、山数ｃ1jおよび逆転対数ｃ2jとの関係は、以下の（４−１）式のようになる。
【００３３】
【数６】
2020107209.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について、同一の払出山に積むことは可能で、同一の払出山に積む際には、到着順と積み順とを入れ替える必要のある鋼材対を逆転対とし、この集合Ｒ（逆転対集合）を、以下の（４−２）式のように定義する。
【００３６】
【数７】
2020107209.tif 000009
【００３７】
その際、実現可能山ｍjに含まれる逆転対の数がｃ2jに対応する。このように逆転対とは、同一の払出山においてヤードへの到着順が早い方の鋼材ｉ1が遅い方の鋼材ｉ2よりも上に積まれる逆転の関係にある鋼材対をいい、その数を逆転対数と定義する。逆転対が１つあると、この例では、到着順が早い方の鋼材ｉ1が前述した仮置きが必要な鋼材となる。仮置きを行うために１回の山繰りが発生するので、逆転対数は、仮置きの数の目安となる。尚、逆転対集合Ｒを抽出するには、任意の鋼材ｉのヤードへの到着順と、払出山での積み順（即ち、払出順）とを判定するための情報が必要となる。仮置き数は実現可能山ｍjに含まれる鋼材対（ｉ1,ｉ2）の内、（ｉ1,ｉ2）∈Ｒに対し、同じ鋼材を二重に計数しないよう考慮して鋼材ｉ1を計数したものとなる。尚、集合Ｒを抽出するには、任意の鋼材のヤードへの到着順と（次工程へ払出ができる状態の）山での積順を判定するための情報（次工程への払出順、鋼材のサイズ）が必要になる。
【００３８】
以上のように本実施形態では、（２）式の制約式を満足する範囲で（４）式の目的関数Ｊの値を最小にする決定変数ｘ［ｊ］を求める問題を原問題Ｐとする。
【００３９】
尚、本実施形態では、列コストｃjが、山数ｃ1jと逆転対数ｃ2jである場合を例に挙げて説明する。しかしながら、列コストｃjは、鋼材ｉの山立て（実現可能山ｍj）を評価する評価指標であれば、山数や逆転対数あるいは仮置き数に限定されない。例えば、ヤード受入れ時・次工程への払出時の鋼材ｉの放熱量を列コストｃjに更に含めてもよい。
【００４０】
以上のように、山立て問題を集合分割問題として定式化する際には、列挙された実現可能山（部分集合）の数が変数の数となる. このとき、全ての実現可能山が列挙できていなくとも、（２）式の被覆条件を満たす列が列挙できていれば、問題としては成立する。後述するように、本実施形態では、全ての実現可能山を対象とした原問題Ｐを、一部の実現可能山を対象とした部分問題を解くことによって求解する。従って、ここで定義した集合分割問題は、原問題Ｐの場合と部分問題の場合とがある。
【００４１】
＜双対問題Ｄ＞
次に、双対問題Ｄについて説明する。
前述した原問題Ｐ（集合分割問題）の線形緩和問題を主問題とした場合の双対問題Ｄを以下のように定式化する。原問題Ｐ自体は０−１整数計画問題であるが、双対問題Ｄは線形計画問題になる。０−１整数計画問題である原問題Ｐの線形緩和問題を主問題とした場合の双対問題Ｄは、主問題と双対問題との関係から、以下のように定式化できる。
【００４２】
原問題Ｐは最小化問題なので、（３−１）式に示す目的関数Ｊの最適な下限値を求める問題を考察することにより双対問題Ｄが得られる。そこで、以下の（５）式を満足する変数ｐTを考える（ｐTはベクトルである）。
【００４３】
【数８】
2020107209.tif 000010
【００４４】
（５）式の両辺にｘ（≧０）を右から掛けると、以下の（６）式が成り立つ（（３−１）式に示したようにｘはベクトルである）。
【００４５】
【数９】
2020107209.tif 000011
【００４６】
つまり（６）式の左辺（＝ｐTＡｘ）が原問題Ｐの目的関数Ｊの下限となる。原問題Ｐの目的関数Ｊのより良い下限値を与えるには、（５）式（＝ｐTＡ≦ｃ）の条件下で、（６）式の左辺（＝ｐTＡｘ）を最大化する問題を考えればよい。ここで、原問題Ｐの制約式である（２−１）式より、以下の（７）式が成り立つ。
【００４７】
【数１０】
2020107209.tif 000012
【００４８】
従って、以下のようにして双対問題Ｄが定式化される。尚、集合分割問題の線形緩和問題を主問題とする双対問題自体は、非特許文献１に記載されているように公知の技術で実現できるので、ここでは、その詳細な説明を省略する。
【００４９】
［決定変数］
本実施形態では、双対変数ｐ［ｉ］を双対問題Ｄの決定変数とする。
双対変数ｐ［ｉ］は、鋼材ｉ毎に定められる連続変数（−∞＜ｐ［ｉ］＜∞）である。双対変数ｐ［ｉ］の数は、ｎ個（鋼材情報に含まれる鋼材ｉの数）である。
【００５０】
［制約式］
双対問題Ｄの制約式は、前述した（５）式で表される。ここで、行列Ａは、双対最適解（双対問題Ｄの最適解）を導出する際に生成されている実現可能山ｍjの集合Ｃに対応する。
（５）式を要素毎に表記すると、双対問題Ｄの制約式は、以下の（８）式で表される。尚、（８）式の左辺（Σｐ［ｉ］・ｍj［ｉ］（＝Ｐj））は双対コストである。（８）式に示すように、双対コストＰjは、鋼材ｉに対する双対変数ｐ［ｉ］の値と、行列Ａの列ｊの値であって、該鋼材ｉに対応する行ｉにおける値（「０」または「１」）との積の、山立て対象の鋼材ｉについての総和で表される。
【００５１】
【数１１】
2020107209.tif 000013
【００５２】
（８）式において、ｍj［ｉ］は、行列Ａのｊ列そのものであり、ｊ列に対応する実現可能山ｍjが鋼材ｉを含めば「１」、そうでなければ「０」となる０−１変数である。従って、（８）式の制約式の数は、双対最適解（双対問題Ｄの最適解）を導出する際に抽出されている実現可能山ｍj（列）の数（即ち、集合Ｃの要素数）となる。
【００５３】
尚、（８）式は、列主双対ギャップｚ［ｊ］（＞０）を用いて、以下の（８−１）式のように記述することもできる。列主双対ギャップｚ［ｊ］は、（８−１）式で表される（ｚ［ｊ］＝ｃj−Σｐ[ｉ]・ｍj[ｉ]）。列主双対ギャップｚ［ｊ］は、列コストｃjと双対解ｐ［ｉ］による双対コストとの差を列（実現可能山ｍj）ごとに評価した値である。
【００５４】
【数１２】
2020107209.tif 000014
【００５５】
［目的関数］
（５）式の条件下では、（６）式および（７）式より以下の（９）式が成り立つので、（７）式のΣｐ［ｉ］は、ｃｘの下限値となる（（３−１）式に示したようにｃ、ｘはベクトルである）。できるだけ大きいΣｐ［ｉ］を求めれば、原問題Ｐの目的関数Ｊのより良い下限値が得られることになる。従って、双対問題Ｄの目的関数Ｊは最大化問題となり、以下の（１０）式のようになる。
【００５６】
【数１３】
2020107209.tif 000015
【００５７】
以上のように本実施形態では、（８）式の制約式を満足する範囲で（１０）式の目的関数Ｊの値を最大にする双対変数ｐ［ｉ］を双対問題Ｄの最適解（双対最適解）として求める問題を双対問題Ｄとする。
【００５８】
＜山分け計画作成装置１００＞
次に、山分け計画作成装置１００の一例について説明する。図１は、山分け計画作成装置１００の機能的な構成の一例を示す図である。山分け計画作成装置１００のハードウェアは、例えば、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＨＤＤ、および各種のインターフェースを備える情報処理装置や、専用のハードウェアを用いることにより実現される。
【００５９】
図１に示すように、山分け計画作成装置１００は、鋼材情報取得部１１０と、双対問題求解部１２０と、最適解導出部１３０と、出力部１４０とを有する。
［鋼材情報取得部１１０］
鋼材情報取得部１１０は、山分け計画の作成対象となる鋼材ｉ∈Ｎのそれぞれの情報を取得する。以下の説明では、この情報を必要に応じて鋼材情報と称する。鋼材情報には、例えば、鋼材のＩＤ（識別情報）と、当該鋼材のサイズ（幅、長さ）と、当該鋼材のヤードへの到着順と、当該鋼材の次工程への払出順とが含まれる。尚、到着順および払出順は、鋼材情報に含まれる鋼材の中での相対的な順序である。
【００６０】
鋼材情報取得部１１０は、例えば、鋼材管理装置から鋼材情報を取得する。ただし、必ずしもこのようにする必要はなく、鋼材情報取得部１１０は、鋼材の山分け計画作成装置１００のユーザインターフェースに対するユーザの操作により入力された鋼材情報を取得してもよい。鋼材情報取得部１１０は、例えば、ＣＰＵ、ＲＯＭ、ＲＡＭ、および通信インターフェース（またはユーザインターフェース）を用いることにより実現される。
【００６１】
［双対問題求解部１２０］
双対問題求解部１２０は、列主双対ギャップｚ［ｊ］が「０」以下になる列（実現可能山ｍj）を列挙し、列挙した列（実現可能山ｍj）に対する双対最適解を導出する。
まず、列（実現可能山ｍj）の列挙の方法の一例を説明する。本実施形態では、特許文献１に記載の方法で列（実現可能山ｍj）を列挙する方法を例に挙げて説明する。ここで、特許文献１に記載の方法について簡単に説明する。図２は、列（実現可能山ｍj）の列挙方法の一例を説明する図である。
【００６２】
この列挙法の特長は、列挙の前に前処理として、任意の鋼材ｉ対し、その鋼材ｉに上載せ可能な鋼材の集合Ｕ（ｉ）を求めておき、列挙の際には、各積段における集合Ｕ（ｉ）の積集合の計算を行うのみで、積姿制約をチェックする必要なく、実現可能な山のみを列挙できる点である。これにより、処理回数と列挙数とが一致し、不要な処理が全くない理想的な列挙が可能となる。そこで、双対問題求解部１２０は、鋼材ｉに上載せ可能な鋼材の集合Ｕ（ｉ）を導出する。また、双対問題求解部１２０は、列（実現可能山ｍj）の列挙の際に、山の最下段から順次上段に向かって実現可能な鋼材のみを積み上げる（分枝する）樹形図（分枝木）により実現可能山を列挙する。
このツリー構造の樹形図では、各ノードに鋼材が属するようにすると共に、最下段の鋼材が属するノードが根ノードに属するようにする。そして、下段に配置される鋼材が属するノードを、その１つ上段に配置される鋼材の親ノードとする。
【００６３】
以下の説明では、列挙の対象となる鋼材を必要に応じて「対象鋼材」と称し、２つの対象鋼材のペアを必要に応じて「鋼材ペア」と称する。
全体集合Ｎの要素となる対象鋼材ｉ１〜ｉｎごとに、山積み制約を満たす対象鋼材の集合（対象鋼材の上に配置することが出来る鋼材の集合Ｕ（ｉ））を、鋼材の２項関係を利用して効率的に求める。この方法の一例を以下に示す。
まず、列（実現可能山ｍj）の列挙の際に使用する山積み制約を説明する。山積み制約は、ヤードの管理方法等により様々な条件が考えられるが、例えば以下のような条件を想定することができる。
（１）払出順条件：払出順が早い鋼材の方が、払出順が遅い鋼材よりも必ず山の上側に位置しなければならない。
（２）幅条件：或る鋼材の幅が、当該或る鋼材の下に位置する鋼材の最小幅よりも狭いならば無条件で、当該或る鋼材を、当該直下に位置する鋼材の上に置ける。或る鋼材の幅が、当該或る鋼材の下に位置する鋼材の最小幅よりも広い場合には、両者の幅の差が、作業制約により定まる基準値以下であれば、当該或る鋼材を、当該下に位置する鋼材の上に置けるが、それを越えると置けない。
【００６４】
（３）長さ条件：或る鋼材の長さが、当該或る鋼材の下に位置する鋼材の最小長よりも短いならば無条件で、当該或る鋼材を、当該下に位置する鋼材の上に置ける。或る鋼材の長さが、当該或る鋼材の下に位置する鋼材の最小長よりも長い場合には、両者の長さの差が、作業制約により定まる基準値以下であれば、当該或る鋼材を、当該直下に位置する鋼材の上に置けるが、それを越えると置けない。
【００６５】
山積み制約のうち、（２）幅条件および（３）長さ条件のチェックがポイントとなるが、（１）払出順条件を満たす様、上下に積まれた２つの鋼材が幅条件あるいは長さ条件のいずれかを満たしていない場合、当該２つの鋼材は同じ山に積むことができない。この事実を利用すると、同じ山に積むことができない鋼材ペア（以下、同じ山に積むことができない鋼材ペアを必要に応じて「禁止対」と称する）の集合Ｆを以下の（１１）式のように定義することができる。そして、この禁止対の集合Ｆを利用すると、山積み制約を満たす対象鋼材の集合（対象鋼材の上に配置することが出来る鋼材の集合Ｕ（ｉ））は、以下の（１２）式の様に簡単に抽出できる。
【００６６】
【数１４】
2020107209.tif 000016
【００６７】
以上の結果、対象鋼材ｉ１に対して山積み制約を満たす対象鋼材（対象鋼材ｉ１の上に配置することが出来る対象鋼材）の上載せ可能集合Ｕ（ｉ１）、対象鋼材ｉ２に対して山積み制約を満たす対象鋼材（対象鋼材ｉ２の上に配置することが出来る対象鋼材）の上載せ可能集合Ｕ（ｉ２）、・・・、対象鋼材ｉｎに対して山積み制約を満たす対象鋼材（対象鋼材ｉｎの上に配置することが出来る対象鋼材）の上載せ可能集合Ｕ（ｉｎ）が、それぞれ抽出される。
【００６８】
最下段に設定した対象鋼材（初期ノードとして設定した対象鋼材）ｉｇからは、当該対象鋼材ｉｇに対して山積み制約を満たす対象鋼材の上載せ可能集合Ｕ（ｉｇ）が分枝可能（二段目に山積み可能）であり、二段目に山積み可能とした対象鋼材の上載せ可能集合Ｕ（ｉｇ）に含まれる対象鋼材のうち着目鋼材ｉｇ'からは、当該上載せ可能集合Ｕ（ｉｇ）と着目鋼材ｉｇ'に対して山積み制約を満たす対象鋼材の上載せ可能集合Ｕ（ｉｇ'）との積集合（共通部分：intersection）が分枝可能（三段目に山積み可能）であるとし、以降、着目鋼材を順次上段にずらしながら、着目鋼材に対して、それまでの積集合と着目鋼材に対して山積み制約を満たす対象鋼材の集合との積集合が分岐可能であるとする。
【００６９】
例えば、図２の一番上の分枝について説明する。図２では、表記の都合上、対象鋼材を鋼材と表記する。また、山積み制約を満たす対象鋼材の集合Ｇを必要に応じて上乗せ可能集合Ｇと称する。
図２では、全体集合Ｎに、対象鋼材ｉ１〜ｉｎが含まれるものとする。
まず、対象鋼材ｉ１〜ｉｎが、それぞれ別の最下段（根ノード）に配置される。
最下段に設定した対象鋼材ｉ１に対しては、上載せ可能集合Ｕ（ｉ１）が分枝可能である（図２の分岐１を参照）。次に、二段目において着目鋼材を対象鋼材ｉ２とすると、（１、２）枝に対しては、上載せ可能集合Ｕ（ｉ１）∩Ｕ（ｉ２）が分岐可能である（図２の分枝２を参照）。次に、三段目において着目鋼材を対象鋼材ｉ３とすると、（１、２、３）枝に対しては、上載せ可能集合Ｕ（ｉ１）∩Ｕ（ｉ２）∩Ｕ（ｉ３）が分枝可能である（図２の分枝３を参照）。
【００７０】
このような分枝を、（ｉ、ｊ、・・・、ｓ）枝に対し上載せ可能集合が空集合（Ｕ（ｉｉ）∩Ｕ（ｊ）・・・∩Ｕ（ｓ）＝φ）になるか、当該枝の山高さが高さ制限を満たさなくなるまで（上限値になるまで）続ける。その結果、双対問題求解部１２０は、空集合になるまでの枝、或いは、空集合になる前に山高さが上限値を超えた場合は上限値以下の高さになるまでの枝が、実現可能山になる。
【００７１】
例えば、図２の一番上の分岐について説明すると、最下段の対象鋼材ｉ１→二段目の対象鋼材ｉ２→三段目の対象鋼材ｉ３で空集合になったとする。この場合、空集合になるまでの（ｉ１、ｉ２）枝、（ｉ１、ｉ２、ｉ３）枝が実現可能山として列挙される。即ち、｛最下段に対象鋼材ｉ１、二段目に対象鋼材ｉ２という集合と、｛最下段に対象鋼材ｉ１、二段目に対象鋼材ｉ２、三段目に対象鋼材ｉ３｝という集合とが実現可能山として列挙される。
【００７２】
また、最下段の対象鋼材ｉ１→二段目の対象鋼材ｉ２→三段目の対象鋼材ｉ３→四段目の対象鋼材ｉ４でまだ空集合にならないが、四段目で山高さが上限値を超えたとする。この場合、上限値以下の高さになるまでの、（ｉ１、ｉ２）枝、（ｉ１、ｉ２、ｉ３）枝が実現可能山として列挙される。
本実施形態では、同一の積段（ノード）に配置された対象鋼材の全てについて、山積み制約を満たす鋼材ペア（上積可能集合）を選別した後に、当該積段の１つ上の積段（ノード）に配置された対象鋼材の全てについて、山積み制約を満たす鋼材ペア（上積可能集合）を選別することを繰り返し行うものとする。
【００７３】
以上のように下からＳ段目におけるｋ番目のノードに対応する実現可能山Ｓjを構成する要素（鋼材）を（ｉk1，ｉk2，・・・ｉkS）とすると、この実現可能山Ｓjから分枝（Ｓjに上載せ）可能な鋼材集合Ｕ（Ｓj）は、Ｕ（Ｓj）＝Ｕ（ｉk1）∩Ｕ（ｉk2）・・・∩Ｕ（ｉkS）となる。Ｕ（ｉk1）∩Ｕ（ｉk2）・・・∩Ｕ（ｉkS）を構成する要素（鋼材集合）、即ち鋼材集合Ｕ（Ｓj）を｛ｉP1，ｉPr，・・・ｉPn｝とすると、双対問題求解部１２０は、この鋼材集合Ｕ（Ｓj）の要素のそれぞれを順番に実現可能山Ｓjに付加し、新しい実現可能山ＳjPrを作成する。
尚、列（実現可能山ｍj）の列挙の方法は、特許文献１に記載の方法に限定されず、公知の種々の方法で実現することができる。
【００７４】
双対問題求解部１２０は、鋼材情報取得部１１０により取得された鋼材情報に含まれる鋼材から列（実現可能山ｍj）を列挙すると、当該列（実現可能山ｍj）を原問題計算用列群ＣTHに含める。本実施形態では、双対問題求解部１２０は、鋼材情報取得部１１０により取得された鋼材情報に含まれる鋼材から実現し得る全ての列（実現可能山ｍj）の列挙が完了するまで、列（実現可能山ｍj）の列挙を行う。
そして、双対問題求解部１２０は、鋼材情報取得部１１０により取得された鋼材情報に含まれる鋼材から実現し得る全ての列（実現可能山ｍj）の列挙が完了した時点の原問題計算用列群ＣTHに対し、（８）式の制約式を満足する範囲で（１０）式の目的関数Ｊの値を最大にする双対変数ｐ［ｉ］を双対最適解ｐopt［ｉ］として導出する。また、双対問題求解部１２０は、双対最適解ｐopt［ｉ］が得られたときの（１０）式の目的関数Ｊの値を双対最適値ＶDoptとして導出する。
【００７５】
［最適解導出部１３０］
最適解導出部１３０は、原問題計算用列群ＣTHに含まれる列（実現可能山ｍj）のそれぞれの列主双対ギャップｚ［ｊ］を、同じく双対問題求解部１２０により導出された双対最適解ｐopt［ｉ］を用いて量子化して分類する。そして、最適解導出部１３０は、後述する量子条件を満たす列グループを、分類した列グループの単位で選別し、量子条件を満たす列（実現可能山ｍj）の組み合わせから、CPLEX（登録商標）等の公知のソルバーを用いて線形計画法による最適化計算を行うことにより最適解｛ｘ［ｊopt］｝を導出する。以下、最適解導出部１３０が有する機能の一例を説明する。
【００７６】
[[量子化部１３１]]
双対問題求解部１２０により導出される双対最適解ｐopt［ｉ］は、（８−１）式の連立方程式の解とみなすことができる。また、（８−１）式の係数に当たるｍj［ｉ］（ｉ∈Ｎ，ｍj∈Ｃ)、ｃjは、「０」以上の整数である。従って、双対最適解ｐopt［ｉ］、「０」以上の整数の四則演算により得られる。よって、双対問題求解部１２０により導出される双対最適解ｐopt［ｉ］（ｉ∈Ｎ）は、有理数である。
【００７７】
このことから双対最適解ｐopt［ｉ］（ｉ∈Ｎ）は、既約分数で表すことができる。双対最適解ｐopt［ｉ］を既約分数で表記した場合の分母の最小公倍数をｄlcmとする。尚、２つの要素の最小公倍数は、両者の積を最大公約数で割ればよい。３つ以上の要素の最小公倍数は、２つの要素の最小公倍数と３つ目の要素とで、改めて最小公倍数を求めることを繰り返し求めればよい。また、最大公約数は、ユークリッドの互除法等で求めることができる。
【００７８】
量子化部１３１は、双対最適解ｐopt［ｉ］を既約分数で表記した場合の分母の最小公倍数ｄlcmを導出する。そして、量子化部１３１は、双対問題求解部１２０により得られた原問題計算用列群ＣTHに含まれる列（実現可能山ｍj）のそれぞれの列主双対ギャップｚ［ｊ］（＝ｃj−ｐopt［ｉ］・ｍj）に最小公倍数ｄlcmを掛けた値を、量子化した列主双対ギャップq［ｊ］（＝ｄlcm×ｚ［ｊ］）として導出する。
【００７９】
[[分類部１３２]]
分類部１３２は、双対問題求解部１２０により得られた原問題計算用列群ＣTHに含まれる列（実現可能山ｍj）を、量子化部１３１により導出された、量子化した列主双対ギャップｑ［ｊ］に基づいて分類する。本実施形態では、分類部１３２は、量子化した列主双対ギャップq［ｊ］の値として同じ値を持つ列（実現可能山ｍj）を同じ列グループとする。量子化した列主双対ギャップq［ｊ］の値が小さい列グループほど、選択の優先順位が高い列グループとする。
【００８０】
[[選別部１３３]]
選別部１３３は、分類部１３２で得られた列グループを、選択の優先順位が高いものから順番に量子条件を満たすまで選択して選択済みの列グループに追加する。そして、選別部１３３は、量子条件を満たすときまでに選択されている列グループ（列（実現可能山ｍj）の組み合わせ）のパターンとして１つまたは複数のパターンを選択する。
【００８１】
〔量子条件〕
ここで、図３を参照しながら量子条件について説明する。
弱双対定理によれば、（最小化問題である）原問題Ｐを線形緩和した主問題の目的関数Ｊの値は常に双対問題Ｄの目的関数Ｊの値以上になるが、最適解に限り両者は一致する。しかしながら、原問題Ｐが整数計画問題（ＩＰ）であり、双対問題Ｄが線形計画問題（ＬＰ）の場合には、最適解が得られても、原問題Ｐの目的関数Ｊの最適値と双対問題Ｄの目的関数Ｊの最適値は必ずしも一致せず、原問題Ｐの目的関数Ｊの最適値は、双対問題Ｄの目的関数Ｊの最適値以上（原問題Ｐの目的関数Ｊの最適値≧双対問題Ｄの目的関数Ｊの最適値）となる。その差が主双対ギャップ即ち誤差Ｇd（≧０）として生じる。このような誤差Ｇdが生じるのは、整数計画問題（ＩＰ）のみに課される制約式（ｘ［ｊ］∈｛０，１｝）が存在するためである（２）式を参照）。
【００８２】
この関係は解全体に関するものである。集合分割問題では、目的関数が、最適解を構成する決定変数ｘ［ｊ］の列コスト（評価値）ｃjの和として記述できることから、解を構成する要素ｘ［ｊ］毎に、この関係が成り立つ。即ち、決定変数ｘ［j］の原問題Ｐの評価値（列コストｃj）と、決定変数ｘ［j］の双対問題Ｄの評価値（双対コストΣi∈Mjp［ｉ］）には、以下の（１３）式の関係が成り立つ。尚、Ｍjは、原問題計算用列群ＣTHに含まれる実現可能山ｍj（本実施形態では、双対問題求解部１２０で抽出された実現可能山ｍj）を指す。
【００８３】
【数１５】
2020107209.tif 000017
【００８４】
図３では、集合分割問題の最適解として選ばれた列（実現可能山ｍj）が、ｍ12、ｍ53、ｍ77、ｍ106、ｍ204、ｍ380、即ち、決定変数ｘ［１２］、ｘ［５３］、ｘ［７７］、ｘ［１０６］、ｘ［２０４］、ｘ［３８０］の値が「１」となった場合を例に挙げて示す（図５において、値の欄が１であることはこのことを示す）。また、鋼材ＩＤは、列（実現可能山ｍj）を構成する各鋼材の識別番号を示す。例えば、実現可能山ｍ12を構成する鋼材は、鋼材ＩＤが「５５」、「６０」、「５４」、「５６」の鋼材であることを示す。ｃ2jは、（４）式、（４−１）式に示す積み替え数であり、実現可能山ｍjを形成する際に発生する鋼材の仮置き数を表す。ｃjは、（４−１）式に示す列コストｃjである（ただし、ｋ1＝５．０、ｋ2＝１．０）。Σi∈Mjp［ｉ］は、該当する最適解として選ばれた山の双対コストである。ｚ［ｊ］は、その山の列主双対ギャップであり、ｚ［ｊ］・ｄlcmは、量子化した列主双対ギャップである。
【００８５】
また、図３において、原問題Ｐの目的関数Ｊの最適値は、列コストｃjの和であり、「３８」である（（４）式、（４−１）式を参照）。双対問題Ｄの目的関数Ｊの最適値は、双対コストΣi∈Mjp［ｉ］の和、即ちΣi∈Np［ｉ］であり、「３７．１」である（（１０）式を参照）。前者から後者を引いた値（＝０．９（３８−３７．１））が、誤差Ｇd（原問題Ｐ（主問題）の目的関数Ｊの最適値に対する、双対問題Ｄの目的関数Ｊの最適値の誤差）になる。以下の説明では、この誤差Ｇdを、必要に応じて、主双対ギャップと称する。
【００８６】
また、図３に示すよう、原問題Ｐの最適解を構成する列（実現可能山ｍj）に対する列主双対ギャップｚ［ｊ］の和も「０．９」になる。すると、主双対ギャップＧdと、原問題Ｐの最適解を構成する列（実現可能山ｍj）に対する列主双対ギャップｚ［ｊ］との関係は、以下の（１４）式で表される。
【００８７】
【数１６】
2020107209.tif 000018
【００８８】
原問題Ｐ（主問題）の目的関数Ｊの最適値は、全ての列（実現可能山ｍj）を列挙して集合分割問題を解くことにより得られるが、全ての列（実現可能山ｍj）を列挙しない場合には不明である。ただし、（１３）式より、原問題Ｐ（主問題）の目的関数Ｊの最適値は、双対最適値ＶDopt以上の整数であることは分かる。図３に示す例では、原問題Ｐ（主問題）の目的関数Ｊの最適値が「３８」、「３９」、「４０」、・・・のいずれかであることは分かる。原問題Ｐ（主問題）の目的関数Ｊが最適値であるときの主双対ギャップＧd_optが分かれば、列主双対ギャップｚ［ｊ］の和が、当該主双対ギャップＧd_optになるように列主双対ギャップｚ［ｊ］の組み合わせを求めることにより、当該列主双対ギャップｚ［ｊ］を持つ列（実現可能山ｍj）を最適解として導出することができる。このことは、最適解を特定する条件そのものを示すことから、（１４）式は、最適解の条件式である。
【００８９】
主双対ギャップＧdの取り得る値は、ceil（ＶDopt）−ＶDopt＋ｎ（ｎ＝０，１，２，・・・）である。従って、その候補の内、値の小さいもの即ちｎ＝０，１，２，・・・の順に、主双対ギャップＧdを選択することとなるが、本実施形態では、後述するように選別部１３３により、列主双対ギャップｚ［ｊ］を順次拡張するのに合わせ、主双対ギャップＧd即ち上記ｎを適宜更新する方法（（１７-１）式〜（１７−３）式）をとり、列主双対ギャップｚ［ｊ］の和が、選択した主双対ギャップＧdになるような列主双対ギャップｚ［ｊ］の組み合わせがあるか否かを判定し、選択した主双対ギャップＧdになるような列主双対ギャップｚ［ｊ］の組み合わせがあれば、当該列主双対ギャップｚ［ｊ］の組み合わせを持つ列（実現可能山ｍj）を最適解として導出することができる。一方、選択した主双対ギャップＧdになるような列主双対ギャップｚ［ｊ］の組み合わせがなければ、列主双対ギャップｚ［ｊ］の選択範囲および、それに伴う主双対ギャップＧdを更新し、同様の判定を行って最適解を探索する。以上のように、取り得る値が小さなものから順に主双対ギャップＧdを選択して、列主双対ギャップｚ［ｊ］の和が、選択した主双対ギャップＧdになるような列主双対ギャップｚ［ｊ］の組み合わせとして最初に見つかった列主双対ギャップｚ［ｊ］を持つ列（実現可能山ｍj）が最適解の候補となる。
【００９０】
ただし、列主双対ギャップｚ［ｊ］は有理数（循環小数）である。このため、列主双対ギャップｚ［ｊ］を整数値として扱わないと、前記の「選択した主双対ギャップＧdになるような列主双対ギャップｚ［ｊ］組み合わせがあるか否かの判定」が、行いづらく、またその際に計算機誤差が生じる虞がある。このことから前述したように本実施形態では、列主双対ギャップｚ［ｊ］を量子化する。量子化した列主双対ギャップｚ［ｊ］をｑ［ｊ］（＝ｄlcm×ｚ［ｊ］）とする。そうすると、以下の（１５）式が成り立つときの量子化した列主双対ギャップｑ［ｊ］を持つ列（実現可能山ｍj）が最適解になる。
【００９１】
【数１７】
2020107209.tif 000019
【００９２】
（１５）式を、原問題Ｐの最適解の求解のための量子条件と称する。原問題Ｐの集合分割問題を解く際に、この量子条件を満たす列（実現可能山ｍj）の組み合わせの中から最適解が選ばれるようにする制約条件を加えることで、最適解を高速に求解することができる。
尚、図３に示す例では、最小公倍数ｄlcmは「３０」である。従って、ｎ＝０の場合の主双対ギャップＧd（＝Ｇd_opt）を量子化すると「２７（＝０．９×３０）」になる。量子化部１３１は、このようにして主双対ギャップＧd（＝Ｇd_opt）についても量子化する。
【００９３】
〔選別部１３３の処理〕
選別部１３３は、以上の量子条件を満たす列（実現可能山ｍj）の組み合わせとして、１つまたは複数の組み合わせを選別する。選別部１３３の処理の一例を説明する。以下の説明では、量子化した列主双対ギャップｑ［ｊ］を、必要に応じて、量子化列主双対ギャップｑ［ｊ］と称する。
まず、選別部１３３は、量子化列主双対ギャップｑ［ｊ］の抽出上限値ｑgapを設定する。抽出上限値ｑgapの初期値は、例えば「０」である。
次に、選別部１３３は、分類部１３２により得られた列グループから、抽出上限値ｑgapの量子化列主双対ギャップｑ［ｊ］に対応する列グループを選別結果に追加する。
【００９４】
次に、選別部１３３は、量子化列主双対ギャップｑgapの列グループの追加により拡張した列（実現可能山ｍj）から、量子条件を満たす列（実現可能山ｍj）の組み合わせが存在するか否かを判定する。この判定の結果、量子条件を満たす列（実現可能山ｍj）の組み合わせが存在しない場合、選別部１３３は、抽出上限値ｑgapを大きくする。例えば、選別部１３３は、量子化部１３１により導出された量子化列主双対ギャップｑ［ｊ］を昇順に選択して、抽出上限値ｑgapを設定する（大きくする）ことができる。選別部１３３は、抽出上限値ｑgapの設定と、量子条件を満たす列（実現可能山ｍj）の組み合わせの有無の判定と、を、量子条件を満たす列（実現可能山ｍj）の組み合わせが得られるまで繰り返し行う。
【００９５】
量子条件を満たす列（実現可能山ｍj）の組み合わせが存在するか否かを判定するために、本実施形態では、以下の（１６）式を満たすｒl（＝（ｒ1，ｒ2，・・・，ｒk）が存在するか否かを判定する。
【００９６】
【数１８】
2020107209.tif 000020
【００９７】
ここで、抽出上限値ｑgapの現在値をｑkとする、抽出上限値ｑgapの現在値ｑk以下の量子化列主双対ギャップｑ［ｊ］の要素を（ｑ0，ｑ1，ｑ2，・・・，ｑk）とする（ｑ0＝０）。これらの量子化列主双対ギャップｑ［ｊ］を持つ列（実現可能山ｍj）の数を、（ｔ0，ｔ1，ｔ2，・・・，ｔk）とする。量子化列主双対ギャップｑ［ｊ］を持つ列（実現可能山ｍj）の数は、分類部１３２により、当該量子化列主双対ギャップｑ［ｊ］を持つものとして同一の列グループ内に分類された列（実現可能山ｍj）の数である。
また、Ｇq_gapは、以下の（１７−１）式〜（１７−３）式で与えられる。
【００９８】
【数１９】
2020107209.tif 000021
【００９９】
前述したように、取り得る値が小さなものから順に主双対ギャップＧdを選択して、列主双対ギャップｚ［ｊ］の和が、選択した主双対ギャップＧdになるような列主双対ギャップｚ［ｊ］の組み合わせとして最初に見つかった列主双対ギャップｚ［ｊ］を持つ列（実現可能山ｍj）が最適解となる可能性がある。図３に示す例では、原問題Ｐ（主問題）の目的関数Ｊの最適値が「３８」、「３９」、「４０」、・・・であることは分かる。従って、主双対ギャップＧdの取り得る値は、「０．９」、「１．９」、「２．９」、・・・になる。これらの主双対ギャップＧdを量子化すると、「２７（＝０．９×３０）」、「５７（＝１．９×３０）」、「８７（＝２．９×３０）」、・・・になる。
【０１００】
この例では、（１７−１）式は、抽出上限値ｑgapの現在値ｑkが「２７」未満である場合に適用される。（１７−２）式は、抽出上限値ｑgapの現在値ｑkが「２７」、「５７」、「８７」の場合に適用される（ｎ＝０、１、２とすることにより、それぞれ、抽出上限値ｑgapの現在値ｑkが「２７」、「５７」、「８７」のときに、（１７−２）式を満たすことができる）。（１７−３）式は、抽出上限値ｑgapの現在値ｑkが「２７」超「５７」未満、「５７」超「８７」未満の場合に適用される。（１７−２）式が適用される場合、（１７−２）式のthenの後の１つ目の式（Ｇq_gap＝（ceil（VDopt）−VDopt）・ｄclm＋ｎ・ｄclm）が与えられた（１６）式を満たすｒl（＝（ｒ1，ｒ2，・・・，ｒk）が存在することと、（１８−２）式のthenの後の２つ目の式（Ｇq_gap＝（ceil（VDopt）−VDopt）・ｄclm＋（ｎ＋１）・ｄclm）が与えられた（１６）式を満たすｒl（＝（ｒ1，ｒ2，・・・，ｒk）が存在することとの少なくとも何れかが成立する場合に、（１６）式を満たすｒl（＝（ｒ1，ｒ2，・・・，ｒk）が存在すると判定される。両方が成立する場合は、１つ目の式に対応するＧq_gapに対しての計算から行い、それによって解が得られない場合、２つ目の式に対応するＧq_gapに対しての計算を行う。
【０１０１】
[[求解部１３４]]
抽出上限値ｑgapの現在値ｑkを初期値（例えば「０」）から順に大きくして、選別対象の列（実現可能山ｍj）群の範囲を順次拡張し、（１４）式を満足する列（実現可能山ｍj）の組み合わせが存在する場合は、原問題Ｐの部分問題Ｐ（Ｃq）の最適解を求解し、存在しない場合は、抽出上限値ｑgapを分類部１３２において次の値に拡張することを繰り返す過程で最初に得られる当該部分問題Ｐ（Ｃq）の最適解は、原問題Ｐの最適解になる。このことは、以下の定理Ｉにより得られる。
【０１０２】
〔定理Ｉ〕
『閾値ＴＨがｎ＋ｆD（ｆD＝ceil（VDopt）−VDopt、ｎ:０（ゼロ）以上の整数）のとき、列主双対ギャップｚ［ｊ］が当該閾値ＴＨ以下の列ｊによる列群ＣTHにより得られた部分問題Ｐ（ｎ＋ｆD）の最適値Ｊ（ｎ＋ｆD）optがceil（VDopt）＋ｎ＋１以下なら、当該最適値Ｊ（ｎ＋ｆD）optは、原問題Ｐの最適値Ｊoptである』
ここで、ceil（ｘ）は、天井関数（実数ｘに対してｘ以上の最小の整数を対応付ける関数）である。
【０１０３】
〔証明〕
閾値ＴＨをｎ＋ｆDとして得られた部分問題Ｐ（ＴＨ）の最適値Ｊ（ｎ＋ｆD）optがceil（VDopt）＋ｎ＋１であるとし、これが原問題Ｐの最適値ではないとする。即ち、原問題Ｐの最適値Ｊoptは、ceil（VDopt）＋ｎ以下であり、それを得るために最適解の構成要素となり得る列を抽出するための閾値ＴＨを、ｎ＋ｆDよりも拡張する（大きくする）必要があると仮定する。
【０１０４】
そこで、閾値ＴＨをｎ＋ｆD＋α（０＜α≦１の正数）とする。ここで、拡張した部分問題Ｐ（ｎ＋ｆD＋α）において新たに加わる列の中には、列主双対ギャップｚ［ｊ］が以下の（１８）式を満たす列ｊが少なくとも一つは必ず追加される。閾値ＴＨを拡張した後の列ｊの拡張範囲から列ｊが抽出されなければ解の改善はあり得ないからである。
【０１０５】
【数２０】
2020107209.tif 000022
【０１０６】
この閾値ＴＨの拡張により新たに追加される列ｊの列主双対ギャップｚ［ｊ］を以下の（１９）式とする。
【０１０７】
【数２１】
2020107209.tif 000023
【０１０８】
そうすると、拡張した部分問題Ｐ（ｎ＋ｆD＋α）の最適値Ｊ（ｎ＋ｆD＋α）optは、VDopt＋ｎ＋ｆD＋β以上の整数値となる。つまり、以下の（２０）式が成り立つ。
【０１０９】
【数２２】
2020107209.tif 000024
【０１１０】
従って、閾値ＴＨを拡張しても、拡張した部分問題Ｐ（ｎ＋ｆD＋α）の最適値Ｊ（ｎ＋ｆD＋α）optは、ceil（VDopt）＋ｎを上回り、原問題Ｐの最適値Ｊoptの下限値はceil（VDopt）＋ｎ＋１となる。これは、原問題Ｐの最適値Ｊoptをceil（VDopt）＋ｎ以下と仮定したことに矛盾する。従って、前述した仮定に誤りがあり、閾値ＴＨがｎ＋ｆDであるときに得られた部分問題Ｐ（ｎ＋ｆD）の最適値Ｊ（ｎ＋ｆD）optがceil（VDopt）＋ｎ＋１以下なら、当該最適値Ｊ（ｎ＋ｆD）optは、原問題Ｐの最適値Ｊoptであることが証明された。（Q.E.D.）
【０１１１】
ここで定理Ｉは、ＴＨ＝ｎ＋ｆDである場合にのみ成立し、閾値ＴＨに対し連続的に成り立つわけではない。これが成り立たない（ｎ−１）＋ｆD≦ＴＨ＜ｎ＋ｆDである場合には、『（補足定理Ｉ）：閾値ＴＨが（ｎ−１）＋ｆD≦ＴＨ＜ｎ＋ｆDである場合、列主双対ギャップｚ［ｊ］が当該閾値ＴＨ以下の列ｊを全て含む列群ＣTHにより得られた部分問題Ｐ（ＴＨ）の最適値Ｊ（ＴＨ）optがceil（VDopt）＋ｎ以下なら、当該最適値Ｊ（ＴＨ）optは、原問題Ｐの最適値Ｊoptである（ただし（ｎ−１）＋ｆDが負の場合は０とする）。』となる。これは、定理Ｉより、ＴＨ＝（ｎ−１）＋ｆDである場合に、部分問題Ｐ（ＴＨ）の最適値Ｊ（ＴＨ）optがceil（VDopt）＋（ｎ−１）＋１（＝ceil（VDopt）＋ｎ）以下なら、原問題Ｐの最適解と判定できるので、それより大きいＴＨに対しても成立する。一方、列主双対ギャップｚ［ｊ］がｎ＋ｆDの列を追加した場合、その部分問題の最適値がVDopt＋ｎ＋ｆD（＝ceil（VDopt）＋ｎ）となる可能性があるので、ceil（VDopt）＋ｎ＋１を原問題の最適値と判定することはできず、補足定理Ｉが成り立つ。
【０１１２】
図３に示す例では、定理Ｉは、抽出上限値ｑgapの現在値ｑkが「２７」、「５７」、「８７」、・・・のときに成り立ち、２７超５７未満、５７超８７未満のときには成り立たない。（ｎ＋ｆD）＜ＴＨ＜｛（ｎ＋１）＋ｆD｝の場合には、部分問題Ｐ（ＴＨ）の最適値Ｊ（ＴＨ）optが、(VDopt＋ｎ＋1＋ｆD)以下の場合に、原問題Ｐの最適解とみなせる。閾値ＴＨを「０」から順次大きくしている前提では、閾値ＴＨがｎ＋ｆD（ＴＨ＝ｎ＋ｆD）の時点で(VDopt＋ｎ＋ｆD)以下の解が得られていないならば、定理Ｉより、原問題Ｐの最適値は、(VDopt＋ｎ＋ｆD)を上回るからである。
【０１１３】
従って、抽出上限値ｑgapを初期値（例えば「０」）から順に大きくして、選別対象の列（実現可能山ｍj）群の範囲を順次拡張して、（１６）式、（１７−１）式〜（１７−３）式を満たすｒl（＝（ｒ1，ｒ2，・・・，ｒk）が存在する場合に、（１５）式を条件に加えた原問題Ｐの部分問題Ｐ（Ｃq）の最適解の主双対ギャップが、（１７−１）式〜（１７−３）式のＧq_gap（以下）であることが成立するまで繰り返し行えば、抽出上限値ｑgapが適当な値であるときに原問題Ｐの最適解が得られる。
【０１１４】
例えば、図３に示す例では、抽出上限値ｑgapの現在値ｑkが「２６」の時点では、原問題Ｐの部分問題Ｐ（Ｃq）の最適値が「３９」であっても、当該最適値が原問題Ｐの最適値であると判定することはできない。抽出上限値ｑgapの現在値ｑkが「２６」のときには、（１７−１）式よりＧq_gap＝２７なので、この時点（ｑk＝２６）では、部分問題Ｐ（Ｃq）の最適値が「３８」（以下）でなければ、補足定理Ｉより、原問題の最適解とは判定できないからである。つまり、抽出上限値ｑgapが「２７」のときに、原問題Ｐの部分問題Ｐ（Ｃq）の最適値が「３８」になる可能性があるからである。
次に、抽出上限値ｑgapの現在値ｑkが「２７（ＴＨ＝ｄlcm・（ceil（VDopt）−VDopt））」のときには、定理Ｉの前提条件が成り立つ。従って、抽出上限値ｑgapの現在値ｑkが「２７」の時点では（ＶDopt＝３７．１）、（１７−２）式より、まず、Ｇq_gap＝２７として求解した原問題Ｐの部分問題Ｐ（Ｃq）の最適値が「３８（＝ceil（VDopt））」とならない場合、Ｇq_gap＝５７として求解した部分問題Ｐ（Ｃq）の最適値が「３９（＝ceil（VDopt）＋１）」であれば、これは、定理Ｉのｎ＝０のケースに該当するので、この際の部分問題Ｐ（Ｃq）の最適解は、原問題Ｐの最適解であると判断できる。
次に、抽出上限値ｑgapの現在値ｑkが「２８」のときには、（１７−３）式よりＧq_gap=５７なので、この時点（ｑk＝28）では、部分問題Ｐ（Ｃq）の最適値が「３９」（以下）でなければ、補足定理Ｉより、原問題Ｐの最適解とは判定できない。
【０１１５】
〔求解部１３４の処理〕
原問題Ｐの部分問題Ｐ（Ｃq）の最適値Ｊ（Ｃq）の下限値（下界値）は、抽出上限値ｑgapを前記のように「０」から逐次拡張していく場合、その現在値ｑkが、定理Ｉの前提条件であるｑk=ｎ＋ｆDの際、部分問題Ｐ（Ｃq）の最適値が、ceil（VDopt）＋ｎ＋１以下でない場合、抽出上限値ｑgapをｑkの次に拡張したｑk+1の際には、部分問題Ｐ（Ｃq）の最適値は、(定理Ｉの証明と同様の議論で)ceil（VDopt）＋ｎ＋１未満にはなり得ず、ceil（VDopt）＋ｎ＋１であれば、最適値と判定できる。即ち、抽出上限値ｑgapがｎ＋ｆDを超え、ｎ＋1＋ｆDまでは、部分問題Ｐ（Ｃq）の目的関数下限値はceil（VDopt）＋ｎ＋１となり、その時に限り、原問題の最適値と判定できる。この様に、抽出上限値ｑgapを０から逐次拡張し、拡張した列群に対する部分問題Ｐ（Ｃq）を順次求解していく際の、部分問題Ｐ（Ｃq）の目的関数下限制約を以下の（２１−１）式または（２１−２）式のように定めることができる。つまり、抽出上限値ｑgapの現在値ｑkが、以下の（２１−１）式のif条件を満たす場合、原問題Ｐの部分問題Ｐ（Ｃq）を求解する際、その目的関数Ｊ（Ｃq）に対し、下限値ceil（VDopt）を設定でき、求解結果が、下限値ceil（VDopt）と一致する場合には、その部分問題Ｐ（Ｃq）の解をを原問題Ｐの最適値と判断できる。同様に、抽出上限値ｑgapの現在値ｑkが、以下の（２１−２）式のif条件を満たす場合、部分問題Ｐ（Ｃq）を求解する際、その目的関数Ｊ（Ｃq）に対し、下限値ceil（VDopt）＋（ｎ＋１））を設定でき、求解結果が、それと一致する場合には、当該最適値Ｊ（Ｃq）を原問題Ｐの最適値と判断できる。
【０１１６】
【数２３】
2020107209.tif 000025
【０１１７】
また、選別部１３３により量子条件を満たすと判定される列（実現可能山ｍj）の組み合わせｒl（＝（ｒ1，ｒ2，・・・，ｒk）が複数存在する場合がある。列（実現可能山ｍj）の組み合わせｒlのパターンがｅパターン（ｅは正の整数）あるものとする。これらを、（ｒ11，ｒ12，・・・，ｒ1k）、（ｒ21，ｒ22，・・・，ｒ2k）、・・・、（ｒe1，ｒe2，・・・，ｒek）と表記する。また、選別部１３３により量子条件を満たすと判定された時点での抽出上限値ｑgap以下の量子化列主双対ギャップｑ［ｊ］の各要素（ｑ1，ｑ2，・・・，ｑk）における列（実現可能山ｍj）の数を（ｔ1，ｔ2，・・・，ｔk）と表記する。また、ｅパターンの列（実現可能山ｍj）の組み合わせｒlのそれぞれについて、当該パターンを解として採用する場合に「１」、そうでない場合に「０」とする０−１変数をδ［ｐ］（ｐ＝1,・・・,e）とする。そうすると、最適解が存在するとすれば、量子条件を満たすｅパターンのいずれかであることから、以下の（２２）式〜（２４）式が成り立つようにする必要がある。
【０１１８】
【数２４】
2020107209.tif 000026
【０１１９】
（２２）式と（２３）式により、解として採用される列（実現可能山ｍj）の総和と、選別部１３３により量子条件を満たすと判定された列（実現可能山ｍj）の組み合わせ（の１つ）ｒplを構成する列（実現可能山ｍj）の総和が等しくなる必要があることが規定される。
（２４）式により、選別部１３３により量子条件を満たすと判定された列（実現可能山ｍj）の組み合わせを必ず１つ選ばなければならないことが規定される。
【０１２０】
求解部１３４は、選別部１３３により、量子条件を満たす列（実現可能山ｍj）の組み合わせｒl（＝（ｒ1，ｒ2，・・・，ｒk）が存在すると判定されると、当該列（実現可能山ｍj）の組み合わせｒl（＝（ｒ1，ｒ2，・・・，ｒk）を用いて、（２）式に加えて、（２１−１）式または（２１−２）式および（２２）式〜（２４）式の制約式を満足する範囲で（４）式の目的関数Ｊの値を最小にする決定変数ｘ［ｊ］を最適解｛ｘ［ｊopt］｝として導出する。
【０１２１】
一方、求解部１３４は、以上のようにして最適解｛ｘ［ｊopt］｝を導出することができない場合、抽出上限値ｑgapを大きくする。そして、選別部１３３は、この抽出上限値ｑgapを初期値として、抽出上限値ｑgapの設定と、量子条件を満たす列（実現可能山ｍj）の組み合わせの有無の判定と、を、量子条件を満たす列（実現可能山ｍj）の組み合わせが得られるまで繰り返し行う。量子条件を満たす列（実現可能山ｍj）の組み合わせが得られると、求解部１３４は、量子条件を満たす列（実現可能山ｍj）の組み合わせを用いて、最適解｛ｘ［ｊopt］｝の導出と、最適解｛ｘ［ｊopt］｝の有無の判定と、を行う。
【０１２２】
［出力部１４０］
出力部１４０は、最適解導出部１３０により導出された最適解｛ｘ［ｊopt］｝を示す情報を山分け計画の情報として出力する。出力部１４０は、実現可能山のＩＤと、当該ＩＤの実現可能山に属する鋼材のＩＤとを含む情報を山分け計画の情報とすることができる。鋼材のＩＤは、鋼材情報に含まれるＩＤである。また、出力部１４０は、鋼材情報に含まれる鋼材のサイズと、山積み制約とに基づいて、実現可能山に属する鋼材の当該実現可能山における積順を導出し、当該積順の情報を山分け計画の情報に含めてもよい。
出力の形態としては、例えば、コンピュータディスプレイへの表示、山分け計画作成装置１００内の記憶媒体や外部の記憶媒体への記憶、および外部装置への送信の少なくとも１つを採用することができる。
また、出力部１４０は、山分け計画の情報と、鋼材情報に含まれる鋼材のヤードへの到着順と、ヤードの置き場における搬送機器（クレーン）の情報とに基づいて、どのタイミングでどの搬送機器によりどの鋼材をどの場所に搬送するのかを特定し、特定した内容に基づいて、搬送機器に対する動作指令を行うことができる。この場合には、出力部１４０は、山分け計画の情報を出力しなくてもよい。
【０１２３】
＜フローチャート＞
次に、図４のフローチャートを参照しながら、本実施形態の山分け計画作成装置１００による山分け計画作成方法の一例を説明する。
まず、ステップＳ４０１において、鋼材情報取得部１１０は、鋼材情報を取得する。
次に、ステップＳ４０２において、双対問題求解部１２０は、ステップＳ４０１で取得された鋼材情報に基づいて、鋼材情報に含まれる鋼材から得られる鋼材ペアから禁止対の集合Ｆを導出する（（１１）式を参照）。
次に、ステップＳ４０３において、双対問題求解部１２０は、ステップＳ４０２により導出された禁止対の集合Ｆに基づいて、ステップＳ４０１で取得された鋼材情報に含まれる各鋼材ｉに対する上載せ可能集合Ｕ（ｉ）（ｉ∈Ｎ）を導出する（（１２）式を参照）。
【０１２４】
次に、ステップＳ４０４において、双対問題求解部１２０は、ステップＳ４０３で導出されたステップＳ４０１で取得された鋼材情報に含まれる各鋼材ｉに対する上載せ可能集合Ｕ（ｉ）に基づいて、当該鋼材情報に含まれる鋼材から実現し得る全ての列（実現可能山ｍj）を列挙し、原問題計算用列群ＣTHに含める（この場合のＣTHは、全ての実行可能山に対応する列群ＣAll）。
次に、ステップＳ４０５において、双対問題求解部１２０は、ステップＳ４０４で得られた原問題計算用列群ＣTHに対し、（８）式の制約式を満足する範囲で（１０）式の目的関数Ｊの値を最大にする双対変数ｐ［ｉ］を双対最適解ｐopt［ｉ］として導出する。また、双対問題求解部１２０は、双対最適解ｐopt［ｉ］が得られたときの（１０）式の目的関数Ｊの値を双対最適値ＶDoptとして導出する。
【０１２５】
次に、ステップＳ４０６において、量子化部１３１は、ステップＳ４０５で導出された双対最適解ｐopt［ｉ］を既約分数で表記した場合の分母の最小公倍数ｄlcmを導出する。
次に、ステップＳ４０７において、量子化部１３１は、ステップＳ４０４で得られた原問題計算用列群ＣTHに含まれる列（実現可能山ｍj）のそれぞれの列主双対ギャップｚ［ｊ］（＝ｃj−ｐopt［ｉ］・ｍj）に最小公倍数ｄlcmを掛けた値を、量子化列主双対ギャップｑ［ｊ］として導出する。
【０１２６】
次に、ステップＳ４０８において、分類部１３２は、ステップＳ４０４で得られた原問題計算用列群ＣTHに含まれる列（実現可能山ｍj）のうち、ステップＳ４０７で導出された量子化列主双対ギャップｑ［ｊ］の値として同じ値を持つ列（実現可能山ｍj）を同じ列グループにして、ステップＳ３１４で抽出された原問題計算用列群ＣTHに含まれる列（実現可能山ｍj）を分類する。
次に、ステップＳ４０９において、選別部１３３は、量子化列主双対ギャップｑ［ｊ］の抽出上限値ｑgapを初期化する。抽出上限値ｑgapの初期値は、ステップＳ４０８において、分類部１３２により、ＣTHを量子化列主双対ギャップｑ［ｊ］毎に分類した際の最も小さい量子化列主双対ギャップｑ［ｊ］の値に設定する。これは、通常「０」である。
【０１２７】
次に、ステップＳ４１０において、選別部１３３は、ステップＳ４０８で、量子化列主双対ギャップｑ［ｊ］毎に分類された列（実現可能山ｍj）から、抽出上限値ｑgapの量子化列主双対ギャップｑ［ｊ］に対応する列グループ（実現可能山ｍj）を選別結果に追加する。
次に、ステップＳ４１１において、選別部１３３は、ステップＳ４１０で拡張された列（実現可能山ｍj）の中に、量子条件を満たす列（実現可能山ｍj）の組み合わせ（（１６）式を満たすｒl（＝（ｒ1，ｒ2，・・・，ｒk））が存在するか否かを判定する。このとき、選別部１３３は、ステップＳ４０５で導出された双対最適値ＶDoptと、ステップＳ４０９または後述するステップＳ４１２で設定された抽出上限値ｑgapと、ステップＳ４０６で導出された最小公倍数ｄlcmとに基づいて（１７−１）式〜（１７−３）式の何れの条件に該当するかを判定し（（１７−１）式〜（１７−３）式のｉｆ文を参照）、該当する条件に対応する式を用いて、主双対ギャップの最適値Ｇq_gap（（１６）式におけるＧq_gap）を導出する（（１７−１）式〜（１７−３）式のthen以下を参照）。この判定の結果、量子条件を満たす列（実現可能山ｍj）の組み合わせが存在しない場合（ステップＳ４１０でＮＯの場合）、処理はステップＳ４１２に進む。処理がステップＳ４１２に進むと、選別部１３３は、抽出上限値ｑgapを大きくする。そして、処理はステップＳ４１０に戻り、量子条件を満たす列（実現可能山ｍj）の組み合わせが存在するまで、ステップＳ４１０〜Ｓ４１２の処理が繰り返し実行される。
【０１２８】
以上のようにして量子条件を満たす列（実現可能山ｍj）の組み合わせが存在すると（ステップＳ４１１でＹＥＳ）判定されると、処理はステップＳ４１３に進む。処理がステップＳ４１３に進むと、求解部１３４は、ステップＳ４１１で量子条件を満たすと判定された直前にステップＳ４１０で抽出された列（実現可能山ｍj）の組み合わせｒl（＝（ｒ1，ｒ2，・・・，ｒk）を用いて、（２）式、（２１−１）式または（２１−２）式、（２２）式〜（２４）式の制約式を満足する範囲で（４）式の目的関数Ｊの値を最小にする決定変数ｘ［ｊ］を最適解｛ｘ［ｊopt］｝として導出するための処理を実行する。このとき、求解部１３４は、ステップＳ４０５で導出された双対最適値ＶDoptと、ステップＳ４０９またはステップＳ４１２で設定された抽出上限値ｑgapと、ステップＳ４０６で導出された最小公倍数ｄlcmとに基づいて、（２１−１）式または（２１−２）式を選択し、当該部分問題Ｐ（Ｃq）の目的関数Ｊ（Ｃq）の下限値を定める。
【０１２９】
次に、ステップＳ４１４において、求解部１３４は、ステップＳ４１３で最適解｛ｘ［ｊopt］｝が導出されたか否かを判定する。この判定の結果、最適解｛ｘ［ｊopt］｝が導出されなかった場合（ステップＳ４１４でＮＯの場合）、処理はステップＳ４１２に進む。処理がステップＳ４１２に進むと、求解部１３４は、抽出上限値ｑgapを大きくする。そして、処理はステップＳ４１０に戻り、最適解｛ｘ［ｊopt］｝が導出されまで、ステップＳ４１０〜Ｓ４１４の処理が繰り返し実行される。
以上のようにして最適解｛ｘ［ｊopt］｝が導出された（ステップＳ４１４でＹＥＳ）と判定されると、処理はステップＳ４１５に進む。処理がステップＳ４１５に進むと、出力部１４０は、ステップＳ４１３で導出された最適解｛ｘ［ｊopt］｝を示す情報を山分け計画の情報として出力する。これにより、図４のフローチャートによる処理が終了する。
【０１３０】
＜まとめ＞
以上のように本実施形態では、ステップＳ４０７で、原問題計算用列群ＣTHに含まれる列（実現可能山ｍj）のそれぞれの列主双対ギャップｚ［ｊ］に、双対最適解ｐopt［ｉ］を既約分数で表記した場合の分母の最小公倍数ｄlcmを掛けた値を、量子化列主双対ギャップｑ［ｊ］として導出する。そして、ステップＳ４０８で、原問題計算用列群ＣTHに含まれる列（実現可能山ｍj）を量子化列主双対ギャップｑ［ｊ］毎に分類する。その後、ステップＳ６０７で、量子化列主双対ギャップｑ［ｊ］の単位で、原問題計算用列群ＣTHにおける選別対象の列（実現可能山ｍj）を拡張しながら、ステップＳ４１０、Ｓ４１２で、量子条件を満たす列（実現可能山ｍj）の組み合わせを探索する。そして、ステップＳ４１３で、量子条件を満たす列（実現可能山ｍj）の組み合わせを用いて、集合分割問題（の部分問題）を解く。したがって、量子条件を満たす実現可能山の組み合わせを厳選してから、ステップＳ４１３で最適解を導出することができ、処理を高速化することができる。また、原問題が整数計画問題であることにより生じる誤差をなくすことができる。
【０１３１】
（第２の実施形態）
次に、第２の実施形態を説明する。第１の実施形態では、公知の列挙法により、全ての列（実現可能山ｍj）を列挙して原問題計算用列群ＣTHに含め、原問題計算用列群ＣTHに対する双対問題Ｄを解くことにより双対最適解ｐopt［ｉ］を導出する場合を例に挙げて説明した。これに対し本実施形態では、原問題Ｐを求解するために必要な列群（原問題Ｐの最適解を構成する可能性のある列群）だけを抽出する。このように本実施形態と第１の実施形態とは、列（実現可能山ｍj）の抽出に関する処理が主として異なる。従って、本実施形態の説明において、第１の実施形態と同一の部分については、図１〜図４に付した符号と同一の符号を付す等して詳細な説明を省略する。
【０１３２】
＜概要＞
特許文献２に記載の技術で用いる列生成法では、原問題Ｐを求解するために必要な列群の導出（列生成子問題の求解）と、双対問題Ｄの最適解（暫定双対解ｐ［ｉ］）の導出とを数百回程度繰り返すことにより、暫定双対解を改善しつつ、列（実現可能山ｍj）の抽出を行う。しかしながら、本発明者らは、双対問題Ｄの最適解（暫定双対解ｐ［ｉ］）の導出と、原問題Ｐを求解するために必要な列群の抽出とを数百回程度も繰り返さなくても、以下のようにすれば、双対問題Ｄを求解するために必要な列群を効率的に抽出することを見出した。即ち、列（実現可能山ｍj）の列挙数が指定数Ｌeに達するまで、列（実現可能山ｍj）を選択列挙し、選択列挙数が指定数Ｌeに達すれば、一旦選択列挙を中断し、それまでに列挙された列（実現可能山ｍj）に対する暫定双対解を導出し、導出した暫定双対解ｐ［ｉ］を用いて列主双対ギャップｚ［ｊ］が「０」以下になる列（実現可能山ｍj）のみを残し（精製）、先に中断したところから列挙を再開する。再開後は、前記導出した暫定双対解を用いて、列主双対ギャップｚ［ｊ］が「０」以下になる列（実現可能山ｍj）のみを選択列挙する。このようにして選択列挙される列（実現可能山ｍj）が指定数Ｌeになっていなければ、指定数Ｌeになるまで、列（実現可能山ｍj）の選択列挙を行う。そして、指定数Ｌeに達すれば選択列挙を中断し、先に精製した列（実現可能山ｍj）と選択列挙した列（実現可能山ｍj）とに対する双対問題Ｄを解いて暫定双対解を導出し、導出した暫定双対解ｐ［ｉ］を用いて列主双対ギャップｚ［ｊ］が０以下になる列（実現可能山ｍj）を、それらの列（実現可能山ｍj）から改めて精製する。そして、先に選択列挙を中断したところから、先に導出した暫定双対解ｐ［ｉ］を用いて選択列挙を再開する。このような、列（実現可能山ｍj）の列挙あるいは選択列挙と、列（実現可能山ｍj）の精製とを、列（実現可能山ｍj）の列挙が完了するまで繰り返す。このようにして抽出された列（実現可能山ｍj）に対する双対問題Ｄを解いて双対最適解を導出し、導出した双対最適解を用いて、列主双対ギャップｚ［ｊ］が閾値ＴＨ以下になる列（実現可能山ｍj）を選択列挙する。以上のようにすれば、より効率的に原問題Ｐを求解するために必要な列群（原問題Ｐの最適解を構成する可能性のある列群）を高速に抽出することができる。というのも、本実施形態では、双対問題Ｄの求解と、原問題Ｐを求解するために必要な列群の抽出と、を繰り返すことは前提としておらず、仮に繰り返したとしても数回程度で済むからである。このように言える根拠としては、本実施形態では、従来技術である列生成法のように列生成子問題を解く代わりに、後述する列挙法と組み合わせて列を選択列挙しており、一つの暫定双対解に基づいて多数の列を選択列挙できるためである。そして、このようにして得られた列群に対して、双対最適解を求め、それを使って改めて先ほどとは異なる閾値を使って選択列挙した列群に対して、集合分割問題を解くことにより得られた部分問題の最適解（実現可能山ｍj）を、原問題Ｐの最適解とする。
【０１３３】
＜山分け計画作成装置５００＞
図５は、山分け計画作成装置５００の機能的な構成の一例を示す図である。山分け計画作成装置５００のハードウェアは、第１の実施形態の山分け計画作成装置１００と同じハードウェアで実現することができる。
図５に示すように、山分け計画作成装置５００は、鋼材情報取得部１１０と、双対問題求解部５２０と、選択列挙部５４０と、最適解導出部１３０と、出力部１４０とを有する。
【０１３４】
［鋼材情報取得部１１０、最適解導出部１３０、出力部１４０］
鋼材情報取得部１１０、最適解導出部１３０、出力部１４０は、第１の実施形態で説明したものと同じである。
ただし、最適解導出部１３０（量子化部１３１）は、双対問題求解部１２０により導出される双対最適解ｐopt［ｉ］ではなく、後述するようにして双対問題求解部５２０（双対最適解導出部５２４）により導出される双対最適解ｐopt［ｉ］を用いる。また、最適解導出部１３０（量子化部１３１、分類部１３２）は、双対問題求解部１２０により得られた原問題計算用列群ＣTHではなく、後述するようにして選択列挙部５４０により得られた原問題計算用列群ＣTHを用いる。また、（１３）式のＭjは、選択列挙部５４０で抽出された実現可能山ｍjになる。
【０１３５】
［双対問題求解部５２０］
双対問題求解部５２０は、列主双対ギャップｚ［ｊ］が「０」以下になる列（実現可能山ｍj）を列挙し、列挙した列（実現可能山ｍj）に対する暫定双対解を導出することを繰り返して双対最適解を導出する。
【０１３６】
全ての部分集合（列（実現可能山ｍj））を対象とすることなく双対問題の最適解（双対最適解）を求めるための方法を考える上で重要な事実は、『双対最適解を決定する部分集合（列（実現可能山ｍj））は、（８−１）式で表される列主双対ギャップｚ［ｊ］が「０」（ｚ［ｊ］＝０）となる列（実現可能山ｍj）のみである』ということである。つまり、列主双対ギャップｚ［ｊ］が「０」以下になる列群Ｃ（∋ｍj）が、山分け計画の作成対象となる全ての鋼材ｉ（∈Ｎ）を包含し、（８−１）式で表される列主双対ギャップｚ［ｊ］が「０」（ｚ［ｊ］＝０）以下となる列（実現可能山ｍj）があれば、そうでない列（実現可能山ｍj）がなくとも、双対最適解は影響を受けない。従って、列主双対ギャップｚ［ｊ］が「０」以下となる列群を列挙できれば双対最適解は計算可能である。しかしながら、或る列（実現可能山ｍj）の列主双対ギャップｚ［ｊ］が「０」以下であるか否かを判定するには、双対最適解ｐopt［ｉ］が必要となる。従って、列主双対ギャップｚ［ｊ］が「０」以下になる（と思われる）列群Ｃの選択列挙と、当該列群Ｃに対する暫定双対解の導出と、その暫定双対解を用いた列群Ｃの精製とを、列挙数が一定数を超えるごとに繰り返す処理を行うことが必要となる。この処理において重要なのが、列挙数を、計算可能な許容範囲内に留め、繰り返しが進むに伴い、暫定双対解が真値（双対最適解）へ収束することを保証することである。そこで、本実施形態では、暫定双対解が更新される毎に、それに見合った列主双対ギャップｚ［ｊ］が「０」以下になる列群Ｃのみをそれまでに選択列挙された列群から精製する。これに対し、通常の列生成法では、生成された列を除去することはない。そして、暫定双対解を得たときの双対問題Ｄの目的関数の値が前回の計算値より悪化しないようにするために、前述した繰り返し処理において、列主双対ギャップｚ［ｊ］が「０」以下になる列群Ｃの要素を残した上で、列（実現可能山ｍj）の再選択列挙を行う。以下の説明では、列群Ｃを、必要に応じて、双対問題計算用列群Ｃと称する。
以下、双対問題求解部５２０が有する機能の一例を説明する。なお、上記の様に、計算対象となる列を制限する必要があるのは、総列数が数千万以上の規模を持ち、そのままでは計算が困難な場合で、総列数が数百万規模程度までの問題規模であれば、このような抽出処理を行う必要はない。
【０１３７】
[[暫定選択列挙部５２１]]
暫定選択列挙部５２１は、鋼材情報取得部１１０により取得された鋼材情報と、列主双対ギャップｚ［ｊ］に対する閾値ＴＨ1（＝０）と、列（実現可能山ｍj）の列挙数の上限値である指定数Ｌeとを入力する。暫定選択列挙部５２１は、これらの情報に基づいて、列（実現可能山ｍj）の列挙と、暫定双対解ｐ［ｉ］の導出と、列双対ギャップの導出と、双対問題計算用列群Ｃに含める列（実現可能山ｍj）の抽出とを行う。本実施形態でも、第１の実施形態と同様に、、特許文献１に記載の方法で列（実現可能山ｍj）を列挙する方法を例に挙げて説明する。特許文献１に記載の方法の概要は、図２を参照しながら説明した通りである。
【０１３８】
ただし、暫定選択列挙部５２１は、全ての列（実現可能山ｍj）を列挙するのではなく、列挙の途中で、列挙した列（実現可能山ｍj）の上に鋼材ｉを積んでも、当該鋼材ｉを積むことにより得られる列（実現可能山ｍj ）に対する列主双対ギャップｚ［ｊ］が閾値ＴＨ1（＝０）以下になる可能性があるか否かを判定する。暫定選択列挙部５２１は、このようにして列主双対ギャップｚ［ｊ］が閾値ＴＨ1（＝０）以下になる可能性がない実現可能山ｍjの列挙を省略する（枝を作成しない）。本実施形態では、暫定選択列挙部５２１は、特許文献１に記載の手法を用いて列（実現可能山ｍj）を列挙する。従って、暫定選択列挙部５２１は、分枝過程の枝において、分枝が進んでも、列主双対ギャップｚ［ｊ］が閾値ＴＨ1（＝０）以下になる可能性がない場合、そのような枝を作成しない。
【０１３９】
分枝が進んでも以下の（２５）式を満たす可能性がないことは、列挙した列（実現可能山ｍj）に対して上積み可能な鋼材ｉの上積みをしても、以下の（２６）式が維持されることが示されればよい。尚、（２５）式において、列主双対ギャップｚ［ｊ］は、後述する暫定双対解導出部５２２により導出された最新の暫定双対解ｐ［ｉ］を用いて導出される。
【０１４０】
【数２５】
2020107209.tif 000027
【０１４１】
（２６）式の左辺の列コストｃjは、列（実現可能山ｍj）に対する原問題Ｐの評価値であり、本実施形態では、（４−１）式で表される。（４−１）式の右辺第１項は、山数ｃ1jであるので、鋼材ｉの上積みにより列コストｃjは増加しない。一方、（４−１）式の右辺第２項は、逆転対数ｃ2jに重み係数ｋ2を掛けたものである。従って、（４−１）式の右辺の各項のうち、実現可能山ｍjへの上積み（分岐）によって評価値（列コストｃj）の値が大きくなる要因となる項は、（４−１）式の右辺第２項のみである。また、実現可能山ｍjへの上積み（分岐）により、評価値（列コストｃj）が小さくなることはない。
【０１４２】
一方、（２６）式の右辺は、第１項（Σｐ［ｉ］・ｍj［ｉ］）が、鋼材の上積みによる増加項（値が大きくなる項）となる。この項も、鋼材ｉが上積みされる毎に対応する双対変数ｐ［ｉ］の分だけ単調増加することになる（なぜならば双対変数ｐ［ｉ］は非負であるからである）。
従って、分枝過程における実現可能山（鋼材部分集合）Ｓjを次回の分枝対象として残すべきか否かは、以下のようにして表すことができる。即ち、実現可能山Ｓjに上積み可能な鋼材Ｕ（Ｓj）を当該実現可能山Ｓjに上積みすることにより構築可能な実現可能山Ｓjpの集合ＳＪＰの双対変数ｐ［ｉ］の和の最大値がｃj−ＴＨ1を超えなければ、当該実現可能山Ｓjを分岐対象から排除できる。この条件は、以下の（２７−１）式のように表すことができる。
ここで、（２７−１）式の右辺は、実現可能山Ｓjに上積みすることにより構築可能な実現可能山の集合ＳＪＰの中で、双対問題の評価が最も良い値（双対最適値が最大値）であることを意味している。これは、実現可能山Ｓjの双対最適値に、実現可能山Ｓjに上積み可能な鋼材集合Ｕ（Ｓj）に属する鋼材ｉの中から、暫定双対解ｐ［ｉ］が大きい順に、山高さ制限の許容内で、暫定双対解ｐ［ｉ］を加えた値である。
【０１４３】
【数２６】
2020107209.tif 000028
【０１４４】
ただし、（２７−１）式に示す条件は十分条件である。（２７−１）式に示す条件が十分条件となるのは、（２７−１）式の左辺ｃj（＝ｋ1＋ｋ2・ｃ2j）について、鋼材ｉの上積みにより（４−１）式の右辺第２項の値（即ち、ｃj）が大きくなる効果を無視しているからである。
【０１４５】
従って、列挙された列（実現可能山ｍj）の上に鋼材ｉを積んでも、当該鋼材ｉを積むことにより得られる列（実現可能山ｍj）に対する列主双対ギャップｚ［ｊ］が閾値ＴＨ1以下になる可能性があるか否かをより厳密に（必要十分条件として）判定するには、実現可能山Ｓjに鋼材ｉを上積みすることにより構築可能な実現可能山Ｓjp毎に、上積みによる逆転対数ｃ2j（仮置き数）の増加分の影響も考慮する必要がある。
【０１４６】
そして、（２７−１）式の左辺ｃjを、実現可能山Ｓjに対し鋼材ｉの上積みにより構築可能な実現可能山Ｓjp毎の列コストｃjp（当該集合Ｓjpに対する評価値）とする。このような判定に時間を要することを許容できない場合には、実現可能山Ｓjの分枝対象からの排除可否をより簡単に判断するため、以下の（２７−２）式を用いて、実現可能山Ｓjの分枝対象からの排除可否を判定することも可能である。
【０１４７】
【数２７】
2020107209.tif 000029
【０１４８】
（２７−２）式を用いて、実現可能山Ｓjの分岐対象からの排除可否を判定する方法では、実現可能山Ｓjに鋼材ｉを上積みしてできる実現可能山Ｓjpの高さ制限を考慮していない。従って、（２７−２）式の右辺の値を実際よりも大きめに見積もる場合がある。従って、（２７−１）式を適用する場合よりも、（２５）式の条件を満たす見込みのない実現可能山Ｓjからの分枝を行う可能性はあるが、実現可能山ｍjの列挙漏れの心配はない。
【０１４９】
上記の判定方法で、列挙された列（実現可能山ｍj）の上に鋼材ｉを積んでも、当該鋼材ｉを積むことにより得られる列（実現可能山ｍj）に対する列主双対ギャップｚ［ｊ］が閾値ＴＨ1以下になる可能性がないと判断された場合、暫定選択列挙部５２１は、当該列（実現可能山ｍj）の最上段のノード（鋼材）以降の分枝を行わない（このことは、後述する図６−１のステップＳ６１５において、積段数Ｓ＋１における列（実現可能山ｍj）の集合ＢS+1の要素に、鋼材ｉPrを付加した新しい実現可能山ＳjPrを含めないことに対応する）。
【０１５０】
また、暫定選択列挙部５２１は、後述する暫定双対解導出部５２２により導出された最新の暫定双対解ｐ［ｉ］を用いて、（２５）式に示すように、新たに列挙した列（実現可能山ｍj）に対する列主双対ギャップｚ［ｊ］が閾値ＴＨ1（＝０）以下であるか否かを判定する。新たに列挙した列（実現可能山ｍj）に対する列主双対ギャップｚ［ｊ］が閾値ＴＨ1（＝０）以下である場合、暫定選択列挙部５２１は、当該列（実現可能山ｍj）を双対問題計算用列群Ｃに含める。
【０１５１】
暫定選択列挙部５２１は、双対問題計算用列群Ｃに含まれる列（実現可能山ｍj）の数が指定数Ｌeになると、以上の列（実現可能山ｍj）を列挙する処理を一旦打ち切り、その打ち切った位置を記憶する。本実施形態では、暫定選択列挙部５２１は、１回目の列（実現可能山ｍj）の列挙に際しては、列（実現可能山ｍj）の最下段に鋼材を配置することにより、列（実現可能山ｍj）を列挙する。
【０１５２】
その後、後述するように精製部５２３により、指定数Ｌeの数の列（実現可能山ｍj）から、列主双対ギャップｚ［ｊ］が「０」になる列（実現可能山ｍj）のみが抽出（選択）された場合（２回目以降の列（実現可能山ｍj）の列挙に際しては）、暫定選択列挙部５２１は、精製部５２３により精製された列（実現可能山ｍj）Ｃeの数と、暫定選択列挙部５２１が新たに抽出した列（実現可能山ｍj）の数との和が指定数Ｌeになるまで、前述した処理により列（実現可能山ｍj）の再選択列挙を行う。この際、暫定選択列挙部５２１は、前回の処理（列（実現可能山ｍj）の列挙）において処理を打ち切った位置の次の位置（次に列挙すべき列（実現可能山ｍj））から列（実現可能山ｍj）の再選択列挙を開始する。
【０１５３】
例えば、図２において、位置２０１まで枝を作成した時点（２段目（i1,in）のノードに３段目の枝を分枝する過程）で、暫定双対解の導出対象となる列（実現可能山ｍj）の数が、指定数Ｌeになったとする。この場合、暫定選択列挙部５２１は、例えば、最下段の対象鋼材ｉ１→二段目の対象鋼材ｉｎ→三段目の対象鋼材ｉnが得られた時点（２段目（i1,in）のノードの分枝が完了した時点）で処理を打ち切る。そして、精製部５２３による精製処理が終了したら、暫定選択列挙部５２１は、２段目（i1,in）の次のノードの分枝から列挙を再開する。尚、列挙の中断および再開する箇所は、特に限定されない。
【０１５４】
１回目の列（実現可能山ｍj）の列挙においては、後述する暫定双対解導出部５２２による暫定双対解の導出が行われていない。そこで、暫定選択列挙部５２１は、１回目の列（実現可能山ｍj）の列挙においては、列（実現可能山ｍj）に対する列主双対ギャップｚ［ｊ］の導出と、当該列主双対ギャップｚ［ｊ］と閾値ＴＨ1（＝０）との比較とを行わない。このため、暫定選択列挙部５２１は、１回目の列（実現可能山ｍj）の列挙においては、指定数Ｌeになるまで列（実現可能山ｍj）を列挙した場合、当該指定数Ｌeの数の列（実現可能山ｍj）を双対問題計算用列群Ｃに含める。一方、１回目の列（実現可能山ｍj）の列挙において、指定数Ｌeになるまで、列（実現可能山ｍj）を列挙せずとも、列挙が完了した場合、暫定選択列挙部５２１は、（指定数Ｌe未満の）列挙できた列（実現可能山ｍj）を双対問題計算用列群Ｃとする。
【０１５５】
また、暫定選択列挙部５２１は、２回目以降の列（実現可能山ｍj）の列挙においては、後述する精製部５２３により精製された列（実現可能山ｍj）Ｃeの数と、暫定選択列挙部５２１が選択列挙した列（実現可能山ｍj）の数との和が指定数Ｌeになるまで列（実現可能山ｍj）を選択列挙した場合、精製部５２３により精製された列（実現可能山ｍj）Ｃeと、暫定選択列挙部５２１が列挙再開後、選択列挙した列（実現可能山ｍj）即ち、列主双対ギャップｚ［ｊ］が閾値ＴＨ1（＝０）以下になる列（実現可能山ｍj）を、双対問題計算用列群Ｃに含める。
２回目以降の列（実現可能山ｍj）の選択列挙においては、１回目の列挙とは異なり、後述する暫定双対解導出部５２２により既に導出された暫定双対解がある。したがって、暫定選択列挙部５２１は、それを利用して（１３）式により列主双対ギャップｚ［ｊ］を導出し、列主双対ギャップｚ［ｊ］が「０」以下となる列（実現可能山ｍj）を選択的に列挙する。
【０１５６】
[[暫定双対解導出部５２２]]
前述したように、暫定選択列挙部５２１により指定数Ｌeに達するまでに列挙が完了した場合に、その時点で暫定選択列挙部５２１により列挙された列（実現可能山ｍj）が双対問題計算用列群Ｃとなる。また、後述する精製部５２３により精製された列（実現可能山ｍj）Ｃeの数と、暫定選択列挙部５２１により選択列挙された列（実現可能山ｍj）の数との和が指定数Ｌeになるまで暫定選択列挙部５２１により再び選択列挙された列主双対ギャップｚ［ｊ］が閾値ＴＨ1（＝０）以下になる列（実現可能山ｍj）が、双対問題計算用列群Ｃとなる。暫定双対解導出部５２２は、例えば、CPLEX（登録商標）等の公知のソルバーを用いて線形計画法による最適化計算を行うことにより、双対問題計算用列群Ｃに対し、（８）式の制約式を満足する範囲で（１０）式の目的関数Ｊの値を最大にする双対変数ｐ［ｉ］を暫定双対解ｐ［ｉ］として導出する。このように本実施形態では、暫定双対解ｐ［ｉ］は、暫定双対解導出部５２２により導出される双対解（所定の条件を満たしていない段階（本実施形態では、列挙法による列の列挙が完了していない段階）で導出される双対解（（８）式の制約式を満足する範囲で（１０）式の目的関数Ｊの値を最大にする双対変数ｐ［ｉ］））である。
【０１５７】
[[精製部５２３]]
精製部５２３は、暫定双対解導出部５２２により導出された最新の暫定双対解ｐ［ｉ］を用いて、暫定選択列挙部５２１により得られた双対問題計算用列群Ｃに含まれる列（実現可能山ｍj）のそれぞれについて列主双対ギャップｚ［ｊ］を導出する。精製部５２３は、暫定選択列挙部５２１により得られた双対問題計算用列群Ｃに含まれる列（実現可能山ｍj）のうち、列主双対ギャップｚ［ｊ］が「０」以下になる列（実現可能山ｍj）Ｃeを抽出（選択）し、それ以外の列を削除（精製）する。
【０１５８】
[[双対最適解導出部５２４]]
暫定選択列挙部５２１による列（実現可能山ｍj）の列挙が完了した時点（処理対象の積段数Ｓ（Ｓは最下段を１とする積段数である）の実現可能山ｍjが空集合φになった時点）における双対問題計算用列群Ｃに対し、（８）式の制約式を満足する範囲で（１０）式の目的関数Ｊの値を最大にする双対変数ｐ［ｉ］を双対最適解ｐopt［ｉ］として導出する。また、双対最適解導出部５２４は、双対最適解ｐopt［ｉ］が得られたときの（１０）式の目的関数Ｊの値を双対最適値ＶDoptとして導出する。このように本実施形態では、双対最適解ｐopt［ｉ］は、双対最適解導出部５２４により導出される双対解（所定の条件を満たした段階（本実施形態では、列挙法による列の列挙が完了した段階）で導出される双対解（（８）式の制約式を満足する範囲で（１０）式の目的関数Ｊの値を最大にする双対変数ｐ［ｉ］））である。
【０１５９】
以上のように本実施形態では、原問題Ｐの列（実現可能山ｍj）の数が数千万から数億となるような大規模な双対問題Ｄを求解する場合に、双対問題求解部５２０は、小規模の部分問題（部分問題の規模は、列挙上限数である指定数Ｌeで制限される）を繰り返し解く（列の選択列挙→選択列挙された列に対する暫定双対解ｐ［ｉ］の導出→クリティカルな列の抽出（精製）→列の再選択列挙を繰り返す）ことにより、双対最適解ｐopt［ｉ］を得る。この手法は、列群を列挙上限数である指定数Ｌeのサイズに分割して、双対最適解を求解する分割解法のように見える。しかしながら、この手法では、暫定双対解ｐ［ｉ］に対する列主双対ギャップｚ［ｊ］が「０」以下になる列群を残して、それに付け足す列（実現可能山ｍj）を特許文献１に記載のような手法により列挙するので、問題の全体最適性が損なわれることはない。なお、ここでのクリティカルな列とは、列主双対ギャップｚ［ｊ］が「０」以下になる列を指す。
【０１６０】
[[選択列挙部５４０]]
選択列挙部５４０は、鋼材情報取得部１１０により取得された鋼材情報と、列主双対ギャップｚ［ｊ］に対する閾値ＴＨ2（＞０）を入力する。選択列挙部５４０は、暫定選択列挙部５２１同様、列（実現可能山ｍj）を選択列挙する。ただし、暫定選択列挙部５２１との違いは、暫定選択列挙部５２１での抽出条件が、列主双対ギャップｚ［ｊ］が閾値ＴＨ1（＝０）以下になる列（実現可能山ｍj）であるのに対し、選択列挙部５４０での抽出条件は、列主双対ギャップｚ［ｊ］が閾値ＴＨ1を上回る閾値ＴＨ2（＞０）以下になる列（実現可能山ｍj）である（（１３）式および（１４）式のＴＨ1をＴＨ2に置き換える。閾値ＴＨ2は、後述する（１６）式のように設定される。また、暫定選択列挙部５２１では、列挙数が指定数Ｌeになると列挙を中断したが、選択列挙部５４０では、そのような中断はなく、一気通貫で選択列挙する。本実施形態では、特許文献１に記載の方法で列（実現可能山ｍj）を列挙する方法を例に挙げて説明する。特許文献１に記載の方法は、[[暫定選択列挙部５２１]]の項で説明した通りである。
【０１６１】
また、選択判定は、新たな列（実現可能山ｍj）が列挙される度に以下の処理を行う。即ち、双対問題求解部５２０（双対最適解導出部５２４）により導出された双対最適解ｐopt［ｉ］および双対最適値ＶDoptを用いて、新たに列挙された列（実現可能山ｍj）に対する列主双対ギャップｚ［ｊ］が閾値ＴＨ2以下であるか否かを判定する。整数（０−１）計画問題である原問題Ｐを線形緩和した線形主問題に対する双対問題Ｄの最適値である双対最適値ＶDoptは、通常小数値を持つが、原問題Ｐの最適値は、目的関数の係数を整数値とすれば整数値となるので、原問題Ｐが最小化問題の場合、その値は必ずceil（ＶDopt）以上となる（ceil（ｘ）は、天井関数（実数ｘに対してｘ以上の最小の整数を対応付ける関数）である）。従って、閾値ＴＨ2は、ceil（ＶDopt）−ＶDopt以上とする。本実施形態では、以下の（２８）式のように閾値ＴＨ2を定める。
【０１６２】
【数２８】
2020107209.tif 000030
【０１６３】
ここで、ｎは、０以上の整数であり、例えば、２または３とする。これは、主双対ギャップが３以上となることが、山分け問題においては経験的に稀であることによる。選択列挙部５４０のその他の処理は、暫定選択列挙部５２１と同じであるので、その詳細な説明を省略する。選択列挙部５４０は、列（実現可能山ｍj）の列挙が完了した時点（処理対象の積段数Ｓの実現可能山ｍjが空集合φになった時点）における原問題計算用列群ＣTHを出力する。
【０１６４】
＜フローチャート＞
次に、図６−１〜図６−２のフローチャートを参照しながら、本実施形態の山分け計画作成装置５００による山分け計画作成方法の一例を説明する。図６−１および図６−２のフローチャートは、図４のステップＳ４０３〜Ｓ４０５に代えて行われるものである。本実施形態の山分け計画作成装置５００による山分け計画作成方法のその他の部分は、図４に示したフローチャートと同じである。
まず、ステップＳ６０１において、暫定選択列挙部５２１は、積段数Ｓの値を「１」、山変数ｋの値を「０」に設定する。積段数Ｓは、最下段を１とする変数である。山変数ｋは、積段数Ｓにおける列（実現可能山ｍj）の集合ＢSの要素（列（積段数Ｓのノードに対応する実現可能山ｍj））を順番に指定するための変数である。集合ＢSの要素は、積段数（Ｓ−１）の実現可能山の集合ＢS-1の各要素に鋼材を付加（上載せ）することにより新たな実現可能山が生成され、その生成順に当該実現可能山に対する山変数ｋが「１」から昇順に正の整数値として付与される。
【０１６５】
次に、ステップＳ６０２において、暫定選択列挙部５２１は、積段数Ｓ（＝１）における列（実現可能山ｍj）の集合ＢSを設定する（図６−１では、列（実現可能山ｍj）の集合ＢSを山集合と表記している）。暫定選択列挙部５２１は、鋼材情報に含まれる鋼材集合を｛１，２，・・・，ｎ｝とすると、ＢS(S=1)＝｛｛１｝，｛２｝，・・・｛ｎ｝｝とする。即ち、暫定選択列挙部５２１は、鋼材情報に含まれる鋼材が重複なく且つ漏れなく１つずつ各列（実現可能山ｍj）に含まれるように、列（実現可能山ｍj）の集合ＢSを設定する。そして、暫定選択列挙部５２１は、当該列（実現可能山ｍj）を双対問題計算用列群Ｃに含める。
【０１６６】
次に、ステップＳ６０３において、暫定選択列挙部５２１は、現在の積段数Ｓにおける列（実現可能山ｍj）の集合ＢSがφ（空集合）であるか否かを判定する。この判定の結果、現在の積段数Ｓにおける列（実現可能山ｍj）の集合ＢSがφ（空集合）である場合（ステップＳ６０６でＹＥＳの場合）、処理は後述するステップＳ６２１に進む。
一方、現在の積段数Ｓにおける列（実現可能山ｍj）の集合ＢSがφ（空集合）でない場合（ステップＳ６０３でＮＯの場合）、処理はステップＳ６０４に進む。１回目の列挙が終わった段階では、現在の積段数Ｓ（Ｓ＝１、最下段）における列（実現可能山ｍj）の集合ＢSがφ（空集合）ではないので、現在の積段数Ｓにおける列（実現可能山ｍj）の集合ＢSがφ（空集合）ではない（ステップＳ６０３でＮＯ）と判定される。処理がステップＳ６０４に進むと、暫定選択列挙部５２１は、山変数ｋの値に「１」を加算する。
【０１６７】
次に、ステップＳ６０５において、暫定選択列挙部５２１は、山変数ｋに対応する列（実現可能山ｍj）が、現在の積段数Ｓにおける列（実現可能山ｍj）の集合ＢSにあるか否かを判定する。即ち、暫定選択列挙部５２１は、現在の積段数Ｓにおける列（実現可能山ｍj）の集合ＢSの要素（列（実現可能山ｍj））を全て選択したか否かを判定する。この判定の結果、山変数ｋに対応する列（実現可能山ｍj）が、現在の積段数Ｓにおける列（実現可能山ｍj）の集合ＢSにない場合（ステップＳ６０５でＮＯの場合）、処理はステップＳ６０６に進む。処理がステップＳ６０６に進むと、暫定選択列挙部５２１は、積段数Ｓの値に「１」を加算すると共に、山変数ｋの値を「０」に設定する。そして、処理は前述したステップＳ６０３に進む。これにより、次の積段数Ｓにおける処理が開始される。
【０１６８】
一方、山変数ｋに対応する列（実現可能山ｍj）が、現在の積段数Ｓにおける列（実現可能山ｍj）の集合ＢSにある場合（ステップＳ６０５でＹＥＳの場合）、処理はステップＳ６０７に進む。処理がステップＳ６０７に進むと、暫定選択列挙部５２１は、現在の積段数Ｓにおける列（実現可能山ｍj）の集合ＢSから、山変数ｋに対応する列（実現可能山ｍj）を選択する。図６−１の説明では、この列（実現可能山ｍj）を実現可能山Ｓjkと表記する。また、この実現可能山Ｓjkを構成する要素の集合（鋼材集合）を｛ｉk1，ｉk2，・・・ｉkS｝とする。
次に、ステップＳ６０８において、暫定選択列挙部５２１は、ステップＳ６０７で選択した実現可能山Ｓjkから分枝可能な鋼材集合Ｕ（Ｓjk）を、ステップＳ４０３で導出された各鋼材ｉに対する上載せ可能集合Ｕ（ｉ）を使って、Ｕ（Ｓjk）＝Ｕ（ｉk1）∩Ｕ（ｉk2）・・・∩Ｕ（ｉkS）として導出する。図６−１の説明では、このようにして導出される鋼材集合Ｕ（Ｓjk）を、｛ｉP1，ｉP2，・・・ｉPn｝とする。
【０１６９】
次に、ステップＳ６０９において、暫定選択列挙部５２１は、ステップＳ６０８で導出した鋼材集合Ｕ（Ｓjk）の要素（鋼材（ｉP1，ｉ2，・・・ｉPn））を全て選択したか否かを判定する。この判定の結果、ステップＳ６０８で導出した鋼材集合Ｕ（Ｓjk）の要素を全て選択した場合（ステップＳ６０９でＹＥＳの場合）、処理はステップＳ６０４に戻る。そして、現在の積段数Ｓにおける列（実現可能山ｍj）の集合ＢSに含まれる次の要素（列（実現可能山ｍj））に対する処理が開始する。
一方、ステップＳ６０８で導出した鋼材集合Ｕ（Ｓjk）の要素を全て選択していない場合（ステップＳ６０９でＮＯの場合）、処理はステップＳ６１０に進む。処理がステップＳ６１０に進むと、暫定選択列挙部５２１は、ステップＳ６０８で導出した鋼材集合Ｕ（Ｓjk）の要素（鋼材（ｉP1，ｉP2，・・・，ｉPn））のうち未選択の要素を１つ選択する。図６−１の説明では、ここで選択される要素（鋼材）をｉPrとする。
【０１７０】
次に、ステップＳ６１１において、暫定選択列挙部５２１は、ステップＳ６１０で選択した要素（鋼材）ｉPrを、ステップＳ６０７で選択した実現可能山Ｓjkの最後の要素（最上段の位置に対応する要素）に加え、新しい実現可能山ＳjPrを作成する。この実現可能山ＳjPrを構成する要素の集合（鋼材集合）は｛ｉk1，ｉk2，・・・ｉkS，ｉPr｝になる。
次に、ステップＳ６１２において、暫定選択列挙部５２１は、ステップＳ６１１で作成した実現可能山ＳjPrが高さ制限を満たす（上限値以下）か否かを判定する。この判定の結果、ステップＳ６１１で作成した実現可能山ＳjPrが高さ制限を満たさない場合（ステップＳ６１２でＮＯの場合）、処理はステップＳ６０９に戻る。そして、ステップＳ６０８で導出した鋼材集合Ｕ（Ｓjk）の次の要素に対する処理が開始する。
【０１７１】
一方、ステップＳ６１１で作成した実現可能山ＳjPrが高さ制限を満たす場合（ステップＳ６１２でＹＥＳの場合）、処理はステップＳ６１３に進む。処理がステップＳ６１３に進むと、暫定選択列挙部５２１は、ステップＳ６１１で作成した実現可能山ＳjPrに対する列主双対ギャップｚ［ｊ］を導出する。このとき、後述するステップＳ６１９で導出された最新の暫定双対解ｐ［ｉ］を用いる。このように、現在の双対問題計算用列群Ｃに含まれる（抽出済みの）列（実現可能山Ｓj）を対象とする双対問題Ｐの暫定的な最適解である暫定双対解ｐ［ｉ］を用いて列主双対ギャップｚ［ｊ］が導出される。ただし、ステップＳ６１９に到達する前の最初の処理では、暫定双対解ｐ［ｉ］がないので、ステップＳ６１３の処理は省略される。
次に、ステップＳ６１４において、暫定選択列挙部５２１は、（２７−１）式または（２７−２）式を用いて、ステップＳ６１１で作成した実現可能山ＳjPrを分枝対象に含めるか否かを判定する。この判定の結果、ステップＳ６１４で作成した実現可能山ＳjPrを分枝対象に含めない場合（ステップＳ６１４でＮＯの場合）、処理はステップＳ６０９に戻る。そして、ステップＳ６０８で導出した鋼材集合Ｕ（Ｓjk）の次の要素に対する処理が開始する。ここでも、ステップＳ６１９に到達する前の最初の処理では、暫定双対解ｐ［ｉ］がないので、ステップＳ６１４の判定処理は省略され、実現可能山ＳjPrを無条件に分枝対象ＢS+1に含める。
【０１７２】
一方、ステップＳ６１１で作成した実現可能山ＳjPrを分枝対象に含める場合（ステップＳ６１４でＹＥＳの場合）、処理はステップＳ６１５に進む。処理がステップＳ６１５に進むと、暫定選択列挙部５２１は、積段数Ｓ＋１における列（実現可能山ｍj）の集合ＢS+1の要素に、ステップＳ６１１で作成した実現可能山ＳjPrを含める。これにより、（２７−１）式または（２７−２）式を満たす実現可能山ＳjPrが、次の積段数Ｓ＋１（次のステップＳ６０６以降）の処理において分枝の対象になる。ステップＳ６１５において、積段数Ｓ＋１における列（実現可能山ｍj）の集合ＢS+1の要素に含められない実現可能山ＳjPrは、分枝の対象にならない。
次に、ステップＳ６１６において、暫定選択列挙部５２１は、ステップＳ６１３で導出した列主双対ギャップｚ［ｊ］が閾値ＴＨ1（＝０）以下であるか否かを判定する。この判定の結果、ステップＳ６１３で導出した列主双対ギャップｚ［ｊ］が閾値ＴＨ1（＝０）以下でない場合（ステップＳ６１６でＮＯの場合）、処理はステップＳ６１２に戻る。そして、ステップＳ６０８で導出した鋼材集合Ｕ（Ｓjk）の次の要素に対する処理が開始する。
【０１７３】
一方、ステップＳ６１３で導出した列主双対ギャップｚ［ｊ］が閾値ＴＨ1（＝０）以下である場合（ステップＳ６１６でＹＥＳの場合）、処理はステップＳ６１７に進む。処理がステップＳ６１７に進むと、暫定選択列挙部５２１は、ステップＳ６１１で作成した実現可能山ＳjPrを双対問題計算用列群Ｃに含める。このステップＳ６１６の判定処理も、ステップＳ６１９に到達する前の最初の処理では、暫定双対解ｐ［ｉ］がないので、省略され、実現可能山ＳjPrを無条件に双対問題計算用列群Ｃに含める。
次に、ステップＳ６１８において、暫定選択列挙部５２１は、双対問題計算用列群Ｃに含まれる実現可能山Ｓjの数（｜Ｃ｜）の数が指定数Ｌeを上回るか否かを判定する。この判定の結果、双対問題計算用列群Ｃに含まれる実現可能山Ｓjの数（｜Ｃ｜）の数が指定数Ｌeを上回らない場合（ステップＳ６１８でＮＯの場合）、処理はステップＳ６０９に戻る。そして、ステップＳ６０８で導出した鋼材集合Ｕ（Ｓjk）の次の要素に対する処理が開始する。
【０１７４】
一方、双対問題計算用列群Ｃに含まれる実現可能山Ｓjの数（｜Ｃ｜）の数が指定数Ｌeを上回る場合（ステップＳ６１８でＹＥＳの場合）、処理はステップＳ６１９に進む。処理がステップＳ６１９に進むと、暫定双対解導出部５２２は、現在の双対問題計算用列群Ｃに対し、（８）式の制約式を満足する範囲で（１０）式の目的関数Ｊの値を最大にする双対変数ｐ［ｉ］を暫定双対解ｐ［ｉ］として導出する。
次に、ステップＳ６２０において、精製部５２３は、ステップＳ６１９で導出された暫定双対解ｐ［ｉ］を用いて、現在の双対問題計算用列群Ｃに含まれる列（実現可能山ｍj）のそれぞれについて列主双対ギャップｚ［ｊ］を導出する。精製部５２３は、暫定選択列挙部５２１により得られた双対問題計算用列群Ｃに含まれる列（実現可能山ｍj）のうち、列主双対ギャップｚ［ｊ］が「０」以下になる列（実現可能山ｍj）Ｃeを抽出（選択）し、それ以外の列を削除する。このようにして、精製部５２３は、双対問題計算用列群Ｃを更新する。ここでの精製部５２３による処理により、実現可能山Ｓjの数（｜Ｃ｜）の数が指定数Ｌeから、｜Ｃe｜に削減される。実際の山分け問題での計算例では、例えば、Ｌe＝5,000,000に設定した場合、最初の精製部５２３の処理により5,000,000から｜Ｃe｜は数百程度となり、列挙再開後に、列挙数が再び、指定数Ｌeに達することなく、数百から数千程度の最終列挙数で列挙が完了することが判っている。つまり、本実施形態によれば、列挙数が最初に指定数Ｌeに達した際に算出した暫定双対解ｐ［ｉ］により、列挙法と組み合わせることにより、実質最初に算出した暫定双対解ｐ［ｉ］により、双対最適解ｐopt［ｉ］を得るために必要な列群を求めることができており、列生成法に比べ極めて効率の良い手法といえる。
【０１７５】
前述したようにステップＳ６０３において、現在の積段数Ｓにおける列（実現可能山ｍj）の集合ＢSがφ（空集合）であると判定された場合（ステップＳ６０３でＹＥＳの場合）、処理はステップＳ６２１に進む。処理がステップＳ６２１に進むと、双対最適解導出部５２４は、（最新の）双対問題計算用列群Ｃに対し、（８）式の制約式を満足する範囲で（１０）式の目的関数Ｊの値を最大にする双対変数ｐ［ｉ］を双対最適解ｐopt［ｉ］として導出する。また、双対最適解導出部５２４は、双対最適解ｐopt［ｉ］が得られたときの（１０）式の目的関数Ｊの値を双対最適値ＶDoptとして導出する。
【０１７６】
そして、処理は図６−２のステップＳ６２２に進む。ステップＳ６２２〜Ｓ６３８の処理は、選択列挙部５４０が、ステップＳ６１９で導出される暫定双対解ｐ［ｉ］に代えてステップＳ６２１により導出された双対最適解ｐopt［ｉ］を用いると共に、閾値ＴＨ1（＝０）に代えて閾値ＴＨ2（＞０）を用いて、図６−１のステップＳ６０１〜Ｓ６１７の処理と同様の処理を実行することにより実現される。また、双対問題計算用列群Ｃを原問題計算用列群ＣTHとする。したがって、ここでは、これらの処理の詳細な説明を省略する。ただし、ステップＳ６２２の段階で双対最適解ｐopt［ｉ］が得られているので、Ｓ＝１の段階から、双対最適解ｐopt［ｉ］を使い、列主双対ギャップｚ［ｊ］を求め、原問題計算用列群ＣTHに含めるべきかを判定する。
【０１７７】
ステップＳ６２４において、現在の積段数Ｓにおける列（実現可能山ｍj）の集合ＢSがφ（空集合）であると判定された場合（ステップＳ６２４でＹＥＳの場合）、処理は、図４のステップＳ４０６に進む。この場合、ステップＳ４０４で得られた原問題計算用列群ＣTHに代えて、ステップＳ６２４において、現在の積段数Ｓにおける列（実現可能山ｍj）の集合ＢSがφ（空集合）であると判定された時点における原問題計算用列群ＣTHを用いる。
【０１７８】
＜まとめ＞
以上のように本実施形態では、ステップＳ６０７、Ｓ６０８で公知の列挙法により、指定数Ｌeまで列（実現可能山ｍj）を列挙し、ステップＳ６１３で現在の双対問題計算用列群Ｃに含まれる列（実現可能山ｍj）のそれぞれについて列主双対ギャップｚ［ｊ］を、前回のステップＳ６１９で導出された暫定双対解ｐ［ｉ］を用いて導出し、ステップＳ６１７で双対問題計算用列群Ｃに含まれる列（実現可能山ｍj）のうち、列主双対ギャップｚ［ｊ］が「０」以下になる列（実現可能山ｍj）Ｃeを精製し、それ以外の列を削除する。そして、以上の列（実現可能山ｍj）Ｃeの選択列挙を再開することを、ステップＳ６０３（およびＳ６０９）で、公知の列挙法による全ての列（実現可能山ｍj）Ｃeの選択列挙が完了すると判定されるまで繰り返す。従って、列主双対ギャップｚ［ｊ］が「０」以下になる列（実現可能山ｍj）Ｃeの抽出の初期の段階で大幅に列（実現可能山ｍj）を削減することができる。そして、列（実現可能山ｍj）Ｃeの選択列挙の再開後は、暫定双対解ｐ［ｉ］を用いて選択列挙されるので実現可能山Ｓjの数（｜Ｃ｜）の数が指定数Ｌeになることが抑制される。従って、前述した繰り返しの計算の回数が少なくなる。よって、従来のように列生成子問題による列の生成とそれまでに生成された列による双対問題の求解との繰り返しを行う場合に比べ、繰り返しの計算を削減することができる。
【０１７９】
（実施例）
次に、実施例を説明する。
本実施例では、以下の計算環境で計算を行った。
プロセッサ：Intel（登録商標）Xeon（登録商標）CPU E5-2687W＠3.1GHz（２プロセッサ）
実装メモリ（RAM）：128GB
OS：Windows7（登録商標） Professional 64ビットオペレーションシステム
最適計算ソフト：ILOG  CPLEX（登録商標） Cplex11.0 Concert25
また、何れの実施例においても鋼材の数を４１〜６０とし、少なくとも１つの鋼材の属性が異なる１７ケースのそれぞれについて山分け計画を作成した。また、（４）式の重み係数ｋ1、ｋ2をそれぞれ５．０、１．０（ｋ1＝５．０、ｋ2＝１．０）とした。
【０１８０】
＜第１の実施例＞
第１の実施例では、第１の実施形態の手法と、特許文献１に記載の手法とを比較する。図７に、第１の実施例における山分け計画の作成結果を示す。
図７において、データ特徴の欄のＩＤは、山分け計画の作成対象となる鋼材群の識別情報である。
ｎは、各鋼材群に含まれる鋼材の数である。
山数は、山分け計画として得られた山の数である。
仮置数は、山立ての際に発生する仮置きの数である。
最適値は、山分け計画の作成対象となる鋼材群に対する目的関数（（４）式）の最適値（本来の最小値）である。実現可能山数は、実現可能山の総数である。
【０１８１】
比較例は、特許文献１に記載の手法による結果であることを示す。発明例１は、第１の実施形態の手法による結果であることを示す。
誤差は、最適値と目的関数値との差の最適値に対する割合を百分率で表記した値（＝｛（最適値−目的関数値）÷最適値｝×１００）である。ここで、目的関数値は、各手法における目的関数（（４）式）の最小値である。比較例におけるＩＤ＝１４、１７の誤差の値が１００（％）になっているのは、集合分割問題の計算を１時間行っても実行可能解が得られなかったことを示す。
時間Ｅは、列（実現可能山ｍj）の列挙（図４のステップＳ４０１〜Ｓ４０４）に要した時間（秒）である。
時間ＳCは、集合分割問題の求解に要した時間（秒）である。
（比較例における）時間Ｔは、総計算時間（時間Ｅ＋時間ＳC）である。
時間Ｄは、双対問題求解部１２０による双対最適解ｐopt［ｉ］の導出、量子化部１３１による量子化列主双対ギャップｑ［ｊ］の導出、および分類部１３２による列（実現可能山ｍj）の分類（図４のステップＳ４０５〜Ｓ４０８）に要した時間（秒）である。
時間ＳNは、第１の実施形態による集合分割解法（図４のステップＳ４０９〜Ｓ４１５）に要した時間（秒）である。
（発明例１における）時間Ｔは、総計算時間（時間Ｅ＋時間Ｄ＋時間ＳN）である。
【０１８２】
図７に示すように、発明例１（第１の実施形態の手法）では、双対問題求解部１２０、量子化部１３１、および分類部１３２による処理が加わるが（時間Ｄを参照）、総計算時間（時間Ｔ）は、比較例の総計算時間（時間Ｔ）の半分以下であり、誤差なく最適解が得られることが分かる。また、時間ＳNと時間ＳCとを比較すると、集合分割問題の求解時間は、発明例１（第１の実施形態の手法）の方が比較例（特許文献１に記載の手法）に比べ圧倒的に早いことがわかる。尚、列（実現可能山ｍj）の列挙法は、比較例も発明例１も同じであるので、比較例および発明例１の時間Ｅは、理論的には同じ時間になるものである。
【０１８３】
＜第２の実施例＞
第２の実施例では、第２の実施形態の手法と、特許文献１に記載の手法とを比較する。図８に、第２の実施例における山分け計画の作成結果を示す。
比較例は、特許文献１に記載の手法による結果であることを示す。発明例２は、第２の実施形態の手法による結果であることを示す。
【０１８４】
時間１は、第２の実施形態の双対問題求解部５２０による双対最適解ｐopt［ｉ］の導出および選択列挙部５４０による原問題計算用列群ＣTHの導出（図４のステップＳ４０１〜Ｓ４０３、図６−１および図６−２のＳ６０１〜Ｓ６３８）に要した時間（秒）である。
時間２は、図６−２のステップＳ６２４でＹＥＳと判定された以降の最適解導出部１３０による処理（ステップＳ４０６〜Ｓ４１５）に要した時間（秒）である。
図８のその他の項目の意味は、第１の実施例で説明した通りである。
データ特徴の実現可能山数の欄でＭ．Ｏと示されているのは、メモリの容量の不足により、実現可能山を列挙できなかったことを示す。尚、ここでは、１時間で計算を打ち切った。
【０１８５】
図８に示す第２の実施例の方が図７に示す第１の実施例よりも問題規模が大きいにもかかわらず、図６−１および図６−２の処理を実行することにより、発明例２（第２の実施形態の手法）では、総計算時間（時間Ｔ）が比較例のの半分以下になり、誤差なく最適解が得られることが分かる。
尚、第１の実施形態では、全ての列（実現可能山ｍj）を列挙するので（ステップＳ４０４を参照）、大規模な問題を解くことができない場合がある。一方、第２の実施形態では、図６−１および図６−２の処理により、原問題Ｐを求解するために必要な列群（原問題Ｐの最適解を構成する可能性のある列群）だけを抽出するので、第１の実施形態では列挙不能な大規模な問題の求解も可能となる。このようなことから、図７に示す第１の実施例では、第１の実施形態の手法でも列挙可能な問題を選定している。一方、図８に示す第２の実施例では、第１の実施例では列挙不能な問題も取り扱っている。
【０１８６】
＜第３の実施例＞
次に、第３の実施例では、（２２）式〜（２４）式の制約式を評価する。図９は、第３の実施例における山分け計画の作成結果を示す。
発明例３は、第２の実施形態に対し、（２２）式〜（２４）式の制約式を制約式に含めない手法による結果であることを示す。即ち、発明例３では、求解部１３４は、（２２）式〜（２４）式を用いずに、（２）式と（２１−１）式または（２１−２）式の制約式を満足する範囲で（４）式の目的関数Ｊの値を最小にする決定変数ｘ［ｊ］を最適解｛ｘ［ｊopt］｝として導出する。
発明例２は、第２の実施形態の手法による結果であることを示す。
【０１８７】
図９に示す各項目の意味は、第１の実施例、第２の実施例で説明した通りである。
（２２）式〜（２４）式の制約式の効果は、時間２（最適解導出部１３０による処理（ステップＳ４０６〜Ｓ４１５）に要する時間）に現れる。図９に示すように、（２２）式〜（２４）式の制約式を用いない発明例３に対し、（２２）式〜（２４）式の制約式を用いる発明例２では、平均で、時間２（最適解導出部１３０による処理（ステップＳ４０６〜Ｓ４１５）に要する時間）が１．５１秒から０．７８秒に短縮され、より一層高速に求解することができることが分かる。
【０１８８】
以上のように、山分け計画を集合分割問題により定式化した際、山分けの対象となる鋼材が多いために全ての実現可能山を列挙できない、あるいは、できたとしても求解に多大な時間を要する様な大規模な問題に対し、実現可能山を全て列挙するのでなく、解の構成要素となり得る実現可能山を適宜列挙し、原問題に対し許容された時間（山分け問題の場合、 鋼材のヤード到着間隔に相当する３〜５分）内に、０−１制約に伴う誤差のない最適解を求解し、それに基づく山分け計画を提供することができる。
【０１８９】
発明例１では、公知の手法により列挙した全ての実現可能山に対する列主双対ギャップＺ［ｊ］を量子化し、当該実現可能山を、量子化した列主双対ギャップｚ［ｊ］毎に分類する。抽出した実現可能山が量子条件を満たすまで、量子化した列主双対ギャップｚ［ｊ］が小さい実現可能山から順に実現可能山を抽出する。このようにして、量子条件を満たす実現可能山のパターンとして１つまたは複数のパターンが得られる。これら１つまたは複数のパターンの１つだけを必ず選択し、且つ、当該パターンに含まれる実現可能山を１つずつ必ず選択することを、集合分割問題における制約条件に含めて集合分割問題を解く。ここで、量子条件とは、量子化した列主双対ギャップｚ［ｊ］の和が、原問題の評価値と双対問題の評価値との誤差を量子化した値に等しいという条件である。このようにすることによって、双対誤差のない厳密な最適解を高速に導出することができる。
【０１９０】
また、発明例２では、一部の実現可能山を公知の手法で列挙する。そして、各実現可能山の、原問題の評価値と双対問題の評価値との差である列主双対ギャップｚ［ｊ］を最新の暫定双対解ｐ［ｉ］を用いて導出し、列主双対ギャップｚ［ｊ］が「０」以下になる実現可能山を抽出する。そして、抽出した実現可能山の総数が指定数Ｌeになると、その時点で抽出されている実現可能山（双対問題計算用列群Ｃ）に対する暫定双対解を導出し、導出した暫定双対解を用いて、各実現可能山の列主双対ギャップｚ［ｊ］を導出する。そして、列主双対ギャップｚ［ｊ］が「０」にならない実現可能山を双対問題計算用列群Ｃから除く。そして、中断した箇所から、実現可能山を再列挙する。このような処理を、実現可能山の列挙が終了するまで繰り返し、最終的に双対問題計算用列群Ｃに含まれる実現可能山に対する双対問題の最適解（双対最適解）および当該最適解となるときの双対問題の目的関数の値（最適値）を双対最適解ｐopt［ｉ］および双対最適値ＶDoptとする。そして、実現可能山を公知の手法で列挙し、双対最適解ｐopt［ｉ］および双対最適値ＶDoptを用いて、列挙した実現可能山から、列主双対ギャップｚ［ｊ］が閾値ＴＨ2以下になる実現可能山を原問題計算用列群ＣTHとして抽出する。このようにすることにより、全ての実現可能山を列挙することなく、原問題の最適解となる可能性のある実現可能山を効率的に抽出することができる。
【０１９１】
（変形例）
＜変形例１＞
第１、第２の実施形態では、原問題Ｐが最小化問題である場合を例に挙げて説明した。しかしながら、原問題Ｐは、最大化問題であってもよい。この場合、原問題Ｐの目的関数は、列コストｃjの総和が最大になるように実現可能山ｍjを選択することを目的とする関数であり、（３）式に代えて以下の（３´）式が用いられる。また、双対問題Ｄの制約式、目的関数として、（８）式、（１０）式に代えて、それぞれ以下の（８´）式、（１０´）式が用いられる。即ち、双対問題Ｄでは、（８´）式の制約式を満足する範囲で（１０´）式の目的関数Ｊの値を最小にする双対変数ｐ［ｉ］を、双対問題Ｄの最適解として導出する。そして、列主双対ギャップとして、実現可能山ｍjに対する双対コストＰjから、当該実現可能山ｍjの列コストｃjを減算した値（＝Σｐ[ｉ]・ｍj[ｉ]−ｃj）を用いる。尚、実現可能山ｍjの列コストｃjも最大化問題に合わせて定式化される。
【０１９２】
【数２９】
2020107209.tif 000031
【０１９３】
ここで、原問題Ｐを最大化問題とする場合の定理Ｉに対応する定理IIについて説明する。
〔定理II〕
『閾値ＴＨがｎ＋ｆD（ｆD＝ＶDopt−floor（ＶDopt）、ｎ:０（ゼロ）以上の整数）のとき、列主双対ギャップｚ［ｊ］が当該閾値ＴＨ以下の列ｊによる原問題計算用列群ＣTHにより得られた部分問題Ｐ（ｎ＋ｆD）の最適値Ｊ（ｎ＋ｆD）optがfloor（ＶDopt）−ｎ−１以上なら、当該最適値Ｊ（ｎ＋ｆD）optは、原問題Ｐの最適値Ｊoptである』
ここで、floor（ｘ）は、床関数（実数ｘに対してｘ以下の最大の整数を対応付ける関数）である。
【０１９４】
［証明］
閾値ＴＨをｎ＋ｆDとして得られた部分問題Ｐ（ＴＨ）の最適値Ｊ（ｎ＋ｆD）optがfloor（ＪD）−ｎ−１であるとし、これが原問題Ｐの最適値でないとする。即ち、原問題Ｐの最適値Ｊoptは、floor（ＶDopt）−ｎ以上であり、それを得るため最適解の構成要素となり得る列を抽出するための閾値ＴＨを、ｎ＋ｆDより拡張する（大きくする）必要があると仮定する。
【０１９５】
そこで、閾値ＴＨをｎ＋ｆD＋α（０＜α≦１の正数）とする。ここで、拡張した部分問題Ｐ（ｎ＋ｆD＋α）において新たに加わる列の中には、必ず列主双対ギャップｚ［ｊ］が以下の（１８´）式を満たす列ｊが少なくとも一つは追加される。閾値ＴＨを拡張した後の列ｊの拡張範囲から列ｊが抽出されなければ解の改善はあり得ないからである。
【０１９６】
【数３０】
2020107209.tif 000032
【０１９７】
この閾値ＴＨの拡張により新たに追加される列ｊの列主双対ギャップｚ［ｊ］を以下の（１９´）式とする。
【０１９８】
【数３１】
2020107209.tif 000033
【０１９９】
そうすると、拡張した部分問題Ｐ（ｎ＋ｆD＋α）の最適値Ｊ（ｎ＋ｆD＋α）optは、ＶDopt−（ｎ＋ｆD＋β）以下の整数値となる。つまり、以下の（２０´）式が成り立つ。
【０２００】
【数３２】
2020107209.tif 000034
【０２０１】
従って、閾値ＴＨを拡張しても、拡張した部分問題Ｐ（ｎ＋ｆD＋α）の最適値Ｊ（ｎ＋ｆD＋α）optは、floor（ＶDopt）−ｎ未満となり、原問題Ｐの最適値Ｊoptの上限値はfloor（ＶDopt）−ｎ−１となる。これは、原問題Ｐの最適値Ｊoptをfloor（ＶDopt）−ｎ以上と仮定したことに矛盾する。従って、前述した仮定に誤りがあり、閾値ＴＨがｎ＋ｆDであるときに得られた部分問題Ｐ（ｎ＋ｆD）の最適値Ｊ（ｎ＋ｆD）optがfloor（ＶDopt）−ｎ−１以上なら、当該最適値Ｊ（ｎ＋ｆD）optは、原問題Ｐの最適値Ｊoptであることが証明された。（Q.E.D.）
【０２０２】
（１７−１）式〜（１７−３）式、（２１−１）式〜（２１−２）式は、以上の定理IIに従って以下の（１７−１´）式〜（１７−３´'）式、（２１−１´）式〜（２１−２´）式に書き換えられる。その他の式についても、最大化問題に合わせて適宜変形される。
【０２０３】
【数３３】
2020107209.tif 000035
【０２０４】
＜変形例２＞
本実施形態では、鋼材を１つ１つ移動（搬送）する場合を例に挙げて説明した。しかしながら、鋼材の移動（搬送）が、鋼材グループの単位で行われる場合でも本実施形態の手法を適用することができる。鋼材グループとは、搬送機器（主にクレーン）にて搬送する際に、分割されることのない（最小単位となる）一枚以上の鋼材の纏まりを指す。このようにする場合、幅条件を満たすのは、例えば、或る鋼材グループの最大幅が、当該或る鋼材グループの下に位置する鋼材グループの最小幅よりも狭い場合と、或る鋼材グループの最大幅が、当該或る鋼材グループの下に位置する鋼材グループの最小幅よりも広く、且つ、両者の幅の差が作業制約により定まる基準値以下である場合である。また、長さ条件を満たすのは、例えば、或る鋼材グループの最大長が、当該或る鋼材グループの下に位置する鋼材グループの最小長よりも短い場合と、或る鋼材グループの最大長が、当該或る鋼材グループの下に位置する鋼材グループの最小長よりも長く、且つ、両者の長さの差が作業制約により定まる基準値以下である場合である。また、例えば、（１つの）鋼材グループｉに含まれる鋼材の数ｗiを用いて鋼材の数を表現することができる。
【０２０５】
＜変形例３＞
本実施形態では、対象材が鋼材である場合（鋼材を搬送の対象とする場合）を例に挙げて説明した。しかしながら、必ずしも鋼材を対象材にする必要はない。例えば、鋼材の代わりに、アルミニウム、チタン、又は銅等の金属材を製造する金属製造プロセスに本実施形態を適用することができる。この場合、前述した説明において「鋼材」を「アルミニウム材」等の「金属材」に置き換えることができる。
また、工程間の置場として、２つの製造工程間の置場を対象とし、金属材として、半製品を対象としてもよいし、工程間の置場として、製造工程と出荷工程の間の置場を対象とし、金属材として、最終製品を対象としてもよい。この際に、複数の金属材をコンテナに収容して輸送、配置する場合には、金属材が収容されたコンテナを１つの鋼材として取り扱ってもよい。さらに、工程間の置場としては、金属製造プロセスにおける置場に限定されるものでなく、一般的な工程間の物流、搬送を対象としてもよい。物流分野では内容物に限定されずコンテナの搬送、配置でも適用できる。
【０２０６】
（その他の実施形態）
尚、以上説明した本発明の実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、前記プログラムを記録したコンピュータ読み取り可能な記録媒体及び前記プログラム等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
また、以上説明した本発明の実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【０２０７】
（請求項との関係）
以下に、請求項の記載と実施形態の記載との対応関係の一例を説明する。尚、請求項の記載が実施形態の記載に限定されないことは前述した通りである。
＜請求項１、１１〜１４＞
双対問題求解手段は、例えば、双対問題求解部１２０、５２０を用いることにより実現される。実現可能山の列挙は、例えば、特許文献１等に記載されている手法を用いることにより実現される。
最適解導出手段は、例えば、最適解導出部１３０を用いることにより実現される。
量子化手段は、例えば、量子化部１３１を用いることにより実現される。
選別手段は、例えば、選別部１３３を用いることにより実現される。
求解手段は、例えば、求解部１３４を用いることにより実現される。
前記双対問題の求解の対象である前記実現可能山は、例えば、原問題計算用列群ＣTHに含まれる列（実現可能山ｍj）を用いることにより実現される。
前記双対問題の求解の対象である前記実現可能山に対する前記原問題の評価値と、当該実現可能山に対する前記双対問題の評価値との差である列主双対ギャップは、例えば、列主双対ギャップｚ［ｊ］を用いることにより実現される。
前記原問題の評価値の最適値と前記双対問題の評価値の最適値との差である最適解における主双対ギャップは、例えば、取り得る値がceil（ＶDopt）−ＶDopt＋ｎ（ｎ＝０，１，２，・・・）である双対ギャップＧdの最小値（双対ギャップの最適値Ｇd_opt）を用いることにより実現される。
量子化された前記列主双対ギャップの解を構成する列に対する和が、量子化された最適解における前記主双対ギャップと最適解において一致するという条件である量子条件は、例えば、（１５）式を用いることにより実現される。
＜請求項２＞
分類手段は、例えば、分類部１３２を用いることにより実現される。
＜請求項３＞
前記選別手段は、最適解における前記主双対ギャップとしてとり得る値が小さいものから順に、前記量子条件で規定される、最適解における前記主双対ギャップの最適値を設定することは、例えば、最初に（１７−２）式のｉｆ文が成立するまでは、（１７−１）式によりＧq_gapが定められ、（１７−２）式のｉｆ文が成立すると、（１７−２）式によりＧq_gapが定められ、その後は、（１７−２）式のｉｆ文が成立した場合は（１７−２）式によりＧq_gapが定められ、そうでない場合は（１７−３）式によりＧq_gapが定められることにより実現される。
＜請求項４＞
前記量子化手段により量子化された前記列主双対ギャップの上限値であって、当該選別手段による選別対象の前記実現可能山に対する前記列主双対ギャップの上限値は、（量子化列主双対ギャップｑ［ｊ］の）抽出上限値ｑgap（の現在値ｑk）を用いることにより実現される。
前記量子条件で規定される、最適解における前記主双対ギャップを、前記双対最適解に対応する前記双対問題の評価値である双対最適値に基づいて、前記上限値に応じた値に設定することは、例えば、抽出上限値ｑgap（の現在値ｑk）に応じて（１７−１）式〜（１７−３）式の何れかが選択され、選択された（１７−１）式、（１７−２）式、または（１７−３）式によって、主双対ギャップの最適値Ｇq_gapが設定されることにより実現される。前記双対最適解に対応する前記双対問題の評価値である双対最適値は、例えば、双対最適値ＶDoptを用いることにより実現される。
＜請求項５＞
当該求解手段により求解される解として採用される前記実現可能山の総和と、前記選別手段により選別された前記実現可能山の組み合わせの１つにおける当該実現可能山の総和とが等しいことを示す第１の制約条件は、例えば、（２２）式〜（２３）式を用いることにより実現される。
前記選別手段により選別された前記実現可能山の組み合わせを１つだけ必ず採用することを示す第２の制約条件は、例えば、（２４）式を用いることにより実現される。
＜請求項６＞
最小公倍数は、例えば、最小公倍数ｄlcmを用いることにより実現される。
＜請求項７〜９＞
第３の制約条件は、例えば、（２１−１）式〜（２１−２）式を用いることにより実現される。
【符号の説明】
【０２０８】
１００・４００：山分け計画作成装置、１１０：鋼材情報取得部、１２０、５２０：双対問題求解部、１３０：最適解導出部、１３１：量子化部、１３２：分類部、１３３：選別部、１３４：求解部、１４０：出力部、５２１：暫定選択列挙部、５２２：暫定双対解導出部、５２３：精製部、５２４：双対最適解導出部、５４０：選択列挙部
【図１】
2020107209.tif 000036
【図２】
2020107209.tif 000037
【図３】
2020107209.tif 000038
【図４】
2020107209.tif 000039
【図５】
2020107209.tif 000040
【図６−１】
2020107209.tif 000041
【図６−２】
2020107209.tif 000042
【図７】
2020107209.tif 000043
【図８】
2020107209.tif 000044
【図９】
2020107209.tif 000045
【図１０】
2020107209.tif 000046