2021年8月22日日曜日

非線形計画法1 (無制約)

 非線形関数を最適化することを非線形最適化と言って、利用する場面は多いです。ここでは理論的な説明は省き、ツールを使って最適化を行う方法を紹介します。

利用するソルバー:scipy.optimize

最適化手法:Nelder-Mead Simplex algorithm

pythonコード

pythonコードを確認してもらうと、いくつか例題があります。目的関数値を返す関数を作成して、その関数を呼び出してツールの書式に従って最適化を行います。パターン化されますので理解もしやすいと思います。最適化手法は今回Nelder-Meadという基本的なものを利用しています。他の最適化手法でも試して欲しいです。

20210907 追記

ローゼンブロック関数に対して、遺伝アルゴリズム(GA)のdeapライブラリを使って実施したものを追加しました。2変数での精度は出ましたが、3変数以上は難しいです。

20210908 追記

deapのベンチマークであるackley関数を追加しました。下記は参考です。

https://deap.readthedocs.io/en/master/api/benchmarks.html#deap.benchmarks.ackley

https://qiita.com/tyoshitake/items/e76f6f8e4110731606bc


4 件のコメント: