(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024023096
(43)【公開日】2024-02-21
(54)【発明の名称】変換装置、演算装置、変換方法、演算方法およびプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20240214BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022126688
(22)【出願日】2022-08-08
【国等の委託研究の成果に係る記載事項】(出願人による申告)2020年度、国立研究開発法人新エネルギー・産業技術総合開発機構「高効率・高速処理を可能とするAIチップ・次世代コンピューティングの技術開発/次世代コンピューティング技術の開発」委託研究、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100106909
【弁理士】
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100134544
【弁理士】
【氏名又は名称】森 隆一郎
(74)【代理人】
【識別番号】100149548
【弁理士】
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100162868
【弁理士】
【氏名又は名称】伊藤 英輔
(72)【発明者】
【氏名】岡本 穏治
(57)【要約】
【課題】バイナリ変数の多項式、かつ、三角行列に対応している式を得ることができるようにする。
【解決手段】変換装置が、複数のバイナリ変数が、全順序付けされた識別番号で識別され、バイナリ変数ごとの定数が、その定数が紐付けられているバイナリ変数の識別番号で識別されている変換対象の式、かつ、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている定数を用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項を含む変換対象の式を、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じである式に変換する変換手段を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数のバイナリ変数が、全順序付けされた識別番号で識別され、バイナリ変数ごとの定数が、その定数が紐付けられているバイナリ変数の識別番号で識別されている変換対象の式、かつ、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている定数を用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項を含む変換対象の式を、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じである式に変換する変換手段
を備える変換装置。
【請求項2】
前記変換対象の式は、同じバイナリ変数の積を含み、
前記変換手段は、同じバイナリ変数の積を、1つのそのバイナリ変数に置き換える、
請求項1に記載の変換装置。
【請求項3】
前記変換手段は、バイナリ変数に、バイナリ変数ごとの第一定数が掛け合わせられた積の、全てのバイナリ変数についての合計を、バイナリ変数に、バイナリ変数ごとの第二定数が掛け合わせられた積の、全てのバイナリ変数についての合計で割る分数と、その分数の目標値との差の二乗と、バイナリ変数に、バイナリ変数ごとの第三定数が掛け合わせられた積を含む式とを重み付け合計する式を、その式を通分した式の分子から分母と所定の変数との積を減算した式に変換する、
請求項1に記載の変換装置。
【請求項4】
前記変換手段は、変換対象の式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、前記補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式を加える、
請求項1に記載の変換装置。
【請求項5】
第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得する問題取得手段と、
各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、前記第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、前記目標値との差の2乗を示す式と、前記候補における第三特性値の合計を含む式との重み付け合計を含む第一式を生成する目的関数生成手段と、
前記第一式を、その第一式を通分した式における分子から分母と所定の変数との積を減算した第二式に変換する分数式変換手段と、
前記第二式を、その第二式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、前記補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式を加えた第三式に変換する補助ビット導入手段と、
前記第三式を、その第三式を多項式に展開した第四式に変換する展開手段と、
前記第四式を、その第四式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている前記第一特性値、前記第二特性値、または、前記第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた、第五式に変換する項調整手段と、
前記第五式を用いて、前記問題の解としての選択肢の組み合わせを探索する演算実行手段と、
を備える演算装置。
【請求項6】
第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得する問題取得手段と、
各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、前記第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、前記目標値との差の2乗を示す式と、前記候補における第三特性値の合計を含む式との重み付け合計を含む式を通分した式における分子から分母と所定の変数との積を減算する式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、前記補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式が加えられた式を多項式に展開した式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている前記第一特性値、前記第二特性値、または、前記第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた式を生成する目的関数設定手段と、
生成された式を用いて、前記問題の解としての選択肢の組み合わせを探索する演算実行手段と、
を備える演算装置。
【請求項7】
コンピュータが、
複数のバイナリ変数が、全順序付けされた識別番号で識別され、バイナリ変数ごとの定数が、その定数が紐付けられているバイナリ変数の識別番号で識別されている変換対象の式、かつ、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている定数を用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項を含む変換対象の式を、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じである式に変換する
ことを含む変換方法。
【請求項8】
コンピュータが、
第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得し、
各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、前記第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、前記目標値との差の2乗を示す式と、前記候補における第三特性値の合計を含む式との重み付け合計を含む式を通分した式における分子から分母と所定の変数との積を減算する式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、前記補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式が加えられた式を多項式に展開した式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている前記第一特性値、前記第二特性値、または、前記第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた式を生成し、
生成された式を用いて、前記問題の解としての選択肢の組み合わせを探索する
ことを含む演算方法。
【請求項9】
コンピュータに、
複数のバイナリ変数が、全順序付けされた識別番号で識別され、バイナリ変数ごとの定数が、その定数が紐付けられているバイナリ変数の識別番号で識別されている変換対象の式、かつ、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている定数を用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項を含む変換対象の式を、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じである式に変換すること
を実行させるためのプログラム。
【請求項10】
コンピュータに、
第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得することと、
各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、前記第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、前記目標値との差の2乗を示す式と、前記候補における第三特性値の合計を含む式との重み付け合計を含む式を通分した式における分子から分母と所定の変数との積を減算する式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、前記補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式が加えられた式を多項式に展開した式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている前記第一特性値、前記第二特性値、または、前記第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた式を生成することと、
生成された式を用いて、前記問題の解としての選択肢の組み合わせを探索することと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、変換装置、演算装置、変換方法、演算方法およびプログラムに関する。
【背景技術】
【0002】
解探索の手法を用いる際、目的関数など解探索に用いられる式に制約が課されている場合がある。
例えば、特許文献1では、3次以上の二値式データを、補助ビットを用いて擬似イジングモデルに変換し、擬似イジングモデルを用いて組合せ最適化問題を解くことが記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
バイナリ変数の多項式、かつ、三角行列に対応している式を得ることができれば、その変数を用いた解探索の手法として、三角行列を前提としている手法を用いることができると期待される。
【0005】
本発明の目的の一例は、上述の課題を解決することのできる変換装置、演算装置、変換方法、演算方法およびプログラムを提供することである。
【課題を解決するための手段】
【0006】
本発明の第1の態様によれば、変換装置は、複数のバイナリ変数が、全順序付けされた識別番号で識別され、バイナリ変数ごとの定数が、その定数が紐付けられているバイナリ変数の識別番号で識別されている変換対象の式、かつ、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている定数を用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項を含む変換対象の式を、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じである式に変換する変換手段を備える。
【0007】
本発明の第2の態様によれば、演算装置は、第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得する問題取得手段と、各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、前記第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、前記目標値との差の2乗を示す式と、前記候補における第三特性値の合計を含む式との重み付け合計を含む第一式を生成する目的関数生成手段と、前記第一式を、その第一式を通分した式における分子から分母と所定の変数との積を減算した第二式に変換する分数式変換手段と、前記第二式を、その第二式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、前記補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式を加えた第三式に変換する補助ビット導入手段と、前記第三式を、その第三式を多項式に展開した第四式に変換する展開手段と、前記第四式を、その第四式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている前記第一特性値、前記第二特性値、または、前記第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた、第五式に変換する項調整手段と、前記第五式を用いて、前記問題の解としての選択肢の組み合わせを探索する演算実行手段と、を備える。
【0008】
本発明の第3の態様によれば、演算装置は、第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得する問題取得手段と、各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、前記第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、前記目標値との差の2乗を示す式と、前記候補における第三特性値の合計を含む式との重み付け合計を含む式を通分した式における分子から分母と所定の変数との積を減算する式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、前記補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式が加えられた式を多項式に展開した式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている前記第一特性値、前記第二特性値、または、前記第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた式を生成する目的関数設定手段と、生成された式を用いて、前記問題の解としての選択肢の組み合わせを探索する演算実行手段と、を備える。
【0009】
本発明の第4の態様によれば、変換方法は、コンピュータが、複数のバイナリ変数が、全順序付けされた識別番号で識別され、バイナリ変数ごとの定数が、その定数が紐付けられているバイナリ変数の識別番号で識別されている変換対象の式、かつ、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている定数を用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項を含む変換対象の式を、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じである式に変換することを含む。
【0010】
本発明の第5の態様によれば、演算方法は、コンピュータが、第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得し、各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、前記第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、前記目標値との差の2乗を示す式と、前記候補における第三特性値の合計を含む式との重み付け合計を含む式を通分した式における分子から分母と所定の変数との積を減算する式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、前記補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式が加えられた式を多項式に展開した式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている前記第一特性値、前記第二特性値、または、前記第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた式を生成し、生成された式を用いて、前記問題の解としての選択肢の組み合わせを探索することを含む。
【0011】
本発明の第6の態様によれば、プログラムは、コンピュータに、複数のバイナリ変数が、全順序付けされた識別番号で識別され、バイナリ変数ごとの定数が、その定数が紐付けられているバイナリ変数の識別番号で識別されている変換対象の式、かつ、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている定数を用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項を含む変換対象の式を、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じである式に変換することを実行させるためのプログラムである。
【0012】
本発明の第7の態様によれば、プログラムは、コンピュータに、第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得することと、各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、前記第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、前記目標値との差の2乗を示す式と、前記候補における第三特性値の合計を含む式との重み付け合計を含む式を通分した式における分子から分母と所定の変数との積を減算する式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、前記補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式が加えられた式を多項式に展開した式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている前記第一特性値、前記第二特性値、または、前記第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた式を生成することと、生成された式を用いて、前記問題の解としての選択肢の組み合わせを探索することと、を実行させるためのプログラムである。
【発明の効果】
【0013】
本発明によれば、バイナリ変数の多項式、かつ、三角行列に対応している式を得ることができる。
【図面の簡単な説明】
【0014】
【
図1】第一実施形態に係る演算装置の構成の例を示す図である。
【
図2】第一実施形態に係る演算装置11が記憶するメニュー情報の例を示す図である。
【
図3】第一実施形態での各メニューにおけるタンパク質由来の摂取熱量比、脂質由来の摂取熱量比、および、炭水化物由来の摂取熱量比の例を示す図である。
【
図4】第一実施形態に係る第一の実験でのメニュー選択の結果の例を示す図である。
【
図5】第一実施形態に係る第二の実験でのメニュー選択の結果の例を示す図である。
【
図6】第二実施形態に係る演算装置の構成の例を示す図である。
【
図7】第三実施形態に係る演算システムの構成の例を示す図である。
【
図8】第一実施形態に係る変換装置22の構成の例を示す図である。
【
図9】第四実施形態に係る変換装置の構成の例を示す図である。
【
図10】第五実施形態に係る演算装置の構成の例を示す図である。
【
図11】第六実施形態に係る演算装置の構成の例を示す図である。
【
図12】第七実施形態に係る変換方法における処理の手順の例を示す図である。
【
図13】第八実施形態に係る演算方法における処理の手順の例を示す図である。
【
図14】第九実施形態に係る演算方法における処理の手順の例を示す図である。
【
図15】少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
【発明を実施するための形態】
【0015】
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0016】
<第一実施形態>
図1は、第一実施形態に係る演算装置の構成の例を示す図である。
図1に示す構成で、演算装置11は、通信部110と、表示部120と、操作入力部130と、記憶部170と、制御部180とを備える。制御部180は、問題取得部181と、目的関数設定部182と、演算実行部183とを備える。目的関数設定部182は、目的関数生成部191と、変換部192とを備える。変換部192は、分数式変換部193と、補助ビット導入部194と、展開部195と、項調整部196とを備える。
【0017】
演算装置11は、解探索問題を取得し、取得した問題の解を探索する。演算装置11が、ノイマン型コンピュータ、または、量子コンピュータ、あるいはこれらの組み合わせを用いて構成されていてもよい。
【0018】
通信部110は、他の装置と通信を行う。例えば、通信部110は、演算装置11が解くべき問題に関する各種情報を他の装置から受信する。
表示部120は、例えば液晶パネルまたはLED(Light Emitting Diode、発光ダイオード)パネル等の表示画面を備え、各種画像を表示する。例えば、表示部120が、演算装置11が取得した解を表示するようにしてもよい。また、表示部120が、ユーザ操作を受け付けるための入力画面を表示するようにしてもよい。
【0019】
操作入力部130は、例えばキーボードおよびマウス等の入力デバイスを備え、ユーザ操作を受け付ける。例えば、操作入力部130が、演算装置11が解くべき問題に関する各種設定を行うユーザ操作を受け付けるようにしてもよい。
記憶部170は、各種データを記憶する。例えば、記憶部170は、演算装置11が解くべき問題に関する各種情報を記憶する。記憶部170は、演算装置11が備える記憶デバイスを用いて構成される。
【0020】
制御部180は、演算装置11の各部を制御して各種処理を行う。制御部180の機能またはその一部が、演算装置11が備えるCPU(Central Processing Unit、中央処理装置)が、記憶部170からプログラムを読み出して実行することで実行されてもよい。また、制御部180の機能またはその一部が、量子コンピュータを用いて実行されてもよい。
【0021】
問題取得部181は、演算装置11が解くべき解探索問題を取得する。例えば、問題取得部181は、演算装置11が解くべき解探索問題に関する各種情報を、通信部110および操作入力部130を介して取得する。
問題取得部181は、問題取得手段の例に該当する。
【0022】
目的関数設定部182は、演算装置11が解探索を行うための目的関数を設定する。
目的関数設定部182は、目的関数設定手段の例に該当する。
目的関数生成部191は、問題取得部181が取得した問題に基づいて目的関数を生成する。
目的関数生成部191は、目的関数生成手段の例に該当する。目的関数生成部191が生成する目的関数を示す式は、第一式の例に該当する。
【0023】
変換部192は、目的関数生成部191が生成した目的関数を、演算装置11が用いる解探索手法に適した目的関数に変換する。
変換部192は、変換手段の例に該当する。
分数式変換部193は、目的関数が分数で示される場合に、その目的関数を、分数の分子(Numerator)から、分母(Denominator)と所定の変数との積を減算した式で示される目的関数に変換する。この変数の値が分数の値に等しいときに、変換後の目的関数の値が0になる。例えば、ディンケルバック(Dinkelbach)アルゴリズムを用いてこの変数の値を決定することで、変換前の目的関数の値を算出することができる。ただし、演算装置11が解探索を行う方法は、ディンケルバックアルゴリズムを用いる方法に限定されない。
分数式変換部193は、分数式変換手段の例に該当する。分数式変換部193が第一式を変換して得られる式は、第二式の例に該当する。
【0024】
また、目的関数生成部191が、バイナリ(Binary)変数を用いた目的関数を生成することとし、変換部192による変換で得られる目的関数の次数を下げるために補助ビットを導入することとする。
ここでいうバイナリ変数は、0または1の値をとる2値変数である。ここでの0は、ブール代数(Boolean Algebra)における加法単位元(零元)であり、1は、ブール代数における乗法単位元である。バイナリ変数は、-1または+1の値をとるイジング変数に変換することができる。
また、バイナリ変数の多項式について、1つの項に含まれるバイナリ変数の個数の最大値を、その多項式の次数と称する。また、多項式に展開する前の式の次数は、展開して得られる多項式の次数と同じ次数と定義する。
【0025】
ここでは、2つのバイナリ変数の積の値を示すバイナリ変数を、補助ビットとして導入することとする。具体的には、補助ビット導入部194は、補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式を、目的関数に加える。2つのバイナリ変数の積に代えて1つのバイナリ変数を用いることで、式の次数を1つ下げることができる。
補助ビット導入部194は、補助ビット導入手段の例に該当する。補助ビット導入部194が第二式を変換して得られる式は、第三式の例に該当する。
【0026】
展開部195は、目的関数を示す式を多項式に展開する。
展開部195は、展開手段の例に該当する。展開部195が第三式を展開(多項式展開)して得られる式は、第四式の例に該当する。
【0027】
項調整部196は、目的関数を示す多項式を、三角行列に対応する式に変換する。ここでいう、多項式が三角行列に対応することは、多項式の各項の係数を、三角行列の要素に割り当てることができることである。
項調整部196が変換対象とする式では、バイナリ変数が、全順序付けされた識別番号で識別される。また、項調整部196が変換対象とする式では、バイナリ変数ごとに定数が紐付けられ、バイナリ変数の識別番号で定数も識別される。
【0028】
項調整部196は、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている定数を用いた式で表される係数と掛け合わせられている複数の項を含み、かつ、それら複数の項の何れも、3つの識別番号が3つの変数で示されている共通式で表すことができる式を、変換対象の式として取得する。識別番号を示す変数を識別変数とも称する。
項調整部196は、変換対象の式を、項内での識別番号の交換によって、上記の複数の項の全てにおいて、上記の共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じである式に変換する。
項調整部196が第四式を変換して得られる式は、第五式の例に該当する。
【0029】
例えば、共通式が、aigjakxixjxkで表され、識別変数i、j、kの何れも1、2、・・・、Nの正の整数値をとり得る場合について考える。この場合、共通式aigjakxixjxkで表される項には、i<jである項と、i=jである項と、i>jである項とが含まれている。
【0030】
この場合、i>jである項を、i<jとなるように変換できれば、何れの項でもi≦jとすることができる。
変換後の各項の要素を、上三角行列の要素と対応付けることができる。例えば、識別変数kごとの行列Akの第i行、第j列の要素に、バイナリ変数がxixjxkの項の係数を割り当てれば、列番号j≧行番号iとなり、共通式で表される全ての項の係数を、行列の対角から右上の要素に割り当てることができる。ここでいう、行列の対角の要素は、行番号が列番号と同じである要素である。
【0031】
係数が割り当てられない要素の値を0にすれば、各行列を三角行列とすることができる。
さらに、何れの項でもi≦j≦kとなるように式を変換し、2つのバイナリ変数の積の値を表すバイナリ変数を補助ビットとして導入すると、共通式で表される全ての項の係数を、1つの三角行列の要素に割り当てることができる。
【0032】
そこで、項調整部196は、項内で識別番号i、j、kを入れ替えることで、共通式aigjakxixjxkで表される全ての項における識別番号i、j、kの順序関係を、i≦j≦kにする。
例えば、aigjakxixjxk=a5g2a7x5x2x7の項では、i=5、j=2、k=7であり、j≦i≦kである。項調整部196は、a5g2a7x5x2x7の項について、iとjとを入れ替えて、i=2、j=5、k=7とする。a5g2a7x5x2x7の項は、式(1)のように表すことができる。
【0033】
【0034】
また、項調整部196による変換前の多項式では、識別変数i、j、kの何れも1、2、・・・、Nの正の整数値をとり得るので、式(1)で表される項の他に、aigjakxixjxk=a2g5a7x2x5x7の項も含まれる。項調整部196は、aigjakxixjxk=a2g5a7x2x5x7の項と、giajakxixjxk=g2a5a7x2x5x7の項とを足し合わせて、(aigjak+giajak)xixjxk=(a2g5a7+g2a5a7)x2x5x7と纏める。これにより、項調整部196は、バイナリ変数がx2x5x7の項の係数を1つに纏める。
【0035】
また、項調整部196は、同じバイナリ変数の積を、1つのそのバイナリ変数に置き換える。例えば、共通式aigjakxixjxkで表される項で、i=jである項は、aigiakxixixkと表される。項調整部196は、xixiをxiで置き換えて、aigiakxixkとする。この変換は、xixi=xiであることに基づく。
項調整部196は、項調整手段の例に該当する。項調整部196が第四式を変換して得られる式は、第五式の例に該当する。
【0036】
項調整部196が行う、同じバイナリ変数の積を、1つのそのバイナリ変数に置き換える変換により、3つのバイナリ変数を含む項を、2つのバイナリ変数を含む項に変換できる。また、i=jのときのaigjakxixjxkは、行列の対角の要素と対応付けられる。項調整部196によれば、対角の要素の値が0である三角行列に対応する式を得られる。
【0037】
演算実行部183は、目的関数設定部182が設定した目的関数を用いて、問題取得部181が取得した問題に対する解を探索する。具体的には、演算実行部183は、目的関数の値がなるべく小さくなるような解を探索する。
演算実行部183は、演算実行手段の例に該当する。
【0038】
演算実行部183が、QUBO(Quadratic Unconstrained Binary Optimization)を用いた量子アニーリングまたはシミュレーテッドアニーリングにて、解探索を行うようにしてもよい。QUBOでは、例えば、xi、xjを0または1の値をとるバイナリ変数として、式(2)に示すコスト関数f(x)を最小化するように解探索を行う。
【0039】
【0040】
Qijは、解くべき問題を表すパラメータである。
QUBOは、+1または-1の値をとるイジング変数を用いるイジング模型(Ising Model)と等価変換できることが知られている。
また、QUBOのソルバは、三角行列を前提としているものが多い。具体的には、QUBOのソルバが用いるモデルには、対称行列を前提とし、対称行列のうち三角行列の部分の表現に適したものがある。
目的関数設定部182が設定する目的関数は、このようなQUBOのモデルで表現するのに適した形式になっている。
【0041】
(メニュー選択への適用例)
演算装置11が行う処理について、演算装置11が食事のメニュー選択に用いられる場合を例に、さらに説明する。具体的には、問題取得部181が、PFCバランスの条件を満たすメニューを選択する問題を取得した場合を例に説明する。
ここでは、飲食物の選択の単位をメニューと称する。例えば、飲食店での飲食の場合、個々の定食または単品など、飲食店での注文および提供の単位となるものをメニューと称する。複数のメニューのうち、設定された条件を満たすメニューの組み合わせを選択することを、メニュー選択とも称する。
【0042】
PFCバランスとは、タンパク質(Protein;P)、脂質(FAT;F)、炭水化物(Carbohydrate;C)それぞれに由来する摂取熱量の、総摂取熱量に対する比(割合)、または、その比を適切な範囲内に収めることを指す。PFCバランスは、エネルギー産生栄養素バランスとも称される。
【0043】
例えば、厚生労働省による「日本人の食事摂取基準」(2020年版)では、生活習慣病の発症と重症化の予防を目的として、1歳から49歳の場合の目標範囲が、タンパク質:13%から20%、脂質:20%から30%、炭水化物:50%から65%に設定されている。
PFCバランスが適切な値であることを、PFCバランスを満たすとも称する。PFCバランスが適切な値でないことを、PFCバランスから外れるとも称する。
【0044】
外食では特に、PFCバランスから外れたメニューが多く、食事ごとにPFCバランスを満たすことが困難であることが考えられる。例えば、PFCバランスを重視すると同一のメニューしか選択できず、健康および嗜好の両面から適切でない、といったことが生じ得る。
【0045】
そこで、外食において食事ごとにPFCバランスを満たすのではなく、演算装置11が、複数回の食事におけるメニューの組み合わせでPFCバランスを満たすように、メニューの組み合わせを提案するようにする。
また、演算装置11では、PFCバランス以外にも評価指標を設定できるようにする。演算装置11は、PFCバランスを満たし、かつ、評価指標で示される目的に合うような、メニューの組み合わせを提案する。
【0046】
具体的には、演算装置11は、PFCバランスおよび評価指標に関する最適化問題を解いて、N個のメニューのうちM個のメニューを選択する。N、Mは、N≧Mの正の整数である。N、Mの何れも、値が予め設定されているものとする。ここでの予めは、演算装置11が最適化問題を解く前である。
【0047】
N個のメニューに、1からNまでの識別番号を付し、1番目のメニュー、2番目のメニュー、・・・、N番目のメニューのように表記する。
i番目のメニュー(iは、1≦i≦Nの整数)のタンパク質由来の摂取熱量をproiで表し、総熱量をtotiで表す。また、バイナリ変数xiを用いて、i番目のメニューを選択することをxi=1で表し、選択しないことをxi=0で表す。
【0048】
選択されたメニューの組み合わせにおける、総熱量に対するタンパク質由来の摂取熱量の比は、(Σproi×xi)/(Σtoti×xi)と表すことができる。例えば、総熱量に対するタンパク質由来の摂取熱量の比の目標範囲を13%から20%の範囲とすると、この目標範囲を満たすとの制約条件は、0.13≦(Σproi×xi)/(Σtoti×xi)≦0.2と表される。
総熱量に対するタンパク質由来の摂取熱量の比を、タンパク質由来の摂取熱量比とも称する。
i番目のメニューのタンパク質由来の摂取熱量proiは、第一特性値の例に該当する。i番目のメニューの総熱量をtotiは、第二特性値の例に該当する。
【0049】
また、i番目のメニューの脂質由来の摂取熱量をfatiで表す。選択されたメニューの組み合わせにおける、総熱量に対する脂質由来の摂取熱量の比は、(Σfati×xi)/(Σtoti×xi)と表すことができる。例えば、総熱量に対する脂質由来の摂取熱量の比の目標範囲を20%から30%の範囲とすると、この目標範囲を満たすとの制約条件は、0.2≦(Σfati×xi)/(Σtoti×xi)≦0.3と表される。
総熱量に対する脂質由来の摂取熱量の比を、脂質由来の摂取熱量比とも称する。また、 総熱量に対する炭水化物由来の摂取熱量の比を、炭水化物由来の摂取熱量比とも称する。
i番目のメニューの脂質由来の摂取熱量fatiは、第一特性値のもう1つの例に該当する。
【0050】
タンパク質由来の摂取熱量比と、脂質由来の摂取熱量比とを、1から減算した値が、炭水化物由来の摂取熱量比であると見做すことができる。このことから、タンパク質由来の摂取熱量比、および、脂質由来の摂取熱量比の何れも目標範囲を満たす場合、炭水化物由来の摂取熱量比も、おおよそ目標範囲を満たすと考えられる。
【0051】
例えば、タンパク質由来の摂取熱量比、および、脂質由来の摂取熱量比が、それぞれ上記の目標範囲を満たす場合、炭水化物由来の摂取熱量比は、50%から67%の範囲内の値となる。炭水化物由来の摂取熱量比の目標範囲が50%から65%に設定されている場合、50%から67%の範囲内の値は、おおよそ目標範囲を満たしていると評価できる。
【0052】
また、評価指標の例として、コストパフォーマンス(Value For The Price)の評価指標が設定されているものとする。ここでは、メニューの価格に対するユーザの満足度(例えば、ユーザがそのメニューを食べたい度合い)をコストパフォーマンスと称する。i番目のメニューの価格をfiで表し、ユーザがそのメニューを食べたい度合いをgiで表すこととし、コストパフォーマンスの評価指標を(Σfi×xi)/(Σgi×xi)で計算できると仮定する。(Σfi×xi)/(Σgi×xi)の値が小さいほど、コストパフォーマンスの評価が高いことを表す。
ユーザがi番目のメニューを食べたい度合いgiは、第三特性値の例に該当する。
【0053】
ユーザがi番目のメニューを食べたい度合いgiは、例えば、ユーザが、操作入力部130を用いたユーザ操作によって入力する。あるいは、各メニューの売上または人気投票等に基づいて、客がi番目のメニューを食べたい度合いの一般的傾向がgiとして設定されていてもよい。この場合、通信部110が、メニューに関する情報を提供するサーバ装置と通信を行って、客がi番目のメニューを食べたい度合いの一般的傾向を示す情報を受信するようにしてもよい。
【0054】
問題取得部181は、例えば、通信部110を介してメニューに関する各種情報、および、PFCバランスの目標値に関する情報を取得し、また、操作入力部130を介してユーザ操作による各種設定を受け付けることで、問題設定を行う。
例えば、問題取得部181は、メニューに関する情報を提供するサーバ装置から、メニューの個数Nを示す情報と、各メニューの総熱量toti、タンパク質由来の摂取熱量proi、脂質由来の摂取熱量fati、炭水化物由来の摂取熱量、価格、および、塩分量を示す情報とを取得する。
【0055】
また、問題取得部181は、PFCバランスの目標値に関する情報を提供するサーバ装置から、総熱量に対するタンパク質由来の摂取熱量、脂質由来の摂取熱量、炭水化物由来の摂取熱量それぞれの比の目標範囲を示す情報を取得する。問題取得部181は、それぞれの目標範囲の中央値を、目標値に設定する。例えば、総熱量に対するタンパク質由来の摂取熱量の比の目標範囲が13%から20%の範囲である場合、問題取得部181が、総熱量に対するタンパク質由来の摂取熱量の比の目標値を、16.5%に設定するようにしてもよいし、16.5%を四捨五入した17%に設定するようにしてもよい。
【0056】
また、問題取得部181は、選択するメニューの個数N、および、ユーザが各メニューを食べたい度合いgiを入力するユーザ操作に応じて、これらの値を設定する。
【0057】
目的関数設定部182は、問題取得部181が設定した問題を解くための目的関数として、例えば、式(3)に示される、罰金関数法(ペナルティ関数法)による目的関数を設定する。
【0058】
【0059】
αは、目的関数Rの値に対する、PFCバランスとコストパフォーマンスとの影響度合いを調整するための係数であり、α≧0である。ユーザが、αの値を設定するようにしてもよい。あるいは、αの値が所定の値に固定されていてもよい。
【0060】
ptargetは、タンパク質由来の摂取熱量比の目標値を表す。ptargetは、上述したように、例えば0.17に設定される。タンパク質由来の摂取熱量比が0.17に近い場合、上述した、13%から20%の目標範囲を満たすことが期待される。
タンパク質由来の摂取熱量比が目標値ptargetに近いほど、「α{(Σi=1
Nproixi)/(Σi=1
Ntotixi)-ptarget}2」の値が小さくなり、目的関数Rの値が小さくなる。
【0061】
ftargetは、脂質由来の摂取熱量比の目標値を表す。ftargetは、例えば0.25に設定される。脂質由来の摂取熱量比が0.25に近い場合、上述した、20%から30%の目標範囲を満たすことが期待される。
脂質由来の摂取熱量比が目標値ftargetに近いほど、「α{(Σi=1
Nfatixi)/(Σi=1
Ntotixi)-ftarget}2」の値が小さくなり、目的関数Rの値が小さくなる。
【0062】
「(Σi=1
Nfixi)/(Σi=1
Ngixi)」は、上記のように、コストパフォーマンスの評価が高いほど値が小さくなる項である。
式(3)は、第一式の例に該当する。
【0063】
演算実行部183は、目的関数Rの値をなるべく小さくする最適化問題を解き、バイナリ変数xiの値を解または解の候補として取得する。上記のように、バイナリ変数xiの値が1であることは、i番目のメニューを選択することを示し、バイナリ変数xiの値が0であることは、i番目のメニューを選択しないことを示す。
【0064】
演算実行部183が、選択されたメニューの組み合わせが、PFCバランスの目標範囲を満たすか否かを判定するようにしてもよい。例えば、演算実行部183は、選択されたメニューの組み合わせが、タンパク質由来の摂取熱量比が13%から20%、脂質由来の摂取熱量比が20%から30%、かつ、炭水化物由来の摂取熱量比が50%から65%との条件を満たすか否かを判定する。
【0065】
選択されたメニューの組み合わせが、PFCバランスの目標範囲を満たさないと判定した場合、演算実行部183が、得られた組み合わせを破棄し、最適化問題を再度解いてメニューの組み合わせを取得するようにしてもよい。この場合、演算実行部183が、PFCバランスの目標範囲を満たすメニューの組み合わせを得易くするために、αの値をより大きくするようにしてもよい。
あるいは、演算装置11が、選択されたメニューの組み合わせに、PFCバランスの目標範囲を満たさないことの説明を添えて、ユーザに提示するようにしてもよい。
【0066】
式(3)に示される目的関数Rは分数を含んでおり、このままでは、QUBO等のモデルで表現することはできない。そこで、分数式変換部193は、式(3)に示される目的関数Rを、その式を通分した式における分子から分母と所定の変数との積を減算した式で示される目的関数に変換する。
式(3)に示される目的関数Rを通分した式は、式(4)のように表すことができる。
【0067】
【0068】
式(4)では、数式の表記の便宜上、分子をRnumで表している。Rnumは、式(5)のように表される。
【0069】
【0070】
分数式変換部193は、変数λを用いて、目的関数Rを式(6)に示される目的関数Q’に変換する。
【0071】
【0072】
式(6)では、式を見易くするために、定数aiおよびbiを用いている。aiは、式(7)のように表される。
【0073】
【0074】
biは、式(8)のように表される定数である。
【0075】
【0076】
式(6)の右辺は、式(4)および式(5)に示される分数を、(分子)-λ(分母)の形式で表したものである。式(6)の右辺の「α{(Σi=1
Naixi)2(Σi=1
Ngixi)+(Σi=1
Nbixi)2(Σi=1
Ngixi)}+(Σi=1
Ntotixi)2(Σi=1
Nfixi)」が、式(4)および式(5)に示される分数の分子に相当する。式(6)の右辺の「(Σi=1
Ntotixi)2(Σi=1
Ngixi)」が、式(4)および式(5)に示される分数の分母に相当する。
式(6)は、第二式の例に該当する。
【0077】
変数λの値が式(4)および式(5)に示される分数の値と等しいときすなわちλ=(分子)/(分母)のときに、(分子)-λ(分母)=0となり、式(6)に示される目的関数Q’の値が0になる。演算装置11は、変数λの値がなるべく小さくなるような解を探索することで、式(3)に示す目的関数Rの値がなるべく小さくなるような解を探索することができる。この場合の解探索の方法は特定の方法に限定されない。例えば、演算装置11が、ディンケルバックアルゴリズムを利用した反復計算によってλの値を決定するようにしてもよいが、これに限定されない。
【0078】
また、式(6)に示される目的関数Q’は、3次式となっている。すなわち、目的関数Q’を多項式に展開した場合、1つの項に高々3つのバイナリ変数が含まれる。例えば演算実行部183がQUBOを用いて解探索を行う場合、目的関数の次数は高々2次であることが好ましい。
【0079】
そこで、上記のように、2つのバイナリ変数の積の値を示すバイナリ変数を補助ビットとして導入することとする。具体的には、補助ビット導入部194は、補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式を、目的関数に加える。
3次の項のバイナリ変数をxixjxkと表記し、補助ビットxN+l=xixjとしてのバイナリ変数xN+lを導入すると、式(9)が成り立つ。
【0080】
【0081】
導入するバイナリ変数の個数をNs個として、l=1、2、・・・、Nsである。
clは、等式制約xN+l=xixjの影響度合いを調整するためのハイパーパラメタであり、cl>0に設定する。「cl{xixj-2(xi+xj)xN+l+3xN+l}」の値は、xN+l=xixjのときは0になり、xN+l≠xixjのときは0よりも大きい値になる。「cl{xixj-2(xi+xj)xN+l+3xN+l}」を目的関数に含めることで、xN+l=xixjとするための制約条件として用いることができる。
例えば、補助ビット導入部194は、式(6)に示される目的関数Q’を、式(10)に示される目的関数Q3に変換する。
【0082】
【0083】
式(10)の右辺の「α{(Σi=1
Naixi)2(Σi=1
Ngixi)+(Σi=1
Nbixi)2(Σi=1
Ngixi)}+(Σi=1
Ntotixi)2(Σi=1
Nfixi)-λ(Σi=1
Ntotixi)2(Σi=1
Ngixi)」は、式(6)に示される目的関数Q’に相当する。
式(10)の右辺の「A(Σi=1
Nxi-M)2」は、選択するメニューの個数をM個とする制約条件を表す。ハイパーパラメタAは、「(Σi=1
Nxi-M)2」の値が目的関数の値に及ぼす影響度合いを調整するための重み係数として用いられる定数である。Aの値は、予め定められていてもよい。
【0084】
式(10)の右辺の「Σi=1
NsΣi=1
Ncl{xixj-2(xi+xj)xN+l+3xN+l}」は、3次から2次への変換のために導入した補助ビットxN+lが、上記のようにxN+l=xixjを満たすという制約条件を表す。ハイパーパラメタclは、「xixj-2(xi+xj)xN+l+3xN+l」の値が目的関数の値に及ぼす影響度合いを調整するための重み係数として用いられる定数である。clの値は、予め定められていてもよい。
【0085】
Msは、補助ビットとしてのバイナリ変数xN+iのうちxN+i=1となる変数の個数を表し、Ms=M(M-1)/2である。式(10)の「B(Σi=1
NsxN+i-Ms)2」は、Ns個の補助ビットのうち非ゼロの補助ビットの個数をMs個とする制約条件を表す。Bは、「(Σi=1
NsxN+i-Ms)2」の値が目的関数の値に及ぼす影響度合いを調整するための重み係数として用いられる定数である。Bの値は、予め定められていてもよい。
【0086】
展開部195は、目的関数Q3を多項式に展開する。例えば、式(10)に示される目的関数Q3のうち「(Σi=1
Naixi)2(Σi=1
Ngixi)」の部分を展開した式は、式(11)のように表すことができる。
【0087】
【0088】
ただし、展開部195は、「(Σi=1
Naixi)2(Σi=1
Ngixi)」の部分だけでなく目的関数Q3の全体を多項式に展開する。
項調整部196は、展開部195が多項式に展開した目的関数Q3を、識別番号を示す変数の項内における交換にて、三角行列に対応する式に変換する。また、項調整部196は、同じバイナリ変数の積を、1つのそのバイナリ変数に置き換える。
例えば、項調整部196は、式(11)の右辺に示される「Σi=1
NΣj=1
NΣk=1
Naiajgkxixjxk」を、式(12)のように変換する。
【0089】
【0090】
式(12)の右辺では、3つのバイナリ変数を含む項ではi<j<kとなっており、2つのバイナリ変数を含む項ではi<jとなっている。補助ビットを導入すると、式(12)の右辺の全ての項の係数を、1つの三角行列の要素に割り当てることができる。
また、i<jとなっているので、xixjの値を示す補助ビットの個数は、Ns=N(N-1)/2個であり、補助ビットxN+1、xN+2、・・・、xN+Ns、および、ハイパーパラメタc1、c2、・・・、cNsを導入する。
【0091】
式(12)に示される変換について、さらに説明する。数式の表記の便宜上、「Σi=1
NΣj=1
NΣk=1
Naiajgkxixjxk=P」とする。
「Σi=1
NΣj=1
NΣk=1
Naiajgkxixjxk」に示される項を、i<jの項と、i=jの項と、i>jの項とに分けると、式(13)のように示される。
【0092】
【0093】
「Σi=1
N-1Σj=i+1
NΣk=1
Naiajgkxixjxk」は、i<jの項を表す。「Σi=1
NΣk=1
Naiajgkxixjxk」は、i=jの項を表す。「Σj=1
N-1Σi=j+1
NΣk=1
Naiajgkxixjxk」は、i>jの項を表す。
i=jの項に対は、「xixi」を「xi」に置き換え、i>jの項については、「i」と「j」とを入れ替えると、式(13)は、式(14)のように変換される。
【0094】
【0095】
式(14)は、式(15)のように変形できる。
【0096】
【0097】
式(15)の「Σi=1
NΣk=1
N2aiajgkxixjxk」に示される項を、k<iの項と、k=iの項と、i<k<jの項と、k=jの項と、k>iの項とに分け、「Σi=1
NΣk=1
Naiaigkxixk」に示される項を、k<iの項と、k=iの項と、k>iの項とに分けると、式(16)のように示される。
【0098】
【0099】
式(15)の「Σi=1
NΣk=1
N2aiajgkxixjxk」に示される項の分類について、式(16)の「Σk=1
N-2Σi=k+1
N-1Σj=i+1
N2aiajgkxixjxk」は、k<iの項を表す。「Σi=1
N-1Σj=i+1
N2aiajgixixjxi」は、k=iの項を表す。「Σi=1
N-2Σk=i+1
N-1Σj=k+1
N2aiajgkxixjxk」は、i<k<jの項を表す。「Σi=1
N-1Σj=i+1
N2aiajgjxixjxj」は、k=jの項を表す。「Σi=1
N-2Σj=i+1
N-1Σk=j+1
N2aiajgkxixjxk」は、k>jの項を表す。
式(15)の「Σi=1
NΣk=1
Naiaigkxixk」に示される項の分類について、式(16)の「Σk=1
N-1Σi=k+1
Naiaigkxixk」は、k<iの項を表す。「Σi=1
Naiaigixixi」は、k=iの項を表す。「Σi=1
N-1Σk=i+1
Naiaigkxixk」は、k>iの項を表す。
式(16)に対し、項内でi、j、kの交換を行い、また、同じ2つのバイナリ変数の積を1つのそのバイナリに置き換えると、式(17)のように表すことができる。
【0100】
【0101】
式(17)で、変数の並び順を整理し、xixjxk、および、xixjのそれぞれについて纏めると、式(18)のように変換できる。
【0102】
【0103】
このように、項調整部196が、異なる3つのバイナリ変数を含む全ての項についてi<j<kとなるように、項内でi、j、kの交換を行い、また、同じバイナリ変数の積を、1つのそのバイナリ変数に置き換えることで、全ての項の係数を、三角行列の要素に割り当てることができる。
だだし、項調整部196は、式(12)の左辺に示される式だけでなく、展開部195が目的関数を展開して得られた多項式全体に対して、項内での識別番号を表す変数の交換、および、同じバイナリ変数の積の、1つのそのバイナリ変数への置き換えを行う。
【0104】
ここで、QUBOを扱うソルバには、ビット間(バイナリ変数間)の結合行列(QUBO行列)が対称行列であることを前提として、この結合行列のうち三角行列(例えば、上三角行列)のみを扱うものがある。これに対し、項調整部196による変換後の目的関数は、各項の係数を三角行列の要素に割り当てることができ、この点で、QUBOを扱うソルバの適用に適しているといえる。
【0105】
(第一の実験)
次に、演算装置11によるメニュー選択の実験例について説明する。
シミュレーテッドアニーリングを用いてコンピュータ上で、演算実行部183による解探索の機能を実行し、演算装置11によるメニュー選択の実験をおこなった。
図2は、演算装置11が記憶するメニュー情報の例を示す図である。
図2に示す例で、メニュー情報には、メニューごとの品番号と、価格と、総熱量と、塩分量と、タンパク質の量と、脂質の量と、炭水化物の量とが示されている。実験では、
図2に示される形式のメニュー情報で、54個のメニュー(54種類のメニュー)の情報を登録した。したがって、N=54である。
【0106】
また、タンパク質の量から摂取熱量への変換係数として、グラム当たり4キロカロリー(kcal/g)を用いた。脂質の量から摂取熱量への変換係数として、グラム当たり9キロカロリーを用いた。炭水化物の量から摂取熱量への変換係数として、グラム当たり4キロカロリーを用いた。
【0107】
PFCバランス以外の評価指標をコストパフォーマンスに設定しておこなった実験を、第一の実験と称する。
コストパフォーマンスの計算に用いる、各メニューに対する満足度は、区間[101, 500]の整数値の一様乱数で与えた。満足度の値が大きいほど満足度が高いものとした。満足度の区間について、価格の最頻値が900円程度であることとオーダーを揃えて、3桁の整数としている。コストパフォーマンスの指標として用いるΣ(価格)/Σ(満足度)は、値が小さいほどコストパフォーマンスが高いことを示す。
【0108】
図3は、各メニューにおけるタンパク質由来の摂取熱量比、脂質由来の摂取熱量比、および、炭水化物由来の摂取熱量比の例を示す図である。
図3に示すグラフの奥行方向の軸はタンパク質由来の摂取熱量比を示す。横軸は、脂質由来の摂取熱量比を示す。縦軸は、炭水化物由来の摂取熱量比を示す。
【0109】
図3では、メニュー情報に登録された各メニューのPFCバランスを点で示している。メニュー情報に登録された54個のメニューのうち、タンパク質:13%から20%、脂質:20%から30%、炭水化物:50%から65%との目標範囲を満たすメニューは、点D1で示す1つのみである。
【0110】
また、
図3では、脂質由来の摂取熱量が増加すると、炭水化物由来の摂取熱量が減少する傾向がみられる。このような、脂質由来の摂取熱量と炭水化物由来の摂取熱量との逆相関の関係により、タンパク質由来の摂取熱量比と、脂質由来の摂取熱量とが目標範囲内の値になるようにメニューの組み合わせを選択すると、炭水化物由来の摂取熱量比についても目標範囲内の値になることが期待される。
【0111】
上記のように、式(3)に示されるαは、目的関数Rの値に対する、PFCバランスとコストパフォーマンスとの影響度合いを調整するための係数である。実験では、α=100としている。
【0112】
図4は、第一の実験でのメニュー選択の結果の例を示す図である。第一の実験では、選択するメニューの個数が、8個、10個、12個の場合それぞれについて、目的関数の値が最も小さくなるメニューの組み合わせを選択した。選択したメニューの組み合わせにおけるPFCバランスと、満足度と、平均価格と、平均塩分量とについて、
図4に示す結果となった。満足度については、[101, 500]の区間を[0%, 100%]に換算した値を示している。
図4に示す実験結果では、選択するメニューの個数が8個、10個、12個の何れの場合も、PFCバランスは、タンパク質:13%から20%、脂質:20%から30%、炭水化物:50%から65%との目標範囲を満たしている。また、選択するメニューの個数が8個、10個、12個の何れの場合も、満足度は70%以上であった。
なお、
図4に示す実験結果のうち、選択するメニューの個数が8個の場合は、全解探索を行う場合の結果と一致している。
【0113】
(第二の実験)
PFCバランスを満たし、かつ、塩分量がなるべく少なくなるようなメニューの組み合わせを選択することを目標として実験をおこなった。この実験を、第二の実験と称する。
第二の実験では、式(3)等に示される目的関数で、コストパフォーマンスの向上に代えて、平均塩分量が少ないほど目的関数値が小さくなるように設定した。具体的には、i番目のメニューの塩分量をfiとし、giの値は全て1とした。
【0114】
図5は、第二の実験でのメニュー選択の結果の例を示す図である。第二の実験では、選択するメニューの個数が、7個、12個の場合それぞれについて、メニューの選択をおこなった。選択したメニューのPFCバランスと、満足度と、平均価格と、平均塩分量とについて、
図5に示す結果となった。
図5でも、満足度については、[101, 400]の範囲を[0%, 100%]に換算した値を示している。
【0115】
図5に示す実験結果では、選択するメニューの個数が7個、12個の何れの場合も、PFCバランスは、タンパク質:13%から20%、脂質:20%から30%、炭水化物:50%から65%との目標範囲を満たしている。また、平均塩分量は、選択するメニューの個数が7個の場合が3.628グラム、12個の場合が4.058グラムと、何れも、
図4に示す第一の実験の結果での平均塩分量の最小値5.350グラムよりも少なくなっている。
なお、
図5に示す実験結果のうち、選択するメニューの個数が7個の場合は、全解探索を行う場合の結果と一致している。
【0116】
演算装置11の用途は、外食時における個人向けのメニューの選択に限定されず、目的関数を展開した多項式が3次以上(すなわち、1つの項に含まれるバイナリ変数の個数が3つ以上)となるいろいろな用途に用いることができる。
例えば、メニューの決定に関して、演算装置11を、学生寮または社員寮などの施設における食事のメニューの決定に用いるようにしてもよい。
【0117】
また、メニューの決定以外にも、株式銘柄の選択に演算装置11を用いることができる。例えば、株式投資において、N銘柄の株式のうちM銘柄の組み合わせを選択する場合について考える。この場合、演算装置11によれば、例えば、株価収益率または株価純資産倍率がある範囲内に含まれ、かつ、Σ(CO2排出量)/Σ(営業収益)の比の値がなるべく小さくなるような、銘柄の組み合わせを探索することができる。このように、演算装置11によれば、経営状態を表す指標を考慮しつつ、低炭素など所定の評価が高い企業の組合せを選択することができる。
【0118】
以上のように、問題取得部181は、第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得する。
【0119】
目的関数生成部191が生成する目的関数では、各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されている。また、第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されている。また、第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されている。また、第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されている。
【0120】
目的関数生成部191は、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、目標値との差の2乗を示す式と、候補における第三特性値の合計を含む式との重み付け合計を含む第一式を生成する。
分数式変換部193は、第一式を、その第一式を通分した式における分子から分母と所定の変数との積を減算した第二式に変換する。
【0121】
補助ビット導入部194は、第二式を、その第二式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式を加えた第三式に変換する。
展開部195は、第三式を、その第三式を多項式に展開した第四式に変換する。
【0122】
項調整部196は、第四式を、その第四式に含まれる項のうち、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた、第五式に変換する。
【0123】
ここでいう共通式は、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている第一特性値、第二特性値、または、第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である。
演算実行部183は、第五式を用いて、問題取得部181が取得した問題の解としての選択肢の組み合わせを探索する。
【0124】
演算装置11によれば、三角行列に対応している式で表される目的関数を用いて、解探索を行うことができる。これにより、演算装置11では、三角行列を前提とした解探索手法を用いて解探索を行うことができる。
例えば、QUBOのソルバには、対称行列を前提とし、対称行列のうち三角行列の部分の表現に適したモデルを用いるものがある。演算装置11によれば、このようなソルバを比較的容易に解探索に適用することができる。
【0125】
また、演算装置11によれば、目的関数に分数が含まれる場合に、分数を含まない多項式で示される目的関数に変換することができる。演算装置11によれば、この点でも、QUBOのソルバを比較的容易に解探索に適用できる。
また、演算装置11によれば、目的関数を示す多項式が、3つ以上のバイナリ変数を含む項を含む場合に、補助ビットを導入して次数(1つの項に含まれる補助ビットの個数)を減らすことができる。演算装置11によれば、この点でも、QUBOのソルバを比較的容易に解探索に適用できる。
【0126】
<第二実施形態>
実施形態に係る演算装置の構成は、
図1に示す構成に限定されない。例えば、
図1の目的関数設定部182は、上記の第五式の表現形式で示される目的関数を取得できればよく、第一式から第五式までを順に生成および変換する必要はない。
第二実施形態では、目的関数設定部の内部の構成が、
図1に示す構成に限定されない場合について説明する。
【0127】
図6は、第二実施形態に係る演算装置の構成の例を示す図である。
図1に示す構成で、演算装置12は、通信部110と、表示部120と、操作入力部130と、記憶部170と、制御部280とを備える。制御部280は、問題取得部181と、目的関数設定部282と、演算実行部183とを備える。
【0128】
図6の各部のうち、
図1の各部に対応して同様の機能を有する部分には、同一の符号(110、120、130、170、181、183)を付し、ここでは詳細な説明を省略する。
演算装置12は、制御部280が備える目的関数設定部282の構成が限定されていない点で、演算装置11の場合と異なる。それ以外の点では、演算装置12は、演算装置11と同様である。
【0129】
目的関数設定部282は、第五式の表現形式で示される目的関数を取得する。
第五式の表現形式で示される式では、各選択肢の選択の有無が、全順序付けされた識別番号iで識別されている選択肢ごとのバイナリ変数xiの値で示されている。また、第五式の表現形式で示される式では、選択肢ごとの第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されている。また、第五式の表現形式で示される式では、選択肢ごとの第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されている。また、また、第五式の表現形式で示される式では、選択肢ごとの第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されている。
【0130】
第五式の表現形式で示される式は、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、除算の商の目標値との差の2乗を示す式と、選択肢の組み合わせの候補における第三特性値の合計を含む式との重み付け合計を含む式を通分した式における分子から分母と所定の変数との積を減算する式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式が加えられた式を多項式に展開した式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている第一特性値、第二特性値、または、第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた式、と表現することができる。
【0131】
目的関数設定部282は、第五式の表現形式で示される目的関数を取得する方法は、第一式から第五式の順に、式の生成または変換を行う方法に限定されない。例えば、目的関数設定部282が、問題取得部181が取得した問題から、第一式から第四式を経ずに直接、第五式の表現形式で示される目的関数を生成するようにしてもよい。
目的関数設定部282は、目的関数設定手段の例に該当する。
【0132】
以上のように、問題取得部181は、第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得する。
【0133】
目的関数設定部282が設定する目的関数では、各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されている。また、第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されている。また、第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されている。また、第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されている。
【0134】
目的関数設定部282は、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、目標値との差の2乗を示す式と、候補における第三特性値の合計を含む式との重み付け合計を含む式を通分した式における分子から分母と所定の変数との積を減算する式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式が加えられた式を多項式に展開した式に含まれる項のうち、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた式を生成する。
【0135】
ここでいう共通式は、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている第一特性値、第二特性値、または、第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である。
演算実行部183は、生成された式を用いて、問題取得部181が取得した問題の解としての選択肢の組み合わせを探索する。
【0136】
演算装置12によれば、三角行列に対応している式で表される目的関数を用いて、解探索を行うことができる。これにより、演算装置12では、三角行列を前提とした解探索手法を用いて解探索を行うことができる。
例えば、QUBOのソルバには、対称行列を前提とし、対称行列のうち三角行列の部分の表現に適したモデルを用いるものがある。演算装置12によれば、このようなソルバを比較的容易に解探索に適用することができる。
【0137】
また、演算装置12によれば、目的関数の元となる指標に分数が含まれる場合に、分数を含まない多項式で示される目的関数を取得することができる。演算装置12によれば、この点でも、QUBOのソルバを比較的容易に解探索に適用できる。
また、演算装置12によれば、目的関数を示す多項式が、3つ以上のバイナリ変数を含む項を含む場合に、補助ビットを導入して次数(1つの項に含まれる補助ビットの個数)を減らすことができる。演算装置12によれば、この点でも、QUBOのソルバを比較的容易に解探索に適用できる。
【0138】
<第三実施形態>
変換部が、式を変換する装置として構成されていてもよい。第三実施形態では、変換部が、式を変換する装置として構成されている場合について説明する。
図7は、第三実施形態に係る演算システムの構成の例を示す図である。
図7に示す構成で、演算システム20は、問題設定装置21と、変換装置22と、解探索装置23とを備える。
【0139】
問題設定装置21は、
図1の問題取得部181と同様の機能、および、目的関数生成部191と同様の機能を有し、解探索問題を取得し、解探索を行うための目的関数を設定する。
問題設定装置21は、複数の選択肢のうち、設定されている評価指標が示す評価がなるべく良くなるような、選択肢の組み合わせを選択する問題を取得する。問題設定装置21が取得する問題では、選択肢のそれぞれが、第一特性値と、第二特性値と、第三特性値と、を有する。
【0140】
また、問題設定装置21が取得する問題では、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値が、所定の目標値に近いほど評価が良くなる。また、問題設定装置21が取得する問題では、選択された選択肢の組み合わせにおける第三特性値の合計を含む所定の式の値が小さいほど、評価が良くなる。
【0141】
問題設定装置21が設定する目的関数では、各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示される。また、問題設定装置21が設定する目的関数では、第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別される。また、問題設定装置21が設定する目的関数では、第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別される。また、問題設定装置21が設定する目的関数では、第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別される。
【0142】
問題設定装置21は、目的関数を示す式として、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、目標値との差の2乗を示す式と、選択肢の組み合わせの候補における第三特性値の合計を含む式との重み付け合計を含む式を生成する。
問題設定装置21が、ノイマン型コンピュータを用いて構成されていてもよい。
【0143】
変換装置22は、入力される式を変換し、変換された式を出力する。例えば、変換装置22は、
図1の変換部192と同様の機能を有し、問題設定装置21が設定した目的関数に対して、変換部192の場合と同様の変換を行う。
変換装置22が、ノイマン型コンピュータを用いて構成されていてもよい。
【0144】
解探索装置23は、変換装置22が出力する目的関数を用いて、問題設定装置21が取得した問題の解探索を行う。例えば、解探索装置23が、
図1の演算実行部183と同様の機能を有し、QUBOを用いた量子アニーリングまたはシミュレーテッドアニーリングにて、解探索を行うようにしてもよい。
解探索装置23が、ノイマン型コンピュータ、または、量子コンピュータ、あるいはこれらの組み合わせを用いて構成されていてもよい。
【0145】
図8は、変換装置22の構成の例を示す図である。
図8に示す構成で、変換装置22は、通信部310と、記憶部370と、制御部380とを備える。制御部380は、変換部381を備える。
通信部310は、他の装置と通信を行う。例えば、通信部310が、問題設定装置21から、問題設定装置21が設定した目的関数など、問題設定装置21が取得した問題に関する各種情報を受信するようにしてもよい。また、通信部310が、変換装置22による変換後の目的関数を解探索装置23に送信するようにしてもよい。
【0146】
記憶部370は、各種データを記憶する。例えば、記憶部370が、問題設定装置21が設定した目的関数を、変換対象の式として記憶するようにしてもよい。記憶部370は、変換装置22が備える記憶デバイスを用いて構成される。
制御部380は、変換装置22の各部を制御して各種処理を行う。制御部380の機能またはその一部が、変換装置22が備えるCPU(Central Processing Unit、中央処理装置)が、記憶部370からプログラムを読み出して実行することで実行されてもよい。
【0147】
変換部381は、式の変換を行う。変換部381が、
図1の変換部192と同様の機能を有するようにしてもよい。
変換部381は、変換手段の例に該当する。
【0148】
変換部381は、複数のバイナリ変数が、全順序付けされた識別番号で識別され、バイナリ変数ごとの定数が、その定数が紐付けられているバイナリ変数の識別番号で識別され、かつ、同じ共通式で表すことができる複数の項を含む変換対象の式を取得する。ここでいう共通式は、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている定数を用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である。
変換部381は、変換対象の式を、項内での識別番号の交換によって、同じ共通式で表すことができる複数の項の全てにおいて、共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じである式に変換する。
【0149】
変換装置22によれば、入力される目的関数を、三角行列に対応している式で表される目的関数に変換することができる。変換装置22による変換で得られる目的関数を用いれば、三角行列を前提とした解探索手法を用いて解探索を行うことができる。
例えば、QUBOのソルバには、対称行列を前提とし、対称行列のうち三角行列の部分の表現に適したモデルを用いるものがある。変換装置22による変換で得られる目的関数を用いれば、このようなソルバを比較的容易に解探索に適用することができる。
【0150】
また、変換対象の式は、同じバイナリ変数の積を含む。変換部381は、同じバイナリ変数の積を、1つのそのバイナリ変数に置き換える。
変換装置22によれば、入力される目的関数を、対角の要素が0になっている三角行列に対応している式で表される目的関数に変換することができる。
【0151】
また、変換部381は、バイナリ変数に、バイナリ変数ごとの第一定数が掛け合わせられた積の、全てのバイナリ変数についての合計を、バイナリ変数に、バイナリ変数ごとの第二定数が掛け合わせられた積の、全てのバイナリ変数についての合計で割る分数と、その分数の目標値との差の二乗と、バイナリ変数に、バイナリ変数ごとの第三定数が掛け合わせられた積を含む式とを重み付け合計する式を、その式を通分した式の分子から分母と所定の変数との積を減算した式に変換する。
変換装置22によれば、分数が含まれる式で表される目的関数を、分数を含まない多項式で示される目的関数に変換することができる。変換装置22によれば、この点でも、QUBOのソルバを比較的容易に解探索に適用できる。
【0152】
また、変換部381は、変換対象の式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式を加える。
変換装置22によれば、目的関数を示す多項式が、3つ以上のバイナリ変数を含む項を含む場合に、補助ビットを導入して次数(1つの項に含まれる補助ビットの個数)を減らすことができる。変換装置22によれば、この点でも、QUBOのソルバを比較的容易に解探索に適用できる。
【0153】
<第四実施形態>
図9は、第四実施形態に係る変換装置の構成の例を示す図である。
図9に示す構成で、変換装置610は、変換部611を備える。
かかる構成で、変換部611は、複数のバイナリ変数が、全順序付けされた識別番号で識別され、バイナリ変数ごとの定数が、その定数が紐付けられているバイナリ変数の識別番号で識別されている変換対象の式、かつ、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている定数を用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項を含む変換対象の式を、項内での識別番号の交換によって、それら複数の項の全てにおいて、共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じである式に変換する。
変換部611は、変換手段の例に該当する。
【0154】
変換装置610によれば、入力される目的関数を、三角行列に対応している式で表される目的関数に変換することができる。変換装置610による変換で得られる目的関数を用いれば、三角行列を前提とした解探索手法を用いて解探索を行うことができる。
例えば、QUBOのソルバには、対称行列を前提とし、対称行列のうち三角行列の部分の表現に適したモデルを用いるものがある。変換装置610による変換で得られる目的関数を用いれば、このようなソルバを比較的容易に解探索に適用することができる。
【0155】
変換部611は、例えば、
図1の変換部192の機能を用いて実現することができる。
【0156】
<第五実施形態>
図10は、第五実施形態に係る演算装置の構成の例を示す図である。
図10に示す構成で、演算装置620は、問題取得部621と、目的関数生成部622と、分数式変換部623と、補助ビット導入部624と、展開部625と、項調整部626と、演算実行部627とを備える。
【0157】
かかる構成で、問題取得部621は、第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得する。
【0158】
目的関数生成部622は、各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、目標値との差の2乗を示す式と、選択肢の組み合わせの候補における第三特性値の合計を含む式との重み付け合計を含む第一式を生成する。
分数式変換部623は、第一式を、その第一式を通分した式における分子から分母と所定の変数との積を減算した第二式に変換する。
【0159】
補助ビット導入部624は、第二式を、その第二式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式を加えた第三式に変換する。
展開部625は、第三式を、その第三式を多項式に展開した第四式に変換する。
【0160】
項調整部626は、第四式を、その第四式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている第一特性値、第二特性値、または、第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた、第五式に変換する。
演算実行部627は、第五式を用いて、問題の解としての選択肢の組み合わせを探索する。
【0161】
問題取得部621は、問題取得手段の例に該当する。目的関数生成部622は、目的関数生成手段の例に該当する。分数式変換部623は、分数式変換手段の例に該当する。補助ビット導入部624は、補助ビット導入手段の例に該当する。展開部625は、展開手段の例に該当する。項調整部626は、項調整手段の例に該当する。演算実行部627は、演算実行手段の例に該当する。
【0162】
演算装置620によれば、三角行列に対応している式で表される目的関数を用いて、解探索を行うことができる。これにより、演算装置620では、三角行列を前提とした解探索手法を用いて解探索を行うことができる。
例えば、QUBOのソルバには、対称行列を前提とし、対称行列のうち三角行列の部分の表現に適したモデルを用いるものがある。演算装置620によれば、このようなソルバを比較的容易に解探索に適用することができる。
【0163】
また、演算装置620によれば、目的関数に分数が含まれる場合に、分数を含まない多項式で示される目的関数に変換することができる。演算装置620によれば、この点でも、QUBOのソルバを比較的容易に解探索に適用できる。
また、演算装置620によれば、目的関数を示す多項式が、3つ以上のバイナリ変数を含む項を含む場合に、補助ビットを導入して次数(1つの項に含まれる補助ビットの個数)を減らすことができる。演算装置620によれば、この点でも、QUBOのソルバを比較的容易に解探索に適用できる。
【0164】
問題取得部621は、例えば、
図1の問題取得部181の機能を用いて実現することができる。目的関数生成部622は、例えば、
図1の目的関数生成部191の機能を用いて実現することができる。分数式変換部623は、例えば、
図1の分数式変換部193の機能を用いて実現することができる。補助ビット導入部624は、例えば、
図1の補助ビット導入部194の機能を用いて実現することができる。展開部625は、例えば、
図1の展開部195の機能を用いて実現することができる。項調整部626は、例えば、
図1の項調整部196の機能を用いて実現することができる。演算実行部627は、例えば、
図1の演算実行部183の機能を用いて実現することができる。
【0165】
<第六実施形態>
図11は、第六実施形態に係る演算装置の構成の例を示す図である。
図11に示す構成で、演算装置630は、問題取得部631と、目的関数設定部632と、演算実行部633とを備える。
【0166】
かかる構成で、問題取得部631は、第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得する。
【0167】
目的関数設定部632は、各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、目標値との差の2乗を示す式と、選択肢の組み合わせの候補における第三特性値の合計を含む式との重み付け合計を含む式を通分した式における分子から分母と所定の変数との積を減算する式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式が加えられた式を多項式に展開した式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている第一特性値、第二特性値、または、第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた式を生成する。
【0168】
演算実行部633は、生成された式を用いて、問題の解としての選択肢の組み合わせを探索する。
問題取得部631は、問題取得手段の例に該当する。目的関数設定部632は、目的関数設定手段の例に該当する。演算実行部633は、演算実行手段の例に該当する。
【0169】
演算装置630によれば、三角行列に対応している式で表される目的関数を用いて、解探索を行うことができる。これにより、演算装置630では、三角行列を前提とした解探索手法を用いて解探索を行うことができる。
例えば、QUBOのソルバには、対称行列を前提とし、対称行列のうち三角行列の部分の表現に適したモデルを用いるものがある。演算装置630によれば、このようなソルバを比較的容易に解探索に適用することができる。
【0170】
また、演算装置630によれば、目的関数の元となる指標に分数が含まれる場合に、分数を含まない多項式で示される目的関数を取得することができる。演算装置630によれば、この点でも、QUBOのソルバを比較的容易に解探索に適用できる。
また、演算装置630によれば、目的関数を示す多項式が、3つ以上のバイナリ変数を含む項を含む場合に、補助ビットを導入して次数(1つの項に含まれる補助ビットの個数)を減らすことができる。演算装置630によれば、この点でも、QUBOのソルバを比較的容易に解探索に適用できる。
【0171】
問題取得部631は、例えば、
図1の問題取得部181の機能を用いて実現することができる。目的関数設定部632は、例えば、
図1の目的関数設定部182の機能を用いて実現することができる。演算実行部633は、例えば、
図1の演算実行部183の機能を用いて実現することができる。
【0172】
<第七実施形態>
図12は、第七実施形態に係る変換方法における処理の手順の例を示す図である。
図12に示す変換方法は、変換を行うこと(ステップS611)を含む。
変換を行うこと(ステップS611)では、コンピュータが、複数のバイナリ変数が、全順序付けされた識別番号で識別され、バイナリ変数ごとの定数が、その定数が紐付けられているバイナリ変数の識別番号で識別されている変換対象の式、かつ、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている定数を用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項を含む変換対象の式を、項内での識別番号の交換によって、それら複数の項の全てにおいて、共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じである式に変換する。
【0173】
図12に示す変換方法によれば、入力される目的関数を、三角行列に対応している式で表される目的関数に変換することができる。
図12に示す変換方法で得られる目的関数を用いれば、三角行列を前提とした解探索手法を用いて解探索を行うことができる。
例えば、QUBOのソルバには、対称行列を前提とし、対称行列のうち三角行列の部分の表現に適したモデルを用いるものがある。
図12に示す変換方法で得られる目的関数を用いれば、このようなソルバを比較的容易に解探索に適用することができる。
【0174】
<第八実施形態>
図13は、第八実施形態に係る演算方法における処理の手順の例を示す図である。
図13に示す演算方法は、問題を取得すること(ステップS621)と、目的関数を生成すること(ステップS622)と、分数を変換すること(ステップS623)と、補助ビットを導入部すること(ステップS624)と、展開を行うこと(ステップS625)と、項を調整すること(ステップS626)と、演算を実行すること(ステップS627)とを含む。
【0175】
問題を取得すること(ステップS621)では、コンピュータが、第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得する。
【0176】
目的関数を生成すること(ステップS622)では、コンピュータが、各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、目標値との差の2乗を示す式と、選択肢の組み合わせの候補における第三特性値の合計を含む式との重み付け合計を含む第一式を生成する。
分数を変換すること(ステップS623)では、コンピュータが、第一式を、その第一式を通分した式における分子から分母と所定の変数との積を減算した第二式に変換する。
【0177】
補助ビットを導入部すること(ステップS624)では、コンピュータが、第二式を、その第二式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式を加えた第三式に変換する。
展開を行うこと(ステップS625)では、コンピュータが、第三式を、その第三式を多項式に展開した第四式に変換する。
【0178】
項を調整すること(ステップS626)では、コンピュータが、第四式を、その第四式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている第一特性値、第二特性値、または、第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた、第五式に変換する。
【0179】
演算を実行すること(ステップS627)では、コンピュータが、第五式を用いて、問題の解としての選択肢の組み合わせを探索する。
ここでいうコンピュータは、ノイマン型コンピュータであってもよし、量子コンピュータであってもよいし、これらの組み合わせであってもよい。
【0180】
図13に示す演算方法によれば、三角行列に対応している式で表される目的関数を用いて、解探索を行うことができる。これにより、
図13に示す演算方法では、三角行列を前提とした解探索手法を用いて解探索を行うことができる。
例えば、QUBOのソルバには、対称行列を前提とし、対称行列のうち三角行列の部分の表現に適したモデルを用いるものがある。
図13に示す演算方法によれば、このようなソルバを比較的容易に解探索に適用することができる。
【0181】
また、
図13に示す演算方法によれば、目的関数に分数が含まれる場合に、分数を含まない多項式で示される目的関数に変換することができる。
図13に示す演算方法によれば、この点でも、QUBOのソルバを比較的容易に解探索に適用できる。
また、
図13に示す演算方法によれば、目的関数を示す多項式が、3つ以上のバイナリ変数を含む項を含む場合に、補助ビットを導入して次数(1つの項に含まれる補助ビットの個数)を減らすことができる。
図13に示す演算方法によれば、この点でも、QUBOのソルバを比較的容易に解探索に適用できる。
【0182】
<第九実施形態>
図14は、第九実施形態に係る演算方法における処理の手順の例を示す図である。
図14に示す演算方法は、問題を取得すること(ステップS631)と、目的関数を設定すること(ステップS632)と、演算を実行すること(ステップS633)とを含む。
【0183】
問題を取得すること(ステップS631)では、コンピュータが、第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得する。
【0184】
目的関数を設定すること(ステップS632)では、コンピュータが、各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、前記目標値との差の2乗を示す式と、選択肢の組み合わせの候補における第三特性値の合計を含む式との重み付け合計を含む式を通分した式における分子から分母と所定の変数との積を減算する式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式が加えられた式を多項式に展開した式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている第一特性値、第二特性値、または、第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた式を生成する。
【0185】
演算を実行すること(ステップS633)では、コンピュータが、生成された式を用いて、問題の解としての選択肢の組み合わせを探索する。
ここでいうコンピュータは、ノイマン型コンピュータであってもよし、量子コンピュータであってもよいし、これらの組み合わせであってもよい。
【0186】
図14に示す演算方法によれば、三角行列に対応している式で表される目的関数を用いて、解探索を行うことができる。これにより、
図14に示す演算方法では、三角行列を前提とした解探索手法を用いて解探索を行うことができる。
例えば、QUBOのソルバには、対称行列を前提とし、対称行列のうち三角行列の部分の表現に適したモデルを用いるものがある。
図14に示す演算方法によれば、このようなソルバを比較的容易に解探索に適用することができる。
【0187】
また、
図14に示す演算方法によれば、目的関数の元となる指標に分数が含まれる場合に、分数を含まない多項式で示される目的関数を取得することができる。
図14に示す演算方法によれば、この点でも、QUBOのソルバを比較的容易に解探索に適用できる。
また、
図14に示す演算方法によれば、目的関数を示す多項式が、3つ以上のバイナリ変数を含む項を含む場合に、補助ビットを導入して次数(1つの項に含まれる補助ビットの個数)を減らすことができる。
図14に示す演算方法によれば、この点でも、QUBOのソルバを比較的容易に解探索に適用できる。
【0188】
図15は、少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
図15に示す構成で、コンピュータ700は、CPU710と、主記憶装置720と、補助記憶装置730と、インタフェース740と、不揮発性記録媒体750と、量子チップ760とを備える。
【0189】
上記の演算装置11、演算装置12、問題設定装置21、変換装置22、解探索装置23、変換装置610、演算装置620、および、演算装置630のうち何れか1つ以上またはその一部が、コンピュータ700に実装されてもよい。その場合、上述した各処理部の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理またはその一部を実行する。また、量子チップ760が、量子アニーリングによる解探索を行うなど、上記処理またはその一部を実行するようにしてもよい。量子チップ760は、量子力学における量子状態を用いて動作するチップ(回路)である。量子チップ760は、量子コンピュータの例に該当する。量子チップ760が、コンピュータ700の本体に外付けの量子デバイスとして構成されていてもよい。
【0190】
また、CPU710は、プログラムに従って、上述した各記憶部に対応する記憶領域を主記憶装置720に確保する。各装置と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って通信を行うことで実行される。また、インタフェース740は、不揮発性記録媒体750用のポートを有し、不揮発性記録媒体750からの情報の読出、および、不揮発性記録媒体750への情報の書込を行う。
【0191】
演算装置11がコンピュータ700に実装される場合、制御部180およびその各部の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理またはその一部を実行する。また、量子チップ760が、制御部180およびその各部が行う処理またはその一部を実行するようにしてもよい。
【0192】
また、CPU710は、プログラムに従って、記憶部170のための記憶領域を主記憶装置720に確保する。通信部110による他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。表示部120による画像の表示は、インタフェース740が表示装置を備え、CPU710の制御に従って各種画像の表示することで実行される。操作入力部130によるユーザ操作の受け付けは、インタフェース740が入力デバイスを備え、CPU710の制御に従ってユーザ操作を受け付けることで実行される。
【0193】
演算装置12がコンピュータ700に実装される場合、制御部280およびその各部の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理またはその一部を実行する。また、量子チップ760が、制御部280およびその各部が行う処理またはその一部を実行するようにしてもよい。
【0194】
また、CPU710は、プログラムに従って、記憶部170のための記憶領域を主記憶装置720に確保する。通信部110による他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。表示部120による画像の表示は、インタフェース740が表示装置を備え、CPU710の制御に従って各種画像の表示することで実行される。操作入力部130によるユーザ操作の受け付けは、インタフェース740が入力デバイスを備え、CPU710の制御に従ってユーザ操作を受け付けることで実行される。
【0195】
問題設定装置21がコンピュータ700に実装される場合、その動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0196】
また、CPU710は、プログラムに従って、問題設定装置21が処理を行うための記憶領域を主記憶装置720に確保する。問題設定装置21と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。問題設定装置21とユーザとのインタラクションは、インタフェース740が表示装置および入力デバイスを備え、CPU710の制御に従って各種画像の表示し、また、ユーザ操作を受け付けることで実行される。
【0197】
変換装置22がコンピュータ700に実装される場合、制御部380およびその各部の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理またはその一部を実行する。
【0198】
また、CPU710は、プログラムに従って、記憶部370のための記憶領域を主記憶装置720に確保する。通信部310による他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。変換装置22とユーザとのインタラクションは、インタフェース740が表示装置および入力デバイスを備え、CPU710の制御に従って各種画像の表示し、また、ユーザ操作を受け付けることで実行される。
【0199】
解探索装置23がコンピュータ700に実装される場合、その動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理またはその一部を実行する。また、量子チップ760が、解探索装置23が行う処理またはその一部を実行するようにしてもよい。
【0200】
また、CPU710は、プログラムに従って、解探索装置23が処理を行うための記憶領域を主記憶装置720に確保する。解探索装置23と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。解探索装置23とユーザとのインタラクションは、インタフェース740が表示装置および入力デバイスを備え、CPU710の制御に従って各種画像の表示し、また、ユーザ操作を受け付けることで実行される。
【0201】
上述したプログラムのうち何れか1つ以上が不揮発性記録媒体750に記録されていてもよい。この場合、インタフェース740が不揮発性記録媒体750からプログラムを読み出すようにしてもよい。そして、CPU710が、インタフェース740が読み出したプログラムを直接実行するか、あるいは、主記憶装置720または補助記憶装置730に一旦保存して実行するようにしてもよい。
【0202】
なお、演算装置11、演算装置12、問題設定装置21、変換装置22、解探索装置23、変換装置610、演算装置620、および、演算装置630が行う処理の全部または一部を実行するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OS(Operating System)や周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM(Read Only Memory)、CD-ROM(Compact Disc Read Only Memory)等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【0203】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【0204】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0205】
(付記1)
複数のバイナリ変数が、全順序付けされた識別番号で識別され、バイナリ変数ごとの定数が、その定数が紐付けられているバイナリ変数の識別番号で識別されている変換対象の式、かつ、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている定数を用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項を含む変換対象の式を、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じである式に変換する変換手段
を備える変換装置。
【0206】
(付記2)
前記変換対象の式は、同じバイナリ変数の積を含み、
前記変換手段は、同じバイナリ変数の積を、1つのそのバイナリ変数に置き換える、
付記1に記載の変換装置。
【0207】
(付記3)
前記変換手段は、バイナリ変数に、バイナリ変数ごとの第一定数が掛け合わせられた積の、全てのバイナリ変数についての合計を、バイナリ変数に、バイナリ変数ごとの第二定数が掛け合わせられた積の、全てのバイナリ変数についての合計で割る分数と、その分数の目標値との差の二乗と、バイナリ変数に、バイナリ変数ごとの第三定数が掛け合わせられた積を含む式とを重み付け合計する式を、その式を通分した式の分子から分母と所定の変数との積を減算した式に変換する、
付記1または付記2に記載の変換装置。
【0208】
(付記4)
前記変換手段は、変換対象の式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、前記補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式を加える、
付記1から3の何れか一つに記載の変換装置。
【0209】
(付記5)
第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得する問題取得手段と、
各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、前記第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、前記目標値との差の2乗を示す式と、前記候補における第三特性値の合計を含む式との重み付け合計を含む第一式を生成する目的関数生成手段と、
前記第一式を、その第一式を通分した式における分子から分母と所定の変数との積を減算した第二式に変換する分数式変換手段と、
前記第二式を、その第二式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、前記補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式を加えた第三式に変換する補助ビット導入手段と、
前記第三式を、その第三式を多項式に展開した第四式に変換する展開手段と、
前記第四式を、その第四式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている前記第一特性値、前記第二特性値、または、前記第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた、第五式に変換する項調整手段と、
前記第五式を用いて、前記問題の解としての選択肢の組み合わせを探索する演算実行手段と、
を備える演算装置。
【0210】
(付記6)
第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得する問題取得手段と、
各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、前記第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、前記目標値との差の2乗を示す式と、前記候補における第三特性値の合計を含む式との重み付け合計を含む式を通分した式における分子から分母と所定の変数との積を減算する式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、前記補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式が加えられた式を多項式に展開した式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている前記第一特性値、前記第二特性値、または、前記第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた式を生成する目的関数設定手段と、
生成された式を用いて、前記問題の解としての選択肢の組み合わせを探索する演算実行手段と、
を備える演算装置。
【0211】
(付記7)
コンピュータが、
複数のバイナリ変数が、全順序付けされた識別番号で識別され、バイナリ変数ごとの定数が、その定数が紐付けられているバイナリ変数の識別番号で識別されている変換対象の式、かつ、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている定数を用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項を含む変換対象の式を、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じである式に変換する
ことを含む変換方法。
【0212】
(付記8)
コンピュータが、
第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得し、
各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、前記第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、前記目標値との差の2乗を示す式と、前記候補における第三特性値の合計を含む式との重み付け合計を含む第一式を生成し、
前記第一式を、その第一式を通分した式における分子から分母と所定の変数との積を減算した第二式に変換し、
前記第二式を、その第二式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、前記補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式を加えた第三式に変換し、
前記第三式を、その第三式を多項式に展開した第四式に変換し、
前記第四式を、その第四式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている前記第一特性値、前記第二特性値、または、前記第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた、第五式に変換し、
前記第五式を用いて、前記問題の解としての選択肢の組み合わせを探索する、
ことを含む演算方法。
【0213】
(付記9)
コンピュータが、
第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得し、
各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、前記第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、前記目標値との差の2乗を示す式と、前記候補における第三特性値の合計を含む式との重み付け合計を含む式を通分した式における分子から分母と所定の変数との積を減算する式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、前記補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式が加えられた式を多項式に展開した式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている前記第一特性値、前記第二特性値、または、前記第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた式を生成し、
生成された式を用いて、前記問題の解としての選択肢の組み合わせを探索する
ことを含む演算方法。
【0214】
(付記10)
コンピュータに、
複数のバイナリ変数が、全順序付けされた識別番号で識別され、バイナリ変数ごとの定数が、その定数が紐付けられているバイナリ変数の識別番号で識別されている変換対象の式、かつ、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている定数を用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項を含む変換対象の式を、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じである式に変換すること
を実行させるためのプログラム。
【0215】
(付記11)
コンピュータに、
第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得することと、
各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、前記第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、前記目標値との差の2乗を示す式と、前記候補における第三特性値の合計を含む式との重み付け合計を含む第一式を生成することと、
前記第一式を、その第一式を通分した式における分子から分母と所定の変数との積を減算した第二式に変換することと、
前記第二式を、その第二式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、前記補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式を加えた第三式に変換することと、
前記第三式を、その第三式を多項式に展開した第四式に変換することと、
前記第四式を、その第四式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている前記第一特性値、前記第二特性値、または、前記第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた、第五式に変換することと、
前記第五式を用いて、前記問題の解としての選択肢の組み合わせを探索することと、
を実行させるためのプログラム。
【0216】
(付記12)
コンピュータに、
第一特性値と、第二特性値と、第三特性値と、をそれぞれ有する複数の選択肢のうち、選択された選択肢の組み合わせにおける、第一特性値の合計を第二特性値の合計で除算した値がなるべく所定の目標値に近くなり、選択された選択肢の組み合わせにおける第三特性値の合計を含む式の値がなるべく小さくなるような、選択肢の組み合わせを求める問題を取得することと、
各選択肢の選択の有無が、全順序付けされた識別番号で識別されている選択肢ごとのバイナリ変数の値で示されており、前記第一特性値は、その第一特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第二特性値は、その第二特性値が紐付けられているバイナリ変数の識別番号で識別されており、前記第三特性値は、その第三特性値が紐付けられているバイナリ変数の識別番号で識別されており、選択肢の組み合わせの候補における、第一特性値の合計を第二特性値の合計で除算した値と、前記目標値との差の2乗を示す式と、前記候補における第三特性値の合計を含む式との重み付け合計を含む式を通分した式における分子から分母と所定の変数との積を減算する式に、2つのバイナリ変数の積の値を示すバイナリ変数である補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と等しいときに、前記補助ビットの値が、表現対象となっている2つのバイナリ変数の積の値と異なるときよりも小さい値を示す式が加えられた式を多項式に展開した式に含まれる項のうち、異なる3つのバイナリ変数が、それら3つのバイナリ変数それぞれに紐付けられている前記第一特性値、前記第二特性値、または、前記第三特性値の少なくとも何れかを用いた式で表される係数と掛け合わせられ、識別番号が変数で示されている式である、同じ共通式で表すことができる複数の項が、項内での識別番号の交換によって、それら複数の項の全てにおいて、前記共通式で項を表した場合の、識別番号を示す3つの変数の順序関係が同じになっており、かつ、同じバイナリ変数の積が1つのそのバイナリ変数に置き換えられた式を生成することと、
生成された式を用いて、前記問題の解としての選択肢の組み合わせを探索することと、
を実行させるためのプログラム。
【符号の説明】
【0217】
11、12、620、630 演算装置
20 演算システム
21 問題設定装置
22、610 変換装置
23 解探索装置
110、310 通信部
120 表示部
130 操作入力部
170、370 記憶部
180、280、380 制御部
181、621、631 問題取得部
182、282、632 目的関数設定部
183、627、633 演算実行部
191、622 目的関数生成部
192、381、611 変換部
193、623 分数式変換部
194、624 補助ビット導入部
195、625 展開部
196、626 項調整部