(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022188527
(43)【公開日】2022-12-21
(54)【発明の名称】情報処理装置、情報処理方法および情報処理プログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20221214BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2021096634
(22)【出願日】2021-06-09
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】橋間 正芳
(72)【発明者】
【氏名】天田 英之
(72)【発明者】
【氏名】松岡 英俊
(57)【要約】
【課題】多目的最適化問題のパレート解を求める計算量を削減すること。
【解決手段】情報処理装置は、複数の要素目的関数を含む目的関数に対し、複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成する。情報処理装置は、第1の目的関数及び第2の目的関数のそれぞれの値を算出して解探索を実行する。情報処理装置は、第3の目的関数に、第1の目的関数を用いた解探索により得られた解、及び第2の目的関数を用いた解探索により得られた解を入力して、第3の目的関数の値を算出する。情報処理装置は、第1の目的関数を用いた解探索により得られた解と、第2の目的関数を用いた解探索により得られた解と、第3の目的関数の値に基づいて得られた解と、を出力する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数の要素目的関数を含む目的関数に対し、前記複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成し、
前記第1の目的関数及び前記第2の目的関数のそれぞれの値を算出して解探索を実行し、
前記第3の目的関数に、前記第1の目的関数を用いた前記解探索により得られた解、及び前記第2の目的関数を用いた前記解探索により得られた解を入力して、前記第3の目的関数の値を算出し、
前記第1の目的関数を用いた前記解探索により得られた解と、前記第2の目的関数を用いた前記解探索により得られた解と、前記第3の目的関数の値に基づいて得られた解と、を出力する
処理を実行する制御部を有することを特徴とする情報処理装置。
【請求項2】
前記制御部は、重み係数の値を互いに相違させて前記第1の目的関数及び前記第2の目的関数を含む複数の目的関数を生成し、前記第1の目的関数の値の最小値を基にして、前記複数の目的関数のうち、前記最小値が最も近い目的関数を前記第2の目的関数として特定し、前記第1の目的関数及び前記第2の目的関数に設定された重み係数の値を基にして、前記第3の目的関数の重み係数の値を算出する処理を更に実行することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記制御部は、前記第1の目的関数及び前記第2の目的関数の各最小値の距離が閾値以上であるか否かを更に判定し、各最小値の距離が閾値以上である場合に、前記第1の目的関数及び前記第2の目的関数に設定された重み係数の値を基にして、前記第3の目的関数の重み係数の値を算出することを特徴とする請求項2に記載の情報処理装置。
【請求項4】
複数の要素目的関数を含む目的関数に対し、前記複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成し、
前記第1の目的関数及び前記第2の目的関数のそれぞれの値を算出して解探索を実行し、
前記第3の目的関数に、前記第1の目的関数を用いた前記解探索により得られた解、及び前記第2の目的関数を用いた前記解探索により得られた解を入力して、前記第3の目的関数の値を算出し、
前記第1の目的関数を用いた前記解探索により得られた解と、前記第2の目的関数を用いた前記解探索により得られた解と、前記第3の目的関数の値に基づいて得られた解と、を出力する
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項5】
複数の要素目的関数を含む目的関数に対し、前記複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成し、
前記第1の目的関数及び前記第2の目的関数のそれぞれの値を算出して解探索を実行し、
前記第3の目的関数に、前記第1の目的関数を用いた前記解探索により得られた解、及び前記第2の目的関数を用いた前記解探索により得られた解を入力して、前記第3の目的関数の値を算出し、
前記第1の目的関数を用いた前記解探索により得られた解と、前記第2の目的関数を用いた前記解探索により得られた解と、前記第3の目的関数の値に基づいて得られた解と、を出力する
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【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】
図14は、パレート解の一例を示す図である。
図14の横軸は要素目的関数Qの値に対応する軸であり、縦軸は要素目的関数Pの値に対応する軸である。たとえば、パレート解10aは、αおよびβの関係が「α/β=10」となる目的関数Fの最適解に対応する。パレート解10b~10gは、それぞれ、αおよびβの関係が「α/β=5」、「α/β=2」、「α/β=1」、「α/β=0.5」、「α/β=0.2」、「α/β=0.1」となる目的関数Fの最適解に対応する。各矢印は、目的関数Fの最適解検索方向となる。
【0007】
たとえば、目的関数Fは、重み係数α、βの違いによって、最適解xが変わるが、最適解の他に多数の局所解がある場合がある。多数の局所解がある場合には、局所解から脱出して最適解に到達することが課題である。
【0008】
ここで、局所解からの脱出と、他の目的関数に有効な初期解を作れる可能性から、複数の目的関数の最適化計算を並行して実行し、最適解を交換する従来技術がある。最小解を複数個保存しておくことで、多様な解を作ることができる。尚、目的関数の値が最大になる場合の解を最適解とするよう目的関数が設定される場合もある。例えば上述の式(1)において右辺の符号をマイナス(-)とした場合、最大解を探索する目的関数が得られる。
【0009】
図15は、従来技術の目的関数の最適化計算の処理手順を示すフローチャートである。
図15では、目的関数F
1の最適化計算の処理手順を示すが、同様の手順によって、他の目的関数の最適化計算も並列して実行される。ここでは、他の目的関数を、目的関数F
2、F
3とする。
【0010】
目的関数F1の重み係数をα1、β1とする。目的関数F2の重み係数をα2、β2とする。目的関数F3の重み係数をα3、β3とする。便宜的に、目的関数F1の最適化計算を、第1最適化計算とする。目的関数F2の最適化計算を、第2最適化計算とする。目的関数F3の最適化計算を、第3最適化計算とする。
【0011】
図15に示すように、従来技術では、第1最適化計算において、初期解x
i1を入力し(ステップS11)、目的関数F
1の最適解の探索計算を実行する(ステップS12)。従来技術は、第1最適化計算の探索結果となる最小値f
1、最小解x
o1を出力し、第2最適化計算、第2最適化計算で利用する(ステップS13)。
【0012】
従来技術では、第2最適化計算および第3最適化計算によって得られた他の最小解(xo2、xo3)を入力し、目的関数F1を計算する(ステップS14)。従来技術では、処理を継続する場合には(ステップS15,Yes)、ステップS16に移行する。
【0013】
従来技術では、最小値f1を含めて一番小さい値をfm1とし、その解を初期解xi1に入力し(ステップS16)、ステップS11に移行する。たとえば、ステップS16では、F1に第2最適化計算の最小解xo2を入力した値、F1に第3最適化計算の最小解xo3を入力した値、最小値f1のうち、一番小さい値をfm1とする。
【0014】
一方、従来技術では、処理を継続しない場合には(ステップS15,No)、最小値f1m、最小解xi1を最小値の小さいものからN個を記憶部に保存する(ステップS17)。
【0015】
図示を省略するが、第2最適化計算では、目的関数F
2を用いて、
図15に対応する最適化計算を実行する。第3最適化計算では、目的関数F
3を用いて、
図15に対応する最適化計算を実行する。上記のように、従来技術では、複数の目的関数の最適化計算を並行して実行し、最適解を交換することで、多様な最適解(パレート解)を得る。
【先行技術文献】
【特許文献】
【0016】
【特許文献1】特開2010-152851号公報
【特許文献2】特開2000-268018号公報
【特許文献3】米国特許出願公開第2020/0074348号明細書
【発明の概要】
【発明が解決しようとする課題】
【0017】
しかしながら、上述した従来技術では、多目的最適化問題のパレート解を求める計算量が多いという問題がある。
【0018】
図16は、従来技術の問題を説明するための図である。
図16の横軸は目的関数Qの値に対応する軸であり、縦軸は目的関数Pの値に対応する軸である。従来技術では、パレート解は各目的関数の最適解探索方向に集まる傾向がある。
【0019】
たとえば、第1最適化計算により探索される各最小解に相当するパレート解は、パレート解11a,11b、11cとなる。第2最適化計算により探索される各最小解に相当するパレート解は、パレート解12a,12b、12cとなる。第3最適化計算により探索される各最小解に相当するパレート解は、パレート解13a,13b、13cとなる。
【0020】
図16に示すように、従来技術では、重み係数α、βが同一の目的関数を利用すると、パレート解が集中してしまう。より多くの種類のパレート解を計算するべく、パレート解を分散させるためには、重み係数α、βを変えた複数の目的関数を用いる対応が考えられるが、それぞれについて最適化計算を実行すると、計算量が増大してしまう。
【0021】
1つの側面では、本発明は、多目的最適化問題のパレート解を求める計算量を削減することができる情報処理装置、情報処理方法および情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0022】
第1の案では、情報処理装置は、複数の要素目的関数を含む目的関数に対し、複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成する。情報処理装置は、第1の目的関数及び第2の目的関数のそれぞれの値を算出して解探索を実行する。情報処理装置は、第3の目的関数に、第1の目的関数を用いた解探索により得られた解、及び第2の目的関数を用いた解探索により得られた解を入力して、第3の目的関数の値を算出する。情報処理装置は、第1の目的関数を用いた解探索により得られた解と、第2の目的関数を用いた解探索により得られた解と、第3の目的関数の値に基づいて得られた解と、を出力する。
【発明の効果】
【0023】
多目的最適化問題のパレート解を求める計算量を削減できる。
【図面の簡単な説明】
【0024】
【
図1】
図1は、本実施例1に係る情報処理装置の処理を説明するための図である。
【
図2】
図2は、本実施例1に係る情報処理装置の構成を示す機能ブロック図である。
【
図3】
図3は、重み係数テーブルのデータ構造の一例を示す図である。
【
図4】
図4は、共有バッファのデータ構造の一例を示す図である。
【
図5】
図5は、算出結果テーブルのデータ構造の一例を示す図である。
【
図6】
図6は、本実施例1に係る計算部の処理手順を示すフローチャートである。
【
図7】
図7は、本実施例1に係る最適化計算処理の処理手順を示すフローチャートである。
【
図8】
図8は、実施例1に係る評価用目的関数実行処理の処理手順を示すフローチャートである。
【
図9】
図9は、本実施例2に係る情報処理装置の処理を説明するための図である。
【
図10】
図10は、本実施例2に係る情報処理装置の構成を示す機能ブロック図である。
【
図11】
図11は、本実施例2に係る最適化計算処理の処理手順を示すフローチャートである。
【
図12】
図12は、本実施例2に係る評価用目的関数実行処理の処理手順を示すフローチャートである。
【
図13】
図13は、実施例の情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【
図15】
図15は、従来技術の目的関数の最適化計算の処理手順を示すフローチャートである。
【
図16】
図16は、従来技術の問題を説明するための図である。
【発明を実施するための形態】
【0025】
以下に、本願の開示する情報処理装置、情報処理方法および情報処理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例0026】
本実施例1に係る情報処理装置は、最適解探索用の目的関数と、評価用の目的関数とを用いて、複数の最小解と最小値を算出することで、計算量を削減しつつ、多様なパレート解(最小解に対応する出力値)を算出可能とする。以下の説明では、適宜、最適解探索用の目的関数を「探索用目的関数」と表記し、評価用の目的関数を「評価用目的関数」と表記する。各目的関数を区別しない場合には、単に、目的関数と表記する。
【0027】
情報処理装置が、探索用目的関数を用いる場合、探索用目的関数に初期解を入力して探索用目的関数の出力値を算出した後、初期解を徐々に変更しつつ、探索用目的関数の出力値を繰り返し算出し、探索用目的関数の出力値が最小となる最小解を算出する。情報処理装置は、かかる処理によって、最小解と、最小解に対応する出力値との関係を得る。
【0028】
また、情報処理装置が、評価用目的関数を用いる場合、上記の探索用目的関数で得られた複数の最小解を、評価用目的関数に入力することで、各最小解に対する出力値をそれぞれ算出する。なお、評価用目的関数に入力する最小解は、探索用目的関数による探索中の最小解とし、探索終了時の最小解とは異なるものとする。
【0029】
情報処理装置は、複数の出力値のうち、最小となる出力値と、かかる最小の出力値に対応する最小解を特定する。最小となる出力値に対応する最小解が、パレート解に相当する。すなわち、評価用目的関数は、探索用目的関数で得られた各最小解を入力して、最小解に対応する出力値を算出するために利用し、最小解の探索を行わない。
【0030】
図1は、本実施例1に係る情報処理装置の処理を説明するための図である。本実施例1では一例として、探索用目的関数F
1、F
2、F
3と、評価用目的関数F
4、F
5、F
6、F
7とを用いる。探索用目的関数F
1、F
2、F
3を、式(2)、式(3)、式(4)に示す。評価用目的関数F
4、F
5、F
6、F
7を、式(5)、式(6)、式(7)、式(8)に示す。
【0031】
F1(x)=α1P(x)+β1Q(x)・・・(2)
F2(x)=α2P(x)+β2Q(x)・・・(3)
F3(x)=α3P(x)+β3Q(x)・・・(4)
F4(x)=α4P(x)+β4Q(x)・・・(5)
F5(x)=α5P(x)+β5Q(x)・・・(6)
F6(x)=α6P(x)+β6Q(x)・・・(7)
F7(x)=α7P(x)+β7Q(x)・・・(8)
【0032】
式(2)~(8)に設定される重み係数α1、α2、α3、α4、α5、α6、α7にはそれぞれ異なる値が設定される。重み係数β1、β2、β3、β4、β5、β6、β7にはそれぞれ異なる値が設定される。
【0033】
情報処理装置は、初期解xi1を入力して探索用目的関数F1の出力値を算出した後、初期解xi1を徐々に変更しつつ、探索用目的関数F1の出力値を繰り返し算出し、探索用目的関数F1の出力値が最小となる最小解xo1を算出する。
【0034】
情報処理装置は、初期解xi2を入力して探索用目的関数F2の出力値を算出した後、初期解xi2を徐々に変更しつつ、探索用目的関数F2の出力値を繰り返し算出し、探索用目的関数F2の出力値が最小となる最小解xo2を算出する。
【0035】
情報処理装置は、初期解xi3を入力して探索用目的関数F3の出力値を算出した後、初期解xi3を徐々に変更しつつ、探索用目的関数F3の出力値を繰り返し算出し、探索用目的関数F3の出力値が最小となる最小解xo3を算出する。
【0036】
以下の説明では、探索用目的関数Fsに初期値xisを入力して、探索用目的関数Fsの出力値を算出した後、初期解xisを徐々に変更しつつ、探索用目的関数Fsの出力値を繰り返し算出し、探索用目的関数Fsの出力値が最小となる最小解xosを計算する処理を、「最適化計算」と表記する。また、探索用目的関数F1に関する最適化計算を「第1最適化計算」と表記し、探索用目的関数F2に関する最適化計算を「第2最適化計算」と表記し、探索用目的関数F3に関する最適化計算を「第3最適化計算」と表記する。
【0037】
情報処理装置は、第1最適化計算、第2最適化計算、第3最適化計算を並列して実行する。情報処理装置は、第1最適化計算、第2最適化計算、第3最適化計算を並列して実行する場合に、最小解を交換し、交換した最小解を初期解に再設定して、最適化計算を行う。
【0038】
たとえば、情報処理装置は、解交換を行って、第1最適化計算を実行し、複数の最小解を計算し、複数の最小解に対応するパレート解21b,21cを得る。情報処理装置は、解交換を行って、第2最適化計算を実行し、複数の最小解を計算し、複数の最小解に対応するパレート解22b,22cを得る。情報処理装置は、解交換を行って、第3最適化計算を実行し、複数の最小解を計算し、複数の最小解に対応するパレート解23b,23cを得る。
【0039】
続いて、情報処理装置は、第1~3最適化計算を実行する途中で得られる各最小解を、評価用目的関数F
4に入力し、各出力値を計算し、最小の出力値に対応する最小解を、パレート解として特定する。たとえば、第1~3最適化計算を実行する度に、上記処理を行うことで、複数のパレート解が得られる。
図1では、評価用目的関数F
4を基にして、パレート解24a,24bが計算されている。
【0040】
情報処理装置は、第1~3最適化計算を実行する途中で得られる最小解を用いて、評価用目的関数F5、F6、F7についても同様に計算を行うことで、パレート解25a,25b、パレート解26a,26b、パレート解27a,27bを得る。
【0041】
上記のように、本実施例1に係る情報処理装置は、探索用目的関数を用いて最小解を探索する。また、情報処理装置は、多様な重み係数を設定した評価用目的関数を用いて探索用目的関数による探索中の最小解を評価することで、計算量を削減しつつ、多様なパレート解を算出することができる。
【0042】
次に、本実施例1に係る情報処理装置の構成の一例について説明する。
図2は、本実施例1に係る情報処理装置の構成を示す機能ブロック図である。
図2に示すように、情報処理装置100は、通信部110と、入力部120と、表示部130と、記憶部140と、制御部150とを有する。
【0043】
通信部110は、有線又は無線で外部装置等に接続され、外部装置等との間で情報の送受信を行う。たとえば、通信部110は、NIC(Network Interface Card)等によって実現される。通信部110は、図示しないネットワークに接続されていてもよい。
【0044】
入力部120は、各種の情報を、情報処理装置100に入力する入力装置である。入力部120は、キーボードやマウス、タッチパネル等に対応する。
【0045】
表示部130は、制御部150から出力される情報を表示する表示装置である。表示部130は、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ、タッチパネル等に対応する。たとえば、パレート解の算出結果等が、表示部130に表示される。
【0046】
記憶部140は、重み係数テーブル141、共有バッファ142、算出結果テーブル143を有する。記憶部140は、たとえば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。
【0047】
重み係数テーブル141は、探索用目的関数、評価用目的関数に設定される重み係数に関する情報を保持する。
図3は、重み係数テーブルのデータ構造の一例を示す図である。
図3に示すように、重み係数テーブル141では、識別情報と、重み係数とを対応付けられる。識別情報は、目的関数を識別する情報である。重み係数は、対応する目的関数に設定される重み係数を示す。たとえば、識別情報F-1は、式(2)に定義される探索用目的関数F
1を示す。識別情報F-2は、式(3)に定義される探索用目的関数F
2を示す。識別情報F-3は、式(4)に定義される探索用目的関数F
3を示す。
【0048】
識別情報F-4は、式(5)に定義される評価用目的関数F4を示す。識別情報F-5は、式(6)に定義される評価用目的関数F5を示す。識別情報F-6は、式(7)に定義される評価用目的関数F6を示す。識別情報F-7は、式(8)に定義される評価用目的関数F7を示す。
【0049】
共有バッファ142は、探索用目的関数に対する最適化計算において、出力される最小解を保持するバッファである。
図4は、共有バッファのデータ構造の一例を示す図である。
図4に示すように、共有バッファ142は、識別情報と、最小解とを対応付けられる。識別情報は、探索用目的関数を識別する情報である。最小解は、各探索用目的関数の最小解の探索時に検出される解である。最小解は、局所解または最適解に相当する。
【0050】
算出結果テーブル143は、最小解と、最小解を各目的関数に入力した場合の出力値(最小値)との組を保持するテーブルである。
図5は、算出結果テーブルのデータ構造の一例を示す図である。
図5に示すように、この算出結果テーブル143は、識別情報と、最小解と、最小値とを対応付ける。識別情報は、目的関数を識別する情報である。最小解は、各探索用目的関数の最小解の探索時(最適化計算の実行時)に検出される解である。
【0051】
図示を省略するが、記憶部140は、目的関数F1~F7の元目的関数P(x)、Q(x)に設定される各パラメータの情報を有していてもよい。
【0052】
図2の説明に戻る。制御部150は、計算部151と、出力部152とを有する。制御部150は、たとえば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)により実現される。また、制御部150は、例えばASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実行されてもよい。
【0053】
計算部151は、探索用目的関数に対する最適化計算を並列に実行する。計算部151は、最適化計算を並列に実行する過程において、探索用目的関数間で、最小化の交換を行い、最小解と最小値との複数の組を算出する。
【0054】
また、計算部151は、探索用目的関数の最適化計算で得られた複数の最小解を、評価用目的関数に入力することで、複数の出力値を算出し、複数の出力値のうち、最小となる出力値と、かかる最小の出力値に対応する最小解(パレート解)を特定する。計算部151は、パレート解と、最小値との関係を、算出結果テーブル143に登録する。
【0055】
図6は、本実施例1に係る計算部の処理手順を示すフローチャートである。
図6に示すように、情報処理装置100の計算部151は、初期設定を行う(ステップS101)。初期設定には、並列で実行する最適化計算の数の設定、各目的関数の設定、初期解の設定、最適解の探索計算の繰り返し数L等が含まれる。
【0056】
計算部151は、最適化計算1~Dを並列で起動する(ステップS102)。本実施例1では、D=3とするが、これに限定されない。計算部151は、共有バッファ142を確保する(ステップS103)。計算部151は、各最適化計算について、最適化計算処理をそれぞれ並列的に実行する(ステップS104)。
【0057】
図6のステップ104の最適化計算処理では、探索用目的関数F
1~F
3に対する最適化計算を並列に実行されるが、以下の
図7では、一つの探索用目的関数に対する最適化計算処理について説明する。
【0058】
図7は、本実施例1に係る最適化計算処理の処理手順を示すフローチャートである。
図7に示すように、情報処理装置100の計算部151は、繰り返し数cを初期値に設定する(ステップS201)。
【0059】
計算部151は、初期解xisを設定する(ステップS202)。計算部151は、探索用目的関数Fsの最小解の探索計算を実行する(ステップS203)。計算部151は、最小解を検出しない場合には(ステップS204,No)、再度、ステップS203に移行する。
【0060】
計算部151は、最小解を検出した場合には(ステップS204,Yes)、最小値fs、最小解xosを、最小値の小さいものからN個保存する(ステップS205)。計算部151は、繰り返し数cに1を加算して、繰り返し数cを更新する(ステップS206)。
【0061】
計算部151は、繰り返し数cがL以上である場合には(ステップS207,Yes)、探索用目的関数Fsに関する最適化計算を終了する。一方、計算部151は、繰り返し数cがL以上でない場合には(ステップS207,No)、ステップS208に移行する。
【0062】
計算部151は、最小値となる最小解xosを、共有バッファ142に登録する(ステップS208)。計算部151は、評価用目的関数実行処理を実行する(ステップS209)。計算部151は、共有バッファ142から、解交換の対象となる目的関数の最小解xonを取得する(ステップS210)。
【0063】
計算部151は、各最小解xonを目的関数Fsに入力した場合の各値を計算し、一番小さい値の解を初期解xisに代入し(ステップS211)、ステップS202に移行する。
【0064】
計算部151は、
図7に示した最適化計算処理を、各目的関数F
1~F
Dに対して並列に実行する。計算部151は、各目的関数F
1~F
Dに対する最適解計算結果となる最適解、出力値の関係を、算出結果テーブル143に登録する。
【0065】
続いて、
図7のステップS209に示した評価用目的関数実行処理の一例について説明する。
図8は、評価用目的関数実行処理の処理手順を示すフローチャートである。
図8に示すように、情報処理装置100の計算部151は、複数の評価用目的関数を読み出す(ステップS301)。計算部151は、共有バッファ142から、探索用目的関数が探索した最小解を取得する(ステップS302)。
【0066】
計算部151は、各評価用目的関数について、以降の処理を実行する(ステップS303)。計算部151は、複数の最小解を評価用目的関数に入力して、出力値をそれぞれ計算する(ステップS304)。計算部151は、最小の出力値に対応する最小解を特定する(ステップS305)。
【0067】
計算部151は、各評価用目的関数の計算結果について、特定した最小解と出力値(最小値)との組を最小値の小さいものからN個保存する(ステップS306)。
【0068】
ところで、
図8に示した評価用目的関数実行処理は、
図7に示したように、ステップS208の後に実行する場合について説明したが、これに限定されるものではない。たとえば、計算部151は、ステップS207の後に、評価用目的関数実行処理を実行してもよい。ステップS207の後に実行することで、探索用目的関数の最適化計算が終了した後に、一度だけ、評価用目的関数実行処理が実行されるため、計算量を抑止することができる。
【0069】
計算部151は、
図7に示した最適化計算処理を、各探索用目的関数F
1~F
Dに対して並列に実行する。計算部151は、各探索用目的関数F
1~F
Dに対する最適解計算結果となる最小解と出力値との組、評価用目的関数から得られた最小値と出力値との組を、算出結果テーブル143に登録する。
【0070】
出力部152は、算出結果テーブル143の情報を、表示部130に出力して表示させる。
【0071】
次に、本実施例1に係る情報処理装置100の効果について説明する。情報処理装置100は、探索用目的関数を用いて最適化計算を実行し、最小解と最小値との関係を探索する。また、情報処理装置100は、評価用目的関数に、探索用目的関数の探索中の複数の最小値を入力して、複数の出力値を算出し、最小の出力値に対応する最小解を特定することで、パレート解を補う。かかる処理により、計算量を削減しつつ、多様なパレート解(最小解に対応する出力値)を算出可能とする。
実施例1に係る情報処理装置100は、予め重み係数α、βを設定した評価用目的関数を準備しておき、かかる評価用目的関数を用いてパレート解を補っていたがこれに限定されるものではない。本実施例2に係る情報処理装置では、最小値が一番近い探索用目的関数の組に設定された重み係数α、βを用いて、評価用目的関数の重み係数α、βを動的に設定する。
上記のように、本実施例2に係る情報処理装置は、最小値(出力値)の近い探索用目的関数に設定された重み係数α、βを用いて、評価用目的関数の重み係数α、βを動的に設定することで、多様なパレート解を算出することができる。
記憶部240は、重み係数テーブル241、共有バッファ242、算出結果テーブル243を有する。記憶部240は、たとえば、RAM、フラッシュメモリ等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。
共有バッファ242は、探索用目的関数に対する最適化計算において、出力される最小解を保持するバッファである。その他の共有バッファ242に関する説明は、共有バッファ142に関する説明と同様である。
算出結果テーブル243は、最小解と、最小解を各目的関数に入力した場合の出力値(最小値)との組を保持するテーブルである。その他の算出結果テーブル243に関する説明は、算出結果テーブル143に関する説明と同様である。
制御部250は、計算部251と、出力部252とを有する。制御部250は、たとえば、CPUやMPUにより実現される。また、制御部250は、例えばASICやFPGA等の集積回路により実行されてもよい。
計算部251は、上記処理によって重み係数を特定した複数の評価用関数に、探索用目的関数の探索結果となる最小解を入力することで、出力値(最小値)を算出する。計算部251は、各目的関数に入力した最小解と、最小値との関係を、算出結果テーブル243に登録する。
計算部251は、複数の最小解を評価用目的関数に入力して、出力値をそれぞれ計算する(ステップS505)。計算部251は、最小の出力値に対応する最小解を特定する(ステップS506)。計算部251は、評価用目的関数の計算結果について、最小値および最小解の組を最小値の小さいものからN個保存する(ステップS507)。
次に、本実施例2に係る情報処理装置200の効果について説明する。情報処理装置200は、各最小値が近い探索用目的関数であって、P、Q領域の各値の位置が閾値以上である場合に、かかる探索用目的関数の重み係数α、βを用いて、評価用目的関数の重み係数α、βを動的に設定する。これによって、探索用目的関数だけでは補えないパレート解を算出可能な評価用目的関数を設定することができる。
ハードディスク装置307は、計算プログラム307a、出力プログラム307bを有する。また、CPU301は、各プログラム307a,307bを読み出してRAM306に展開する。
なお、各プログラム307a,307bについては、必ずしも最初からハードディスク装置307に記憶させておかなくても良い。例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD-ROM、DVD、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ300が各プログラム307a,307bを読み出して実行するようにしてもよい。
(付記1)複数の要素目的関数を含む目的関数に対し、前記複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成し、
前記第1の目的関数及び前記第2の目的関数のそれぞれの値を算出して解探索を実行し、
前記第3の目的関数に、前記第1の目的関数を用いた前記解探索により得られた解、及び前記第2の目的関数を用いた前記解探索により得られた解を入力して、前記第3の目的関数の値を算出し、
前記第1の目的関数を用いた前記解探索により得られた解と、前記第2の目的関数を用いた前記解探索により得られた解と、前記第3の目的関数の値に基づいて得られた解と、を出力する
処理を実行する制御部を有することを特徴とする情報処理装置。
(付記2)前記制御部は、重み係数の値を互いに相違させて前記第1の目的関数及び前記第2の目的関数を含む複数の目的関数を生成し、前記第1の目的関数の値の最小値を基にして、前記複数の目的関数のうち、前記最小値が最も近い目的関数を前記第2の目的関数として特定し、前記第1の目的関数及び前記第2の目的関数に設定された重み係数の値を基にして、前記第3の目的関数の重み係数の値を算出する処理を更に実行することを特徴とする付記1に記載の情報処理装置。
(付記3)前記制御部は、前記第1の目的関数及び前記第2の目的関数の各最小値の距離が閾値以上であるか否かを更に判定し、各最小値の距離が閾値以上である場合に、前記第1の目的関数及び前記第2の目的関数に設定された重み係数の値を基にして、前記第3の目的関数の重み係数の値を算出することを特徴とする付記2に記載の情報処理装置。
(付記4)複数の要素目的関数を含む目的関数に対し、前記複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成し、
前記第1の目的関数及び前記第2の目的関数のそれぞれの値を算出して解探索を実行し、
前記第3の目的関数に、前記第1の目的関数を用いた前記解探索により得られた解、及び前記第2の目的関数を用いた前記解探索により得られた解を入力して、前記第3の目的関数の値を算出し、
前記第1の目的関数を用いた前記解探索により得られた解と、前記第2の目的関数を用いた前記解探索により得られた解と、前記第3の目的関数の値に基づいて得られた解と、を出力する
処理をコンピュータが実行することを特徴とする情報処理方法。
(付記5)重み係数の値を互いに相違させて前記第1の目的関数及び前記第2の目的関数を含む複数の目的関数を生成し、前記第1の目的関数の値の最小値を基にして、前記複数の目的関数のうち、前記最小値が最も近い目的関数を前記第2の目的関数として特定し、前記第1の目的関数及び前記第2の目的関数に設定された重み係数の値を基にして、前記第3の目的関数の重み係数の値を算出する処理を更に実行することを特徴とする付記4に記載の情報処理方法。
(付記6)前記第1の目的関数及び前記第2の目的関数の各最小値の距離が閾値以上であるか否かを更に判定し、各最小値の距離が閾値以上である場合に、前記第1の目的関数及び前記第2の目的関数に設定された重み係数の値を基にして、前記第3の目的関数の重み係数の値を算出することを特徴とする付記5に記載の情報処理方法。
(付記7)複数の要素目的関数を含む目的関数に対し、前記複数の要素目的関数の各々に乗じられる重み係数の値を互いに相違させて第1の目的関数、第2の目的関数及び第3の目的関数を生成し、
前記第1の目的関数及び前記第2の目的関数のそれぞれの値を算出して解探索を実行し、
前記第3の目的関数に、前記第1の目的関数を用いた前記解探索により得られた解、及び前記第2の目的関数を用いた前記解探索により得られた解を入力して、前記第3の目的関数の値を算出し、
前記第1の目的関数を用いた前記解探索により得られた解と、前記第2の目的関数を用いた前記解探索により得られた解と、前記第3の目的関数の値に基づいて得られた解と、を出力する
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
(付記8)重み係数の値を互いに相違させて前記第1の目的関数及び前記第2の目的関数を含む複数の目的関数を生成し、前記第1の目的関数の値の最小値を基にして、前記複数の目的関数のうち、前記最小値が最も近い目的関数を前記第2の目的関数として特定し、前記第1の目的関数及び前記第2の目的関数に設定された重み係数の値を基にして、前記第3の目的関数の重み係数の値を算出する処理を更に実行することを特徴とする付記7に記載の情報処理プログラム。
(付記9)前記第1の目的関数及び前記第2の目的関数の各最小値の距離が閾値以上であるか否かを更に判定し、各最小値の距離が閾値以上である場合に、前記第1の目的関数及び前記第2の目的関数に設定された重み係数の値を基にして、前記第3の目的関数の重み係数の値を算出することを特徴とする付記8に記載の情報処理プログラム。