水上/技術資料?


目次


目標 

pymooというモジュールを使って多目的最適化問題を解きます。

組み合わせ最適化問題とは 

最適化問題とは、制約を満たしつつ、目的の値を最大化or最小化する条件を求める問題のこと。
組合せ最適化問題とは、様々な制約の下で多くの選択肢の中から、ある指標(価値)を最も良くする変数の値(組合せ)を求めること。
多目的最適化とNSGA2について↓
https://logmi.jp/tech/articles/325211

プログラム 

これを解凍し、最終版.pyを実行してください

環境 

Python 3.10.1 64bitでやってますが,たぶんどのバージョンもできるはず...
pymooはバージョン0.5.0を使いましょう。

準備 

まず、pymooをインストールします。pymooはpythonでNSGA2を実行するためのモジュールです。
また、pymooはバージョンによってコードの書き方が変わります。
自分は0.5.0を使っているので0.5.0をインストールする。

pip install pymoo == 0.5.0
pip install Py


実験 

問題設定 

スクレイピングしたレシピデータを活用したNSGA2のコードは以下の通り。

code1.png
code2.png
code3.png


code4.png


code5.png

解説 

①は制約式の記述部分である。リスト化した各変数(コストや時間や各栄養素など)を足したりしている。具体的な式はコメントアウト部分に記載。
記述した制約式をpの配列にいれ、out["G"]の部分に書き込んでいる。
②はそれぞれサンプリング、クロスオーバー、ミューテーションの部分である、nsga2で組み合わせ最適化を使うときはこの3つをコピペして用いる。
③はプログラム実行部分である。
proble= SubsetProblem(... の部分が①で記述したコードを組み合わせ最適化問題として置き換えている。
algorithm=NSGA2(...の部分でアルゴリズムの設定をしている。②で記述したサンプリング、クロスオーバー、ミューテーションを使用する。
res=minimize(...の部分でアルゴリズムを実行している。初めにminimize(とすることで最小化問題としてとらえる。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS