IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

特許7468663最適化装置、最適化方法および最適化プログラム
<>
  • 特許-最適化装置、最適化方法および最適化プログラム 図1
  • 特許-最適化装置、最適化方法および最適化プログラム 図2
  • 特許-最適化装置、最適化方法および最適化プログラム 図3
  • 特許-最適化装置、最適化方法および最適化プログラム 図4
  • 特許-最適化装置、最適化方法および最適化プログラム 図5
  • 特許-最適化装置、最適化方法および最適化プログラム 図6
  • 特許-最適化装置、最適化方法および最適化プログラム 図7
  • 特許-最適化装置、最適化方法および最適化プログラム 図8
  • 特許-最適化装置、最適化方法および最適化プログラム 図9
  • 特許-最適化装置、最適化方法および最適化プログラム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-08
(45)【発行日】2024-04-16
(54)【発明の名称】最適化装置、最適化方法および最適化プログラム
(51)【国際特許分類】
   G06N 99/00 20190101AFI20240409BHJP
【FI】
G06N99/00 180
【請求項の数】 5
(21)【出願番号】P 2022539927
(86)(22)【出願日】2020-07-30
(86)【国際出願番号】 JP2020029356
(87)【国際公開番号】W WO2022024329
(87)【国際公開日】2022-02-03
【審査請求日】2023-01-19
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103090
【弁理士】
【氏名又は名称】岩壁 冬樹
(74)【代理人】
【識別番号】100124501
【弁理士】
【氏名又は名称】塩川 誠人
(72)【発明者】
【氏名】鈴木 基己
(72)【発明者】
【氏名】井上 浩明
(72)【発明者】
【氏名】荒木 拓也
(72)【発明者】
【氏名】鷹野 芙美代
(72)【発明者】
【氏名】小林 悠記
(72)【発明者】
【氏名】千嶋 博
(72)【発明者】
【氏名】矢田部 彰宏
(72)【発明者】
【氏名】西村 考弘
【審査官】千葉 久博
(56)【参考文献】
【文献】特開2006-208366(JP,A)
【文献】特開平8-153085(JP,A)
【文献】国際公開第2014/192153(WO,A1)
【文献】金丸翔、外3名,実イジング計算機による制約付きスロット配置問題の解法,情報処理学会研究報告 システム・アーキテクチャ(ARC),日本,情報処理学会,2019年03月10日,Vol.2019-ARC-235 No.52,pp.1-6
【文献】糸山日出男, 外2名,“SA法を用いた配送計画問題の解法におけるエネルギー関数中の重み自動調節法”,電子情報通信学会論文誌,日本,社団法人電子情報通信学会,1996年09月25日,第J79-D-II巻, 第9号,p.1586-1593
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
複数の制約条件が課せられている組合せ最適化問題をシミュレーテッドアニーリング方式で求解する求解処理を実行する求解手段と、
前記複数の制約条件それぞれに対する優先度に基づいて、前記組合せ最適化問題のエネルギー関数における前記複数の制約条件のエネルギーそれぞれの重みを前記求解処理の結果を用いて調整する調整手段とを備え
前記調整手段は、前記求解処理の結果として、前記求解処理で探索された解の数のうち制約条件を満たさない解の数の割合である違反度を使用する
ことを特徴とする最適化装置。
【請求項2】
求解手段は、
調整された複数の制約条件のエネルギーそれぞれの重みを用いて組合せ最適化問題のエネルギー関数を更新し、
更新されたエネルギー関数に対して求解処理を実行する
請求項1記載の最適化装置。
【請求項3】
調整手段は、
優先度が高いほど順位が低くなるように複数の制約条件それぞれに優先度の順位を割り当て、
違反度が大きいほど順位が高くなるように前記複数の制約条件それぞれに違反度の順位を割り当て、
割り当てられた優先度の各順位と割り当てられた違反度の各順位がそれぞれ一致するように前記複数の制約条件のエネルギーそれぞれの重みを調整する
請求項1または請求項2記載の最適化装置。
【請求項4】
複数の制約条件が課せられている組合せ最適化問題をシミュレーテッドアニーリング方式で求解する求解処理を実行し、
前記複数の制約条件それぞれに対する優先度に基づいて、前記組合せ最適化問題のエネルギー関数における前記複数の制約条件のエネルギーそれぞれの重みを前記求解処理の結果を用いて調整し、
前記求解処理の結果として、前記求解処理で探索された解の数のうち制約条件を満たさない解の数の割合である違反度を使用する
ことを特徴とする最適化方法。
【請求項5】
コンピュータに、
複数の制約条件が課せられている組合せ最適化問題をシミュレーテッドアニーリング方式で求解する求解処理、および
前記複数の制約条件それぞれに対する優先度に基づいて、前記組合せ最適化問題のエネルギー関数における前記複数の制約条件のエネルギーそれぞれの重みを前記求解処理の結果を用いて調整する調整処理を実行させ、
前記調整処理で、前記求解処理の結果として、前記求解処理で探索された解の数のうち制約条件を満たさない解の数の割合である違反度を使用させる
めの最適化プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、最適化装置、最適化方法および最適化プログラムに関する。
【背景技術】
【0002】
量子アニーリングマシンの実用化を契機に、組合せ最適化問題に関する研究が再度注目されている。組合せ最適化問題は、最適となる組合せを求める問題である。現実社会における課題を表した組合せ最適化問題として、巡回セールスマン問題、ナップサック問題、シフト最適化問題、および配送計画問題等が挙げられる。
【0003】
シフト最適化問題は、例えば、14日間における6人の従業員のシフトを、課せられている様々な制約条件が満たされるように組む問題である。課せられている制約条件は、「1人の従業員が4日連続で勤務すること、または4連休を取得することは禁止」、「1日に勤務する従業員の数を3人以上4人以下にする」、「各従業員の休暇希望を反映させる」、「全員の勤務日数に偏りが無いようにする」等である。
【0004】
図8は、シフト最適化問題の解の例を示す説明図である。図8は、シフト最適化問題が求解されることによって得られた、14日間における従業員A~Fの6人のシフトを示す。具体的には、図8に示す「〇」は「出勤」を、「×」は「休暇」をそれぞれ表している。
【0005】
上記の組合せ最適化問題は、例えば、イジングモデル形式で記述される。イジングモデルは、個々のスピンによって磁性体の振る舞いを表す統計力学上のモデルである。イジングモデルでは、個々のスピンの向きは、“1”または“-1”で表される。イジングモデルは、多くの組合せ最適化問題を定式化できる。
【0006】
組合せ最適化問題がイジングモデル形式で記述される場合、最初に組合せ最適化問題におけるエネルギーを表す式が作成される。次いで、組合せ最適化問題におけるエネルギーを表す式が、イジングモデルにおけるエネルギー関数に変換される。なお、イジングモデルにおけるエネルギー関数への変換方法は、公知である。イジングモデルにおけるエネルギー関数は、以下の式(1)のように表される。
【0007】
【数1】
【0008】
なお、式(1)におけるi,jは、いずれもスピンを表す変数である。また、式(1)におけるsiは、スピンiの向きを表す変数であり、sjは、スピンjの向きを表す変数である。すなわち、si、sjは、“1”または“-1”のいずれかである変数である。
【0009】
また、式(1)におけるhiは、スピンiに対応する定数である。iの取り得る値毎に、hiは定数として定められる。また、式(1)におけるJij は、スピンiおよびスピンjの組合せに対応する定数である。iの取り得る値とjの取り得る値の組合せ毎に、Jij は定数として定められる。
【0010】
全結合の場合におけるイジングモデルは、例えば、完全グラフで表現可能である。図9は、スピンの数が7個の場合の完全グラフの例を示す説明図である。
【0011】
図9に示す白抜きの矢印は、スピンを表している。上向きの白抜きの矢印は、変数の値が“1”であるスピンを表す。また、下向きの白抜きの矢印は、変数の値が“-1”であるスピンを表す。
【0012】
また、白抜きの矢印同士を結ぶ各エッジは、スピン間の結合を表す。各エッジには、スピンの組合せに対応するJij の値がそれぞれ割り当てられている。
【0013】
また、イジングモデルにおけるエネルギー関数の代わりに、QUBO(Quadratic Unconstrained Binary Optimization )のエネルギー関数が用いられてもよい。QUBOは、個々のスピンの向きを“1”または“0”で表すモデルである。
【0014】
すなわち、組合せ最適化問題におけるエネルギーを表す式は、QUBOにおけるエネルギー関数に変換可能である。この変換方法は、公知である。以下、組合せ最適化問題におけるエネルギーを表す式がQUBOにおけるエネルギー関数で表される場合、組合せ最適化問題がQUBO形式で記述されるという。
【0015】
また、イジングモデルにおけるエネルギー関数と、QUBOにおけるエネルギー関数とは、相互に変換可能である。QUBOにおけるエネルギー関数は、以下の式(2)のように表される。
【0016】
【数2】
【0017】
なお、式(2)におけるi,jは、いずれもスピンを表す変数である。また、式(2)におけるxiは、スピンiの向きを表す変数であり、xjは、スピンjの向きを表す変数である。また、式(2)におけるQij は、スピンiおよびスピンjの組合せに対応する定数である。iの取り得る値とjの取り得る値の組合せ毎に、Qij は定数として定められる。
【0018】
式(1)に示すエネルギー関数が与えられた場合、組合せ最適化問題が求解されると、最適な個々のスピンの向き(1または-1)が求められる。また、式(2)に示すエネルギー関数が与えられた場合、組合せ最適化問題が求解されると、最適な個々のスピンの向き(1または0)が求められる。求められた最適な個々のスピンの向きは、組合せ最適化問題の解を表している。
【0019】
多くの組合せ最適化問題は、例えば、与えられた制約条件の下で任意の目的関数(最小化対象)を最小にする組合せを求める問題である最小化問題に帰着可能である。組合せ最適化問題が最小化問題である場合、最適な個々のスピンの向きは、エネルギー関数が示すエネルギーができるだけ小さくなるような個々のスピンの向きである。
【0020】
上述したように、イジングモデル形式で記述された組合せ最適化問題を高速に求解可能な量子コンピュータが開発されたことを契機に、組合せ最適化技術を応用した研究が注目されている。なお、量子力学を用いた量子コンピュータを、「実量子」と呼ぶ場合がある。
【0021】
制約条件は、例えば、最小化問題の解として許されない複数のスピンの向きの組合せを指定する条件である。ペナルティ法では、最小化問題の解が制約条件に違反する場合、エネルギーが高くなるような項である制約項が目的関数と加算される。
【0022】
また、特許文献1には、制約条件の一例であるone-hot 制約を有する組合せ最適化問題の計算時間を短縮可能な最適化装置が記載されている。
【0023】
例えば、one-hot 制約が課せられた組合せ最適化問題の解に関して、ペナルティ法では以下のようにエネルギー関数(評価関数)の値が定められる。
【0024】
・組合せ最適化問題の解「00010000」:(エネルギー関数の値)=(最小化すべき目的関数)+0(∵one-hot 制約を充足)
・組合せ最適化問題の解「00010010」:(エネルギー関数の値)=(最小化すべき目的関数)+100(∵one-hot 制約に違反)
【0025】
以下、例としてone-hot 制約が課せられた巡回セールスマン問題におけるエネルギーの定式化を考える。本例における巡回セールスマン問題は、都市A~Eの5都市を1度ずつ訪れる際の経路、すなわち訪れる都市の順番を決める問題である。巡回セールスマン問題では、全ての都市を1回ずつ訪れる経路の中で距離が最小である経路が最適解である。
【0026】
巡回セールスマン問題がイジングモデル形式またはQUBO形式で記述される場合、エネルギー関数では5×5=25個のスピンが使用される。本例では、巡回セールスマン問題がQUBO形式で記述される場合を考える。
【0027】
図10は、巡回セールスマン問題の解の例を示す説明図である。図10に示す「1」は、セールスマンを表す。すなわち、図10に示す解は、「都市A→都市D→都市C→都市B→都市E→都市A」の順でセールスマンが巡回する経路を表している。
【0028】
なお、巡回セールスマン問題には、セールスマンが1度に1都市しか訪問できないという制約条件が課せられている。図10に示す解であれば、各都市の列、および各順番の行に対して、それぞれone-hot 制約が課せられている。
【0029】
本例の巡回セールスマン問題におけるエネルギーを表すQUBOのエネルギー関数における定数Qij は、スピン間の相互作用を表す。ペナルティ法が使用される場合、定数Qij は、都市間の距離に基づいた相互作用を表すQdistance と、one-hot 制約に基づいた相互作用を表すQonehot との和として、以下のように表現される。なお、「kp」は、one-hot 制約の重みを表す。
【0030】
Qij = Qdistance + kp × Qonehot
【先行技術文献】
【特許文献】
【0031】
【文献】特開2020-064536号公報
【発明の概要】
【発明が解決しようとする課題】
【0032】
組合せ最適化問題に課せられる制約条件の内容は、単一ではなく、多種多様である。例えば、シフト最適化問題の場合、以下の5種類の制約条件が課せられることが考えられる。
【0033】
・第1制約条件:「同一従業員を同一シフトに2回以上割り当てない(原理的制約)」
・第2制約条件:「長い連勤の禁止(法律的制約)」
・第3制約条件:「従業員の優先度の高い休暇希望を反映させる」
・第4制約条件:「1日あたりリーダ格の従業員を1人以上割り当てる」
・第5制約条件:「従業員の優先度の低い休暇希望を反映させる」/「3人の従業員A、B、Cを同一シフトに割り当てない」
【0034】
上記の例では、シフト最適化問題を求解するにあたって、第1制約条件、第2制約条件、・・・、第5制約条件の順に、各制約条件が満たされることが求められる。すなわち、5種類の制約条件の中で、第1制約条件が最も満たされなければならない条件である。また、5種類の制約条件の中で、第5制約条件が最も満たされなくてもよい条件である。
【0035】
以下、上記の第1制約条件のように、満たされていなければ求められても組合せ最適化問題の解として意味が無いような優先度が高い制約条件を、強い制約条件と呼ぶ。また、強い制約条件よりも優先度が低い制約条件を、弱い制約条件と呼ぶ。
【0036】
各制約条件の強さ(優先度)は、最適化装置のユーザの目的に依存する。よって、ユーザが各制約条件の強さをそれぞれ指定し、指定された強さが反映された組合せ最適化問題を最適化装置が求解すれば、ユーザの目的に応じた組合せ最適化問題の解が求められることが期待される。しかし、特許文献1に記載されている最適化装置において、ユーザは、各制約条件の強さを指定できない。
【0037】
そこで、本発明は、組合せ最適化問題に課せられている各制約条件に対するユーザの優先度を組合せ最適化問題に反映できる最適化装置、最適化方法および最適化プログラムを提供することを目的とする。
【課題を解決するための手段】
【0039】
本発明による最適化装置は、複数の制約条件が課せられている組合せ最適化問題をシミュレーテッドアニーリング方式で求解する求解処理を実行する求解手段と、複数の制約条件それぞれに対する優先度に基づいて、組合せ最適化問題のエネルギー関数における複数の制約条件のエネルギーそれぞれの重みを求解処理の結果を用いて調整する調整手段とを備え、調整手段は、求解処理の結果として、求解処理で探索された解の数のうち制約条件を満たさない解の数の割合である違反度を使用することを特徴とする。
【0041】
本発明による最適化方法は、複数の制約条件が課せられている組合せ最適化問題をシミュレーテッドアニーリング方式で求解する求解処理を実行し、複数の制約条件それぞれに対する優先度に基づいて、組合せ最適化問題のエネルギー関数における複数の制約条件のエネルギーそれぞれの重みを求解処理の結果を用いて調整し、求解処理の結果として、求解処理で探索された解の数のうち制約条件を満たさない解の数の割合である違反度を使用することを特徴とする。
【0043】
本発明による最適化プログラムは、コンピュータに、複数の制約条件が課せられている組合せ最適化問題をシミュレーテッドアニーリング方式で求解する求解処理、および複数の制約条件それぞれに対する優先度に基づいて、組合せ最適化問題のエネルギー関数における複数の制約条件のエネルギーそれぞれの重みを求解処理の結果を用いて調整する調整処理を実行させ、調整処理で、求解処理の結果として、求解処理で探索された解の数のうち制約条件を満たさない解の数の割合である違反度を使用させることを特徴とする。
【発明の効果】
【0044】
本発明によれば、組合せ最適化問題に課せられている各制約条件に対するユーザの優先度を組合せ最適化問題に反映できる。
【図面の簡単な説明】
【0045】
図1】本発明の第1の実施形態の最適化装置の構成例を示すブロック図である。
図2】第1の実施形態の最適化装置100による組合せ最適化問題求解処理の動作を示すフローチャートである。
図3】本発明の第2の実施形態の最適化装置の構成例を示すブロック図である。
図4】第2の実施形態の最適化装置101による組合せ最適化問題求解処理の動作を示すフローチャートである。
図5】本発明による最適化装置のハードウェア構成例を示す説明図である。
図6】本発明による最適化装置の概要を示すブロック図である。
図7】本発明による他の最適化装置の概要を示すブロック図である。
図8】シフト最適化問題の解の例を示す説明図である。
図9】スピンの数が7個の場合の完全グラフの例を示す説明図である。
図10】巡回セールスマン問題の解の例を示す説明図である。
【発明を実施するための形態】
【0046】
実施形態1.
[構成の説明]
以下、本発明の第1の実施形態を図面を参照して説明する。図1は、本発明の第1の実施形態の最適化装置の構成例を示すブロック図である。
【0047】
本実施形態の最適化装置100は、制約付き最適化問題を無制約最適化問題に変換する装置である。具体的には、最適化装置100は、制約付き最適化問題を、ペナルティ法を用いて無制約最適化問題に帰着させる。
【0048】
図1に示すように、最適化装置100は、問題入力部110と、制約重み制御部120と、モデル生成部130と、最適化部140とを備える。
【0049】
また、図1に示すように、最適化装置100は、定式化装置200と通信可能に接続されている。
【0050】
定式化装置200は、入力される組合せ最適化問題におけるエネルギーを、上述したように定式化する装置である。
【0051】
以下、定式化装置200が30日間における30人の従業員のシフトを、課せられている様々な制約条件が満たされるように組むシフト最適化問題のエネルギー関数を生成する例を考える。
【0052】
本例のシフト最適化問題に課せられている制約条件は、「1人の従業員が5日連続で勤務することは禁止」、「1日に勤務する従業員の数を4人以上8人以下にする」、「1人の従業員が取得する休暇日は合計で8日以上にする」である。
【0053】
また、他に課せられている制約条件は、「1人の従業員が4連休を取得することは禁止」、「各従業員の休暇希望を反映させる」、「1日あたりリーダ格の従業員を1人以上割り当てる」、「全員の勤務日数の偏りを小さくする」である。なお、「各従業員のその他の希望を反映させる」という制約条件が課せられていてもよい。
【0054】
定式化装置200は、入力されるシフト最適化問題をQUBO形式で記述する。最初に、定式化装置200は、“0”または“1”のいずれかである変数xiをN(≧900=30×30)個用意する。
【0055】
次いで、定式化装置200は、式(2)に示すように、シフト最適化問題における最適化対象(例えば、コスト)のエネルギーを定式化する。次いで、定式化装置200は、課せられている制約条件ごとに、制約条件のエネルギーを以下のようにそれぞれ定式化する。
【0056】
【数3】
【0057】
すなわち、入力されるシフト最適化問題に課せられている制約条件が7個あるため、定式化装置200は、7個の制約条件のエネルギーをそれぞれ定式化する。
【0058】
定式化装置200は、定式化された各エネルギーに用いられている各定数Qij 、Q(1) ij~Q(7) ijを、最適化装置100の問題入力部110に入力する。なお、ユーザが、各定数を最適化装置100に直接入力してもよい。
【0059】
各定数Q(1) ij~Q(7) ijは、シフト最適化問題に課せられている各制約条件それぞれに対応する。なお、各定数Qij 、Q(1) ij~Q(7) ijは、行列形式で入力される。問題入力部110は、入力された各定数をモデル生成部130に入力する。
【0060】
制約重み制御部120は、各制約条件に対する重みwk(k=1-7) をそれぞれ制御する機能を有する。制約重み制御部120は、より考慮された方がよい制約条件に対する重みwkが大きくなるように、重みwkを制御する。
【0061】
例えば、制約重み制御部120には、ユーザから直接重みwkの値が入力されてもよい。ユーザから陽に値が与えられた場合、制約重み制御部120は、与えられた値を重みwkに決定してもよい。
【0062】
また、例えば、ユーザは、予め用意されている制約条件のレベルを基に、各制約条件が該当するレベルを制約重み制御部120に入力してもよい。例えば、ユーザは、定式化装置200がエネルギーを定式化するシフト最適化問題に課せられている各制約条件が該当するレベルを、それぞれ以下のように決めてもよい。
【0063】
・「1人の従業員が5日連続で勤務することは禁止」:レベル8
・「1日に勤務する従業員の数を4人以上にする」:レベル7
・「1日に勤務する従業員の数を8人以下にする」:レベル6
・「1人の従業員が取得する休暇日は合計で8日以上にする」:レベル5
・「1人の従業員が4連休を取得することは禁止」:レベル4
・「各従業員の休暇希望を反映させる」:レベル3
・「1日あたりリーダ格の従業員を1人以上割り当てる」:レベル2
・「全員の勤務日数の偏りを小さくする」:レベル1
【0064】
なお、レベル8に該当する制約条件は、満たされていなければ求められてもシフト最適化問題の解として意味が無いような最も強い制約条件である。また、レベル1に該当する制約条件は、最も弱い制約条件である。すなわち、制約条件が該当するレベルは、制約条件に対する優先度に相当する。
【0065】
また、ユーザが制約条件に対する優先度を制約重み制御部120に入力し、制約重み制御部120が入力された優先度に基づいて各制約条件が該当するレベルをそれぞれ決定してもよい。
【0066】
制約重み制御部120は、入力された各制約条件が該当するレベルを基に、各制約条件に対する重みwkをそれぞれ決定する。例えば、制約重み制御部120は、以下に示すような簡易な式で重みwkを決定してもよい。
【0067】
wk =(レベル)×(基礎値α)
【0068】
なお、上記の基礎値αは、正の定数である。基礎値αは、ユーザが入力した定数でもよい。制約重み制御部120は、決定された重みwkをモデル生成部130に入力する。
【0069】
モデル生成部130は、問題入力部110から入力された各定数と、制約重み制御部120から入力された各重みとを用いて、課せられている制約条件の優先度が考慮された組合せ最適化問題のエネルギー関数を生成する機能を有する。
【0070】
具体的には、モデル生成部130は、エネルギー関数における定数Qtotalを、以下のように算出する。
【0071】
【数4】
【0072】
最終的に、モデル生成部130は、以下に示すQUBOのエネルギー関数を生成する。
【0073】
【数5】
【0074】
すなわち、モデル生成部130は、入力されたシフト最適化問題を、式(4)に示すエネルギー関数を最小化する問題であって、制約条件が課せられていない問題である無制約最適化問題に帰着させる。モデル生成部130は、式(4)に示すエネルギー関数を最適化部140に入力する。
【0075】
最適化部140は、モデル生成部130から入力されたエネルギー関数で表された求解対象の組合せ最適化問題を求解する機能を有する。
【0076】
最適化部140は、シミュレーテッドアニーリング方式で組合せ最適化問題を求解する。最適化部140は、例えば既存のシミュレーテッドアニーリングマシンで実現される。
【0077】
以上のように、本実施形態の最適化装置100の制約重み制御部120は、組合せ最適化問題に課せられている複数の制約条件それぞれに対する重みを決定する。
【0078】
また、モデル生成部130は、組合せ最適化問題のエネルギー関数を、組合せ最適化問題における最適化対象のエネルギーの定式化に用いられている定数と、1つの制約条件に対して決定された重みが乗じられた1つの制約条件のエネルギーの定式化に用いられている定数の複数の制約条件に渡る総和との和である定数を用いて生成する。
【0079】
上述したように、制約重み制御部120は、入力された複数の重みを複数の制約条件それぞれに対する重みに決定してもよい。
【0080】
また、上述したように、制約重み制御部120は、入力された複数の制約条件それぞれに対する優先度に基づいて複数の制約条件それぞれに対する重みを決定してもよい。例えば、制約重み制御部120は、入力された優先度が高いほど順位が低くなるように複数の制約条件それぞれに順位(上記のレベル1-8等)を割り当て、割り当てられた各順位に所定の定数が乗じられることによって得られた各値を複数の制約条件それぞれに対する重みに決定してもよい。
【0081】
[動作の説明]
以下、本実施形態の最適化装置100の動作を図2を参照して説明する。図2は、第1の実施形態の最適化装置100による組合せ最適化問題求解処理の動作を示すフローチャートである。
【0082】
最初に、定式化装置200は、入力された組合せ最適化問題における最適化対象のエネルギー、および組合せ最適化問題に課せられている各制約条件のエネルギーをそれぞれ定式化する(ステップS101)。定式化装置200は、定式化された各エネルギーに用いられている各定数を、最適化装置100の問題入力部110に入力する。
【0083】
次いで、問題入力部110は、入力された各定数をモデル生成部130に入力する(ステップS102)。
【0084】
次いで、制約重み制御部120は、組合せ最適化問題に課せられている各制約条件に対する重みをそれぞれ決定する(ステップS103)。制約重み制御部120は、決定された各重みをモデル生成部130に入力する。
【0085】
次いで、モデル生成部130は、問題入力部110から入力された各定数と、制約重み制御部120から入力された各重みとを用いて、組合せ最適化問題のエネルギー関数を生成する(ステップS104)。モデル生成部130は、生成されたエネルギー関数を最適化部140に入力する。
【0086】
次いで、最適化部140は、モデル生成部130から入力されたエネルギー関数で表された求解対象の組合せ最適化問題を求解する(ステップS105)。次いで、最適化部140は、求解することによって算出した組合せ最適化問題の解を出力する(ステップS106)。組合せ最適化問題の解を出力した後、最適化装置100は、組合せ最適化問題求解処理を終了する。
【0087】
[効果の説明]
本実施形態の最適化装置100のモデル生成部130は、組合せ最適化問題に課せられている各制約条件に対するユーザの目的が反映された各重みを用いて、組合せ最適化問題のエネルギー関数を生成する。
【0088】
例えば、一般的なシフト最適化問題において、複数の制約条件に対する各重みは、全て同じ値に設定される場合が多い。各重みが全て同じ値に設定されると、本来であれば強く考慮されなくてもよい弱い制約条件が強く考慮されることによって、解の精度が低下する場合がある。
【0089】
また、強い制約条件が弱く考慮されることによって、シフト最適化問題に適合する解である可能解の出現率が低下する場合がある。例えば、法的な制約条件は、従業員の希望を反映させる制約条件よりも強く考慮されなければならない。
【0090】
本実施形態の最適化装置100の制約重み制御部120は、各制約条件に対する重みを、ユーザの目的と各制約条件の内容が反映された優先度に基づいてそれぞれ決定する。よって、最適化装置100は、各制約条件に対する重みが単一の重みとして考慮された場合に比べて、ユーザの目的に適合し、かつより適切な解を得ることができる。
【0091】
実施形態2.
[構成の説明]
次に、本発明の第2の実施形態を図面を参照して説明する。図3は、本発明の第2の実施形態の最適化装置の構成例を示すブロック図である。
【0092】
本実施形態の最適化装置101は、各制約条件の優先度の順位を基に、重みwkを調整しつつ、組合せ最適化問題を求解する装置である。すなわち、最適化装置101は、重みwkを動的に決定する。
【0093】
図3に示すように、最適化装置101は、問題入力部110と、モデル生成部130と、最適化部140と、制約重み入力部150と、重み調整部160とを備える。
【0094】
また、図3に示すように、最適化装置101は、定式化装置200と通信可能に接続されている。
【0095】
本実施形態の問題入力部110、最適化部140、および定式化装置200が有する各機能は、第1の実施形態における各機能とそれぞれ同様である。
【0096】
本実施形態の制約重み入力部150は、組合せ最適化問題に課せられている各制約条件の優先度(強さ)の順位をモデル生成部130に入力する。
【0097】
また、本実施形態のモデル生成部130は、問題入力部110から入力された各定数を用いて組合せ最適化問題のエネルギー関数を生成する際、各制約条件に対する重みwkを全て「1」に設定する。よって、最適化部140は、各制約条件に対する重みwkが全て「1」の状態からシミュレーテッドアニーリングを行う。
【0098】
また、本実施形態の重み調整部160は、入力された各制約条件の優先度の順位に従って、制約条件に対する重みを動的に調整する機能を有する。
【0099】
重み調整部160は、各制約条件の降順に並べられた違反度の順位が、入力された各制約条件の昇順に並べられた優先度の順位と一致するように重みを調整する。制約条件の違反度は、例えば以下のように定義される。
【0100】
(違反度)=(制約条件を満たさない解の数)/(探索された全ての解の数)
【0101】
例えば、巡回セールスマン問題の場合、最適化部140は、可能解である複数のスピンの向きの組合せを次の可能解である複数のスピンの向きの組合せに遷移させるまでに、「可能解→違反解→違反解→可能解」のように4つの組合せを経る。
【0102】
なお、違反解は、巡回セールスマン問題に適合しない解である。例えば、違反解は、複数回訪れる都市、または1度も訪れない都市が存在するような経路を表す解である。また、可能解は、全ての都市を1回ずつ訪問する経路を表す解である。
【0103】
すなわち、可能解を算出するためには、違反解である複数のスピンの向きの組合せをいくつか経なければならない場合が多い。もし違反度が「0」に設定されると、シミュレーテッドアニーリングで組合せ最適化問題を求解することが困難になる。
【0104】
重み調整部160は、例えば最適化部140によるシミュレーテッドアニーリングによって所定の回数組合せが遷移するごとに、各制約条件の違反度を確認する。
【0105】
確認した制約条件の優先度の順位よりも違反度の順位が低い場合、重み調整部160は、制約条件の重みを少し小さくする。また、確認した制約条件の優先度の順位よりも違反度の順位が高い場合、重み調整部160は、制約条件の重みを少し大きくする。
【0106】
すなわち、重み調整部160は、全部「1」である各制約条件の重みを、各制約条件の違反度の順位が優先度の順位に一致するように動的に調整する。換言すると、重み調整部160は、組合せ最適化問題の構造に依存する最適な重みになるように各制約条件の重みを調整する。
【0107】
最終的に、重み調整部160は、最も優先度が高い制約条件の違反度が最小に、最も優先度が低い制約条件の違反度が最大にそれぞれなるように、各制約条件に対する重みを動的に調整する。
【0108】
なお、重み調整部160は、上記の基礎値αだけを動的に調整してもよい。重み調整部160は、各制約条件の違反度の順位が優先度の順位に一致するように、基礎値αを動的に調整してもよい。例えば、巡回セールスマン問題の場合、基礎値αが「0.7」以上であればよい。
【0109】
なお、各制約条件の違反度の下限および上限が与えられている場合、重み調整部160は、違反度が与えられた下限と上限の間に収まるように重みを調整してもよい。
【0110】
最適化部140は、調整された各重みを用いて組合せ最適化問題のエネルギー関数を更新し、更新されたエネルギー関数に対して再度シミュレーテッドアニーリングを行う。
【0111】
以上のように、本実施形態の最適化装置101の最適化部140は、複数の制約条件が課せられている組合せ最適化問題をシミュレーテッドアニーリング方式で求解する求解処理を実行する。
【0112】
また、重み調整部160は、複数の制約条件それぞれに対する優先度に基づいて、組合せ最適化問題のエネルギー関数における複数の制約条件のエネルギーそれぞれの重みを求解処理の結果を用いて調整する。次いで、最適化部140は、調整された複数の制約条件のエネルギーそれぞれの重みを用いて組合せ最適化問題のエネルギー関数を更新し、更新されたエネルギー関数に対して求解処理を実行する。
【0113】
上述したように、重み調整部160は、求解処理の結果として、求解処理で探索された解の数のうち制約条件を満たさない解の数の割合である違反度を使用してもよい。
【0114】
例えば、重み調整部160は、優先度が高いほど順位が低くなるように複数の制約条件それぞれに優先度の順位を割り当てる。また、重み調整部160は、違反度が大きいほど順位が高くなるように複数の制約条件それぞれに違反度の順位を割り当て、割り当てられた優先度の各順位と割り当てられた違反度の各順位がそれぞれ一致するように複数の制約条件のエネルギーそれぞれの重みを調整してもよい。
【0115】
[動作の説明]
以下、本実施形態の最適化装置101の動作を図4を参照して説明する。図4は、第2の実施形態の最適化装置101による組合せ最適化問題求解処理の動作を示すフローチャートである。
【0116】
ステップS201~S202の各処理は、図2に示すステップS101~S102の各処理とそれぞれ同様である。
【0117】
次いで、制約重み入力部150は、組合せ最適化問題に課せられている各制約条件の優先度の順位をモデル生成部130に入力する(ステップS203)。
【0118】
次いで、モデル生成部130は、問題入力部110から入力された各定数を用いて、課せられている各制約条件の重みを全て「1」として、組合せ最適化問題のエネルギー関数を生成する(ステップS204)。
【0119】
次いで、モデル生成部130は、生成されたエネルギー関数を最適化部140に入力する。また、モデル生成部130は、入力された各制約条件の優先度の順位を重み調整部160に入力する。
【0120】
次いで、最適化部140は、モデル生成部130から入力されたエネルギー関数で表された求解対象の組合せ最適化問題を求解する。具体的には、最適化部140は、入力されたエネルギー関数における複数のスピンの向きの組合せを更新する。
【0121】
求解する間、最適化部140は、探索された組合せ最適化問題の解(可能解および違反解)を用いて、各制約条件の違反度をそれぞれ算出する(ステップS205)。例えば、最適化部140は、複数のスピンの向きの組合せが遷移する度に各制約条件の違反度をそれぞれ更新してもよい。最適化部140は、算出された各制約条件の違反度を記憶する。
【0122】
次いで、最適化部140は、組合せ最適化問題の求解処理を終了するか否かを判定する(ステップS206)。例えば、所定の精度以上の解が得られた場合、または各制約条件の違反度の順位が優先度の順位と一致した場合、最適化部140は、求解処理を終了する。
【0123】
求解処理を終了しないと判定した場合(ステップS206におけるNo)、最適化部140は、所定の回数だけ複数のスピンの向きの組合せが遷移したか否かを確認する(ステップS207)。所定の回数だけ複数のスピンの向きの組合せがまだ遷移していない場合(ステップS207におけるNo)、最適化部140は、ステップS205の処理に戻る。
【0124】
所定の回数だけ複数のスピンの向きの組合せが遷移した場合(ステップS207におけるYes )、最適化部140は、記憶されている各制約条件の違反度を重み調整部160に入力する。
【0125】
次いで、重み調整部160は、各制約条件の重みを、各制約条件の違反度の順位が優先度の順位に一致するように動的に調整する(ステップS208)。重み調整部160は、調整された各制約条件の重みを最適化部140に入力する。
【0126】
次いで、最適化部140は、調整された各制約条件の重みを用いて入力されたエネルギー関数を更新する(ステップS209)。エネルギー関数を更新した後、最適化部140は、ステップS205の処理に戻る。
【0127】
求解処理を終了すると判定した場合(ステップS206におけるYes )、最適化部140は、組合せ最適化問題の解を出力する(ステップS210)。解を出力した後、最適化装置101は、組合せ最適化問題求解処理を終了する。
【0128】
[効果の説明]
本実施形態の最適化装置101の重み調整部160は、各制約条件の重みを、各制約条件の違反度の順位が優先度の順位に一致するように動的に調整する。組合せ最適化問題の求解処理の結果に基づいた違反度を用いて各制約条件の重みが動的に調整されるため、最適化装置101は、より適切な組合せ最適化問題の解を得ることができる。
【0129】
以下、各実施形態の最適化装置100~101のハードウェア構成の具体例を説明する。図5は、本発明による最適化装置のハードウェア構成例を示す説明図である。
【0130】
図5に示す最適化装置は、CPU(Central Processing Unit )11と、主記憶部12と、通信部13と、補助記憶部14とを備える。また、ユーザが操作するための入力部15や、ユーザに処理結果または処理内容の経過を提示するための出力部16を備える。
【0131】
最適化装置は、図5に示すCPU11が各構成要素が有する機能を提供するプログラムを実行することによって、ソフトウェアにより実現される。
【0132】
すなわち、CPU11が補助記憶部14に格納されているプログラムを、主記憶部12にロードして実行し、最適化装置の動作を制御することによって、各機能がソフトウェアにより実現される。
【0133】
なお、図5に示す最適化装置は、CPU11の代わりにDSP(Digital Signal Processor)を備えてもよい。または、図5に示す最適化装置は、CPU11とDSPとを併せて備えてもよい。
【0134】
主記憶部12は、データの作業領域やデータの一時退避領域として用いられる。主記憶部12は、例えばRAM(Random Access Memory)である。
【0135】
通信部13は、有線のネットワークまたは無線のネットワーク(情報通信ネットワーク)を介して、周辺機器との間でデータを入力および出力する機能を有する。
【0136】
補助記憶部14は、一時的でない有形の記憶媒体である。一時的でない有形の記憶媒体として、例えば磁気ディスク、光磁気ディスク、CD-ROM(Compact Disk Read Only Memory )、DVD-ROM(Digital Versatile Disk Read Only Memory )、半導体メモリが挙げられる。
【0137】
入力部15は、データや処理命令を入力する機能を有する。入力部15は、例えばキーボードやマウス等の入力デバイスである。
【0138】
出力部16は、データを出力する機能を有する。出力部16は、例えば液晶ディスプレイ装置等の表示装置、またはプリンタ等の印刷装置である。
【0139】
また、図5に示すように、最適化装置において、各構成要素は、システムバス17に接続されている。
【0140】
補助記憶部14は、第1の実施形態の最適化装置100において、問題入力部110、制約重み制御部120、モデル生成部130、および最適化部140を実現するためのプログラムを記憶している。
【0141】
なお、最適化装置100は、例えば内部に図1に示すような機能を実現するLSI(Large Scale Integration )等のハードウェア部品が含まれる回路が実装されてもよい。
【0142】
また、補助記憶部14は、第2の実施形態の最適化装置101において、問題入力部110、モデル生成部130、最適化部140、制約重み入力部150、および重み調整部160を実現するためのプログラムを記憶している。
【0143】
なお、最適化装置101は、例えば内部に図3に示すような機能を実現するLSI等のハードウェア部品が含まれる回路が実装されてもよい。
【0144】
また、最適化装置100~101は、CPU等の素子を用いるコンピュータ機能を含まないハードウェアにより実現されてもよい。例えば、各構成要素の一部または全部は、汎用の回路(circuitry )または専用の回路、プロセッサ等やこれらの組み合わせによって実現されてもよい。これらは、単一のチップ(例えば、上記のLSI)によって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【0145】
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【0146】
次に、本発明の概要を説明する。図6は、本発明による最適化装置の概要を示すブロック図である。本発明による最適化装置20は、組合せ最適化問題に課せられている複数の制約条件それぞれに対する重みを決定する決定手段21(例えば、制約重み制御部120)と、組合せ最適化問題のエネルギー関数を、組合せ最適化問題における最適化対象のエネルギーの定式化に用いられている定数と、1つの制約条件に対して決定された重みが乗じられた1つの制約条件のエネルギーの定式化に用いられている定数の複数の制約条件に渡る総和との和である定数を用いて生成する生成手段22(例えば、モデル生成部130)とを備える。
【0147】
そのような構成により、最適化装置は、組合せ最適化問題に課せられている各制約条件に対するユーザの優先度を組合せ最適化問題に反映できる。
【0148】
また、決定手段21は、入力された複数の重みを複数の制約条件それぞれに対する重みに決定してもよい。
【0149】
そのような構成により、最適化装置は、ユーザから陽に指定された値を制約条件に対する重みとして使用できる。
【0150】
また、決定手段21は、入力された複数の制約条件それぞれに対する優先度に基づいて複数の制約条件それぞれに対する重みを決定してもよい。例えば、決定手段21は、入力された優先度が高いほど順位が低くなるように複数の制約条件それぞれに順位を割り当て、割り当てられた各順位に所定の定数が乗じられることによって得られた各値を複数の制約条件それぞれに対する重みに決定してもよい。
【0151】
そのような構成により、最適化装置は、ユーザから指定された各制約条件の優先度の順位に基づいて重みを決定できる。
【0152】
また、図7は、本発明による他の最適化装置の概要を示すブロック図である。本発明による最適化装置30は、複数の制約条件が課せられている組合せ最適化問題をシミュレーテッドアニーリング方式で求解する求解処理を実行する求解手段31(例えば、最適化部140)と、複数の制約条件それぞれに対する優先度に基づいて、組合せ最適化問題のエネルギー関数における複数の制約条件のエネルギーそれぞれの重みを求解処理の結果を用いて調整する調整手段32(例えば、重み調整部160)とを備える。
【0153】
また、求解手段31は、調整された複数の制約条件のエネルギーそれぞれの重みを用いて組合せ最適化問題のエネルギー関数を更新し、更新されたエネルギー関数に対して求解処理を実行してもよい。
【0154】
そのような構成により、最適化装置は、組合せ最適化問題に課せられている各制約条件に対するユーザの優先度を組合せ最適化問題に反映できる。
【0155】
また、調整手段32は、求解処理の結果として、求解処理で探索された解の数のうち制約条件を満たさない解の数の割合である違反度を使用してもよい。例えば、調整手段32は、優先度が高いほど順位が低くなるように複数の制約条件それぞれに優先度の順位を割り当て、違反度が大きいほど順位が高くなるように複数の制約条件それぞれに違反度の順位を割り当て、割り当てられた優先度の各順位と割り当てられた違反度の各順位がそれぞれ一致するように複数の制約条件のエネルギーそれぞれの重みを調整してもよい。
【0156】
そのような構成により、最適化装置は、より適切な組合せ最適化問題の解を得ることができる。
【0157】
また、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下に限られない。
【0158】
(付記1)組合せ最適化問題に課せられている複数の制約条件それぞれに対する重みを決定する決定手段と、前記組合せ最適化問題のエネルギー関数を、前記組合せ最適化問題における最適化対象のエネルギーの定式化に用いられている定数と、1つの制約条件に対して決定された重みが乗じられた前記1つの制約条件のエネルギーの定式化に用いられている定数の前記複数の制約条件に渡る総和との和である定数を用いて生成する生成手段とを備えることを特徴とする最適化装置。
【0159】
(付記2)決定手段は、入力された複数の重みを複数の制約条件それぞれに対する重みに決定する付記1記載の最適化装置。
【0160】
(付記3)決定手段は、入力された複数の制約条件それぞれに対する優先度に基づいて前記複数の制約条件それぞれに対する重みを決定する付記1記載の最適化装置。
【0161】
(付記4)決定手段は、入力された優先度が高いほど順位が低くなるように複数の制約条件それぞれに順位を割り当て、割り当てられた各順位に所定の定数が乗じられることによって得られた各値を前記複数の制約条件それぞれに対する重みに決定する付記3記載の最適化装置。
【0162】
(付記5)複数の制約条件が課せられている組合せ最適化問題をシミュレーテッドアニーリング方式で求解する求解処理を実行する求解手段と、前記複数の制約条件それぞれに対する優先度に基づいて、前記組合せ最適化問題のエネルギー関数における前記複数の制約条件のエネルギーそれぞれの重みを前記求解処理の結果を用いて調整する調整手段とを備えることを特徴とする最適化装置。
【0163】
(付記6)求解手段は、調整された複数の制約条件のエネルギーそれぞれの重みを用いて組合せ最適化問題のエネルギー関数を更新し、更新されたエネルギー関数に対して求解処理を実行する付記5記載の最適化装置。
【0164】
(付記7)調整手段は、求解処理の結果として、前記求解処理で探索された解の数のうち制約条件を満たさない解の数の割合である違反度を使用する付記5または付記6記載の最適化装置。
【0165】
(付記8)調整手段は、優先度が高いほど順位が低くなるように複数の制約条件それぞれに優先度の順位を割り当て、違反度が大きいほど順位が高くなるように前記複数の制約条件それぞれに違反度の順位を割り当て、割り当てられた優先度の各順位と割り当てられた違反度の各順位がそれぞれ一致するように前記複数の制約条件のエネルギーそれぞれの重みを調整する付記7記載の最適化装置。
【0166】
(付記9)組合せ最適化問題に課せられている複数の制約条件それぞれに対する重みを決定し、前記組合せ最適化問題のエネルギー関数を、前記組合せ最適化問題における最適化対象のエネルギーの定式化に用いられている定数と、1つの制約条件に対して決定された重みが乗じられた前記1つの制約条件のエネルギーの定式化に用いられている定数の前記複数の制約条件に渡る総和との和である定数を用いて生成することを特徴とする最適化方法。
【0167】
(付記10)複数の制約条件が課せられている組合せ最適化問題をシミュレーテッドアニーリング方式で求解する求解処理を実行し、前記複数の制約条件それぞれに対する優先度に基づいて、前記組合せ最適化問題のエネルギー関数における前記複数の制約条件のエネルギーそれぞれの重みを前記求解処理の結果を用いて調整することを特徴とする最適化方法。
【0168】
(付記11)コンピュータで実行されるときに、組合せ最適化問題に課せられている複数の制約条件それぞれに対する重みを決定し、前記組合せ最適化問題のエネルギー関数を、前記組合せ最適化問題における最適化対象のエネルギーの定式化に用いられている定数と、1つの制約条件に対して決定された重みが乗じられた前記1つの制約条件のエネルギーの定式化に用いられている定数の前記複数の制約条件に渡る総和との和である定数を用いて生成する最適化プログラムを記録したコンピュータ読み取り可能な記録媒体。
【0169】
(付記12)コンピュータで実行されるときに、複数の制約条件が課せられている組合せ最適化問題をシミュレーテッドアニーリング方式で求解する求解処理を実行し、前記複数の制約条件それぞれに対する優先度に基づいて、前記組合せ最適化問題のエネルギー関数における前記複数の制約条件のエネルギーそれぞれの重みを前記求解処理の結果を用いて調整する最適化プログラムを記録したコンピュータ読み取り可能な記録媒体。
【0170】
(付記13)コンピュータに、組合せ最適化問題に課せられている複数の制約条件それぞれに対する重みを決定する決定処理、および前記組合せ最適化問題のエネルギー関数を、前記組合せ最適化問題における最適化対象のエネルギーの定式化に用いられている定数と、1つの制約条件に対して決定された重みが乗じられた前記1つの制約条件のエネルギーの定式化に用いられている定数の前記複数の制約条件に渡る総和との和である定数を用いて生成する生成処理を実行させるための最適化プログラム。
【0171】
(付記14)コンピュータに、複数の制約条件が課せられている組合せ最適化問題をシミュレーテッドアニーリング方式で求解する求解処理、および前記複数の制約条件それぞれに対する優先度に基づいて、前記組合せ最適化問題のエネルギー関数における前記複数の制約条件のエネルギーそれぞれの重みを前記求解処理の結果を用いて調整する調整処理を実行させるための最適化プログラム。
【0172】
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【0173】
11 CPU
12 主記憶部
13 通信部
14 補助記憶部
15 入力部
16 出力部
17 システムバス
20、30、100、101 最適化装置
21 決定手段
22 生成手段
31 求解手段
32 調整手段
110 問題入力部
120 制約重み制御部
130 モデル生成部
140 最適化部
150 制約重み入力部
160 重み調整部
200 定式化装置
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10