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

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

▶ 富士通株式会社の特許一覧

特許7524754最適化装置、最適化プログラム、及び最適化方法
<>
  • 特許-最適化装置、最適化プログラム、及び最適化方法 図1
  • 特許-最適化装置、最適化プログラム、及び最適化方法 図2
  • 特許-最適化装置、最適化プログラム、及び最適化方法 図3
  • 特許-最適化装置、最適化プログラム、及び最適化方法 図4
  • 特許-最適化装置、最適化プログラム、及び最適化方法 図5
  • 特許-最適化装置、最適化プログラム、及び最適化方法 図6
  • 特許-最適化装置、最適化プログラム、及び最適化方法 図7
  • 特許-最適化装置、最適化プログラム、及び最適化方法 図8
  • 特許-最適化装置、最適化プログラム、及び最適化方法 図9
  • 特許-最適化装置、最適化プログラム、及び最適化方法 図10
  • 特許-最適化装置、最適化プログラム、及び最適化方法 図11
  • 特許-最適化装置、最適化プログラム、及び最適化方法 図12
  • 特許-最適化装置、最適化プログラム、及び最適化方法 図13
  • 特許-最適化装置、最適化プログラム、及び最適化方法 図14
  • 特許-最適化装置、最適化プログラム、及び最適化方法 図15
  • 特許-最適化装置、最適化プログラム、及び最適化方法 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-22
(45)【発行日】2024-07-30
(54)【発明の名称】最適化装置、最適化プログラム、及び最適化方法
(51)【国際特許分類】
   G06N 99/00 20190101AFI20240723BHJP
