主要内容

创建问题结构

关于问题结构

用来Globalsearch.要么多层的求解器,您必须首先创建一个问题结构。建议创建问题结构的方法是使用createOptimproblem.功能。您可以手动创建结构,但这样做就会出错。

使用createOptimproblem.功能

按照以下步骤使用此步骤创建问题结构createOptimproblem.功能。

  1. 将您的目标函数定义为文件或匿名函数。有关详细信息,请参阅计算目标函数。如果你的求解器是lsqcurvefit.要么lsqnonlin.,确保目标函数返回向量,而不是标量。

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

  3. 创建一个起点。例如,要创建三维随机起始点XSTART.

    xstart = Randn(3,1);
  4. (可选)使用优化选择。例如,

    选项= Optimoptions(@ Fmincon,'算法','内部点');
  5. 进入

    问题= createOptimproblem(求解器

    在哪里求解器是您当地的求解器的名称:

    • 为了Globalsearch.'粉丝'

    • 为了多层的选择是:

      • '粉丝'

      • 'fminunc'

      • 'lsqcurvefit'

      • 'lsqnonlin'

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

  6. 使用初始点使用'x0'范围。如果你的初始点是XSTART.,你的解决者是粉刺,你的条目现在

    问题= createOptimprobrom('fmincon','x0',xstart,
  7. 包括用于您的目标函数的功能手柄客观的

    问题= createOptimprobrom('fmincon','x0',xstart,...'目标',@objfun.
  8. 设置界限和其他约束。

    约束 名称
    下限 '磅'
    上限 'UB'
    矩阵Aineq.用于线性不平等Aineq X.≤.Bineq. 'Aineq'
    向量Bineq.用于线性不平等Aineq X.≤.Bineq. 'bineq'
    矩阵AEQ.用于线性平衡AEQ X.=贝卡 'aeq'
    向量贝卡用于线性平衡AEQ X.=贝卡 'beq'
    非线性约束函数 'nonlcon'
  9. 如果使用这件lsqcurvefit.本地求解器,包括输入数据的向量和响应数据,命名'xdata''ydata'分别。

  10. 最佳实践:通过在结构上运行求解器来验证问题结构。例如,如果您的本地求解器是粉刺

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

示例:创建问题结构createOptimproblem.

此示例最小化了功能运行求解器,受约束X1+ 2X2≥4。目标是

六分钟= 4.X2- 2.1X4.+X6./ 3 +XY.- 4.y2+ 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,'算法','内部点');
  4. 创建问题结构createOptimproblem.

    问题= createOptimproblus('fmincon',...'x0',[2; 3],'目标',sixmin,...'Aineq',a,'bineq',b,'选项',选择)
  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 double] Aineq: [-1 -2] bineq: -4 Aeq: [] beq: [] lb: [] ub: [] nonlcon: [] solver: 'fmincon' options: [1x1 optim.options.Fmincon]
  6. 最佳实践:通过在结构上运行求解器来验证问题结构:

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

相关话题