主要内容

创建问题结构

关于问题结构

使用全球研究多部分解决方案,您必须首先创建问题结构。建议使用以下方法创建问题结构:使用创建优化问题作用。您可以手动创建结构,但这样做容易出错。

使用创建优化问题作用

按照以下步骤使用创建问题结构创建优化问题作用

  1. 将目标函数定义为文件或匿名函数。有关详细信息,请参阅计算目标函数.如果你的解算器是最小二乘拟合解非线性最小二乘问题,确保目标函数返回向量,而不是标量。

  2. 如果相关,请创建约束,例如边界和非线性约束函数。有关详细信息,请参阅写约束.

  3. 创建起点。例如,创建三维随机起点xstart:

    xstart=randn(3,1);
  4. (可选)使用创建选项最佳选择例如

    选项=最佳选项(@fmincon,'Algorithm','interior-point');
  5. 进来

    problem=createoptim问题(解算器,

    哪里解算器是本地解算器的名称:

    • 对于全球研究:“fmincon”

    • 对于多部分这些选择包括:

      • “fmincon”

      • “fminunc”

      • “lsqcurvefit”

      • “lsqnonlin”

      有关选择的帮助,请参阅优化决策表.

  6. 使用“x0”参数。如果初始点为xstart,而您的解算器是铁铬镍铁合金,您的条目现在是

    problem=createOptimProblem('fmincon','x0',xstart,
  7. 在中包含目标函数的函数句柄客观的:

    problem=createOptimProblem('fmincon','x0',xstart,'目标'@奥布吉芬,
  8. 设置边界和其他适用的约束。

    限制 名称
    下限 “磅”
    上界 “ub”
    矩阵艾奈克关于线性不等式Aineq x比内克 “Aineq”
    矢量比内克关于线性不等式Aineq x比内克 “比内克”
    矩阵Aeq关于线性等式Aeq x=贝基 “Aeq”
    矢量贝基关于线性等式Aeq x=贝基 “beq”
    非线性约束函数 “非LCON”
  9. 如果使用最小二乘拟合局部解算器,包括输入数据和响应数据的向量,命名为“扩展数据”“伊达塔”分别地

  10. 最佳实践:通过在结构上运行解算器来验证问题结构。例如,如果本地解算器为铁铬镍铁合金:

    [x,fval,eflag,output]=fmincon(问题);

示例:使用创建问题结构创建优化问题

此示例将函数从运行解算器,受限制x1.+ 2x2.≥ 4.. 目标是

六分=4x2.– 2.1x4.+x6./3 +xy– 4Y2.+ 4Y4.. (1)

使用内点算法铁铬镍铁合金,并将起点设置为[2;3].

  1. 为目标函数编写函数句柄。

    六分钟=@(x)(4*x(1)^2-2.1*x(1)^4+x(1)^6/3…+x(1)*x(2)-4*x(2)^2+4*x(2)^4);
  2. 编写线性约束矩阵。将约束更改为“小于”形式:

    A=[-1,-2];b=-4;
  3. 创建本地选项以使用内点算法:

    opts=optimoptions(@fmincon,'Algorithm','interior-point');
  4. 使用创建问题结构创建优化问题:

    problem=createOptimProblem('fmincon',…'x0',[2;3],'objective',sixmin,'Aineq',A,'bineq',b,'options',opts)
  5. 由此产生的结构:

    问题=带字段的结构:目标:@(x)(4*x(1)^2-2.1*x(1)^4+x(1)^6/3+x(1)*x(2)-4*x(2)^2+4*x(2)^4)x0:[2x1双]Aineq:[-1-2]bineq:[]4 Aeq:[]beq:[]lb:[]ub:[]非LCON:[]解算器:“fmincon”选项:[1x1最优选项.fmincon]
  6. 最佳实践:通过在结构上运行解算器来验证问题结构:

    [x,fval,eflag,output]=fmincon(问题);

相关话题