【FI】
G06N99/00 180
【請求項の数】 11
(21)【出願番号】P 2020207842
(22)【出願日】2020-12-15
(65)【公開番号】P2022094763
(43)【公開日】2022-06-27
【審査請求日】2023-08-04
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】島田 大地
【審査官】多賀 実
(56)【参考文献】
【文献】特開2020-160685(JP,A)
【文献】特開2020-064536(JP,A)
【文献】米国特許出願公開第2011/0238392(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06Q 10/04-10/047
(57)【特許請求の範囲】
【請求項1】
第1の値又は第2の値をとる複数個の変数を含む最適化問題であって、前記複数個の変数は複数個のグループにグループ化され、前記複数個のグループの各々に含まれる各変数のうち所定個数の変数のみが前記第2の値をとるという拘束条件が前記複数個のグループの各々に課せられる最適化問題に対し、最適化計算により近似解を求める最適化装置であって、
前記複数個のグループから選択された1つ又は複数の選択グループに属する変数のうちで最適化計算対象である第1の変数に対して最適化計算を実行することにより前記拘束条件を満たす近似解を求める最適化計算部と、
前記選択グループの各々において、最適解で前記第2の値にならない変数を前記近似解に基づいて推定して除外して、第2の変数を残す変数選択部と
を含み、前記最適化計算部は、前記第2の変数と少なくとも1つの非選択グループに属する第3の変数とにより前記第1の変数を更新した後に新たな最適化計算を実行することにより、前回の非選択グループに属する変数を順次新たに含めて最適化計算を実行する処理を繰り返す、最適化装置。
【請求項2】
第1の変数の総数が所定数以下であり、前記第3の変数と前記第1の変数との合計が前記所定数より大きく、前記第2の変数と前記第3の変数との合計が前記所定数以下である、請求項1記載の最適化装置。
【請求項3】
前記選択グループの各々において、前記近似解で値が前記第2の値となる変数の添字の値が第1の添字値であり着目変数の添字の値が第2の添字値である場合に、前記変数選択部は、前記第1の添字値と前記第2の添字値との差が所望の閾値よりも大きければ前記着目変数を除外する、請求項1又は2に記載の最適化装置。
【請求項4】
前記選択グループの1つのグループにおいて前記近似解で値が前記第2の値となる変数と前記選択グループの別の1つのグループにおける1つの着目変数との積に、前記最適化計算で用いる目的関数式において係っている係数の値が所望の閾値よりも大きい場合、前記変数選択部は前記着目変数を除外する、請求項1又は2に記載の最適化装置。
【請求項5】
制約違反が発生しやすい度合いを前記複数個のグループの各々に対して計算する違反発生度計算部と、
前記制約違反が発生しやすい度合いが大きいグループから順番に、前記複数のグループからグループを抽出するグループ抽出部と、
を更に含み、前記最適化計算部は、前記グループ抽出部により順番に抽出されたグループに属する変数を順次新たに含めて最適化計算を実行する処理を繰り返していく、請求項1乃至4いずれか一項記載の最適化装置。
【請求項6】
前記複数個のグループのうちの着目グループに対して前記違反発生度計算部により計算される前記制約違反が発生しやすい度合いは、前記最適化計算で用いる目的関数式に含まれる前記着目グループに属する変数の自乗項に係る係数のうち0でない係数の数が多いほど、大きい値である、請求項5記載の最適化装置。
【請求項7】
前記複数個のグループのうちの着目グループに対して前記違反発生度計算部により計算される前記制約違反が発生しやすい度合いは、前記最適化計算で用いる目的関数式に含まれる前記着目グループに属する変数の自乗項に係る係数のうち0でない係数の平均値が大きいほど、大きい値である、請求項5記載の最適化装置。
【請求項8】
前記複数個のグループのうちの着目グループに対して前記違反発生度計算部により計算される前記制約違反が発生しやすい度合いは、前記複数個のグループのうちの前記着目グループ以外のグループに属する変数と前記着目グループに属する変数との積に、前記最適化計算で用いる目的関数式において第1の係数が係っている場合、当該第1の係数のうち0でない係数の数が多いほど、大きい値である、請求項5記載の最適化装置。
【請求項9】
前記複数個のグループのうちの着目グループに対して前記違反発生度計算部により計算される前記制約違反が発生しやすい度合いは、前記複数個のグループのうちの前記着目グループ以外のグループに属する変数と前記着目グループに属する変数との積に、前記最適化計算で用いる目的関数式において第1の係数が係っている場合、前記第1の係数のうち0でない係数の分散値が大きいほど、大きい値である、請求項5記載の最適化装置。
【請求項10】
第1の値又は第2の値をとる複数個の変数を含む最適化問題であって、前記複数個の変数は複数個のグループにグループ化され、前記複数個のグループの各々に含まれる各変数のうち所定個数の変数のみが前記第2の値をとるという拘束条件が前記複数のグループの各々に課せられる最適化問題に対し、最適化計算により近似解を求める最適化方法であって、
前記複数個のグループから選択された1つ又は複数の選択グループに属する変数のうちで最適化計算対象である第1の変数に対して最適化計算を実行することにより前記拘束条件を満たす近似解を求め、
前記選択グループの各々において、最適解で前記第2の値にならない変数を前記近似解に基づいて推定して除外して、第2の変数を残し、
前記第2の変数と少なくとも1つの非選択グループに属する第3の変数とにより前記第1の変数を更新した後に新たな最適化計算を実行することにより、前回の非選択グループに属する変数を順次新たに含めて最適化計算を実行する処理を繰り返していく
処理をコンピュータにより実行する、最適化方法。
【請求項11】
第1の値又は第2の値をとる複数個の変数を含む最適化問題であって、前記複数個の変数は複数個のグループにグループ化され、前記複数個のグループの各々に含まれる各変数のうち所定個数の変数のみが前記第2の値をとるという拘束条件が前記複数のグループの各々に課せられる最適化問題に対し、最適化計算により近似解を求める最適化プログラムであって、
前記複数個のグループから選択された1つ又は複数の選択グループに属する変数のうちで最適化計算対象である第1の変数に対して最適化計算を実行することにより前記拘束条件を満たす近似解を求め、
前記選択グループの各々において、最適解で前記第2の値にならない変数を前記近似解に基づいて推定して除外して、第2の変数を残し、
前記第2の変数と少なくとも1つの非選択グループに属する第3の変数とにより前記第1の変数を更新した後に新たな最適化計算を実行することにより、前回の非選択グループに属する変数を順次新たに含めて最適化計算を実行する処理を繰り返していく
処理をコンピュータに実行させる、最適化プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本願開示は、最適化装置、最適化プログラム、及び最適化方法に関する。
【背景技術】
【0002】
最適化装置には、入力可能なデータ量に制限があるため、大規模な問題を解くことができない。最適化装置のハードウェア構成により入力可能なデータ量が一義的に決まる場合もあれば、最適化装置のメモリ容量及びメモリ使用効率等の制限により実用的に効率を落とすこと無く実行可能なデータ量が制限される場合もある。
【0003】
入力可能なデータ量よりも大規模な最適化問題に対して解を求める手法として、種々の工夫をすることが考えられるが、単純な工夫では、計算量が多くなってしまったり、最適解や良好な近似解が得られなくなってしまったりする。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2020-4387号公報
【文献】特開2020-64535号公報
【文献】特開2020-4384号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
以上を鑑みると、最適化装置における所定の入力データ量を超えた問題を扱う場合において、最適解又は良好な近似解を効率的に得られる最適化手法が望まれる。
【課題を解決するための手段】
【0006】
第1の値又は第2の値をとる複数個の変数を含む最適化問題であって、前記複数個の変数は複数個のグループにグループ化され、前記複数個のグループの各々に含まれる各変数のうち所定個数の変数のみが前記第2の値をとるという拘束条件が前記複数個のグループの各々に課せられる最適化問題に対し、最適化計算により近似解を求める最適化装置は、前記複数個のグループから選択された1つ又は複数の選択グループに属する変数のうちで最適化計算対象である第1の変数に対して最適化計算を実行することにより前記拘束条件を満たす近似解を求める最適化計算部と、前記選択グループの各々において、最適解で前記第2の値にならない変数を前記近似解に基づいて推定して除外して、第2の変数を残す変数選択部とを含み、前記最適化計算部は、前記第2の変数と少なくとも1つの非選択グループに属する第3の変数とにより前記第1の変数を更新した後に新たな最適化計算を実行することにより、前回の非選択グループに属する変数を順次新たに含めて最適化計算を実行する処理を繰り返す。
【発明の効果】
【0007】
少なくとも1つの実施例によれば、最適化装置における所定の入力データ量を超えた問題を扱う場合において、最適解又は良好な近似解を効率的に得られる最適化手法を提供できる。
【図面の簡単な説明】
【0008】
図1】最適化装置のハードウェア構成の一例を示す図である。
図2】最適化装置の機能構成の一例を示す図である。
図3】最適化問題の一例を模式的に示す図である。
図4】最適化問題の別の一例を模式的に示す図である。
図5】最適化計算部が実行する最適化計算の対象となる変数を示す図である。
図6】最適化装置が実行する最適化方法の一例を示すフローチャートである。
図7】制約違反発生度合を計算する方法の一例を示す図である。
図8】制約違反発生度合を計算する方法の別の一例を示す図である。
図9】制約違反発生度合を計算する方法の別の一例を示す図である。
図10】制約違反発生度合を計算する方法の別の一例を示す図である。
図11】最適化対象変数の追加について説明するための図である。
図12】行列の要素数を削減する処理を示す図である。
図13】最適解で値が1にならない変数を推定する処理の一例を説明する図である。
図14図13で説明した変数除外処理の一例を示すフローチャートである。
図15】最適解で値が1にならない変数を推定する処理の別の一例を説明する図である。
図16図15で説明した変数除外処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0009】
本願開示による技術は、第1の値又は第2の値をとる複数個の変数のうち正確に所定個数の変数のみが第2の値をとる拘束条件が各グループに課せられる複数個のグループに属する変数の総数が、所定データ量を超える問題を対象とする。この問題に対して、所定データ量以下のデータに対する最適化計算により当該問題に対する近似解を求める。この最適化計算は、発見的手法に基づく汎用的な近似アルゴリズム(メタヒューリスティックアルゴリズム)により、現実的な計算時間で良好な近似解を求める計算であってよい。なお異なるグループにおいて上記所定個数は異なってよい。
【0010】
本願開示における問題の定式化において、例えば0又は1の値をとる変数x(i=1~n)を用いて本願開示の技術を説明する。添字の無いxを、以下の列ベクトルとする。
x=(x,x,x,・・・,xn (1)
ここでTは転置を表す。このとき最適化計算において最小化すべき目的関数Eは以下の式により表されてよい。
E=xAx (2)
ここでAはaij(i=1~n,j=1~n)を要素とする、要素数がn×nの2次元行列である。この式(2)は、イジングモデルの式と等価であり、イジングモデルにおいて-1又は1の値をとる変数を0又は1の値をとる変数に置き換えたQUBO(Quadratic Unconstrained Binary Optimization)形式の式に相当する。なお変数が一般化された第1の値又は第2の値をとる場合、上記目的関数の式(2)の形が異なるものとなるが、変数が0又は1の値をとる場合と変数が第1の値又は第2の値をとる場合とで、両者は等価である。
【0011】
n-Hot条件とは、着目集合に属する変数のうちでn個の変数のみが1となりそれ以外の全ての変数が0となる拘束条件である。即ち着目集合中で1となる変数の数が正確にn個であることを要求する拘束条件である。例えば1-Hot条件であれば、着目集合中で1となる変数の数が正確に1個であることが要求され、2-Hot条件であれば、着目集合中で1となる変数の数が正確に2個であることが要求される。
【0012】
本願開示における問題の定式化において、各々がn-Hot条件を有する複数個のグループが規定される。例えば、変数の総数nが10であり、x乃至xが第1のグループに属し、x乃至x10が第2のグループに属する場合に、例えば第1のグループには1-Hot条件が課せられ、第2のグループには2-Hot条件が課せられてよい。このようにグループ毎にn-Hot条件が存在する具体的な例については後程説明する。
【0013】
本願開示における問題の定式化において、最適化計算に入力されるデータ量は、所定データ量以下である。即ち、最適化計算は、所定データ量より大きなデータ量の入力データに対して実行されることはなく、常に所定データ量以下の入力データに対して実行される。例えば、最適化装置のハードウェア構成により入力可能なデータ量が一義的に決まる場合もあれば、最適化装置のメモリ容量及びメモリ使用効率等の制限により実用的に効率を落とすこと無く実行可能なデータ量が制限される場合もある。また最適化装置では、上記所定データ量以上のデータ量の入力データに対して最適化計算を実行することが可能であるが、消費電力を削減したい等の何らかの事情により、所定データ量以下の入力データに対して最適化演算を実行したい場合等もある。
【0014】
例えば、問題を規定する変数xの総数nが10であり、所定データ量に相当する変数の数が8個である場合、x乃至x10で規定される問題に対して直接的に解を求めることはできない。そこで本願開示の技術では、各グループに対してn-Hot条件が課せられていることを利用して、各グループにおいて最適解で1にならないであろうと推定される変数を間引くことにより、最適化計算対象となる変数の数を削減する。
【0015】
例えば第1のグループの変数x乃至xには1-Hot条件が課せられ、第2のグループの変数x乃至x10には2-Hot条件が課せられている場合を考える。このとき第1のグループにおいて、最適解で1になる変数はx乃至xのいずれかでありxは1にならないと推定される場合、xについては0に固定して最適化計算対象から除外しても、最適解又は良好な近似解を支障なく求めることができる。また第2のグループにおいて、最適解で1になる変数はx乃至xのいずれかでありx10は1にならないと推定される場合、x10については0に固定して最適化計算対象から除外しても、最適解又は良好な近似解を支障なく求めることができる。
【0016】
従ってこの場合、x乃至x並びにx乃至xの合計8個の変数を対象として、所定データ量(変数8個)以下のデータ量の入力データを対象とする最適化計算を実行することにより、最適解又は良好な近似解を問題なく求めることができる。またこの際、最適化計算対象となる変数の数を削減することにより効率的な最適化計算を実現できるので、最適解又は良好な近似解を効率的に求めることが可能となる。
【0017】
以下に、実施例を添付の図面を用いて詳細に説明する。
【0018】
図1は、最適化装置のハードウェア構成の一例を示す図である。図1に示す最適化装置は、CPU11、表示部12、入力部13、ROM14、RAM15、HDD16、ネットワークインターフェース17、可搬型記憶媒体用ドライブ18、及びメタヒューリスティック計算部19を含む。
【0019】
入力部13は、ユーザとのインターフェースを提供するものであり、最適化装置を操作するための各種コマンドや要求されたデータに対するユーザ応答等が入力される。表示部12は、最適化装置で処理された結果等をディスプレイ画面に表示すると共に、最適化装置を操作する際にユーザとの対話を可能にするために様々なデータ表示を行う。ネットワークインターフェース17は、周辺装置との通信又は遠隔地との通信を行なうためのものである。
【0020】
図1に示される最適化装置はコンピュータであり、最適化方法は、最適化装置が実行可能なコンピュータプログラムとして提供される。このコンピュータプログラムは、可搬型記憶媒体用ドライブ18に装着可能な記憶媒体Mに記憶されており、記憶媒体Mから可搬型記憶媒体用ドライブ18を介して、RAM15或いはHDD16にロードされる。或いは、このコンピュータプログラムは、周辺装置又は遠隔地にある記憶媒体(図示せず)に記憶されており、この記憶媒体からネットワークインターフェース17を介して、RAM15或いはHDD16にロードされる。
【0021】
入力部13を介してユーザからプログラム実行指示があると、CPU11は、記憶媒体M、周辺装置、遠隔地記憶媒体、或いはHDD16からプログラムをRAM15にロードする。CPU11は、RAM15の空き記憶空間をワークエリアとして使用して、RAM15にロードされたプログラムを実行し、適宜ユーザと対話しながら処理を進める。なおROM14は、最適化装置の基本動作を制御するための制御プログラムが格納されている。
【0022】
上記コンピュータプログラムを実行することにより、最適化装置が、問題に対して近似解を求める動作を実行する。メタヒューリスティック計算部19は、メタヒューリスティックアルゴリズムを実行するように専用に設計された専用ハードウェアであってよく、例えばシミュレーテッド・アニーリングによりイジング問題の解探索を実行する専用ハードウェアであってよい。但し専用のメタヒューリスティック計算部19を設けることなく、汎用計算用のプロセッサであるCPU11が、メタヒューリスティック計算部として機能することにより、メタヒューリスティックアルゴリズムを実行してもよい。メタヒューリスティックアルゴリズムとしては、シミュレーテッド・アニーリング、ランダムウォーク解探索アルゴリズム、遺伝的アルゴリズム、確率的進化手法、或いはタブーサーチ等であってよい。メタヒューリスティックアルゴリズムは、目的関数を最小化する解に近い解(近似解)を発見的に探索するアルゴリズムであってよい。
【0023】
図2は、最適化装置の機能構成の一例を示す図である。図2に示す最適化装置は、データ格納部20、データ取得部21、違反発生度計算部22、グループ抽出部23、最適化計算部24、変数選択部25、変数固定部26、処理終了判定部27、及びデータ出力部28を含む。
【0024】
データ格納部20及び最適化計算部24以外の各機能部は、図1に示すCPU11により実現されてよい。データ格納部20の機能は、図1に示すRAM15又はHDD16により実現されてよい。最適化計算部24の機能は、図1に示すCPU11又はメタヒューリスティック計算部19により実現されてよい。
【0025】
なお各ボックスで示される各機能ブロックと他の機能ブロックとの境界は、機能的な境界を示すものであり、プログラムモジュールの境界に対応したり、制御論理的な分離等に対応したりするとは限らない。また、ある1つの機能ブロックが別の機能ブロックと組み合わさり1つの機能ブロックとして動作してもよいし、ある1つの機能ブロックが複数の機能ブロックに分割されて各々が協働して動作してもよい。
【0026】
データ格納部20には、変数グループ情報20A、最適化計算用変数群20B、最良解20C、及び固定変数値20Dが格納されている。
【0027】
データ取得部21は、最適化問題を規定するために外部から入力されたデータを、変数グループ情報20Aとしてデータ格納部20に格納する。最適化問題において規定される変数、変数のグループ分けに関する情報、各グループに規定されるn-Hot条件等が変数グループ情報20Aとして格納されてよい。またそれら以外に、各種制約条件に関する項を含む目的関数を規定する行列Aの値も、変数グループ情報20Aの一部としてデータ格納部20に格納されてよい。
【0028】
図3は、最適化問題の一例を模式的に示す図である。図2に示す最適化装置が解を求める対象となる最適化問題として、例えば資源制約付きスケジューリング問題がある。資源制約付きスケジューリング問題は、複数の作業及び複数の資源に制約条件が存在する状況において、全作業の終了時刻が最適化対象時刻内に収まるように、制約条件を満たしながら複数の資源を複数の作業に割り当てる問題である。図2に示される最適化計算部24が例えばイジング装置としてイジングモデルによる最適化処理を実行する場合、資源制約付きスケジューリング問題を2値変数によりモデル化し、当該モデルに対して最適化処理を実行することになる。
【0029】
図3に示す表30において、製品Aに対する作業#1乃至#3をそれぞれ作業A1乃至A3として示してある。また製品Bに対する作業#1乃至#3をそれぞれ作業B1乃至B3として示してある。更に製品Cに対する作業#1及び#2をそれぞれ作業C1及びC2として示してある。表30において、各行は時刻(30分刻みの時間帯)を表し、各列は各作業と各設備との組み合わせを表す。
【0030】
図3に示される資源制約付きスケジューリング問題を2値変数によりモデル化するために、2値変数xjmtを定義してよい。添字jは作業を特定し、添字mは資源を特定し、添字tは時刻を特定する。時刻は8:30から18:00までを30分毎に19個の時間帯に分割し、時刻の添字tに1~19の数字を割り当てることにより、特定の時間帯を指定することができる。例えば「作業A1」の「設備1」の列は、製品Aに対する作業#1を設備1に割り当てることを規定した変数x11tの各時刻tにおける値を示している。このようにして図3に示される表30の一つ一つのセルが、2値変数xjmtの一つ一つに対応することになる。
【0031】
例えば2値変数x111は、製品Aに対する作業#1の、設備1での、時刻8:30における作業状態を表す。この2値変数x111の値が1である場合、製品Aに対する作業#1が設備1において時刻8:30から開始されることを示す。なお図3に示されるように、x11tの値は時刻8:30の時間帯においてのみ値が1となり(即ちx111=1)、それ以外の時間帯においては値が0となる。表30において、2値変数xjmtの値が1となり、作業jを設備mで時刻tから開始することを示しているセルは、網掛け表示で示されている。
【0032】
資源制約付きスケジューリング問題においては、各作業は一回だけ実行される、という制約が存在する。即ち、例えば製品Aに対する作業#1は、いずれかの1つの設備において時刻8:30から18:00までの間に一回だけ実行される。従って、作業A1を示す2値変数xjmtにより、図3に示されるようにグループ31を形成すれば、グループ31には1-Hot条件が制約として課せられることになる。即ち、グループ31に属する2値変数xjmtのうちで1つの変数のみが値1となり、残りの全ての変数は値0となる。
【0033】
その他の全ての作業A2、A3、B1、B2、B3、C1、及びC2についても同様である。従って、図3に示す資源制約付きスケジューリング問題を規定する2値変数xjmtは、作業A1、A2、A3、B1、B2、B3、C1、及びC2にそれぞれ対応する8個のグループに分けられ、各グループには1-Hot条件が制約として課せられることになる。
【0034】
図4は、最適化問題の別の一例を模式的に示す図である。図2に示す最適化装置が解を求める対象となる最適化問題として、例えば巡回セールスマン問題がある。巡回セールスマン問題は、各都市を正確に一回ずつ訪れながら全ての都市を巡り出発地に戻る巡回路のうちで、総コスト(例えば総移動距離)が最小のものを求める問題である。
【0035】
図4に示す表32において、各行は各都市を表し、各列は訪問順番を表す。図4に示される巡回セールスマン問題を2値変数によりモデル化するために、2値変数xjkを定義してよい。添字jは都市を特定し、添字kは訪問順番を特定する。図4に示される表32の一つ一つのセルが、2値変数xjkの一つ一つに対応することになる。
【0036】
例えば「都市#1」を2番目に訪問する場合、2値変数x12の値が1となる。都市#1を示す2値変数x1kは、2番目以外の訪問順(即ちk=2以外)においては値が0となる。表32において、2値変数xjkの値が1となり、都市#jを順番kで訪問することを示しているセルは、網掛け表示で示されている。
【0037】
巡回セールスマン問題においては、各都市は一回だけ訪問される、という制約が存在する。即ち、都市#1は、順番1番目~順番10番目のうちのいずれか1つの順番においてのみ訪問される。従って、都市#1を示す2値変数x1kにより、図4に示されるようにグループ33を形成すれば、グループ33には1-Hot条件が制約として課せられることになる。即ち、グループ33に属する2値変数x1kのうちで1つの変数のみが値1となり、残りの全ての変数は値0となる。
【0038】
その他の全ての都市#1乃至#10についても同様である。従って、図4に示す巡回セールスマン問題を規定する2値変数xjkは、都市#1乃至#10にそれぞれ対応する10個のグループに分けられ、各グループには1-Hot条件が制約として課せられることになる。
【0039】
以下の説明においては、資源制約付きスケジューリング問題をイジングマシンを用いて最適化する構成を一例として用い、図2に示す最適化装置が実行する演算について説明する。
【0040】
図2を再び参照し、違反発生度計算部22は、変数グループ情報20Aが示す複数個のグループの各々に対して、制約違反が発生しやすい度合いを計算する。違反発生度計算部22により求められた制約違反が発生しやすい度合いは、複数個のグループの各々に対応付けて変数グループ情報20Aとしてデータ格納部20に格納される。なおここで言う制約違反とは、n-Hot条件に違反することではなく、その他の制約条件のことである。
【0041】
例えば資源制約付きスケジューリング問題の場合、ある設備を使用不可能な時間帯においては当該設備により作業を実行することはできない等のように、資源利用可能時間に関する制約条件が課せられてよい。また、例えば作業間の順序に関する制約として、ある製品に対する作業#1、作業#2、及び作業#3は、時間的に重複することなくこの順番に実行される必要がある、等の制約条件が課せられてよい。また、特定の作業は特定の資源でしか実行することができない等の作業と資源との間の対応関係に関する制約や、各作業の開始可能時間及び要求納期に関する制約等が設けられてよい。これらの制約は、前述の目的関数を示す式(2)において、行列Aの係数値に組み込まれていてよい。
【0042】
グループ抽出部23は、制約違反が発生しやすい度合いが大きいグループから順番に、複数のグループからグループを順次抽出していく。グループ抽出部23が抽出したグループに属する変数は、最適化計算用変数群20Bとしてデータ格納部20に格納される。
【0043】
最適化計算部24は、グループ抽出部23により順番に抽出されたグループに属する変数、即ち最適化計算用変数群20Bとして格納されている変数を、順次新たに含めて最適化計算を実行する処理を繰り返していく。例えば、最初に2個のグループに属する変数群に対して最適化計算を実行し、その後、当該変数群から変数を間引いた上で第3のグループに属する変数を新たに加えた最適化計算用変数群を作成し、その最適化計算用変数群に対して次の最適化計算を実行してよい。
【0044】
図5は、最適化計算部24が実行する最適化計算の対象となる変数を示す図である。図5に示す例では、最適化問題は5個のグループG1乃至G4に分けられている。グループG1乃至G4の各々に属する変数は図5に示すとおりである。なお図3に示される資源制約付きスケジューリング問題を説明する際に用いた2値変数xjmtの添字は3個である一方、図5に示される2値変数xの添字は1個である。
【0045】
例えば表30の1行目において「作業A1」の「設備1」乃至「設備4」の4列に対応する4個のセルにx1乃至x4を割り当て、2行目において「作業A1」の「設備1」乃至「作業A1」の4列に対応する4個のセルにx5乃至x8を割り当ててよい。残りの3行目から19行目までも同様にすることにより、表30のグループ31の19行×4列の76個のセルに、連続する添字を有する変数x乃至x76を割り当ててよい。その後、作業A2に対応するグループに対しても同様にして、変数x77乃至x152を割り当ててよい。このようにして、図5に示されるように複数個のグループに属する1個の添字を有する2値変数xを定義することができる。
【0046】
図5において、グループG1乃至G4は、制約違反が発生しやすい度合いが大きい順番に並べられているとする。即ち、グループG1において制約違反が最も発生しやすく、グループG4において制約違反が最も発生しにくい。従って、グループG1から順番に、グループ抽出部23により抽出されていくことになる。前述のように、制約違反が発生しやすい度合いは、図2に示す違反発生度計算部22により計算されてよい。
【0047】
図2に示すグループ抽出部23は、最初に例えばグループG1とグループG2とをグループの集合(複数個のグループG1乃至G4からなる集合)から抽出して、グループG1とグループG2とに属する変数を最適化計算用変数としてよい。具体的には、グループ抽出部23は、グループG1及びG2に属する変数を最適化計算用変数群20Bとしてデータ格納部20に格納してよい。グループ抽出部23は、例えば、最適化計算部24が最適化計算の対象とすることが可能な変数の数の上限に関する情報を有していてよい。グループ抽出部23は、グループG1及びG2に属する変数の総数は当該上限を超えていないが、グループG1乃至G3に属する変数の総数は上限を超えていることを検出し、グループG1及びG2に属する変数を最適化計算対象の変数として供給してよい。
【0048】
別の言葉で言えば、複数個のグループG1乃至G4から選択された1つ又は複数の選択グループG1及びG2に属する変数のうちで最適化計算対象である第1の変数(この場合はグループG1及びG2に属する全変数)の総数が所定データ量以下である。また更に、1つの非選択グループG3に属する第2の変数と上記第1の変数との合計が所定データ量より大きい。これらの条件を満たす状態において、最適化計算部24は、図5に示されるように上記第1の変数(グループG1及びG2に属する変数)に対して最適化計算45を実行することにより、n-Hot条件を満たす近似解を求める。具体的には、最適化計算部24は、最適化計算用変数群20Bに格納される変数に対して最適化計算45を実行することにより、n-Hot条件を満たす近似解を求めてよい。例えば図5に示す例では、グループG1について1-Hot条件を満たし且つグループG2について1-Hot条件を満たす近似解を求める。
【0049】
最適化計算部24が求めた近似解における各変数の値が、図5において最適化計算45の実行後における(即ち最適化計算45を示す矢印の右側における)グループG1及びG2に属する変数の直下に示されている。グループG1及びG2の両方において、例えば1-Hot条件が課せられている場合、1つの変数だけ値が1であり残りの全ての変数は値が0である。
【0050】
図2に戻り、最適化計算部24が求めた近似解は、最良解20Cとしてデータ格納部20に格納される。その後、変数選択部25が、最適化計算用変数群20B及び最良解20Cを参照し、選択グループG1及びG2の各々において、最適解で1にならないであろう変数を近似解(最良解20C)に基づいて推定し、当該変数を最適化計算用変数群20Bから除外する。具体的には、図5に示されるように、変数除去46により、グループG1において変数41及び42が除外され、グループG2において変数43及び44が除外される。変数固定部26は、値をゼロに固定する変数として、上記除外した変数を固定変数値20Dとしてデータ格納部20に格納してよい。
【0051】
上記変数除去処理を実行するにあたり、変数選択部25は、n-Hot条件を考慮することにより、最適解で1にならないであろう変数を推定してよい。即ち求めた近似解で値が1である変数は、最適解でも値が1である可能性が十分にあると考えられるので、当該変数は残すべきであることが分かる。一方、近似解で値が1である変数に対応する条件から大きく異なる条件に対応する変数については、最適解で1になる可能性は極めて低い(即ち1にならないであろう)と考えられる。例えば、近似解において作業A1が朝早い9:00の時間帯に開始される条件が示されている場合に、その条件から大きく異なる条件、例えば作業A1が夕刻遅く17:00の時間帯に開始される条件が最適解に含まれる可能性は極めて低い。従って、作業A1の17:00の時間帯に相当する変数については、最適解で値が1にならないであろうと推定して除去することができる。
【0052】
なお変数選択部25は、除外後に残る上記第3の変数(即ちグループG1及びG2に属する変数のうちで除外されずに残った変数)と上記第2の変数(即ち非選択グループG3に属する変数)との合計が所定データ量以下となるように、第3の変数を残す。
【0053】
その後、図5に示されるように、最適化計算部24は、第3の変数と少なくとも第2の変数とにより第1の変数(最適計算対象である変数)を更新した後に新たな最適化計算47を実行する。具体的には、グループ抽出部23が、前回の非選択グループG3に属する変数を最適化計算用変数群20Bに追加する。その後最適化計算部24が、最適化計算用変数群20Bに格納される変数から、固定変数値20Dに格納される変数を除外した後に残る変数に対して、最適化計算を実行する。このようにして、前回の非選択グループG3に属する変数を新たに含めて最適化計算を実行する処理を繰り返す。
【0054】
別の言葉で言えば、選択された1つ又は複数の選択グループG1乃至G3に属する変数のうちで最適化計算対象である第1の変数(この場合はグループG1及びG2から除外されずに残った変数とグループG3に属する全変数)の総数が所定データ量以下である。また更に、1つの非選択グループG4に属する第2の変数と上記第1の変数との合計が所定データ量より大きい。この状態において、最適化計算部24は、図5に示されるように上記第1の変数(グループG1及びG2から除外されずに残った変数とグループG3に属する全変数)に対して最適化計算47を実行することにより、n-Hot条件を満たす近似解を求める。
【0055】
このようにして最適化計算部24は、前回の非選択グループに属する変数を順次新たに含めて最適化計算を実行する処理を繰り返していく。即ち、最初に選択グループG1及びG2に対する最適化計算を実行し、その後に非選択グループG3を新たに含めた最適化計算を行い、その後更に非選択グループG4を新たに含めた最適化計算を行う。これにより、最終的に全グループG1乃至G4を対象とした近似解を求めることができる。
【0056】
上記の一連の最適化計算を実行するにあたり、n-Hot条件を利用し、最適解で1にならないであろう変数を近似解に基づいて各グループから除外している。即ち、無作為に変数を除外するのではなく、実際に最適化計算により求めた近似解に基づいて、最適解に貢献しない変数を推定して除外しているので、最適化計算対象の変数の数を削減しているにも関わらず、最適解又は良好な近似解を問題なく求めることができる。また最適化計算対象となる変数の数を削減して最適化計算を効率的に実行できるので、規模の大きな問題に対する最適解又は良好な近似解を効率的に求めることができる。
【0057】
また前述のように、違反発生度計算部22により、各グループについて制約違反が発生しやすい度合いを計算し、グループ抽出部23により、制約違反が発生しやすい度合いが大きいグループから順番に最適化計算の対象としてよい。これにより、制約条件を満たすことが難しいグループを、制約条件を満たすことが容易であるグループよりも先に、優先的に最適化計算の対象とすることができる。それとは逆に、制約条件を満たすことが難しいグループを後回しにしたのでは、結果的に制約条件を満たすことができなくなったり、制約条件を満たそうとすると品質の低い近似解しか得られなかったりする可能性がある。図2に示される最適化装置では、制約条件を満たすことが難しいグループを優先的に処理することにより、より最適解に近い良好な近似解を効率的に求めることが可能となる。
【0058】
図6は、最適化装置が実行する最適化方法の一例を示すフローチャートである。図6に示される最適化方法は、図1に示されるハードウェアに基づいて、図2に示される各機能部が実行してよい。
【0059】
なお図6及び以降の図において、フローチャートに記載された各ステップの実行順序は一例にすぎず、本願の意図する技術範囲が、記載された実行順番に限定されるものではない。例えば、Aステップの次にBステップが実行されるように本願に説明されていたとしても、Aステップの次にBステップを実行することが可能なだけでなく、Bステップの次にAステップを実行することが、物理的且つ論理的に可能である場合がある。この場合、どちらの順番でステップを実行しても、当該フローチャートの処理に影響する全ての結果が同一であるならば、本願に開示の技術の目的のためには、Bステップの次にAステップが実行されてもよいことは自明である。Aステップの次にBステップが実行されるように本願に説明されていたとしても、上記のような自明な場合を本願の意図する技術範囲から除外することを意図するものではなく、そのような自明な場合は、当然に本願の意図する技術範囲内に属する。
【0060】
ステップS1において、グループ抽出部23が、イジングマシンの入力可能サイズ(即ち最適化装置の所定データ量)を示す値をNに設定する。またグループ抽出部23は更に、データ量変数n及び最適化対象変数リストTarget_Listをゼロに初期設定する。最適化対象変数リストTarget_Listは、図2に示される最適化計算用変数群20Bに相当する。
【0061】
ステップS2において、違反発生度計算部22が、変数グループごとにQUBOモデルの係数から制約違反発生度合を推測し、厳しい順にグループをソートし、ソート結果をG_Listに格納する。即ち、違反発生度計算部22が、前述の式(2)に示される目的関数における行列Aの要素である係数値に基づいて制約違反発生度合を計算し、制約違反が最も発生しやすいものが先頭となるように、度合いの大きさに応じて順番にグループを並べる。
【0062】
図7は、制約違反発生度合を計算する方法の一例を示す図である。図7の左端には、図3に示される表30のうちで作業A1に関する部分が示されている。この作業A1に関する納期(即ち、それまでに作業A1を完了すべき時刻)が、図7に示されるように15:00に設定されている。この場合、納期以前の時刻50において変数xの値が1になることは許されるが、納期より後の時刻51において変数xの値が1になることは許されない。従って、納期より後の時刻51における変数xについては、前述の目的関数の式(2)において変数xの自乗に係る係数aii(行列Aの対角要素)の値を大きな値に設定する。これにより、納期遅れの際にペナルティが大きくなるような目的関数としている。このように変数xの自乗に係る係数aii(行列Aの対角要素)は、変数xが値1をとるとペナルティを与える係数であるので、このような対角要素の係数値のうちゼロでない係数の数が多い場合には、制約違反する可能性が高いと推定できる。
【0063】
図7に示される行列は、目的関数の式(2)に示される行列Aである。当該行列の対角要素52は、全ての対角要素(全作業に対する対角要素)のうちで作業A1に対応するグループに属する対角要素である。上述の考え方に基づいて、ここに示される作業A1に対応するグループに属する対角要素52のうちでゼロでない係数の数を、当該グループに対する制約違反発生度合として用いることができる。そのような制約違反発生度合の計算式が式53として図7に示される。
【0064】
上記のようにして、複数個のグループのうちの着目グループに対して違反発生度計算部22が制約違反発生度合を計算する。当該制約違反発生度合は、最適化計算で用いる目的関数式に含まれる着目グループに属する変数の自乗項に係る係数のうち0でない係数の数が多いほど、大きい値である。このようにして制約違反発生度合を計算することにより、単純な計算により、各グループについて制約違反が発生しやすい度合いを確実に求めることができる。
【0065】
図8は、制約違反発生度合を計算する方法の別の一例を示す図である。図8に示される制約違反発生度合を計算する方法は、図7に示される計算方法と類似しており、作業A1に対応するグループに属する対角要素52のうちでゼロでない係数に基づいて、当該グループに対する制約違反発生度合を計算する。但し、図7に示される方法では、対角要素52のうちでゼロでない係数の数を制約違反発生度合として用いたが、図8に示される方法では、対角要素52のうちでゼロでない係数の平均値を制約違反発生度合として用いる。そのような制約違反発生度合の計算式が式54として図8に示される。
【0066】
上記のようにして、複数個のグループのうちの着目グループに対して違反発生度計算部22が制約違反発生度合を計算する。当該制約違反発生度合は、最適化計算で用いる目的関数式に含まれる着目グループに属する変数の自乗項に係る係数のうち0でない係数の平均値が大きいほど、大きい値である。このようにして制約違反発生度合を計算することにより、単純な計算により、各グループについて制約違反が発生しやすい度合いを確実に求めることができる。
【0067】
図9は、制約違反発生度合を計算する方法の別の一例を示す図である。図9の左端には、図3に示される表30のうちで作業A1及び作業A2に関する部分が示されている。この例において、作業A1及び作業A2には作業順序に関する制約があり、作業A1を完了した後にのみ作業A2を開始することができるとする。しかしながら図9に示される例の場合、表30において点線枠で示されるように、「作業A1」の「設備2」の時間帯10:30において変数値1であり、且つ「作業A2」の「設備1」の時間帯9:00において変数値1である。即ちこの例では、作業A1を完了する前に作業A2を開始してしまっている。
【0068】
上記のような作業順序に関する違反は許されないために、図5に示される表30において2つの点線枠で示される2つのセルに相当する変数同士の積に、最適化計算で用いる目的関数式においてある係数が係っている場合、この係数の値を大きな値に設定する。これにより、作業順序が守られない際にペナルティが大きくなるような目的関数としている。このように異なる2つのグループ間での2つの変数の積に係る係数値は、これら2つの変数が同時に1になるとペナルティを与える係数であるので、このような係数値のうちゼロでない係数の数が多い場合には、制約違反する可能性が高いと推定できる。
【0069】
図9に示される行列は、目的関数の式(2)に示される行列Aである。当該行列の要素群55は、作業A1に対応するグループに属する変数間又は当該変数の自乗に係る係数である。また行列の要素群56及び57は、作業A1に対応するグループに属する変数と他の作業に対応するグループに属する変数間の積に係る係数である。上述の考え方に基づいて、これらの要素群56及び57のうちでゼロでない係数の数を、作業A1に対応するグループに対する制約違反発生度合として用いることができる。そのような制約違反発生度合の計算式が式58として図9に示される。
【0070】
上記のようにして、複数個のグループのうちの着目グループに対して違反発生度計算部22が制約違反発生度合を計算する。複数個のグループのうちの着目グループ以外のグループに属する変数と着目グループに属する変数との積に、最適化計算で用いる目的関数式において第1の係数が係っている場合、第1の係数のうち0でない係数の数が多いほど、制約違反発生度合は大きい値である。このようにして制約違反発生度合を計算することにより、単純な計算により、各グループについて制約違反が発生しやすい度合いを確実に求めることができる。
【0071】
図10は、制約違反発生度合を計算する方法の別の一例を示す図である。図10に示される計算方法は、図9に示される計算方法と類似しており、作業A1に対応する着目グループに属する変数と他の作業に対応するグループに属する変数間の積に係る係数に基づいて、着目グループに対する制約違反発生度合を計算する。但し、図9に示される方法では、ゼロでない係数の数を制約違反発生度合として用いたが、図8に示される方法では、ゼロでない係数の分散値を、制約違反発生度合として用いる。そのような制約違反発生度合の計算式が式59として図10に示される。
【0072】
2つのグループ間での2つの変数の積に係る係数値として、ペナルティの小さいものとペナルティの大きいものとが含まれている場合には、係数値の分散値が大きくなる。前述の例のように、2つの変数の積に係る係数値のうちで、作業順序等の制約条件を破るような変数の組み合わせについて大きな係数値が設定されている場合のように、一部の係数値のみが大きな値となる場合には、係数値の分散値が大きくなる。従ってそのような分散値を用いることにより、より適切な制約違反発生度合を計算することが可能となる。
【0073】
上記のようにして、複数個のグループのうちの着目グループに対して違反発生度計算部22が制約違反発生度合を計算する。着目グループ以外のグループに属する変数と着目グループに属する変数との積に、最適化計算で用いる目的関数式において第1の係数が係っている場合、第1の係数のうち0でない係数の分散値が大きいほど、制約違反発生度合は大きい値である。このようにして制約違反発生度合を計算することにより、単純な計算により、各グループについて、より適切な制約違反発生度合を求めることができる。
【0074】
なお図7乃至図10に示す制約違反発生度合を計算する4つの方法は互いに独立であり、違反発生度計算部22は、予め決められた何れか1つの方法を用いて制約違反発生度合を計算してよい。或いは違反発生度計算部22は、これら4つの方法のうちの2つ又はそれ以上の方法で計算した複数種類の制約違反発生度合を適宜参照することにより、制約違反が発生しやすい順番にグループを並べてもよい。この際、例えば4つの方法のうちの2つ又はそれ以上の方法で計算した複数種類の制約違反発生度合を、適切な重み係数で重み付けして加算し、加算後の値に基づいて制約違反が発生しやすい順番にグループを並べてもよい。
【0075】
図6のフローチャートに戻り、ステップS3において、グループ抽出部23は、G_Listが空であるか否かを判断する。G_Listが空でない場合(NO)、処理はステップS4に進む。G_Listが空である場合(YES)、処理はステップS11に進む。
【0076】
ステップS4において、グループ抽出部23は、G_Listの先頭グループを取得し、取得したグループをTarget_Groupとする。またグループ抽出部23は更に、Target_Groupであるグループに属する変数の数を取得し、当該変数の数をNtargetに格納する。
【0077】
ステップS5において、グループ抽出部23は、データ量変数n(変数の数を示す値:初期値ゼロ)とNtargetとの和が、入力可能サイズNより大きいか否かを判断する。入力可能サイズNより大きくない場合(NO)、処理はステップS6に進む。入力可能サイズNより大きい場合(YES)、処理はステップS8に進む。
【0078】
ステップS6において、グループ抽出部23は、Target_Groupであるグループに属する変数をTarget_Listに追加するとともに、当該グループをG_Listから削除する。例えば初期設定後における一回目のステップS6の実行において、Target_Groupであるグループに属する変数の数が入力可能サイズN以下であるので、当該グループに属する変数を最適化対象変数リストTarget_Listに追加する。それに伴い、制約違反発生度合に応じて並べられたグループリストG_Listから当該グループを削除する。
【0079】
ステップS7において、グループ抽出部23は、新たに最適化対象変数となった変数の数であるNtargetをデータ量変数nの値に加算し、加算結果を新たなデータ量変数nの値とする。その後処理はステップS3に戻る。
【0080】
上記のステップS3乃至S7の処理を繰り返すことにより、グループ抽出部23は、制約違反発生度合順にグループを順次選択して、当該グループに属する変数を最適化対象変数リストTarget_Listに加えていく。最適化対象変数リストTarget_Listに格納される変数の数が、入力可能サイズN以下で最大となるまで、即ちこれ以上新たなグループに属する変数を追加できなくなるまで、処理が繰り返される。これ以上新たなグループに属する変数をTarget_Listに追加できなくなると(即ちステップS5でYES)、処理はステップS8に進む。
【0081】
上記の処理において、初期状態設定の後において初めてステップS5でYESとなった状態では、Target_Listには、G_Listの先頭から取り出された例えば2個のグループに属する全変数が格納されている。これら格納されている変数に対して、後述するように、最適化計算部24による最適化計算が実行される。
【0082】
一方、上記最適化計算が実行された直後においてステップS5でYESとなった状態では、Target_Listには、上記2個のグループに属する変数から間引き後に残った変数と、G_Listにおいて次の順番のグループに属する全変数が格納されている。これら格納されている変数に対して、後述するように、最適化計算部24による最適化計算が実行される。
【0083】
図11は、最適化対象変数の追加について説明するための図である。図11に示される例においては、左端に図示されているように、グループ#1乃至#3に対して既に最適化計算が実行済みである状態60であり、グループ#4乃至#6に対しては最適化計算が未実行である状態61である。
【0084】
前述した変数除去処理として、最適化計算が実行済みであるグループ#1乃至#3に対して、解候補とならない変数を抽出して取り除く処理S21が実行される。これにより例えばグループ#1に属する変数x12及びx13、グループ#2に属するx22、グループ#3に属するx31及びx33等が除去される。
【0085】
一方、入力可能サイズ(即ち最適化計算可能な変数の数)から上記変数除去後に残った変数の数を引いた数が、変数除去後に追加可能な数であるので、最適化計算が未実行であるグループ#4乃至#6から、この追加可能な数以下で収まるグループを選択する。即ち、イジングマシンの入力可能データ量に収まるように変数グループを選択する処理S22を、グループ#4乃至#6に対して実行する。その結果、次の最適化計算で使用される変数群62が得られる。
【0086】
上記のように、変数除去後に追加可能な変数の数に応じて、1つ又は複数のグループを制約違反発生度合順に選択して、選択されたグループに属する変数を、新たに最適化対象変数リストTarget_List(図6参照)に追加していく。これにより、最適化計算に用いるハードウェア資源等を無駄にすることなく、最大限に資源を利用した効率的な最適化計算が可能となる。
【0087】
図6に戻り、ステップS8において、最適化計算部24は、最適化対象変数リストTarget_List内にある変数だけを対象にしてQUBOモデルを作成し、当該QUBOモデルに基づいて最適化計算を実行する。最適化計算により求められた近似解は、最良解20Cとしてデータ格納部20に格納される(図2参照)。
【0088】
最適化問題において最小化すべき目的関数は、前述の式(2)により規定されており、この式には全てのグループに属する全ての変数が含まれている。従って、ステップS8において、最適化計算を実行する際には、目的関数式に現れる行列Aの要素を間引いて、最適化計算対象である変数に対応した要素のみを残す必要がある。
【0089】
図12は、行列の要素数を削減する処理を示す図である。図12において、最適化問題を規定するn個の変数x乃至xを要素とするベクトル71が与えられるとき、目的関数を規定する行列73はn×n個の要素aij(i=1~n,j=1~n)を有する。前述のように、複数個のグループのうちの一部のグループを選択することにより、更には選択後の変数を間引くことにより、ベクトル71から一部の要素のみを含むベクトル72が作成される。
【0090】
即ち、最適化計算部24が実行する最適化計算の対象となる変数は、ベクトル72の要素である3個の変数x、x、xである。この場合、目的関数を規定する行列74は、これら3個の変数に対応して、a11、a14、a1n、a41、a44、a4n、an1、an4、annの9個の要素を含む行列となる。このように、最適化計算部24は、最適化計算対象である変数に応じて行列Aの要素を間引く処理を実行し、最適化計算に用いる適切な目的関数を作成した上で、イジングマシンによる最適化計算を実行する。
【0091】
図6に戻り、ステップS9において、変数選択部25は、G_Listから削除した変数グループの全変数を対象に、最適解で値が1にならない変数を導出解(最良解20C)に基づいて推定して取り除き、解候補となる変数を最大(N-Ntarget)個残す。即ち変数選択部25は、最適化計算により求められた近似解に含まれる変数から除外対象となる変数を選択するのではなく、当該近似解に含まれる変数が属していたグループに属する全変数から除外対象となる変数を選択する。
【0092】
図13は、最適解で値が1にならない変数を推定する処理の一例を説明する図である。図13には、図3に示される表30のうちで作業A1に関する部分が示されている。
【0093】
最適化問題に対して単純な定式化を行った場合、一般的に、変数の添字に番号を割り当てる順番は単純な走査順となる。例えば、図13において走査順割り当て81の矢印に示されるように、まず表30の1行目において、「作業A1」の「設備1」乃至「設備4」の4列に対応する4個の変数について、添字番号1乃至4をそれぞれ割り当てることになる。また更に表30の2行目において、「作業A1」の「設備1」乃至「設備4」の4列に対応する4個の変数について、添字番号5乃至8をそれぞれ割り当てることになる。残りの3行目から19行目までも同様にすることにより、表30における作業A1に対応するグループに属する19行×4列の76個のセルに、連続する添字を有する変数x乃至x76を割り当てることになる。
【0094】
このようにして添字番号が割り当てられた場合、互いに比較的近い距離にある複数個のセルからなるセル群82は、連続した互いに近い添字番号が割り当てられていると共に、それらに対応する変数は、互いに比較的近い条件を示す変数である。
【0095】
求められた近似解で値が1である変数の周囲に存在する添字番号距離が比較的近い変数は、1である変数と比較的近い条件に対応しているので、最適解でも値が1である可能性が十分にあると推定され、当該変数は残すべきであることが分かる。一方、近似解で値が1である変数から添字番号距離が十分に遠い変数は、1である変数と大きく異なる条件に対応しているので、最適解で値が1にならないであろうと推定され、当該変数は除去してよいことが分かる。
【0096】
従って、図13に示される例のように、「作業A1」の「設備4」における時間帯「13:00」での変数値が近似解で1になっている場合、その周囲のセル群82に対応する変数については、最適解で1になる可能性があると判断して残してよい。更に、セル群82の外部に存在するセルに対応する変数については、最適解で1にならないであろうと推定して、最適化計算対象から除外してよい。
【0097】
図14は、図13で説明した変数除外処理の一例を示すフローチャートである。
【0098】
ステップS31において、変数選択部25は、初期化作業として、閾値thresholdにゼロを設定するとともに、結果リストresultに空の配列を格納する。
【0099】
ステップS32において、変数選択部25は、着目グループにおいて近似解で変数値が1である変数xの添字jに対して、絶対値での距離|i-j|が閾値thresholdより大きい全ての添字iの値をSに格納する。変数選択部25は更に、各グループに対して計算されたSをS_Listに格納する。
【0100】
ステップS33において、変数選択部25は、全ての添字を要素とする添字集合SallからS_List内のSに含まれる要素を取り除くことにより残った添字を、candidae_Listに格納する。これにより、近似解で値が1になった変数の添字の値とは大きく異なる値を有する添字が除外され、それ以外の添字が残される。
【0101】
ステップS34において、変数選択部25は、candidae_Listに格納されている要素数がN-Ntargetよりも大きいか否かを判断する。ここでNは入力可能サイズであり、Ntargetは次の非選択グループに属する変数の数である。即ち、入力可能サイズから次の非選択グループに属する変数の数を引いた数よりも、次回の最適化計算に残される変数候補数が大きいか否か、即ち、次の非選択グループに属する全ての変数を次回の最適化計算に含めることが不可能であるか否かを判断する。上記判断結果がNOの場合、処理はステップS35に進む。上記判断結果がYESの場合、処理は終了する。
【0102】
ステップS35において、変数選択部25は、閾値thresholdを1増加し、S_Listの内容を結果リストresultに格納する。その後処理はステップS32に戻り、以降の処理を繰り返す。
【0103】
以上のようにして、閾値thresholdを徐々に増やしながら、残される変数候補数を徐々に増やしていくことにより、次の非選択グループに属する全ての変数を次回の最適化計算に含めることができるような、最大限の数に変数候補数を設定できる。
【0104】
上記説明した処理においては、選択グループの各々において、近似解で値が1となる変数の添字の値が第1の添字値であり着目変数の添字の値が第2の添字値である場合に、第1の添字値と第2の添字値との差が所望の閾値よりも大きければ着目変数を除外する。このようにして除外変数を選択することにより、単純な計算により、各グループについて最適解に貢献しない変数を高い信頼性をもって削除することが可能となる。また更に、閾値thresholdを徐々に増やしながら、残される変数候補数を徐々に増やしていくことにより、最適化計算に無駄な余裕を持たせることなく、効率的な最適化計算を実現することができる。
【0105】
図15は、最適解で値が1にならない変数を推定する処理の別の一例を説明する図である。図15には、図3に示される表30のうちで作業A1及び作業A2に関する部分が示されている。この例において、作業A1及び作業A2には作業順序に関する制約があり、作業A1を完了した後にのみ作業A2を開始することができるとする。
【0106】
図15に示される例の場合、最適化計算により求めた近似解において、表30に点線枠で示されるように、「作業A2」の「設備3」の時間帯11:00において変数値1であり、当該作業が時間帯11:00から開始されることになっているとする。この場合、作業A1に属する変数を1つずつ着目変数として選択し、当該着目変数と上記の作業A2における値1である変数との積に係る係数値を考える。この係数値が大きい場合、着目変数の値が0から1に変化することにより、目的関数値が大きく増加することになる。このように着目変数の値が0から1に変化することにより目的関数値が大きく増加するのであれば、当該着目変数は最適解で1にならないであろうと推定することは合理的である。
【0107】
従って、図15に示される例のように、もう一つの点線枠で示される「作業A1」の「設備3」における時間帯「12:30」での変数に着目した場合、当該着目変数と作業A2における値1である変数との積に係る係数値が大きければ、当該着目変数を除外してよい。また作業A1に属する他の変数についても、同様の考え方により、係数値に応じて除外するか否かを判断してよい。
【0108】
図16は、図15で説明した変数除外処理の一例を示すフローチャートである。
【0109】
ステップS41において、変数選択部25は、初期化作業として、閾値thresholdにゼロを設定するとともに、結果リストresultに空の配列を格納する。
【0110】
ステップS42において、変数選択部25は、着目グループに属する変数xと他の任意のグループにおいて近似解で変数値が1である変数xとの積に係る係数aijの大きさが、閾値thresholdより大きいような、全ての添字iの値をSに格納する。変数選択部25は更に、各グループに対して計算されたSをS_Listに格納する。
【0111】
ステップS43において、変数選択部25は、全ての添字を要素とする添字集合SallからS_List内のSに含まれる要素を取り除くことにより残った添字を、candidae_Listに格納する。これにより、近似解で値が1になった変数の添字の値とは大きく異なる値を有する添字が除外され、それ以外の添字が残される。
【0112】
ステップS44において、変数選択部25は、candidae_Listに格納されている要素数がN-Ntargetよりも大きいか否かを判断する。ここでNは入力可能サイズであり、Ntargetは次の非選択グループに属する変数の数である。即ち、入力可能サイズから次の非選択グループに属する変数の数を引いた数よりも、次回の最適化計算に残される変数候補数が大きいか否か、即ち、次の非選択グループに属する全ての変数を次回の最適化計算に含めることが不可能であるか否かを判断する。上記判断結果がNOの場合、処理はステップS35に進む。上記判断結果がYESの場合、処理は終了する。
【0113】
ステップS45において、変数選択部25は、閾値thresholdを1増加し、S_Listの内容を結果リストresultに格納する。その後処理はステップS32に戻り、以降の処理を繰り返す。
【0114】
以上のようにして、閾値thresholdを徐々に増やしながら、残される変数候補数を徐々に増やしていくことにより、次の非選択グループに属する全ての変数を次回の最適化計算に含めることができるような、最大限の数に変数候補数を設定できる。
【0115】
上記説明した処理においては、1つのグループにおいて近似解で値が1となる変数と別の1つのグループにおける1つの着目変数との積に、最適化計算で用いる目的関数式において係っている係数の値が、所望の閾値よりも大きければ着目変数を除外することになる。このようにして除外変数を選択することにより、単純な計算により、各グループについて最適解に貢献しない変数を高い信頼性をもって削除することが可能となる。また更に、閾値thresholdを徐々に増やしながら、残される変数候補数を徐々に増やしていくことにより、最適化計算に無駄な余裕を持たせることなく、効率的な最適化計算を実現することができる。
【0116】
なお図14及び図16に示す変数除外処理を計算する2つの方法は互いに独立であり、変数選択部25は、予め決められた何れか1つの方法を用いることにより、解候補変数として残す変数を決定してよい。或いは変数選択部25は、これら2つの方法を組み合わせ、ステップS32及びS42に示される少なくとも一方の基準により除去すると判断された変数を除去することにより、解候補変数として残す変数を決定してもよい。
【0117】
図6のフローチャートに再び戻り、ステップS10において、グループ抽出部23は、抽出した解候補変数でTarget_Listを上書きすると共に、抽出した解候補変数の数をデータ量変数nに設定する。その後処理はステップS3に戻り、G_Listが空であるか否かに応じて、ステップS4以降の上述の処理を繰り返すか或いはステップS11に進む。
【0118】
ステップS3において、G_Listが空であると判断された場合、即ち、最適化問題の定式化に現れる全てのグループについて近似解に基づく変数除去処理が行われた場合、処理はステップS11に進む。
【0119】
ステップS11において、最適化計算部24は、Target_List内にある変数だけを対象にQUBOモデルを作成し、イジングマシンで最適化を行う。この時点でTarget_Listに格納されている変数は、ステップS8で最後に実行した最適化計算により得られた近似解に基づいて間引きした後の変数である。従って、この時点でTarget_Listに残されている変数は新たな組み合わせの変数であり、この組み合わせの変数に対しては未だ最適化計算は実行されていない。そこでこのステップS11において、最適化計算部24が、Target_Listに格納されている変数を対象に最適化計算を実行する。
【0120】
ステップS12において、変数選択部25は、全グループの全変数を対象に、最適解で値が1にならない変数を導出解から推定して取り除き、解候補となる変数を最大N個抽出する。即ち、変数選択部25は、ステップS11において得られた近似解に基づいて、前述の図14又は図16に示す変数除外処理等を適用することにより全グループの全変数のうち最適解で1にならないであろう変数を推定する。当該推定結果に応じて、変数選択部25は、当該1にならないであろう変数を除外することにより、最大N個(入力可能サイズに等しい数)の変数を残す。
【0121】
ステップS13において、処理終了判定部27は、正の大きな値を変数Bestに格納する。なおこの処理は、制御手順がステップS13に最初に到達したときにのみ実行する初期値設定処理である。
【0122】
ステップS14において、最適化計算部24は、ステップS12において求められた解候補を対象にイジングマシンで最適化を行う。即ち最適化計算部24は、ステップS12において求められた変数除外後の最大N個の変数を対象として、最適化計算を実行し近似解を求める。
【0123】
ステップS15において、最適化計算部24は、最適化結果のエネルギー値(即ち目的関数の値)をEnergyに格納する。ステップS16において、処理終了判定部27は、EnergyがBestよりも小さいか否かを判定する。EnergyがBestよりも小さい場合(YES)に処理はステップS17に進み、EnergyがBest以上である場合(NO)に処理はステップS18に進む。
【0124】
ステップS16において、処理終了判定部27がEnergyの値によりBestの値を更新すると共に、最適化計算部24が最適化結果の変数値をBest_Stateに格納する。最適化結果の変数値をBest_Stateに格納する処理は、図2に示される構成に対応付けると、最適化計算部24が最適化計算により得られた近似解の変数値を最良解20Cとしてデータ格納部20に格納することに相当する。
【0125】
その後処理はステップS12に戻り、以降の処理を繰り返す。これにより、最適化計算を繰り返す過程において、毎回変数を選択し直し、選択し直した変数を対象として最適化計算を行い、最適化計算により得られた目的関数値が前回の最適化計算により得られた目的関数値よりも小さくなる限りは、最適化計算を繰り返す。
【0126】
目的関数値が小さくならなくなり処理がステップ18に進むと、データ出力部28が、最適化計算により得られた最良解であるBest_Stateと、当該最良解に対する目的関数値Bestとを出力する。
【0127】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【符号の説明】
【0128】
11 CPU
12 表示部
13 入力部
14 ROM
15 RAM
16 HDD
17 ネットワークインターフェース
18 可搬型記憶媒体用ドライブ
19 メタヒューリスティック計算部
20 データ格納部
21 データ取得部
22 違反発生度計算部
23 グループ抽出部
24 最適化計算部
25 変数選択部
26 変数固定部
27 処理終了判定部
28 データ出力部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16