基于问题的优化工作流

注意

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

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

  • 通过创建一个优化问题对象最优化问题. 问题对象是定义目标表达式和约束的容器。优化问题对象定义问题和问题变量中存在的任何边界。

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

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

    例如,创建一个名为“x”.

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

    注意

    如果有一个非线性函数,它不是由多项式、有理表达式和初等函数(如经验,然后通过使用函数转换为优化表达fcn2optimexpr.看到将非线性函数转换为优化表达式金宝app支持对优化变量和表达式的操作.

    例如,假设有一个实矩阵f型与变量矩阵大小相同,目标是f型乘以相应的变量.

    prob.Objective=和(和(f.*x));
  • 将优化问题的约束定义为命名变量中的比较或表达式的比较。

    注意

    如果有一个非线性函数,它不是由多项式、有理表达式和初等函数(如经验,然后通过使用函数转换为优化表达fcn2optimexpr.看到将非线性函数转换为优化表达式金宝app支持对优化变量和表达式的操作.

    例如,假设必须是1,并且每列中的变量之和不得超过1。

    onesum=sum(x,2)==1;vertsum=sum(x,1)<=1;prob.Constraints.onesum=onesum;prob.Constraints.vertsum=vertsum;
  • 对于非线性问题,设置一个初始点作为结构,其字段为优化变量名。例如:

    x0.x=randn(尺寸(x));x0.y=eye(4);%假设y是4乘4个可变
  • 利用解决.

    溶胶=解决(概率);%或者,对于非线性问题,sol=求解(prob,x0)

除了这些基本步骤之外,您还可以在使用显示要么.对于设置选项解决通过使用最佳选项,如中所述更改默认求解器或选项.

警告

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

有关基本的混合整数线性规划示例,请参见混合整数线性规划基础:基于问题或视频版本用优化模型求解混合整数线性规划问题. 有关非线性示例,请参见求解约束非线性问题,基于问题.有关更广泛的示例,请参阅基于问题的非线性优化,线性规划和混合整数规划,或二次规划.

另见

||||||

相关话题