主要内容

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

请注意

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

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

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

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

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

    例如,创建一个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。

    (x,2) = 1;= 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,如更改默认解算器或选项

警告

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

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

另请参阅

||||||

相关的话题