JP6628041B2 - 最適化問題解決装置、方法、及びプログラム - Google Patents

最適化問題解決装置、方法、及びプログラム Download PDF

Info

Publication number
JP6628041B2
JP6628041B2 JP2016113044A JP2016113044A JP6628041B2 JP 6628041 B2 JP6628041 B2 JP 6628041B2 JP 2016113044 A JP2016113044 A JP 2016113044A JP 2016113044 A JP2016113044 A JP 2016113044A JP 6628041 B2 JP6628041 B2 JP 6628041B2
Authority
JP
Japan
Prior art keywords
optimization
value
variable
constraints
unit
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
JP2016113044A
Other languages
English (en)
Other versions
JP2017219979A (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 Telegraph and Telephone Corp
Osaka University NUC
Original Assignee
Nippon Telegraph and Telephone Corp
Osaka University NUC
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 Telegraph and Telephone Corp, Osaka University NUC filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2016113044A priority Critical patent/JP6628041B2/ja
Publication of JP2017219979A publication Critical patent/JP2017219979A/ja
Application granted granted Critical
Publication of JP6628041B2 publication Critical patent/JP6628041B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は、最適化問題解決装置、方法、及びプログラムに係り、特に、整数計画問題を解くための最適化問題解決装置、方法、及びプログラムに関する。
資源の割り当て問題、アルバイトのシフト作成、容器への詰め込み問題など、任意の制約の元で、設定した効用を最良にする解を得たいといった場面は、現実世界でしばしば起こる状況である。このような場合、例えば、現実世界の問題を数式に落とし込んで最適化問題として定式化し、その最適化問題を解くことで、現実世界の問題を効果的に実行する方法を獲得するといった方法論がある。
ここでは、特に0−1整数計画問題と呼ばれる組合せ最適化問題で定式化できる問題を対象とする。一般的な0−1整数計画問題で表現できる現実の問題は多岐にわたるため、効果的な解法を作成することができれば、現実世界の多くの問題を効率的に解くことができる場面が増えることが見込める。
0−1整数計画問題は、一般形として以下のような式で表現できる。
ここで、zは最適化したい変数である。ここでは、0−1整数計画問題のみにフォーカスを当てているため、zの取り得る値は、0または1のみである。この、0または1のみの値を取るということを、上記(1)式では
で表現している。また、最適化変数zの個数は、
個であり、全体で
である。ここでは、簡単のため、
と記述する。ただし、
は1から始まる連続した整数の集合とし、1から
までを含むものとする。また、
も同様に、それぞれ1から始まる連続した整数の集合とし、それぞれ、
までを含むものとする。
はzを選択した際のコスト値になっている。もしcが負の値であれば、選択することによって加点される状況であると解釈できる。目的関数はΣであるので、コストの線形和が最も小さくなるように最適化変数zを選択する、すなわちz=1とする問題といえる。ただし、最適化変数zは自由に選択できるわけではなく、与えられた制約を満たす組み合わせで選択しなくてはいけない。
上記0−1整数計画問題の解法は、特定の問題に特化して効率的に解く方法が数多く存在する。一般論として、多様な問題に対して総じて効率的に解ける方法論として、限定分枝法に基づく方法が広く用いられている。ただし、これは一般には汎用ソルバーと呼ばれ、事前にどのような問題が与えられるかわからない状況に対応することが主眼となっているため、事前に解きたい問題の性質がわかっている場合は、その解きたい問題に適した専用の解法を用いた方が圧倒的に効率的に解を得られる場合がある。
Stephen Boyd, Neal Parikh, Eric Chu, Borja Peleato, and Jonathan Eckstein. Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers. Foundations and Trends in Machine Learning, 2011.
前述の通り、0−1整数計画問題を解くためアルゴリズムはこれまでに様々な方法論が提案され、それぞれの方法はそれぞれの得意な問題の領域が存在する。そこで、0−1整数計画問題と呼ばれる組合せ最適化問題に関して、特に大規模かつ実行可能解が容易に発見できないといった特徴を持つ最適化問題を効率的に解く課題に取り組む。
本発明は、上記事情を鑑みて成されたものであり、効率よく、整数計画問題を解くことができる最適化問題解決装置、方法、及びプログラムを提供することを目的とする。
上記目的を達成するために、第1の発明に係る最適化問題解決装置は、0又は1の値をとる最適化変数の各々と、前記最適化変数の各々を選択した場合のコスト値の各々と、前記最適化変数の各々に対する制約の各々とが与えられたときに、前記制約を満たしつつ、前記最適化変数を最適化するための整数計画問題を解く最適化問題解決装置であって、貪欲法による山登り法に従って、前記制約を満たしつつ、予め定められた、前記最適化変数の各々及び前記コスト値の各々を含む目的関数を最適化するように、前記最適化変数を選択して更新することを繰り返す更新部と、予め定められた反復終了条件を満たすまで、前記更新部による更新を繰り返させる反復判定部と、前記更新部による更新で前記目的関数の最適値が得られる毎に、前記目的関数の最適値を比較して、より良い前記目的関数の最適値が得られたときの前記最適化変数の各々の値を暫定解として保持する結果比較部と、を含んで構成されている。
また、第1の発明に係る最適化問題解決装置において、前記目的関数は、前記制約の各々に対する、前記制約を表す不等式制約を等式制約に変換するための補助変数と、前記制約の各々に対する、前記制約を満たさない度合いを表す違反度合いとを更に含み、前記更新部は、前記最適化変数の各々を初期化する初期化部と、前記最適化変数の各々及び前記制約の各々に対する違反度合いに基づいて、前記目的関数を最適化するように、前記制約の各々に対する補助変数を更新する補助変数更新部と、前記最適化変数の各々に基づいて、前記目的関数を最適化するように、前記制約の各々に対する違反度合いを更新する違反度合更新部と、前記制約の各々に対する補助変数及び前記制約の各々に対する違反度合いに基づいて、前記最適化変数の値を変更することにより前記目的関数の値を最も良くする前記最適化変数を選択して更新する最適化変数更新部と、前記最適化変数の値を変更しても前記目的関数の値が良くならず、かつ、前記制約の各々を満たすまで、前記補助変数更新部による更新、前記違反度合更新部による更新、及び最適化変数更新部による更新を繰り返させる終了判定部とを含むようにしてもよい。
また、第1の発明に係る最適化問題解決装置において、前記最適化変数更新部は、前記最適化変数を選択して更新したとき前記最適化変数の各々の値の組み合わせを表すbit列についてハッシュ値を計算し、キャッシュテーブルにおいて、計算されたハッシュ値をアドレスとした位置にbit列が格納されている場合に、前記最適化変数の各々の値の組み合わせを表すbit列と、前記計算されたハッシュ値をアドレスとした位置に格納されているbit列とが一致するか否かを判定し、一致すると判定された場合、前記更新部による処理を終了し、一致しないと判定された場合、前記キャッシュテーブルにおいて、前記計算されたハッシュ値をアドレスとした位置に、前記最適化変数の各々の値の組み合わせを表すbit列を格納するようにしてもよい。
第2の発明に係る最適化問題解決方法は、0又は1の値をとる最適化変数の各々と、前記最適化変数の各々を選択した場合のコスト値の各々と、前記最適化変数の各々に対する制約の各々とが与えられたときに、前記制約を満たしつつ、前記最適化変数を最適化するための整数計画問題を解く最適化問題解決装置における最適化問題解決方法であって、更新部が、貪欲法による山登り法に従って、前記制約を満たしつつ、予め定められた、前記最適化変数の各々及び前記コスト値の各々を含む目的関数を最適化するように、前記最適化変数を選択して更新することを繰り返すステップと、反復判定部が、予め定められた反復終了条件を満たすまで、前記更新部による更新を繰り返させるステップと、結果比較部が、前記更新部による更新で前記目的関数の最適値が得られる毎に、前記目的関数の最適値を比較して、より良い前記目的関数の最適値が得られたときの前記最適化変数の各々の値を暫定解として保持するステップと、を含んで実行することを特徴とする。
また、第2の発明に係る最適化問題解決方法において、前記目的関数は、前記制約の各々に対する、前記制約を表す不等式制約を等式制約に変換するための補助変数と、前記制約の各々に対する、前記制約を満たさない度合いを表す違反度合いとを更に含み、前記更新部が更新するステップは、初期化部が、前記最適化変数の各々を初期化するステップと、補助変数更新部が、前記最適化変数の各々及び前記制約の各々に対する違反度合いに基づいて、前記目的関数を最適化するように、前記制約の各々に対する補助変数を更新するステップと、違反度合更新部が、前記最適化変数の各々に基づいて、前記目的関数を最適化するように、前記制約の各々に対する違反度合いを更新するステップと、最適化変数更新部が、前記制約の各々に対する補助変数及び前記制約の各々に対する違反度合いに基づいて、前記最適化変数の値を変更することにより前記目的関数の値を最も良くする前記最適化変数を選択して更新するステップと、終了判定部が、前記最適化変数の値を変更しても前記目的関数の値が良くならず、かつ、前記制約の各々を満たすまで、前記補助変数更新部による更新、前記違反度合更新部による更新、及び最適化変数更新部による更新を繰り返させるステップと、を含んで実行してもよい。
また、第2の発明に係る最適化問題解決方法において、前記最適化変数更新部が更新するステップは、前記最適化変数を選択して更新したとき前記最適化変数の各々の値の組み合わせを表すbit列についてハッシュ値を計算し、キャッシュテーブルにおいて、計算されたハッシュ値をアドレスとした位置にbit列が格納されている場合に、前記最適化変数の各々の値の組み合わせを表すbit列と、前記計算されたハッシュ値をアドレスとした位置に格納されているbit列とが一致するか否かを判定し、一致すると判定された場合、前記更新部による処理を終了し、一致しないと判定された場合、前記キャッシュテーブルにおいて、前記計算されたハッシュ値をアドレスとした位置に、前記最適化変数の各々の値の組み合わせを表すbit列を格納するようにしてもよい。
また、第3の発明に係るプログラムは、コンピュータを、第1の発明に係る最適化問題解決装置の各部として機能させるためのプログラムである。
本発明の最適化問題解決装置、方法、及びプログラムによれば、貪欲法による山登り法に従って、制約を満たしつつ、予め定められた、最適化変数の各々及びコスト値の各々を含む目的関数を最適化するように、最適化変数を選択して更新することを繰り返し、予め定められた反復終了条件を満たすまで、更新を繰り返させることにより、効率よく、整数計画問題を解くことができる、という効果が得られる。
本発明の実施の形態に係る最適化問題解決装置の構成を示すブロック図である。 本発明の実施の形態に係る最適化問題解決装置における更新部の構成を示すブロック図である。 本発明の実施の形態に係る最適化問題解決装置における最適化問題解決処理ルーチンを示すフローチャートである。 本発明の実施の形態に係る最適化問題解決装置における更新処理ルーチンを示すフローチャートである。
以下、図面を参照して本発明の実施の形態を詳細に説明する。
<本発明の実施の形態に係る概要>
まず、本発明の実施の形態における概要を説明する。
前述の通り、0−1整数計画問題を解くためアルゴリズムはこれまでに様々な方法論が提案され、それぞれの方法はそれぞれに好適な問題の領域が存在する。そこで、本発明の実施の形態では、0−1整数計画問題と呼ばれる組合せ最適化問題に関して、特に大規模かつ実行可能解が容易に発見できないといった特徴を持つ最適化問題を効率的に解く課題に取り組む。
まず、本発明の実施の形態において取り組む課題においては、実行可能解が容易に獲得できないという前提がある。そのため、初期値として実行可能解を適当に得てから開始するアルゴリズムを用いることはできない。そこで、本発明の実施の形態では、適当な初期値をランダムに与え、そこから目的関数の値がよくなる方向に変数を一つずつ更新する、貪欲山登り法(貪欲法による山登り法)を用いる。ただし、貪欲山登り法では、局所解に陥って、真の最適解を得られない可能性が高い。そこで、現時点の最良の解を保持しつつ、貪欲山登り法を複数回繰り返して、より良い解を更新していくような方法論を用いる。本実施の形態では、この手法を反復貪欲山登り法と呼ぶこととする。
次に、実行可能解が容易に得られないという性質に対処するために、最適化アルゴリズム中により制約を満たす方向へ最適化変数を更新するような仕組みを導入する。また、制約を満たす方向へ向かう強さをコントロールできる仕組みを導入してもよい。これにより、解の探索中に、より実行可能解を発見しやすく調整することができる。
反復貪欲山登り法では、個々の貪欲山登り法の計算途中では別の探索結果を全く考慮しない方式となる。これは、余計な通信コストが発生しないため、非常に効率的であるが、一方で、同じ領域を何度も探索してしまう可能性があるため、探索が非効率になる可能性がある。そこで、オプションとして、全ての貪欲山登り法で共有するブルームフィルタを作成し、個々の貪欲山登り法によって探索した領域を、擬似的に共有する方法を用いる。
上記の手法の利点を、以下の(1)から(3)に述べる。
(1)反復貪欲山登り法の利用(大規模問題への適用)
貪欲山登り法により、個々の計算処理が容易であるため、最適化変数が多くても対応可能となる。また、個々の計算量は変数の数に対して線形時間。付加効果として、分散並列処理に適した枠組みであるため、容易に並列計算が可能となる。
(2)拡張ラグランジュ緩和法による緩和問題、及びADMM最適化に基づくアルゴリズムの枠組みの利用(実行可能解を効果的に探索する効果)
拡張ラグランジュ緩和による制約の緩和を行うことで、より制約を満たす方向で探索を行うことができる。また、制約を満たす度合いを制御するパラメタを自然に導入することができる。そのため、例えば、探索最初は制約を満たす強さを弱めにしておき、探索が進むにつれて、より制約を満たす方向へ探索を進めるといった戦略を取ることも可能となる。これにより、実行可能解が容易に見つからないことに対処できる。
(3)キャッシュテーブルの利用(重複探索の削除による更なる大規模問題へ適用)
複数回の貪欲山登り法を用いるため、これまでに探索した領域を何度も探索してしまう可能性がある。よって、重複探索を簡単なキャッシュテーブルを用いて排除し、全体の計算量を削減することができる。
<本発明の実施の形態に係る原理>
次に、本発明の実施の形態における原理を説明する。
ここでは、上記(1)式1に示された0−1整数計画問題を解く例を用いて、本発明の実施の形態の原理を説明する。
まず、上記(1)式に書かれているように、制約には、等式制約と不等式制約の二種類が存在する。本発明の実施の形態では、計算アルゴリズムを効率化するために、全ての制約を一旦不等式制約に変換したのち、それらを補助変数付きの等式制約の形式に変換し、問題を再定式化する。
まず、第一に全ての制約を不等式制約に変換する。上記(1)式の等式制約は、二つの不等式制約で記述することができる。
この二つの不等式制約が同時に満たされるのは、等式制約が満たされるのと等価である。上記(2)式を用いることで、等式制約を不等式制約で記述できるので、最適化問題の全ての制約は不等式制約によって表現できる。計算を簡単にするために、不等式制約の向きを「≦0」の形式で全て変換する。これは、両辺に−1を掛けることによって、容易に実現できる。よって、係数ai,jとbを再定義し、全ての制約は
の形式で記述できることになる。
最後に、上記の不等式制約を、補助変数ξ≧0を導入して、以下の等式制約に変換する。
補助変数ξは0以上の値をとるので、不等式制約が満たされている場合はξの値を調節することで、等式制約を満たしたと判定することができる。逆に、不等式制約が満たされていない場合は、ξ=0とするのが最も等式制約に近い値となる。このように、補助変数付きの等式制約は元の不等式制約を満たしているか、いないかの判定を一致させることができる。
元の不等式制約の数が
個、等式制約の数が
個の時、等式制約は2倍になるので、最終的に得られる補助変数付きの等式制約の数は
個になる。また、
とおき、上記(1)式の最適化問題を以下の形式で再定義する。
次に、上記(5)式について、拡張ラグランジュ緩和法を用いて、制約を緩和する。
このとき、Lは緩和問題の目的関数である。また、αは、制約を違反している場合にどの程度強くその違反をコストとして計上するかを制御するための違反度合いを表すパラメタである。また、ρは、制約を満たす強さを表すパラメタであり、ρ>0とする。
上記(6)式を解くために、非特許文献1で紹介されているADMMに則って最適化を行う。目的関数の最適化は、以下で説明する反復貪欲山登り法における、[2]の貪欲山登り法において実行する。
まず、本発明の実施の形態で用いる反復貪欲山登り法について説明する。一般的に一回の貪欲山登り法では最適解を得ることは難しい。そこで、初期値をランダムにふって、複数回の貪欲法による山登り法を用いて、より精度の高い解を得る。下記[2−5]の終了判定を満たした際に、暫定解を保持するが、その暫定解は、実行可能解であることを想定している。よって、現在暫定解として保持している目的関数の値よりも、より良い目的関数の値を獲得した場合は、暫定解を書き換えてより良い解のみを保持する。このように、複数回行うことで、一回のときより悪い結果になることは絶対になく、必ず良いか同じ暫定解が得られる。また、個々の貪欲法による山登り法の試行は完全に独立に行うことができるため、昨今の複数の演算装置がある計算機を効率的に利用して最適解の探索を行うことができる。
反復貪欲山登り法としては、全体として以下[1]から[5]の処理を行う。
[1]:独立に貪欲山登り法を行うオブジェクトをN個計算機内に生成する。
[2]:個々のN個に対して、後述する貪欲山登り法を実行する。
[3]:終了条件を満たしたn番目の結果を受け取る。
[4]:現在の最良の解と、[3]で受け取ったn番目の解を比較し、より良い結果であれば、それを保持する。
[5]:事前に設定した規定回数K回の貪欲法を実行する場合、規定回数Kに満たなければ、新たに貪欲山登り法を行うオブジェクトを作成して追加する。そして、[2]に戻って、追加したオブジェクトを、新たなn番目の処理として実行する。
次に、上記[2]の貪欲山登り法の基本的な処理手順を、以下の[2−1]から[2−5]に示す。
[2−1]:初期化
初期状態として、各zにランダムに0または1を代入する。
[2−2]:ξの更新
補助変数ξを更新する。ただし、更新が必要なξは、[2−4]で更新されたzのうち制約の式の係数ai,jが非零のもののみである。
[2−3]:αの更新
パラメタαを更新する。ただし、更新が必要なαは、[2−4]で更新されたzのうち制約の式の係数ai,jが非零のもののみである。
[2−4]:zの更新
目的関数の値が最もよくなる一つの最適化変数zを選択し値を更新する。つまり現在の値が1なら0へ更新し、0であれば[2−1]へ更新する。
[2−5]:終了判定
最適化変数zの変更がすべて目的関数の値をよくしない場合、かつ、実行可能解なら、現在の解を保持して終了し、それ以外の場合であれば[2−2]へ戻る。
<本発明の実施の形態に係る最適化問題解決装置の構成>
次に、本発明の実施の形態に係る最適化問題解決装置の構成について説明する。本実施の形態の最適化問題解決装置は、上記(1)式のように、0又は1の値をとる最適化変数と、最適化変数zを選択した場合のコスト値cと、最適化変数zに対する制約の各々とが与えられたときに、制約を満たしつつ、最適化変数zを最適化するための整数計画問題を解く装置である。
図1に示すように、本発明の実施の形態に係る最適化問題解決装置100は、CPUと、RAMと、後述する最適化問題解決処理ルーチンを実行するためのプログラムや各種データを記憶したROMと、を含むコンピュータで構成することが出来る。この最適化問題解決装置100は、機能的には図1に示すように入力部10と、演算部20と、出力部50とを備えている。
入力部10は、貪欲山登り法を行うオブジェクトを生成する指令を受け付ける。
演算部20は、オブジェクト生成部30と、更新部32〜32と、キャッシュテーブル33と、結果比較部34と、反復判定部36とを含んで構成されている。
オブジェクト生成部30は、貪欲山登り法を行うN個のオブジェクトを生成し、オブジェクトの各々を更新部32〜32に出力する。
更新部32〜32は、オブジェクト生成部30で生成されたオブジェクトの各々について、貪欲法による山登り法に従って、制約を満たしつつ、予め定められた、最適化変数z及びコスト値cの各々を含む、上記(6)式の目的関数を最適化するように、最適化変数を選択して更新することを繰り返す。また、更新部32〜32は、並列処理により、各々独立して更新処理を行う。また、更新部32〜32は既に探索した最適化変数zの値の組み合わせ(解候補)を、ハッシュ値をアドレスとしてキャッシュテーブル33に保存する。これにより更新部32〜32では、既に探索した最適化変数zの領域を排除して更新処理を行うことができる。
また、更新部32〜32の各々はそれぞれ、初期化部230と、補助変数更新部232と、違反度合更新部234と、最適化変数更新部と、終了判定部238との各部を含んで構成されている。更新部32〜32の各部の処理については後述する。
キャッシュテーブル33には、更新部32〜32で探索された最適化変数zの値の組み合わせ(解候補)が、ハッシュ値をアドレスとした位置に格納されている。
結果比較部34は、更新部32〜32による更新で目的関数の最適値が得られる毎に、目的関数の最適値を比較して、より良い目的関数の最適値が得られたときの最適化変数の各々の値を暫定解として保持する。
反復判定部36は、予め定められた反復終了条件を満たすまで、更新部32〜32による更新を繰り返させる。ここでは、反復終了条件は規定回数K回分の更新処理が更新部32〜32によって行われたこととする。
次に、更新部32〜32の各部の処理について説明する。
初期化部230は、複数の最適化変数zの値をランダムに初期化する。よって、このときに、制約を満たしているかは考慮しない。また、実行可能解が容易に得られない問題では、初期化段階で実行可能解になっていることはほぼない。また、初期化部230は、制約の各々に対する違反度合いであるαを初期化する。例えば、αは0にすればよい。
補助変数更新部232は、初期化された、又は前回更新された複数の最適化変数z及び制約の各々に対する違反度合いαに基づいて、上記(6)式の目的関数を最適化するように、制約の各々に対する補助変数ξを更新する。
補助変数更新部232は、具体的には以下に説明するように、ξの最適値を解析的に求める。まず、補助変数ξ以外の全ての変数を固定して考えた場合、補助変数ξの最適値は、目的関数の勾配
が0になる時の値である。目的関数の補助変数ξに関する勾配
は以下(7)式となる。
このように、補助変数ξの最適値は解析的に求めることができる。上記(7)式からもわかるように、例えば、特定の最適化変数zしか更新されていない場合は、特定の補助変数ξの値は前回と全く同じ値であることがある。これは、i番目の制約の最適化変数zの係数ai,jがai,j=0である場合に、zの変更はi番目の制約に何も影響を与え無いためである。
よって、逆に言えば、ある一つの最適化変数zのみが更新された場合は、ai,j≠0の制約のみを更新すれば良い。また、その変化量は、ai,jの増減のみである。つまり、この計算は非常に高速に計算できる。例えば、ai,j≠0の制約が10個であった場合は、10個の補助変数ξに対してαを増減すればよい。
上述したように、補助変数更新部232は、初期化された、又は前回更新された複数の最適化変数z及び制約の各々に対する違反度合いαに基づいて、上記(7)式に従って、制約の各々に対する補助変数ξを更新する。
違反度合更新部234は、初期化された、又は前回更新された複数の最適化変数zに基づいて、上記(6)式の目的関数を最適化するように、制約の各々に対する違反度合いαを更新する。
違反度合更新部234は、具体的には以下に説明するように、違反度合いαの最適値を求める。
ここでは、制約の違反度合いを判定したいので、元の不等式制約の違反度を反映させたい。よって、便宜上ξ=0とおいてαの更新式を考える。目的関数Lのαに関する勾配
は以下(8)式となる。
ここでは、ξのように解析解は求まらないため、勾配法による反復計算により最適値を求める方法を用いる。その際の更新式は以下(9)式のようになる。
ただし、ηは学習率であり、0<η<1の範囲の値をとることとする。ここでの注意点は、α≧0の制約があるので、違反度合いαは、必ず0以上の値をとるようになっている点である。
この更新の意味は、Σi,j−b>0の場合は制約が満たされていないので、
の値に応じて、拡張ラグランジュ緩和法における双対変数の値が増加する。つまり、i番目の制約に重みが加算され、次にzの更新候補を選択する際に、よりi番目の制約を満たすことを考慮して選択が行われる。逆に、Σi,j−b≦0の場合は制約が満たされていることを意味する。注意点としては、Σi,j−b≦0であるので、負の値であるから、
の値に応じて、違反度合いαの値は減ることになる。つまり、i番目の制約を満たすことを考慮する点において、制約を満たす度合いを多少減らすことを意味する。
また、違反度合いαも補助変数ξと同様に、例えば、特定の最適化変数zしか更新されていない場合は、特定の
の値は前回と全く同じ値となる。具体的には、i番目の制約のzの係数ai,jがai,j=0である場合に、zの変更はi番目の制約に何も影響を与えないため
の値は変化しない。よって、このようなケースで計算量を削減するために、
の値をキャッシュしておくこととする。このキャッシュを実現するには、
個の実数を保存するメモリを用いれば足りるため、効率がよい。
上述したように、違反度合更新部234は、初期化された、又は前回更新された複数の最適化変数zに基づいて、上記(9)式に従って、制約の各々に対する違反度合いαを更新する。
最適化変数更新部236は、以下に説明するように、補助変数更新部232で更新された制約の各々に対する補助変数ξ、及び違反度合更新部234で更新された制約の各々に対する違反度合いαに基づいて、値を変更することにより上記(6)式の目的関数の値を最も良くする最適化変数zを選択して更新する。
最適化変数更新部236では、具体的には、以下の第1及び第2の処理によって最適化変数zを更新する。第1の処理は、最も目的関数の値を減らせる変数を一つ選択する処理である。第2の処理は、第1の処理で選択する変数が既に探索済みか判定する処理である。
最適化変数更新部236は、第1の処理において、一回の変更で最も目的関数の値を減らせる最適化変数を選択して更新する。最適化変数の取り得る値は、0または1なので、最適化変数の現在の値が1であれば0、0であれば1へ変更した際に、緩和問題の目的関数Lの値を最も多く減らせる最適化変数を一つ選択する最適化問題を解けばよい。よって、最適化変数zに対して、現在の値から、もう一方の値に変化させた際に目的関数がどのぐらい変化するかを計算する必要がある。まず、ある任意のjを一つ選択する。このとき、対象とする最適化変数zがz=1の時の目的関数の値
と、z=0の時の目的関数の値
は以下(10)式で記述できる。
ここで、
との値を比較すると、右辺第3項までは全く同じであることがわかる。よって、現在z=1であり、これをz=0に変更した際の目的関数の増減は以下(11)式で求められる。
ここで、先ほど上記(8)式において、
とおいたので、上記(11)式はさらに以下(12)式のようにかける。
ここで、あるjに対して、ai,j≠0の数を
と記述するとすれば、右辺第2項は
回の足し算
の部分と、
のai,jとの掛け算をし、最後にρとの掛け算の計算量でzを変化させた際の目的関数の変化量を計算することができる。
また、現在z=0であり、これをz=1に変更した場合の目的関数の増減は、上記(12)式の右辺の値に−1を掛けると、以下(13)式となることは容易にわかる。
次に、最適化変数更新部236は、第2の処理において、第1の処理で選択して更新した最適化変数zの各々の値の組み合わせ(解候補)が既に探索済みであるか否かを判定する。
これは、解候補が、既に処理した更新部32〜32のいずれかの処理部における処理で既に出現していた場合は、処理中の更新部におけるそこから先の処理は、解候補が以前に出現した際の組み合わせと完全に一致してしまうため、無駄な処理になってしまう。この無駄な処理を削減するため、既に探索済みかどうかを判定し、探索済みの場合は、最適化変数をこれ以上更新しないようにする。
ここでは、第1の処理で選択した最適化変数zを更新したときの最適化変数zの各々の値の組み合わせ(現在の解候補)を表すbit列について、bit列から任意のハッシュ値を計算し、キャッシュテーブル33における、計算したハッシュ値をアドレスとした位置に、現在の解候補のbit列を格納する。このキャッシュテーブル33を使うことで任意の解候補が既に出現したかどうかの判定自体は非常に単純に行うことができる。現在の解候補のbit列からハッシュ値を計算し、計算されたハッシュ値をアドレスとした位置にbit列が格納されている場合に、現在の解候補のbit列と、計算されたハッシュ値をアドレスとした位置に格納さているbit列とが完全一致する場合には、現在の解候補は探索済みであると判定することができる。
ただし、キャッシュテーブル33に利用可能なメモリ量は有限なので、これまで探索した解候補のbit列を全て保持することは事実上不可能である。ここでは、「これまでに探索した解」を「これまでに探索していない解」とある程度間違えることは許容することとする。逆に、「これまでに探索していない解」を「これまでに探索した解」を間違えることは、探索中に到達不可能な解候補ができてしまうため、こちらは許容しないとする。
これら二つの要件を満たすために、キャッシュテーブル33内のbit列は、同じハッシュ値になる場合は上書きされ、古いbit列は消失する、という処理を導入する。これはつまり、キャッシュテーブルに入っているbit列は、少なくとも、これまでに探索した解候補(の一部)であることは保証できる。一方、上書きにより古いbit列が消失することがあるので、「これまでに探索した解」を「これまでに探索していない解」と間違えることが発生する。ただし、これによって、キャッシュテーブル33の一定のメモリサイズ内で全ての処理を行うことが可能になるという利点が加えられる。
実際の処理では、例えば、解候補のbit列を固定長のブロックに分割し、各ブロック毎にブルームフィルタを構築することで、キャッシュテーブル33の計算コストを削減するといった工夫ができる。
これは、偽陽性(出現していなくても出現したと判定する)をある程度許容して、偽陰性(出現したものを出現していないと判定する)は起こらないというブルームフィルタの性質から、少なくとも全てのブロックで「出現した」と判定されなければ、絶対に出現していないことは保証できる。よって、キャッシュテーブル33への問い合わせの前にブルームフィルタが一つでも出現していないと判定した場合には、それ以上の処理は不要となる。
また、ブロックで分割したことと、一回で変更される変数は一つであることを加味して、一回の判定では、高々一回のブルームフィルタの計算を行えばよい。さらに、キャッシュテーブル33のハッシュ計算とブルームフィルタで計算するハッシュとを共有することで、余計な計算を削減することもできる。
上述したように、最適化変数更新部236は、補助変数更新部232で更新された制約の各々に対する補助変数ξ、及び違反度合更新部234で更新された制約の各々に対する違反度合いαに基づいて、上記(13)式に示す目的関数の増減が最も大きい最適化変数zを選択して更新する。そして、選択した最適化変数zて¥を更新したときの最適化変数zの各々の値の組み合わせを表すbit列についてハッシュ値を計算し、キャッシュテーブル33において、計算されたハッシュ値をアドレスとした位置にbit列が格納されている場合に、最適化変数の各々の値の組み合わせを表すbit列と、計算されたハッシュ値をアドレスとした位置に格納されているbit列とが一致するか否かを判定し、一致すると判定された場合、更新部32〜32のうちの処理中の更新部による処理を終了し、一致しないと判定された場合、又は、計算されたハッシュ値をアドレスとした位置にbit列が格納されていない場合に、キャッシュテーブル33において、計算されたハッシュ値をアドレスとした位置に、最適化変数の各々の値の組み合わせを表すbit列を格納する。
終了判定部238は、どの最適化変数zの値を変更しても目的関数の値が良くならず、かつ、制約の各々を満たすまで(実行可能解となるまで)、補助変数更新部232による更新、違反度合更新部234による更新、及び最適化変数更新部236による更新を繰り返させる。
<本発明の実施の形態に係る最適化問題解決装置の作用>
次に、本発明の実施の形態に係る最適化問題解決装置100の作用について説明する。入力部10において貪欲山登り法を行うオブジェクトを生成する指令を受け付けると、最適化問題解決装置100は、図3に示す最適化問題解決処理ルーチンを実行する。
まず、ステップS100では、入力部10において受け付けた指令により、貪欲山登り法を行うN個のオブジェクトを生成し、n=1とする。
次に、ステップS102では、生成されたn番目のオブジェクトについて、貪欲法による山登り法に従って、制約を満たしつつ、予め定められた、最適化変数z及びコスト値cの各々を含む、上記(6)式の目的関数を最適化するように、最適化変数を選択して更新することを繰り返す。
ステップS104では、ステップS102におけるn番目の目的関数の最適値の更新の結果を受け取る。
ステップS106では、ステップS102で更新された目的関数の最適値を比較して、より良い目的関数の最適値が得られたときの最適化変数の各々の値を暫定解として保持する。
ステップS108では、規定回数K回分の更新処理が行われたか否かを判定し、K回分の更新処理が行われていればステップS112へ移行し、K回分の更新処理が行われていなければステップS110でn=n+1とし、ステップS102に戻って処理を繰り返す。
ステップS112では、ステップS106で保持した目的関数の最適値を出力部50に出力し、処理を終了する。
ステップS102は、図4に示す更新処理ルーチンによって実行される。
ステップS200では、最適化変数zの値をランダムに初期化し、違反度合いαをα=0と初期化する。
ステップS202では、初期化された、又は前回更新された複数の最適化変数z及び制約の各々に対する違反度合いαに基づいて、上記(7)式に従って、制約の各々に対する補助変数ξを更新する。
ステップS204では、初期化された、又は前回更新された複数の最適化変数zに基づいて、上記(9)式に従って、制約の各々に対する違反度合いαを更新する。
ステップS206では、ステップS202で更新された制約の各々に対する補助変数ξ、及びステップS204で更新された制約の各々に対する違反度合いαに基づいて、上記(13)式に示す目的関数の増減が最も大きい最適化変数zを選択する。
ステップS208では、ステップS206で選択した最適化変数zを更新したときの最適化変数zの各々の値の組み合わせを表すbit列についてハッシュ値を計算し、キャッシュテーブル33において、計算されたハッシュ値をアドレスとした位置にbit列が格納されているか否かを判定する。キャッシュテーブル33において、計算されたハッシュ値をアドレスとした位置にbit列が格納されていない場合には、ステップS210へ移行する。一方、キャッシュテーブル33において、計算されたハッシュ値をアドレスとした位置にbit列が格納されている場合に、ステップS209において、最適化変数の各々の値の組み合わせを表すbit列と、計算されたハッシュ値をアドレスとした位置に格納されているbit列とが一致するか否かを判定する。一致しないと判定された場合に、ステップS210へ移行し、一致すると判定された場合は、更新処理ルーチンを終了する。
ステップS210では、キャッシュテーブル33において、ステップS208で計算したハッシュ値をアドレスとした位置に、最適化変数zの値の組み合わせを表すbit列を保存する。なお、計算したハッシュ値をアドレスとした位置に既にbit列が存在する場合には上書きする。
ステップS212では、どの最適化変数zの値を変更しても目的関数の値が良くならず、かつ、制約の各々を満たすことを条件として、条件を満たすか否かを判定し、条件を満たさなければステップS202に戻って処理を繰り返し、条件を満たせば更新処理ルーチンを終了する。
ステップS214では、ステップS208でどの最適化変数zの値を変更しても目的関数の値が良くならず、かつ、制約の各々を満たすことを条件として、条件を満たすか否かを判定し、条件を満たさなければステップS202に戻って処理を繰り返し、条件を満たせば更新処理ルーチンを終了する。
以上説明したように、本発明の実施の形態に係る最適化問題解決装置によれば、更新部32〜32の各部が、貪欲法による山登り法に従って、制約を満たしつつ、予め定められた、最適化変数の各々及びコスト値の各々を含む目的関数を最適化するように、最適化変数を選択して更新することを繰り返し、反復判定部36が、予め定められた反復終了条件を満たすまで、更新部32〜32による更新を繰り返させることにより、効率よく、整数計画問題を解くことができる。
なお、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
10 入力部
20 演算部
30 オブジェクト生成部
321〜N 更新部
33 キャッシュテーブル
34 結果比較部
36 反復判定部
50 出力部
100 最適化問題解決装置
230 初期化部
231 重複探索排除部
232 補助変数更新部
234 違反度合更新部
236 最適化変数更新部
238 終了判定部

Claims (5)

  1. 0又は1の値をとる最適化変数の各々と、前記最適化変数の各々を選択した場合のコスト値の各々と、前記最適化変数の各々に対する制約の各々とが与えられたときに、前記制約を満たしつつ、前記最適化変数を最適化するための整数計画問題を解く最適化問題解決装置であって、
    貪欲法による山登り法に従って、前記制約を満たしつつ、予め定められた、前記最適化変数の各々及び前記コスト値の各々と、前記制約の各々に対する、前記制約を表す不等式制約を等式制約に変換するための補助変数と、前記制約の各々に対する、前記制約を満たさない度合いを表す違反度合いとを含む目的関数を最適化するように、前記最適化変数を選択して更新することを繰り返す更新部と、
    予め定められた反復終了条件を満たすまで、前記更新部による更新を繰り返させる反復判定部と、
    前記更新部による更新で前記目的関数の最適値が得られる毎に、前記目的関数の最適値を比較して、より良い前記目的関数の最適値が得られたときの前記最適化変数の各々の値を暫定解として保持する結果比較部と、を含み、
    前記更新部は、
    前記最適化変数の各々を初期化する初期化部と、
    前記最適化変数の各々及び前記制約の各々に対する違反度合いに基づいて、前記目的関数を最適化するように、前記制約の各々に対する補助変数を更新する補助変数更新部と、
    前記最適化変数の各々に基づいて、前記目的関数を最適化するように、前記制約の各々に対する違反度合いを更新する違反度合更新部と、
    前記制約の各々に対する補助変数及び前記制約の各々に対する違反度合いに基づいて、前記最適化変数の値を変更することにより前記目的関数の値を最も良くする前記最適化変数を選択して更新する最適化変数更新部と、
    前記最適化変数の値を変更しても前記目的関数の値が良くならず、かつ、前記制約の各々を満たすまで、前記補助変数更新部による更新、前記違反度合更新部による更新、及び最適化変数更新部による更新を繰り返させる終了判定部と、
    を含む最適化問題解決装置。
  2. 前記最適化変数更新部は、前記最適化変数を選択して更新したとき前記最適化変数の各々の値の組み合わせを表すbit列についてハッシュ値を計算し、キャッシュテーブルにおいて、計算されたハッシュ値をアドレスとした位置にbit列が格納されている場合に、前記最適化変数の各々の値の組み合わせを表すbit列と、前記計算されたハッシュ値をアドレスとした位置に格納されているbit列とが一致するか否かを判定し、一致すると判定された場合、前記更新部による処理を終了し、一致しないと判定された場合、前記キャッシュテーブルにおいて、前記計算されたハッシュ値をアドレスとした位置に、前記最適化変数の各々の値の組み合わせを表すbit列を格納する請求項に記載の最適化問題解決装置。
  3. 0又は1の値をとる最適化変数の各々と、前記最適化変数の各々を選択した場合のコスト値の各々と、前記最適化変数の各々に対する制約の各々とが与えられたときに、前記制約を満たしつつ、前記最適化変数を最適化するための整数計画問題を解く最適化問題解決装置における最適化問題解決方法であって、
    更新部が、貪欲法による山登り法に従って、前記制約を満たしつつ、予め定められた、前記最適化変数の各々及び前記コスト値の各々と、前記制約の各々に対する、前記制約を表す不等式制約を等式制約に変換するための補助変数と、前記制約の各々に対する、前記制約を満たさない度合いを表す違反度合いとを含む目的関数を最適化するように、前記最適化変数を選択して更新することを繰り返すステップと、
    反復判定部が、予め定められた反復終了条件を満たすまで、前記更新部による更新を繰り返させるステップと、
    結果比較部が、前記更新部による更新で前記目的関数の最適値が得られる毎に、前記目的関数の最適値を比較して、より良い前記目的関数の最適値が得られたときの前記最適化変数の各々の値を暫定解として保持するステップと、を含み、
    前記更新部が更新するステップは、
    初期化部が、前記最適化変数の各々を初期化するステップと、
    補助変数更新部が、前記最適化変数の各々及び前記制約の各々に対する違反度合いに基づいて、前記目的関数を最適化するように、前記制約の各々に対する補助変数を更新するステップと、
    違反度合更新部が、前記最適化変数の各々に基づいて、前記目的関数を最適化するように、前記制約の各々に対する違反度合いを更新するステップと、
    最適化変数更新部が、前記制約の各々に対する補助変数及び前記制約の各々に対する違反度合いに基づいて、前記最適化変数の値を変更することにより前記目的関数の値を最も良くする前記最適化変数を選択して更新するステップと、
    終了判定部が、前記最適化変数の値を変更しても前記目的関数の値が良くならず、かつ、前記制約の各々を満たすまで、前記補助変数更新部による更新、前記違反度合更新部による更新、及び最適化変数更新部による更新を繰り返させるステップと、
    を含む最適化問題解決方法。
  4. 前記最適化変数更新部が更新するステップは、前記最適化変数を選択して更新したとき前記最適化変数の各々の値の組み合わせを表すbit列についてハッシュ値を計算し、キャッシュテーブルにおいて、計算されたハッシュ値をアドレスとした位置にbit列が格納されている場合に、前記最適化変数の各々の値の組み合わせを表すbit列と、前記計算されたハッシュ値をアドレスとした位置に格納されているbit列とが一致するか否かを判定し、一致すると判定された場合、前記更新部による処理を終了し、一致しないと判定された場合、前記キャッシュテーブルにおいて、前記計算されたハッシュ値をアドレスとした位置に、前記最適化変数の各々の値の組み合わせを表すbit列を格納する請求項に記載の最適化問題解決方法。
  5. コンピュータを、請求項1又は請求項2に記載の最適化問題解決装置の各部として機能させるためのプログラム。
JP2016113044A 2016-06-06 2016-06-06 最適化問題解決装置、方法、及びプログラム Active JP6628041B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016113044A JP6628041B2 (ja) 2016-06-06 2016-06-06 最適化問題解決装置、方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016113044A JP6628041B2 (ja) 2016-06-06 2016-06-06 最適化問題解決装置、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2017219979A JP2017219979A (ja) 2017-12-14
JP6628041B2 true JP6628041B2 (ja) 2020-01-08

Family

ID=60658084

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016113044A Active JP6628041B2 (ja) 2016-06-06 2016-06-06 最適化問題解決装置、方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP6628041B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107220780B (zh) * 2017-06-16 2020-07-28 佛山科学技术学院 众包系统中的异构任务执行序列优化方法
JP7182173B2 (ja) * 2018-06-20 2022-12-02 株式会社デンソー 変数埋込方法及び処理システム
WO2020027785A1 (en) * 2018-07-31 2020-02-06 The University Of Tokyo Data processing apparatus
JP7502269B2 (ja) 2019-03-28 2024-06-18 株式会社東芝 情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラム
JP7411397B2 (ja) 2019-12-04 2024-01-11 株式会社リクルート 整数計画装置、整数計画方法及び整数計画プログラム
CN111798119B (zh) * 2020-06-30 2023-11-07 西安建筑科技大学 一种预制构件流水车间订单接受与调度集成优化方法
JP7478395B2 (ja) 2021-02-02 2024-05-07 日本電信電話株式会社 軌道算出装置、軌道算出方法およびプログラム
WO2023175946A1 (ja) * 2022-03-18 2023-09-21 日本電気株式会社 情報処理装置、制御方法及び記憶媒体

Also Published As

Publication number Publication date
JP2017219979A (ja) 2017-12-14

Similar Documents

Publication Publication Date Title
JP6628041B2 (ja) 最適化問題解決装置、方法、及びプログラム
WO2014136810A1 (ja) 類似データ検索装置、類似データ検索方法、及びコンピュータ読み取り可能な記録媒体
JP6470165B2 (ja) サーバ、システム及び探索方法
CN114372577B (zh) 用于管理量子系统的状态的方法、设备、装置和介质
KR20130020050A (ko) 로컬리티 센서티브 해시의 버킷 구간 관리 장치 및 그 방법
Peng et al. A fast algorithm to find all-pairs shortest paths in complex networks
CN106326005B (zh) 一种迭代型MapReduce作业的参数自动调优方法
JP7139805B2 (ja) 化合物探索装置、化合物探索方法、及び化合物探索プログラム
JP2017162074A (ja) サーバ、システム及び探索方法
JP6044628B2 (ja) 乱数発生装置、乱数発生方法、オブジェクト配置装置、並びにコンピュータ・プログラム
WO2020162205A1 (ja) 最適化装置、方法、及びプログラム
JP5752337B1 (ja) 情報処理システム、情報処理方法およびプログラム
Djukanovic et al. On solving a generalized constrained longest common subsequence problem
JP5555238B2 (ja) ベイジアンネットワーク構造学習のための情報処理装置及びプログラム
Woon et al. Knowledge‐based algorithms in fixed‐grid GA shape optimization
CN107105052A (zh) 基于图规划的启发式Web服务组合方法
JP6745507B2 (ja) パラメータ推定装置、方法、及びプログラム
JP5530469B2 (ja) 自然言語解析処理装置、方法、及びプログラム
US20090164726A1 (en) Programmable Address Processor for Graphics Applications
CN112100446A (zh) 搜索方法、可读存储介质和电子设备
CN105550765B (zh) 一种路网距离计算中的代表元选取方法
Tang et al. Robust contextual bandits via bootstrapping
JP6967422B2 (ja) 計算機及び計算方法
Dudek et al. Edit Distance between Unrooted Trees in Cubic Time
CN116662686A (zh) 一种url请求匹配方法、装置、计算机设备以及存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20160607

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180720

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180720

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190604

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190801

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: 20191112

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191119

R150 Certificate of patent or registration of utility model

Ref document number: 6628041

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250