問題タブ [cvx]
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.
matlab - CVX パッケージのトレース
CVX (MATLAB)コードでトレースを使用しています。正常に動作する場合もありますが、エラーが表示される場合もあります。エラーメッセージは次のとおりです-
「trace」は、以前は関数またはコマンドとして使用されていたようで、ここでの変数名としての使用と競合していました。このエラーの考えられる原因は、変数を初期化するのを忘れたか、load または eval を使用して暗黙的に初期化したことです。
CVXのウェブサイトで検索したところ、これが見つかりました-
trace(Z)は、対角線に沿った要素の曲率が同じ場合にのみ有効です。
私はそれを理解できませんでした。寛大な提案をお待ちしております。
問題を明確にするために、以下の MATLAB コードの一部を抜粋します。
正常に動作しているプログラム -
エラーが発生しているプログラム-
optimization - 多肢選択式多次元ナップザックを解く
私は、複数選択の多次元ナップザック問題のいくつかの (比較的簡単な) インスタンスを解決しようとしています (グループごとに 1 つのアイテムのみを取得できるアイテムのグループがあり、アイテムの重量はナップザックと同様に多次元です)容量)。処方と解決策に関して 2 つの質問があります。
- 2 つのグループのアイテム数が異なる場合、アイテム数の少ないグループに、利益がゼロで重み = 容量のアイテムを入れて、問題を行列形式で表現することはできますか? これはソリューションに影響しますか? 具体的には、最適化プログラムがあると仮定します。最初のグループ (項目セット) には 3 つの候補項目があり、2 番目のグループには 2 つの項目 (3 つとは異なる) があります。つまり、これらは次の形式を持ちます。
最大化 (x_ij を超える) {v_11 x_11 + v_12 x_12 + v_13 x_13 +
{w^i_11 x_11 + w^i_12 x_12 + w^i_13 x_13 + w^i_21 x_21 + w^i_22 x_22 <= W^i, i=1,2 に従う
このシナリオでは、値 v_23 = 0 および w^1_23 = W^1、w^2_23 = W^2 の人為的なアイテム x_23 を追加して、完全な製品 v_ij x_ij (i=1,2 j=1,2 ,3)?
- (1) が可能であるとすると、cvx などのオープンソースの最適化パッケージを使用してインスタンスを解決しようとした人はいますか? 私は cplex について知っていますが、学問以外の人が入手するのは難しく、GLPK が変数のグループをサポートするかどうかはわかりません。
matlab - cvx/mtimes の使用エラー (41 行目) 内部行列の次元が一致する必要があります。cvx/mrdivide のエラー (15 行目) z = mtimes( x, y, 'rdivide' );
Matlab の cvx パッケージで幾何学的プログラミングの問題を解決しようとしています。目的関数は最大化ですが、その中に最小関数を定義する必要があります。コードを実行しようとすると、このエラーが発生しました
cvx/mtimes の使用エラー (41 行目) 内部行列の次元が一致する必要があります。
cvx/mrdivide のエラー (15 行目) z = mtimes( x, y, 'rdivide' );
コードは次のとおりです。
以前の問題は解決しましたが、別のエラーが発生し、なぜそれが発生するのか、解決方法がわかりません。エラーは次のとおりです。
規則正しい凸プログラミング エラー: 操作を実行できません: {log-convex} .* {log-concave}
コードの最後の行に属しています。誰でもこの問題に向かって私を助けることができますか?
matlab - MATLAB 2015 b への cvx のインストール
MATLAB 2015b に cvx をインストールします。Matlab cvx error with cvx_begin で指定された手順に従いました。ただし、次のエラーが表示されます
cvx_setup
CVX: Disciplined Convex Programming のためのソフトウェア (c)2014 CVX Research
バージョン 2.1、ビルド 1110 (66e9a9c) 2015 年 6 月 10 日水曜日 21:43:38
インストール情報: パス: C:\cvx MATLAB バージョン: 8.6 (R2015b) OS: Windows 7 x86 バージョン 6.1 Java バージョン: 1.7.0_60 CVX ディレクトリの内容を確認中: 不足しているファイルはありません。
設定: 見つかりません。デフォルトがロードされました。
CVX パスの設定...完了。更新されたパスを保存しています...予期しないエラー: ----------------------------------------- ---------- CD の使用エラー C:\Users\NIT2\AppData\Local\Temp に CD を作成できません (名前が存在しないか、ディレクトリではありません)。tempdir のエラー (30 行目) curr_dir = cd(tmp_dir); tempname のエラー (17 行目) dirname = tempdir; savepath>iFopenTempLocation のエラー (274 行目) name = tempname; savepath のエラー (158 行目) [ fid, tempfilename ] = iFopenTempLocation( ); cvx_setup のエラー (38 行目) stat = savepath; -------------------------------------------------- ---------------- このエラーをサポートに報告し、サポート リクエストに CVX_SETUP の出力全体を含めてください。-------------------------------------------------- --------------------------でこちら
matlab - MATLAB のしきい値内の最小二乗最小化
MATLABのcvxスイートは、以下の (一見問題のない) 最適化問題を解決できますが、私が扱っている大規模な完全な行列の場合はかなり遅くなります。これは、cvx を使用するのはやり過ぎであり、問題には実際に解析的な解決策があるか、組み込みの MATLAB 関数をうまく使用することでより迅速に処理できるためであると考えています。
背景:と の両方が最小二乗問題x1=A\b
を解決することはよく知られています。x2=pinv(A)*b
という違いがありnorm(x2)<=norm(x1)
ます。実際、x2
は問題の最小ノルム解norm(x2)<=norm(x)
であるため、考えられるすべての解についてx
.
D=norm(A*x2-b)
、(同等のD=norm(A*x1-b)
)を定義するとx2
、問題が解決します
問題:次の解決策を見つけたい:
つまり、私はnorm(A*x-b)
できるだけ小さくする必要はなく、ある程度の許容範囲内である. の範囲内になる最小ノルム解x
が必要です。A*x
D+threshold
b
この問題に対する分析的な解決策 (従来の最小二乗問題で疑似逆行列を使用するようなもの) を Web 上または手動で見つけることができませんでした。「非線形制約のある最小二乗法」や「しきい値のある最小二乗法」などを検索してきました。
どんな洞察も大歓迎ですが、私の本当の質問は次のとおりだと思います: MATLABでこの「しきい値付き」最小二乗問題を解決する最速の方法は何ですか?