主要内容

Varindex

ソルバーベースのインデックスへ问题変数のマッピング

说明

IDX= varindex(概率は,の线形を构造体整数としてとしてますます。prob2structを使用して概率を问题体に変换,,IDXは结果られる构造体に変数インデックスします。この问题は概率の変数対応します。

IDX= varindex(概率,,,,varnameは,varnameの要素线形インデックスを。。

すべて折りたたむ

最适化を作成し。。

x = optimvar('X',3);y = optimvar('y',3,3);prob = optimproblem('客观的',x'*y*x);

问题を体に変换。。

问题= prob2struct(prob);

すべての概率変数の问题で线形を取得し。。

idx = varindex(prob);disp(idx.x)
1 2 3
disp(idx.y)
4 5 6 7 8 9 10 11 12

yインデックスのみ取得します。

idxy = varindex(prob,'y'
idxy =1×94 5 6 7 8 9 10 11 12

このはベースのまたはソルバーベースのを使用し情报情报の大部分大部分をを取得取得するする方法を示しますます。,,问题を作成作成

x = optimvar('X',3,1,“下界”,1,“上行”,1);y = optimvar('y',3,3,“下界”,-1,“上行”,1);prob = optimproblem('客观的',x'*y*x + [2 3 4]*x);RNG默认x0.x = rand(3,1);x0.y = rand(3,3);[SOLP,FVALP,EXITFLAGP,outputp] = solve(prob,x0);
使用Fmincon解决问题。当地最低限度发现满足约束。之所以完成优化,是因为目标函数在可行的方向,最优性公差值之内不折叠,并且在约束公差的值之内满足了约束。

次に,prob2structを使用この问题ソルバーベース形式にし。。。Fminconソルバーがで勾配使用するようするには,指定目标gradientオプションを真的に设定し。

solverProb = prob2struct(prob,x0);solverprob.options = optimoptions(solverprob.options,“指定对象级”,真的);

Fminconを使用て,を解きます。

[SOL,FVALS,EXITFLAGS,输出] = Fmincon(SolverProb);
当地最低限度发现满足约束。之所以完成优化,是因为目标函数在可行的方向,最优性公差值之内不折叠,并且在约束公差的值之内满足了约束。

Fminconの解を,解决によって返さた体形式変换するには,Varindexを使用てな构造を作成します。

idx = varindex(prob);sol.x = sols(idx.x);sol.y = sols(idx.y);

Varindexが使用するyインデックスはインデックスです。ががx0.yになるように変数sol.yを形状変更ます。

sol.y = reshape(sol.y,size(x0.y));

2つの构造が完全一致しいるか确认し。。

匹配(SOL,SOLP)
ans =逻辑1

2つアプローチに同等ではないの,,Fmincon解决とは违い乘数など引数を多くから。。。

入力引数

すべて折りたたむ

最适化または方程式问题。优化问题オブジェクトまたは方程问题オブジェクトとしてします最适化问题は最佳问题を使用て作成,方程式问题はeqnproblemを使用て作成し。。

警告

ベースのは目的关数,非线形等式,または不等不等式式におけるにおける复素复素复素数値数値をししてていいませません。。关数のの计算计算计算计算复素数値数値数値数値含ま含ま含まれれれれれ结果が正确なる场合があり。。

例:prob = optimproblem;prob.Objective = obj;prob.constraints.cons1 = cons1;

例:prob = eqnproblem;prob.equations = eqs;

変数名文字またはまたはまたはとして指定します。。

例:'X'

データ::char|细绳

出力引数

すべて折りたたむ

问题変数线形构造体または整数として返されます。prob2structを使用して概率を问题体に変换,,IDXは结果られる构造体に変数インデックスします。この问题は概率の変数対応します。

  • idx = varindex(prob)を呼び出す场合返されるIDXは构造です构造体のフィールドはは概率の変数各フィールドのははられソルバーベースソルバーベースの问题変数で変数によるによるマッピングが行わ行われる线形线形线形インデックスインデックス

  • idx = varindex(prob,varname)を呼び出す场合返されるIDXは,付けたソルバーベース问题変数で変数varnameによるマッピング行わ线形インデックスのベクトル。。

详细は,问题インデックスの取得を参照しください。

バージョン履歴

R2019aで导入