専門ゼミ(戸田)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[専門ゼミ(戸田)]]
----
目次
#contents
----
*目標 [#z00fd092]
pymooというモジュールを使って多目的最適化問題を解きます。
*最適化問題とは [#h82a02b0]
最適化問題とは、制約を満たしつつ、目的の値を最大化or最小...
&br;
特に、目的関数が複数存在する最適化問題を多目的最適化問題...
多目的最適化問題を解く手法としてNSGA2があり、本ページでは...
最適化問題について学びたいときはこちら↓&br;
https://science-log.com/%E6%95%B0%E5%AD%A6/%E3%80%90%E6%9...
&br;
多目的最適化とNSGA2について↓&br;
https://logmi.jp/tech/articles/325211
&br;
*環境 [#h82a02b0]
Python 3.10.1 64bitでやってますが,たぶんどのバージョンも...
pymooはバージョン0.5.0を使いましょう。
**プログラムの解説 [#s10f289d]
***準備 [#j661bc61]
まず、pymooをインストールします。pymooはpythonでNSGA2を実...
また、pymooはバージョンによってコードの書き方が変わります...
自分は0.5.0を使っているので0.5.0をインストールする。&br;
pip install pymoo == 0.5.0
*実験 [#bb5c41a2]
**問題設定 [#s10f289d]
以下の問題について考えてみる。
#ref(pro1.png,,400x220)
これは目的関数として (x1^2 + x2^2)を最小化かつ、(x1 - 1)^...
制約条件として2(x1 - 0.1)(x1 - 0.9)/0.18 =< 0 、-20(x1 - ...
を満たしている問題について考えている。
&br;
**サンプルプログラムの解説 [#s10f289d]
#ref(pro1.1.py)
多目的最適化問題のコードの解説をする。&br;
#ref(program.png,,550x700)
&br;
***Myprogram全体の部分 [#s10f289d]
・class MyProgram(program): の中は最適化問題全体の計算す...
#ref(program1.png,,)
&br;
***def __init__(self) [#s10f289d]
def __init__(self): の中は最適化問題の引数の設定をしてい...
#ref(program2.png,,)
引数の説明はこちら↓ &br;
#ref(pro2.png,,400x220)
また、__init__ についてはこちらを参考に↓ &br;
https://qiita.com/ishigen/items/2d8b6e6398743f2c8110 &br;
&br;
***evaluate [#s10f289d]
evaluateの部分は目的関数と制約条件を書くところです。 &br;
#ref(program3.png)
out["F"]に評価関数の値,out["G"]に制約条件の値を書き込む...
※制約条件、目的関数は=<0制約と設定してあるため、>=とする...
&br;
***プログラム実行部分 [#s10f289d]
#ref(program4.png,,)
problem = MyProblem()で、記述した問題を定義。 &br;
algorithm = NSGA2(pop_size=100)でアルゴリズムの種類を定義...
vurpose = True で処理の途中を可視化している(Trueで以下の...
#ref(program6.png,,360x360)
n gen は現在の
世代数,n evel はこれまでの個体を評価した数,cv (min),cv...
団における最小の制約違反,&br;
現在の母集団における平均の制約違反,n nds は多目的最適化...
eps は過去数世代にわたるインジケーターの変化,indicatorは...
***グラフ、解を表示する部分 [#s10f289d]
#ref(program5.png)
plot.の4行はNSGA2によって出力したパレート解を表示するコー...
表示されるグラフ↓&br;
#ref(program7.png,,300x300)
最後の行はres.F,resXを表示している。
#ref(program8.png,,360x360)
res.Fは、目的関数の値(ここでいうとres.Fはx1^2+xx2^2と(x1-...
補足&br;
最大化したい場合は2つの目的関数の符号を逆にしてください
*課題 [#bb5c41a2]
**問題設定 [#s10f289d]
以下の問題について考えてみる。
#ref(pro3.png,,400x300)
これは目的関数として (x1^2 + x2^2)を最小化かつ、(x1 - 2)^...
制約条件として3(x1 - 0.2)(x1 - 0.8)/0.28 =< 0 、-10(x1 - ...
を満たしている問題について考えている。
&br;
**サンプルプログラム [#s10f289d]
#ref(pro_sample.py)
以下は目的関数と制約条件を変更したプログラムコードである。
#ref(program11.png,,300x300)
&br;
***グラフ、解を表示する部分 [#s10f289d]
プログラムを実行するとこのようなグラフが表示された
#ref(Figure_1.png,,300x300)
*参考文献 [#ddfa4bf2]
pymoo公式サイト(日本語訳をして見てね)&br;
https://pymoo.org/algorithms/moo/nsga2.html &br;
pymooの使い方まとめ&br;
https://yuyumoyuyu.com/2021/07/23/howtousepymoo/
終了行:
[[専門ゼミ(戸田)]]
----
目次
#contents
----
*目標 [#z00fd092]
pymooというモジュールを使って多目的最適化問題を解きます。
*最適化問題とは [#h82a02b0]
最適化問題とは、制約を満たしつつ、目的の値を最大化or最小...
&br;
特に、目的関数が複数存在する最適化問題を多目的最適化問題...
多目的最適化問題を解く手法としてNSGA2があり、本ページでは...
最適化問題について学びたいときはこちら↓&br;
https://science-log.com/%E6%95%B0%E5%AD%A6/%E3%80%90%E6%9...
&br;
多目的最適化とNSGA2について↓&br;
https://logmi.jp/tech/articles/325211
&br;
*環境 [#h82a02b0]
Python 3.10.1 64bitでやってますが,たぶんどのバージョンも...
pymooはバージョン0.5.0を使いましょう。
**プログラムの解説 [#s10f289d]
***準備 [#j661bc61]
まず、pymooをインストールします。pymooはpythonでNSGA2を実...
また、pymooはバージョンによってコードの書き方が変わります...
自分は0.5.0を使っているので0.5.0をインストールする。&br;
pip install pymoo == 0.5.0
*実験 [#bb5c41a2]
**問題設定 [#s10f289d]
以下の問題について考えてみる。
#ref(pro1.png,,400x220)
これは目的関数として (x1^2 + x2^2)を最小化かつ、(x1 - 1)^...
制約条件として2(x1 - 0.1)(x1 - 0.9)/0.18 =< 0 、-20(x1 - ...
を満たしている問題について考えている。
&br;
**サンプルプログラムの解説 [#s10f289d]
#ref(pro1.1.py)
多目的最適化問題のコードの解説をする。&br;
#ref(program.png,,550x700)
&br;
***Myprogram全体の部分 [#s10f289d]
・class MyProgram(program): の中は最適化問題全体の計算す...
#ref(program1.png,,)
&br;
***def __init__(self) [#s10f289d]
def __init__(self): の中は最適化問題の引数の設定をしてい...
#ref(program2.png,,)
引数の説明はこちら↓ &br;
#ref(pro2.png,,400x220)
また、__init__ についてはこちらを参考に↓ &br;
https://qiita.com/ishigen/items/2d8b6e6398743f2c8110 &br;
&br;
***evaluate [#s10f289d]
evaluateの部分は目的関数と制約条件を書くところです。 &br;
#ref(program3.png)
out["F"]に評価関数の値,out["G"]に制約条件の値を書き込む...
※制約条件、目的関数は=<0制約と設定してあるため、>=とする...
&br;
***プログラム実行部分 [#s10f289d]
#ref(program4.png,,)
problem = MyProblem()で、記述した問題を定義。 &br;
algorithm = NSGA2(pop_size=100)でアルゴリズムの種類を定義...
vurpose = True で処理の途中を可視化している(Trueで以下の...
#ref(program6.png,,360x360)
n gen は現在の
世代数,n evel はこれまでの個体を評価した数,cv (min),cv...
団における最小の制約違反,&br;
現在の母集団における平均の制約違反,n nds は多目的最適化...
eps は過去数世代にわたるインジケーターの変化,indicatorは...
***グラフ、解を表示する部分 [#s10f289d]
#ref(program5.png)
plot.の4行はNSGA2によって出力したパレート解を表示するコー...
表示されるグラフ↓&br;
#ref(program7.png,,300x300)
最後の行はres.F,resXを表示している。
#ref(program8.png,,360x360)
res.Fは、目的関数の値(ここでいうとres.Fはx1^2+xx2^2と(x1-...
補足&br;
最大化したい場合は2つの目的関数の符号を逆にしてください
*課題 [#bb5c41a2]
**問題設定 [#s10f289d]
以下の問題について考えてみる。
#ref(pro3.png,,400x300)
これは目的関数として (x1^2 + x2^2)を最小化かつ、(x1 - 2)^...
制約条件として3(x1 - 0.2)(x1 - 0.8)/0.28 =< 0 、-10(x1 - ...
を満たしている問題について考えている。
&br;
**サンプルプログラム [#s10f289d]
#ref(pro_sample.py)
以下は目的関数と制約条件を変更したプログラムコードである。
#ref(program11.png,,300x300)
&br;
***グラフ、解を表示する部分 [#s10f289d]
プログラムを実行するとこのようなグラフが表示された
#ref(Figure_1.png,,300x300)
*参考文献 [#ddfa4bf2]
pymoo公式サイト(日本語訳をして見てね)&br;
https://pymoo.org/algorithms/moo/nsga2.html &br;
pymooの使い方まとめ&br;
https://yuyumoyuyu.com/2021/07/23/howtousepymoo/
ページ名: