JP7099315B2 - 山分け計画作成装置、山分け計画作成方法、およびプログラム - Google Patents

山分け計画作成装置、山分け計画作成方法、およびプログラム Download PDF

Info

Publication number
JP7099315B2
JP7099315B2 JP2018247434A JP2018247434A JP7099315B2 JP 7099315 B2 JP7099315 B2 JP 7099315B2 JP 2018247434 A JP2018247434 A JP 2018247434A JP 2018247434 A JP2018247434 A JP 2018247434A JP 7099315 B2 JP7099315 B2 JP 7099315B2
Authority
JP
Japan
Prior art keywords
dual
mountain
feasible
solution
mountains
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018247434A
Other languages
English (en)
Other versions
JP2020107211A (ja
Inventor
哲明 黒川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Steel Corp
Original Assignee
Nippon Steel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Steel Corp filed Critical Nippon Steel Corp
Priority to JP2018247434A priority Critical patent/JP7099315B2/ja
Publication of JP2020107211A publication Critical patent/JP2020107211A/ja
Application granted granted Critical
Publication of JP7099315B2 publication Critical patent/JP7099315B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/30Computing systems specially adapted for manufacturing

Landscapes

  • General Factory Administration (AREA)

Description

本発明は、山分け計画作成装置、山分け計画作成方法、およびプログラムに関し、特に、対象材を山分けするために用いて好適なものである。
製鉄プロセスにおいて、例えば製鋼工程から次工程の圧延工程へ鋼材を搬送する際、鋼材は、一旦ヤードと呼ばれる一時保管場所に置かれた後、次工程である圧延工程(加熱炉)の処理時刻に合わせてヤードから搬出される。そのヤードのレイアウトの一例を図9に示す。ヤードは、図9に示すように、上流工程より払い出された鋼材などを下流工程に供給するためのバッファーエリアとして、縦横に区画された置場901~904から構成される。縦方向の分割区分を"棟"、横方向の分割区分を"列"と称することが多い。クレーン(1A、1B、2A、2B)は棟内を移動可能であり、同一棟内での異なる列の間で鋼材の移送を行う。また搬送テーブルにより棟間の鋼材の移送を行う。搬送指令を作成する際は"棟"及び"列"を指定することにより、どこへ鋼材を搬送するか指令できる。
図9を例にヤードでの基本的な作業の流れを示す。まず、前工程である製鋼工程の連鋳機910から搬出された鋼材は、パイラー911を経由して受入テーブルXでヤードまで搬入され、クレーン1A、1B、2A、2Bにより、区画された置場901~904の何れかに搬送され、山積みして置かれる。そして、次工程である圧延工程の製造スケジュールに合わせ、再びクレーン1A、1B、2A、2Bにより払出テーブルZに載せられ、圧延工程へと搬送される。一般に、ヤードにおいて鋼材は、前記の様に山積みされた状態で置かれる。これは、限られたヤード面積を有効に活用するためである。一方、鋼材を積み上げる際、次工程へ供給し易いよう、次工程の処理順番に鋼材が上から積まれている必要がある。さらに、積み姿が不安定な逆ピラミッド状に鋼材を積まないようにする必要がある。このように、鋼材を複数の最適山(=払出山:次工程へ払い出す最終的な山姿となった山)に分けることを山分けと呼ぶ。
ここで、次工程である圧延工程の加熱炉の燃料原単位を削減するため、可及的に高い温度の鋼材を加熱炉に払い出す(装入する)ことが求められる。このため、昨今、ヤード内に保温設備を設置し、保温設備の中に前述したようにして鋼材を山積みした状態で保管することが行われている。このように保温設備を用いる場合でも、置場901~904に直接鋼材を山積みする場合と同様に、保温設備を有効に活用するため、保温設備の中において、可及的に高さの高い払出山を作成することが必要である。
一方、鋼材を積み上げる際には、次工程へ供給しやすいよう、次工程の処理順番に鋼材が上から積まれていること、および積み形状が不安定な逆ピラミッド状に鋼材を積めないことなどの制約(これを「積姿制約」と称する)がある。更に、山立てを行う際の作業負荷(この作業負荷を山繰り負荷(上から払出順に鋼材を積み替えるための負荷)という)も見逃せない要素である。従って、ヤード管制では、前記制約下で出来るだけ少ない作業負荷で、できるだけ高い山立てを行う作業計画を策定することが望まれる。
鋼材置き場でサイズや次工程(圧延工程の加熱炉)での処理順序が異なる複数枚の鋼材を複数の山に分けて山積みする山分け問題を解決するには、対象鋼材により生成可能な全ての山分け候補の中から、ヤードへの受入時の山分け負荷や圧延工程の加熱炉への払出時の作業負荷などの評価関数を最適化する山分けの組み合わせを求めることが不可欠である。
このような大規模問題への対処方法として、特許文献1には、対象鋼材を要素とする全体集合に対し、山積み制約を満たす部分集合である実現可能山を全て列挙し、山数および山繰り負荷(受入の際、払い出し順に積み替えるための負荷)を最小化する目的関数の下、集合分割問題として最適な実現可能山の組み合わせを求めることにより最適な山分け計画を行う手法が開示されている。ここで、実現可能山とは、対象鋼材を要素とする全体集合に対する部分集合であって、山積み制約を満たす部分集合である。山積み制約は、鋼材を山積みする際に課せられる制約である。払出順が早い鋼材の方が山の上側に配置されなければならないという制約等が山積み制約に含まれる。
特許文献1に記載の方法は厳密解法であることから、目的関数として設定した山の総数および山繰り負荷に対する最適な山分け計画を作成することが期待できる。また、特許文献1に記載の方法では、実現可能の見込みのない部分集合のチェックを効率的に省略できるよう、最下段から順次上段に向かって実現可能な鋼材のみを積み上げる(分岐する)方式により実現可能山のみを生成する。
しかしながら、特許文献1に記載の技術を、山分け計画の作成対象となる鋼材の要素数が50~80程度となる大規模問題に適用すると、実現可能山の数が1億個を超えることも頻繁に起こる。このような場合には、計算機資源(主に主メモリ)の容量制限に掛かり、実現可能山を列挙できない事態が起こる。また、そこまでの規模にはならず、かろうじて実現可能山の列挙まではできた場合でも、その後の集合分割問題を最適計算する際、決定変数の数が実現可能山の数となる。このため、計算途中でメモリ容量を超えるか実用時間内では求解できない状況となる。
このような問題に対して、特許文献2には、列生成法を応用することにより、実現可能山の全列挙を避け、最適解の要素となり得る実現可能山群を選択的に抽出する手法が開示されている。
特許文献2に記載の技術では、対象鋼材を重複することなく且つ漏れなく含む実現可能山の最適な組み合わせを求める問題を原問題とする。また、原問題の線形緩和問題を主問題とした場合の双対問題の最適解である双対解(後述する暫定双対解に相当)と、山積み制約とを用いて、実現可能山の集合に追加する候補山(列)を、原問題の最適解を構成する実現可能山の候補として求める問題を列生成子問題とする。これら双対解の導出と、列生成子問題の求解(候補山(列)の導出)とを収束要件が満足するまで繰り返し実行し、当該収束要件を満足したときに得られている実現可能山の集合に基づいて、原問題の最適解を導出する。ここで、収束要件は、実現可能山の列コストが当該実現可能山に対する双対コスト以下であるという要件である。
特許文献2に記載の方法は、原問題の"最適解の構成要素となる可能性のある"部分集合(列(実現可能山))のみを繰り返し生成し、その部分集合(列(実現可能山))に対する部分問題を列生成子問題により求解することにより原問題の最適解を得ようとする手法である。ここでの「最適解の構成要素となる可能性の有無」は、当該列が、最適性基準を満たしているか否か、即ち、実現可能山の列コストが当該実現可能山に対する双対コスト以下か否かにより判定される。弱双対定理の下では、最小化問題の場合、実行可能解に対し、「原問題(主問題)の評価値≧双対問題の評価値」の関係が成り立ち、最適解のときのみ両者一致する(即ち、原問題(主問題)および双対問題の目的関数値が一致するとき、それぞれの解はそれぞれ真の最適解になる)ことから、前記の条件が最適解判定に利用できる。ここで、各実現可能山の列コスト(主問題の評価値) が、当該実現可能山に対する双対コスト以下か否か(当該列が、最適性基準を満たしているか否か)を判定するには、双対最適解が必要となる。従って、列生成法では、列生成子問題による列の生成とそれまでに生成された列による双対問題の求解とを繰り返す。つまり、列生成法では、原問題を求解するために必要な列群を、それに対応する回数だけ、列生成子問題を解くことによって得る。
特開2016-81168号公報 特開2018-73171号公報 特開2011-105483号公報
久保幹雄、田村明久、松井知己編、「応用数理計画ハンドブック」、株式会社朝倉書店、2002年5月、p.133、337、621、634
列生成子問題は、山分け問題においてもそうであるように、実問題では、0-1計画問題となるため、1回あたりの求解に相応の時間を要する。このため、それを数百回解く列生成法での求解は、要請された時間内(山分け問題なら例えば3~5分以内など)に完了しないケースが避けられない。これは、双対解の導出と、列生成子問題の求解により得られた候補山(列)を実現可能山に追加するか否かを判定するためには、当該実現可能山に対する双対コストを計算するため双対解(後述する暫定双対解)が必要になるため、循環問題とせざるを得ない(前述した収束要件を満足するまで繰り返し計算を行わざるを得ない)からである。
また、原問題は、0-1整数計画問題であるのに対し、列生成法は、線形計画問題に対する手法である。従って、列生成法により導出した最適解が本来の最適解でないことがある。そこで、特許文献2では、以上のようにして導出した原問題の最適解が本来の最適解でない場合には、後処理を行って列生成法で得られた列群に、当該列群に含まれていない実現可能山を追加し、列生成法で得られた疑似最適解を本来の最適解に近づけるようにする。しかしながら、特許文献2に記載の技術では、後処理において、前述した収束条件を緩和する(実現可能山の列コストから当該実現可能山に対する双対コストを減算した値が0より大きい閾値以下であるか否かを判定する)ことにより、実現可能山を追加しても原問題の最適解を本来の最適解に十分に近づけることができない場合がある。
本発明は、以上のような問題点に鑑みてなされたものであり、前述した循環問題(列生成子問題による列の生成とそれまでに生成された列による双対問題の求解との繰り返し計算)を前提とせず、山分け計画の最適解を高速に導出することができるようにすることを目的とする。
本発明の山分け計画作成装置は、所定の山積み制約を満たすように対象材を積んだ山である実現可能山の組み合わせを、山分け対象の複数の対象材を重複することなく且つ漏れなく含むように求める整数計画問題を原問題とし、前記原問題の線形緩和問題を主問題とした場合の双対問題の最適解である双対最適解を用いて、前記山分け対象の複数の対象材を山分けするための山分け計画を作成する山分け計画作成装置であって、一部の前記実現可能山を列挙し、当該列挙した実現可能山のそれぞれに対する列主双対ギャップを導出し、当該列挙した実現可能山から、当該実現可能山に対する列主双対ギャップと第1の閾値とを比較した結果に基づいて、前記双対問題の求解に用いる実現可能山を抽出することを、所定の条件が成立するまで繰り返し、前記所定の条件が成立した時点で抽出された前記実現可能山を対象として、前記双対問題の最適解である前記双対最適解を導出する双対問題求解手段と、一部の前記実現可能山を列挙し、当該列挙した実現可能山から、当該実現可能山に対する列主双対ギャップと第2の閾値とを比較した結果に基づいて、前記原問題の求解に用いる実現可能山を選択列挙することを、所定の条件が成立するまで繰り返す選択列挙手段と、前記選択列挙手段により選択列挙された前記実現可能山から、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の集合を導出することを、集合分割問題を解くことにより行う最適解導出手段と、を有し、前記列主双対ギャップは、前記実現可能山に対する前記原問題の評価値と、当該実現可能山に対する前記双対問題の評価値との差であり、前記双対問題求解手段は、抽出済みの前記実現可能山を対象とする前記双対問題の暫定的な最適解である暫定双対解を用いて前記列主双対ギャップを導出し、前記選択列挙手段は、前記双対最適解を用いて前記列主双対ギャップを導出することを特徴とする。
本発明の山分け計画作成方法は、所定の山積み制約を満たすように対象材を積んだ山である実現可能山の組み合わせを、山分け対象の複数の対象材を重複することなく且つ漏れなく含むように求める整数計画問題を原問題とし、前記原問題の線形緩和問題を主問題とした場合の双対問題の最適解である双対最適解を用いて、前記山分け対象の複数の対象材を山分けするための山分け計画を作成する山分け計画作成方法であって、一部の前記実現可能山を列挙し、当該列挙した実現可能山のそれぞれに対する列主双対ギャップを導出し、当該列挙した実現可能山から、当該実現可能山に対する列主双対ギャップと第1の閾値とを比較した結果に基づいて、前記双対問題の求解に用いる実現可能山を抽出することを、所定の条件が成立するまで繰り返し、前記所定の条件が成立した時点で抽出された前記実現可能山を対象として、前記双対問題の最適解である前記双対最適解を導出する双対問題求解工程と、一部の前記実現可能山を列挙し、当該列挙した実現可能山から、当該実現可能山に対する列主双対ギャップと第2の閾値とを比較した結果に基づいて、前記原問題の求解に用いる実現可能山を選択列挙することを、所定の条件が成立するまで繰り返す選択列挙工程と、前記選択列挙工程により選択列挙された前記実現可能山から、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の集合を導出することを、集合分割問題を解くことにより行う最適解導出工程と、を有し、前記列主双対ギャップは、前記実現可能山に対する前記原問題の評価値と、当該実現可能山に対する前記双対問題の評価値との差であり、前記双対問題求解工程は、抽出済みの前記実現可能山を対象とする前記双対問題の暫定的な最適解である暫定双対解を用いて前記列主双対ギャップを導出し、前記選択列挙工程は、前記双対最適解を用いて前記列主双対ギャップを導出することを特徴とする。
本発明のプログラムは、前記山分け計画作成装置の各手段としてコンピュータを機能させるためのものである。
本発明によれば、前述した循環問題(列生成子問題による列の生成とそれまでに生成された列による双対問題の求解との繰り返し計算)を前提とせず、山分け計画の最適解を高速に導出することができる。
山分け計画作成装置の機能的な構成の第1の例を示す図である。 列(実現可能山)の列挙方法の一例を説明する図である。 山分け計画作成方法の第1の例を説明するフローチャートである。 図3-1に続くフローチャートである。 山分け計画作成装置の機能的な構成の第2の例を示す図である。 量子条件の一例を説明する図である。 山分け計画作成方法の第2の例を説明するフローチャートである。 第1の実施例における山分け計画の作成結果を示す図である。 第2の実施例における山分け計画の作成結果を示す図である。 ヤードのレイアウトの一例を示す図である。
以下、図面を参照しながら、本発明の実施形態を説明する。
(第1の実施形態)
まず、第1の実施形態を説明する。
<原問題P>
まず、本実施形態で解くべき問題である原問題Pについて説明する。本実施形態では、原問題Pを集合分割問題とする。集合分割問題は、全体集合Nの任意の部分集合Sjが、その列コスト(当該列の原問題評価値)cjを持つという前提で、以下の(1)式に示すように、全体集合Nの要素iを、重複なく且つ漏れなく部分集合m1,m2,・・・,mkに分割する問題である。このとき、部分集合m1,m2,・・・,mkに対する列コストc1,c2,・・・,ckの総和が最小となるようにする。以下の(1)式は、全体集合Nの要素iを重複なく且つ漏れなく部分集合m1,m2,・・・,mkに分割することを表す。
Figure 0007099315000001
要素の数がn個の全体集合N={1,2,・・・,I,・・・,n}の部分集合の集合(集合族)C={m1,・・・,mj,・・・,mk}(mj⊆N)の要素mjのコストをcjとする。要素iを鋼材とし、部分集合mj(∈C)を実現可能山とする。そうすると、以下のようにして山立て問題を0-1計画問題として定式化することができる。
<決定変数>
原問題Pの決定変数x[j]は、実現可能山mjを採用する場合に「1」、そうでない場合に「0(ゼロ)」となる0-1変数である。
<制約式>
原問題Pの制約式は、鋼材i∈Nのそれぞれについて、当該鋼材iを含む集合族(部分集合mjの集合)Mj(i)⊆Cの中から、一つの部分集合mjだけが選択されなければならないことを表す制約式であり、以下の(2)式で表される。
尚、鋼材iは、1つの鋼材であっても、1つの搬送機器(クレーン1A、1B、2A、2B)で搬送することができる鋼材の纏まり(搬送ロット)であってもよい。搬送ロットを決定する方法は、例えば、特許文献3に記載されているので、ここでは、その詳細な説明を省略する。
Figure 0007099315000002
ここで、行列Aの要素aij(i行j列の要素)を、実現可能山mjが鋼材iを含む場合にaij=1、含まない場合にaij=0と定義する。この場合、行列Aの或る列jにおいて、「1」の値を持つ行に対応する鋼材iが、当該列jに対応する実現可能山を構成する鋼材であり、当該列jにおいて、「0」の値を持つ行に対応する鋼材iは、当該列jに対応する実現可能山を構成しない。このようにして行列Aの要素aijを定義すると、(2)式は、行列Aにより、以下の(2-1)式のように表記できる。ここで、(2-1)式の右辺は、全ての要素が「1」となるベクトルである。尚、各数式において、太字で示すものはベクトルを表す。尚、行列Aの要素aijが1(aij=1)ならば、列jは行iを被覆(カバー)すると称する。
Figure 0007099315000003
<目的関数>
原問題Pの目的関数は、列コストcjの総和が最小になるように実現可能山mjを選択することを目的とする関数であり、以下の(3)式で表される。
Figure 0007099315000004
列コストcjは、実現可能山mjを原問題Pの最適解として選択するか否かを判断するための評価値であり、実現可能山mjに対する鋼材iの山立てを評価する1つまたは複数の評価指標に基づいて予め定められる。(3)式をベクトル表記すると、以下の(3-1)式のようになる。
Figure 0007099315000005
本実施形態では、実現可能山(払出山)の山数c1j即ち1と、積み替え数(逆転対数)c2jに対しそれぞれ重み係数k1、k2を掛けたものが列コストcjとなる(逆転対の詳細については後述する)。そうすると、原問題Pの目的関数は、以下の(4)式で表される。尚、実現可能山mj(mj∈C)の列コストcjと、山数c1jおよび逆転対数c2jとの関係は、以下の(4-1)式のようになる。
Figure 0007099315000006
ここで、「1」の値を有する決定変数x[j]の数が総山数になるので、何れの実現可能山mjにおいても山数c1jの値は「1」になる。よって、(4)式では、山数c1jを評価する項(右辺第1項)を、その他のコストである逆転対数c2jを評価する項(右辺第2項)と分離して表記している。k1、k2は、重み係数であり、各評価指標(山数c1j、逆転対数c2j)のバランスをとるためのものである。重み係数k1、k2により、各評価指標(山数c1j、逆転対数c2j)の相対的な重みを決定することができる。例えば、山数c1jを逆転対数c2jよりも重要な評価指標(優先して評価する評価指標)とする場合には、山数c1jに対する重み係数k1の値を大きくすることと、逆転対数c2jに対する重み係数k2の値を小さくすることとの少なくとも何れか一方を採用する。以上のように本実施形態では、山数c1jを評価する項と、逆転対数c2jを評価する項との重み付き線形和で原問題Pの目的関数を表す場合を例に挙げる。
ここで、逆転対数について説明する。背景技術の欄で説明したように、山立てを行う上で、作業スペースの問題や作業を行うクレーンの能力の兼ね合いから、山積を行うための鋼材の搬送作業数が可及的に少なくすることが求められる。山立ての場合には、ヤードへ到着する順に鋼材を下から順に山積みすることができれば理想的である。しかしながら、現実的には、鋼材のヤードへの到着順と次工程への払出順(山の積順)とが食い違う場合が不可避である。この場合には、払出山において相対的に下段に積まれる鋼材がヤードに到着するまで、先にヤードに到着した鋼材を一旦仮置き場に仮置きし、相対的に下段に積まれる鋼材がヤードに到着し山積みされてから、その鋼材の上に、仮置き場の鋼材を積む作業を行う必要がある。このような仮置きの発生数は、数学的には「逆転数または転倒数(inversion number)」として表現することができる。この様に、任意の鋼材の対(i1,i2)⊆N2について、同一の払出山に積むことは可能で、同一の払出山に積む際には、到着順と積み順とを入れ替える必要のある鋼材対を逆転対とし、この集合R(逆転対集合)を、以下の(4-2)式のように定義する。
Figure 0007099315000007
その際、実現可能山mjに含まれる逆転対の数がc2jに対応する。このように逆転対とは、同一の払出山においてヤードへの到着順が早い方の鋼材i1が遅い方の鋼材i2よりも上に積まれる逆転の関係にある鋼材対をいい、その数を逆転対数と定義する。逆転対が1つあると、この例では、到着順が早い方の鋼材i1が前述した仮置きが必要な鋼材となる。仮置きを行うために1回の山繰りが発生するので、逆転対数は、仮置きの数の目安となる。尚、逆転対集合Rを抽出するには、任意の鋼材iのヤードへの到着順と、払出山での積み順(即ち、払出順)とを判定するための情報が必要となる。仮置き数は実現可能山mjに含まれる鋼材対(i1,i2)の内、(i1,i2)∈Rに対し、同じ鋼材を二重に計数しないよう考慮して鋼材i1を計数したものとなる。尚、集合Rを抽出するには、任意の鋼材のヤードへの到着順と(次工程へ払出ができる状態の)山での積順を判定するための情報(次工程への払出順、鋼材のサイズ)が必要になる。
以上のように本実施形態では、(2)式の制約式を満足する範囲で(4)式の目的関数Jの値を最小にする決定変数x[j]を求める問題を原問題Pとする。
尚、本実施形態では、列コストcjが、山数c1jと逆転対数c2jである場合を例に挙げて説明する。しかしながら、列コストcjは、鋼材iの山立て(実現可能山mj)を評価する評価指標であれば、山数や逆転対数あるいは仮置き数に限定されない。例えば、ヤード受入れ時・次工程への払出時の鋼材iの放熱量を列コストcjに更に含めてもよい。
以上のように、山立て問題を集合分割問題として定式化する際には、列挙された実現可能山(部分集合)の数が変数の数となる. このとき、全ての実現可能山が列挙できていなくとも、(2)式の被覆条件を満たす列が列挙できていれば、問題としては成立する。後述するように、本実施形態では、全ての実現可能山を対象とした原問題Pを、一部の実現可能山を対象とした部分問題を解くことによって求解する。従って、ここで定義した集合分割問題は、原問題Pの場合と部分問題の場合とがある。
<双対問題D>
次に、双対問題Dについて説明する。
前述した原問題P(集合分割問題)の線形緩和問題を主問題とした場合の双対問題Dを以下のように定式化する。原問題P自体は0-1整数計画問題であるが、双対問題Dは線形計画問題になる。0-1整数計画問題である原問題Pの線形緩和問題を主問題とした場合の双対問題Dは、主問題と双対問題との関係から、以下のように定式化できる。
原問題Pは最小化問題なので、(3-1)式に示す目的関数Jの最適な下限値を求める問題を考察することにより双対問題Dが得られる。そこで、以下の(5)式を満足する変数pTを考える(pTはベクトルである)。
Figure 0007099315000008
(5)式の両辺にx(≧0)を右から掛けると、以下の(6)式が成り立つ((3-1)式に示したようにxはベクトルである)。
Figure 0007099315000009
つまり(6)式の左辺(=pTAx)が原問題Pの目的関数Jの下限となる。原問題Pの目的関数Jのより良い下限値を与えるには、(5)式(=pTA≦c)の条件下で、(6)式の左辺(=pTAx)を最大化する問題を考えればよい。ここで、原問題Pの制約式である(2-1)式より、以下の(7)式が成り立つ。
Figure 0007099315000010
従って、以下のようにして双対問題Dが定式化される。尚、集合分割問題の線形緩和問題を主問題とする双対問題自体は、非特許文献1に記載されているように公知の技術で実現できるので、ここでは、その詳細な説明を省略する。
[決定変数]
本実施形態では、双対変数p[i]を双対問題Dの決定変数とする。
双対変数p[i]は、鋼材i毎に定められる連続変数(-∞<p[i]<∞)である。双対変数p[i]の数は、n個(鋼材情報に含まれる鋼材iの数)である。
[制約式]
双対問題Dの制約式は、前述した(5)式で表される。ここで、行列Aは、双対最適解(双対問題Dの最適解)を導出する際に生成されている実現可能山mjの集合Cに対応する。
(5)式を要素毎に表記すると、双対問題Dの制約式は、以下の(8)式で表される。尚、(8)式の左辺(Σp[i]・mj[i](=Pj))は双対コストである。(8)式に示すように、双対コストPjは、鋼材iに対する双対変数p[i]の値と、行列Aの列jの値であって、該鋼材iに対応する行iにおける値(「0」または「1」)との積の、山立て対象の鋼材iについての総和で表される。
Figure 0007099315000011
(8)式において、mj[i]は、行列Aのj列そのものであり、j列に対応する実現可能山mjが鋼材iを含めば「1」、そうでなければ「0」となる0-1変数である。従って、(8)式の制約式の数は、双対最適解(双対問題Dの最適解)を導出する際に抽出されている実現可能山mj(列)の数(即ち、集合Cの要素数)となる。
尚、(8)式は、列主双対ギャップz[j](>0)を用いて、以下の(8-1)式のように記述することもできる。列主双対ギャップz[j]は、(8-1)式で表される(z[j]=cj-Σp[i]・mj[i])。列主双対ギャップz[j]は、列コストcjと双対解p[i]による双対コストとの差を列(実現可能山mj)ごとに評価した値である。
Figure 0007099315000012
[目的関数]
(5)式の条件下では、(6)式および(7)式より以下の(9)式が成り立つので、(7)式のΣp[i]は、cxの下限値となる((3-1)式に示したようにc、xはベクトルである)。できるだけ大きいΣp[i]を求めれば、原問題Pの目的関数Jのより良い下限値が得られることになる。従って、双対問題Dの目的関数Jは最大化問題となり、以下の(10)式のようになる。
Figure 0007099315000013
以上のように本実施形態では、(8)式の制約式を満足する範囲で(10)式の目的関数Jの値を最大にする双対変数p[i]を双対問題Dの最適解(双対最適解)として求める問題を双対問題Dとする。
<概要>
特許文献2に記載の技術で用いる列生成法では、原問題Pを求解するために必要な列群の導出(列生成子問題の求解)と、双対問題Dの最適解(暫定双対解p[i])の導出とを数百回程度繰り返すことにより、暫定双対解を改善しつつ、列(実現可能山mj)の抽出を行う。しかしながら、本発明者らは、双対問題Dの最適解(暫定双対解p[i])の導出と、原問題Pを求解するために必要な列群の抽出とを数百回程度も繰り返さなくても、以下のようにすれば、双対問題Dを求解するために必要な列群を効率的に抽出することを見出した。即ち、列(実現可能山mj)の列挙数が指定数Leに達するまで、列(実現可能山mj)を選択列挙し、選択列挙数が指定数Leに達すれば、一旦選択列挙を中断し、それまでに列挙された列(実現可能山mj)に対する暫定双対解を導出し、導出した暫定双対解p[i]を用いて列主双対ギャップz[j]が「0」以下になる列(実現可能山mj)のみを残し(精製)、先に中断したところから列挙を再開する。再開後は、前記導出した暫定双対解を用いて、列主双対ギャップz[j]が「0」以下になる列(実現可能山mj)のみを抽出する。このようにして抽出される列(実現可能山mj)が指定数Leになっていなければ、指定数Leになるまで、列(実現可能山mj)の選択列挙を行う。そして、指定数Leに達すれば選択列挙を中断し、先に精製した列(実現可能山mj)と選択列挙した列(実現可能山mj)とに対する双対問題Dを解いて暫定双対解を導出し、導出した暫定双対解p[i]を用いて列主双対ギャップz[j]が0以下になる列(実現可能山mj)を、それらの列(実現可能山mj)から改めて精製する。そして、先に選択列挙を中断したところから、先に導出した暫定双対解p[i]を用いて選択列挙を再開する。このような、列(実現可能山mj)の列挙あるいは選択列挙と、列(実現可能山mj)の精製とを、列(実現可能山mj)の列挙が完了するまで繰り返す。このようにして抽出された列(実現可能山mj)に対する双対問題Dを解いて双対最適解を導出し、導出した双対最適解を用いて、列主双対ギャップz[j]が閾値TH以下になる列(実現可能山mj)を選択列挙する。以上のようにすれば、より効率的に原問題Pを求解するために必要な列群(原問題Pの最適解を構成する可能性のある列群)を高速に抽出することができる。というのも、本実施形態では、双対問題Dの求解と、原問題Pを求解するために必要な列群の抽出と、を繰り返すことは前提としておらず、仮に繰り返したとしても数回程度で済むからである。このように言える根拠としては、本実施形態では、従来技術である列生成法のように列生成子問題を解く代わりに、後述する列挙法と組み合わせて列を選択列挙しており、一つの暫定双対解に基づいて多数の列を選択列挙できるためである。そして、このようにして得られた列群に対して、双対最適解を求め、それを使って改めて先ほどとは異なる閾値を使って選択列挙した列群に対して、集合分割問題を解くことにより得られた部分問題の最適解(実現可能山mj)を、原問題Pの最適解とする。
<山分け計画作成装置100>
次に、山分け計画作成装置100の一例について説明する。図1は、山分け計画作成装置100の機能的な構成の一例を示す図である。山分け計画作成装置100のハードウェアは、例えば、CPU、ROM、RAM、HDD、および各種のインターフェースを備える情報処理装置や、専用のハードウェアを用いることにより実現される。
図1に示すように、山分け計画作成装置100は、鋼材情報取得部110と、双対問題求解部120と、選択列挙部130と、最適解導出部140と、出力部150とを有する。
[鋼材情報取得部110]
鋼材情報取得部110は、山分け計画の作成対象となる鋼材i∈Nのそれぞれの情報を取得する。以下の説明では、この情報を必要に応じて鋼材情報と称する。鋼材情報には、例えば、鋼材のID(識別情報)と、当該鋼材のサイズ(幅、長さ)と、当該鋼材のヤードへの到着順と、当該鋼材の次工程への払出順とが含まれる。尚、到着順および払出順は、鋼材情報に含まれる鋼材の中での相対的な順序である。
鋼材情報取得部110は、例えば、鋼材管理装置から鋼材情報を取得する。ただし、必ずしもこのようにする必要はなく、鋼材情報取得部110は、鋼材の山分け計画作成装置100のユーザインターフェースに対するユーザの操作により入力された鋼材情報を取得してもよい。鋼材情報取得部110は、例えば、CPU、ROM、RAM、および通信インターフェース(またはユーザインターフェース)を用いることにより実現される。
[双対問題求解部120]
双対問題求解部120は、列主双対ギャップz[j]が「0」以下になる列(実現可能山mj)を列挙し、列挙した列(実現可能山mj)に対する暫定双対解を導出することを繰り返して双対最適解を導出する。
全ての部分集合(列(実現可能山mj))を対象とすることなく双対問題の最適解(双対最適解)を求めるための方法を考える上で重要な事実は、『双対最適解を決定する部分集合(列(実現可能山mj))は、(8-1)式で表される列主双対ギャップz[j]が「0」(z[j]=0)となる列(実現可能山mj)のみである』ということである。つまり、列主双対ギャップz[j]が「0」以下になる列群C(∋mj)が、山分け計画の作成対象となる全ての鋼材i(∈N)を包含し、(8-1)式で表される列主双対ギャップz[j]が「0」(z[j]=0)以下となる列(実現可能山mj)があれば、そうでない列(実現可能山mj)がなくとも、双対最適解は影響を受けない。従って、列主双対ギャップz[j]が「0」以下となる列群を列挙できれば双対最適解は計算可能である。しかしながら、或る列(実現可能山mj)の列主双対ギャップz[j]が「0」以下であるか否かを判定するには、双対最適解popt[i]が必要となる。従って、列主双対ギャップz[j]が「0」以下になる(と思われる)列群Cの選択列挙と、当該列群Cに対する暫定双対解の導出と、その暫定双対解を用いた列群Cの精製とを、列挙数が一定数を超えるごとに繰り返す処理を行うことが必要となる。この処理において重要なのが、列挙数を、計算可能な許容範囲内に留め、繰り返しが進むに伴い、暫定双対解が真値(双対最適解)へ収束することを保証することである。そこで、本実施形態では、暫定双対解が更新される毎に、それに見合った列主双対ギャップz[j]が「0」以下になる列群Cのみをそれまでに選択列挙された列群から精製する。これに対し、通常の列生成法では、生成された列を除去することはない。そして、暫定双対解を得たときの双対問題Dの目的関数の値が前回の計算値より悪化しないようにするために、前述した繰り返し処理において、列主双対ギャップz[j]が「0」以下になる列群Cの要素を残した上で、列(実現可能山mj)の再選択列挙を行う。以下の説明では、列群Cを、必要に応じて、双対問題計算用列群Cと称する。
以下、双対問題求解部120が有する機能の一例を説明する。なお、上記の様に、計算対象となる列を制限する必要があるのは、総列数が数千万以上の規模を持ち、そのままでは計算が困難な場合で、総列数が数百万規模程度までの問題規模であれば、このような抽出処理を行う必要はない。
[[暫定選択列挙部121]]
暫定選択列挙部121は、鋼材情報取得部110により取得された鋼材情報と、列主双対ギャップz[j]に対する閾値TH1(=0)と、列(実現可能山mj)の列挙数の上限値である指定数Leとを入力する。暫定選択列挙部121は、これらの情報に基づいて、列(実現可能山mj)の列挙と、暫定双対解p[i]の導出と、列双対ギャップの導出と、双対問題計算用列群Cに含める列(実現可能山mj)の抽出とを行う。
まず、列(実現可能山mj)の列挙の方法の一例を説明する。本実施形態では、特許文献1に記載の方法で列(実現可能山mj)を列挙する方法を例に挙げて説明する。ここで、特許文献1に記載の方法について簡単に説明する。図2は、列(実現可能山mj)の列挙方法の一例を説明する図である。
この列挙法の特長は、列挙の前に前処理として、任意の鋼材i対し、その鋼材iに上載せ可能な鋼材の集合U(i)を求めておき、列挙の際には、各積段における集合U(i)の積集合の計算を行うのみで、積姿制約をチェックする必要なく、実現可能な山のみを列挙できる点である。これにより、処理回数と列挙数とが一致し、不要な処理が全くない理想的な列挙が可能となる。そこで、暫定選択列挙部121は、鋼材iに上載せ可能な鋼材の集合U(i)を導出する。また、暫定選択列挙部121は、列(実現可能山mj)の列挙の際に、山の最下段から順次上段に向かって実現可能な鋼材のみを積み上げる(分枝する)樹形図(分枝木)により実現可能山を列挙する。
このツリー構造の樹形図では、各ノードに鋼材が属するようにすると共に、最下段の鋼材が属するノードが根ノードに属するようにする。そして、下段に配置される鋼材が属するノードを、その1つ上段に配置される鋼材の親ノードとする。
以下の説明では、列挙の対象となる鋼材を必要に応じて「対象鋼材」と称し、2つの対象鋼材のペアを必要に応じて「鋼材ペア」と称する。
全体集合Nの要素となる対象鋼材i1~inごとに、山積み制約を満たす対象鋼材の集合(対象鋼材の上に配置することが出来る鋼材の集合U(i))を、鋼材の2項関係を利用して効率的に求める。この方法の一例を以下に示す。
まず、列(実現可能山mj)の列挙の際に使用する山積み制約を説明する。山積み制約は、ヤードの管理方法等により様々な条件が考えられるが、例えば以下のような条件を想定することができる。
(1)払出順条件:払出順が早い鋼材の方が、払出順が遅い鋼材よりも必ず山の上側に位置しなければならない。
(2)幅条件:或る鋼材の幅が、当該或る鋼材の下に位置する鋼材の最小幅よりも狭いならば無条件で、当該或る鋼材を、当該直下に位置する鋼材の上に置ける。或る鋼材の幅が、当該或る鋼材の下に位置する鋼材の最小幅よりも広い場合には、両者の幅の差が、作業制約により定まる基準値以下であれば、当該或る鋼材を、当該下に位置する鋼材の上に置けるが、それを越えると置けない。
(3)長さ条件:或る鋼材の長さが、当該或る鋼材の下に位置する鋼材の最小長よりも短いならば無条件で、当該或る鋼材を、当該下に位置する鋼材の上に置ける。或る鋼材の長さが、当該或る鋼材の下に位置する鋼材の最小長よりも長い場合には、両者の長さの差が、作業制約により定まる基準値以下であれば、当該或る鋼材を、当該直下に位置する鋼材の上に置けるが、それを越えると置けない。
山積み制約のうち、(2)幅条件および(3)長さ条件のチェックがポイントとなるが、(1)払出順条件を満たす様、上下に積まれた2つの鋼材が幅条件あるいは長さ条件のいずれかを満たしていない場合、当該2つの鋼材は同じ山に積むことができない。この事実を利用すると、同じ山に積むことができない鋼材ペア(以下、同じ山に積むことができない鋼材ペアを必要に応じて「禁止対」と称する)の集合Fを以下の(11)式のように定義することができる。そして、この禁止対の集合Fを利用すると、山積み制約を満たす対象鋼材の集合(対象鋼材の上に配置することが出来る鋼材の集合U(i))は、以下の(12)式の様に簡単に抽出できる。
Figure 0007099315000014
以上の結果、対象鋼材i1に対して山積み制約を満たす対象鋼材(対象鋼材i1の上に配置することが出来る対象鋼材)の上載せ可能集合U(i1)、対象鋼材i2に対して山積み制約を満たす対象鋼材(対象鋼材i2の上に配置することが出来る対象鋼材)の上載せ可能集合U(i2)、・・・、対象鋼材inに対して山積み制約を満たす対象鋼材(対象鋼材inの上に配置することが出来る対象鋼材)の上載せ可能集合U(in)が、それぞれ抽出される。
最下段に設定した対象鋼材(初期ノードとして設定した対象鋼材)igからは、当該対象鋼材igに対して山積み制約を満たす対象鋼材の上載せ可能集合U(ig)が分枝可能(二段目に山積み可能)であり、二段目に山積み可能とした対象鋼材の上載せ可能集合U(ig)に含まれる対象鋼材のうち着目鋼材ig'からは、当該上載せ可能集合U(ig)と着目鋼材ig'に対して山積み制約を満たす対象鋼材の上載せ可能集合U(ig')との積集合(共通部分:intersection)が分枝可能(三段目に山積み可能)であるとし、以降、着目鋼材を順次上段にずらしながら、着目鋼材に対して、それまでの積集合と着目鋼材に対して山積み制約を満たす対象鋼材の集合との積集合が分岐可能であるとする。
例えば、図2の一番上の分枝について説明する。図2では、表記の都合上、対象鋼材を鋼材と表記する。また、山積み制約を満たす対象鋼材の集合Gを必要に応じて上乗せ可能集合Gと称する。
図2では、全体集合Nに、対象鋼材i1~inが含まれるものとする。
まず、対象鋼材i1~inが、それぞれ別の最下段(根ノード)に配置される。
最下段に設定した対象鋼材i1に対しては、上載せ可能集合U(i1)が分枝可能である(図2の分岐1を参照)。次に、二段目において着目鋼材を対象鋼材i2とすると、(1、2)枝に対しては、上載せ可能集合U(i1)∩U(i2)が分岐可能である(図2の分枝2を参照)。次に、三段目において着目鋼材を対象鋼材i3とすると、(1、2、3)枝に対しては、上載せ可能集合U(i1)∩U(i2)∩U(i3)が分枝可能である(図2の分枝3を参照)。
このような分枝を、(i、j、・・・、s)枝に対し上載せ可能集合が空集合(U(ii)∩U(j)・・・∩U(s)=φ)になるか、当該枝の山高さが高さ制限を満たさなくなるまで(上限値になるまで)続ける。その結果、暫定選択列挙部121は、空集合になるまでの枝、或いは、空集合になる前に山高さが上限値を超えた場合は上限値以下の高さになるまでの枝が、実現可能山になる。
例えば、図2の一番上の分岐について説明すると、最下段の対象鋼材i1→二段目の対象鋼材i2→三段目の対象鋼材i3で空集合になったとする。この場合、空集合になるまでの(i1、i2)枝、(i1、i2、i3)枝が実現可能山として列挙される。即ち、{最下段に対象鋼材i1、二段目に対象鋼材i2という集合と、{最下段に対象鋼材i1、二段目に対象鋼材i2、三段目に対象鋼材i3}という集合とが実現可能山として列挙される。
また、最下段の対象鋼材i1→二段目の対象鋼材i2→三段目の対象鋼材i3→四段目の対象鋼材i4でまだ空集合にならないが、四段目で山高さが上限値を超えたとする。この場合、上限値以下の高さになるまでの、(i1、i2)枝、(i1、i2、i3)枝が実現可能山として列挙される。
本実施形態では、同一の積段(ノード)に配置された対象鋼材の全てについて、山積み制約を満たす鋼材ペア(上積可能集合)を選別した後に、当該積段の1つ上の積段(ノード)に配置された対象鋼材の全てについて、山積み制約を満たす鋼材ペア(上積可能集合)を選別することを繰り返し行うものとする。
以上のように下からS段目におけるk番目のノードに対応する実現可能山Sjを構成する要素(鋼材)を(ik1,ik2,・・・ikS)とすると、この実現可能山Sjから分枝(Sjに上載せ)可能な鋼材集合U(Sj)は、U(Sj)=U(ik1)∩U(ik2)・・・∩U(ikS)となる。U(ik1)∩U(ik2)・・・∩U(ikS)を構成する要素(鋼材集合)、即ち鋼材集合U(Sj)を{iP1,iPr,・・・iPn}とすると、暫定選択列挙部121は、この鋼材集合U(Sj)の要素のそれぞれを順番に実現可能山Sjに付加し、新しい実現可能山SjPrを作成する。
本実施形態では、暫定選択列挙部121は、以上のようにして列(実現可能山Sj)を列挙する。
暫定選択列挙部121は、以上のようにして列挙した列(実現可能山mj)の上に鋼材iを積んでも、当該鋼材iを積むことにより得られる列(実現可能山mj )に対する列主双対ギャップz[j]が閾値TH1(=0)以下になる可能性があるか否かを判定する。暫定選択列挙部121は、このようにして列主双対ギャップz[j]が閾値TH1(=0)以下になる可能性がない実現可能山mjの列挙を省略する(枝を作成しない)。本実施形態では、暫定選択列挙部121は、特許文献1に記載の手法を用いて列(実現可能山mj)を列挙する。従って、暫定選択列挙部121は、分枝過程の枝において、分枝が進んでも、列主双対ギャップz[j]が閾値TH1(=0)以下になる可能性がない場合、そのような枝を作成しない。
分枝が進んでも以下の(13)式を満たす可能性がないことは、列挙した列(実現可能山mj)に対して上積み可能な鋼材iの上積みをしても、以下の(14)式が維持されることが示されればよい。尚、(13)式において、列主双対ギャップz[j]は、後述する暫定双対解導出部122により導出された最新の暫定双対解p[i]を用いて導出される。
Figure 0007099315000015
(14)式の左辺の列コストcjは、列(実現可能山mj)に対する原問題Pの評価値であり、本実施形態では、(4-1)式で表される。(4-1)式の右辺第1項は、山数c1jであるので、鋼材iの上積みにより列コストcjは増加しない。一方、(4-1)式の右辺第2項は、逆転対数c2jに重み係数k2を掛けたものである。従って、(4-1)式の右辺の各項のうち、実現可能山mjへの上積み(分岐)によって評価値(列コストcj)の値が大きくなる要因となる項は、(4-1)式の右辺第2項のみである。また、実現可能山mjへの上積み(分岐)により、評価値(列コストcj)が小さくなることはない。
一方、(14)式の右辺は、第1項(Σp[i]・mj[i])が、鋼材の上積みによる増加項(値が大きくなる項)となる。この項も、鋼材iが上積みされる毎に対応する双対変数p[i]の分だけ単調増加することになる(なぜならば双対変数p[i]は非負であるからである)。
従って、分枝過程における実現可能山(鋼材部分集合)Sjを次回の分枝対象として残すべきか否かは、以下のようにして表すことができる。即ち、実現可能山Sjに上積み可能な鋼材U(Sj)を当該実現可能山Sjに上積みすることにより構築可能な実現可能山Sjpの集合SJPの双対変数p[i]の和の最大値がcj-TH1を超えなければ、当該実現可能山Sjを分岐対象から排除できる。この条件は、以下の(15-1)式のように表すことができる。
ここで、(15-1)式の右辺は、実現可能山Sjに上積みすることにより構築可能な実現可能山の集合SJPの中で、双対問題の評価が最も良い値(双対最適値が最大値)であることを意味している。これは、実現可能山Sjの双対最適値に、実現可能山Sjに上積み可能な鋼材集合U(Sj)に属する鋼材iの中から、暫定双対解p[i]が大きい順に、山高さ制限の許容内で、暫定双対解p[i]を加えた値である。
Figure 0007099315000016
ただし、(15-1)式に示す条件は十分条件である。(15-1)式に示す条件が十分条件となるのは、(15-1)式の左辺cj(=k1+k2・c2j)について、鋼材iの上積みにより(4-1)式の右辺第2項の値(即ち、cj)が大きくなる効果を無視しているからである。
従って、列挙された列(実現可能山mj)の上に鋼材iを積んでも、当該鋼材iを積むことにより得られる列(実現可能山mj)に対する列主双対ギャップz[j]が閾値TH1以下になる可能性があるか否かをより厳密に(必要十分条件として)判定するには、実現可能山Sjに鋼材iを上積みすることにより構築可能な実現可能山Sjp毎に、上積みによる逆転対数c2j(仮置き数)の増加分の影響も考慮する必要がある。
そして、(15-1)式の左辺cjを、実現可能山Sjに対し鋼材iの上積みにより構築可能な実現可能山Sjp毎の列コストcjp(当該集合Sjpに対する評価値)とする。このような判定に時間を要することを許容できない場合には、実現可能山Sjの分枝対象からの排除可否をより簡単に判断するため、以下の(15-2)式を用いて、実現可能山Sjの分枝対象からの排除可否を判定することも可能である。
Figure 0007099315000017
(15-2)式を用いて、実現可能山Sjの分岐対象からの排除可否を判定する方法では、実現可能山Sjに鋼材iを上積みしてできる実現可能山Sjpの高さ制限を考慮していない。従って、(15-2)式の右辺の値を実際よりも大きめに見積もる場合がある。従って、(15-1)式を適用する場合よりも、(13)式の条件を満たす見込みのない実現可能山Sjからの分枝を行う可能性はあるが、実現可能山mjの列挙漏れの心配はない。
上記の判定方法で、列挙された列(実現可能山mj)の上に鋼材iを積んでも、当該鋼材iを積むことにより得られる列(実現可能山mj)に対する列主双対ギャップz[j]が閾値TH1以下になる可能性がないと判断された場合、暫定選択列挙部121は、当該列(実現可能山mj)の最上段のノード(鋼材)以降の分枝を行わない(このことは、後述する図3-1のステップS318において、積段数S+1における列(実現可能山mj)の集合BS+1の要素に、鋼材iPrを付加した新しい実現可能山SjPrを含めないことに対応する)。
また、暫定選択列挙部121は、後述する暫定双対解導出部122により導出された最新の暫定双対解p[i]を用いて、(13)式に示すように、新たに列挙した列(実現可能山mj)に対する列主双対ギャップz[j]が閾値TH1(=0)以下であるか否かを判定する。新たに列挙した列(実現可能山mj)に対する列主双対ギャップz[j]が閾値TH1(=0)以下である場合、暫定選択列挙部121は、当該列(実現可能山mj)を双対問題計算用列群Cに含める。
暫定選択列挙部121は、双対問題計算用列群Cに含まれる列(実現可能山mj)の数が指定数Leになると、以上の列(実現可能山mj)を列挙する処理を一旦打ち切り、その打ち切った位置を記憶する。本実施形態では、暫定選択列挙部121は、1回目の列(実現可能山mj)の列挙に際しては、列(実現可能山mj)の最下段に鋼材を配置することにより、列(実現可能山mj)を列挙する。
その後、後述するように精製部123により、指定数Leの数の列(実現可能山mj)から、列主双対ギャップz[j]が「0」になる列(実現可能山mj)のみが抽出(選択)された場合(2回目以降の列(実現可能山mj)の列挙に際しては)、暫定選択列挙部121は、精製部123により精製された列(実現可能山mj)Ceの数と、暫定選択列挙部121が新たに抽出した列(実現可能山mj)の数との和が指定数Leになるまで、前述した処理により列(実現可能山mj)の再選択列挙を行う。この際、暫定選択列挙部121は、前回の処理(列(実現可能山mj)の列挙)において処理を打ち切った位置の次の位置(次に列挙すべき列(実現可能山mj))から列(実現可能山mj)の再選択を開始する。
例えば、図2において、位置201まで枝を作成した時点(2段目(i1,in)のノードに3段目の枝を分枝する過程)で、暫定双対解の導出対象となる列(実現可能山mj)の数が、指定数Leになったとする。この場合、暫定選択列挙部121は、例えば、最下段の対象鋼材i1→二段目の対象鋼材in→三段目の対象鋼材inが得られた時点(2段目(i1,in)のノードの分枝が完了した時点)で処理を打ち切る。そして、精製部123による精製処理が終了したら、暫定選択列挙部121は、2段目(i1,in)の次のノードの分枝から列挙を再開する。尚、列挙の中断および再開する箇所は、特に限定されない。
1回目の列(実現可能山mj)の列挙においては、後述する暫定双対解導出部122による暫定双対解の導出が行われていない。そこで、暫定選択列挙部121は、1回目の列(実現可能山mj)の列挙においては、列(実現可能山mj)に対する列主双対ギャップz[j]の導出と、当該列主双対ギャップz[j]と閾値TH1(=0)との比較とを行わない。このため、暫定選択列挙部121は、1回目の列(実現可能山mj)の列挙においては、指定数Leになるまで列(実現可能山mj)を列挙した場合、当該指定数Leの数の列(実現可能山mj)を双対問題計算用列群Cに含める。一方、1回目の列(実現可能山mj)の列挙において、指定数Leになるまで、列(実現可能山mj)を列挙せずとも、列挙が完了した場合、暫定選択列挙部121は、(指定数Le未満の)列挙できた列(実現可能山mj)を双対問題計算用列群Cとする。
また、暫定選択列挙部121は、2回目以降の列(実現可能山mj)の列挙においては、後述する精製部123により精製された列(実現可能山mj)Ceの数と、暫定選択列挙部121が選択列挙した列(実現可能山mj)の数との和が指定数Leになるまで列(実現可能山mj)を選択列挙した場合、精製部123により精製された列(実現可能山mj)Ceと、暫定選択列挙部121が列挙再開後、選択列挙した列(実現可能山mj)即ち、列主双対ギャップz[j]が閾値TH1(=0)以下になる列(実現可能山mj)を、双対問題計算用列群Cに含める。
2回目以降の列(実現可能山mj)の選択列挙においては、1回目の列挙とは異なり、後述する暫定双対解導出部122により既に導出された暫定双対解がある。したがって、暫定選択列挙部121は、それを利用して(13)式により列主双対ギャップz[j]を導出し、列主双対ギャップz[j]が「0」以下となる列(実現可能山mj)を選択的に列挙する。
[[暫定双対解導出部122]]
前述したように、暫定選択列挙部121により指定数Leに達するまでに列挙が完了した場合に、その時点で暫定選択列挙部121により列挙された列(実現可能山mj)が双対問題計算用列群Cとなる。また、後述する精製部123により精製された列(実現可能山mj)Ceの数と、暫定選択列挙部121により選択列挙された列(実現可能山mj)の数との和が指定数Leになるまで暫定選択列挙部121により再び選択列挙された列主双対ギャップz[j]が閾値TH1(=0)以下になる列(実現可能山mj)が、双対問題計算用列群Cとなる。暫定双対解導出部122は、例えば、CPLEX(登録商標)等の公知のソルバーを用いて線形計画法による最適化計算を行うことにより、双対問題計算用列群Cに対し、(8)式の制約式を満足する範囲で(10)式の目的関数Jの値を最大にする双対変数p[i]を暫定双対解p[i]として導出する。このように本実施形態では、暫定双対解p[i]は、暫定双対解導出部122により導出される双対解(所定の条件を満たしていない段階(本実施形態では、列挙法による列の列挙が完了していない段階)で導出される双対解((8)式の制約式を満足する範囲で(10)式の目的関数Jの値を最大にする双対変数p[i]))である。
[[精製部123]]
精製部123は、暫定双対解導出部122により導出された最新の暫定双対解p[i]を用いて、暫定選択列挙部121により得られた双対問題計算用列群Cに含まれる列(実現可能山mj)のそれぞれについて列主双対ギャップz[j]を導出する。精製部123は、暫定選択列挙部121により得られた双対問題計算用列群Cに含まれる列(実現可能山mj)のうち、列主双対ギャップz[j]が「0」以下になる列(実現可能山mj)Ceを抽出(選択)し、それ以外の列を削除(精製)する。
[[双対最適解導出部124]]
暫定選択列挙部121による列(実現可能山mj)の列挙が完了した時点(処理対象の積段数S(Sは最下段を1とする積段数である)の実現可能山mjが空集合φになった時点)における双対問題計算用列群Cに対し、(8)式の制約式を満足する範囲で(10)式の目的関数Jの値を最大にする双対変数p[i]を双対最適解popt[i]として導出する。また、双対最適解導出部124は、双対最適解popt[i]が得られたときの(10)式の目的関数Jの値を双対最適値VDoptとして導出する。このように本実施形態では、双対最適解popt[i]は、双対最適解導出部124により導出される双対解(所定の条件を満たした段階(本実施形態では、列挙法による列の列挙が完了した段階)で導出される双対解((8)式の制約式を満足する範囲で(10)式の目的関数Jの値を最大にする双対変数p[i]))である。
以上のように本実施形態では、原問題Pの列(実現可能山mj)の数が数千万から数億となるような大規模な双対問題Dを求解する場合に、双対問題求解部120は、小規模の部分問題(部分問題の規模は、列挙上限数である指定数Leで制限される)を繰り返し解く(列の選択列挙→選択列挙された列に対する暫定双対解p[i]の導出→クリティカルな列の抽出(精製)→列の再選択列挙を繰り返す)ことにより、双対最適解popt[i]を得る。この手法は、暫定双対解p[i]に対する列群を列挙上限数である指定数Leのサイズに分割して、双対最適解を求解する分割解法のように見える。しかしながら、この手法では、列主双対ギャップz[j]が「0」以下になる列群を残して、それに付け足す列(実現可能山mj)を特許文献1に記載のような手法により列挙するので、問題の全体最適性が損なわれることはない。なお、ここでのクリティカルな列とは、列主双対ギャップz[j]が「0」以下になる列を指す。
[[選択列挙部130]]
選択列挙部130は、鋼材情報取得部110により取得された鋼材情報と、列主双対ギャップz[j]に対する閾値TH2(>0)を入力する。選択列挙部130は、暫定選択列挙部121同様、列(実現可能山mj)を選択列挙する。ただし、暫定選択列挙部121との違いは、暫定選択列挙部121での抽出条件が、列主双対ギャップz[j]が閾値TH1(=0)以下になる列(実現可能山mj)であるのに対し、選択列挙部130での抽出条件は、列主双対ギャップz[j]が閾値TH1を上回る閾値TH2(>0)以下になる列(実現可能山mj)である((13)式および(14)式のTH1をTH2に置き換える。閾値TH2は、後述する(16)式のように設定される。また、暫定選択列挙部121では、列挙数が指定数Leになると列挙を中断したが、選択列挙部130では、そのような中断はなく、一気通貫で選択列挙する。本実施形態では、特許文献1に記載の方法で列(実現可能山mj)を列挙する方法を例に挙げて説明する。特許文献1に記載の方法は、[[暫定選択列挙部121]]の項で説明した通りである。
また、選択判定は、新たな列(実現可能山mj)が列挙される度に以下の処理を行う。即ち、双対問題求解部120(双対最適解導出部124)により導出された双対最適解popt[i]および双対最適値VDoptを用いて、新たに列挙された列(実現可能山mj)に対する列主双対ギャップz[j]が閾値TH2以下であるか否かを判定する。整数(0-1)計画問題である原問題Pを線形緩和した線形主問題に対する双対問題Dの最適値である双対最適値VDoptは、通常小数値を持つが、原問題Pの最適値は、目的関数の係数を整数値とすれば整数値となるので、原問題Pが最小化問題の場合、その値は必ずceil(VDopt)以上となる(ceil(x)は、天井関数(実数xに対してx以上の最小の整数を対応付ける関数)である)。従って、閾値TH2は、ceil(VDopt)-VDopt以上とする。本実施形態では、以下の(16)式のように閾値TH2を定める。
Figure 0007099315000018
ここで、nは、0以上の整数であり、例えば、2または3とする。これは、主双対ギャップが3以上となることが、山分け問題においては経験的に稀であることによる。選択列挙部130のその他の処理は、暫定選択列挙部121と同じであるので、その詳細な説明を省略する。選択列挙部130は、列(実現可能山mj)の列挙が完了した時点(処理対象の積段数Sの実現可能山mjが空集合φになった時点)における原問題計算用列群CTHを出力する。
[最適解導出部140]
最適解導出部140は、選択列挙部130により導出された原問題計算用列群CTHを用いて、CPLEX(登録商標)等の公知のソルバーを用いて0-1整数計画法による最適化計算を行うことにより、(2)式の制約式を満足する範囲で(4)式の目的関数Jの値を最小にする決定変数x[j]を最適解{x[jopt]}として導出する。
[出力部150]
出力部150は、最適解導出部140により導出された最適解{x[jopt]}を示す情報を山分け計画の情報として出力する。出力部150は、実現可能山のIDと、当該IDの実現可能山に属する鋼材のIDとを含む情報を山分け計画の情報とすることができる。鋼材のIDは、鋼材情報に含まれるIDである。また、出力部150は、鋼材情報に含まれる鋼材のサイズと、山積み制約とに基づいて、実現可能山に属する鋼材の当該実現可能山における積順を導出し、当該積順の情報を山分け計画の情報に含めてもよい。
出力の形態としては、例えば、コンピュータディスプレイへの表示、山分け計画作成装置100内の記憶媒体や外部の記憶媒体への記憶、および外部装置への送信の少なくとも1つを採用することができる。
また、出力部150は、山分け計画の情報と、鋼材情報に含まれる鋼材のヤードへの到着順と、ヤードの置き場における搬送機器(クレーン)の情報とに基づいて、どのタイミングでどの搬送機器によりどの鋼材をどの場所に搬送するのかを特定し、特定した内容に基づいて、搬送機器に対する動作指令を行うことができる。この場合には、出力部150は、山分け計画の情報を出力しなくてもよい。
<フローチャート>
次に、図3-1~図3-2のフローチャートを参照しながら、本実施形態の山分け計画作成装置100による山分け計画作成方法の一例を説明する。
まず、ステップS301において、鋼材情報取得部110は、鋼材情報を取得する。
次に、ステップS302において、暫定選択列挙部121は、ステップS301で取得された鋼材情報に基づいて、鋼材情報に含まれる鋼材から得られる鋼材ペアから禁止対の集合Fを導出する((11)式を参照)。
次に、ステップS303において、暫定選択列挙部121は、ステップS302により導出された禁止対の集合Fに基づいて、ステップS301で取得された鋼材情報に含まれる各鋼材iに対する上載せ可能集合U(i)(i∈N)を導出する((12)式を参照)。
次に、ステップS304において、暫定選択列挙部121は、積段数Sの値を「1」、山変数kの値を「0」に設定する。積段数Sは、最下段を1とする変数である。山変数kは、積段数Sにおける列(実現可能山mj)の集合BSの要素(列(積段数Sのノードに対応する実現可能山mj))を順番に指定するための変数である。集合BSの要素は、積段数(S-1)の実現可能山の集合BS-1の各要素に鋼材を付加(上載せ)することにより新たな実現可能山が生成され、その生成順に当該実現可能山に対する山変数kが「1」から昇順に正の整数値として付与される。
次に、ステップS305において、暫定選択列挙部121は、積段数S(=1)における列(実現可能山mj)の集合BSを設定する(図3-1では、列(実現可能山mj)の集合BSを山集合と表記している)。暫定選択列挙部121は、鋼材情報に含まれる鋼材集合を{1,2,・・・,n}とすると、BS(S=1)={{1},{2},・・・{n}}とする。即ち、暫定選択列挙部121は、鋼材情報に含まれる鋼材が重複なく且つ漏れなく1つずつ各列(実現可能山mj)に含まれるように、列(実現可能山mj)の集合BSを設定する。そして、暫定選択列挙部121は、当該列(実現可能山mj)を双対問題計算用列群Cに含める。
次に、ステップ306において、暫定選択列挙部121は、現在の積段数Sにおける列(実現可能山mj)の集合BSがφ(空集合)であるか否かを判定する。この判定の結果、現在の積段数Sにおける列(実現可能山mj)の集合BSがφ(空集合)である場合(ステップS306でYESの場合)、処理は後述するステップS324に進む。
一方、現在の積段数Sにおける列(実現可能山mj)の集合BSがφ(空集合)でない場合(ステップS306でNOの場合)、処理はステップS307に進む。1回目の列挙が終わった段階では、現在の積段数S(S=1、最下段)における列(実現可能山mj)の集合BSがφ(空集合)ではないので、現在の積段数Sにおける列(実現可能山mj)の集合BSがφ(空集合)ではない(ステップS306でNO)と判定される。処理がステップS307に進むと、暫定選択列挙部121は、山変数kの値に「1」を加算する。
次に、ステップS308において、暫定選択列挙部121は、山変数kに対応する列(実現可能山mj)が、現在の積段数Sにおける列(実現可能山mj)の集合BSにあるか否かを判定する。即ち、暫定選択列挙部121は、現在の積段数Sにおける列(実現可能山mj)の集合BSの要素(列(実現可能山mj))を全て選択したか否かを判定する。この判定の結果、山変数kに対応する列(実現可能山mj)が、現在の積段数Sにおける列(実現可能山mj)の集合BSにない場合(ステップS308でNOの場合)、処理はステップS309に進む。処理がステップS309に進むと、暫定選択列挙部121は、積段数Sの値に「1」を加算すると共に、山変数kの値を「0」に設定する。そして、処理は前述したステップS306に進む。これにより、次の積段数Sにおける処理が開始される。
一方、山変数kに対応する列(実現可能山mj)が、現在の積段数Sにおける列(実現可能山mj)の集合BSにある場合(ステップS308でYESの場合)、処理はステップS310に進む。処理がステップS310に進むと、暫定選択列挙部121は、現在の積段数Sにおける列(実現可能山mj)の集合BSから、山変数kに対応する列(実現可能山mj)を選択する。図3-1の説明では、この列(実現可能山mj)を実現可能山Sjkと表記する。また、この実現可能山Sjkを構成する要素の集合(鋼材集合)を{ik1,ik2,・・・ikS}とする。
次に、ステップS311において、暫定選択列挙部121は、ステップS310で選択した実現可能山Sjkから分枝可能な鋼材集合U(Sjk)を、ステップS303で導出した各鋼材iに対する上載せ可能集合U(i)を使って、U(Sjk)=U(ik1)∩U(ik2)・・・∩U(ikS)として導出する。図3-1の説明では、このようにして導出される鋼材集合U(Sjk)を、{iP1,iP2,・・・iPn}とする。
次に、ステップS312において、暫定選択列挙部121は、ステップS311で導出した鋼材集合U(Sjk)の要素(鋼材(iP1,i2,・・・iPn))を全て選択したか否かを判定する。この判定の結果、ステップS311で導出した鋼材集合U(Sjk)の要素を全て選択した場合(ステップS312でYESの場合)、処理はステップS307に戻る。そして、現在の積段数Sにおける列(実現可能山mj)の集合BSに含まれる次の要素(列(実現可能山mj))に対する処理が開始する。
一方、ステップS311で導出した鋼材集合U(Sjk)の要素を全て選択していない場合(ステップS312でNOの場合)、処理はステップS313に進む。処理がステップS313に進むと、暫定選択列挙部121は、ステップS311で導出した鋼材集合U(Sjk)の要素(鋼材(iP1,iP2,・・・,iPn))のうち未選択の要素を1つ選択する。図3-1の説明では、ここで選択される要素(鋼材)をiPrとする。
次に、ステップS314において、暫定選択列挙部121は、ステップS313で選択した要素(鋼材)iPrを、ステップS310で選択した実現可能山Sjkの最後の要素(最上段の位置に対応する要素)に加え、新しい実現可能山SjPrを作成する。この実現可能山SjPrを構成する要素の集合(鋼材集合)は{ik1,ik2,・・・ikS,iPr}になる。
次に、ステップS315において、暫定選択列挙部121は、ステップS314で作成した実現可能山SjPrが高さ制限を満たす(上限値以下)か否かを判定する。この判定の結果、ステップS314で作成した実現可能山SjPrが高さ制限を満たさない場合(ステップS315でNOの場合)、処理はステップS312に戻る。そして、ステップS311で導出した鋼材集合U(Sjk)の次の要素に対する処理が開始する。
一方、ステップS314で作成した実現可能山SjPrが高さ制限を満たす場合(ステップS315でYESの場合)、処理はステップS316に進む。処理がステップS316に進むと、暫定選択列挙部121は、ステップS314で作成した実現可能山SjPrに対する列主双対ギャップz[j]を導出する。このとき、後述するステップS322で導出された最新の暫定双対解p[i]を用いる。このように、現在の双対問題計算用列群Cに含まれる(抽出済みの)列(実現可能山Sj)を対象とする双対問題Pの暫定的な最適解である暫定双対解p[i]を用いて列主双対ギャップz[j]が導出される。ただし、ステップS322に到達する前の最初の処理では、暫定双対解p[i]がないので、ステップS316の処理は省略される。
次に、ステップS317において、暫定選択列挙部121は、(15-1)式または(15-2)式を用いて、ステップS314で作成した実現可能山SjPrを分枝対象に含めるか否かを判定する。この判定の結果、ステップS314で作成した実現可能山SjPrを分枝対象に含めない場合(ステップS317でNOの場合)、処理はステップS312に戻る。そして、ステップS311で導出した鋼材集合U(Sjk)の次の要素に対する処理が開始する。ここでも、ステップS322に到達する前の最初の処理では、暫定双対解p[i]がないので、ステップS317の判定処理は省略され、実現可能山SjPrを無条件に分枝対象BS+1に含める。
一方、ステップS314で作成した実現可能山SjPrを分枝対象に含める場合(ステップS317でYESの場合)、処理はステップS318に進む。処理がステップS318に進むと、暫定選択列挙部121は、積段数S+1における列(実現可能山mj)の集合BS+1の要素に、ステップS314で作成した実現可能山SjPrを含める。これにより、(15-1)式または(15-2)式を満たす実現可能山SjPrが、次の積段数S+1(次のステップS309以降)の処理において分枝の対象になる。ステップS318において、積段数S+1における列(実現可能山mj)の集合BS+1の要素に含められない実現可能山SjPrは、分枝の対象にならない。
次に、ステップS319において、暫定選択列挙部121は、ステップS316で導出した列主双対ギャップz[j]が閾値TH1(=0)以下であるか否かを判定する。この判定の結果、ステップS316で導出した列主双対ギャップz[j]が閾値TH1(=0)以下でない場合(ステップS319でNOの場合)、処理はステップS312に戻る。そして、ステップS311で導出した鋼材集合U(Sjk)の次の要素に対する処理が開始する。
一方、ステップS316で導出した列主双対ギャップz[j]が閾値TH1(=0)以下である場合(ステップS319でYESの場合)、処理はステップS320に進む。処理がステップS320に進むと、暫定選択列挙部121は、ステップS314で作成した実現可能山SjPrを双対問題計算用列群Cに含める。このステップS319の判定処理も、ステップS322に到達する前の最初の処理では、暫定双対解p[i]がないので、省略され、実現可能山SjPrを無条件に双対問題計算用列群Cに含める。
次に、ステップS321において、暫定選択列挙部121は、双対問題計算用列群Cに含まれる実現可能山Sjの数(|C|)の数が指定数Leを上回るか否かを判定する。この判定の結果、双対問題計算用列群Cに含まれる実現可能山Sjの数(|C|)の数が指定数Leを上回らない場合(ステップS321でNOの場合)、処理はステップS312に戻る。そして、ステップS311で導出した鋼材集合U(Sjk)の次の要素に対する処理が開始する。
一方、双対問題計算用列群Cに含まれる実現可能山Sjの数(|C|)の数が指定数Leを上回る場合(ステップS321でYESの場合)、処理はステップS322に進む。処理がステップS322に進むと、暫定双対解導出部122は、現在の双対問題計算用列群Cに対し、(8)式の制約式を満足する範囲で(10)式の目的関数Jの値を最大にする双対変数p[i]を暫定双対解p[i]として導出する。
次に、ステップS323において、精製部123は、ステップS322で導出された暫定双対解p[i]を用いて、現在の双対問題計算用列群Cに含まれる列(実現可能山mj)のそれぞれについて列主双対ギャップz[j]を導出する。精製部123は、暫定選択列挙部121により得られた双対問題計算用列群Cに含まれる列(実現可能山mj)のうち、列主双対ギャップz[j]が「0」以下になる列(実現可能山mj)Ceを抽出(選択)し、それ以外の列を削除する。このようにして、精製部123は、双対問題計算用列群Cを更新する。ここでの精製部123による処理により、実現可能山Sjの数(|C|)の数が指定数Leから、|Ce|に削減される。実際の山分け問題での計算例では、例えば、Le=5,000,000に設定した場合、最初の精製部123の処理により5,000,000から|Ce|は数百程度となり、列挙再開後に、列挙数が再び、指定数Leに達することなく、数百から数千程度の最終列挙数で列挙が完了することが判っている。つまり、本実施形態によれば、列挙数が最初に指定数Leに達した際に算出した暫定双対解p[i]により、列挙法と組み合わせることにより、実質最初に算出した暫定双対解p[i]により、双対最適解popt[i]を得るために必要な列群を求めることができており、列生成法に比べ極めて効率の良い手法といえる。
前述したようにステップS306において、現在の積段数Sにおける列(実現可能山mj)の集合BSがφ(空集合)であると判定された場合(ステップS306でYESの場合)、処理はステップS324に進む。処理がステップS324に進むと、双対最適解導出部124は、(最新の)双対問題計算用列群Cに対し、(8)式の制約式を満足する範囲で(10)式の目的関数Jの値を最大にする双対変数p[i]を双対最適解popt[i]として導出する。また、双対最適解導出部124は、双対最適解popt[i]が得られたときの(10)式の目的関数Jの値を双対最適値VDoptとして導出する。
そして、処理は図3-2のステップS325に進む。ステップS325~S341の処理は、選択列挙部130が、ステップS322で導出される暫定双対解p[i]に代えてステップS324により導出された双対最適解popt[i]を用いると共に、閾値TH1(=0)に代えて閾値TH2(>0)を用いて、図3-1のステップS304~S320の処理と同様の処理を実行することにより実現される。また、双対問題計算用列群Cを原問題計算用列群CTHとする。したがって、ここでは、これらの処理の詳細な説明を省略する。ただし、ステップS325の段階で双対最適解popt[i]が得られているので、S=1の段階から、双対最適解popt[i]を使い、列主双対ギャップz[j]を求め、原問題計算用列群CTHに含めるべきかを判定する。
ステップS325において、現在の積段数Sにおける列(実現可能山mj)の集合BSがφ(空集合)であると判定された場合(ステップS325でYESの場合)、処理はステップS342に進む。処理がステップS342に進むと、最適解導出部140は、その時点における原問題計算用列群CTHを用いて、(2)式の制約式を満足する範囲で(4)式の目的関数Jの値を最小にする決定変数x[j]を最適解{x[jopt]}として導出する。
次に、ステップS343において、出力部150は、ステップS342で導出された最適解{x[jopt]}を示す情報を山分け計画の情報として出力する。これにより、図3-2のフローチャートによる処理が終了する。
<まとめ>
以上のように本実施形態では、ステップS310、S311で公知の列挙法により、指定数Leまで列(実現可能山mj)を列挙し、ステップS316で現在の双対問題計算用列群Cに含まれる列(実現可能山mj)のそれぞれについて列主双対ギャップz[j]を、前回のステップS322で導出された暫定双対解p[i]を用いて導出し、ステップS320で双対問題計算用列群Cに含まれる列(実現可能山mj)のうち、列主双対ギャップz[j]が「0」以下になる列(実現可能山mj)Ceを精製し、それ以外の列を削除する。そして、以上の列(実現可能山mj)Ceの選択列挙を再開することを、ステップS306(およびS312)で、公知の列挙法による全ての列(実現可能山mj)Ceの列挙が完了すると判定されるまで繰り返す。従って、列主双対ギャップz[j]が「0」以下になる列(実現可能山mj)Ceの抽出の初期の段階で大幅に列(実現可能山mj)を削減することができる。そして、列(実現可能山mj)Ceの選択列挙の再開後は、暫定双対解p[i]を用いて選択列挙されるので実現可能山Sjの数(|C|)の数が指定数Leになることが抑制される。従って、前述した繰り返しの計算の回数が少なくなる。よって、従来のように列生成子問題による列の生成とそれまでに生成された列による双対問題の求解との繰り返しを行う場合に比べ、繰り返しの計算を削減することができる。
(第2の実施形態)
次に、第2の実施形態を説明する。第1の実施形態では、選択列挙部130により導出された原問題計算用列群CTHを対象として、制約式として(2)式のみを用いた集合分割問題を解く場合を例に挙げて説明した。これに対し、本実施形態では、集合分割問題を解く際の解空間を限定する手法について説明する。このように本実施形態と第1の実施形態とは、原問題計算用列群CTHを得た後の処理が主として異なる。従って、本実施形態の説明において、第1の実施形態と同一の部分については、図1~図3に付した符号と同一の符号を付す等して詳細な説明を省略する。
<山分け計画作成装置400>
図4は、山分け計画作成装置400の機能的な構成の一例を示す図である。山分け計画作成装置400のハードウェアは、第1の実施形態の山分け計画作成装置100と同じハードウェアで実現することができる。
図4に示すように、山分け計画作成装置400は、鋼材情報取得部110と、双対問題求解部120と、選択列挙部130と、最適解導出部440と、出力部150とを有する。
[鋼材情報取得部110、双対問題求解部120、選択列挙部130、出力部150]
鋼材情報取得部110、双対問題求解部120、選択列挙部130、および出力部150は、第1の実施形態で説明したものと同じである。双対問題求解部120により、双対最適解popt[i]および双対最適値VDoptが得られ、選択列挙部130により、原問題計算用列群CTHが得られる。
第1の実施形態で説明したように、双対最適解popt[i]は、暫定選択列挙部121による列(実現可能山mj)の列挙が完了した時点(処理対象の積段数Sの実現可能山mjが空集合φになった時点(ステップS306でYESと判定された時点))における双対問題計算用列群Cに対する双対最適解(ステップS324で導出される双対最適解)である。
双対最適値VDoptは、双対最適解popt[i]が得られたときの双対問題Dの目的関数Jの値である。
原問題計算用列群CTHは、暫定選択列挙部121による列(実現可能山mj)の列挙が完了した時点(処理対象の積段数Sの実現可能山mjが空集合φになった時点(ステップS327でYESと判定された時点))における列(実現可能山mj)の集合である。
[最適解導出部440]
最適解導出部440は、最適解導出部140に対応するものである。以下、最適解導出部440が有する機能の一例を説明する。
[[量子化部441]]
双対問題求解部120により導出される双対最適解popt[i]は、(8-1)式の連立方程式の解とみなすことができる。また、(8-1)式の係数に当たるmj[i](i∈N,mj∈C)、cjは、「0」以上の整数である。従って、双対最適解popt[i]、「0」以上の整数の四則演算により得られる。よって、双対問題求解部120により導出される双対最適解popt[i](i∈N)は、有理数である。
このことから双対最適解popt[i](i∈N)は、既約分数で表すことができる。双対最適解popt[i]を既約分数で表記した場合の分母の最小公倍数をdlcmとする。尚、2つの要素の最小公倍数は、両者の積を最大公約数で割ればよい。3つ以上の要素の最小公倍数は、2つの要素の最小公倍数と3つ目の要素とで、改めて最小公倍数を求めることを繰り返し求めればよい。また、最大公約数は、ユークリッドの互除法等で求めることができる。
量子化部441は、双対最適解popt[i]を既約分数で表記した場合の分母の最小公倍数dlcmを導出する。そして、量子化部441は、選択列挙部130により得られた原問題計算用列群CTHに含まれる列(実現可能山mj)のそれぞれの列主双対ギャップz[j](=cj-popt[i]・mj)に最小公倍数dlcmを掛けた値を、量子化した列主双対ギャップq[j](=dlcm×z[j])として導出する。
[[分類部442]]
分類部442は、選択列挙部130により得られた原問題計算用列群CTHに含まれる列(実現可能山mj)を、量子化部441により導出された、量子化した列主双対ギャップq[j]に基づいて分類する。本実施形態では、分類部442は、量子化した列主双対ギャップq[j]の値として同じ値を持つ列(実現可能山mj)を同じ列グループとする。量子化した列主双対ギャップq[j]の値が小さい列グループほど、選択の優先順位が高い列グループとする。
[[選別部443]]
選別部443は、分類部442で得られた列グループを、選択の優先順位が高いものから順番に量子条件を満たすまで選択して選択済みの列グループに追加する。そして、選別部443は、量子条件を満たすときまでに選択されている列グループ(列(実現可能山mj)の組み合わせ)のパターンとして1つまたは複数のパターンを選択する。
〔量子条件〕
ここで、図5を参照しながら量子条件について説明する。
弱双対定理によれば、(最小化問題である)原問題Pを線形緩和した主問題の目的関数Jの値は常に双対問題Dの目的関数Jの値以上になるが、最適解に限り両者は一致する。しかしながら、原問題Pが整数計画問題(IP)であり、双対問題Dが線形計画問題(LP)の場合には、最適解が得られても、原問題Pの目的関数Jの最適値と双対問題Dの目的関数Jの最適値は必ずしも一致せず、原問題Pの目的関数Jの最適値は、双対問題Dの目的関数Jの最適値以上(原問題Pの目的関数Jの最適値≧双対問題Dの目的関数Jの最適値)となる。その差が主双対ギャップ即ち誤差Gd(≧0)として生じる。このような誤差Gdが生じるのは、整数計画問題(IP)のみに課される制約式(x[j]∈{0,1})が存在するためである(2)式を参照)。
この関係は解全体に関するものである。集合分割問題では、目的関数が、最適解を構成する決定変数x[j]の列コスト(評価値)cjの和として記述できることから、解を構成する要素x[j]毎に、この関係が成り立つ。即ち、決定変数x[j]の原問題Pの評価値(列コストcj)と、決定変数x[j]の双対問題Dの評価値(双対コストΣi∈Mjp[i])には、以下の(17)式の関係が成り立つ。尚、Mjは、最終的に選択列挙部130で抽出された実現可能山mj(原問題計算用列群CTHに含まれる実現可能山mj)を指す。
Figure 0007099315000019
図5では、集合分割問題の最適解として選ばれた列(実現可能山mj)が、m12、m53、m77、m106、m204、m380、即ち、決定変数x[12]、x[53]、x[77]、x[106]、x[204]、x[380]の値が「1」となった場合を例に挙げて示す(図5において、値の欄が1であることはこのことを示す)。また、鋼材IDは、列(実現可能山mj)を構成する各鋼材の識別番号を示す。例えば、実現可能山m12を構成する鋼材は、鋼材IDが「55」、「60」、「54」、「56」の鋼材であることを示す。c2jは、(4)式、(4-1)式に示す積み替え数であり、実現可能山mjを形成する際に発生する鋼材の仮置き数を表す。cjは、(4-1)式に示す列コストcjである(ただし、k1=5.0、k2=1.0)。Σi∈Mjp[i]は、該当する最適解として選ばれた山の双対コストである。z[j]は、その山の列主双対ギャップであり、z[j]・dlcmは、量子化した列主双対ギャップである。
また、図5において、原問題Pの目的関数Jの最適値は、列コストcjの和であり、「38」である((4)式、(4-1)式を参照)。双対問題Dの目的関数Jの最適値は、双対コストΣi∈Mjp[i]の和、即ちΣi∈Np[i]であり、「37.1」である((10)式を参照)。前者から後者を引いた値(=0.9(38-37.1))が、誤差Gd(原問題P(主問題)の目的関数Jの最適値に対する、双対問題Dの目的関数Jの最適値の誤差)になる。以下の説明では、この誤差Gdを、必要に応じて、主双対ギャップと称する。
また、図5に示すよう、原問題Pの最適解を構成する列(実現可能山mj)に対する列主双対ギャップz[j]の和も「0.9」になる。すると、主双対ギャップGdと、原問題Pの最適解を構成する列(実現可能山mj)に対する列主双対ギャップz[j]との関係は、以下の(18)式で表される。
Figure 0007099315000020
原問題P(主問題)の目的関数Jの最適値は、全ての列(実現可能山mj)を列挙して集合分割問題を解くことにより得られるが、全ての列(実現可能山mj)を列挙しない場合には不明である。ただし、(17)式より、原問題P(主問題)の目的関数Jの最適値は、双対最適値VDopt以上の整数であることは分かる。図5に示す例では、原問題P(主問題)の目的関数Jの最適値が「38」、「39」、「40」、・・・のいずれかであることは分かる。原問題P(主問題)の目的関数Jが最適値であるときの主双対ギャップGd_optが分かれば、列主双対ギャップz[j]の和が、当該主双対ギャップGd_optになるように列主双対ギャップz[j]の組み合わせを求めることにより、当該列主双対ギャップz[j]を持つ列(実現可能山mj)を最適解として導出することができる。このことは、最適解を特定する条件そのものを示すことから、(18)式は、最適解の条件式である。
主双対ギャップGdの取り得る値は、ceil(VDopt)-VDopt+n(n=0,1,2,・・・)である。従って、その候補の内、値の小さいもの即ちn=0,1,2,・・・の順に、主双対ギャップGdを選択することとなるが、本実施形態では、後述するように選別部133により、列主双対ギャップz[j]を順次拡張するのに合わせ、主双対ギャップGd即ち上記nを適宜更新する方法((21-1)式~(21-3)式)をとり、列主双対ギャップz[j]の和が、選択した主双対ギャップGdになるような列主双対ギャップz[j]の組み合わせがあるか否かを判定し、選択した主双対ギャップGdになるような列主双対ギャップz[j]の組み合わせがあれば、当該列主双対ギャップz[j]の組み合わせを持つ列(実現可能山mj)を最適解として導出することができる。一方、選択した主双対ギャップGdになるような列主双対ギャップz[j]の組み合わせがなければ、列主双対ギャップz[j]の選択範囲および、それに伴う主双対ギャップGdを更新し、同様の判定を行って最適解を探索する。以上のように、取り得る値が小さなものから順に主双対ギャップGdを選択して、列主双対ギャップz[j]の和が、選択した主双対ギャップGdになるような列主双対ギャップz[j]の組み合わせとして最初に見つかった列主双対ギャップz[j]を持つ列(実現可能山mj)が最適解の候補となる。
ただし、列主双対ギャップz[j]は有理数(循環小数)である。このため、列主双対ギャップz[j]を整数値として扱わないと、前記の「選択した主双対ギャップGdになるような列主双対ギャップz[j]組み合わせがあるか否かの判定」が、行いづらく、またその際に計算機誤差が生じる虞がある。このことから前述したように本実施形態では、列主双対ギャップz[j]を量子化する。量子化した列主双対ギャップz[j]をq[j](=dlcm×z[j])とする。そうすると、以下の(19)式が成り立つときの量子化した列主双対ギャップq[j]を持つ列(実現可能山mj)が最適解になる。
Figure 0007099315000021
(19)式を、原問題Pの最適解の求解のための量子条件と称する。原問題Pの集合分割問題を解く際に、この量子条件を満たす列(実現可能山mj)の組み合わせの中から最適解が選ばれるようにする制約条件を加えることで、最適解を高速に求解することができる。
尚、図5に示す例では、最小公倍数dlcmは「30」である。従って、n=0の場合の主双対ギャップGd(=Gd_opt)を量子化すると「27(=0.9×30)」になる。量子化部441は、このようにして主双対ギャップGd(=Gd_opt)についても量子化する。
〔選別部443の処理〕
選別部443は、以上の量子条件を満たす列(実現可能山mj)の組み合わせとして、1つまたは複数の組み合わせを選別する。選別部443の処理の一例を説明する。以下の説明では、量子化した列主双対ギャップq[j]を、必要に応じて、量子化列主双対ギャップq[j]と称する。
まず、選別部443は、量子化列主双対ギャップq[j]の抽出上限値qgapを設定する。抽出上限値qgapの初期値は、例えば「0」である。
次に、選別部443は、分類部442により得られた列グループから、抽出上限値qgapの量子化列主双対ギャップq[j]に対応する列グループを選別結果に追加する。
次に、選別部443は、量子化列主双対ギャップqgapの列グループの追加により拡張した列(実現可能山mj)から、量子条件を満たす列(実現可能山mj)の組み合わせが存在するか否かを判定する。この判定の結果、量子条件を満たす列(実現可能山mj)の組み合わせが存在しない場合、選別部443は、抽出上限値qgapを大きくする。例えば、選別部443は、量子化部441により導出された量子化列主双対ギャップq[j]を昇順に選択して、抽出上限値qgapを設定する(大きくする)ことができる。選別部443は、抽出上限値qgapの設定と、量子条件を満たす列(実現可能山mj)の組み合わせの有無の判定と、を、量子条件を満たす列(実現可能山mj)の組み合わせが得られるまで繰り返し行う。
量子条件を満たす列(実現可能山mj)の組み合わせが存在するか否かを判定するために、本実施形態では、以下の(20)式を満たすrl(=(r1,r2,・・・,rk)が存在するか否かを判定する。
Figure 0007099315000022
ここで、抽出上限値qgapの現在値をqkとする、抽出上限値qgapの現在値qk以下の量子化列主双対ギャップq[j]の要素を(q0,q1,q2,・・・,qk)とする(q0=0)。これらの量子化列主双対ギャップq[j]を持つ列(実現可能山mj)の数を、(t0,t1,t2,・・・,tk)とする。量子化列主双対ギャップq[j]を持つ列(実現可能山mj)の数は、分類部442により、当該量子化列主双対ギャップq[j]を持つものとして同一の列グループ内に分類された列(実現可能山mj)の数である。
また、Gq_gapは、以下の(21-1)式~(21-3)式で与えられる。
Figure 0007099315000023
前述したように、取り得る値が小さなものから順に主双対ギャップGdを選択して、列主双対ギャップz[j]の和が、選択した主双対ギャップGdになるような列主双対ギャップz[j]の組み合わせとして最初に見つかった列主双対ギャップz[j]を持つ列(実現可能山mj)が最適解となる可能性がある。図5に示す例では、原問題P(主問題)の目的関数Jの最適値が「38」、「39」、「40」、・・・であることは分かる。従って、主双対ギャップGdの取り得る値は、「0.9」、「1.9」、「2.9」、・・・になる。これらの主双対ギャップGdを量子化すると、「27(=0.9×30)」、「57(=1.9×30)」、「87(=2.9×30)」、・・・になる。
この例では、(21-1)式は、抽出上限値qgapの現在値qkが「27」未満である場合に適用される。(21-2)式は、抽出上限値qgapの現在値qkが「27」、「57」、「87」の場合に適用される(n=0、1、2とすることにより、それぞれ、抽出上限値qgapの現在値qkが「27」、「57」、「87」のときに、(21-2)式を満たすことができる)。(21-3)式は、抽出上限値qgapの現在値qkが「27」超「57」未満、「57」超「87」未満の場合に適用される。(21-2)式が適用される場合、(21-2)式のthenの後の1つ目の式(Gq_gap=(ceil(VDopt)-VDopt)・dclm+n・dclm)が与えられた(20)式を満たすrl(=(r1,r2,・・・,rk)が存在することと、(22-2)式のthenの後の2つ目の式(Gq_gap=(ceil(VDopt)-VDopt)・dclm+(n+1)・dclm)が与えられた(20)式を満たすrl(=(r1,r2,・・・,rk)が存在することとの少なくとも何れかが成立する場合に、(20)式を満たすrl(=(r1,r2,・・・,rk)が存在すると判定される。両方が成立する場合は、1つ目の式に対応するGq_gapに対しての計算から行い、それによって解が得られない場合、2つ目の式に対応するGq_gapに対しての計算を行う。
[[求解部444]]
抽出上限値qgapの現在値qkを初期値(例えば「0」)から順に大きくして、選別対象の列(実現可能山mj)群の範囲を順次拡張し、(18)式を満足する列(実現可能山mj)の組み合わせが存在する場合は、原問題Pの部分問題P(Cq)の最適解を求解し、存在しない場合は、抽出上限値qgapを分類部442において次の値に拡張することを繰り返す過程で最初に得られる当該部分問題P(Cq)の最適解は、原問題Pの最適解になる。このことは、以下の定理Iにより得られる。
〔定理I〕
『閾値THがn+fD(fD=ceil(VDopt)-VDopt、n:0(ゼロ)以上の整数)のとき、列主双対ギャップz[j]が当該閾値TH以下の列jによる列群CTHにより得られた部分問題P(n+fD)の最適値J(n+fDoptがceil(VDopt)+n+1以下なら、当該最適値J(n+fDoptは、原問題Pの最適値Joptである』
ここで、ceil(x)は、天井関数(実数xに対してx以上の最小の整数を対応付ける関数)である。
〔証明〕
閾値THをn+fDとして得られた部分問題P(TH)の最適値J(n+fDoptがceil(VDopt)+n+1であるとし、これが原問題Pの最適値ではないとする。即ち、原問題Pの最適値Joptは、ceil(VDopt)+n以下であり、それを得るために最適解の構成要素となり得る列を抽出するための閾値THを、n+fDよりも拡張する(大きくする)必要があると仮定する。
そこで、閾値THをn+fD+α(0<α≦1の正数)とする。ここで、拡張した部分問題P(n+fD+α)において新たに加わる列の中には、列主双対ギャップz[j]が以下の(22)式を満たす列jが少なくとも一つは必ず追加される。閾値THを拡張した後の列jの拡張範囲から列jが抽出されなければ解の改善はあり得ないからである。
Figure 0007099315000024
この閾値THの拡張により新たに追加される列jの列主双対ギャップz[j]を以下の(23)式とする。
Figure 0007099315000025
そうすると、拡張した部分問題P(n+fD+α)の最適値J(n+fD+α)optは、VDopt+n+fD+β以上の整数値となる。つまり、以下の(24)式が成り立つ。
Figure 0007099315000026
従って、閾値THを拡張しても、拡張した部分問題P(n+fD+α)の最適値J(n+fD+α)optは、ceil(VDopt)+nを上回り、原問題Pの最適値Joptの下限値はceil(VDopt)+n+1となる。これは、原問題Pの最適値Joptをceil(VDopt)+n以下と仮定したことに矛盾する。従って、前述した仮定に誤りがあり、閾値THがn+fDであるときに得られた部分問題P(n+fD)の最適値J(n+fDoptがceil(VDopt)+n+1以下なら、当該最適値J(n+fDoptは、原問題Pの最適値Joptであることが証明された。(Q.E.D.)
ここで定理Iは、TH=n+fDである場合にのみ成立し、閾値THに対し連続的に成り立つわけではない。これが成り立たない(n-1)+fD≦TH<n+fDである場合には、『(補足定理I):閾値THが(n-1)+fD≦TH<n+fDである場合、列主双対ギャップz[j]が当該閾値TH以下の列jを全て含む列群CTHにより得られた部分問題P(TH)の最適値J(TH)optがceil(VDopt)+n以下なら、当該最適値J(TH)optは、原問題Pの最適値Joptである(ただし(n-1)+fDが負の場合は0とする)。』となる。これは、定理Iより、TH=(n-1)+fDである場合に、部分問題P(TH)の最適値J(TH)optがceil(VDopt)+(n-1)+1(=ceil(VDopt)+n)以下なら、原問題Pの最適解と判定できるので、それより大きいTHに対しても成立する。一方、列主双対ギャップz[j]がn+fDの列を追加した場合、その部分問題の最適値がVDopt+n+fD(=ceil(VDopt)+n)となる可能性があるので、ceil(VDopt)+n+1を原問題の最適値と判定することはできず、補足定理Iが成り立つ。
図5に示す例では、定理Iは、抽出上限値qgapの現在値qkが「27」、「57」、「87」、・・・のときに成り立ち、27超57未満、57超87未満のときには成り立たない。(n+fD)<TH<{(n+1)+fD}の場合には、部分問題P(TH)の最適値J(TH)optが、(VDopt+n+1+fD)以下の場合に、原問題Pの最適解とみなせる。閾値THを「0」から順次大きくしている前提では、閾値THがn+fD(TH=n+fD)の時点で(VDopt+n+fD)以下の解が得られていないならば、定理Iより、原問題Pの最適値は、(VDopt+n+fD)を上回るからである。
従って、抽出上限値qgapを初期値(例えば「0」)から順に大きくして、選別対象の列(実現可能山mj)群の範囲を順次拡張して、(20)式、(21-1)式~(21-3)式を満たすrl(=(r1,r2,・・・,rk)が存在する場合に、(19)式を条件に加えた原問題Pの部分問題P(Cq)の最適解の主双対ギャップが、(21-1)式~(21-3)式のGq_gap(以下)であることが成立するまで繰り返し行えば、抽出上限値qgapが適当な値であるときに原問題Pの最適解が得られる。
例えば、図5に示す例では、抽出上限値qgapの現在値qkが「26」の時点では、原問題Pの部分問題P(Cq)の最適値が「39」であっても、当該最適値が原問題Pの最適値であると判定することはできない。抽出上限値qgapの現在値qkが「26」のときには、(21-1)式よりGq_gap=27なので、この時点(qk=26)では、部分問題P(Cq)の最適値が「38」(以下)でなければ、補足定理Iより、原問題の最適解とは判定できないからである。つまり、抽出上限値qgapが「27」のときに、原問題Pの部分問題P(Cq)の最適値が「38」になる可能性があるからである。
次に、抽出上限値qgapの現在値qkが「27(TH=dlcm・(ceil(VDopt)-VDopt))」のときには、定理Iの前提条件が成り立つ。従って、抽出上限値qgapの現在値qkが「27」の時点では(VDopt=37.1)、(21-2)式より、まず、Gq_gap=27として求解した原問題Pの部分問題P(Cq)の最適値が「38(=ceil(VDopt))」とならない場合、Gq_gap=57として求解した部分問題P(Cq)の最適値が「39(=ceil(VDopt)+1)」であれば、これは、定理Iのn=0のケースに該当するので、この際の部分問題P(Cq)の最適解は、原問題Pの最適解であると判断できる。
次に、抽出上限値qgapの現在値qkが「28」のときには、(21-3)式よりGq_gap=57なので、この時点(qk=28)では、部分問題P(Cq)の最適値が「39」(以下)でなければ、補足定理Iより、原問題Pの最適解とは判定できない。
〔求解部444の処理〕
原問題Pの部分問題P(Cq)の最適値J(Cq)の下限値(下界値)は、抽出上限値qgapを前記のように「0」から逐次拡張していく場合、その現在値qkが、定理Iの前提条件であるqk=n+fDの際、部分問題P(Cq)の最適値が、ceil(VDopt)+n+1以下でない場合、抽出上限値qgapをqkの次に拡張したqk+1の際には、部分問題P(Cq)の最適値は、(定理Iの証明と同様の議論で)ceil(VDopt)+n+1未満にはなり得ず、ceil(VDopt)+n+1であれば、最適値と判定できる。即ち、抽出上限値qgapがn+fDを超え、n+1+fDまでは、部分問題P(Cq)の目的関数下限値はceil(VDopt)+n+1となり、その時に限り、原問題の最適値と判定できる。この様に、抽出上限値qgapを0から逐次拡張し、拡張した列群に対する部分問題P(Cq)を順次求解していく際の、部分問題P(Cq)の目的関数下限制約を以下の(25-1)式または(25-2)式のように定めることができる。つまり、抽出上限値qgapの現在値qkが、以下の(25-1)式のif条件を満たす場合、原問題Pの部分問題P(Cq)を求解する際、その目的関数J(Cq)に対し、下限値ceil(VDopt)を設定でき、求解結果が、下限値ceil(VDopt)と一致する場合には、その部分問題P(Cq)の解をを原問題Pの最適値と判断できる。同様に、抽出上限値qgapの現在値qkが、以下の(25-2)式のif条件を満たす場合、部分問題P(Cq)を求解する際、その目的関数J(Cq)に対し、下限値ceil(VDopt)+(n+1))を設定でき、求解結果が、それと一致する場合には、当該最適値J(Cq)を原問題Pの最適値と判断できる。
Figure 0007099315000027
また、選別部443により量子条件を満たすと判定される列(実現可能山mj)の組み合わせrl(=(r1,r2,・・・,rk)が複数存在する場合がある。列(実現可能山mj)の組み合わせrlのパターンがeパターン(eは正の整数)あるものとする。これらを、(r11,r12,・・・,r1k)、(r21,r22,・・・,r2k)、・・・、(re1,re2,・・・,rek)と表記する。また、選別部443により量子条件を満たすと判定された時点での抽出上限値qgap以下の量子化列主双対ギャップq[j]の各要素(q1,q2,・・・,qk)における列(実現可能山mj)の数を(t1,t2,・・・,tk)と表記する。また、eパターンの列(実現可能山mj)の組み合わせrlのそれぞれについて、当該パターンを解として採用する場合に「1」、そうでない場合に「0」とする0-1変数をδ[p](p=1,・・・,e)とする。そうすると、最適解が存在するとすれば、量子条件を満たすeパターンのいずれかであることから、以下の(26)式~(28)式が成り立つようにする必要がある。
Figure 0007099315000028
(26)式と(27)式により、解として採用される列(実現可能山mj)の総和と、選別部443により量子条件を満たすと判定された列(実現可能山mj)の組み合わせ(の1つ)rplを構成する列(実現可能山mj)の総和が等しくなる必要があることが規定される。
(28)式により、選別部443により量子条件を満たすと判定された列(実現可能山mj)の組み合わせを必ず1つ選ばなければならないことが規定される。
求解部444は、選別部443により、量子条件を満たす列(実現可能山mj)の組み合わせrl(=(r1,r2,・・・,rk)が存在すると判定されると、当該列(実現可能山mj)の組み合わせrl(=(r1,r2,・・・,rk)を用いて、(2)式に加えて、(25-1)式または(25-2)式および(26)式~(28)式の制約式を満足する範囲で(4)式の目的関数Jの値を最小にする決定変数x[j]を最適解{x[jopt]}として導出する。
一方、求解部444は、以上のようにして最適解{x[jopt]}を導出することができない場合、抽出上限値qgapを大きくする。そして、選別部443は、この抽出上限値qgapを初期値として、抽出上限値qgapの設定と、量子条件を満たす列(実現可能山mj)の組み合わせの有無の判定と、を、量子条件を満たす列(実現可能山mj)の組み合わせが得られるまで繰り返し行う。量子条件を満たす列(実現可能山mj)の組み合わせが得られると、求解部444は、量子条件を満たす列(実現可能山mj)の組み合わせを用いて、最適解{x[jopt]}の導出と、最適解{x[jopt]}の有無の判定と、を行う。
以上のようにして求解部444により最適解{x[jopt]}が導出されると、出力部150は、当該最適解{x[jopt]}を示す情報を山分け計画の情報として出力する。
<フローチャート>
次に、図6のフローチャートを参照しながら、本実施形態の山分け計画作成装置400による山分け計画作成方法の一例を説明する。図6のフローチャートは、図3-2のステップS342に代えて行われるものである。本実施形態の山分け計画作成装置400による山分け計画作成方法のその他の部分は、図3-1および図3-2に示したフローチャートと同じである。
まず、ステップS601において、量子化部441は、図3-1のステップS324で導出された双対最適解popt[i]を既約分数で表記した場合の分母の最小公倍数dlcmを導出する。
次に、ステップS602において、量子化部441は、ステップS341で抽出された原問題計算用列群CTHに含まれる列(実現可能山mj)のそれぞれの列主双対ギャップz[j](=cj-popt[i]・mj)に最小公倍数dlcmを掛けた値を、量子化列主双対ギャップq[j]として導出する。
次に、ステップS603において、分類部442は、ステップS341で抽出された原問題計算用列群CTHに含まれる列(実現可能山mj)のうち、ステップS602で導出された量子化列主双対ギャップq[j]の値として同じ値を持つ列(実現可能山mj)を同じ列グループにして、ステップS341で抽出された原問題計算用列群CTHに含まれる列(実現可能山mj)を分類する。
次に、ステップS604において、選別部443は、量子化列主双対ギャップq[j]の抽出上限値qgapを初期化する。抽出上限値qgapの初期値は、ステップS603において、分類部442により、CTHを量子化列主双対ギャップq[j]毎に分類した際の最も小さい量子化列主双対ギャップq[j]の値に設定する。これは、通常例えば「0」である。
次に、ステップS605において、選別部443は、ステップS603で、量子化列主双対ギャップq[j]毎に分類された列(実現可能山mj)から、抽出上限値qgapの量子化列主双対ギャップq[j]に対応する列グループ(実現可能山mj)を選別結果に追加する。
次に、ステップS606において、選別部443は、ステップS605で拡張された列(実現可能山mj)の中に、量子条件を満たす列(実現可能山mj)の組み合わせ((20)式を満たすrl(=(r1,r2,・・・,rk))が存在するか否かを判定する。このとき、選別部443は、図3-1のステップS324で導出された双対最適値VDoptと、ステップS604または後述するステップS607で設定された抽出上限値qgapと、ステップS601で導出された最小公倍数dlcmとに基づいて(21-1)式~(21-3)式の何れの条件に該当するかを判定し((21-1)式~(21-3)式のif文を参照)、該当する条件に対応する式を用いて、主双対ギャップの最適値Gq_gap((20)式におけるGq_gap)を導出する((21-1)式~(21-3)式のthen以下を参照)。この判定の結果、量子条件を満たす列(実現可能山mj)の組み合わせが存在しない場合(ステップS605でNOの場合)、処理はステップS607に進む。処理がステップS607に進むと、選別部443は、抽出上限値qgapを大きくする。そして、処理はステップS605に戻り、量子条件を満たす列(実現可能山mj)の組み合わせが存在するまで、ステップS605~S607の処理が繰り返し実行される。
以上のようにして量子条件を満たす列(実現可能山mj)の組み合わせが存在すると(ステップS606でYES)判定されると、処理はステップS608に進む。処理がステップS608に進むと、求解部444は、ステップS606で量子条件を満たすと判定された直前にステップS605で抽出された列(実現可能山mj)の組み合わせrl(=(r1,r2,・・・,rk)を用いて、(2)式、(25-1)式または(25-2)式、(26)式~(28)式の制約式を満足する範囲で(4)式の目的関数Jの値を最小にする決定変数x[j]を最適解{x[jopt]}として導出するための処理を実行する。このとき、求解部444は、図3-1のステップS324で導出された双対最適値VDoptと、ステップS604またはステップS607で設定された抽出上限値qgapと、ステップS601で導出された最小公倍数dlcmとに基づいて、(25-1)式または(25-2)式を選択し、当該部分問題P(Cq)の目的関数J(Cq)の下限値を定める。
次に、ステップS609において、求解部444は、ステップS608で最適解{x[jopt]}が導出されたか否かを判定する。この判定の結果、最適解{x[jopt]}が導出されなかった場合(ステップS609でNOの場合)、処理はステップS607に進む。処理がステップS607に進むと、求解部444は、抽出上限値qgapを大きくする。そして、処理はステップS605に戻り、最適解{x[jopt]}が導出されまで、ステップS605~S609の処理が繰り返し実行される。
以上のようにして最適解{x[jopt]}が導出された(ステップS609でYES)と判定されると、図6のフローチャートによる処理が終了し、図3-2のステップS343の処理が実行される。
<まとめ>
以上のように本実施形態では、ステップS602で、原問題計算用列群CTHに含まれる列(実現可能山mj)のそれぞれの列主双対ギャップz[j]に、双対最適解popt[i]を既約分数で表記した場合の分母の最小公倍数dlcmを掛けた値を、量子化列主双対ギャップq[j]として導出する。そして、ステップS603で、原問題計算用列群CTHに含まれる列(実現可能山mj)を量子化列主双対ギャップq[j]毎に分類する。その後、ステップS607で、量子化列主双対ギャップq[j]の単位で、原問題計算用列群CTHにおける選別対象の列(実現可能山mj)を拡張しながら、ステップS605、S606で、量子条件を満たす列(実現可能山mj)の組み合わせを探索する。そして、ステップS608で、量子条件を満たす列(実現可能山mj)の組み合わせを用いて、集合分割問題(の部分問題)を解く。したがって、量子条件を満たす実現可能山の組み合わせを厳選してから、ステップS608で最適解を導出することができ、処理を高速化することができる。また、原問題が整数計画問題であることにより生じる誤差をなくすことができる。
(実施例)
次に、実施例を説明する。
本実施例では、以下の計算環境で計算を行った。
プロセッサ:Intel(登録商標)Xeon(登録商標)CPU E5-2687W@3.1GHz(2プロセッサ)
実装メモリ(RAM):128GB
OS:Windows7(登録商標) Professional 64ビットオペレーションシステム
最適計算ソフト:ILOG CPLEX(登録商標) Cplex11.0 Concert25
また、何れの実施例においても鋼材の数を60とし、少なくとも1つの鋼材の属性が異なる17ケースのそれぞれについて山分け計画を作成した。また、(4)式の重み係数k1、k2をそれぞれ5.0、1.0(k1=5.0、k2=1.0)とした。
<第1の実施例>
第1の実施例では、第1の実施形態の手法と、特許文献1に記載の手法とを比較する。図7に、第1の実施例における山分け計画の作成結果を示す。
図7において、データ特徴の欄のIDは、山分け計画の作成対象となる鋼材群の識別情報である。前述したように各鋼材群に含まれる鋼材の数は60である。最適値は、山分け計画の作成対象となる鋼材群に対する目的関数((4)式)の最適値(本来の最小値)である。実現可能山数は、実現可能山の総数である。実現可能山数の欄でM.Oと示されているのは、メモリの容量の不足により、実現可能山を列挙できなかったことを示す。尚、ここでは、5分で計算を打ち切った。
発明例1は、第1の実施形態の手法による結果であることを示す。比較例は、特許文献1に記載の手法による結果であることを示す。
山数は、山分け計画として得られた山の数である。仮置数は、山立ての際に発生する仮置きの数である。目的関数値は、第1の実施形態の手法における目的関数((4)式)の最小値である。誤差は、最適値と目的関数値との差の最適値に対する割合を百分率で表記した値(={(最適値-目的関数値)÷最適値}×100)である。計算時間は、山分け計画を作成するのに要した計算時間(秒)である。
図7に示すように、比較例(特許文献1に記載の手法)では、平均で6.8%の主双対ギャップ(誤差)が残る。これに対し、発明例1(第1の実施形態の手法)では、誤差のない厳密な最適解が得られることが分かる。また、計算時間においても、発明例1では、比較例よりも1/5以下の時間で求解できることが分かる。
<第2の実施例>
第2の実施例では、第1の実施形態の手法と、第2の実施形態の手法とを比較する。図8に、第2の実施例における山分け計画の作成結果を示す。
発明例1は、第1の実施形態の手法による結果であることを示す。発明例2は、第2の実施形態の手法による結果であることを示す。比較例は、特許文献1に記載の手法による結果であることを示す。列抽出時間は、双対問題求解部120および選択列挙部130による処理(ステップS301~S341)に要した計算時間である。求解時間は、最適解導出部140、440による処理(ステップS342またはステップS601~S609)に要した計算時間である。列抽出時間と求解時間との和が計算時間になる。図8のその他の項目は、図7と同じである。
図8に示すように、発明例1(第1の実施形態の手法)と発明例2(第2の実施形態の手法)とでは、山数と仮置数とが異なるケースが、3ケースあった(ID=1、11、16)。しかしながら、いずれのケースでも、目的関数値は最適値となり同一値であった。また、発明例2(第2の実施形態の手法)では、発明例1(第1の実施形態の手法)よりも、大幅に計算時間を短縮することができる場合があることが分かる(ID=12、16)。
以上のように、山分け計画を集合分割問題により定式化した際、山分けの対象となる鋼材が多いために全ての実現可能山を列挙できない、あるいは、できたとしても求解に多大な時間を要する様な大規模な問題に対し、実現可能山を全て列挙するのでなく、解の構成要素となり得る実現可能山を適宜列挙し、原問題に対し許容された時間(山分け問題の場合、 鋼材のヤード到着間隔に相当する3~5分)内に、0-1制約に伴う誤差のない最適解を求解し、それに基づく山分け計画を提供することができる。
発明例1では、一部の実現可能山を公知の手法で列挙する。そして、各実現可能山の、原問題の評価値と双対問題の評価値との差である列主双対ギャップz[j]を最新の暫定双対解p[i]を用いて導出し、列主双対ギャップz[j]が「0」以下になる実現可能山を抽出する。そして、抽出した実現可能山の総数が指定数Leになると、その時点で抽出されている実現可能山(双対問題計算用列群C)に対する暫定双対解を導出し、導出した暫定双対解を用いて、各実現可能山の列主双対ギャップz[j]を導出する。そして、列主双対ギャップz[j]が「0」にならない実現可能山を双対問題計算用列群Cから除く。そして、中断した箇所から、実現可能山を再列挙する。このような処理を、実現可能山の列挙が終了するまで繰り返し、最終的に双対問題計算用列群Cに含まれる実現可能山に対する双対問題の最適解(双対最適解)および当該最適解となるときの双対問題の目的関数の値(最適値)を双対最適解popt[i]および双対最適値VDoptとする。そして、実現可能山を公知の手法で列挙し、双対最適解popt[i]および双対最適値VDoptを用いて、列挙した実現可能山から、列主双対ギャップz[j]が閾値TH2以下になる実現可能山を原問題計算用列群CTHとして抽出する。このようにすることにより、全ての実現可能山を列挙することなく、原問題の最適解となる可能性のある実現可能山を効率的に抽出することができる。
また、発明例2では、以上のようにして抽出した実現可能山に対する列主双対ギャップZ[j]を量子化し、当該実現可能山を、量子化した列主双対ギャップz[j]毎に分類する。抽出した実現可能山が量子条件を満たすまで、量子化した列主双対ギャップz[j]が小さい実現可能山から順に実現可能山を抽出する。このようにして、量子条件を満たす実現可能山のパターンとして1つまたは複数のパターンが得られる。これら1つまたは複数のパターンの1つだけを必ず選択し、且つ、当該パターンに含まれる実現可能山を1つずつ必ず選択することを、集合分割問題における制約条件に含めて集合分割問題を解く。ここで、量子条件とは、量子化した列主双対ギャップz[j]の和が、原問題の評価値と双対問題の評価値との誤差を量子化した値に等しいという条件である。このようにすることによって、双対誤差のない厳密な最適解を高速に導出することができる。
(変形例)
<変形例1>
第1、第2の実施形態では、原問題Pが最小化問題である場合を例に挙げて説明した。しかしながら、原問題Pは、最大化問題であってもよい。この場合、原問題Pの目的関数は、列コストcjの総和が最大になるように実現可能山mjを選択することを目的とする関数であり、(3)式に代えて以下の(3´)式が用いられる。また、双対問題Dの制約式、目的関数として、(8)式、(10)式に代えて、それぞれ以下の(8´)式、(10´)式が用いられる。即ち、双対問題Dでは、(8´)式の制約式を満足する範囲で(10´)式の目的関数Jの値を最小にする双対変数p[i]を、双対問題Dの最適解として導出する。そして、列主双対ギャップとして、実現可能山mjに対する双対コストPjから、当該実現可能山mjの列コストcjを減算した値(=Σp[i]・mj[i]-cj)を用いる。尚、実現可能山mjの列コストcjも最大化問題に合わせて定式化される。
Figure 0007099315000029
ここで、原問題Pを最大化問題とする場合の定理Iに対応する定理IIについて説明する。
〔定理II〕
『閾値THがn+fD(fD=VDopt-floor(VDopt)、n:0(ゼロ)以上の整数)のとき、列主双対ギャップz[j]が当該閾値TH以下の列jによる原問題計算用列群CTHにより得られた部分問題P(n+fD)の最適値J(n+fDoptがfloor(VDopt)-n-1以上なら、当該最適値J(n+fDoptは、原問題Pの最適値Joptである』
ここで、floor(x)は、床関数(実数xに対してx以下の最大の整数を対応付ける関数)である。
[証明]
閾値THをn+fDとして得られた部分問題P(TH)の最適値J(n+fDoptがfloor(JD)-n-1であるとし、これが原問題Pの最適値でないとする。即ち、原問題Pの最適値Joptは、floor(VDopt)-n以上であり、それを得るため最適解の構成要素となり得る列を抽出するための閾値THを、n+fDより拡張する(大きくする)必要があると仮定する。
そこで、閾値THをn+fD+α(0<α≦1の正数)とする。ここで、拡張した部分問題P(n+fD+α)において新たに加わる列の中には、必ず列主双対ギャップz[j]が以下の(22´)式を満たす列jが少なくとも一つは追加される。閾値THを拡張した後の列jの拡張範囲から列jが抽出されなければ解の改善はあり得ないからである。
Figure 0007099315000030
この閾値THの拡張により新たに追加される列jの列主双対ギャップz[j]を以下の(23´)式とする。
Figure 0007099315000031
そうすると、拡張した部分問題P(n+fD+α)の最適値J(n+fD+α)optは、VDopt-(n+fD+β)以下の整数値となる。つまり、以下の(24´)式が成り立つ。
Figure 0007099315000032
従って、閾値THを拡張しても、拡張した部分問題P(n+fD+α)の最適値J(n+fD+α)optは、floor(VDopt)-n未満となり、原問題Pの最適値Joptの上限値はfloor(VDopt)-n-1となる。これは、原問題Pの最適値Joptをfloor(VDopt)-n以上と仮定したことに矛盾する。従って、前述した仮定に誤りがあり、閾値THがn+fDであるときに得られた部分問題P(n+fD)の最適値J(n+fDoptがfloor(VDopt)-n-1以上なら、当該最適値J(n+fDoptは、原問題Pの最適値Joptであることが証明された。(Q.E.D.)
(21-1)式~(21-3)式、(25-1)式~(25-2)式は、以上の定理IIに従って以下の(21-1´)式~(21-3´')式、(25-1´)式~(25-2´)式に書き換えられる。その他の式についても、最大化問題に合わせて適宜変形される。
Figure 0007099315000033
<変形例2>
本実施形態では、鋼材を1つ1つ移動(搬送)する場合を例に挙げて説明した。しかしながら、鋼材の移動(搬送)が、鋼材グループの単位で行われる場合でも本実施形態の手法を適用することができる。鋼材グループとは、搬送機器(主にクレーン)にて搬送する際に、分割されることのない(最小単位となる)一枚以上の鋼材の纏まりを指す。このようにする場合、幅条件を満たすのは、例えば、或る鋼材グループの最大幅が、当該或る鋼材グループの下に位置する鋼材グループの最小幅よりも狭い場合と、或る鋼材グループの最大幅が、当該或る鋼材グループの下に位置する鋼材グループの最小幅よりも広く、且つ、両者の幅の差が作業制約により定まる基準値以下である場合である。また、長さ条件を満たすのは、例えば、或る鋼材グループの最大長が、当該或る鋼材グループの下に位置する鋼材グループの最小長よりも短い場合と、或る鋼材グループの最大長が、当該或る鋼材グループの下に位置する鋼材グループの最小長よりも長く、且つ、両者の長さの差が作業制約により定まる基準値以下である場合である。また、例えば、(1つの)鋼材グループiに含まれる鋼材の数wiを用いて鋼材の数を表現することができる。
<変形例3>
本実施形態では、対象材が鋼材である場合(鋼材を搬送の対象とする場合)を例に挙げて説明した。しかしながら、必ずしも鋼材を対象材にする必要はない。例えば、鋼材の代わりに、アルミニウム、チタン、又は銅等の金属材を製造する金属製造プロセスに本実施形態を適用することができる。この場合、前述した説明において「鋼材」を「アルミニウム材」等の「金属材」に置き換えることができる。
また、工程間の置場として、2つの製造工程間の置場を対象とし、金属材として、半製品を対象としてもよいし、工程間の置場として、製造工程と出荷工程の間の置場を対象とし、金属材として、最終製品を対象としてもよい。この際に、複数の金属材をコンテナに収容して輸送、配置する場合には、金属材が収容されたコンテナを1つの鋼材として取り扱ってもよい。さらに、工程間の置場としては、金属製造プロセスにおける置場に限定されるものでなく、一般的な工程間の物流、搬送を対象としてもよい。物流分野では内容物に限定されずコンテナの搬送、配置でも適用できる。
(その他の実施形態)
尚、以上説明した本発明の実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、前記プログラムを記録したコンピュータ読み取り可能な記録媒体及び前記プログラム等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD-ROM、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
また、以上説明した本発明の実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
(請求項との関係)
以下に、請求項の記載と実施形態の記載との対応関係の一例を説明する。尚、請求項の記載が実施形態の記載に限定されないことは前述した通りである。
<請求項1、4、6、7>
第1の閾値は、例えば、閾値TH1(=0)を用いることにより実現される。
所定の条件が成立することは、例えば、ステップS306でYESと判定されることにより実現される。
前記所定の条件が成立した時点で抽出された前記実現可能山を対象として、前記双対問題の最適解である双対最適解を導出することは、例えば、ステップS324で双対最適解popt[i]を導出することに対応する。
双対問題求解手段は、例えば、双対問題求解部120を用いることにより実現される。
第2の閾値は、例えば、閾値TH2(>0)を用いることにより実現される。
所定の条件が成立することは、例えば、ステップS327でYESと判定されることにより実現される。
選択列挙手段は、例えば、選択列挙部130を用いることにより実現される。
前記選択列挙手段により選択列挙された前記実現可能山は、例えば、原問題計算用列群CTHを用いることにより実現される
最適解導出手段は、例えば、最適解導出部140、440を用いることにより実現される。
前記実現可能山に対する前記原問題の評価値は、例えば、列コストcjを用いることにより実現される。
当該実現可能山に対する前記双対問題の評価値は、例えば、双対コストΣp[i]・mj[i]を用いることにより実現される。
<請求項2>
一部の前記実現可能山を列挙し、当該列挙した実現可能山から、当該実現可能山に対する列主双対ギャップと第1の閾値とを比較した結果に基づいて、当該実現可能山を抽出して、実現可能山群に含めることを繰り返すことは、例えば、ステップS306~S321を繰り返すことにより実現される。
前記実現可能山群に含まれる前記実現可能山の数が指定数を上回ると、当該実現可能山群に含まれる前記実現可能山を対象とする前記双対問題の最適解である前記暫定双対解を導出し、当該暫定双対解を用いて導出される当該実現可能山に対する列主双対ギャップと第1の閾値とを比較した結果に基づいて、前記実現可能山群に含まれる前記実現可能山を更新することは、例えば、ステップS321~S323の処理を実行することにより実現される。
<請求項3>
前記双対問題求解手段は、前記実現可能山に対する前記原問題の評価値と、前記第1の閾値と、当該実現可能山に上積み可能な前記対象材を当該実現可能山に上積みすることにより構築される前記実現可能山を対象とする前記双対問題の評価値とに基づいて、当該実現可能山に前記対象材を上積みすることにより構築される前記実現可能山を選択列挙の対象とするか否かを判定することは、例えば、(15-1)式または(15-2)式を満たすか否かを判定すること(ステップS317の判定)により実現される。
前記選択列挙手段は、前記実現可能山に対する前記原問題の評価値と、前記第2の閾値と、当該実現可能山に上積み可能な前記対象材を当該実現可能山に上積みすることにより構築される前記実現可能山を対象とする前記双対問題の評価値とに基づいて、当該実現可能山に前記対象材を上積みすることにより構築される前記実現可能山を列挙の対象とするか否かを判定することは、例えば、TH1をTH2に書き換えた(15-1)式または(15-2)式を満たすか否かを判定すること(ステップS338の判定)により実現される。
<請求項5>
前記第2の閾値は、前記双対最適解に対応する前記双対問題の評価値である双対最適値に基づいて定められることは、例えば、(16)式により閾値TH2が定められることにより実現される。
<請求項8>
最適解導出手段は、例えば、最適解導出部440を用いることにより実現される。
量子化手段は、例えば、量子化部441を用いることにより実現される。
選別手段は、例えば、選別部443を用いることにより実現される。
求解手段は、例えば、求解部444を用いることにより実現される。
前記選択列挙手段により抽出された前記実現可能山に対する前記原問題の評価値と、当該実現可能山に対する前記双対問題の評価値との差である列主双対ギャップは、例えば、列主双対ギャップz[j]を用いることにより実現される。
前記原問題の評価値の最適値と前記双対問題の評価値の最適値との差である最適解における主双対ギャップは、例えば、取り得る値がceil(VDopt)-VDopt+n(n=0,1,2,・・・)である双対ギャップGdの最小値(双対ギャップの最適値Gd_opt)を用いることにより実現される。
量子化された前記列主双対ギャップの和が、量子化された最適解における前記主双対ギャップと最適解において一致するという条件である量子条件は、例えば、(19)式を用いることにより実現される。
<請求項9>
分類手段は、例えば、分類部442を用いることにより実現される。
<請求項10>
前記選別手段は、最適解における前記主双対ギャップとしてとり得る値が小さいものから順に、前記量子条件で規定される、最適解における前記主双対ギャップの最適値を設定することは、例えば、最初に(21-2)式のif文が成立するまでは、(21-1)式によりGq_gapが定められ、(21-2)式のif文が成立すると、(21-2)式によりGq_gapが定められ、その後は、(21-2)式のif文が成立した場合は(21-2)式によりGq_gapが定められ、そうでない場合は(21-3)式によりGq_gapが定められることにより実現される。
<請求項11>
前記量子化手段により量子化された前記列主双対ギャップの上限値であって、当該選別手段による選別対象の前記実現可能山に対する前記列主双対ギャップの上限値は、(量子化列主双対ギャップq[j]の)抽出上限値qgap(の現在値qk)を用いることにより実現される。
前記量子条件で規定される、最適解における前記主双対ギャップを、前記双対最適解に対応する前記双対問題の評価値である双対最適値に基づいて、前記上限値に応じた値に設定することは、例えば、抽出上限値qgap(の現在値qk)に応じて(21-1)式~(21-3)式の何れかが選択され、選択された(21-1)式、(21-2)式、または(21-3)式によって、主双対ギャップの最適値Gq_gapが設定されることにより実現される。前記双対最適解に対応する前記双対問題の評価値である双対最適値は、例えば、双対最適値VDoptを用いることにより実現される。
<請求項12>
当該求解手段により求解される解として採用される前記実現可能山の総和と、前記選別手段により選別された前記実現可能山の組み合わせの1つにおける当該実現可能山の総和とが等しいことを示す第1の制約条件は、例えば、(26)式~(27)式を用いることにより実現される。
前記選別手段により選別された前記実現可能山の組み合わせを1つだけ必ず採用することを示す第2の制約条件は、例えば、(28)式を用いることにより実現される。
<請求項13>
最小公倍数は、例えば、最小公倍数dlcmを用いることにより実現される。
<請求項14~17>
第3の制約条件は、例えば、(25-1)式~(25-2)式を用いることにより実現される。
100・400:山分け計画作成装置、110:鋼材情報取得部、120:双対問題求解部、121:暫定選択列挙部、122:暫定双対解導出部、123:精製部、124:双対最適解導出部、130:選択列挙部、140・440:最適解導出部、150:出力部、441:量子化部、442:分類部、443:選別部、444:求解部

Claims (21)

  1. 所定の山積み制約を満たすように対象材を積んだ山である実現可能山の組み合わせを、山分け対象の複数の対象材を重複することなく且つ漏れなく含むように求める整数計画問題を原問題とし、前記原問題の線形緩和問題を主問題とした場合の双対問題の最適解である双対最適解を用いて、前記山分け対象の複数の対象材を山分けするための山分け計画を作成する山分け計画作成装置であって、
    一部の前記実現可能山を列挙し、当該列挙した実現可能山のそれぞれに対する列主双対ギャップを導出し、当該列挙した実現可能山から、当該実現可能山に対する列主双対ギャップと第1の閾値とを比較した結果に基づいて、前記双対問題の求解に用いる実現可能山を抽出することを、所定の条件が成立するまで繰り返し、前記所定の条件が成立した時点で抽出された前記実現可能山を対象として、前記双対問題の最適解である前記双対最適解を導出する双対問題求解手段と、
    一部の前記実現可能山を列挙し、当該列挙した実現可能山から、当該実現可能山に対する列主双対ギャップと第2の閾値とを比較した結果に基づいて、前記原問題の求解に用いる実現可能山を選択列挙することを、所定の条件が成立するまで繰り返す選択列挙手段と、
    前記選択列挙手段により選択列挙された前記実現可能山から、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の集合を導出することを、集合分割問題を解くことにより行う最適解導出手段と、を有し、
    前記列主双対ギャップは、前記実現可能山に対する前記原問題の評価値と、当該実現可能山に対する前記双対問題の評価値との差であり、
    前記双対問題求解手段は、抽出済みの前記実現可能山を対象とする前記双対問題の暫定的な最適解である暫定双対解を用いて前記列主双対ギャップを導出し、
    前記選択列挙手段は、前記双対最適解を用いて前記列主双対ギャップを導出することを特徴とする山分け計画作成装置。
  2. 前記双対問題求解手段は、一部の前記実現可能山を列挙し、当該列挙した実現可能山から、当該実現可能山に対する列主双対ギャップと第1の閾値とを比較した結果に基づいて、当該実現可能山を抽出して、実現可能山群に含めることを繰り返し、前記実現可能山群に含まれる前記実現可能山の数が指定数を上回ると、当該実現可能山群に含まれる前記実現可能山を対象とする前記双対問題の最適解である前記暫定双対解を導出し、当該暫定双対解を用いて導出される当該実現可能山に対する列主双対ギャップと前記第1の閾値とを比較した結果に基づいて、前記実現可能山群に含まれる前記実現可能山を更新することを、前記所定の条件が成立するまで繰り返し、前記所定の条件が成立した時点で前記実現可能山群に含まれる前記実現可能山を対象とする前記双対問題の最適解を前記双対最適解として導出することを特徴とする請求項1に記載の山分け計画作成装置。
  3. 前記双対問題求解手段は、前記実現可能山に対する前記原問題の評価値と、前記第1の閾値と、当該実現可能山に上積み可能な前記対象材を当該実現可能山に上積みすることにより構築される前記実現可能山を対象とする前記双対問題の評価値とに基づいて、当該実現可能山に前記対象材を上積みすることにより構築される前記実現可能山を列挙の対象とするか否かを判定し、
    前記選択列挙手段は、前記実現可能山に対する前記原問題の評価値と、前記第2の閾値と、当該実現可能山に上積み可能な前記対象材を当該実現可能山に上積みすることにより構築される前記実現可能山を対象とする前記双対問題の評価値とに基づいて、当該実現可能山に前記対象材を上積みすることにより構築される前記実現可能山を選択列挙の対象とするか否かを判定し、
    前記選択列挙の対象となる前記実現可能山が選択列挙され、前記選択列挙の対象とならない前記実現可能山は選択列挙されないようにすることを特徴とする請求項1または2に記載の山分け計画作成装置。
  4. 前記第1の閾値は、0であり、
    前記第2の閾値は、0を上回る値であることを特徴とする請求項1~3の何れか1項に記載の山分け計画作成装置。
  5. 前記第2の閾値は、前記双対最適解に対応する前記双対問題の評価値である双対最適値に基づいて定められることを特徴とする請求項4に記載の山分け計画作成装置。
  6. 前記所定の条件は、前記実現可能山を列挙する処理において列挙する前記実現可能山がなくなることであることを特徴とする請求項1~5の何れか1項に記載の山分け計画作成装置。
  7. 前記選択列挙は、相対的に下段に配置される前記対象材に対し前記山積み制約を満たす前記対象材を、相対的に下段に配置される前記対象材の上に配置することができる前記対象材として特定することを、最下段から順番に行うにより実行されることを特徴とする請求項1~6の何れか1項に記載の山分け計画作成装置。
  8. 前記最適解導出手段は、前記選択列挙手段により選択列挙された前記実現可能山に対する前記原問題の評価値と、当該実現可能山に対する前記双対問題の評価値との差である列主双対ギャップを量子化すると共に、前記原問題の評価値の予想される最適値と前記双対問題の評価値の最適値との差である最適解における主双対ギャップを量子化する量子化手段と、
    前記量子化手段により量子化された前記列主双対ギャップの中から、量子条件を満たすように選択された、量子化された前記列主双対ギャップに基づいて、前記実現可能山の組み合わせを選別する選別手段と、
    前記選別手段により選別された、前記実現可能山の組み合わせから、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の集合を導出することを、集合分割問題を解くことにより行う求解手段と、を更に有し、
    前記量子条件は、前記量子化手段により量子化された前記列主双対ギャップの解を構成する列に対する和が、前記量子化手段により量子化された最適解における前記主双対ギャップと最適解において一致するという条件であることを特徴とする請求項1~7の何れか1項に記載の山分け計画作成装置。
  9. 前記最適解導出手段は、前記量子化手段により量子化された前記列主双対ギャップが同じになる前記実現可能山が同じグループに属するように、前記選択列挙手段により選択列挙された前記実現可能山を分類する分類手段を更に有し、
    前記選別手段は、前記分類手段により分類された前記実現可能山の単位で、前記実現可能山の組み合わせを選別することを特徴とする請求項8に記載の山分け計画作成装置。
  10. 前記選別手段は、最適解における前記主双対ギャップとしてとり得る値が小さいものから順に、前記量子条件で規定される、最適解における前記主双対ギャップを設定することを特徴とする請求項8または9に記載の山分け計画作成装置。
  11. 前記選別手段は、前記量子化手段により量子化された前記列主双対ギャップの上限値であって、当該選別手段による選別対象の前記実現可能山に対する前記列主双対ギャップの上限値を小さい値から順に設定し、前記量子条件で規定される、最適解における前記主双対ギャップを、前記双対最適解に対応する前記双対問題の評価値である双対最適値に基づいて、前記上限値に応じた値に設定することを特徴とする請求項8~10の何れか1項に記載の山分け計画作成装置。
  12. 前記求解手段は、当該求解手段により求解される解として採用される前記実現可能山の総和と、前記選別手段により選別された前記実現可能山の組み合わせの1つにおける当該実現可能山の総和とが等しいことを示す第1の制約条件と、前記選別手段により選別された前記実現可能山の組み合わせを1つだけ必ず採用することを示す第2の制約条件とを満足するように、前記選別手段により選別された前記実現可能山の組み合わせから、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の集合を導出することを、集合分割問題を解くことにより行うことを特徴とする請求項8~11の何れか1項に記載の山分け計画作成装置。
  13. 前記量子化手段は、前記列主双対ギャップに、前記双対問題求解手段により導出された前記双対最適解を既約分数で表現した場合の分母の最小公倍数を掛けることにより、前記列主双対ギャップを量子化すると共に、最適解における前記主双対ギャップに前記最小公倍数を掛けることにより、最適解における前記双対ギャップを量子化することを特徴とする請求項8~12の何れか1項に記載の山分け計画作成装置。
  14. 前記最適解導出手段は、前記原問題の評価値の取り得る範囲を示す第3の制約条件を満足するように、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の集合を導出することを、集合分割問題を解くことにより行うことを特徴とする請求項1~13の何れか1項に記載の山分け計画作成装置。
  15. 前記第3の制約条件は、前記原問題の評価値の取り得る範囲が、前記双対最適解に対応する前記双対問題の評価値である双対最適値に応じて定まることを示す制約条件であることを特徴とする請求項14に記載の山分け計画作成装置。
  16. 前記原問題は、複数の前記実現可能山のそれぞれについて、当該実現可能山を解として採用するか否かにより定まる2値変数を決定変数として、当該実現可能山に対する前記対象材の山立てについての評価値であるコストと、前記決定変数を含む目的関数の値が最小または最大になる前記決定変数を求めることにより、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の最適な組み合わせを求める問題であり、
    前記第3の制約条件は、前記目的関数の取り得る範囲を示す制約条件であることを特徴とする請求項14または15に記載の山分け計画作成装置。
  17. 前記原問題は、前記目的関数の値が最小になる前記決定変数を求めることにより、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の最適な組み合わせを求める問題であり、
    前記第3の制約条件は、前記目的関数の値の下限値を示す制約条件であることを特徴とする請求項16に記載の山分け計画作成装置。
  18. 前記原問題は、複数の前記実現可能山のそれぞれについて、当該実現可能山を解として採用するか否かにより定まる2値変数を決定変数として、当該実現可能山に対する前記対象材の山立てについての評価値であるコストと、前記決定変数を含む目的関数の値が最小または最大になる前記決定変数を求めることにより、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の最適な組み合わせを求める問題であることを特徴とする請求項1~17の何れか1項に記載の山分け計画作成装置。
  19. 前記山分け計画は、鉄鋼プロセスにおける工程間の置場として鋼材を配置するヤードに搬入される複数の鋼材を、所定の山積み制約を満たすように山積みして、次工程に払い出す最終的な山姿となった複数の払出山に山分けするための計画であることを特徴とする請求項1~18の何れか1項に記載の山分け計画作成装置。
  20. 所定の山積み制約を満たすように対象材を積んだ山である実現可能山の組み合わせを、山分け対象の複数の対象材を重複することなく且つ漏れなく含むように求める整数計画問題を原問題とし、前記原問題の線形緩和問題を主問題とした場合の双対問題の最適解である双対最適解を用いて、前記山分け対象の複数の対象材を山分けするための山分け計画を作成する山分け計画作成方法であって、
    一部の前記実現可能山を列挙し、当該列挙した実現可能山のそれぞれに対する列主双対ギャップを導出し、当該列挙した実現可能山から、当該実現可能山に対する列主双対ギャップと第1の閾値とを比較した結果に基づいて、前記双対問題の求解に用いる実現可能山を抽出することを、所定の条件が成立するまで繰り返し、前記所定の条件が成立した時点で抽出された前記実現可能山を対象として、前記双対問題の最適解である前記双対最適解を導出する双対問題求解工程と、
    一部の前記実現可能山を列挙し、当該列挙した実現可能山から、当該実現可能山に対する列主双対ギャップと第2の閾値とを比較した結果に基づいて、前記原問題の求解に用いる実現可能山を選択列挙することを、所定の条件が成立するまで繰り返す選択列挙工程と、
    前記選択列挙工程により選択列挙された前記実現可能山から、前記複数の対象材を重複することなく且つ漏れなく含む前記実現可能山の集合を導出することを、集合分割問題を解くことにより行う最適解導出工程と、を有し、
    前記列主双対ギャップは、前記実現可能山に対する前記原問題の評価値と、当該実現可能山に対する前記双対問題の評価値との差であり、
    前記双対問題求解工程は、抽出済みの前記実現可能山を対象とする前記双対問題の暫定的な最適解である暫定双対解を用いて前記列主双対ギャップを導出し、
    前記選択列挙工程は、前記双対最適解を用いて前記列主双対ギャップを導出することを特徴とする山分け計画作成方法。
  21. 請求項1~19の何れか1項に記載の山分け計画作成装置の各手段としてコンピュータを機能させるためのプログラム。
JP2018247434A 2018-12-28 2018-12-28 山分け計画作成装置、山分け計画作成方法、およびプログラム Active JP7099315B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018247434A JP7099315B2 (ja) 2018-12-28 2018-12-28 山分け計画作成装置、山分け計画作成方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018247434A JP7099315B2 (ja) 2018-12-28 2018-12-28 山分け計画作成装置、山分け計画作成方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2020107211A JP2020107211A (ja) 2020-07-09
JP7099315B2 true JP7099315B2 (ja) 2022-07-12

Family

ID=71449158

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018247434A Active JP7099315B2 (ja) 2018-12-28 2018-12-28 山分け計画作成装置、山分け計画作成方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP7099315B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4887341B2 (ja) 2008-09-30 2012-02-29 国立大学法人 東京大学 情報処理装置、情報処理装置の制御方法及びプログラム
JP6390331B2 (ja) 2014-10-14 2018-09-19 新日鐵住金株式会社 鋼材の山分け計画方法、装置及びプログラム
JP6838353B2 (ja) 2016-10-31 2021-03-03 日本製鉄株式会社 鋼材の山分け計画作成装置、鋼材の山分け計画作成方法、およびプログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9618912B2 (en) * 2013-05-17 2017-04-11 Mitsubishi Electric Research Laboratories, Inc. MPC controller using parallel quadratic programming

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4887341B2 (ja) 2008-09-30 2012-02-29 国立大学法人 東京大学 情報処理装置、情報処理装置の制御方法及びプログラム
JP6390331B2 (ja) 2014-10-14 2018-09-19 新日鐵住金株式会社 鋼材の山分け計画方法、装置及びプログラム
JP6838353B2 (ja) 2016-10-31 2021-03-03 日本製鉄株式会社 鋼材の山分け計画作成装置、鋼材の山分け計画作成方法、およびプログラム

Also Published As

Publication number Publication date
JP2020107211A (ja) 2020-07-09

Similar Documents

Publication Publication Date Title
Kachitvichyanukul et al. Two solution representations for solving multi-depot vehicle routing problem with multiple pickup and delivery requests via PSO
JP6838353B2 (ja) 鋼材の山分け計画作成装置、鋼材の山分け計画作成方法、およびプログラム
Avci et al. A multi-start iterated local search algorithm for the generalized quadratic multiple knapsack problem
Varnamkhasti Overview of the algorithms for solving the multidimensional knapsack problems
Boysen et al. The parallel stack loading problem to minimize blockages
CN105929690B (zh) 一种基于分解多目标进化算法的柔性车间鲁棒调度方法
Zhang et al. Tree search procedures for the blocks relocation problem with batch moves
CN112100233B (zh) 基于禁忌搜索算法的航班时刻衔接方法及系统
Casado et al. Grouping products for the optimization of production processes: A case in the steel manufacturing industry
Keshavarz et al. Efficient upper and lower bounding methods for flowshop sequence-dependent group scheduling problems
Raggl et al. Solving a real world steel stacking problem
JP7099315B2 (ja) 山分け計画作成装置、山分け計画作成方法、およびプログラム
US11625451B2 (en) Local search with global view for large scale combinatorial optimization
JP7099314B2 (ja) 山分け計画作成装置、山分け計画作成方法、およびプログラム
JP6954218B2 (ja) 鋼材の山分け計画作成装置、鋼材の山分け計画作成方法、およびプログラム
CN110648103A (zh) 用于选择仓库中的货品的方法、装置、介质和计算设备
JP6540360B2 (ja) 鋼材の山分け計画立案装置、鋼材の山分け計画立案方法、およびプログラム
Li et al. Integrated optimization of finished product logistics in iron and steel industry using a multi-objective variable neighborhood search
CN104933110A (zh) 一种基于MapReduce的数据预取方法
JP7035836B2 (ja) ヤード管理装置、ヤード管理方法、およびプログラム
Li et al. A parallel genetic algorithm with GPU accelerated for large-scale MDVRP in emergency logistics
Fu et al. A new approach for solving single machine total weighted tardiness (SMTWT) problem
JP7024580B2 (ja) 山分け計画作成装置、山分け計画作成方法、およびプログラム
Ismail et al. Genetic algorithm and Tabu search for vehicle routing problems with stochastic demand
Zhang et al. A tabu search algorithm based on density peak clustering to solve vrptw

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210810

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220531

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220531

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220613

R151 Written notification of patent or utility model registration

Ref document number: 7099315

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151