▶ 富士通株式会社の特許一覧
特開2022-191945情報処理装置、情報処理方法および情報処理プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022191945
(43)【公開日】2022-12-28
(54)【発明の名称】情報処理装置、情報処理方法および情報処理プログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20221221BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2021100482
(22)【出願日】2021-06-16
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】橋間 正芳
(72)【発明者】
【氏名】天田 英之
(72)【発明者】
【氏名】松岡 英俊
(57)【要約】
【課題】多目的最適化問題において効率的に最適解を得ること。
【解決手段】情報処理装置は、複数の要素目的関数を含む目的関数に対し、複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成する。情報処理装置は、第1の目的関数、第2の目的関数及び第3の目的関数のそれぞれの値を算出して解の探索を実行する。情報処理装置は、第1の目的関数の重み係数の値と第2の目的関数の重み係数の値の第1差分と、第1の目的関数の重み係数の値と第2の目的関数の重み係数の値の第2差分とを比較する。情報処理装置は、第1差分が第2差分より小さい場合、第1の目的関数に基づいて探索された解と第2の目的関数に基づいて探索された解を交換して探索を更に実行する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数の要素目的関数を含む目的関数に対し、前記複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成し、
前記第1の目的関数、前記第2の目的関数及び前記第3の目的関数のそれぞれの値を算出して解の探索を実行し、
前記第1の目的関数の前記重み係数の値と前記第2の目的関数の前記重み係数の値の第1差分と、前記第1の目的関数の前記重み係数の値と前記第2の目的関数の前記重み係数の値の第2差分とを比較し、
前記第1差分が前記第2差分より小さい場合、前記第1の目的関数に基づいて探索された前記解と前記第2の目的関数に基づいて探索された前記解を交換して前記探索を更に実行する
処理を実行する制御部を有することを特徴とする情報処理装置。
【請求項2】
複数の要素目的関数を含む目的関数に対し、前記複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成し、
前記第1の目的関数、前記第2の目的関数及び前記第3の目的関数のそれぞれの値を算出して解の探索を実行し、
前記第1の目的関数に基づいて探索された第1の解と前記第2の目的関数に基づいて探索された第2の解との第1差分と、前記第1の解と前記第3の目的関数に基づいて探索された第3の解との第2差分とを比較し、
前記第1差分が前記第2差分より小さい場合、前記第1の解と前記第2の解を交換して前記探索を更に実行する
処理を実行する制御部を有することを特徴とする情報処理装置。
【請求項3】
複数の要素目的関数を含む目的関数に対し、前記複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成し、
前記第1の目的関数、前記第2の目的関数及び前記第3の目的関数のそれぞれの値を算出して解の探索を実行し、
前記第1の目的関数に含まれる前記複数の要素目的関数の値と、前記第2の目的関数に含まれる前記複数の要素目的関数の値との第1差分と、前記第1の目的関数に含まれる前記複数の要素目的関数の値と、前記第3の目的関数に含まれる前記複数の要素目的関数の値との第2差分とを比較し、
前記第1差分が前記第2差分より小さい場合、前記第1の目的関数に基づいて探索された第1の解と前記第2の目的関数に基づいて探索された第2の解とを交換して前記探索を更に実行する
処理を実行する制御部を有することを特徴とする情報処理装置。
【請求項4】
複数の要素目的関数を含む目的関数に対し、前記複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成し、
前記第1の目的関数、前記第2の目的関数及び前記第3の目的関数のそれぞれの値を算出して解の探索を実行し、
前記第1の目的関数の前記重み係数の値と前記第2の目的関数の前記重み係数の値の第1差分と、前記第1の目的関数の前記重み係数の値と前記第2の目的関数の前記重み係数の値の第2差分とを比較し、
前記第1差分が前記第2差分より小さい場合、前記第1の目的関数に基づいて探索された前記解と前記第2の目的関数に基づいて探索された前記解を交換して前記探索を更に実行する
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項5】
複数の要素目的関数を含む目的関数に対し、前記複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成し、
前記第1の目的関数、前記第2の目的関数及び前記第3の目的関数のそれぞれの値を算出して解の探索を実行し、
前記第1の目的関数の前記重み係数の値と前記第2の目的関数の前記重み係数の値の第1差分と、前記第1の目的関数の前記重み係数の値と前記第2の目的関数の前記重み係数の値の第2差分とを比較し、
前記第1差分が前記第2差分より小さい場合、前記第1の目的関数に基づいて探索された前記解と前記第2の目的関数に基づいて探索された前記解を交換して前記探索を更に実行する
処理をコンピュータに実行することを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置等に関する。
【背景技術】
【0002】
2つの目的関数P(x)、Q(x)を同時に評価する多目的最適化の解法として、目的関数を式(1)の形にして単目的の最適化問題を解く手法が知られている。式(1)に示されるα、βは、重み係数である。
【0003】
F(x)=αP(x)+βQ(x)・・・(1)
【0004】
以下の説明では適宜、目的関数P(x)をP、目的関数Q(x)をQと表記する。また、P及びQを要素目的関数と呼ぶ場合もある。要素目的関数PとQとがトレードオフの関係、つまり、Pを小さくするとQが大きくなる関係がある場合、重み係数α、βを変化させることで、PとQとのバランスを変えることができる。たとえば、式(1)のαを大きくすると、QよりもPの値を小さくする力が働く。
【0005】
トレードオフのバランスを変えた複数の最適解を取得するため、重み係数α、βを変えた複数の目的関数Fを用意し、それぞれで最適解を計算することが行われる。これらの最適解を、目的関数に入力して得られる結果が、パレート解となる。より多くの種類のパレート解を計算し、パレート解の分布を可視化することで、設計者は、多くの情報を得ることができる。
【0006】
図10は、パレート解の一例を示す図である。
図10の横軸は目的関数Qの値に対応する軸であり、縦軸は目的関数Pの値に対応する軸である。たとえば、パレート解10aは、αおよびβの関係が「α/β=10」となる目的関数Fの最適解に対応する。パレート解10b~10gは、それぞれ、αおよびβの関係が「α/β=5」、「α/β=2」、「α/β=1」、「α/β=0.5」、「α/β=0.2」、「α/β=0.1」となる目的関数Fの最適解に対応する。各矢印は、目的関数Fの最適解検索方向となる。
【0007】
図11は、重み係数α、βを変えた複数の目的関数Fについての最適化計算のイメージ図である。
図11に示すように、目的関数Fは、重み係数α、βの違いによって、最適解xが変わる。また、最適解の他に多数の局所解がある場合がある。多数の局所解がある場合には、局所解から脱出して最適解に到達することが課題である。
【0008】
図11において、グラフG1の縦軸は目的関数F
1の値に対応し、横軸は解xに対応する。目的関数F
1の重み係数をα
1、β
1とし、「α
1=2、β
1=1」とする。グラフG1に示すように、目的関数F
1の最適解はx
1となる。グラフG1の四角マークは、局所解を示す。
【0009】
グラフG2の縦軸は目的関数F2の値に対応し、横軸は解xに対応する。目的関数F2の重み係数をα2、β2とし、「α2=1、β2=1」とする。グラフG2に示すように、目的関数F2の最適解はx2となる。グラフG2の四角マークは、局所解を示す。
【0010】
グラフG3の縦軸は目的関数F3の値に対応し、横軸は解xに対応する。目的関数F3の重み係数をα3、β3とし、「α3=1、β3=2」とする。グラフG3に示すように、目的関数F3の最適解はx3となる。グラフG3の四角マークは、局所解を示す。
【0011】
グラフG1~G3を比較すると、αが大きいと最適解は左寄りになり、βが大きいと最適解は右寄りになる。また、最適解の探索途中で、局所解に陥る場合が多い。
【0012】
ここで、局所解からの脱出と、他の目的関数に有効な初期解を作れる可能性から、複数の目的関数の最適化計算を並行して実行し、最適解を交換する従来技術がある。最小解を複数個保存しておくことで、多様な解を作ることができる。尚、目的関数の値が最大になる場合の解を最適解とするよう目的関数が設定される場合もある。例えば上述の式(1)において右辺の符号をマイナス(-)とした場合、最大解を探索する目的関数が得られる。
【0013】
図12は、従来技術の目的関数の最適化計算の処理手順を示すフローチャートである。
図12では、目的関数F
1の最適化計算の処理手順を示すが、同様の手順によって、他の目的関数の最適化計算も並列して実行される。ここでは、他の目的関数を、目的関数F
2、F
3とする。便宜的に、目的関数F
1の最適化計算を、第1最適化計算とする。目的関数F
2の最適化計算を、第2最適化計算とする。目的関数F
3の最適化計算を、第3最適化計算とする。
【0014】
図12に示すように、従来技術では、第1最適化計算において、初期解x
i1を入力し(ステップS11)、目的関数F
1の最適解の探索計算を実行する(ステップS12)。従来技術は、第1最適化計算の探索結果となる最小値f
1、最小解x
o1を出力し、第2最適化計算、第2最適化計算で利用する(ステップS13)。
【0015】
従来技術では、第2最適化計算および第3最適化計算によって得られた他の最小解(xo2、xo3)を入力し、目的関数F1を計算する(ステップS14)。従来技術では、処理を継続する場合には(ステップS15,Yes)、ステップS16に移行する。
【0016】
従来技術では、最小値f1を含めて一番小さい値をfm1とし、その解を初期解xi1に入力し(ステップS16)、ステップS11に移行する。たとえば、ステップS16では、F1に第2最適化計算の最小解xo2を入力した値、F1に第3最適化計算の最小解xo3を入力した値、最小値f1のうち、一番小さい値をfm1とする。
【0017】
一方、従来技術では、処理を継続しない場合には(ステップS15,No)、最小値f1m、最小解xi1を最小値の小さいものからN個を記憶部に保存する(ステップS17)。
【0018】
図示を省略するが、第2最適化計算では、目的関数F
2を用いて、
図12に対応する最適化計算を実行する。第3最適化計算では、目的関数F
3を用いて、
図12に対応する最適化計算を実行する。上記のように、従来技術では、複数の目的関数の最適化計算を並行して実行し、最適解を交換することで、多様な最適解を作成する。
【先行技術文献】
【特許文献】
【0019】
【特許文献1】特開2009-181195号公報
【特許文献2】米国特許第8645293号明細書
【発明の概要】
【発明が解決しようとする課題】
【0020】
しかしながら、上述した従来技術では、多目的最適化問題において効率的に最適解を得ることができないという問題がある。
【0021】
従来技術では、複数の目的関数の中に、最小値が非常に小さい最適解または局所解が存在すると、最適解を交換した場合に、目的関数がかかる最適解または局所解から脱出できなくなり、効率的に最適解を作成できなくなる。
【0022】
図13は、従来技術の問題を説明するための図である。グラフG1~G3の縦軸および横軸に関する説明は、
図11で説明したグラフG1~G3の縦軸および横軸に関する説明と同様である。
【0023】
たとえば、第1最適化計算では、初期解xi1を入力して、目的関数F1の最適解の探索計算を実行し、最適解x11を得る。第2最適化計算では、初期解xi2を入力して、目的関数F2の最適解の探索計算を実行し、最適解x21を得る。第3最適化計算では、初期解xi3を入力して、目的関数F3の最適解の探索計算を実行し、最適解x31を得る。
【0024】
第1最適化計算では、最適解を交換することで、第2最適化計算および第3最適化計算の探索結果となる、最適解x21、x31を利用する。第1最適化計算では、F1(x11)、F1(x21)、F1(x31)をそれぞれ計算する。グラフG1に示す例では、F1(x31)が一番小さい値となるので、x31を初期解に採用し、再度、探索計算を実行する。
【0025】
第2最適化計算では、最適解を交換することで、第1最適化計算および第3最適化計算の探索結果となる、最適解x11、x31を利用する。第2最適化計算では、F2(x11)、F2(x21)、F2(x31)をそれぞれ計算する。グラフG2に示す例では、F2(x21)が一番小さい値となるので、x21を初期解に採用し、再度、探索計算を実行する。
【0026】
第3最適化計算では、最適解を交換することで、第1最適化計算および第2最適化計算の探索結果となる、最適解x11、x21を利用する。第3最適化計算では、F3(x11)、F3(x21)、F3(x31)をそれぞれ計算する。グラフG3に示す例では、F3(x31)が一番小さい値となるので、x31を初期解に採用し、再度、探索計算を実行する。
【0027】
ここで、第1最適化計算に着目すると、上記処理を繰り返す過程において、最適解を第2最適化計算および第3最適化計算の探索結果を利用すると、目的関数F1が最小となる最適解が、毎回x31となるため、初期解がx31に戻る。このように、毎回初期解がx31に戻ってしまうと、最適解xop1にたどり着くことが難しくなる。
【0028】
1つの側面では、本発明は、多目的最適化問題において効率的に最適解を得ることができる情報処理装置、情報処理方法および情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0029】
第1の案では、情報処理装置は、複数の要素目的関数を含む目的関数に対し、複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成する。情報処理装置は、第1の目的関数、第2の目的関数及び第3の目的関数のそれぞれの値を算出して解の探索を実行する。情報処理装置は、第1の目的関数の重み係数の値と第2の目的関数の重み係数の値の第1差分と、第1の目的関数の重み係数の値と第2の目的関数の重み係数の値の第2差分とを比較する。情報処理装置は、第1差分が第2差分より小さい場合、第1の目的関数に基づいて探索された解と第2の目的関数に基づいて探索された解を交換して探索を更に実行する。
【発明の効果】
【0030】
多目的最適化問題において効率的に最適解を得ることができる。
【図面の簡単な説明】
【0031】
【
図1】
図1は、本実施例1に係る情報処理装置の処理を説明するための図である。
【
図2】
図2は、本実施例1に係る情報処理装置の構成を示す機能ブロック図である。
【
図3】
図3は、重み係数テーブルのデータ構造の一例を示す図である。
【
図4】
図4は、共有バッファのデータ構造の一例を示す図である。
【
図5】
図5は、本実施例1に係る計算部の処理手順を示すフローチャートである。
【
図6】
図6は、本実施例1に係る最適化計算処理の処理手順を示すフローチャートである。
【
図7】
図7は、本実施例2に係る情報処理装置の構成を示す機能ブロック図である。
【
図8】
図8は、本実施例2に係る最適化計算処理の処理手順を示すフローチャートである。
【
図9】
図9は、実施例の情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【
図11】
図11は、重み係数α、βを変えた複数の目的関数Fについての最適化計算のイメージ図である。
【
図12】
図12は、従来技術の目的関数の最適化計算の処理手順を示すフローチャートである。
【
図13】
図13は、従来技術の問題を説明するための図である。
【発明を実施するための形態】
【0032】
以下に、本願の開示する情報処理装置、情報処理方法および情報処理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例0033】
本実施例1に係る情報処理装置は、重み係数の異なる複数の目的関数の最適化計算を並行して実行する場合、重み係数の近い複数の目的関数の間で最小解の交換を行い、初期解を特定し、最適解の探索を行う処理を繰り返し実行する。以下の説明では、適宜、最適解を交換することを解交換と表記する。「最小解」は、最適解の探索時において、探索される解であり、局所解または最適解に対応する解となる。局所解、最適解を特に区別しない場合、最小解と表記する。
【0034】
本実施例1では一例として、目的関数F1、F2、F3を用いて説明を行う。目的関数F1、F2、F3を、式(2)、式(3)、式(4)に示す。ここで、各重み係数を、α1=2、β1=1、α2=1、β2=1、α3=1、β3=2とする。P(x)、Q(x)は、「要素目的関数」に対応する。
【0035】
F1(x)=α1P(x)+β1Q(x)・・・(2)
F2(x)=α2P(x)+β2Q(x)・・・(3)
F3(x)=α3P(x)+β3Q(x)・・・(4)
【0036】
情報処理装置は、目的関数F1、F2、F3の重み係数を比較し、重み係数の近い目的関数を、解交換を行う目的関数として特定する。たとえば、情報処理装置は、同種の重み係数の差分の絶対値の合計が閾値未満となる目的関数を、解交換を行う目的関数として特定する。情報処理装置は、目的関数F1と目的関数F2とで、解交換を行う。また、情報処理装置は、目的関数F2と目的関数F3とで、解交換を行う。
【0037】
図1は、本実施例1に係る情報処理装置の処理を説明するための図である。グラフG11の縦軸は目的関数F
1の値に対応し、横軸は解xに対応する。グラフG12の縦軸は目的関数F
2の値に対応し、横軸は解xに対応する。グラフG13の縦軸は目的関数F
3の値に対応し、横軸は解xに対応する。
【0038】
便宜的に、目的関数F1の最適化計算を、第1最適化計算とする。目的関数F2の最適化計算を、第2最適化計算とする。目的関数F3の最適化計算を、第3最適化計算とする。情報処理装置は、第1最適解計算、第2最適化計算、第3最適化計算を並列して実行する。
【0039】
情報処理装置は、第1最適化計算において、初期解xi1を入力して、目的関数F1の最適解の探索計算を実行し、最小解x11を得る。情報処理装置は、第2最適化計算において、初期解xi2を入力して、目的関数F2の最適解の探索計算を実行し、最小解x21を得る。情報処理装置は、第3最適化計算において、初期解xi3を入力して、目的関数F3の最適解の探索計算を実行し、最小解x31を得る。
【0040】
情報処理装置は、目的関数F1に関して、目的関数F2との間で解交換を行う。このため、情報処理装置は、第1最適化計算では、第2最適化計算の探索結果となる、最小解x21を利用する。情報処理装置は、第1最適化計算において、F1(x11)、F1(x21)をそれぞれ計算する。グラフG11に示す例では、F1(x21)が一番小さい値となるので、x21を初期解に採用し、再度、探索計算を実行する。
【0041】
情報処理装置は、目的関数F2に関して、目的関数F2および目的関数F3との間で解交換を行う。このため、情報処理装置は、第2最適化計算では、第1最適化計算および第3最適化計算の探索結果となる、最小解x11、x31を利用する。第2最適化計算では、F2(x11)、F2(x21)、F2(x31)をそれぞれ計算する。グラフG12に示す例では、F2(x21)が一番小さい値となるので、x21を初期解に採用し、再度、探索計算を実行する。
【0042】
情報処理装置は、目的関数F3に関して、目的関数F2との間で解交換を行う。このため、情報処理装置は、第3最適化計算では、第2最適化計算の探索結果となる、最小解x21を利用する。情報処理装置は、第1最適化計算において、F3(x21)、F3(x31)をそれぞれ計算する。グラフG13に示す例では、F3(x31)が一番小さい値となるので、x31を初期解に採用し、再度、探索計算を実行する。
【0043】
ここで、第1最適化計算に着目すると、初期解x21は、最適解xop1に近いので、最適解xop1に達する可能性が高くなり、多目的最適化問題において効率的に最適解を得ることができる。
【0044】
次に、本実施例1に係る情報処理装置の構成の一例について説明する。
図2は、本実施例1に係る情報処理装置の構成を示す機能ブロック図である。
図2に示すように、情報処理装置100は、通信部110と、入力部120と、表示部130と、記憶部140と、制御部150とを有する。
【0045】
通信部110は、有線又は無線で外部装置等に接続され、外部装置等との間で情報の送受信を行う。たとえば、通信部110は、NIC(Network Interface Card)等によって実現される。通信部110は、図示しないネットワークに接続されていてもよい。
【0046】
入力部120は、各種の情報を、情報処理装置100に入力する入力装置である。入力部120は、キーボードやマウス、タッチパネル等に対応する。
【0047】
表示部130は、制御部150から出力される情報を表示する表示装置である。表示部130は、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ、タッチパネル等に対応する。たとえば、最適化計算の算出結果が、表示部130に表示される。
【0048】
記憶部140は、重み係数テーブル141、共有バッファ142を有する。記憶部140は、たとえば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。
【0049】
重み係数テーブル141は、目的関数に設定される重み係数に関する情報を保持する。
図3は、重み係数テーブルのデータ構造の一例を示す図である。
図3に示すように、重み係数テーブル141では、識別情報と、重み係数とを対応付けられる。識別情報は、目的関数を識別する情報である。重み係数は、対応する目的関数に設定される重み係数を示す。たとえば、識別情報F-1は、式(2)に定義される目的関数F
1を示す。識別情報F-2は、式(3)に定義される目的関数F
2を示す。識別情報F-3は、式(4)に定義される目的関数F
3を示す。
【0050】
図3に示す例では、識別情報「F-1」に対応する目的関数F
1の重み係数が「α
1=2、β
1=1」であることが示される。識別情報「F-2」に対応する目的関数F
2の重み係数が「α
1=1、β
1=1」であることが示される。識別情報「F-3」に対応する目的関数F
3の重み係数が「α
1=1、β
1=2」であることが示される。
【0051】
共有バッファ142は、目的関数に対する最適化計算において、出力される最小解を保持するバッファである。
図4は、共有バッファのデータ構造の一例を示す図である。
図4に示すように、共有バッファ142は、識別情報と、最小解とを対応付けられる。識別情報は、目的関数を識別する情報である。最小解は、各目的関数の最小解の探索時に検出される解である。最小解は、局所解または最適解に相当する。
【0052】
図示を省略するが、記憶部140は、目的関数F1、F2、F3の要素目的関数P(x)、Q(x)に設定される各パラメータの情報を有していてもよい。
【0053】
図2の説明に戻る。制御部150は、計算部151と、出力部152とを有する。制御部150は、たとえば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)により実現される。また、制御部150は、例えばASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実行されてもよい。
【0054】
計算部151は、目的関数F1~FDに対する最適化計算を並列に実行する。計算部151は、重み係数テーブル141を基にして、重み係数の近い目的関数を、解交換を行う目的関数として特定する。たとえば、計算部151は、同種の重み係数の差分の絶対値の合計が閾値未満となる目的関数を、解交換を行う目的関数として特定する。
【0055】
計算部151は、重み係数の異なる複数の目的関数の最適化計算を並行して実行する場合、重み係数の近い複数の目的関数の間で最小解の交換を行い、初期解を特定し、最適解の探索を行う処理を繰り返し実行する。
【0056】
図5は、本実施例1に係る計算部の処理手順を示すフローチャートである。
図5に示すように、情報処理装置100の計算部151は、初期設定を行う(ステップS101)。初期設定には、並列で実行する最適化計算の数の設定、各目的関数の設定、初期解の設定、最適解の探索計算の繰り返し数L等が含まれる。
【0057】
計算部151は、最適化計算1~Dを並列で起動する(ステップS102)。計算部151は、共有バッファ142を確保する(ステップS103)。計算部151は、各最適化計算について、最適化計算処理をそれぞれ並列的に実行する(ステップS104)。
【0058】
図5のステップ104の最適化計算処理では、目的関数F
1~F
Dに対する最適化計算を並列に実行されるが、以下の
図6では、一つの目的関数に対する最適化計算処理について説明する。
【0059】
図6は、本実施例1に係る最適化計算処理の処理手順を示すフローチャートである。
図6に示すように、情報処理装置100の計算部151は、重み係数テーブル141を基にして、解交換の対象となる目的関数を特定する(ステップS201)。計算部151は、繰り返し数cを初期値に設定する(ステップS202)。
【0060】
計算部151は、初期解xisを設定する(ステップS203)。計算部151は、目的関数Fsの最小解の探索計算を実行する(ステップS204)。計算部151は、最小解を検出しない場合には(ステップS205,No)、再度、ステップS204に移行する。
【0061】
計算部151は、最小解を検出した場合には(ステップS205,Yes)、最小値fs、最小解xosを、最小値の小さいものからN個保存する(ステップS206)。計算部151は、繰り返し数cに1を加算して、繰り返し数cを更新する(ステップS207)。
【0062】
計算部151は、繰り返し数cがL以上である場合には(ステップS208,Yes)、目的関数Fsに関する最適化計算を終了する。一方、計算部151は、繰り返し数cがL以上でない場合には(ステップS208,No)、ステップS209に移行する。
【0063】
計算部151は、最小値となる最小解xosを、共有バッファ142に登録する(ステップS209)。計算部151は、共有バッファ142から、解交換の対象となる目的関数の最小解xonを取得する(ステップS210)。
【0064】
計算部151は、各最小解xonに対する目的関数Fsを計算し、一番小さい値の解を初期解xisに代入し(ステップS211)、ステップS203に移行する。
【0065】
計算部151は、
図6に示した最適化計算処理を、各目的関数F
1~F
Dに対して並列に実行する。計算部151は、各目的関数F
1~F
Dに対する最適解計算結果となる最適解の情報を、出力部152に出力する。
【0066】
出力部152は、計算部151から受付けた各各目的関数F1~FDに対する最適解計算結果となる最適解の情報を、表示部130に出力して表示させる。
【0067】
次に、本実施例1に係る情報処理装置100の効果について説明する。情報処理装置100は、重み係数の異なる複数の目的関数の最適化計算を並行して実行する場合、重み係数の近い複数の目的関数の間で最小解の交換を行い、初期解を特定し、最適解の探索を行う処理を繰り返し実行する。これによって、目的関数の最適解に近くに、初期解を設定でき、効率的に最適解を得ることができる。
【実施例0068】
実施例1に係る情報処理装置100は、重み係数を基にして、解交換を行う目的関数を特定していたがこれに限定されるものではない。本実施例2に係る情報処理装置では、目的関数としては近くない場合でも、最小解が近い場合に、解交換を行う。
【0069】
ここでは、目的関数F1、F2、F3を用いて説明する。情報処理装置は、目的関数F1に初期解xi1を入力して、目的関数F1の最適解の探索計算を実行し、最小解x11を得る。情報処理装置は、目的関数F2に初期解xi2を入力して、目的関数F2の最適解の探索計算を実行し、最小解x21を得る。情報処理装置は、目的関数F3に初期解xi3を入力して、目的関数F3の最適解の探索計算を実行し、最小解x31を得る。
【0070】
ここで、情報処理装置は、目的関数F1と解交換を行う目的関数を次のように特定する。情報処理装置は、最小解x11と、他の最小解x21、x31とのハミング距離をそれぞれ算出し、ハミング距離が閾値以下となる最小解を特定し、特定した最小解に対応する目的関数を、解交換を行う目的関数とする。たとえば、情報処理装置は、最小解x11と、最小解x21とのハミング距離が閾値以下となる場合には、目的関数F1と解交換を行う目的関数を、目的関数F2とする。
【0071】
情報処理装置は、他の目的関数F2、F3についても同様にして、解交換を行う目的関数を特定する。
【0072】
上記のように、本実施例2に係る情報処理装置では、最小解が近い目的関数同士で、解交換を行うことで、初期解が最適解から離れた値に設定されることを抑止し、多目的最適化問題において効率的に最適解を得ることができる。
【0073】
次に、本実施例2に係る情報処理装置の構成の一例について説明する。
図7は、本実施例2に係る情報処理装置の構成を示す機能ブロック図である。
図7に示すように、情報処理装置200は、通信部210と、入力部220と、表示部230と、記憶部240と、制御部250とを有する。
【0074】
図7において、通信部210、入力部220、表示部230に関する説明は、
図2で説明した通信部110、入力部120、表示部130に関する説明と同様である。
【0075】
記憶部240は、重み係数テーブル241、共有バッファ242を有する。記憶部240は、たとえば、RAM、フラッシュメモリ等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。
【0076】
重み係数テーブル241は、目的関数に設定される重み係数に関する情報を保持する。その他の重み係数テーブル241に関する説明は、重み係数テーブル141に関する説明と同様である。
【0077】
共有バッファ242は、目的関数に対する最適化計算において、出力される最小解を保持するバッファである。その他の共有バッファ242に関する説明は、共有バッファ142に関する説明と同様である。
【0078】
制御部250は、計算部251と、出力部252とを有する。制御部250は、たとえば、CPUやMPUにより実現される。また、制御部250は、例えばASICやFPGA等の集積回路により実行されてもよい。
【0079】
計算部251は、目的関数F1~FDに対する最適化計算を並列に実行する。計算部251は、目的関数としては近くない場合でも、最小解が近い場合に、解交換を行う。
【0080】
ここでは、目的関数F1、F2、F3を用いて説明する。計算部251は、目的関数F1に初期解xi1を入力して、目的関数F1の最適解の探索計算を実行し、最小解x11を得る。計算部251は、目的関数F2に初期解xi2を入力して、目的関数F2の最適解の探索計算を実行し、最小解x21を得る。計算部251は、目的関数F3に初期解xi3を入力して、目的関数F3の最適解の探索計算を実行し、最小解x31を得る。
【0081】
計算部251は、目的関数F1と解交換を行う目的関数を次のように特定する。計算部251は、最小解x11と、他の最小解x21、x31とのハミング距離をそれぞれ算出し、ハミング距離が閾値以下となる最小解を特定し、特定した最小解に対応する目的関数を、解交換を行う目的関数とする。たとえば、計算部251は、最小解x11と、最小解x21とのハミング距離が閾値以下となる場合には、目的関数F1と解交換を行う目的関数を、目的関数F2とする。
【0082】
たとえば、計算部251は、次の処理を実行する。計算部251は、最小解x11と、他の目的関数の最小解x21、x31とのハミング距離をそれぞれ算出し、最小解x11と、最小解x21とのハミング距離が閾値以下となる場合には、F1(x11)、F1(x21)を計算する。計算部251は、F1(x11)が最小となる場合には、初期解をx11として、目的関数F1の最適解の探索計算を実行する。計算部251は、F1(x21)が最小となる場合には、初期解をx21として、目的関数F1の最適解の探索計算を実行する。
【0083】
計算部251は、各最小解に対する目的関数Fを計算し、一番小さい値の解(最小解)を、初期解に代入して、最適解の探索計算を繰り返し実行する。
【0084】
計算部251は、他の目的関数F2、F3についても同様にして、解交換を行う目的関数を特定する。
【0085】
計算部251の処理手順の一例について説明する。計算部251の処理手順は、実施例1の
図5で説明した計算部151の処理手順と比較して、最適化計算処理の内容が、計算部151の処理手順と相違する。このため、本実施例2に係る計算部251が実行する最適化計算処理について説明する。
【0086】
図8は、本実施例2に係る最適化計算処理の処理手順を示すフローチャートである。情報処理装置200の計算部251は、繰り返し数cを初期値に設定する(ステップS301)。
【0087】
計算部251は、初期解xisを設定する(ステップS302)。計算部251は、目的関数Fsの最小解の探索計算を実行する(ステップS303)。計算部251は、最小解を検出しない場合には(ステップS304,No)、ステップS303に移行する。
【0088】
計算部251は、最小解を検出した場合には(ステップS304,Yes)、最小値fs、最小解xosを、最小値の小さいものからN個保存する(ステップS305)。計算部251は、繰り返し数cに1を加算して、繰り返し数cを更新する(ステップS306)。
【0089】
計算部251は、繰り返し数cがL以上である場合には(ステップS307,Yes)、目的関数Fsに関する最適化計算を終了する。一方、計算部251は、繰り返し数cがL以上でない場合には(ステップS307,No)、ステップS308に移行する。
【0090】
計算部251は、最小値となる最小解xosを、共有バッファ242に登録する(ステップS308)。計算部251は、共有バッファ242から、各目的関数の最小解xo1~xoDを取得する(ステップS309)。
【0091】
計算部251は、各最小解xo1~xoDのうち、最小解xosとハミング距離の近い最小解を選択する(ステップS310)。計算部251は、ハミング距離の近い(ハミング距離が閾値以下となる)、各最小解に対する目的関数Fsを計算し、一番小さい値の解を初期解xisに代入し(ステップS311)、ステップS302に移行する。
【0092】
計算部251は、
図8に示した最適化計算処理を、各目的関数F
1~F
Dに対して並列に実行する。計算部251は、各目的関数F
1~F
Dに対する最適解計算結果となる最適解の情報を、出力部252に出力する。
【0093】
出力部252は、計算部251から受付けた各各目的関数F1~FDに対する最適解計算結果となる最適解の情報を、表示部230に出力して表示させる。
【0094】
次に、本実施例2に係る情報処理装置200の効果について説明する。情報処理装置200は、最小解が近い目的関数同士で、解交換を行うことで、初期解が最適解から離れた値に設定されることを抑止し、多目的最適化問題において効率的に最適解を得ることができる。
【0095】
ところで、情報処理装置200の計算部251は、最小解が近い目的関数同士で、解交換を行っていたがこれに限定されるものではない。たとえば、計算部251は、要素目的関数P、Qの値を基にして、近い値の解であれば解交換を実行してもよい。
【0096】
計算部251のその他の処理を、目的関数F1、F2、F3を用いて説明する。目的関数F1、F2、F3は、式(2)、式(3)、式(4)に示すように、要素目的関数P、Qからなる。
【0097】
計算部251は、目的関数F1に初期解xi1を入力して、目的関数F1の最適解の探索計算を実行し、最小解x11を得る。計算部251は、目的関数F2に初期解xi2を入力して、目的関数F2の最適解の探索計算を実行し、最小解x21を得る。計算部251は、目的関数F3に初期解xi3を入力して、目的関数F3の最適解の探索計算を実行し、最小解x31を得る。
【0098】
計算部251は、P(x11)およびQ(x11)、P(x21)およびQ(x21)、P(x31)およびQ(x31)をそれぞれ算出する。たとえば、計算部251は、P(x11)とP(x21)とのハミング距離が閾値以下で、かつ、Q(x11)とQ(x21)とハミング距離が閾値以下である場合に、目的関数F1とF2とで解交換を行う。
【0099】
計算部251は、解交換の後、F1(x11)、F1(x21)を計算する。計算部251は、F1(x11)が最小となる場合には、初期解をx11として、目的関数F1の最適解の探索計算を実行する。計算部251は、F1(x21)が最小となる場合には、初期解をx21として、目的関数F1の最適解の探索計算を実行する。
【0100】
上記のように、情報処理装置200は、要素目的関数P、Qの値を基にして、近い値の解であれば解交換を実行した場合でも、初期解が最適解から離れた値に設定されることを抑止し、多目的最適化問題において効率的に最適解を得ることができる。
【0101】
次に、上記実施例に示した情報処理装置100(200)と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。
図9は、実施例の情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【0102】
図9に示すように、コンピュータ300は、各種演算処理を実行するCPU301と、ユーザからのデータの入力を受け付ける入力装置302と、ディスプレイ303とを有する。また、コンピュータ300は、有線または無線ネットワークを介して、外部装置等との間でデータの授受を行う通信装置304と、インタフェース装置305とを有する。また、コンピュータ300は、各種情報を一時記憶するRAM306と、ハードディスク装置307とを有する。そして、各装置301~307は、バス308に接続される。
【0103】
ハードディスク装置307は、計算プログラム307a、出力プログラム307bを有する。また、CPU301は、各プログラム307a,307bを読み出してRAM306に展開する。
【0104】
計算プログラム307aは、計算プロセス306aとして機能する。出力プログラム307bは、出力プロセス306bとして機能する。
【0105】
計算プロセス306aの処理は、計算部151,251の処理に対応する。出力プロセス306bの処理は、出力部152,252の処理に対応する。
【0106】
なお、各プログラム307a,307bについては、必ずしも最初からハードディスク装置307に記憶させておかなくても良い。例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD-ROM、DVD、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ300が各プログラム307a,307bを読み出して実行するようにしてもよい。
【0107】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0108】
(付記1)重み係数が設定された複数の要素目的関数からなる複数の目的関数であって、前記重み係数の異なる前記複数の目的関数に初期解を入力し、前記目的関数の出力が最小値となる最小解をそれぞれ探索し、
前記複数の目的関数に設定される重み係数、前記複数の目的関数を用いて探索した最小解、または、前記複数の要素目的関数に、複数の目的関数を用いて探索した最小解を入力した際の出力値を基にして、解交換を行う複数の目的関数を特定し、
前記解交換を行う複数の目的関数のうち、第1の目的関数の第1の最小解と、第2の目的関数の第2の最小解とを基にして、前記第1の目的関数の初期解を特定し、
特定した初期解を、前記第1の目的関数に入力し、前記第1の目的関数の出力が最小となる最小解を探索する
処理を実行する制御部を有することを特徴とする情報処理装置。
【0109】
(付記2)前記制御部は、前記第1の最小解および前記第2の最小解のうち、前記第1の目的関数に入力した際の値が最小となる最小解を、前記初期解として特定することを特徴とする付記1に記載の情報処理装置。
【0110】
(付記3)前記制御部は、前記複数の目的関数に設定される重み係数を基にして、前記解交換を行う複数の目的関数を特定する場合、前記重み係数の近い複数の目的関数を、前記解交換を行う複数の目的関数として特定することを特徴とする付記1に記載の情報処理装置。
【0111】
(付記4)前記制御部は、前記複数の目的関数を用いて探索した最小解を基にして、前記解交換を行う複数の目的関数を特定する場合、前記最小解の近い複数の目的関数を、前記解交換を行う複数の目的関数として特定することを特徴とする付記1に記載の情報処理装置。
【0112】
(付記5)前記制御部は、前記複数の要素目的関数に、複数の目的関数を用いて探索した最小解を入力した際の出力値を基にして、前記解交換を行う複数の目的関数を特定する場合、前記出力値が近い複数の目的関数を、前記解交換を行う複数の目的関数として特定することを特徴とする付記1に記載の情報処理装置。
【0113】
(付記6)重み係数が設定された複数の要素目的関数からなる複数の目的関数であって、前記重み係数の異なる前記複数の目的関数に初期解を入力し、前記目的関数の出力が最小値となる最小解をそれぞれ探索し、
前記複数の目的関数に設定される重み係数、前記複数の目的関数を用いて探索した最小解、または、前記複数の要素目的関数に、複数の目的関数を用いて探索した最小解を入力した際の出力値を基にして、解交換を行う複数の目的関数を特定し、
前記解交換を行う複数の目的関数のうち、第1の目的関数の第1の最小解と、第2の目的関数の第2の最小解とを基にして、前記第1の目的関数の初期解を特定し、
特定した初期解を、前記第1の目的関数に入力し、前記第1の目的関数の出力が最小となる最小解を探索する
処理をコンピュータが実行することを特徴とする情報処理方法。
【0114】
(付記7)前記初期解を特定する処理は、前記第1の最小解および前記第2の最小解のうち、前記第1の目的関数に入力した際の値が最小となる最小解を、前記初期解として特定することを特徴とする付記6に記載の情報処理方法。
【0115】
(付記8)前記解交換を行う複数の目的関数を特定する処理は、前記複数の目的関数に設定される重み係数を基にして、前記解交換を行う複数の目的関数を特定する場合、前記重み係数の近い複数の目的関数を、前記解交換を行う複数の目的関数として特定することを特徴とする付記6に記載の情報処理方法。
【0116】
(付記9)前記解交換を行う複数の目的関数を特定する処理は、前記複数の目的関数を用いて探索した最小解を基にして、前記解交換を行う複数の目的関数を特定する場合、前記最小解の近い複数の目的関数を、前記解交換を行う複数の目的関数として特定することを特徴とする付記6に記載の情報処理方法。
【0117】
(付記10)前記解交換を行う複数の目的関数を特定する処理は、前記複数の要素目的関数に、複数の目的関数を用いて探索した最小解を入力した際の出力値を基にして、前記解交換を行う複数の目的関数を特定する場合、前記出力値が近い複数の目的関数を、前記解交換を行う複数の目的関数として特定することを特徴とする付記6に記載の情報処理方法。
【0118】
(付記11)重み係数が設定された複数の要素目的関数からなる複数の目的関数であって、前記重み係数の異なる前記複数の目的関数に初期解を入力し、前記目的関数の出力が最小値となる最小解をそれぞれ探索し、
前記複数の目的関数に設定される重み係数、前記複数の目的関数を用いて探索した最小解、または、前記複数の要素目的関数に、複数の目的関数を用いて探索した最小解を入力した際の出力値を基にして、解交換を行う複数の目的関数を特定し、
前記解交換を行う複数の目的関数のうち、第1の目的関数の第1の最小解と、第2の目的関数の第2の最小解とを基にして、前記第1の目的関数の初期解を特定し、
特定した初期解を、前記第1の目的関数に入力し、前記第1の目的関数の出力が最小となる最小解を探索する
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【0119】
(付記12)前記初期解を特定する処理は、前記第1の最小解および前記第2の最小解のうち、前記第1の目的関数に入力した際の値が最小となる最小解を、前記初期解として特定することを特徴とする付記11に記載の情報処理プログラム。
【0120】
(付記13)前記解交換を行う複数の目的関数を特定する処理は、前記複数の目的関数に設定される重み係数を基にして、前記解交換を行う複数の目的関数を特定する場合、前記重み係数の近い複数の目的関数を、前記解交換を行う複数の目的関数として特定することを特徴とする付記11に記載の情報処理プログラム。
【0121】
(付記14)前記解交換を行う複数の目的関数を特定する処理は、前記複数の目的関数を用いて探索した最小解を基にして、前記解交換を行う複数の目的関数を特定する場合、前記最小解の近い複数の目的関数を、前記解交換を行う複数の目的関数として特定することを特徴とする付記11に記載の情報処理プログラム。
【0122】
(付記15)前記解交換を行う複数の目的関数を特定する処理は、前記複数の要素目的関数に、複数の目的関数を用いて探索した最小解を入力した際の出力値を基にして、前記解交換を行う複数の目的関数を特定する場合、前記出力値が近い複数の目的関数を、前記解交換を行う複数の目的関数として特定することを特徴とする付記11に記載の情報処理プログラム。
【0123】
(付記16)複数の要素目的関数を含む目的関数に対し、前記複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成し、
前記第1の目的関数、前記第2の目的関数及び前記第3の目的関数のそれぞれの値を算出して解の探索を実行し、
前記第1の目的関数の前記重み係数の値と前記第2の目的関数の前記重み係数の値の第1差分と、前記第1の目的関数の前記重み係数の値と前記第2の目的関数の前記重み係数の値の第2差分とを比較し、
前記第1差分が前記第2差分より小さい場合、前記第1の目的関数に基づいて探索された前記解と前記第2の目的関数に基づいて探索された前記解を交換して前記探索を更に実行する
処理を実行する制御部を有することを特徴とする情報処理装置。
【0124】
(付記17)複数の要素目的関数を含む目的関数に対し、前記複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成し、
前記第1の目的関数、前記第2の目的関数及び前記第3の目的関数のそれぞれの値を算出して解の探索を実行し、
前記第1の目的関数に基づいて探索された第1の解と前記第2の目的関数に基づいて探索された第2の解との第1差分と、前記第1の解と前記第3の目的関数に基づいて探索された第3の解との第2差分とを比較し、
前記第1差分が前記第2差分より小さい場合、前記第1の解と前記第2の解を交換して前記探索を更に実行する
処理を実行する制御部を有することを特徴とする情報処理装置。
【0125】
(付記18)複数の要素目的関数を含む目的関数に対し、前記複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成し、
前記第1の目的関数、前記第2の目的関数及び前記第3の目的関数のそれぞれの値を算出して解の探索を実行し、
前記第1の目的関数に含まれる前記複数の要素目的関数の値と、前記第2の目的関数に含まれる前記複数の要素目的関数の値との第1差分と、前記第1の目的関数に含まれる前記複数の要素目的関数の値と、前記第3の目的関数に含まれる前記複数の要素目的関数の値との第2差分とを比較し、
前記第1差分が前記第2差分より小さい場合、前記第1の目的関数に基づいて探索された第1の解と前記第2の目的関数に基づいて探索された第2の解とを交換して前記探索を更に実行する
処理を実行する制御部を有することを特徴とする情報処理装置。
【0126】
(付記19)複数の要素目的関数を含む目的関数に対し、前記複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成し、
前記第1の目的関数、前記第2の目的関数及び前記第3の目的関数のそれぞれの値を算出して解の探索を実行し、
前記第1の目的関数の前記重み係数の値と前記第2の目的関数の前記重み係数の値の第1差分と、前記第1の目的関数の前記重み係数の値と前記第2の目的関数の前記重み係数の値の第2差分とを比較し、
前記第1差分が前記第2差分より小さい場合、前記第1の目的関数に基づいて探索された前記解と前記第2の目的関数に基づいて探索された前記解を交換して前記探索を更に実行する
処理をコンピュータが実行することを特徴とする情報処理方法。
【0127】
(付記20)複数の要素目的関数を含む目的関数に対し、前記複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成し、
前記第1の目的関数、前記第2の目的関数及び前記第3の目的関数のそれぞれの値を算出して解の探索を実行し、
前記第1の目的関数の前記重み係数の値と前記第2の目的関数の前記重み係数の値の第1差分と、前記第1の目的関数の前記重み係数の値と前記第2の目的関数の前記重み係数の値の第2差分とを比較し、
前記第1差分が前記第2差分より小さい場合、前記第1の目的関数に基づいて探索された前記解と前記第2の目的関数に基づいて探索された前記解を交換して前記探索を更に実行する
処理をコンピュータに実行することを特徴とする情報処理プログラム。