(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023184080
(43)【公開日】2023-12-28
(54)【発明の名称】演算プログラム、演算方法、および情報処理装置
(51)【国際特許分類】
G06N 99/00 20190101AFI20231221BHJP
G06N 3/126 20230101ALI20231221BHJP
【FI】
G06N99/00 180
G06N3/12 160
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022098002
(22)【出願日】2022-06-17
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100087480
【弁理士】
【氏名又は名称】片山 修平
(72)【発明者】
【氏名】丸尾 昭人
(72)【発明者】
【氏名】實宝 秀幸
(72)【発明者】
【氏名】添田 武志
(57)【要約】 (修正有)
【課題】所定の条件を満足する解が得られるまでの時間を短縮化する演算プログラム、演算方法及び情報処理装置を提供する。
【解決手段】各々が複数の説明変数で特定される複数の個体を進化させることで、目的変数が所定の条件を満足するように前記複数の説明変数の組合せを探索する処理を行なう情報処理装置の演算プログラムであって、コンピュータに、複数の説明変数の前記組み合わせに制約を設け、制約とは独立して複数の個体の各々の説明変数を変動させる中間変数を制御する処理と、中間変数によって変動させた説明変数を用いて得られた目的関数を評価する処理と、を実行させる。
【選択図】
図3
【特許請求の範囲】
【請求項1】
各々が複数の説明変数で特定される複数の個体を進化させることで、目的変数が所定の条件を満足するように前記複数の説明変数の組合せを探索する処理を行なう演算プログラムであって、
コンピュータに、
前記複数の説明変数の前記組み合わせに制約を設け、前記制約とは独立して前記複数の個体の各々の説明変数を変動させる中間変数を制御する処理と、
前記中間変数によって変動させた前記説明変数を用いて得られた目的関数を評価する処理と、を実行させることを特徴とする演算プログラム。
【請求項2】
前記コンピュータに、
前記中間変数によって変動させた前記説明変数の値に応じて、前記複数の説明変数の前記組み合わせを選択する処理を実行させることを特徴とする請求項1に記載の演算プログラム。
【請求項3】
前記コンピュータに、
前記制約として前記複数の説明変数の個数に上限数を設け、前記中間変数によって変動させた前記説明変数のうち、前記上限数分、最も値の大きいものを組み合わせとして選択する処理を実行させることを特徴とする請求項1または請求項2に記載の演算プログラム。
【請求項4】
前記コンピュータに、
前記制約として、前記複数の説明変数の合計値を所定値に設定し、前記中間変数によって変動させた前記説明変数の値を、比率に応じて、合計値が前記所定値になるように変換する処理を実行させることを特徴とする請求項1または請求項2に記載の演算プログラム。
【請求項5】
前記コンピュータに、
目的関数の空間におけるハイパーボリュームに応じて、前記進化の最大世代数に上限を設ける処理を実行させ、
前記ハイパーボリュームは、前記目的関数の空間において、基準点と、世代ごとの解集合とから得られる体積または面積であることを特徴とする請求項1または請求項2に記載の演算プログラム。
【請求項6】
前記コンピュータに、
前記進化の最小世代数を設け、前記最大世代数は前記最小世代数よりも大きくする処理を実行させることを特徴とする請求項5に記載の演算プログラム。
【請求項7】
各々が複数の説明変数で特定される複数の個体を進化させることで、目的変数が所定の条件を満足するように前記複数の説明変数の組合せを探索する処理を行なう演算方法であって、
前記複数の説明変数の前記組み合わせに制約を設け、前記制約とは独立して前記複数の個体の各々の説明変数を変動させる中間変数を制御し、
前記中間変数によって変動させた前記説明変数を用いて得られた目的関数を評価する、処理をコンピュータが実行することを特徴とする演算方法。
【請求項8】
各々が複数の説明変数で特定される複数の個体を進化させることで、目的変数が所定の条件を満足するように前記複数の説明変数の組合せを探索する処理を行なう情報処理装置であって、
前記複数の説明変数の前記組み合わせに制約を設け、前記制約とは独立して前記複数の個体の各々の説明変数を変動させる中間変数を制御する中間変数制御部と、
前記中間変数制御部が前記中間変数によって変動させた前記説明変数を用いて得られた目的関数を評価する評価部と、を備えることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本件は、演算プログラム、演算方法、および情報処理装置に関する。
【背景技術】
【0002】
説明変数を組み合わせることで得られる目的関数を最適化するために、進化的最適化処理を行なう技術が開示されている(例えば、特許文献1~4参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2021-005278号公報
【特許文献2】特開2020-030683号公報
【特許文献3】米国特許公開第2010-0131439号公報
【特許文献4】米国特許公開第2007-0208691号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
進化的最適化処理において離散的な制約を設けると、各個体の動きが制限されやすく、得られる解が目的関数の空間において局所解に陥りやすくなる。この場合、初期個体の作成から再度繰り返されるため、所定の条件を満足する解を得るまでの時間が長大化してしまう。
【0005】
1つの側面では、本件は、所定の条件を満足する解が得られるまでの時間を短縮化することができる演算プログラム、演算方法、および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
1つの態様では、演算プログラムは、各々が複数の説明変数で特定される複数の個体を進化させることで、目的変数が所定の条件を満足するように前記複数の説明変数の組合せを探索する処理を行なう演算プログラムであって、コンピュータに、前記複数の説明変数の前記組み合わせに制約を設け、前記制約とは独立して前記複数の個体の各々の説明変数を変動させる中間変数を制御する処理と、前記中間変数によって変動させた前記説明変数を用いて得られた前記目的関数を評価する処理と、を実行させる。
【発明の効果】
【0007】
所定の条件を満足する解が得られるまでの時間を短縮化することができる。
【図面の簡単な説明】
【0008】
【
図1】離散制約を用いて、多目的遺伝的アルゴリズムによって個体を進化させる場合のフローチャートである。
【
図2】(a)は情報処理装置の全体構成を例示するブロック図であり、(b)は情報処理装置のハードウェア構成を例示するブロック図である。
【
図3】情報処理装置の動作の一例を表すフローチャートである。
【
図4】遺伝子x
iを直接比率として扱い、特性値モデルを用いて個体評価を行なう場合を例示する図である。
【
図5】遺伝子S
iを中間変数として制御して制約条件を導入する場合を例示する図である。
【
図6】ハイパーボリュームについて説明するための図である。
【
図8】(a)~(e)は機械学習を例示する図である。
【
図9】(a)および(b)は得られたパレート解を例示する図である。
【
図10】
図9(a)の「×」(条件3の1回目)の結果を詳細に表した図である。
【
図11】
図9(a)の「+」(条件3の2回目)の結果を詳細に表した図である。
【
図12】
図9(a)の「▲」(条件2)の結果を詳細に表した図である。
【
図13】
図9(a)の「●」(条件1)の結果を詳細に表した図である。
【
図14】
図9(a)の「●」(条件1)の結果について、ハイパーボリュームの変化を詳細に表した図である。
【発明を実施するための形態】
【0009】
実施例の説明に先立って、進化的最適化の概要について説明する。
【0010】
進化的最適化は、生物の進化の原理を応用して、目的関数が所定の条件を満足するように説明変数の組み合わせを探索する手法である。進化的最適化には、多目的遺伝的アルゴリズム(多目的GA)などが含まれる。進化的最適化では、制約条件を導入し、得られた個体の目的関数を評価する際にペナルティ法を用いることがある。
【0011】
一例として、非常に多い成分候補から最適な成分の組み合わせを探索するに際して、複数の目的関数(強度、絶縁性、耐酸性など)を最適化する場合に着目し、ペナルティ法を用いた制約について説明する。
【0012】
各成分の比率を最適化するためには、例えば、各成分の合計を100%にすることが求められる。したがって、各成分の合計を100%にするという制約を設定することが求められる。
【0013】
次に、成分数が多すぎると、実験が不可となるおそれがある。したがって、成分数に上限を設定することが求められる。
【0014】
このような場合においては、目的関数F1および目的関数F2は、以下のように表すことができる。f1(x)は、特性値モデルf1によって得られる特性値である。f2(x)は、特性値モデルf2によって得られる特性値を表している。xは、各成分の混合比率である。目的関数F1および目的関数F2は、小さいほど良好であるものとする。この場合には、目的関数F1および目的関数F2の最適化とは、目的関数F1および目的関数F2を最小化することを意味する。制約項P100%および制約項PCLCは、制約を違反した場合に正の値を持つように設定されている。αおよびβは、制約項の重みである。
F1=f1(x)+αP100%+βPCLC → min
F2=f2(x)+αP100%+βPCLC → min
【0015】
制約項P
100%および制約項P
CLCは、以下のように表すことができる。
【数1】
【数2】
W
a1,W
c1,W
a2,W
c2は、制約の重みを表す。δは、許容量を表す。N
CLCは、成分数の上限値を表す。
【0016】
上記のような制約項P100%および制約項PCLCは、制約に幅を持たせるものではない。例えば、合計が100%、95%、90%などは、所定の一点に制約を設けるものである。上限数が100種類、95種類、90種類なども、所定の一点に制約を設けるものである。これらのように、上記のような制約は、100、95、90、などの離散的なものになる。このような制約を離散制約と称する。進化的最適化に離散的な制約を設けると、進化的最適化の途中における個体の動きが制限されてしまい、局所解に陥るおそれがある。
【0017】
図1は、離散制約を用いて、多目的遺伝的アルゴリズムによって個体を進化させる場合のフローチャートである。
図1で例示するように、まず、複数の初期個体を生成して個体群を生成する(ステップS101)。次に、親個体を個体群から選択する(ステップS102)。次に、交叉により、子個体を生成する(ステップS103)。次に、子個体に突然変異を生じさせる(ステップS104)。
【0018】
次に、ステップS104で突然変異を生じさせた個体に対して、特性値モデルf1,f2を用いて評価する(ステップS105)。この場合、遺伝子(各成分)をそのまま比率として扱い、特性値モデルf1,f2を用いて評価する。
【0019】
次に、ペナルティ法を用いて、制約条件を判定する(ステップS106)。次に、個体が制約違反しているか否かを判定する(ステップS107)。この場合において、ペナルティ法によって離散制約を導入する。ステップS107で「Yes」と判定された場合、制約違反している個体にペナルティを付して、評価関数(各目的関数を評価するための関数)を低下させる(ステップS108)。ステップS107で「No」と判定された場合、個体にペナルティは付されない。次に、閾値を超える評価関数が得られなかった個体を淘汰する(ステップS109)。
【0020】
次に、世代数が上限に達したか否かを判定する(ステップS110)。ステップS110で「No」と判定された場合、ステップS102から再度実行する。ステップS110で「Yes」と判定された場合、得られたパレート解が所定の条件を満足するか否かを判定する(ステップS111)。ステップS111で「No」と判定された場合、ステップS101から再度実行する。ステップS111で「Yes」と判定された場合、最適化を終了する。
【0021】
離散制約を用いると、局所解に陥り易いため、ステップS111で「No」と判定されることが多くなる。したがって、初期個体を生成しなおして何度も最適化を行なう必要があり、最適解が得られるまでの時間が長大化してしまう。
【0022】
そこで、以下の実施例では、局所解に陥ることを抑制し、最適解が得られるまでの時間を短縮することができる情報処理装置、立案方法、および立案プログラムについて説明する。
【実施例0023】
図2(a)は、情報処理装置100の全体構成を例示するブロック図である。
図2(a)で例示するように、情報処理装置100は、格納部10、初期個体生成部20、進化部30、中間変数制御部40、評価部50、世代調整部60などを備える。本実施例では、一例として、混合候補の材料から最適な材料の組み合わせを探索する例について説明する。
【0024】
図2(b)は、情報処理装置100のハードウェア構成を例示するブロック図である。
図2(b)で例示するように、情報処理装置100は、CPU101、RAM102、記憶装置103、入力装置104、表示装置105等を備える。
【0025】
CPU(Central Processing Unit)101は、中央演算処理装置である。CPU101は、1以上のコアを含む。RAM(Random Access Memory)102は、CPU101が実行するプログラム、CPU101が処理するデータなどを一時的に記憶する揮発性メモリである。記憶装置103は、不揮発性記憶装置である。記憶装置103として、例えば、ROM(Read Only Memory)、フラッシュメモリなどのソリッド・ステート・ドライブ(SSD)、ハードディスクドライブに駆動されるハードディスクなどを用いることができる。記憶装置103は、演算プログラムを記憶している。入力装置104は、キーボード、マウスなどの入力装置である。表示装置105は、LCD(Liquid Crystal Display)などのディスプレイ装置である。CPU101が演算プログラムを実行することで、格納部10、初期個体生成部20、進化部30、中間変数制御部40、評価部50、および世代調整部60が実現される。なお、格納部10、初期個体生成部20、進化部30、中間変数制御部40、評価部50、および世代調整部60として、専用の回路などのハードウェアを用いてもよい。
【0026】
図3は、情報処理装置100の動作の一例を表すフローチャートである。
図3で例示するように、初期個体生成部20は、格納部10に格納されているデータを用いて、複数の初期個体を生成して個体群を生成する(ステップS1)。例えば、格納部10には、混合候補の各成分に係る情報を格納している。初期個体生成部20は、格納部10に格納されている各成分から、初期の組み合わせを生成する。初期個体については、ユーザが入力装置104を用いて指定することもあり、初期個体生成部20がランダムに各成分を組み合わせて生成することもある。
【0027】
次に、進化部30は、個体群から親個体を選択する(ステップS2)。次に、進化部30は、ステップS2で選択した親個体を用いて、交叉により子個体を生成する(ステップS3)。次に、進化部30は、ステップS3で生成した子個体に突然変異を生じさせる(ステップS4)。
【0028】
次に、中間変数制御部40は、遺伝子(各成分)を用いて中間変数を生成する(ステップS5)。まず、目的関数F1および目的関数F2を、以下のように設定する。目的関数F1および目的関数F2は、小さいほど良好であるものとする。この場合には、目的関数F1および目的関数F2の最適化とは、目的関数F1および目的関数F2を最小化することを意味する。f1およびf2は、特性値モデルである。
F1=f1(x) → min
F2=f2(x) → min
【0029】
遺伝子Siについては、制約無しで0から100の間で探索することができる。各個体は、遺伝子Siを保持しているものとする。このように、遺伝子Siをそのまま比率として扱わず、中間変数とする。したがって、中間変数を用いることで、制約とは独立して各個体の説明変数を変動させることができる。
【0030】
次に、中間変数制御部40は、中間変数を制御して離散制約を導入する(ステップS6)。離散制約として、各成分の合計を100%とし、成分数に上限を設ける。例えば、中間変数制御部40は、全ての遺伝子N
all個の中から、指定した上限数N
CLC分、最も値が大きいものを選択する。このように中間変数を制御して、成分数上限制約を導入することができる。また、中間変数制御部40は、選択した遺伝子のみの値を持つ(その他の値は0)、変数s´を作成する。中間変数制御部40は、作成した変数s´を用いて、以下のように中間変数を制御して、合計100%の制約を導入することができる。
【数3】
【0031】
ここで、
図4は、遺伝子x
iを直接比率として扱い、特性値モデルを用いて個体評価を行なう場合を例示する図である。
図4の個体で例示するように、N
all=40として、候補成分(説明変数)を40個としている。したがって、iは1から40の各整数である。各遺伝子x
iは、候補成分を表している。各遺伝子x
iの下欄の数値は、各遺伝子の成分比率(%)を表している。成分上限数を3つに設定し、合計を100%に設定しているため、
図4の例では、遺伝子x
1が31%で、遺伝子x
4が50%で、遺伝子x
6が19%で、合計が100%である。遺伝子x
iを直接比率として扱う場合には、個体の遺伝子情報により直接、特性値モデルf
1(x)およびf
2(x)を評価することになる。このように、遺伝子x
iをそのまま比率として扱う場合には、遺伝子x
iの動きが制限され、局所解に陥り易くなる。
【0032】
これに対して、
図5は、遺伝子S
iを中間変数として制御して制約条件を導入する場合を例示する図である。
図5の上段は、個体Sの内容を表している。個体Sでは、N
all=40として、候補成分(説明変数)を40個としている。したがって、iは1から40の各整数である。各遺伝子x
iは、候補成分を表している。各遺伝子x
iの下欄の数値は、各遺伝子の成分比率(%)を表している。また、成分上限数N
CLC=3としている。
図5の上段の段階では、合計100%でなくてもよいため、各遺伝子の合計は100%になっていない。
【0033】
次に、
図5の中段で例示するように、全ての遺伝子40個の中から、指定した上限数3つ、値が他よりも大きい遺伝子を選択する。選択した遺伝子のみの値を持つ(その他の値は0とする)、変数s´を作成する。
図5の中段の例では、遺伝子s´4、遺伝子s´16、および遺伝子s´22の3つが選択されている。各遺伝子の合計は、100になっていなくてもよい。
図5の中段の例では、合計が230となっている。
【0034】
次に、
図5の下段で例示するように、作成した変数s´を用いて、比率大きさxを計算する。例えば、x
i=(s´/230)×100を計算すればよい。
図5の下段の例では、遺伝子x
4の比率が26%となり、遺伝子x
16の比率が43%となり、遺伝子x
22の比率が31%となる。
図5の例では、遺伝子を直接比率として扱うのではなく、計算した比率大きさx
iを用いて、特性値モデルf
1(x)およびf
2(x)を評価することになる。
【0035】
ステップS6の実行後、中間変数制御部40は、中間変数の大きさの割合を用いて、比率大きさを計算する(ステップS7)。具体的には、中間変数制御部40は、上記式によってxiを計算することで、比率大きさを計算する。
【0036】
次に、中間変数制御部40は、ステップS7で算出した比率大きさにより、特性値モデルを用いて個体を評価する(ステップS8)。次に、個体の評価値が悪い個体を淘汰する(ステップS9)。
【0037】
次に、世代調整部60は、現状の世代が、最小設定世代数よりも大きいか否かを判定する(ステップS10)。ステップS10で「No」と判定された場合、ステップS2から再度実行される。
【0038】
ステップS10で「Yes」と判定された場合、世代調整部60は、ΔHよりもδHの方が大きいか否かを判定する(ステップS11)。ここで、ΔHとは、ハイパーボリュームの変化量を表している。具体的には、ΔH=H(g)-H(g-Th)で表すことができる。H(g)とは、現在の世代gにおけるハイパーボリュームを表している。Thは、ステップサイズを表している。ステップサイズは、所定の世代数を表している。δHは、閾値を表している。
【0039】
図6は、ハイパーボリュームについて説明するための図である。ハイパーボリュームは、パレート解の性能指標である。具体的には、ハイパーボリュームとは、目的関数空間上で、ある基準点と、アルゴリズムによって得られた解集合とによって形成される領域の面積や体積を表している。一例として、基準点を(0,0)とし、各目的関数を標準化した値を用いることができる。目的関数を2つにする場合には、
図6で表した面積がハイパーボリュームである。このハイパーボリュームが大きいほど解が広がることになるため、良い結果が得られていると判断することができる。
【0040】
ステップS11で「No」と判定された場合、世代調整部60は、現状の世代が最大設定世代数に達したか否かを判定する(ステップS12)。ステップS12で「No」と判定された場合、ステップS2から再度実行される。ステップS11で「Yes」と判定された場合、またはステップS12で「Yes」と判定された場合、フローチャートの実行が終了する。
【0041】
続いて、上記実施例の手法に従ってシミュレーションを行なった結果について説明する。当該シミュレーションでは、成分1~成分nの配合x
i(i=1,2,…,nで、Σ
ix
i=1)を変化させ、特性f
1(x)および特性f
2(x)を最小化する多目的最適化問題について、シミュレーションを行なった。この多目的最適化問題は、以下のように表すことができる。
F
1(x)=f
1(x)→min
F
2(x)=f
2(x)→min
【数4】
【0042】
簡単な例として、以下のような関数を考える。α
i(≧0)、β
i(≧0)、p
i、q
i(i=1,2,…,n)は、ランダムに発生させる。各関数は、下に凸となる。
【数5】
【数6】
【0043】
図7は、機械学習用の仮想データである。候補成分(説明変数)は40個である。データ個数は、500個とした。1つのデータは、3成分~8成分で構成した。刻み幅を10%とした。f
1およびf
2は、特性値を表している。
【0044】
図7の仮想データを学習データとして用いて機械学習の訓練を行なった。
図8(a)は、特性f1について、ガウス過程(GP)回帰でモデル化を行なった結果を表している。
図8(b)は、得られたモデルを用いて、テストデータを評価した結果を表している。テストデータは、仮想データのうち10%(50個)をランダムに選択して用いた。
図8(c)は、特性f2について、ガウス過程(GP)回帰でモデル化を行なった結果を表している。
図8(d)は、得られたモデルを用いて、テストデータを評価した結果を表している。テストデータは、仮想データのうち10%(50個)をランダムに選択して用いた。
図8(e)は、R2乗値を表している。
図8(e)のように、R2乗値は1に近い値となった。
【0045】
次に、遺伝的アルゴリズムに
図3のステップS5で説明した中間変数を用い、特性f
1及び特性f
2の最適化を行なった。初期の個体数を160とした。世代数を250とした。離散制約として、合計の制約として100%を設定し、成分数の制約として上限3個を設定した。世代数を自動調整する場合の最小設定世代数を250とし、最大設定世代数を2000とした。ハイパーボリュームの変化量の閾値δ
Hを0.01とした。ハイパーボリュームの変化量を計算する際のステップサイズT
Hを50とした。
【0046】
図9(a)および
図9(b)は、得られたパレート解を例示する図である。
図9(a)において、「●」は、中間変数制御および世代数自動調整の両方を行なった場合(条件1)の結果を表している。「▲」は、世代数自動調整を行わず、中間変数制御だけを行なった場合(条件2)の結果を表している。また、「×」は、中間変数を用いずに、遺伝子を直接比率として用いた場合(条件3)の結果(1回目)を表している。「+」は、中間変数を用いずに、遺伝子を直接比率として用いた場合(条件3)の結果(2回目)を表している。
【0047】
条件1および条件2の結果は、条件3の結果よりも左側かつ下側に位置するため、特性f1および特性f2の両方とも良好になっている。また、条件1および条件2の結果は、条件3の結果よりも広がっているため、ハイパーボリュームが多くなっている。したがって、条件1および条件2の結果は、条件3の結果よりも良好になっていることがわかる。条件3の結果は、局所解に陥っているものと考えられる。
【0048】
なお、中間変数を用いた場合において、世代数を自動調整した場合(条件1)には、世代数を自動調整しなかった場合(条件2)よりもパレート解がさらに広がっている。したがって、世代数を自動調整した場合には、さらに良好な解が得られたことがわかる。
【0049】
図10は、
図9(a)の「×」(条件3の1回目)の結果を詳細に表した図である。
図10のように、ペナルティ項によって個体の動きが制限されており、どの解も成分がx1、x4、x6に固定されていることがわかる。すなわち、局所解に陥っていることがわかる。
【0050】
図11は、
図9(a)の「+」(条件3の2回目)の結果を詳細に表した図である。
図11のように、ペナルティ項によって個体の動きが制限されており、どの解も成分がx1、x11、x16に固定されていることがわかる。すなわち、局所解に陥っていることがわかる。
【0051】
図12は、
図9(a)の「▲」(条件2)の結果を詳細に表した図である。ペナルティ項を用いていないため、
図12のように、個体の動きが制限されにくくなっていることがわかる。
図13は、
図9(a)の「●」(条件1)の結果を詳細に表した図である。ペナルティ項を用いていないため、
図13のように、個体の動きが制限されにくくなっていることがわかる。
【0052】
図14は、
図9(a)の「●」(条件1)の結果について、ハイパーボリュームの変化を詳細に表した図である。
図14で例示するように、世代数を自動調整することによって、ハイパーボリュームの変化が飽和するところまで、十分に最適化できていることがわかる。
【0053】
本実施例によれば、説明変数の組み合わせに制約を設け、当該制約とは独立して各個体の説明変数を変動させる中間変数が制御される。中間変数によって変動させた説明変数を用いて得られた目的関数が評価される。このような中間変数を用いることで、離散制約を設定しても、個体の動きの制限を抑制することができる。それにより、局所解に陥ることを抑制することができる。その結果、目的関数が所定の条件を満足するように、短時間が解を探索することができるようになる。
【0054】
中間変数によって変動させた説明変数の値に応じて、説明変数の組み合わせを選択してもよい。この場合、個体の動きの制限を抑制できるようになるため、局所解に陥ることを抑制することができる。
【0055】
制約として説明変数の個数に上限数を設け、中間変数によって変動させた説明変数のうち、上限数分、最も値の大きいものを組み合わせとして選択してもよい。この場合、個体の動きの制限を抑制しつつ、説明変数の個数の上限などの離散制約を満足できるようになる。
【0056】
制約として、前変数の合計値を所定値に設定し、前記中間変数によって変動させた説明変数の値を、比率に応じて、合計値が所定値になるように変換してもよい。この場合、個体の動きの制限を抑制しつつ、説明変数の合計値などの離散制約を満足できるようになる。
【0057】
目的関数の空間における、連続する2世代のハイパーボリューム差に応じて、進化の最大世代数に上限を設けてもよい。この場合、中間変数を設けて個体の動きが抑制されて探索範囲が広がるものの、問題に合わせた世代数を自動で調整することができる。
【0058】
進化の最小世代数を設け、最大世代数を最小世代数よりも大きくしてもよい。最小世代数を設けることで、十分に最適化処理を実行することができる。
【0059】
上記各例において、中間変数制御部40が、複数の説明変数の組み合わせに制約を設け、制約とは独立して複数の個体の各々の説明変数を変動させる中間変数を制御する中間変数制御部の一例である。評価部50が、中間変数制御部が中間変数によって変動させた説明変数を用いて得られた目的関数を評価する評価部の一例である。
【0060】
以上、本発明の実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
(付記1)
各々が複数の説明変数で特定される複数の個体を進化させることで、目的変数が所定の条件を満足するように前記複数の説明変数の組合せを探索する処理を行なう演算プログラムであって、
コンピュータに、
前記複数の説明変数の前記組み合わせに制約を設け、前記制約とは独立して前記複数の個体の各々の説明変数を変動させる中間変数を制御する処理と、
前記中間変数によって変動させた前記説明変数を用いて得られた目的関数を評価する処理と、を実行させることを特徴とする演算プログラム。
(付記2)
前記コンピュータに、
前記中間変数によって変動させた前記説明変数の値に応じて、前記複数の説明変数の前記組み合わせを選択する処理を実行させることを特徴とする付記1に記載の演算プログラム。
(付記3)
前記コンピュータに、
前記制約として前記複数の説明変数の個数に上限数を設け、前記中間変数によって変動させた前記説明変数のうち、前記上限数分、最も値の大きいものを組み合わせとして選択する処理を実行させることを特徴とする付記1または付記2に記載の演算プログラム。
(付記4)
前記コンピュータに、
前記制約として、前記複数の説明変数の合計値を所定値に設定し、前記中間変数によって変動させた前記説明変数の値を、比率に応じて、合計値が前記所定値になるように変換する処理を実行させることを特徴とする付記1または付記2に記載の演算プログラム。
(付記5)
前記コンピュータに、
目的関数の空間におけるハイパーボリュームに応じて、前記進化の最大世代数に上限を設ける処理を実行させ、
前記ハイパーボリュームは、前記目的関数の空間において、基準点と、世代ごとの解集合とから得られる体積または面積であることを特徴とする付記1または付記2に記載の演算プログラム。
(付記6)
前記コンピュータに、
前記進化の最小世代数を設け、前記最大世代数は前記最小世代数よりも大きくする処理を実行させることを特徴とする付記5に記載の演算プログラム。
(付記7)
各々が複数の説明変数で特定される複数の個体を進化させることで、目的変数が所定の条件を満足するように前記複数の説明変数の組合せを探索する処理を行なう演算方法であって、
前記複数の説明変数の前記組み合わせに制約を設け、前記制約とは独立して前記複数の個体の各々の説明変数を変動させる中間変数を制御し、
前記中間変数によって変動させた前記説明変数を用いて得られた目的関数を評価する、処理をコンピュータが実行することを特徴とする演算方法。
(付記8)
前記中間変数によって変動させた前記説明変数の値に応じて、前記複数の説明変数の前記組み合わせを選択する処理を、前記コンピュータが実行することを特徴とする付記7に記載の演算方法。
(付記9)
前記制約として前記複数の説明変数の個数に上限数を設け、前記中間変数によって変動させた前記説明変数のうち、前記上限数分、最も値の大きいものを組み合わせとして選択する処理を、前記コンピュータが実行することを特徴とする付記7または付記8に記載の演算方法。
(付記10)
前記制約として、前記複数の説明変数の合計値を所定値に設定し、前記中間変数によって変動させた前記説明変数の値を、比率に応じて、合計値が前記所定値になるように変換する処理を、前記コンピュータが実行することを特徴とする付記7または付記8に記載の演算方法。
(付記11)
目的関数の空間におけるハイパーボリュームに応じて、前記進化の最大世代数に上限を設ける処理を、前記コンピュータが実行し、
前記ハイパーボリュームは、前記目的関数の空間において、基準点と、世代ごとの解集合とから得られる体積または面積であることを特徴とする付記7または付記8に記載の演算方法。
(付記12)
前記進化の最小世代数を設け、前記最大世代数は前記最小世代数よりも大きくする処理を実行させることを特徴とする付記11に記載の演算方法。
(付記13)
各々が複数の説明変数で特定される複数の個体を進化させることで、目的変数が所定の条件を満足するように前記複数の説明変数の組合せを探索する処理を行なう情報処理装置であって、
前記複数の説明変数の前記組み合わせに制約を設け、前記制約とは独立して前記複数の個体の各々の説明変数を変動させる中間変数を制御する中間変数制御部と、
前記中間変数制御部が前記中間変数によって変動させた前記説明変数を用いて得られた目的関数を評価する評価部と、を備えることを特徴とする情報処理装置。
(付記14)
前記中間変数制御部は、前記中間変数によって変動させた前記説明変数の値に応じて、前記複数の説明変数の前記組み合わせを選択することを特徴とする付記13に記載の情報処理装置。
(付記15)
前記中間変数制御部は、前記制約として前記複数の説明変数の個数に上限数を設け、前記中間変数によって変動させた前記説明変数のうち、前記上限数分、最も値の大きいものを組み合わせとして選択することを特徴とする付記13または付記14に記載の情報処理装置。
(付記16)
前記中間変数制御部は、前記制約として、前記複数の説明変数の合計値を所定値に設定し、前記中間変数によって変動させた前記説明変数の値を、比率に応じて、合計値が前記所定値になるように変換することを特徴とする付記13または付記14に記載の情報処理装置。
(付記17)
目的関数の空間におけるハイパーボリュームに応じて、前記進化の最大世代数に上限を設ける世代調整部を備え、
前記ハイパーボリュームは、前記目的関数の空間において、基準点と、世代ごとの解集合とから得られる体積または面積であることを特徴とする付記13または付記14に記載の情報処理装置。
(付記18)
前記世代調整部は、前記進化の最小世代数を設け、前記最大世代数は前記最小世代数よりも大きくすることを特徴とする付記17に記載の情報処理装置。