線形代数パッケージのような凸最適化パッケージは、実装するのではなく、使用するものでなければならないことを完全に理解しています。しかし、純粋に教育目的のために-凸最適化パッケージを実装する方法に関するリンク/本-良いリソースはありますか?(二次制約のある二次計画のように?)
ありがとう!
線形代数パッケージのような凸最適化パッケージは、実装するのではなく、使用するものでなければならないことを完全に理解しています。しかし、純粋に教育目的のために-凸最適化パッケージを実装する方法に関するリンク/本-良いリソースはありますか?(二次制約のある二次計画のように?)
ありがとう!
凸最適化に関する優れた教科書には、あなたが探しているものがあります。そのような無料ですが、すばらしいリソースの1つがここにあります:COBook。あなたが正しく言及しているように、この本で言及されているアルゴリズムを実装するには、線形代数ライブラリが必ず必要になることに注意してください。
数理計画学会のニュースレターであるOptimaに、 「COIN-ORを使用したオープンソースのMinlpソルバーの迅速な開発」という関連記事があります。いくつかのコインまたはパッケージを使用して非線形ソルバーを構築する方法について説明します。コインのほとんど-またはものはC++で書かれています。
Pythonの場合、 numpyで利用可能な線形代数のデータ構造とアルゴリズムの使用を検討できます。関連するscipyパッケージには、いくつかの非線形オプティマイザーがありますが、凸最適化に固有のものはありません。
そして最後に、BoydのGPLのPythonベースの凸型オプティマイザーcvxoptを見て、自分の前にあるタスクの種類を把握することができます。
それはあなたが何をしようとしているのかにもよりますが、あなたは教授に行くべきです。あなたが今いる、またはあなたが卒業したあなたの大学の数学の最適化では、あなたは彼に直接尋ねるべきです。
凸最適化に縮小されたいくつかの問題のソルバーを実装しました(http://cs229.stanford.edu/proj2017/)-SkLearnの同様のソリューションよりも高速に動作するcvx4ml、およびStephen Boydに24時間の試験に合格したので、アドバイスを提供できますあなたの非常に大まかな計画のためにあなたができることと説明すること:
だからあなたはあなた自身のパッケージを作成するつもりです私は段階的な指示を書きます:
非負のオルソントコーン用のカスタムの単純な円錐ソルバーを実装します。そしてそれはあなたがやろうとしていることに依存します。6.a-内点法に基づくソルバーを記述します。6.b-分散最適化をサポートする書き込みソルバー6.c-いくつかの予測劣勾配法に基づく書き込みソルバー。
他のコーンをサポートするように改善する
そして、あなたがCVXPYのレベルになりたいのなら、
psこのトピックのいくつかでだらしなく感じる場合は、次のようにします。
教授を書いた線形代数の本を読んでください。あなたの大学から
YouTubeで、S.Boydを使用したEE263、S.Boydを使用したEE364A、S.Boydを使用したEE364Bを確認してください。