問題タブ [mosek]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
215 参照

c++ - Makefile 内の他のライブラリに影響を与えるライブラリ

次の Makefile で奇妙な問題に直面しています。

MOSEKが提供する例からほとんどのコンテンツを取得しました。Makefile は正常に動作し、結果は期待どおりです。問題は、私が使用している MOSEK のバージョンがマルチスレッド (MOSEK 7.1) であることです。MOSEK は、マシン上のコアの数を検出し、それらすべてを使用することになっています。Makefile をそのまま使用すると、MOSEK は 1 つのコアのみを検出し、1 つのスレッドのみを使用します。

ただし、$(LIBS) なしでコンパイルすると、MOSEK は 4 つのコアを検出します。

lo1.c にあるコードでは、今のところ $(LIBS) を使用していませんが、後で lo1.c でこれらのライブラリが必要になります。これらのライブラリが MOSEK の動作に影響を与えているのはなぜですか?

ありがとうございました。

0 投票する
1 に答える
584 参照

cpu - Python API for MOSEK を使用した CPU アフィニティの問題

MOSEKの CPU アフィニティと線形整数プログラミングに問題があります。私のプログラムは のmultiprocessingモジュールを使用して並列化されるPythonため、MOSEK は各プロセスで同時に実行されます。Poolマシンには 48 個のコアがあるため、クラスを使用して 48 個の同時プロセスを実行します。彼らのドキュメントには、API はスレッド セーフであると記載されています。

プログラムを開始した後、以下は からの出力ですtop。CPU の約 50% がアイドル状態であることを示しています。上の出力の最初の 20 行のみが示されています。

ドキュメントのMOSEK パラメータセクションを確認しましたが、CPU アフィニティに関連するものは何もありませんでした。オプティマイザ内のマルチスレッドに関連するいくつかのフラグがあります。これらのフラグはoffデフォルトで設定されており、重複して設定してoffも変更はありません。

実行中の Python ジョブの CPU アフィニティを確認したところ、それらの多くは同じ CPU にバインドされています。しかし、奇妙なのは、CPU アフィニティを設定できないか、少なくとも変更した直後に再び変更されたように見えることです。

ジョブの 1 つを選択し、実行して CPU アフィニティを設定しましたtaskset -p 0xFFFFFFFFFFFF 115526。これを 1 秒間隔で 10 回行います。taskset各呼び出し後の CPU アフィニティ マスクを次に示します。

実行時に何かが継続的に CPU アフィニティを変更しているようです。

親プロセスのCPUアフィニティも設定してみましたが、同じ効果があります。

これが私が実行しているコードです。

このコードは、事前に計算したデータをアンピクルします。これらのオブジェクトは、線形計画法の制約と係数です。コードとこのデータ ファイルは、このリポジトリでホストされています。

他の誰かがMOSEKでこの動作を経験しましたか? 続行する方法について何か提案はありますか?

0 投票する
1 に答える
345 参照

scipy - 半明確な制約を伴う非線形最適化のための適切なパッケージ/ソフトウェア

次の(一般的な)形式の最適化問題を数値的に解くのに苦労しています。

F(x) を最小化する

そのような:

___(1): 0 < x < 1

___(2): M(x) >= 0。

ここで、M(x) は要素が x の二次関数である行列です。最後の制約は、M(x) が正の半正定行列でなければならないことを意味します。さらに、F(x) は呼び出し可能な関数です。より好奇心旺盛な方のために、同様の最小限の作業例を次に示します

いくつかのオプションを試しましたが、成功しませんでした。

  1. PICOSCVXPYおよびCVX -- 最初の 2 つのケースでは、私のようなミニマックス問題をエンコードする方法が見つかりません。MATLAB で実装されている 3 番目のものでは、半正定制約に含まれる行列はアフィンでなければなりません。したがって、私の問題はこの基準から外れています。
  2. fmincon -- マトリックス ポジティブ制約をどのようにエンコードできますか? 1 つの方法は、行列 M(x) の固有値を解析的に計算し、それぞれが正になるように制約することです。しかし、固有値の解析式は恐ろしいものになる可能性があります。
  3. MOSEK -- 目的関数は標準形式で表現可能でなければなりません。ユーザー定義の目的関数の例が見つかりません。
  4. scipy.optimize -- 目的関数と制約に加えて、これらの関数の導関数も提供する必要があります。特に私の場合、それは目的関数にとっては問題ありません。しかし、固有値の解析式を使用して行列の正の制約 (およびその導関数) を表現するとしたら、それは非常に面倒な作業になる可能性があります。

上記の各パッケージ/ソフトウェアでの私の試みを説明するために MWE を提供していないことをお詫びします。

最適化の問題を解決するのに役立つパッケージ/ソフトウェアを誰か提案してもらえますか?

0 投票する
0 に答える
452 参照

python - Mosek Markowitz ポートフォリオ取引コスト - Python Fusion

mosek オプティマイザーのさまざまな部分がどのように機能するかをよりよく理解しようとしていますが、次の制約などのロジックを完全には理解できません。

私は次のコードを持っています:

結果は次のとおりです。

どちらが正しいですが、誰かが l 変数のロジックを確認できます。私の理解では、long1 制約により、l は x0 配列からの正の値のみに強制されるということですが、それは正しいですか? もしそうなら、なぜですか?

Mosek Web サイトの例に基づいて、取引コストの売買制約からこのロジックを採用しました。