帮助中心帮助中心
将问题变量映射到基于求解器的变量索引
Idx = varindex(问题)
Idx = varindex(prob,varname)
例子
idx= varindex (概率)以结构或整数向量的形式返回问题变量的线性索引。如果你转换概率到问题结构中使用prob2struct,idx给出结果问题结构中对应于中的变量的变量索引概率.
idx= varindex (概率)
idx
概率
prob2struct
idx= varindex (概率,varname)的元素的线性下标varname.
idx= varindex (概率,varname)
varname
全部折叠
创建一个优化问题。
X = optimvar(“x”3);Y = optimvar(“y”3、3);问题=优化问题(“目标”, x ' * y * x);
将问题转化为结构。
Problem = prob2struct(probb);
中的线性指标问题所有的概率变量。
问题
Idx = varindex(prob);disp (idx.x)
1 2 3
disp (idx.y)
4 5 6 7 8 9 10 11 12
获得y指数。
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);问题=优化问题(“目标”,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选项真正的.
fmincon
SpecifyObjectiveGradient
真正的
Solverprob = prob2struct(prob,x0);solverprob。选项= optimoptions(solverprop . Options,“SpecifyObjectiveGradient”,真正的);
解决问题的方法fmincon.
[sols,fvals,exitflags,outputs] = fmincon(solverprob);
找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。
要转换fmincon返回的结构形式的解解决,创建适当的结构使用varindex.
解决
varindex
Idx = varindex(prob);Sol.x = sols(idx.x);Sol.y = sols(idx.y);
的y指数,varindexUses是一个线性索引。重塑变量sol.y有…的大小x0.y.
sol.y
x0.y
Sol.y =重塑(Sol.y,size(x .y));
检查两个解的结构是否相同。
solp isequal(索尔)
ans =逻辑1
这两种方法不完全相同的原因是fmincon可以返回更多的参数,如拉格朗日乘数,而解决不能。
OptimizationProblem
EquationProblem
优化问题或方程问题,指定为OptimizationProblem对象或EquationProblem对象。通过使用创建一个优化问题optimproblem;用。创建一个方程问题eqnproblem.
optimproblem
eqnproblem
警告
基于问题的方法不支持目标函数、非线性等式或非线性不等式中的复值。金宝app如果函数计算具有复杂的值,即使是作为中间值,最终结果也可能是不正确的。
例子:Prob =优化问题;概率。目标= obj;prob.Constraints。con1 = con1;
Prob =优化问题;概率。目标= obj;prob.Constraints。con1 = con1;
例子:Prob = eqnproblem;概率。方程= eqs;
Prob = eqnproblem;概率。方程= eqs;
变量名,指定为字符向量或字符串。
例子:“x”
“x”
数据类型:字符|字符串
字符
字符串
问题变量的线性索引,作为结构或整数向量返回。如果你转换概率到问题结构中使用prob2struct,idx给出结果问题结构中对应于中的变量的变量索引概率.
当你打电话时Idx = varindex(问题),归来者idx是一个结构。结构的字段名是中的变量名概率.每个字段的值是线性索引的整数向量,变量在相关的基于求解器的问题变量中映射到这些线性索引。
当你打电话时Idx = varindex(prob,varname),归来者idx向量的线性指标是哪个变量varname映射到相关的基于求解器的问题变量中。
看到获取问题指数.
在R2019a中引入
OptimizationProblem|prob2struct|EquationProblem
您有这个示例的修改版本。要使用编辑打开此示例吗?
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站,在可用的地方获得翻译的内容,并查看当地的活动和优惠。根据您所在的位置,我们建议您选择:.
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
联系当地办事处