请注意
最优化工具箱™提供了两种解决单目标优化问题的方法。本主题描述基于问题的方法。基于求解器的优化问题设置描述基于求解器的方法。
要解决优化问题,请执行以下步骤。
通过使用创建优化问题对象optimproblem
.问题对象是一个容器,您可以在其中定义目标表达式和约束。优化问题对象定义了问题和存在于问题变量中的任何边界。
例如,创建最大化问题。
prob = OptimProblem(“ObjectiveSense”,“最大化”);
使用优越的
.优化变量是用来描述问题目标和约束条件的符号变量。在变量定义中包含任何边界。
例如,创建一个名为的15×3数组二进制变量“x”
.
x = optimvar (“x”,15,3,“类型”,'整数',下界的,0,“UpperBound”1);
将问题对象中的目标函数定义为命名变量中的表达式。
请注意
如果你有一个非线性函数,它不是由多项式、有理表达式和初等函数组成的经验值
,然后通过使用将函数转换为优化表达式FCN2Optimexpr.
.看将非线性函数转换为优化表达式和金宝app支持优化变量和表达式的操作.
如果有必要,在表达式中包含额外的参数作为工作区变量;看到在基于问题的方法中传递额外参数.
例如,假设你有一个实矩阵f
与变量矩阵的大小相同x
,目标是所有条目的总和f
乘以相应的变量x
.
概率。目标=总和(sum (f。* x));
将优化问题的约束定义为命名变量的比较或表达式的比较。
请注意
如果你有一个非线性函数,它不是由多项式、有理表达式和初等函数组成的经验值
,然后通过使用将函数转换为优化表达式FCN2Optimexpr.
.看将非线性函数转换为优化表达式和金宝app支持优化变量和表达式的操作.
例如,假设每一行变量的和x
必须为1,且每一列中变量的和不能大于1。
one = sum(x,2) == 1;Vertsum = sum(x,1) <= 1;prob.Constraints.onesum = onesum;prob.Constraints.vertsum = vertsum;
对于非线性问题,设初始点为一个结构,其字段为优化变量名。例如:
x0。x= randn(size(x)); x0.y = eye(4);%假设y是一个4×4变量
用实际行动解决问题解决
.
sol =解决(prob);或者,对于非线性问题,索尔=解决(x0概率)
除了这些基本步骤外,您还可以在解决问题之前使用显示
要么写
.设置选项解决
通过使用optimoptions
,如更改默认求解器或选项.
警告
基于问题的方法不支持目标函数、非线性等式或非线性不等式中的复值。金宝app如果函数计算具有复值,即使是中间值,最终结果也可能是不正确的。
对于基本的混合整数线性编程示例,请参阅混合整数线性规划基础:基于问题或视频版本求解一个混合整数线性规划问题的优化建模.有关非线性的例子,请参见基于问题的约束非线性问题的求解.对于更广泛的例子,请参阅具体问题具体分析非线性优化,线性编程和混合整数线性编程,或二次规划与锥规划.
FCN2Optimexpr.
|optimoptions
|optimproblem
|优越的
|显示
|解决
|写