(57)【要約】      （修正有）【課題】実用的なペナルティ項を容易に生成し、組合せ最適化問題の求解を促進する、情報処理装置、ＰＵＢＯソルバ、情報処理方法およびプログラムを提供する。【解決手段】情報処理システムにおいて情報処理装置は、形式言語で記述された組合せ最適化問題の制約条件より論理式を生成する生成部と、前記論理式を変換し、二値変数をパラメータとする、ペナルティ項を生成する変換部とを備える。前記ペナルティ項またはペナルティ項を含む組合せ最適問題の目的関数の少なくともいずれかは、制約なし多項式２値変数最適化の形式となっている。【選択図】図１
2020201598.tif 000002
【特許請求の範囲】
【請求項１】
形式言語で記述された組合せ最適化問題の制約条件より論理式を生成する生成部と、
前記論理式を変換し、二値変数をパラメータとする、ペナルティ項を生成する変換部とを備え、
前記ペナルティ項または、前記ペナルティ項を含む前記組合せ最適問題の目的関数の少なくともいずれかは、制約なし多項式２値変数最適化の形式となっている、
情報処理装置。
【請求項２】
前記変換部は、前記論理式の論理積および論理和を算術演算に、論理変数の正リテラルおよび前記論理変数の負リテラルを、前記二値変数を含む内容に変換することによって、前記ペナルティ項を生成する、
請求項１に記載の情報処理装置。
【請求項３】
前記変換部は、前記論理式の論理積を乗算に、前記論理式の論理和を加算に、論理変数の正リテラルを前記二値変数に、前記論理変数の負リテラルを１から前記二値変数を減算した内容に変換することによって、前記ペナルティ項を生成する、
請求項１に記載の情報処理装置。
【請求項４】
前記変換部は、前記論理式の論理積を乗算に、前記論理式の論理和を加算に、論理変数の正リテラルを、１に前記二値変数を加算し２で除算した内容に、負リテラルを、１から前記二値変数を減算し２で除算した内容に変換することによって、前記ペナルティ項を生成する、
請求項１に記載の情報処理装置。
【請求項５】
前記生成部は、２段論理に簡単化した前記論理式を生成する、
請求項１ないし４のいずれか一項に記載の情報処理装置。
【請求項６】
前記生成部は、前記制約条件を使って論理合成処理を実行し、前記論理式を生成する、
請求項１ないし５のいずれか一項に記載の情報処理装置。
【請求項７】
請求項１ないし６のいずれか一項に記載の情報処理装置によって生成された前記ペナルティ項または、前記ペナルティ項を含む前記目的関数の二値変数をスピンとした、イジング模型の解を計算する、
ＰＵＢＯソルバ。
【請求項８】
前記イジング模型は、前記スピンの３次以上の項を含む、
請求項７に記載のＰＵＢＯソルバ。
【請求項９】
形式言語で記述された組合せ最適化問題の制約条件より生成された論理式を、二値変数をパラメータとする、ペナルティ項に変換し、制約なし多項式２値変数最適化の形式の前記ペナルティ項または、前記ペナルティ項を含む前記組合せ最適問題の目的関数の少なくともいずれかを生成する情報処理装置と、
前記ペナルティ項または、前記ペナルティ項を含む目的関数の前記二値変数をスピンとした、イジング模型の解を計算するＰＵＢＯソルバとを備え、
前記情報処理装置は、前記イジング模型の解に基づいて前記組合せ最適化問題の解を求める、
情報処理システム。
【請求項１０】
前記情報処理装置が生成する前記ペナルティ項または、前記ペナルティ項を含む前記組合せ最適問題の目的関数の少なくともいずれかは、３次以上の前記パラメータを有し、前記ＰＵＢＯソルバは、前記スピンの３次以上の項を含む前記イジング模型の解を計算する、
請求項９に記載の情報処理システム。
【請求項１１】
形式言語で記述された組合せ最適化問題の制約条件より論理式を生成するステップと、
前記論理式を、二値変数をパラメータとする、ペナルティ項に変換し、制約なし多項式２値変数最適化の形式の前記ペナルティ項または、前記ペナルティ項を含む前記組合せ最適問題の目的関数の少なくともいずれかを生成するステップと、
前記ペナルティ項または、前記ペナルティ項を含む目的関数の前記二値変数をスピンとしたイジング模型の解を計算するステップと、
前記イジング模型の解に基づいて前記組合せ最適化問題の解を求めるステップとを含む、
情報処理方法。
【請求項１２】
前記ペナルティ項または、前記ペナルティ項を含む前記組合せ最適問題の目的関数の少なくともいずれかは、３次以上の前記パラメータを有し、前記スピンの３次以上の項を含む前記イジング模型の解が計算される、
請求項１１に記載の情報処理方法。
【請求項１３】
形式言語で記述された組合せ最適化問題の制約条件より論理式を生成するステップと、
前記論理式を、二値変数をパラメータとする、ペナルティ項に変換し、制約なし多項式２値変数最適化の形式の前記ペナルティ項または、前記ペナルティ項を含む前記組合せ最適問題の目的関数の少なくともいずれかを生成するステップと、
前記ペナルティ項または、前記ペナルティ項を含む目的関数の前記二値変数をスピンとしたイジング模型の解を計算するステップと、
前記イジング模型の解に基づいて前記組合せ最適化問題の解を求めるステップとをコンピュータに実行させる、
プログラム。
【請求項１４】
前記ペナルティ項または、前記ペナルティ項を含む前記組合せ最適問題の目的関数の少なくともいずれかは、３次以上の前記パラメータを有し、前記スピンの３次以上の項を含む前記イジング模型の解が計算される、
請求項１３に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、ＰＵＢＯソルバ、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
近年、組合せ最適化問題を高速に解くために、イジング模型の基底状態のエネルギーを計算するコンピュータの活用が進められている。これらのコンピュータが利用される場合、事前に組合せ最適化問題がイジング模型の形式に変換される。しかし、イジング模型は、明示的な制約条件を含んでいないため、制約条件をペナルティ項の形で目的関数に組み込む必要がある。
【０００３】
ペナルティ項の設計は、専門的な知見が必要であり、困難な作業である。さらに、ペナルティ項自体が求解の妨げとなってしまう問題もある。例えば、ペナルティ項によって決定変数の数が増えると、求解に必要な計算リソースが大きくなりすぎてしまう。また、本来の目的関数の値域に比べ、ペナルティ項の値域が大きいため、求解が困難となる場合もある。実用的なペナルティ項を容易に生成し、組合せ最適化問題の求解を促進する技術の開発が求められている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−２２４２２７号公報
【特許文献２】特表２０１７−５１５１９５号公報
【非特許文献】
【０００５】
【非特許文献１】R. Babbush et al.,”Resource Efficient Gadgets for Compiling Adiabatic Quantum Optimization Problems”, Annalen der Physik: Volume 25, 10-11 (2013)  DOI: 10.1002/andp.201300120,  [online], [平成31年4月23日検索]、インターネット<https://arxiv.org/abs/1307.8041>
【非特許文献２】Vasil S. Denchev et al., “What is the Computational Value of Finite Range Tunneling?”, Phys. Rev. X 6, 031015 (2016) DOI 10.1103/PhysRevX.6.031015, [online], [平成31年4月23日検索]、インターネット<https://arxiv.org/abs/1512.02206>
【非特許文献３】Andrew Lucas: “Ising formulations of many NP problems”, 2013, Frontiers in Physics 2, 5 (2014)  DOI: 10.3389/fphy.2014.00005, [online], [平成31年4月23日検索]、インターネット<https://arxiv.org/abs/1302.5843>
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の実施形態は、実用的なペナルティ項を容易に生成し、組合せ最適化問題の求解を促進する、情報処理装置、ＰＵＢＯソルバ、情報処理方法およびプログラムを提供する。
【課題を解決するための手段】
【０００７】
本発明の実施形態としての情報処理装置は、形式言語で記述された組合せ最適化問題の制約条件より論理式を生成する生成部と、前記論理式を変換し、二値変数をパラメータとする、ペナルティ項を生成する変換部とを備え、前記ペナルティ項または、前記ペナルティ項を含む前記組合せ最適問題の目的関数の少なくともいずれかは、制約なし多項式２値変数最適化の形式となっている。
【図面の簡単な説明】
【０００８】
【図１】情報処理システムの構成例を示したブロック図。
【図２】ＰＵＢＯソルバを用いて解決したい課題を解くときに必要な処理の例を示した図。
【図３】Ｖｅｒｉｌｏｇ−ＨＤＬファイルの第１例を示した図。
【図４】関連技術の方法によって生成されたデジタル回路の例を示した図。
【図５】関連技術の方法によって作成されたペナルティ関数について、決定変数の各組合せにおけるペナルティ項の値の例を示したテーブル。
【図６】情報処理システムで実行される処理の例を示したフローチャート。
【図７】情報処理装置で実行される各処理ステップとデータとの関係の第１例を示した図。
【図８】ペナルティ項生成処理の例を示したフローチャート。
【図９】変換ルールの第１例を示した図。
【図１０】決定変数の各組合せにおけるペナルティ項の値の例を示したテーブル。
【図１１】変換ルールの第２例を示した図。
【図１２】Ｖｅｒｉｌｏｇ−ＨＤＬファイルの第２例を示した図。
【図１３】情報処理装置で実行される各処理ステップとデータとの関係の第２例を示した図。
【発明を実施するための形態】
【０００９】
以下、図面を参照しながら、本発明の実施形態について説明する。また、図面において同一の構成要素は、同じ番号を付し、説明は、適宜省略する。
【００１０】
図１は、情報処理システムの構成例を示したブロック図である。図１の情報処理システムは、情報処理装置１と、ＰＵＢＯソルバ２と、操作装置３と、表示装置４と、情報端末６と、情報端末７とを含む。情報処理装置１、ＰＵＢＯソルバ２、情報端末６、情報端末７はネットワーク５を介して互いに通信可能である。ネットワーク５は、例えば、複数のコンピュータネットワークが相互に接続されたインターネットである。ネットワーク５は、通信媒体として有線、無線または、これらの組み合わせを用いることができる。また、ネットワーク５で使われる通信プロトコルの例としては、ＴＣＰ／ＩＰがあるが、通信プロトコルの種類については特に問わない。操作装置３および表示装置４は、情報処理装置１と電気的に接続されている。
【００１１】
情報処理装置１は、中央演算処理装置（ＣＰＵ）とメモリとを含むコンピュータである。情報処理装置１の例としては、サーバ、デスクトップＰＣ、ノートＰＣが挙げられるが、情報処理装置１は、どのような種類のコンピュータであってもよい。情報処理装置１は、例えば、各種の演算処理を実行し、ＰＵＢＯソルバ２を制御する。操作装置３は、情報処理装置１に情報を入力するための装置である。操作装置３は、例えば、キーボード、マウス、タッチパネル、音声認識装置などであるが、これに限られない。表示装置４は、情報処理装置１から出力される画像、映像、テキストなどを表示するための装置である。表示装置４の例としては、ＬＣＤ（液晶ディスプレイ）、有機ＥＬ（有機エレクトロルミネッセンス）ディスプレイ、プロジェクタがあるが、これに限られない。ユーザは、操作装置３および表示装置４を使い、情報処理装置１に各種の操作を行うことができる。なお、ユーザによって使用される操作装置３または表示装置４の少なくともいずれかは、情報処理装置１に組み込まれたものであってもよい。
【００１２】
ＰＵＢＯソルバ２は、イジング模型のスピンの値を求めるコンピュータ（イジングマシン）、または制約なし多項式２値変数最適化（ＰＵＢＯ：Ｐｏｌｙｎｏｍｉａｌ  Ｕｎｃｏｎｓｔｒａｉｎｅｄ  Ｂｉｎａｒｙ  Ｏｐｔｉｍｉｚａｔｉｏｎ）を解くことが可能なコンピュータである。ＰＵＢＯソルバ２の例としては、超伝導量子ビットを使ったコンピュータ（量子アニーリングマシン）、光パラメトリック発振器を使ったコンピュータが挙げられる。ノイマン型コンピュータ上でプログラムを実行することによって、物理現象をエミュレートしてもよい。また、ノイマン型コンピュータ上で各種のメタヒューリスティックスアルゴリズムを実行してもよい。また、ノイマン型コンピュータとＦＰＧＡ、ＡＳＩＣ、ＧＰＵなどのハードウェア回路を組み合わせることによって、スピン（二値変数）の値を求めてもよい。スピンの値の計算には、どのような種類のアルゴリズムを用いてもよい。ＰＵＢＯソルバの種類および構成については特に問わない。
【００１３】
なお、図１では、１台のＰＵＢＯソルバが示されているが、ＰＵＢＯソルバの台数はこれより多くてもよい。例えば、複数台のＰＵＢＯソルバに並列的な計算を実行させてもよい。情報処理システムは、複数種類のＰＵＢＯソルバを含んでいてもよい。情報処理装置１およびＰＵＢＯソルバ２の後述する機能の少なくとも一部は、仮想コンピュータ（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）やコンテナによって実現されていてもよい。また、複数台のコンピュータによって情報処理装置１およびＰＵＢＯソルバ２の機能が実現されていてもよい。図１では、情報処理装置１とＰＵＢＯソルバ２が別々のコンピュータとなっているが、この構成は一例にしかすぎない。例えば、情報処理装置１の少なくとも一部の機能と、ＰＵＢＯソルバ２の少なくとも一部の機能が同一のコンピュータによって実現されていてもよい。
【００１４】
情報端末６は、ラップトップＰＣである。また、情報端末７は、スマートフォンである。情報端末６、７は、いずれも無線通信（例えば、無線ＬＡＮまたはモバイル通信）によって、ネットワーク５に接続された他の装置との間でデータの送受信を行うことができる。ラップトップＰＣやスマートフォンは、情報処理システムで使用可能な情報端末の例にしかすぎない。したがって、デスクトップＰＣ、タブレット、車載機器、組み込み機器のマイコンなどその他の種類の情報端末が用いられてもよい。ユーザは、情報端末をクライアントとして使い、リモート環境で情報処理装置１を操作することができる。この場合、情報端末は、上述の操作装置３および表示装置４の機能を兼ね備えていてもよい。
【００１５】
次に、情報処理装置１の各構成要素について説明する。情報処理装置１は、演算部１０と、記憶部１４と、入力部１５と、出力部１６と、通信部１７とを備えている。
【００１６】
演算部１０は、演算を実行し、情報処理装置１全体の制御を行う電子回路である。演算部１０として、例えば、ＣＰＵ、マイクロプロセッサ、ＡＳＩＣ、ＦＰＧＡ、ＰＬＤまたはこれらの組み合わせを用いることができる。情報処理装置１の機能の少なくとも一部は、演算部１０の電子回路によって実現されてもよい。また、情報処理装置１の機能の少なくとも一部は、演算部１０でプログラムを実行することによって実現されてもよい。この場合、プログラムは、一時的でない有形のコンピュータ読み取り可能な記憶媒体（例えば、後述の記憶部１４）に保存される。
【００１７】
演算部１０は、内部の構成要素として、生成部１１と、変換部１２と、制御部１３とを含む。生成部１１は、形式言語で記述された組合せ最適化問題の制約条件より論理式を生成する。変換部１２は、論理式を変換し、二値変数をパラメータとする、ペナルティ項を生成する。ペナルティ項または、ペナルティ項を含む組合せ最適問題の目的関数の少なくともいずれかは、制約なし多項式２値変数最適化の形式となっていてもよい。例えば、変換部１２は、論理式の論理積および論理和を算術演算に、論理変数の正リテラルおよび論理変数の負リテラルを、二値変数を含む内容に変換することによって、ペナルティ項を生成する。組合せ最適化問題の解は、二値変数をスピンとしたイジング模型の解に基づいて求められる。このために、制御部１３は、ＰＵＢＯソルバ２の制御を行う。例えば、制御部１３は、ＰＵＢＯソルバ２にイジング模型の解の計算を開始する指令を送信する。また、制御部１３は、ＰＵＢＯソルバ２から計算の結果を取得する。そして、変換部１２は、イジング模型の解に基づいて組合せ最適化問題の解を求める。組合せ最適化問題の解は、上述の表示装置４に表示されてもよい。生成部１１および変換部１２の詳細については、後述する。
【００１８】
記憶部１４は、情報処理装置１のプログラム、プログラムの実行に必要なデータ、プログラムによって生成されたデータを含む各種のデータを記憶するストレージである。ここで、プログラムは、ＯＳとアプリケーションのいずれも含むものとする。ストレージは、揮発性メモリ、不揮発性メモリ、またはこれらの組み合わせであってもよい。揮発性メモリの例としては、ＤＲＡＭ、ＳＲＡＭなどがある。不揮発性メモリの例としては、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、ＲｅＲＡＭ、ＭＲＡＭが挙げられる。また、ストレージとして、ハードディスク、光ディスク、磁気テープまたは外部の記憶装置が使われてもよい。
【００１９】
入力部１５は、情報処理装置１へのデータ入力を実現する回路である。例えば、上述の操作装置３は入力部１５を介して情報処理装置１に接続される。入力部１５の例として、ＵＳＢ、ＰＣＩ−Ｅｘｐｒｅｓｓ、シリアルポートなどのインタフェースがあるが、その他のインタフェースを使ってもよい。出力部１６は、情報処理装置１からのデータ出力を実現する回路である。例えば、上述の表示装置４は出力部１６を介して情報処理装置１に接続される。出力部１６の例として、ＨＤＭＩ、ＤｉｓｐｌａｙＰｏｒｔなどのインタフェースがあるが、その他の種類のインタフェースを使ってもよい。
【００２０】
情報処理装置１の通信部１７は、ネットワーク５に接続された各装置とデータの送受信を行う通信回路である。通信部１７は、例えば、有線ＬＡＮのＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。ただし、通信部１７は、無線ＬＡＮなど、その他の種類の通信回路であってもよい。
【００２１】
上述のように、ＰＵＢＯソルバ２は、イジング模型の基底状態におけるスピンの値を求める。ＰＵＢＯソルバ２は、通信部２０と、制御部２１と、演算部２２と、記憶部２３とを備えている。ＰＵＢＯソルバ２の各構成要素の詳細について説明する前に、イジング模型の概略について述べる。下記の式（１）は、イジング模型のハミルトニアンＨを示している。ハミルトニアンＨはイジング模型のエネルギーである。また、ハミルトニアンＨは最適化問題における目的関数に相当する。
【数１】
2020201598.tif 000003
ここで、Ｊｉｊは、スピン間の相互作用係数の行列である。ｓｉ、ｓｊは二値変数（スピン）であり、＋１または−１のいずれかの値をとる。ｈｉは各スピンにおける局所磁場のベクトルである。なお、上述の式（１）は、ｓｉ、ｓｊについての２次式となっている。ただし、ＰＵＢＯソルバの中には、３次以上の目的関数を使った計算が可能なものが存在するため、イジング模型は必ず２次式でなくてもよい。例えば、スピンの３次以上の項を含むイジング模型を使ってもよい。このようなイジング模型は、物理的には多体相互作用を含むといえる。以降の説明でイジング模型について述べた場合、２次式で表現されるものだけでなく、３次以上の次数で表現されるもの（多体相互作用を持つイジング模型）も含むものとする。情報処理装置１が生成するペナルティ項または、ペナルティ項を含む組合せ最適問題の目的関数の少なくともいずれかは、３次以上のパラメータを有していてもよい。この場合、ＰＵＢＯソルバ２は、スピンの３次以上の項を含むイジング模型の解を計算する。
【００２２】
ＰＵＢＯソルバ２の演算部２２は、イジング模型のスピンの値を求める。演算部２２は、ハミルトニアンＨの値が可能な限り小さくなるパラメータの組合せ（ｓ１、ｓ２、・・・、ｓＮ）を求める。演算部２２によって求められたイジング模型の解は、上述のパラメータの組合せ（ｓ１、ｓ２、・・・、ｓＮ）となる。演算部２２によって求められる解は、ハミルトニアンＨの値が最小値となる解（最適解）であることが期待される。ただし、演算部２２によって求められる解は、必ず厳密な最適解とならなくてもよい。例えば、複数回の求解処理を実行して最適解を求めてもよい。また、複数の演算部２２を使って並列的に求解処理を実行し、最適解を求めてもよい。
【００２３】
ＰＵＢＯソルバ２の通信部２０は、ネットワーク５に接続された各装置とデータの送受信を行う通信回路である。通信部２０は、例えば、有線ＬＡＮのＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。ただし、通信部２０は、無線ＬＡＮなど、その他の種類の通信回路であってもよい。
【００２４】
ＰＵＢＯソルバ２の制御部２１は、ＰＵＢＯソルバ２の各構成要素の制御を行う。ＰＵＢＯソルバ２の通信部２０は、情報処理装置１から送信された制御信号を、ネットワーク５を経由して受信する。ＰＵＢＯソルバ２の制御部２１は、受信された制御信号に基づき、演算部２２を制御する。また、ＰＵＢＯソルバ２の制御部２１は演算部２２によって求められたイジング模型の解を、通信部２０を介して情報処理装置１に転送する。
【００２５】
ＰＵＢＯソルバ２の記憶部２３は、ＰＵＢＯソルバの動作に必要なデータを含む各種のデータを保存可能な記憶領域を提供する。例えば、ＰＵＢＯソルバ２の制御部２１は、記憶部１４をイジング模型のデータや、イジング模型の解が一時的に保存されるバッファとして使ってもよい。また、記憶部１４には、プログラムや、制御用のデータが保存されていてもよい。
【００２６】
記憶部２３は、例えばＳＲＡＭ、ＤＲＡＭなどの揮発性メモリであってもよいし、ＮＡＮＤ、ＭＲＡＭ、ＦＲＡＭなどの不揮発性メモリでもよい。またハードディスク、ＳＳＤなどのストレージ装置や、外部の記憶装置であってもよい。すなわち、記憶部２３の種類については特に問わない。また、記憶部２３は複数の種類のメモリやストレージの組み合わせであってもよい。なお、ＰＵＢＯソルバ２は必ず記憶部２３を備えていなくてもよい。
【００２７】
図２は、ＰＵＢＯソルバを用いて解決したい課題を解くときに必要な処理を示している。以下では、図２を参照しながら、関連する技術について説明する。
【００２８】
社会において解決が求められる問題（図２の問題５０）では、一定の制約のもとで所望の目的を達成するために、適当な組合せを見つけることが必要なことがある。このような問題の例としては、物流分野における配送車両の割り当て、プロセッサへのタスクの割り当てが挙げられる。組合せ最適化は、これらの問題を解決するために用いられる。一般に、組合せ最適化を含む最適化の分野では、問題が目的関数および制約条件によって表現される。目的関数の値は、解の“よさ”を示す。制約条件は、解が充足すべき条件を定義する。
【００２９】
組合せ最適化の問題を解くために、例えば、上述のＰＵＢＯソルバ２を使うことができる。ただし、組合せ最適化の問題を解くために使われるコンピュータ（ソルバー）の台数、種類および構成については特に限定しない。
【００３０】
ユーザは、目的関数および制約条件を使われるコンピュータに適合したデータ形式に変換する必要がある。例えば、ＰＵＢＯソルバ２を使う場合、目的関数および制約条件をイジング模型の形式に変換する必要がある。以降では、組合せ最適化問題を解くためにＰＵＢＯソルバが使われた場合を例に説明をするが、求解にＰＵＢＯソルバ以外のコンピュータを使うことを妨げるものではない。
【００３１】
組合せ最適化の一例として、ナップサック問題がある。ここでは、ナップサック問題について説明する。それぞれ重さｗｉ、価値ｖｉ（ｉ＝１，・・・，Ｎ）である、Ｎ個の荷物ｂ１〜ｂＮがあるものとする。ナップサック問題では、重さＷまで入れられるナップサックに詰める荷物を選択する。ナップサックに詰める荷物の選択にあたっては、重さの合計を上限Ｗ以下にしつつ、価値の合計を最大化するという、制約条件を満たす必要がある。
【００３２】
選択する荷物の組合せを示すために、荷物ｂ１〜ｂＮにそれぞれ対応する変数ｘ１〜ｘｎを導入する。変数ｘ１〜ｘｎは、いずれも０または１の値をとる二値変数である。例えば、ナップサックに詰める荷物として荷物ｂ１を選択した場合、ｘ１＝１となる。ナップサックに詰める荷物として、荷物ｂ１を選択しない場合、ｘ１＝０となる。
【００３３】
上述の表記を使った場合、ナップサック問題の目的関数は下記の式（２）のようになる。
【数２】
2020201598.tif 000004
【００３４】
また、ナップサック問題の制約条件は下記の式（３）のようになる。
【数３】
2020201598.tif 000005
【００３５】
式（３）を満たしつつ、式（２）を最大化させる変数ｘ１〜ｘｎがナップサック問題の解となる。なお、以降の説明では、二値変数の表記に小文字のｘに添え字（英数字）を付した記号を使うものとする。
【００３６】
組合せ最適化を含む最適化において、求める必要のある情報を上述のような目的関数や制約条件の形式で定義したものを問題という。図２の問題５１は、目的関数および制約条件を含む組合せ最適化問題を示している。問題で使われるパラメータの値（上述の例では、ｖ１〜ｖＮ、ｗ１〜ｗＮおよびＷのそれぞれの値）は、問題のインスタンスとよばれる。また、上述のｘ１〜ｘｎのような値の組合せを示す変数は、決定変数とよばれる。決定変数の値の組合せ（上述の例では２Ｎ個の組合せとなる）のうち、制約条件を満たすものを実行可能解とよぶ。また、実行可能解のうち、目的関数を最大（目的関数の符号を負に定義した場合には、最小）にするものが、インスタンスの解となる。なお、目的関数が厳密に最大値（または、最小値）となる場合の実行可能解でなくても、慣習的に、最適化を試みた結果として得られた決定変数の値の組合せも解とよばれる。
【００３７】
近年、組合せ最適化の分野では、問題の目的関数としてイジング模型のハミルトニアン（エネルギー関数）を使う方法が注目されている。以降では、このような最適化問題をイジング問題とよぶものとする。上述の式（１）で示したように、イジング問題の決定変数（スピン）の値は−１または−１であるため、制約なし二次形式二値変数最適化との変換が容易である。例えば、変換時には、０および１をそれぞれ＋１または−１のいずれかに対応付けることが可能である。
【００３８】
イジング問題は、明示的な制約条件を含まない。２次式で表現されるイジング模型を使う場合、多項式は多重線形関数となる。イジング問題では、目的関数を最小化させる（すなわち、基底状態のエネルギーに相当する）解が求められることが多い。２次式で表現されるイジング模型を使う場合、イジング問題は、ＱＵＢＯ（制約なし２次形式２値変数最適化）と等価であるか、相互に変換可能であることが知られている。また、３次以上のハミルトニアンも扱われる場合、イジング問題は、ＰＵＢＯ（制約なし多項式２値変数最適化）の形式となる。
【００３９】
上述のＰＵＢＯソルバ２に問題のデータを入力するために、次数が２次以下の目的関数を使うことが求められる場合がある。例えば、“ａｎｃｉｌｌａ ｇａｄｇｅｔ”と呼ばれるものをイジング模型に挿入し、それに対応するペナルティ項を補助変数（追加の決定変数）とともに目的関数に導入することを通して、高次の多重線形関数を２次以下に変換する方法が提案されている。ただし、イジング問題の目的関数の次数は必ず２次以下でなくてもよい。例えば、量子アニーリングにおいて、３次以上の目的関数を扱う技術の研究が行われている。また、シミュレーテッド・アニーリング（ＳＡ）によってイジング問題を解く場合、目的関数の次数は２次以下でなくてもよい。
【００４０】
ＰＵＢＯソルバ２を使って組合せ最適化問題を解くためには、イジング模型の形式に問題を変換する必要がある。現実の組合せ最適化問題は、制約条件を含むことが多いが、上述のようにイジング問題は明示的な制約条件を含んでいない。このため、問題の変換をする際に、制約条件に相当する効果を導入する必要がある。
【００４１】
例えば、制約条件に基づいてペナルティ関数を用意し、ペナルティ関数に係数を乗じて本来の目的関数に加算することができる。これにより、制約条件に相当する効果をイジング問題の目的関数に含めることができる。ペナルティ関数は、制約条件を充足する決定変数の値の組合せでは比較的小さい値をとり、制約条件を充足しない決定変数の値の組合せでは比較的大きい値となるように設計された関数である。イジング問題に変換された後の目的関数のうち、ペナルティ関数に相当する項は、ペナルティ項とよばれる。ペナルティ項を含む目的関数を最小化させる決定変数の組合せを計算すれば、制約条件を満たす解が得られることが期待される。各種の組合せ最適化問題を２次の目的関数を有するイジング問題に変換する場合、上述のようなペナルティ項が導入されることが一般的である。
【００４２】
次に、上述のナップサック問題にペナルティ項を導入した場合の例について述べる。下記の式（４）は、ペナルティ項が導入されたナップサック問題の目的関数の例である。
【数４】
2020201598.tif 000006
【００４３】
ここで、決定変数（ｙｎおよびｘｉ）の値は０または１のいずれかをとる。また、各荷物の重量ｗｉと重量の合計値の上限Ｗは、自然数である。式（４）の係数Ａを含む２つの項は、ペナルティ項に相当する。また、係数Ｂを含む項は、ナップサック問題の本来の目的関数である。ここでは、目的関数を最小化させる決定変数の値の組合せが求められるため、本来の目的関数の符号は負となっている。変数ｙ１〜ｙｎは、ペナルティ項の導入に伴って追加された決定変数（補助変数）である。式（４）では、Ｗ個の補助変数が導入されている。“ｌｏｇ  ｔｒｉｃｋ”とよばれる方法によって、補助変数の数を減らすことが可能である。係数ＡおよびＢの値は、ｖ１〜ｖＮの最大値よりＡ／Ｂの比が大きくなるように決めることができる。ただし、この係数の決め方は一例にしかすぎない。
【００４４】
ペナルティ項の設計には特別の知見が必要である。組合せ最適化の分野における知識と経験を有する者にとっても、ペナルティ項の設計は困難な作業である。
【００４５】
次に、具体的なインスタンス例のパラメータを使って、ペナルティ項の大きさを評価する。ナップサックに詰める候補となる荷物の数Ｎは５であるとする。また、ナップサックに詰めることができる荷物の重量の合計は、最大でＷ＝１５であるとする。荷物ｂ１〜ｂ５の重さは、ｗ１＝７、ｗ２＝２、ｗ３＝５、ｗ４＝４、ｗ５＝３である。また、荷物ｂ１〜ｂ５の価値ｖ１〜ｖ５はいずれも１であるとする。
【００４６】
下記の式（５）は、式（４）のうち、ペナルティ項の部分を抽出したものである。
【数５】
2020201598.tif 000007
【００４７】
式（５）でｙ１〜ｙｗの値がいずれも１であり、かつｘ１〜ｘＮの値がいずれも０であるとき、係数Ａを除いたペナルティ項の値は１４５９６となる。また、ｙ１〜ｙｗの値がいずれも０であり、かつｘ１〜ｘＮの値がいずれも１である場合を考えると、係数Ａを除いたペナルティ項の値は４４１となる。Ｌｏｇ  Ｔｒｉｃｋを用いた場合は、具体的な式の設計によってペナルティ項の最大値は変化するが、少なくとも４４１以上になる。一方、上述の式（２）は、式（４）のペナルティ項以外の項から係数−Ｂを除いた目的関数（本来の目的関数）である。本来の目的関数は、ｘ１〜ｘＮの値がいずれも１のときに最大値２１をとる。上述の値の違いによって例示されるように、ペナルティ項の値域は、本来の目的関数の値域よりも広くなっている。Ａ／Ｂ＞１となるように、係数ＡおよびＢの値を設定すると、本来の目的関数の値域の広さと、ペナルティ項の値域の広さの違いはさらに大きくなる。
【００４８】
ここでは、説明の都合上、Ｎ＝５、Ｗ＝１５という小規模なインスタンスを例に用いた。ただし、コンピュータを使った求解の対象となる問題の規模は、これより大きくなることが多い。問題の規模が大きくなるほど、本来の目的関数の値に対してペナルティ項の値が大きくなる傾向が強まる。一部のＰＵＢＯソルバでは、取扱い可能な数値の範囲が限定されているため、ペナルティ項の値が大きくなるのは好ましくない。また、本来の目的関数の値に対してペナルティ項の値が大きくなると、数値演算の精度が低下するおそれもある。
【００４９】
さらに、ペナルティ項の導入は、問題に含まれる決定変数の数の増大という副作用をもたらす。決定変数の数が増えると、ＰＵＢＯソルバの計算で必要なスピン数が大きくなる。ＰＵＢＯソルバでは、計算可能なスピン数に上限があるため、決定変数の数は少ない方が好ましい。また、決定変数の数がＰＵＢＯソルバで計算可能なスピン数の上限内にあったとしても、決定変数の数が増えることによって計算時間が長くなってしまう。
【００５０】
ペナルティ項の設計にかかる負担を軽減するため、ペナルティ項の設計に設計ツール（ソフトウェア）を活用する方法（関連技術の方法）が提案されている。この方法を使った場合、はじめにユーザは、制約条件をハードウェア記述言語で記述する。そして、ユーザは、論理合成ツールによってデジタル回路の設計データを生成する。デジタル回路は、あらかじめ定義された、２入力１出力のゲートのいずれかを使った形式に変換される。次に、各ゲート、各ゲートのタイプ、各ゲートの中間出力、各ゲートの第１入力、各ゲートの第２入力のそれぞれに番号を割り当てる。割り当てられた番号に基づき、各ゲートを行列に変換する。最後に、制約条件に基づく行列を加算し、デジタル回路全体からひとつの行列が生成される。最後に生成される行列は、２次の多重線形関数を示しており、イジング問題の目的関数として使うことができる。
【００５１】
上述の方法によって、下記の論理式（６）が充足されているときには、値０をとり、下記の論理式（６）が充足されていないときには、正の値をとるペナルティ関数を作成する場合を考える。
【数６】
2020201598.tif 000008
【００５２】
図３は、式（６）のペナルティ項を作成するために、ユーザによって記述されたＶｅｒｉｌｏｇ−ＨＤＬファイルの例を示している。Ｖｅｒｉｌｏｇ−ＨＤＬファイルにおいて、論理変数ａ、ｂ、ｃ、ｄを使った演算は、ビット演算によって記述されている。ファイル内のビット演算において、１ビットの“１”は真（ＴＲＵＥ）、１ビットの“０”は偽（ＦＡＬＳＥ）にそれぞれ対応する。Ｖｅｒｉｌｏｇ−ＨＤＬは、ペナルティ項を記述可能なハードウェア記述言語の一例にしかすぎない。したがって、その他の形式言語によってペナルティ項の記述を行ってもよい。
【００５３】
図３のファイルを論理合成ツール（例えば、Ｙｏｓｙｓ）に入力すると、図４のデジタル回路８の設計データが生成される。図３のｄは、デジタル回路８の出力である。式（６）の論理式が真（ＴＲＵＥ）となる場合、ｄの値は１ビットの“１”となり、式（６）の論理式が偽（ＦＡＬＳＥ）となる場合、ｄの値は１ビットの“０”となる。デジタル回路８のｅは、論理合成ツールによって追加された配線（論理変数）であり、上述の補助変数に相当する。
【００５４】
上述のように、デジタル回路のデータから行列を生成することもできるが、行列表現と等価である、下記の式（７）の“ａｎｃｉｌｌａ  ｇａｄｇｅｔ”を使うこともできる。
【数７】
2020201598.tif 000009
式（７）の変数ｘ１、ｘ２、ｘ３の値は、０または１のいずれかとなる。また、式（７）は、ｘ１ｘ２＝ｘ３であるときに、ｓ（ｘ１，ｘ２，ｘ３）＝０となり、ｘ１ｘ２≠ｘ３であるときに、ｓ（ｘ１，ｘ２，ｘ３）≧１となる。
【００５５】
“Ａｎｃｉｌｌａ  ｇａｄｇｅｔ”は、ＡＮＤゲートに対応しているため、“ａｎｃｉｌｌａ  ｇａｄｇｅｔ”を図４のデジタル回路８に適用すると、下記の式（８）のようになる。
【数８】
2020201598.tif 000010
ここで、変数ｘａ、ｘｂ、ｘｃ、ｘｄ、ｘｅの値は、０または１のいずれかとなる。また、変数ｘａ、ｘｂ、ｘｃ、ｘｄ、ｘｅは、それぞれブール代数の変数ａ、ｂ、ｃ、ｄ、ｅに対応している。式（８）で、１−ｘｅは、デジタル回路８左側のＡＮＤゲートの出力の否定（ＮＯＴ：図４の円形マーク）がとられていることを示している。
【００５６】
ペナルティ関数は、制約条件を充足するときに一定値をとる関数であるため、ｘｄに１を代入する。そして、式（７）を（８）に代入する。こうして、下記の式（９）が得られる。
【数９】
2020201598.tif 000011
【００５７】
図５は、各変数の組合せにおける式（９）の値を示した表である。図５の表を参照すると、下記の式（１０）の条件が満たされたときにｒ（・・・）＝０となり、下記の式（１０）の条件が満たされていないときに正値となっている。ｘｅの値を適切に決めることにすれば、意図した通り、式（６）が充足されているときに値０をとり、充足されていないときに正の値をとるペナルティ項が得られることが分かる。
【数１０】
2020201598.tif 000012
【００５８】
しかし、上述のデジタル回路の設計データ使う方法（関連技術の方法）によってペナルティ関数を生成する場合、デジタル回路の設計データの生成、当該設計データの数学的表現への変換という処理が必要であり、比較的複雑な処理が必要となる。また、図４に示したように、補助変数の追加が必要となる場合がある。計算量が少ない処理によってペナルティ関数を生成する技術の開発が望まれている。
【００５９】
以下では、ペナルティ関数の生成時において、補助変数の追加は回避するか、最小限にする方法（本実施形態の方法）について説明する。
【００６０】
図６は、情報処理システムで実行される処理の例を示したフローチャートである。以下では、図６を参照しながら、本実施形態に係る情報処理システムによって実行される処理の概要を述べる。
【００６１】
まず、ユーザは、形式言語によって、組合せ最適化問題の制約条件を記述する（ステップＳ１０１）。論理式を記述可能な各種のデータ形式を、形式言語として使うことができる。例えば、形式言語として、論理式を記述可能なプログラミング言語であるＣ言語を使ってもよい。また、形式言語として、論理回路の設計データの交換フォーマットであるＥＤＩＦを使ってもよい。形式言語は、人間による読み書きが可能な形式に限らず、設計ツールから出力されるデータ（例えば、ＬＳＩのネットリストなど）であってもよい。
【００６２】
以下では、形式言語として、ハードウェア記述言語の一種である、Ｖｅｒｉｌｏｇ−ＨＤＬが使われた場合を例に説明する。ただし、ＶＨＤＬなど、その他のハードウェア記述言語が使われてもよい。また、ブール代数の記述が可能なのであれば、ハードウェア記述言語以外の形式言語を用いてもよい。ユーザは、例えば、操作装置３を介して制約条件を情報処理装置１に入力し、表示装置４によって記述した内容を視覚的に確認することができる。
【００６３】
次に、生成部１１は、記述された制約条件より論理式を生成する（ステップＳ１０２）。後述するように、生成部１１が生成する論理式は簡単化されたものであってもよい。次に、変換部１２は、ブール代数の論理式を、二値変数をパラメータとするペナルティ項に変換する（ステップＳ１０３）。ステップＳ１０３では、論理式の論理積および論理和を算術演算に、論理変数の正リテラルおよび論理変数の負リテラルを、二値変数を含む内容に変換する。変換ルールの例については、後述する。
【００６４】
そして、変換部１２は、ペナルティ項を本来の目的関数に加算する（ステップＳ１０４）。ステップＳ１０４では、ペナルティ項と本来の目的関数をそれぞれ係数で重み付けしてから加算を行ってもよい。さらに、制御部１３は、ＰＵＢＯソルバ２にペナルティ項を含む目的関数の求解を実行させる（ステップＳ１０５）。すなわち、ＰＵＢＯソルバ２は、ペナルティ項を含む目的関数をイジング模型のハミルトニアンとして、イジング模型の解を計算する。最後に、変換部１２は、ＰＵＢＯソルバ２の解に基づき、組合せ最適化問題の解を求める（ステップＳ１０６）。組合せ最適化問題の解は、表示装置４または、情報端末６，７に表示されてもよい。また、組合せ最適化問題の解は、図１に表示されていないその他のコンピュータに転送されてもよいし、図１に表示されていない外部の記憶装置に保存されてもよい。
【００６５】
なお、後述するように、ステップＳ１０４を省略されてもよい。この場合、制御部１３は、ＰＵＢＯソルバ２にペナルティ項のみを使った求解を実行させてもよい。以下では、生成部１１および変換部１２によって実行される処理の詳細について説明する。
【００６６】
図７は、情報処理装置１で実行される各処理ステップとデータとの関係の第１例を示している。以下では、図７を参照しながら、情報処理装置１が実行する処理について説明する。
【００６７】
図７には、データとして、制約条件データ３０、内部表現データ３１、論理式データ３２、変換ルールデータ３３、ペナルティ項データ３４、目的関数データ３５、係数データ３６、合成済目的関数データ３７、計算結果データ３８が示されている。これらのデータは、情報処理装置１の記憶部１４に保存されているものとする。ただし、これらのデータの少なくとも一部が、外部のストレージ装置など、その他の場所に保存されていてもよい。
【００６８】
また、図７には、処理として、論理合成処理４０、簡単化処理４１、ペナルティ項生成処理４２、関数合成処理４３、求解処理４４が示されている。例えば、論理合成処理４０、簡単化処理４１は、生成部１１によって実行される。また、ペナルティ項生成処理４２と、関数合成処理４３は、変換部１２によって実行される。求解処理４４は、ＰＵＢＯソルバ２の演算部２２によって実行される。
【００６９】
制約条件データ３０は、問題の制約条件を示したデータである。例えば、問題がナップサック問題である場合、制約条件は上述の式（２）のような不等号を含む代数式となる。問題の制約条件は、ユーザによって入力されてもよいし、別の情報処理装置からダウンロードされたものであってもよい。論理合成処理４０では、入力された制約条件データ３０を内部表現データ３１に変換する。論理合成処理４０は、ハードウェア記述言語の処理系を提供するツール（ソフトウェア）によって実行されてもよい。
【００７０】
内部表現データ３１は、ブール代数表現（論理式）に変換された制約条件に相当する。簡単化処理４１では、内部表現データ３１に論理の簡単化を行う。簡単化処理４１の例としては、ＡＮＤ−ＯＲの２段論理への簡単化、カルノー図による簡単化が挙げられる。論理の簡単化のために、ＥＳＰＲＥＳＳＯ−ＭＶ、ＳＩＳなどのツールを用いてもよい。簡単化処理４１で２段論理への簡単化を行った場合、ＰＯＳ形式（ｐｒｏｄｕｃｔ−ｏｆ−ｓｕｍｓ形式）の論理式が生成される。簡単化処理４１で生成された論理式は、論理式データ３２として保存される。なお、ＰＯＳ形式は積和形式または、ＣＮＦ（ｃｏｎｊｕｎｃｔｉｖｅ  ｎｏｒｍａｌ  ｆｏｒｍ）ともよばれる。
【００７１】
例えば、ユーザが図３のＶｅｒｉｌｏｇ−ＨＤＬファイルを作成し、当該ファイルを制約条件データ３０に保存したものとする。図３の内容に対して、論理合成処理４０および簡単化処理４１を実行すると、上述の式（６）の論理式が得られる。式（６）の論理式は、論理式データ３２として保存される。なお、生成部１１は、必ず簡単化処理４１を実行しなくてもよい。この場合、簡単化処理４１を経ていない論理式が論理式データ３２として保存される。
【００７２】
次に、ペナルティ項生成処理４２は、簡単化された論理式を、二値変数をパラメータとする関数に変換する。図８は、ペナルティ項生成処理４２の例を示したフローチャートである。以下では、図８を参照しながら処理を説明する。
【００７３】
まず、変換部１２は、記憶部１４の論理式データ３２から論理式を読み出す（ステップＳ２０１）。そして、変換部１２は、読み出した論理式の否定形を作る（ステップＳ２０２）。例えば、式（６）の論理式が読み出された場合、当該論理式の否定形は下記の式（１１）のようになる。
【数１１】
2020201598.tif 000013
【００７４】
次に、変換部１２は、記憶部１４の変換ルールデータ３３から、変換ルールを読み出す（ステップＳ２０３）。図９のテーブルでは、変換ルール（ルール５３）の一例が示されている。図９において、Ａはブール代数の変数を、ｘは変換後の変数をそれぞれ示しているものとする。ルール５３では、論理積が乗算に、論理和が加算に、ブール代数の変数の正リテラルが二値変数ｘに、ブール代数の変数の負リテラルが１から二値変数ｘを減算した内容に、それぞれ変換される。ｘは、ブール代数の各変数に対応する二値変数であるものとする。括弧で指定されている場合を含め、演算の実行順序は変更されないものとする。
【００７５】
変換部１２は、読み出した変換ルールに基づき、論理式の否定形を関数に変換する（ステップＳ２０４）。例えば、式（１１）に示した論理式の否定形が関数に変換された場合、関数ｐ（ｘａ，ｘｂ，ｘｃ）＝ｘａｘｂ＋１−ｘｃが生成される。関数ｐは、ペナルティ項に相当する。関数ｐにおいて、変数ｘａ，ｘｂ，ｘｃは、それぞれ式（６）および（１１）におけるブール代数の変数ａ，ｂ，ｃに対応している。変数ｘａ，ｘｂ，ｘｃの値は、０または１のいずれかとなる。関数ｐは、多重線形関数となる。そして、変換後の関数ｐは、ペナルティ項データ３４として記憶部１４に保存される（ステップＳ２０５）。
【００７６】
図８のフローチャートの説明は以上である。以降では、再び図７を参照しながら情報処理装置１が実行する処理の説明を行う。
【００７７】
目的関数データ３５には、ペナルティ項を含まない、本来の目的関数が格納されている。係数データ３６には、ペナルティ項に乗じる係数Ｃの値が格納されている。係数Ｃは、例えば、ユーザが目的関数およびペナルティ項の値を考慮して設定された正の実数である。例えば、制約条件を満たす決定変数の組合せ（実行可能解）における目的関数の最小値と、制約条件を満たさない決定変数の組合せにおける目的関数の最小値との差をＤとする。一方、制約条件を満たす決定変数の組合せにおけるペナルティ項の値と、制約条件を満たさない決定変数の組合せにおけるペナルティ項の値の差の最小値をＥとする。この場合、係数Ｃの値をＤ／Ｅより大きく設定することができる。使われるＰＵＢＯソルバ２の特性に応じて、係数Ｃをさらに大きく設定してもよい。
【００７８】
上述の係数Ｃの決め方は一例にしかすぎない。計算の実行前に、実行可能解における目的関数の最小値（すなわち、組合せ最適化問題の解）を正確に知ることはできない。したがって、係数Ｃの値は、問題の性質を考慮し、比較的大きく設定されることが多い。また、異なる値に係数Ｃを設定し、ＰＵＢＯソルバにおける計算が実行されることがある。これにより、当該問題について高精度な解が得られる係数Ｃの値が探索される。
【００７９】
はじめに、関数合成処理４３では、目的関数データ３５より本来の目的関数が読み出され、係数データ３６より係数Ｃの値が読み出される。そして、本来の目的関数と、係数Ｃで重み付けされたペナルティ項との和が求められる。例えば、本来の目的関数としてｘａ−ｘｂ＋２ｘｃが読み出された場合、下記の式（１２）が得られる。
【数１２】
2020201598.tif 000014
なお、変換部１２は、ペナルティ項を組合せ最適化問題の本来の目的関数に加算し、ペナルティ項を含む目的関数を生成する際、必ずペナルティ項をＣで重み付けしなくてもよい。
【００８０】
式（１２）の関数ｆｐ（ｘａ，ｘｂ，ｘｃ）は、ペナルティ項ｐを含む目的関数である。変換部１２は、関数ｆｐ（ｘａ，ｘｂ，ｘｃ）を、記憶部１４の合成済目的関数データ３７に保存する。例えば、係数Ｃを３とした場合、ｆｐ（ｘａ，ｘｂ，ｘｃ）＝３ｘａｘｂ＋ｘａ−ｘｂ−ｘｃ＋３となる。なお、定数項は、ＰＵＢＯソルバ２における求解処理の結果に影響しないため、定数項＋３を除いた関数、３ｘａｘｂ＋ｘａ−ｘｂ−ｘｃを合成済目的関数データ３７に保存してもよい。
【００８１】
情報処理装置１の制御部１３は、合成済目的関数データ３７の関数ｆｐをイジング問題の目的関数とし、ＰＵＢＯソルバ２の演算部２２に求解処理を実行させる。ＰＵＢＯソルバ２は、ペナルティ項または、ペナルティ項を含む目的関数の二値変数をスピンとしたイジング模型の解を計算する。ＰＵＢＯソルバ２が解の計算を行うイジング模型は、スピンの３次以上の項を含んでいてもよい。また、制御部１３は、ＰＵＢＯソルバ２より、求められた解を取得する。ＰＵＢＯソルバ２での計算の結果、ｘａ＝０、ｘｂ＝１、ｘｃ＝１という解が求められる。この解は、制約条件を充足している。
【００８２】
上述の例では、ペナルティ項が２次式となっているが、ペナルティ項は必ず２次式でなくてもよい。図１０では、決定変数の各組合せにおけるペナルティ項ｐ（ｘａ，ｘｂ，ｘｃ）＝ｘａｘｂ＋１−ｘｃの値をテーブルに示している。図１０のテーブルを関連技術の方法によって作成された図５の表と比較すると、以下のような違いがある。
【００８３】
図５のペナルティ項では、４つの変数が必要となっている。一方、図１０のペナルティ項では、使われる変数が３つとなっている。関連技術の方法では、補助変数の追加が必要となるが、本実施形態の方法では、補助変数の追加が発生しない。このため、ペナルティ項を含む目的関数における決定変数の数を減らし、ＰＵＢＯソルバ２において必要となるスピン数および計算量（計算リソース）を抑制することができる。
【００８４】
制約条件が満たされる場合、図５、図１０のペナルティ項の値はいずれも０となる。しかし、両者の方法を比較すると、制約条件が満たされない場合におけるペナルティ項の値域に違いがある。制約条件が満たされない場合における、図１０のペナルティ項の値域は［１，２］である。一方、制約条件が満たされない場合における、図５のペナルティ項の値域は［１，６］である。上述の係数Ｃとして、Ｄ／Ｅより大きな値を選ぶ方法を用いた場合を考える。この場合、Ｄ＝１、Ｅ＝１となるため、係数Ｃの設定値はいずれの方法においても同じ値に設定される。ただし、本実施形態の方法の方がペナルティ項の値域が狭くなっているため、ペナルティ項がＰＵＢＯソルバ２の演算精度に与える影響が小さくなる。すなわち、本実施形態の方法によって生成されたペナルティ項は、ＰＵＢＯソルバにおける求解処理を阻害しにくいといえる。
【００８５】
２段論理への簡単化が行われるため、簡単化処理４１で生成される論理式において、論理積の項で同じ変数が重複して現れることはなくなる。このため、ペナルティ項生成処理４２によって生成される関数ｐに２次以上のべき乗が含まれることはない。したがって、本実施形態の方法によって生成されるペナルティ項は多重線形関数となる。なお、論理式の簡単化手法によっては、同じ変数が重複して現れている項が生成される可能性がある。このような場合には、変数の重複を検出し、重複した変数を自動的に除去すればよい。
【００８６】
上述では、０または１のいずれかの値をとる決定変数が使われる場合の処理について説明した。−１または＋１のいずれかの値をとる決定変数を使う場合には、ペナルティ項生成処理４２で図１１に示した変換ルール（ルール５４）を適用すればよい。図１１においも、Ａはブール代数の変数を、ｘは変換後の変数をそれぞれ示している。ルール５４では、論理積が乗算に、論理和が加算に、ブール代数の変数の正リテラルが１に二値変数ｘを加算し２で除算した内容に、ブール代数の変数の負リテラルが１から二値変数ｘを減算し２で除算した内容にそれぞれ変換される。ｘは、ブール代数の各変数に対応する二値変数であるものとする。括弧で指定されている場合を含め、演算の実行順序は変更されないものとする。
【００８７】
これまで、変換部１２で使われる複数の変換ルール（ルール５３、５４）を説明した。これらの変換ルールは、論理式を変換し、二値変数をパラメータとする、ペナルティ項を生成する際に使用することができる変換ルールの例にしかすぎない。したがって、変換部１２は、論理式の論理積および論理和を算術演算に、論理変数の正リテラルおよび論理変数の負リテラルを、二値変数を含む内容に変換する、その他の変換ルールを使ってもよい。
【００８８】
次に、上述のナップサック問題のインスタンス例に対して、本実施形態の方法を適用した場合について説明する。図１２では、上述のナップサック問題のインスタンス例における制約条件をハードウェア記述言語によって記述している。図１２では、Ｖｅｒｉｌｏｇ−ＨＤＬが使われている。図１２では、ｉｎ［１］〜ｉｎ［５］の５ビットの入力がそれぞれ決定変数ｘ１〜ｘ５に対応している。ナップサックに詰めることが可能な荷物の重量の合計に係る上限Ｗは１５であり、荷物ｗ１〜ｗ５の重さは、７、２、５、４、３であった。この制約条件を定式化すると、下記の式（１３）が得られる。
【数１３】
2020201598.tif 000015
【００８９】
図１２では、式（１３）の制約条件を満たすときに“１”、式（１３）の制約条件を満たさないときに“０”の１ビット値（ｏｕｔ）を出力している。ユーザは、例えば、図１２の内容を含むＶｅｒｉｌｏｇ−ＨＤＬファイルを作成し、記憶部１４の制約条件データ３０に当該ファイルを保存する。そして、図７の説明で述べたように、論理合成処理４０および簡単化処理４１が実行されることによって、記憶部１４の論理式データ３２にブール代数の式が保存される。下記の式（１４）は、式（１３）の制約条件に対応するブール代数の式である。
【数１４】
2020201598.tif 000016
ここで、ブール代数の変数Ｘ１、Ｘ２、Ｘ３、Ｘ４、Ｘ５は、それぞれ式（１３）の変数ｘ１、ｘ２、ｘ３、ｘ４、ｘ５に対応している。
【００９０】
ペナルティ項生成処理４２では、論理式データ３２から上述のブール代数の式（１４）が読み出され、式（１４）の否定形が生成される。下記の式（１５）は、式（１４）の否定形である。
【数１５】
2020201598.tif 000017
【００９１】
そして、式（１５）に、変換ルール（図９のルール５３）を適用し、二値変数ｘをパラメータとする関数を生成する。下記の式（１６）は、式（１５）の変換によって生成された関数であり、当該関数はペナルティ項ｐに相当する。
【数１６】
2020201598.tif 000018
ここで、二値変数ｘ１、ｘ２、ｘ３、ｘ４、ｘ５は、それぞれ式（１４）の変数Ｘ１、Ｘ２、Ｘ３、Ｘ４、Ｘ５に対応している。
【００９２】
ペナルティ項が生成されたら、関数合成処理４３によってペナルティ項に係数Ｃを乗じ、本来の目的関数と加算し、ペナルティ項を含む目的関数（合成済目的関数）が生成される。ペナルティ項を含む目的関数を使って、ＰＵＢＯソルバ２での求解処理４４が実行される。
【００９３】
関連技術による方法によって、ペナルティ項を生成すると、式（４）に示したように、Ｗ＝１５個の補助変数の追加が必要となる。“ｌｏｇ  ｔｒｉｃｋ”とよばれる手法を使ったとしても、少なくとも４個の補助変数の追加が必要となる。しかし、本実施形態の方法によってペナルティ項を生成すると、補助変数の追加が不要となる。ペナルティ項を含む目的関数の決定変数の個数が増えないため、ＰＵＢＯソルバ２で必要なスピン数や計算時間（すなわち、計算リソースの消費）を抑制することができる。
【００９４】
制約条件を満たす決定変数の組合せ（実行可能解）では、本実施形態による方法と、関連技術による方法のいずれが用いられた場合でも、ペナルティ項の値が０になる。本実施形態による方法では、制約条件を満たさない場合におけるペナルティ項の値域は［１，３］となるが、関連技術による方法では、制約条件を満たさない場合におけるペナルティ項の値域は［１，１４５９６］となる。ペナルティ項の係数Ｃとして、Ｄ／Ｅより大きな値を選ぶ方法を用いた場合を想定する。この場合、Ｄ＝１、Ｅ＝１となるため、係数Ｃの設定値はいずれの方法においても同じ値に設定される。関連技術による方法のように、ペナルティ項の値域が大きくなりすぎると、ＰＵＢＯソルバ２における求解処理を阻害する要因となり、場合によっては求解が困難となるおそれがある。
【００９５】
説明の都合上、Ｎ＝５、Ｗ＝１５という小規模なインスタンスを例に、ナップサック問題への適用を説明した。現実に求解の対象となる問題の規模は、これより大きくなることが一般的である。したがって、解決したい課題に対して、本実施形態に係る方法を適用してペナルティ項を生成することにより、求解の精度改善、必要なスピン数の抑制、計算時間の削減などの効果はより顕著となる。
【００９６】
なお、ＰＵＢＯソルバの種類・構成によっては、ペナルティ項を含む目的関数の微分（または、勾配）を利用した計算が実行される場合もある。一般に、ペナルティ項を含む目的関数の値域が大きくなると、微分（勾配）の絶対値も大きくなる。したがって、ＰＵＢＯソルバの計算でペナルティ項を含む目的関数の値が直接使われない場合であっても、ペナルティ項の値域を抑えることは、計算精度の改善に寄与するといえる。
【００９７】
本実施形態に係る情報処理システムを用いることにより、ペナルティ項の設計に係る難易度と負担を軽減し、専門的な知見を有しないユーザでも、ペナルティ項の設計を行うことができる。また、本実施形態に係る情報処理システムを使うと、決定変数の追加を最小限にし、ペナルティ項を含む目的関数を生成することが可能となる。また、ペナルティ項の値域が小さく抑えられているため、本来の目的関数の値に比べ、ペナルティ項の値が大きくなりすぎることもなくなる。したがって、コンピュータ（例えば、ＰＵＢＯソルバなどのソルバ）における高精度な計算および求解の成功率（計算で実行可能解を得られる確率）の向上を実現し、組合せ最適化問題の求解を促進することが可能となる。
【００９８】
上述の情報処理装置では、生成したペナルティ項を本来の目的関数と合成し、ペナルティ項を含む目的関数を使い、組合せ最適化問題を解いていた。ただし、必ず生成されたペナルティ項を本来の目的関数と合成しなくてもよい。例えば、以下で説明するように、ペナルティ項のみを使って求解処理を行ってもよい。上述の情報処理システムと、構成は同様であるため、以下では実行される処理における相違点を中心に説明をする。また、必要に応じ、図１に示された構成要素を参照するものとする。
【００９９】
図１３は、情報処理装置で実行される各処理ステップとデータとの関係の第２例を示している。図７（第１例）との第１の相違点は、ペナルティ項データ３４に格納されたペナルティ関数（ペナルティ項）を使い、ＰＵＢＯソルバ２での求解が行われている点である。図７との第２の相違点は、目的関数データ３５、係数データ３６、合成済目的関数データ３７が使われておらず、関数合成処理４３が実行されていない点である。図１３におけるその他のデータおよび処理は、図７の場合と同様である。
【０１００】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【０１０１】
１  情報処理装置
２  ＰＵＢＯソルバ
３  操作装置
４  表示装置
５  ネットワーク
６、７  情報端末
８  デジタル回路
１０、２２  演算部
１１  生成部
１２  変換部
１３、２１  制御部
１４、２３  記憶部
１５  入力部
１６  出力部
１７、２０  通信部
３０  制約条件データ
３１  内部表現データ
３２  論理式データ
３３  変換ルールデータ
３４  ペナルティ項データ
３５  目的関数データ
３６  係数データ
３７  合成済目的関数データ
３８  計算結果データ
４０  論理合成処理
４１  簡単化処理
４２  ペナルティ項生成処理
４３  関数合成処理
４４  求解処理
５０、５１、５２  問題
【図１】
2020201598.tif 000019
【図２】
2020201598.tif 000020
【図３】
2020201598.tif 000021
【図４】
2020201598.tif 000022
【図５】
2020201598.tif 000023
【図６】
2020201598.tif 000024
【図７】
2020201598.tif 000025
【図８】
2020201598.tif 000026
【図９】
2020201598.tif 000027
【図１０】
2020201598.tif 000028
【図１１】
2020201598.tif 000029
【図１２】
2020201598.tif 000030
【図１３】
2020201598.tif 000031