主要内容

具体问题具体分析优化工作流程

请注意

最优化工具箱™提供了两种解决单目标优化问题的方法。本主题描述基于问题的方法。基于求解器的优化问题设置描述基于求解器的方法。

要解决优化问题,请执行以下步骤。

  • 使用。创建一个优化问题对象optimproblem.问题对象是一个容器,您可以在其中定义目标表达式和约束。优化问题对象定义了问题和存在于问题变量中的任何边界。

    例如,创建一个最大化问题。

    概率= optimproblem (“ObjectiveSense”“最大化”);
  • 使用optimvar.优化变量是用来描述问题目标和约束条件的符号变量。在变量定义中包含任何边界。

    例如,创建一个15乘3的二进制变量数组“x”

    x = optimvar (“x”15日3“类型”“整数”下界的0,“UpperBound”1);
  • 将问题对象中的目标函数定义为命名变量中的表达式。

    请注意

    如果你有一个非线性函数,它不是由多项式、有理表达式和初等函数组成的经验值,然后使用以下命令将函数转换为优化表达式fcn2optimexpr.看到将非线性函数转换为优化表达式万博1manbetx支持优化变量和表达式的操作

    如果有必要,在表达式中包含额外的参数作为工作区变量;看到在基于问题的方法中传递额外参数

    例如,假设你有一个实矩阵f与变量矩阵的大小相同x,目标是所有条目的总和f乘以相应的变量x

    概率。目标=总和(sum (f。* x));
  • 将优化问题的约束定义为命名变量的比较或表达式的比较。

    请注意

    如果你有一个非线性函数,它不是由多项式、有理表达式和初等函数组成的经验值,然后使用以下命令将函数转换为优化表达式fcn2optimexpr.看到将非线性函数转换为优化表达式万博1manbetx支持优化变量和表达式的操作

    例如,假设每一行变量的和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的变量
  • 用实际行动解决问题解决

    索尔=解决(问题);或者,对于非线性问题,索尔=解决(x0概率)

除了这些基本步骤外,您还可以在解决问题之前使用显示.设置选项解决通过使用optimoptions,如更改默认解算器或选项

警告

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

关于一个基本的混合整数线性规划的例子,见混合整数线性规划基础:基于问题或者视频版本求解一个混合整数线性规划问题的优化建模.有关非线性的例子,请参见基于问题的约束非线性问题的求解.有关更广泛的示例,请参见具体问题具体分析非线性优化线性规划与混合整数线性规划,或二次规划与锥规划

另请参阅

||||||

相关的话题