茨城県つくば市でモバイルアプリ(iPhone、Android)のプログラミングをする日記です。あとWordPress、Raspberry Pi、Arduinoなど。

モバイルアプリ開発@つくば

Pythonを使った最適化計算の方法を調べてみた

投稿日:2014年8月29日 更新日:

こんにちは、okuzawatsです。
Pythonを使って、ポートフォリオの最適化計算をしてみようと思いたちました。

複数資産から構成されるポートフォリオの期待リターンとボラティリティを算出するところまで来たんですが、ここで最適化計算を行う必要性に迫られました。
最適化計算の方法については、あまり勉強したことがなかったのでちょっと調べてみました。

とはいえ、自力で最適化計算のコードを書くのは大変そうです。
Pythonで最適化計算をしてくれるライブラリやツールを探して、使えそうなものがあるか検討してみました。
調べた結果をこの記事に書き残しておきます。

高性能な数理最適化ソルバー「Gurobi Optimizer」

書店で最適化問題に関する書籍をあさっていたら、
あたらしい数理最適化: Python言語とGurobiで解く
というそのものズバリの書籍を発見し、音速で購入しました。
ポートフォリオ最適化問題にも一節をさいており、非常に参考になりそうです。

これまでは特殊なプログラミング言語やアルゴリズム等に精通している事が必要であった最適化問題(数理計画)の解決が、高性能な数理最適化ソルバー(Gurobi)と超高水準プログラミング言語(Python)を用いることで容易に可能となりつつある。
本書は、具体例を用いて最適化の基礎理論を解説し、それに即した正確・高速なプログラムを示すことで、問題解決の手本を多数示す。
最適化の手法を根本から変える、新しい時代の幕開けを告げる書である。

(出典:あたらしい数理最適化: Python言語とGurobiで解く)

調べたところ、このGurobiというソルバーは商用のソフトウェアとなっています。
日本では、October Sky社がGurobiの販売代理店になっています。

商用ライセンスとアカデミックライセンス、また評価版のライセンスが提供されています。

最適化ツールとしては優れていそうですが、今回はちょっとした計算をするだけなので、できればお金を使いたくないところです。
一応、評価版は無料で使えるようですが…。

Pythonで使えるその他の最適化計算ツール

インターネットで調べているうちに、「数理最適化とPython」というこれまたそのものズバリの資料をslideshareで発掘しました。

数理最適化とPython

上記のスライドによると、Pythonで最適化計算をするためには、以下の方法やツールがあるようです(筆者による抜粋)。

  • Cooper(Common Optimization Python Repository)
    • COIN-OR(最適化関連ソフトウェアをオープンソースで提供することで学術研究の発展をはかるプロジェクト)のサブプロジェクト。
  • or-tools(Operation Research Tools developed at Google)
    • Googleのプロジェクト。
  • Gurobi
    • 既出。
  • OpenOpt(SciPy)
    • NumPy、SciPyベースのフリーのライブラリ。
  • escpy
    • 遺伝的アルゴリズム等の進化的計算パッケージ。

色々あって調べきれませんが、CooperOpenOptあたりが良さそうです。
最適化計算には、このあたりを使ってみたいと思います。

-プログラミング

Copyright© モバイルアプリ開発@つくば , 2017 AllRights Reserved Powered by AFFINGER4.