0

3D 行列Atn x n x nvarnvar変数がありますy1...y25。変数を cvx に簡単にフィードできました。

cvx_begin sdp;
    variable A(2*nbus,2*nbus) symmetric;
    variable y(1,nvar);
    maximize sum(y*Mfun);
    A ==  subs(At,yt,y(1,nvar));

ただし、最後の行の等号により、次のエラーが発生しています。

Error using sym/subs>normalize (line 197)
Substitution expression X must be a symbolic, cell, or numeric array.
Error in sym/subs>mupadsubs (line 137)
[X2,Y2,symX,symY] = normalize(X,Y); %#ok
Error in sym/subs (line 125)
    G = mupadsubs(F,X,Y);

私はその平等をいくつかの異なる方法で設定しようとしました:

最初に作成したのと同じforループを使用します ( double の行列を使用):AtCfun

A == for k = 1:nvar
    At = At + yt(k)*Cfun(:,:,k);
end

このエラーが発生します:

Error: File: proj.m Line: 124 Column: 11
Illegal use of reserved keyword "for".

うまくいくとは思っていませんでしたが、試してみる価値はあると思いました。

また、cvx 内で行列を作成するために使用しようとしbsxfunましたが、bsxfun がシンボリックを処理できるとは思いません。repmat私が今調べている「bsxfun」の代替です(そう言われました)。

この方法で問題を解決しようとしている理由は、cvx を使用して任意の数/組み合わせのバスの最適な電力の流れを解決できるルーチンを作成することです。毎回個別に変数を作成する必要はありません。

4

1 に答える 1