主要内容

绘制函数

绘制执行期间的优化图

您可以在求解器执行期间绘制各种进度度量。设置PlotFcn名称-值对的optimoptions,并指定求解器在每次迭代时要调用的一个或多个绘图函数。传递一个函数句柄或函数句柄的单元数组。

有各种预定义的绘图功能可用。看到PlotFcn选项说明在求解函数参考页。

您还可以使用自定义编写的情节函数。使用与输出函数相同的结构编写函数文件。有关此结构的更多信息,请参见输出函数和绘图函数语法

使用Plot函数

这个例子展示了如何使用绘图函数来查看进度fmincon“内点”算法。这个问题是从求解一个约束非线性问题,基于求解器

编写非线性目标函数和约束函数,包括它们的梯度。目标函数是罗森布罗克函数。

类型rosenbrockwithgrad
计算目标f f = 100*(x(2) -x(1) ^2)^2 + (1-x(1))^2;如果nargout > 1%梯度需要g = (-400 * (x (2) - x (1) ^ 2) * x (1) 2 * (1 - x (1));200 * (x (2) - x (1) ^ 2)];结束

将此文件保存为rosenbrockwithgrad.m

约束函数是解满足的规范(x) ^ 2 < = 1

类型unitdisk2
函数[c,ceq,gc,gceq] = unitdisk2(x) c = x(1)^2 + x(2)^2 - 1;[];If nargout > 2 gc = [2*x(1)]; / /gceq = [];结束

将此文件保存为unitdisk2.m

创建一个包含调用三个plot函数的选项结构:

选择= optimoptions (@fmincon,“算法”“内点”...“SpecifyObjectiveGradient”,真的,“SpecifyConstraintGradient”,真的,...“PlotFcn”, {@optimplotx、@optimplotfval @optimplotfirstorderopt});

创建初始点x0 = (0,0),并将其余输入设置为空([]).

x0 = (0,0);一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];

调用fmincon,包括选项。

有趣= @rosenbrockwithgrad;nonlcon = @unitdisk2;x = fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon,选项)

Figure Optimization Plot Function包含3个坐标轴。标题为“当前点”的轴1包含一个类型为bar的对象。带有标题的轴2当前功能值:0.0456748包含一个类型为line的对象。标题为一阶优化:2.16246e-08的坐标轴3包含一个类型为line的对象。

找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。
x =1×20.7864 - 0.6177

相关的话题