3

線形代数パッケージのような凸最適化パッケージは、実装するのではなく、使用するものでなければならないことを完全に理解しています。しかし、純粋に教育目的のために-凸最適化パッケージを実装する方法に関するリンク/本-良いリソースはありますか?(二次制約のある二次計画のように?)

ありがとう!

4

3 に答える 3

2

凸最適化に関する優れた教科書には、あなたが探しているものがあります。そのような無料ですが、すばらしいリソースの1つがここにあります:COBook。あなたが正しく言及しているように、この本で言及されているアルゴリズムを実装するには、線形代数ライブラリが必ず必要になることに注意してください。

于 2010-07-08T04:54:02.820 に答える
1

数理計画学会のニュースレターであるOptimaに、 「COIN-ORを使用したオープンソースのMinlpソルバーの迅速な開発」という関連記事があります。いくつかのコインまたはパッケージを使用して非線形ソルバーを構築する方法について説明します。コインのほとんど-またはものはC++で書かれています。

Pythonの場合、 numpyで利用可能な線形代数のデータ構造とアルゴリズムの使用を検討できます。関連するscipyパッケージには、いくつかの非線形オプティマイザーがありますが、凸最適化に固有のものはありません。

そして最後に、BoydのGPLのPythonベースの凸型オプティマイザーcvxoptを見て、自分の前にあるタスクの種類を把握することができます。

于 2011-09-24T02:33:32.973 に答える
0

それはあなたが何をしようとしているのかにもよりますが、あなたは教授に行くべきです。あなたが今いる、またはあなたが卒業したあなたの大学の数学の最適化では、あなたは彼に直接尋ねるべきです。

凸最適化に縮小されたいくつかの問題のソルバーを実装しました(http://cs229.stanford.edu/proj2017/)-SkLearnの同様のソリューションよりも高速に動作するcvx4ml、およびStephen Boydに24時間の試験に合格したので、アドバイスを提供できますあなたの非常に大まかな計画のためにあなたができることと説明すること:

だからあなたはあなた自身のパッケージを作成するつもりです私は段階的な指示を書きます:

  1. 密行列/ベクトルで作業するためのライブラリを作成する必要があります
  2. スパース行列/ベクトルを操作するためのライブラリを作成する必要があります
  3. 連立一次方程式を解くために約20の異なるアルゴリズムを実装します(状況に応じて異なるアルゴリズムが必要になるため)
  4. プログラミング言語または作成したシステムで制約や関数ドメインなどを説明する方法の概念を紹介します。
  5. いくつかのノルムと双対ノルムの評価、LU、コレスキーのようないくつかの因数分解技術を実装します。
  6. 非負のオルソントコーン用のカスタムの単純な円錐ソルバーを実装します。そしてそれはあなたがやろうとしていることに依存します。6.a-内点法に基づくソルバーを記述します。6.b-分散最適化をサポートする書き込みソルバー6.c-いくつかの予測劣勾配法に基づく書き込みソルバー。

  7. 他のコーンをサポートするように改善する

  8. ステップ「5」で強化されたソルバー

そして、あなたがCVXPYのレベルになりたいのなら、

  1. CVXPYのようにプログラム記述の解析を実装し、問題を円錐曲線に変換します。

psこのトピックのいくつかでだらしなく感じる場合は、次のようにします。

  • 教授を書いた線形代数の本を読んでください。あなたの大学から

  • YouTubeで、S.Boydを使用したEE263、S.Boydを使用したEE364A、S.Boydを使用したEE364Bを確認してください。

于 2018-02-12T19:19:44.227 に答える