具体问题具体分析优化工作流程
请注意
优化工具箱™提供了两种方法解决简略的优化问题。这个主题描述了具体问题具体分析的方法。Solver-Based优化问题设置描述了solver-based方法。
为了解决优化问题,执行以下步骤。
创建一个对象通过使用优化问题
optimproblem
。问题是一个容器对象,你定义一个客观的表达和约束。优化问题对象定义问题和任何边界变量中存在的问题。例如,创建一个最大化问题。
概率= optimproblem (“ObjectiveSense”,“最大化”);
通过使用创建命名变量
optimvar
。一个优化变量是一个象征性的变量用来描述目标和约束的问题。在变量定义包括任何边界。例如,创建一个名叫15-by-3二进制数组变量
“x”
。x = optimvar (“x”15日3“类型”,“整数”,下界的0,“UpperBound”1);
定义问题的目标函数对象作为一个表达式指定变量。
请注意
如果你有一个非线性函数不是由多项式,理性的表达式和小学等功能
经验值
,然后通过使用函数转换为一种优化表达式fcn2optimexpr
。看到将非线性函数优化表达式和金宝app支持操作优化变量和表达式。如果有必要,额外参数包含在您的工作空间变量表达式;看到通过额外的参数具体问题具体分析的方法。
例如,假设您有一个真正的矩阵
f
同样大小的矩阵变量x
,目标是项之和f
乘以相应的变量x
。概率。目标=总和(sum (f。* x));
定义约束的优化问题是比较命名变量或表达式的比较。
请注意
如果你有一个非线性函数不是由多项式,理性的表达式和小学等功能
经验值
,然后通过使用函数转换为一种优化表达式fcn2optimexpr
。看到将非线性函数优化表达式和金宝app支持操作优化变量和表达式。例如,假设每一行的变量的总和
x
必须是一个变量在每一列的总和必须不超过一个。onesum =总和(x, 2) = = 1;vertsum =总和(x, 1) < = 1;prob.Constraints。onesum = onesum;prob.Constraints。vertsum = vertsum;
对于非线性问题,设置一个初始点作为一个结构优化变量名称的字段。例如:
x0。x= randn(size(x)); x0.y = eye(4);%假设y是一个4×4变量
通过使用解决问题
解决
。索尔=解决(问题);%,对于非线性问题,索尔=解决(x0概率)
除了这些基本步骤,您可以检查问题定义之前使用解决问题显示
或写
。设置选项解决
通过使用optimoptions
解释说,改变默认的解算器或选择。
警告
具体问题具体分析的方法不支持复杂的值在一个目标函数,非线性等式,或非线性金宝app不等式。如果一个函数计算具有复杂的价值,即使作为一个中间值,最终结果可能是不正确的。
请注意
优化问题中的所有名称必须是唯一的。具体地说,所有的变量名称,目标函数名称和约束函数名必须是不同的。
对于一个基本的整数线性规划实例,明白了混合整数线性规划基础知识:具体问题具体分析或视频版本使用优化建模解决混合整数线性规划问题。一个非线性的例子,看到解决约束的非线性问题,具体问题具体分析。更广泛的例子,请参阅具体问题具体分析非线性优化,线性规划和整数线性规划,或二次规划和锥编程。
另请参阅
fcn2optimexpr
|optimproblem
|optimvar
|解决
|optimoptions
|显示
|写