绘制函数
优化执行期间
你可以画出各种措施的进展在解算器的执行。设置PlotFcn
名称-值对的optimoptions
,并指定一个或多个绘图函数在每个迭代解算器调用。通过一个函数处理或处理单元阵列的功能。
有各种各样的预定义的情节功能可用。看到PlotFcn
在求解函数参考页面选项描述。
另外您还可以使用一个函数。编写一个函数文件使用相同的结构作为输出功能。有关这种结构的更多信息,请参阅输出函数和情节函数的语法。
使用一块功能
这个例子展示了如何使用情节功能视图的进展fmincon
“内点”
算法。问题是来自使用优化约束非线性问题编辑任务或解决生活。
写的非线性目标和约束函数,包括他们的梯度。目标函数。函数。
类型rosenbrockwithgrad
函数(f, g) = rosenbrockwithgrad f (x) %计算目标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,测查,gc, gceq] = unitdisk2 c (x) = x (1) ^ 2 + x (2) ^ 2 - 1;测查= [];如果nargout > 2 gc = (2 * x (1), 2 * x (2)];gceq = [];结束
保存这个文件unitdisk2.m
。
解算器,包括创建选项调用三个情节功能。
选择= 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,选项)
局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。
x =1×20.7864 - 0.6177