近藤/技術資料?


目次


目標 

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 PySimpleGUI
pip install jinja2
pip install flask
pip install pandas
pip install pulp
pip install bs4
pip install requests
pip install regex
pip install ortoolpy
pip install pyecharts


解説 

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


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