主要内容

varindex

将问题变量映射到基于求解器的变量索引

描述

例子

idx= varindex (概率以结构或整数向量的形式返回问题变量的线性索引。如果你把概率用。来构造一个问题结构prob2structidx给出结果问题结构中对应于中的变量的变量索引概率

例子

idx= varindex (概率varname的元素的线性下标varname

例子

全部折叠

创建一个优化问题。

x = optimvar (“x”3);y = optimvar (“y”3、3);概率= optimproblem (“目标”, x ' * y * x);

将问题转化为结构。

问题= prob2struct(概率);

中的线性指标问题所有的概率变量。

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

获得y指数。

idxy = varindex(概率,“y”
idxy =1×94 5 6 7 8 9 10 11 12

这个例子展示了如何使用基于问题的方法或基于求解器的方法来获取大部分相同的信息。首先创建一个问题,然后用基于问题的方法解决它。

x = optimvar (“x”3, 1,下界的, 1“UpperBound”1);y = optimvar (“y”3, 3,下界的, 1“UpperBound”1);概率= 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求解器在求解问题时采用自动梯度设置SpecifyObjectiveGradient选项真正的

solverprob = prob2struct(概率,x0);solverprob。选择= optimoptions (solverprob.options,“SpecifyObjectiveGradient”,真正的);

fmincon

[溶胶,fvals exitflags、输出]= fmincon (solverprob);
找到了满足约束条件的局部极小值。由于目标函数在可行方向上不减少,优化完成,在最优性公差的值内,约束满足在约束公差的值内。

fmincon返回的结构形式的解解决,创建适当的结构使用varindex

idx = varindex(概率);sol.x =溶胶(idx.x);sol.y =溶胶(idx.y);

y指数,varindexUses是一个线性索引。重塑变量sol.y有…的大小x0.y

sol.y =重塑(sol.y、大小(x0.y));

检查两个解的结构是否相同。

solp isequal(索尔)
ans =逻辑1

这两种方法不完全相同的原因是fmincon可以返回更多的参数,如拉格朗日乘子,而解决不能。

输入参数

全部折叠

优化问题或方程问题,指定为OptimizationProblem对象或一个EquationProblem对象。创建一个优化问题,使用optimproblem;用。创建一个方程问题eqnproblem

警告

基于问题的方法不支持目标函数、非线性等式或非线性不等式中的复值。如果函数计算具有复杂值,即使是作为中间值,最终结果也可能是不正确的。

例子:概率= optimproblem;概率。目标= obj;prob.Constraints。cons1 = cons1;

例子:概率= eqnproblem;概率。公式=方程式;

变量名,指定为字符向量或字符串。

例子:“x”

数据类型:字符|字符串

输出参数

全部折叠

问题变量的线性索引,作为结构或整数向量返回。如果你把概率用。来构造一个问题结构prob2structidx给出结果问题结构中对应于中的变量的变量索引概率

  • 当你打电话idx = varindex(概率),返回idx是一个结构。结构的字段名是中的变量名概率.每个字段的值是线性索引的整数向量,变量在关联的基于求解器的问题变量中映射到这些线性索引。

  • 当你打电话varname idx = varindex(概率),返回idx线性指标的向量是哪个变量的varname映射到关联的基于求解器的问题变量中。

看到获得问题的指标

版本历史

介绍了R2019a

Baidu
map