目次
pymooというモジュールを使って多目的最適化問題を解きます。
最適化問題とは、制約を満たしつつ、目的の値を最大化or最小化する条件を求める問題のこと。
組合せ最適化問題とは、様々な制約の下で多くの選択肢の中から、ある指標(価値)を最も良くする変数の値(組合せ)を求めること。
多目的最適化とNSGA2について↓
https://logmi.jp/tech/articles/325211
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のコードは以下の通り。
①
②
③
①は制約式の記述部分である。リスト化した各変数(コストや時間や各栄養素など)を足したりしている。具体的な式はコメントアウト部分に記載。
記述した制約式をpの配列にいれ、out["G"]の部分に書き込んでいる。
②はそれぞれサンプリング、クロスオーバー、ミューテーションの部分である、nsga2で組み合わせ最適化を使うときはこの3つをコピペして用いる。
③はプログラム実行部分である。
proble= SubsetProblem(... の部分が①で記述したコードを組み合わせ最適化問題として置き換えている。
algorithm=NSGA2(...の部分でアルゴリズムの設定をしている。②で記述したサンプリング、クロスオーバー、ミューテーションを使用する。
res=minimize(...の部分でアルゴリズムを実行している。初めにminimize(とすることで最小化問題としてとらえる。
料理のhtmltest
https://dic515s2.pu-toyama.ac.jp/water2/hai2.html