(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-31
(45)【発行日】2023-02-08
(54)【発明の名称】最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20230201BHJP
【FI】
G06N99/00 180
(21)【出願番号】P 2019119604
(22)【出願日】2019-06-27
【審査請求日】2022-03-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】宮澤 俊之
(72)【発明者】
【氏名】柴▲崎▼ 崇之
(72)【発明者】
【氏名】上村 泰紀
【審査官】加藤 優一
(56)【参考文献】
【文献】特開2016-051350(JP,A)
【文献】特開平11-212948(JP,A)
【文献】特開平07-152775(JP,A)
【文献】株式会社富士通研究所,中分子創薬へ適用可能な組合せ最適化問題を解く技術を開発,プレスリリース [オンライン],日本,富士通株式会社,2018年09月18日,[検索日 2022.12.20],インターネット: <URL:https://pr.fujitsu.com/jp/news/2018/09/18.html>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00 -99/00
G16B 5/00 -99/00
G06Q 10/00 -99/00
(57)【特許請求の範囲】
【請求項1】
組合せ最適化問題を表す第1の評価関数に含まれる複数の状態変数のそれぞれの間の相互作用の大きさを表す重み係数を保持する記憶部と、
前記第1の評価関数に基づいて、前記組合せ最適化問題の局所解を算出する局所解算出部と、
前記複数の状態変数のうち前記局所解における値が所定値である第1の状態変数と、前記重み係数と、入力される選択領域情報とに基づいて、前記複数の状態変数から部分問題の対象となる状態変数群を選択する選択部と、
選択された前記状態変数群についての前記部分問題を表す第2の評価関数について、基底状態を探索する探索部と、
前記基底状態の探索によって得られた部分解に基づいて前記局所解を更新することで、全体解を生成する全体解生成部と、
を有する最適化装置。
【請求項2】
前記選択部は、前記重み係数に基づいて、前記第1の状態変数との間で相互作用がある第2の状態変数を前記状態変数群に含む候補として選択する、請求項1に記載の最適化装置。
【請求項3】
前記選択部は、前記全体解生成部が生成した前記全体解における値が前記所定値である第3の状態変数と、前記重み係数と前記選択領域情報とに基づいて、選択する前記状態変数群を更新する、請求項1または2に記載の最適化装置。
【請求項4】
前記局所解算出部は、前記全体解生成部が生成した前記全体解を初期解として、前記局所解を算出する、請求項1乃至3の何れか一項に記載の最適化装置。
【請求項5】
前記選択領域情報は、前記探索部が処理可能な演算ビット数の情報を含み、前記選択部は、前記演算ビット数と同じ数の状態変数による前記状態変数群を選択する、請求項1乃至4の何れか一項に記載の最適化装置。
【請求項6】
前記組合せ最適化問題は、複数のアミノ酸による直鎖構造の安定構造を探索する問題であり、前記複数の状態変数のそれぞれは、前記複数のアミノ酸の何れかが配置される候補となる複数の格子点の何れかに割当てられており、
前記選択部は、アミノ酸が配置されている格子点に割当てられている前記第1の状態変数との間で相互作用がある前記第2の状態変数を前記状態変数群に含む候補として選択する、
請求項2に記載の最適化装置。
【請求項7】
前記選択部は、2以上のアミノ酸の配置が禁止されている同一シェルに属す格子点に割当てられた状態変数の中から、前記状態変数群を選択する、請求項6に記載の最適化装置。
【請求項8】
最適化装置が有する局所解算出部が、組合せ最適化問題を表す第1の評価関数に基づいて、前記組合せ最適化問題の局所解を算出し、
前記最適化装置が有する選択部が、前記第1の評価関数に含まれる複数の状態変数のうち前記局所解における値が所定値である第1の状態変数と、記憶部に保持されている前記複数の状態変数のそれぞれの間の相互作用の大きさを表す重み係数と、入力される選択領域情報とに基づいて、前記複数の状態変数から部分問題の対象となる状態変数群を選択し、
前記最適化装置が有する探索部が、選択された前記状態変数群についての前記部分問題を表す第2の評価関数について、基底状態を探索し、
前記最適化装置が有する全体解生成部が、前記基底状態の探索によって得られた部分解に基づいて前記局所解を更新することで、全体解を生成する、
最適化装置の制御方法。
【請求項9】
最適化装置の制御プログラムにおいて、
組合せ最適化問題を表す第1の評価関数に基づいて、前記組合せ最適化問題の局所解を算出し、
前記第1の評価関数に含まれる複数の状態変数のうち前記局所解における値が所定値である第1の状態変数と、記憶部に保持されている前記複数の状態変数のそれぞれの間の相互作用の大きさを表す重み係数と、入力される選択領域情報とに基づいて、前記複数の状態変数から部分問題の対象となる状態変数群を選択し、
選択された前記状態変数群についての前記部分問題を表す第2の評価関数について、基底状態を探索し、
前記基底状態の探索によって得られた部分解に基づいて前記局所解を更新することで、全体解を生成する、
処理をコンピュータに実行させる最適化装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、最適化装置、最適化装置の制御方法及び最適化装置の制御プログラムに関する。
【背景技術】
【0002】
組合せ最適化問題は、現在の社会における様々な分野に存在する。たとえば、製造・流通、マーケティングなどの分野では、コストを最適化(最小化)する要素の組合せが探索される。しかし、組合せ最適化問題は、上記要素に対応する変数の数が増えるにつれて指数関数的に計算時間が増加するため、従来のノイマン型コンピュータでは解くことが困難である問題として知られている。
【0003】
このようなノイマン型コンピュータが不得意とする多変数の組合せ最適化問題を解く手法として、計算対象の組合せ最適化問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する手法がある。イジングモデルを利用して組合せ最適化問題を解くハードウェアとして、デジタル回路を用いてシミュレーテッド・アニーリングを行うことでイジング型の評価関数の値が最小となる状態変数の値の組合せを計算するものがある。また、超伝導回路を用いて量子アニーリングを行うことで同様の計算を行うものなどがある。
【0004】
一方、ハードウェア量やソフトウェアにて計算する場合のメモリサイズなどの制約により、問題規模(状態変数の数(イジングモデルのスピン数に相当))が大きい組合せ最適化問題を、小さい問題に分割して計算を行う手法がある。たとえば計算対象の組合せ最適化問題を分割した部分問題を作成し、各部分問題の解を探索し、各部分問題の解に基づいて全体の解を生成する手法があった(たとえば、特許文献1,2、非特許文献1参照)。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2016-51350号公報
【文献】特開2015-191340号公報
【非特許文献】
【0006】
【文献】G. Rosenberg, and et. al., “Building an iterative heuristic solver for a quantum annealer”, Computational Optimization and Applications, 65, 3, 845, 2016
【発明の概要】
【発明が解決しようとする課題】
【0007】
計算対象の組合せ最適化問題を分割して計算する場合、部分問題の解に基づいて全体の解を求める計算処理などの影響により、問題全体の解を得るまでの計算量が分割をしないで計算する場合よりも増加する問題があった。
【0008】
1つの側面では、本発明は、組合せ最適化問題を分割して計算する際の計算量の増加を抑制可能な最適化装置、最適化装置の制御方法及び最適化装置の制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
1つの実施態様では、組合せ最適化問題を表す第1の評価関数に含まれる複数の状態変数のそれぞれの間の相互作用の大きさを表す重み係数を保持する記憶部と、前記第1の評価関数に基づいて、前記組合せ最適化問題の局所解を算出する局所解算出部と、前記複数の状態変数のうち前記局所解における値が所定値である第1の状態変数と、前記重み係数と、入力される選択領域情報とに基づいて、前記複数の状態変数から部分問題の対象となる状態変数群を選択する選択部と、選択された前記状態変数群についての前記部分問題を表す第2の評価関数について、基底状態を探索する探索部と、前記基底状態の探索によって得られた部分解に基づいて前記局所解を更新することで、全体解を生成する全体解生成部と、を有する最適化装置が提供される。
【0010】
また、1つの実施態様では、最適化装置の制御方法が提供される。
また、1つの実施態様では、最適化装置の制御プログラムが提供される。
【発明の効果】
【0011】
1つの側面では、組合せ最適化問題を分割して計算する際の計算量の増加を抑制できる。
【図面の簡単な説明】
【0012】
【
図1】第1の実施の形態の最適化装置の一例を示す図である。
【
図2】第1の実施の形態の最適化装置の制御方法の一例の流れを示すフローチャートである。
【
図3】第2の実施の形態の最適化装置のハードウェアの一例を示す図である。
【
図4】第2の実施の形態の最適化装置のハードウェアの他の例を示す図である。
【
図5】第2の実施の形態の最適化装置の機能例を示すブロック図である。
【
図6】組合せ最適化手法を利用したアミノ酸の安定構造の決定過程の一例を示す図である。
【
図7】ダイヤモンド・エンコーディング法の例を示す図である。
【
図8】各シェルの格子点に割当てられた状態変数の一例を示す図である。
【
図9】各シェルにおけるアミノ酸の配置可能位置の一例を示す図である。
【
図10】アミノ酸が配置されている格子点の例を示す図である。
【
図11】部分問題の作成処理の一例の流れを示すフローチャートである。
【
図12】保持される識別番号jの一例を示す図である。
【
図13】部分問題の作成処理の他の例の流れを示すフローチャートである。
【
図14】問題の分割の有無による計算量の比較例を示す図である。
【
図15】第3の実施の形態における部分問題の作成処理の一例の流れを示すフローチャートである。
【
図16】あるシェルにおいて選択候補となる状態変数の一例を示す図である。
【発明を実施するための形態】
【0013】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態の最適化装置の一例を示す図である。
【0014】
第1の実施の形態の最適化装置10は、記憶部11、局所解算出部12、選択部13、探索部14、全体解生成部15を有する。
記憶部11は、組合せ最適化問題を表す評価関数に含まれる複数の状態変数のそれぞれの間の相互作用の大きさを表す重み係数を保持する。記憶部11は、たとえば、RAM(Random Access Memory)などの揮発性の記憶装置、または、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性の記憶装置である。
【0015】
計算対象の組合せ最適化問題としては、たとえば、複数のアミノ酸(アミノ酸残基)による直鎖構造の安定構造を探索する問題、巡回セールスマン問題などである。これらの問題は、より実用的な問題とした場合、状態変数の数が極めて大きくなることが知られており、ハードウェア量やソフトウェアにて計算する場合のメモリサイズなどの制約から、部分問題に分割して計算することが好ましい。ただ、計算対象の問題としては、これらの問題に限定されるものではない。
【0016】
重み係数を用いたイジング型の評価関数(エネルギー関数とも呼ばれる)E(x)は、たとえば、以下の式(1)で定義される。
【0017】
【0018】
右辺の1項目は、評価関数に含まれる全状態変数から選択可能な2つの状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値(0または1)と重み係数との積を積算したものである。xiは、識別番号がiの状態変数、xjは、識別番号がjのビットの値を表す状態変数であり、Wijは、xiとxjの間の相互作用の大きさを示す重み係数である。なお、Wii=0である。また、Wij=Wjiであることが多い(つまり、重み係数による係数行列は対称行列である場合が多い)。
【0019】
たとえば、
図1に示すように、状態変数の総数がn個の場合、記憶部11は、n×n個の重み係数を保持している。各重み係数の値は、計算対象の組合せ最適化問題の特徴を反映したものとなっている。
【0020】
n×n個の重み係数は、最適化装置10の外部から取得してもよいし、最適化装置10が、入力された問題データに基づいて算出するようにしてもよい。
局所解算出部12は、式(1)に示したような評価関数に基づいて、組合せ最適化問題の局所解を算出する。局所解算出部12は、たとえば、タブーサーチ法などによって、局所解を算出する。局所解は、後述する探索部14による探索処理のための初期解として用いられるため、最適解でなくてもよい。なお、局所解算出部12は、後述する全体解生成部15が生成した全体解を初期解として局所解を算出してもよい。
【0021】
選択部13は、複数の状態変数のうち局所解における値が所定値である状態変数と、重み係数と、入力される選択領域情報とに基づいて、複数の状態変数から部分問題の対象となる状態変数群を選択する。
【0022】
たとえば、式(1)において、値が1である状態変数を第1の状態変数、第1の状態変数と相互作用のある状態変数を第2の状態変数とすると、第2の状態変数の値に応じて、評価関数の値が変化する可能性がある。つまり、評価関数の値が小さくなるように(より基底状態に近づくように)、第2の状態変数の値が更新される可能性がある。そこで、選択部13は、重み係数に基づいて、第2の状態変数を状態変数群に含む候補として選択する。
【0023】
ただ、重み係数の値は、後述する評価関数の制約項を表現するものである場合、非常に大きな値になる可能性がある。そのような重み係数によって第1の状態変数との間の相互作用の大きさが示されている第2の状態変数については、値が1であると制約項が表す制約条件を満たさなくなる可能性があるため、選択部13は、状態変数群には含めない。このような機能を実現するために、状態変数群を選択するために用いる重み係数の値の範囲などが、入力される選択領域情報に含まれる。
【0024】
また、状態変数群に含まれる状態変数の数を増やすために、たとえば、選択部13は、第1の状態変数に対して識別番号が近い所定数の状態変数に対しても、同様に重み係数に基づいて、状態変数群に含める第2の状態変数を選択する処理を行ってもよい。上記所定数についても、たとえば、選択領域情報に含まれる。上記所定数は、たとえば、探索部14が処理可能な演算ビット数に応じて決定される。演算ビット数についても、選択領域情報に含まれていてもよい。探索部14による処理の効率化のために、探索部14が処理可能な演算ビット数と同じ数の状態変数が、状態変数群に含まれることが望ましい。
【0025】
なお、選択部13は、後述する全体解生成部15が生成した全体解における値が所定値である状態変数と、重み係数と選択領域情報とに基づいて、選択する状態変数群を更新してもよい。
【0026】
探索部14は、選択部13によって選択された状態変数群についての部分問題を表す評価関数について、基底状態を探索する。探索部14は、シミュレーテッド・アニーリング法やレプリカ交換法などのマルコフ連鎖モンテカルロ法により基底状態の探索を行ってもよいし、量子アニーリング法により基底状態の探索を行ってもよい。部分問題を表す評価関数は、式(1)に含まれる状態変数を、選択された状態変数群としたものである。
【0027】
なお、基底状態の探索によって得られる部分問題の解(部分解)である状態(選択された状態変数群の値)は、たとえば、所定回数更新された状態のうち、部分問題を表す評価関数の値が最小となる状態である。
【0028】
全体解生成部15は、部分解に基づいて局所解を更新することで全体解を生成する。たとえば、全体解生成部15は、部分解が示す選択された状態変数群の値を、局所解における対応する状態変数群の値と入れ替えることで全体解を生成する。
【0029】
局所解算出部12、選択部13、探索部14及び全体解生成部15は、たとえば、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサが実行するプログラムモジュールを用いて実装できる。なお、探索部14は、デジタル回路を用いてシミュレーテッド・アニーリング法やレプリカ交換法などを実行するハードウェアであってもよいし、量子アニーリングを行うハードウェアであってもよい。
【0030】
以下第1の実施の形態の最適化装置10の動作(最適化装置10の制御方法)の例を説明する。
図2は、第1の実施の形態の最適化装置の制御方法の一例の流れを示すフローチャートである。
【0031】
最適化装置10の図示しない入力部は、前述したような重み係数や選択領域情報を取得する(ステップS1)。重み係数は記憶部11に記憶される(選択領域情報も記憶部11に記憶されてもよい)。局所解算出部12は、たとえば、式(1)に示したような評価関数に基づいて、組合せ最適化問題の局所解を算出する(ステップS2)。
図1には、局所解の一例が示されている。
図1の例では、n個の状態変数(x
1~x
n)のうち、x
iの値が1となっている。
【0032】
選択部13は、複数の状態変数のうち局所解における値が所定値である状態変数と、重み係数と、入力される選択領域情報とに基づいて、複数の状態変数から部分問題の対象となる状態変数群を選択する(ステップS3)。
図1には、値が1である状態変数(前述の第1の状態変数)と、重み係数と、入力される選択領域情報とに基づいて状態変数群が選択される例が示されている。たとえば、x
iの値が1であり、W
ijの値が0ではない(かつ、選択領域情報で表される所定の範囲内の値である)場合、x
jが優先的に、状態変数群の1つとして選択される。さらに、選択部13は、x
iに対して識別番号が近い所定数の状態変数に対しても、同様に重み係数に基づいて、状態変数群に含める状態変数を選択する処理を行う。
【0033】
その後、探索部14は、選択部13によって選択された状態変数群についての部分問題を表す評価関数について、基底状態を探索することによって部分解を計算する(ステップS4)。そして、全体解生成部15は、部分解に基づいて局所解を更新することで全体解を生成する(ステップS5)。
【0034】
その後、たとえば、全体解生成部15は、ステップS3~S5の処理の反復回数(サブループ反復回数)が所定数(r1)であるか否かを判定する(ステップS6)。サブループ反復回数=r1でないと判定された場合には、ステップS3からの処理が繰り返される。なお、サブループの2回目以降の処理において、選択部13は、全体解生成部15が生成した全体解に基づいて、部分問題の対象となる状態変数群を更新する。
【0035】
全体解生成部15は、サブループ反復回数=r1であると判定した場合、ステップS2~S6の処理の反復回数(メインループ反復回数)が所定数(r2)であるか否かを判定する(ステップS7)。メインループ反復回数=r2でないと判定された場合には、ステップS2からの処理が繰り返される。なお、メインループの2回目以降の処理において、局所解算出部12は、全体解生成部15が生成した全体解を初期解として、局所解を算出する。
【0036】
全体解生成部15は、メインループ反復回数=r2であると判定した場合、たとえば、これまでに得られた全体解のうち、評価関数の値が最小となる全体解を、最良の全体解として出力する(ステップS8)。
【0037】
なお、処理の順序は、
図2の例に限定されるわけではなく、適宜入れ替えてもよい。
以上のように、最適化装置10は、組合せ最適化問題を部分問題に分割する際、局所解において値が所定値である状態変数と重み係数に基づき部分問題の対象となる状態変数群を選択することで、組合せ最適化問題の特徴を反映した適切な分割が可能になる。前述のように一般的に計算対象の組合せ最適化問題を分割して計算する場合、部分問題の解に基づいて全体の解を求める計算処理などの影響により、問題全体の解を得るまでの計算量が分割をしないで計算する場合よりも増加する。部分問題の対象となる状態変数群を、単に乱数に基づいてランダムに選択した場合、部分問題に組合せ最適化問題の特徴が反映されにくい。そのため、そのような部分問題を用いて計算を行う場合、精度のよい全体解を得るため多くの反復計算を要し、計算量がより増加する可能性がある。一方、最適化装置10では、上記のように組合せ最適化問題の特徴を反映した適切な分割が可能になるため、精度のよい全体解を得るまでの計算量の増加を抑制できる。
【0038】
(第2の実施の形態)
図3は、第2の実施の形態の最適化装置のハードウェアの一例を示す図である。
第2の実施の形態の最適化装置20は、たとえばコンピュータであり、CPU21、RAM22、HDD23、画像信号処理部24、入力信号処理部25、媒体リーダ26及び通信インタフェース27を有する。上記ユニットは、バスに接続されている。
【0039】
CPU21は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU21は、HDD23に記憶されたプログラムやデータの少なくとも一部をRAM22にロードし、プログラムを実行する。なお、CPU21は複数のプロセッサコアを備えてもよく、最適化装置20は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
【0040】
RAM22は、CPU21が実行するプログラムやCPU21が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、最適化装置20は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0041】
HDD23は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。プログラムには、たとえば、最適化装置20の制御プログラムが含まれる。なお、最適化装置20は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0042】
画像信号処理部24は、CPU21からの命令にしたがって、最適化装置20に接続されたディスプレイ24aに画像を出力する。ディスプレイ24aとしては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
【0043】
入力信号処理部25は、最適化装置20に接続された入力デバイス25aから入力信号を取得し、CPU21に出力する。入力デバイス25aとしては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、最適化装置20に、複数の種類の入力デバイスが接続されていてもよい。
【0044】
媒体リーダ26は、記録媒体26aに記録されたプログラムやデータを読み取る読み取り装置である。記録媒体26aとして、たとえば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0045】
媒体リーダ26は、たとえば、記録媒体26aから読み取ったプログラムやデータを、RAM22やHDD23などの他の記録媒体にコピーする。読み取られたプログラムは、たとえば、CPU21によって実行される。なお、記録媒体26aは、可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体26aやHDD23を、コンピュータ読み取り可能な記録媒体ということがある。
【0046】
通信インタフェース27は、ネットワーク27aに接続され、ネットワーク27aを介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース27は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【0047】
図4は、第2の実施の形態の最適化装置のハードウェアの他の例を示す図である。
図4において、
図3に示した要素と同じ要素については同一符号が付されている。
最適化装置30は、情報処理装置20aとイジングマシン28aを有する。情報処理装置20aは、インタフェース28を有する。インタフェース28は、イジングマシン28aに接続され、CPU21とイジングマシン28aとの間でデータの送受信を行う。インタフェース28は、たとえば、PCI(Peripheral Component Interconnect) Expressなどの有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
【0048】
イジングマシン28aは、デジタル回路を用いてシミュレーテッド・アニーリング法やレプリカ交換法などを実行するハードウェアであってもよいし、量子アニーリングを行うハードウェアであってもよい。
【0049】
次に、最適化装置20,30の機能及び処理手順を説明する。
図5は、第2の実施の形態の最適化装置の機能例を示すブロック図である。
なお、以下では、
図3に示した最適化装置20の機能例を示すが、
図4に示した最適化装置30についても同様の機能を有する。
【0050】
最適化装置20は、入力部31、記憶部32、局所解算出部33、選択部34、探索部35、全体解生成部36、出力部37を有する。入力部31、局所解算出部33、選択部34、探索部35、全体解生成部36、出力部37は、たとえば、CPU21が実行するプログラムモジュールを用いて実装できる。なお、
図4に示した最適化装置30が用いられる場合、イジングマシン28aが探索部35(またはその一部)として機能する。記憶部32は、たとえば、RAM22またはHDD23に確保した記憶領域を用いて実装できる。
【0051】
入力部31は、たとえば、入力デバイス25aによって入力される選択領域情報や、たとえば、ネットワーク27aを介して供給される重み係数を取得する。なお、最適化装置20が、入力された問題データに基づいて重み係数を算出するようにしてもよい。選択領域情報や重み係数は、記憶部32に記憶される。
【0052】
局所解算出部33は、式(1)に示したような評価関数に基づいて、記憶部32に記憶されている重み係数を用いて、たとえば、タブーサーチ法などによって、組合せ最適化問題の局所解を算出する。なお、局所解算出部33は、全体解生成部36が生成した全体解を初期解として局所解を算出してもよい。
【0053】
選択部34は、複数の状態変数のうち局所解における値が所定値(以下では1であるものとする)である状態変数と、重み係数と、入力される選択領域情報とに基づいて、複数の状態変数から部分問題の対象となる状態変数群を選択する。なお、選択部34は、局所解の代りに、全体解生成部36が生成した全体解に基づいて、部分問題の対象となる状態変数群を更新してもよい。
【0054】
探索部35は、選択部34によって選択された状態変数群についての部分問題を表す評価関数について、基底状態を探索する。探索部35は、シミュレーテッド・アニーリング法やレプリカ交換法などのマルコフ連鎖モンテカルロ法により基底状態の探索を行ってもよいし、量子アニーリング法により基底状態の探索を行ってもよい。
【0055】
全体解生成部36は、部分解に基づいて局所解を更新することで全体解を生成する。
出力部37は、これまで得られた全体解のうち、評価関数の値が最小となる全体解を、最良の解として、たとえば、ディスプレイ24aに出力し表示させる。出力部37は、最良の解を、記憶部32に記憶させてもよい。
【0056】
次に、第2の実施の形態の最適化装置20,30の動作(最適化装置20,30の制御方法)の例を説明する。
なお、以下では、計算対象の組合せ最適化問題の一例として、創薬分野で重要になるアミノ酸の安定構造探索を挙げて説明を行う。
【0057】
図6は、組合せ最適化手法を利用したアミノ酸の安定構造の決定過程の一例を示す図である。
図6に示すような複数のアミノ酸(アミノ酸残基)が結合された直鎖構造において、以下では、各アミノ酸を1つの粒子として仮定する。
図6では、8つのアミノ酸による直鎖構造における各アミノ酸が、粒子で表された例が示されている。8つの粒子において“D”はアスパラギン酸を表し、“A”はアラニンを表し、“Y”はチロシンを表し、“Q”はグルタミンを表し、“W”はトリプトファンを表し、“L”はロイシンを表し、“K”はリシンを表す。
【0058】
アミノ酸の立体構造は、3次元格子空間の格子点にアミノ酸を配置するLP(Lattice Protein)モデルを用いアミノ酸の配置位置をダイヤモンド・エンコーディング法にしたがって記述することで、イジングモデルに置き換えられる。
【0059】
図6には、イジングモデルを用いた最適化処理によって得られる安定構造の例が3次元格子空間上で示されている。最適化処理によって得られた解(安定構造)が、分子動力学計算などの詳細構造計算の際の初期解として使用される。このように、最適化処理を用いることで、アミノ酸の安定構造決定の際の総コストを低減できる。
【0060】
ダイヤモンド・エンコーディング法は、R. Babbush, and et. al., “Construction of Energy Functions for Lattice Heteropolymer Models: A Case Study in Constraint Satisfaction Programming and Adiabatic Quantum Optimization”, Advances in Chemical Physics, 155, 201-244, 13 June 2013に記載されているが、以下概略を説明する。
【0061】
図7は、ダイヤモンド・エンコーディング法の例を示す図である。
図7の例では、アミノ酸40,41,42,43,44がそれぞれ粒子で表されている。ダイヤモンド・エンコーディング法は、直鎖構造における各アミノ酸がどの位置にあるのかをダイヤモンド格子上に埋め込んでいく手法であり、3次元の構造体が表現できる。
図7では、説明を簡略化するために2次元の構造体を表現する例が示されている。各格子点は複数のアミノ酸の何れかが配置される候補である。直鎖構造の先頭のアミノ酸40は、ダイヤモンド格子上の中心の格子点からなるシェル50に配置され、2番目のアミノ酸41は、シェル50に隣接するシェル51に属す格子点の何れかに配置される。3番目のアミノ酸42は、シェル51に隣接するシェル52に属す格子点の何れかに配置され、4番目のアミノ酸43は、シェル52に隣接するシェル53に属す格子点の何れかに配置される。5番目のアミノ酸44についても、シェル53に隣接する図示しないシェルに属す格子点の何れかに配置される。
【0062】
アミノ酸は、1つのシェルに1つだけ配置されるという制約がある。つまり、同一シェルにおいて、2以上のアミノ酸の配置が禁止されている。なお、格子点の中には、複数のシェルにまたがって属すものがある。そのような格子点には、1つのシェルにおいてアミノ酸が配置される場合、他のシェルにおいてはアミノ酸が配置されない。
【0063】
LPモデルをイジングモデルで表すため、各シェルに属す格子点には、評価関数に含まれる状態変数が割当てられる。
図8は、各シェルの格子点に割当てられた状態変数の一例を示す図である。
【0064】
シェル50に属す格子点には、x1が割当てられ、シェル51に属す4つの格子点には、x2~x5が割当てられる。また、シェル52に属す8つの格子点には、x6~x13が割当てられ、シェル53の16個の格子点には、x14~x29が割当てられる。
【0065】
各シェルにおいて、アミノ酸が配置された格子点に割当てられた状態変数の値は、1となる。
図9は、各シェルにおけるアミノ酸の配置可能位置の一例を示す図である。
【0066】
シェル50に属す格子点にアミノ酸が配置され(x1=1)、W12,W13,W14,W15≠0である場合、シェル51に属す各格子点にアミノ酸が配置可能である。シェル51において、x2が割当てられた格子点にアミノ酸が配置され(x2=1)、W26,W27,W2 13≠0である場合、シェル52に属し、x6,x7,x13が割当てられた格子点にアミノ酸が配置可能である。シェル52において、x6が割当てられた格子点にアミノ酸が配置され(x6=1)、W6 14,W6 18,W6 19,W6 29≠0である場合、シェル53に属し、x14,x18,x19,x29が割当てられた格子点にアミノ酸が配置可能である。
【0067】
ダイヤモンド・エンコーディング法を用いて得られるイジングモデルの評価関数は、E(x)=Hone+Hconn+Holap+Hpair、と表せる。
Honeは、1つのシェルに存在するアミノ酸が1つであるという制約条件を満たさない場合に発生する制約項であり、以下の式(2)で表せる。
【0068】
【0069】
式(2)において、Nは、直鎖構造におけるアミノ酸の数(シェルの数に相当)を示し、xa,xbは、i番目のシェルに属す格子点集合Qiに含まれる2つの格子点に割当てられた状態変数である。λoneは、所定の大きさの係数である。λoneを大きく設定することで、1つのシェルにアミノ酸が2つ以上存在した場合のHoneが大きくなる(制約が強くなる)。
【0070】
Hconnは、全てのアミノ酸はそれぞれ繋がっているという制約条件を満たさない場合に発生する制約項であり、以下の式(3)で表せる。
【0071】
【0072】
式(3)において、xdは、i番目のシェルに属す格子点集合Qiに含まれる格子点に割当てられた状態変数である。xuは、i+1番目のシェルに属す格子点集合Qi+1と、xdが割当てられた格子点に配置されたアミノ酸に接続するアミノ酸が配置可能な格子点集合η(xd)の共通部分に含まれる格子点に割当てられた状態変数である。λconnは、所定の大きさの係数である。λconnを大きく設定することで、全てのアミノ酸はそれぞれ繋がっているという制約条件を満たさない場合のHconnが大きくなる(制約が強くなる)。
【0073】
Holapは、複数のアミノ酸が、異なる格子点に配置されるという制約条件を満たさない場合に発生する制約項であり、以下の式(4)で表せる。
【0074】
【0075】
式(4)において、νは全格子点集合Vに含まれる格子点を表し、xa,xb∈θ(ν)は、同じ格子点νに割当てられた2つの状態変数xa,xbを表している。λolapは、所定の大きさの係数である。λolapを大きく設定することで、複数のアミノ酸が、異なる格子点に配置されるという制約条件を満たさない場合のHolapが大きくなる(制約が強くなる)。
【0076】
Hpairは、アミノ酸同士の相互作用によって決まる最小化したいコスト項であり、以下の式(5)で表せる。
【0077】
【0078】
式(5)において、Pω(xa)(xb)は、xa=xb=1のときに生じる相互作用の大きさを表す。Pω(xa)(xb)が正の場合、xaとxbが割当てられた2つの格子点に配置されるアミノ酸間に斥力が働いていることを表し、Pω(xa)(xb)が負の場合、xaとxbが割当てられた2つの格子点に配置されるアミノ酸間に引力が働いていることを表す。
【0079】
E(x)=Hone+Hconn+Holap+Hpairは、式(1)に示したような、重み係数を用いた表現に変形することができる。上記の各制約項などは、重み係数の値により表現される。他の重み係数よりも値が著しく大きい重み係数は、制約項が反映されている。
【0080】
LPモデルに対応した部分問題の作成のための状態変数の選択指針は、以下の通りである。
単に局所解に基づいて、アミノ酸が配置されている格子点(割当てられている状態変数の値が1である格子点)だけを選択して部分問題を作成した場合、その部分問題に対して基底状態の探索を行っても、直鎖構造自体が変わらない可能性がある。そのため、現在アミノ酸が配置されていないが、配置されることで現在の直鎖構造が変化する格子点に割当てられた状態変数が優先的に選択されるようにする。これは、ある格子点に割当てられた状態変数(xi)値が1のとき、Wij≠0である、識別番号=jの状態変数(xj)を優先的に選択することで実現できる。
【0081】
図10は、アミノ酸が配置されている格子点の例を示す図である。
たとえば、アミノ酸が配置されている格子点60,61,62に割当てられた状態変数だけが選択された場合、基底状態の探索により、格子点60~62の何れかに割当てられた状態変数の値が0に変わる(アミノ酸が配置されなくなる)可能性がある。しかし、立体構造自体は変わらない。
【0082】
一方、アミノ酸が配置されている格子点63とアミノ酸が配置されていない格子点64に割当てられた状態変数間に相互作用がある場合(重み係数が非0)、格子点64に割当てられた状態変数を選択することで、探索により立体構造が変化する可能性がある。
【0083】
図5に示した選択部34は、複数の状態変数のうち局所解における値が1である状態変数と重み係数に基づいて、上記のように、複数の状態変数から部分問題の対象となる状態変数群を選択する。なお、選択部34は、選択領域情報に基づいて、状態変数群に含まれる変数の数を制限する。この点については、後述する。
【0084】
以下、第2の実施の形態の最適化装置20,30の制御方法の例を説明する。全体の処理の流れは、
図2に示した処理の流れと同じである。以下では、第2の実施の形態の最適化装置20,30による状態変数群の選択処理(部分問題の作成処理)(
図2のステップS3の処理に相当する)の例を説明する。
【0085】
図11は、部分問題の作成処理の一例の流れを示すフローチャートである。
選択部34は、局所解(または全体解)から、値が1の状態変数x
iの識別番号iを1つ抽出し(ステップS10)、ある変数xをx=i-dと設定する(ステップS11)。dは、選択領域情報に含まれる値であり、状態変数群に含まれる状態変数の数を増やすために設定される値である。dは、たとえば、探索部35が処理可能な演算ビット数に応じて決定される。
【0086】
ステップS11の処理後、選択部34は、x≦i+dであるか否かを判定する(ステップS12)。x≦i+dであると判定した場合、選択部34は、Wxj≠0のうち、値が所定範囲内であるWxjの識別番号jを、記憶部32に保持させる(ステップS13)。上記所定範囲は、たとえば、各格子点にアミノ酸が配置された際にその相互作用の影響がおよぶ格子点に割当てられた状態変数のみが選ばれるように決定される。
【0087】
たとえば、所定範囲は、外部より設定可能な任意のパラメータであるA~Dを用いて以下のような条件の何れかを満たすように決定される。
条件1:A≦Wxj≦Bかつ、Wxj≠0かつA=B
条件2:A≦Wxj≦Bかつ、Wxj≠0かつA≠B
条件3:(A≦Wxj≦BまたはC≦Wxj≦D)かつWxj≠0かつA≠B≠C≠D
条件4:(A≦WxjまたはWxj≦B)かつWxj≠0かつB≦A
たとえば、各アミノ酸間の相互作用によって決定される|Wxj|の最大値をJ0とすると、-J0≦Wxj≦J0と設定される(上記の条件2でA=-J0、B=J0の場合に相当する)。なお、重み係数ごとに、異なる所定範囲が設定されていてもよい。このような所定範囲の情報は、選択領域情報に含まれる。
【0088】
ステップS13の処理後、選択部34は、x=x+1とし(ステップS14)、ステップS12からの処理を繰り返す。
図12は、保持される識別番号jの一例を示す図である。
【0089】
図12に示されているような重み係数による係数行列において、x
i=1の場合、W
i1~W
inのうち、値が0ではなく、-J
0以上、J
0以下である重み係数の2つの識別番号のうち、i以外の識別番号(
図12の例ではj)が保持される。x
i-d~x
i+dについても値が0か1かによらず、同様の処理が行われる。
【0090】
選択部34は、ステップS12の処理で、x≦i+dではないと判定した場合、値が1の状態変数xiの識別番号iを全て抽出したか否かを判定する(ステップS15)。全ての識別番号iを抽出していないと判定した場合、選択部34は、ステップS10からの処理を繰り返す。
【0091】
選択部34は、値が1の状態変数xiの識別番号iを全て抽出したと判定した場合、保持している識別番号jに基づいて、部分問題の対象となる状態変数群を決定し(ステップS16)、部分問題の作成を終了する。
【0092】
たとえば、選択部34は、保持された識別番号jの状態変数の全てを選択して状態変数群に含める。さらに、選択部34は、保持されていない識別番号の状態変数を、識別番号の大きい順(または小さい順)に、探索部35が処理可能な演算ビット数に達するまで状態変数群に追加していく。なお、選択部34は、保持されていない識別番号の状態変数を、探索部35が処理可能な演算ビット数に達するまで、乱数に基づいてランダムに状態変数群に追加していってもよい。
【0093】
また、選択部34は、たとえば、探索部35が処理可能な演算ビット数が少ない場合、保持されていない識別番号の状態変数を、部分問題の対象となる状態変数群に含めなくてもよい。その場合、選択部34は、保持された識別番号jの状態変数の中から、識別番号の大きい順、小さい順、またはランダムに、探索部35が処理可能な演算ビット数に達するまで状態変数を選択して状態変数群に含めればよい。
【0094】
また、選択部34は、探索部35が処理可能な演算ビット数と、保持された識別番号jの数との比較結果に基づいて、状態変数群に含める状態変数を決定してもよい。
図13は、部分問題の作成処理の他の例の流れを示すフローチャートである。
【0095】
ステップS15までの処理は、
図11に示した処理と同じである。ステップS15の処理後、選択部34は、保持した識別番号jの数が、探索部35が処理可能な演算ビット数(bit
max)以上であるか否かを判定する(ステップS16a)。識別番号jの数が、bit
max以上であると判定した場合、選択部34は、bit
max分の識別番号jの状態変数を、識別番号の大きい順、小さい順またはランダムに選択して状態変数群に含め(ステップS16b)、部分問題の作成を終了する。識別番号jの数が、bit
max以上ではないと判定した場合、選択部34は、識別番号jの状態変数の全ての他、保持されていない識別番号(非j)の状態変数を、bit
max分まで状態変数群に追加する。非jの状態変数を状態変数群に追加していく方法として、前述のように、識別番号の大きい順、小さい順、またはランダムに追加する方法がある。ステップS16cの処理後、選択部34は、部分問題の作成を終了する。
【0096】
(計算例1)
以下、基底状態(最適解)のときの評価関数の値(最低エネルギー)が知られている、20個のアミノ酸(アミノ酸残基数=20)による直鎖構造の安定構造決定問題の計算結果を示す。問題の規模(問題のビットサイズ)は、7.8kビットである。最低エネルギーは、-5823である。
【0097】
使用したハードウェアは、デジタル回路を用いてシミュレーテッド・アニーリング法による基底状態の探索を行うイジングマシン28a(1kビット規模)を含む最適化装置30(
図4)である。
【0098】
図2に示したメインループの反復回数は3回、サブループの反復回数は2回、サブループ1回当たりの、イジングマシン28aによる状態更新処理の反復回数は10
6、選択領域情報に含まれる前述のdは1とした。また、部分問題の対象となる状態変数群を選択する際に用いられる重み係数の値の範囲は、たとえば、前述の条件1~条件4の何れかを満たすとともに、部分問題の対象となる状態変数群が1kビット以下となるようにした。
【0099】
部分問題の対象となる状態変数群を選択するときに用いる乱数のシード値をそれぞれ変えた100回の試行について、正答率を評価した。
比較のために部分問題の対象となる全ての状態変数を乱数に基づいてランダムに選択した場合、解が局所解に落ち込んでしまい、100回の試行に対して得られた最低の評価関数の値は、-5624であった。つまり正答率は0であった。なお、計算時間は、1回の試行あたり、26.4秒であった。
【0100】
これに対して、上記のような処理により選択部34が部分問題を作成した場合、100回の試行に対して86回、評価関数の値が-5823となり最適解が得られた。つまり、正答率は0.86であった。なお、計算時間は、1回の試行あたり、26.5秒であった。
【0101】
(計算例2)
次に、最低エネルギーが知られている、48個のアミノ酸(アミノ酸残基数=48)による直鎖構造の安定構造決定問題の計算結果を示す。問題の規模(問題のビットサイズ)は、31kビットである。最低エネルギーは、-2615である。
【0102】
使用したハードウェアは、デジタル回路を用いてシミュレーテッド・アニーリング法による基底状態の探索を行うイジングマシン28a(8kビット規模)を含む最適化装置30(
図4)である。
【0103】
図2に示したメインループの反復回数は3回、サブループの反復回数は2回、サブループ1回当たりの、イジングマシン28aによる状態更新処理の反復回数は2×10
7、選択領域情報に含まれる前述のdは1とした。また、部分問題の対象となる状態変数群を選択する際に用いられる重み係数の値の範囲は、たとえば、前述の条件1~条件4の何れかを満たすとともに、部分問題の対象となる状態変数群は8kビット以下となるようにした。
【0104】
部分問題の対象となる状態変数群を選択するときに用いる乱数のシード値をそれぞれ変えた100回の試行について、正答率を評価した。
選択部34が部分問題を作成した場合、100回の試行に対して99回、評価関数の値が-2615となり最適解が得られた。つまり、正答率は0.99であった。なお、計算時間は、1回の試行あたり、56.4秒であった。
【0105】
図14は、問題の分割の有無による計算量の比較例を示す図である。
図14では、上記の2つの問題に対して、最適化装置30が部分問題を作成して問題を解いた場合と、問題を分割せずに直接シミュレータが問題を解いた場合についての計算量の比較結果が示されている。“分割あり(Hardware)”が、最適化装置30が部分問題を作成して問題を解いた場合を示し、“分割なし(Simulation)”が、問題を分割せずに直接シミュレータが問題を解いた場合を示す。
【0106】
問題ビットサイズは、前述の2つの問題の規模を示している。最適化計算ビットサイズは、最適化装置30が部分問題を作成して問題を解く場合、イジングマシン28aが処理可能な演算ビット数であり、問題を分割せずに直接シミュレータが問題を解く場合、問題ビットサイズと等しい。
【0107】
Hardware呼び出し回数は、最適化装置30が部分問題を作成して問題を解く場合、イジングマシン28aが使用された回数(ステップS4の処理回数が行われた回数)である。問題ビットサイズが3.10E+04(31k)ビットの場合、Hardware呼び出し回数は5回、問題ビットサイズが7.80E+03(7.8k)ビットの場合、Hardware呼び出し回数は6回である。シミュレータが問題を解く場合のHardware呼び出し回数は1回となっている。Hardware呼び出し1回当たりの、イジングマシン28aによる探索処理の反復回数は、問題ビットサイズが3.10E+04ビットの場合、2.00E+07、問題ビットサイズが7.80E+03ビットの場合、1.00E+06である。シミュレータが問題を解く場合の反復回数は、問題ビットサイズが3.10E+04ビットの場合、7.42E+06、問題ビットサイズが7.80E+03ビットの場合、2.33E+06である。
【0108】
正答率は、最適化装置30が部分問題を作成して問題を解いた場合では、3.10E+04ビットの問題ビットサイズの問題において0.99、7.80E+03の問題ビットサイズの問題において0.86であった。シミュレータが問題を解いたときの正答率は、2つの規模の問題において共に0.99であった。
【0109】
総反復回数は、最適化装置30が部分問題を作成して問題を解いた場合では、3.10E+04ビットの問題ビットサイズの問題において1.00E+08、7.80E+03の問題ビットサイズの問題において6.00E+06であった。シミュレータが問題を解いたときの総反復回数は、3.10E+04ビットの問題ビットサイズの問題において7.42E+06、7.80E+03の問題ビットサイズの問題において2.33E+06であった。
【0110】
ITS(Iteration To Solution)(99%の確率で正解を得るまでに必要となる反復回数)は、最適化装置30が部分問題を作成して7.80E+03の問題ビットサイズの問題を解いた場合以外では、総反復回数と同じである。計算量(計算コスト)を、ITS×最適化計算ビットサイズで表したとき、規模の大きい問題については、分割しないで解いた場合に比べて、8.00E+11/2.30E+11、つまり3.5倍程度の計算量の増加で抑えられることがわかった。一方、規模の小さい問題については、分割しないで解いた場合に比べて、1.41E+10/1.82E+10、つまり0.77倍程度となり、分割しない場合よりも計算量が減ることがわかった。
【0111】
なお、上記の説明では、計算対象の組合せ最適化問題として、複数のアミノ酸による直鎖構造の安定構造を決定する問題を例にして説明したが、巡回セールスマン問題など、他の組合せ最適化問題についても、同様に部分問題を作成して解くことができる。巡回セールスマン問題を解く場合、各状態変数は、各格子点にアミノ酸が配置されているか否かを示す代りに、ある時刻にある都市にセールスマンがいるか否かを示す。ある時刻にある都市にセールスマンがいる場合、その時刻と都市に対応した状態変数の値が、たとえば、1になる。部分問題は、
図11や
図13に示した処理と同様の処理によって作成できる。
【0112】
(第3の実施の形態)
以下では、
図7~
図9に示したようなシェル構造を考慮にいれた部分問題作成用の状態変数の選択方法を説明する。
【0113】
選択部34は、同一シェルに属す格子点に割当てられた状態変数の中から、状態変数群を選択してもよい。その場合、選択部34は、値が1であるxiが属すシェルにおける他の状態変数の中で、Wij≠0で、値が所定範囲内のWijの識別番号jに対応するxjを選択する。
【0114】
ただ、識別番号iが、同一シェル内の状態変数の識別番号の最大値の近傍または最小値の近傍である場合、i±dの範囲で、選択する状態変数を決めると、他のシェルの状態変数を選択してしまい制約条件違反が発生する可能性がある。
【0115】
たとえば、
図8に示したようなシェル52においてx
6=1の場合、d=2であるとすると、i-d=6-2=4となり、シェル51の状態変数であるx
4がx
6の代りに1となる可能性がある。そこで、選択部34は、たとえば、以下のような処理によって、状態変数を選択することで部分問題を作成する。
【0116】
図15は、第3の実施の形態における部分問題の作成処理の一例の流れを示すフローチャートである。
まず、選択部34は、局所解(または全体解)から、値が1の状態変数であるx
iの識別番号iを1つ抽出する(ステップS20)。そして、選択部34は、保持した識別番号jの数が、直鎖構造に含まれるアミノ酸の数(アミノ酸残基数)よりも少ないか否かを判定する(ステップS21)。
【0117】
識別番号jの数が、アミノ酸残基数よりも少ないと判定した場合、選択部34は、xiが属すシェルの番号kを算出する(ステップS22)。そして、選択部34は、番号kのシェルに属す状態変数の識別番号を昇順にK0,K1,…,Kn-1と定義する(ステップS23)。nは番号kのシェルに属す状態変数の個数である。
【0118】
たとえば、
図8に示したシェル52の例では、n=8であり、K
0=6、K
1=7、K
2=8、K
3=9、K
4=10、K
5=11、K
6=12、K
7=13である。
選択部34は、i=K
mとして、状態変数の選択範囲を決める変数をd(選択領域情報に含まれる)とすると、K
m-d,K
m-d+1,…,K
m,…,K
m+dの状態変数のうち、W
ij≠0で、値が所定範囲内のW
ijの識別番号jを保持する(ステップS24)。ここで、選択部34は、K
0~K
n-1が円順列のように繋がっているものとして、K
0~K
n-1の状態変数の中からK
m-d~K
m+dの状態変数を選択候補とする。たとえば、K
m=K
n-1の場合、K
m+dは、K
0+d-1となる(d=2の場合、K
m+2=K
1となる)。K
m=K
0の場合、K
m-dは、K
n-1-d+1となる(n=8,d=2の場合、K
m-2=K
6となる)。
【0119】
図16は、あるシェルにおいて選択候補となる状態変数の一例を示す図である。
図16では、シェル52において、x
6=1、d=2の場合に選択候補となる状態変数の例を示している。x
6=1、つまり、i=K
m=6の場合、前述のK
m-d~K
m+dは、K
6(=12)、K
7(=13),K
0(=6),K
1(=7),K
2(=8)となる。つまり、x
12,x
13,x
6,x
7,x
8が選択候補となる状態変数となり、これらの識別番号(12,13,6,7,8)の中から、W
6j≠0で、値が所定範囲内のW
6jの識別番号jが保持される。
【0120】
ステップS24の処理後、ステップS20からの処理が繰り返される。ステップS21の処理において、保持した識別番号jの数がアミノ酸残基数より小さくないと判定した場合、選択部34は、保持している識別番号jに基づいて、部分問題の対象となる状態変数群を決定し(ステップS25)、部分問題の作成を終了する。ステップS25の処理では、前述のステップS16の処理と同様に、様々な決定方法を適用可能である。また、ステップS25の処理の代りに、
図13に示したステップS16a~S16cの処理を適用することもできる。
【0121】
以上のような部分問題の作成手法を用いることで、LPモデルとダイヤモンド・エンコーディング法を用いたアミノ酸の安定構造決定問題に適した部分問題を作成でき、さらなる計算量の抑制が期待できる。
【0122】
なお、前述のように、上記の処理内容は、最適化装置20,30にプログラムを実行させることで実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体(たとえば、記録媒体26a)に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FD及びHDDが含まれる。光ディスクには、CD、CD-R(Recordable)/RW(Rewritable)、DVD及びDVD-R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体(たとえば、HDD23)にプログラムをコピーして実行してもよい。
【0123】
以上、実施の形態に基づき、本発明の最適化装置、最適化装置の制御方法及び最適化装置の制御プログラムの一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【0124】
たとえば、上記の例では、状態変数群に含まれる状態変数の数を増やすために設定される値であるdは、固定値としたが、状態変数群に含まれる状態変数の数が、探索部35において処理可能な演算ビット数に達するまで増加させていってもよい。
【符号の説明】
【0125】
10 最適化装置
11 記憶部
12 局所解算出部
13 選択部
14 探索部
15 全体解生成部