约束优化的使用模式搜索

此示例示出了如何以最小化的目标函数,受非线性不等式约束和界限,使用模式搜索。

约束最小化问题

对于这个问题中,目标函数最小化是2 d变量的简单函数X

simple_objective(X)=(4 - 2.1 *×(1)^ 2 + X(1)^ 4/3)* X(1)^ 2 + X(1)* X(2)+(-4 + 4 *X(2)^ 2)* X(2)^ 2;

此功能被称为“凸轮”,如在L.C.W.描述Dixon和G.P.Szego [1]。

此外,该问题有非线性约束和边界。

X(1)* X(2)+ X(1) -  X(2)+ 1.5 <= 0(非线性约束)10  -  X(1)* X(2)<= 0(非线性约束)0 <= X(1)<= 1(结合的)0 <= X(2)<= 13(结合)

代码的目标函数

创建一个名为MATLAB文件simple_objective.m包含以下代码:

类型simple_objective
函数y = simple_objective(X)%SIMPLE_OBJECTIVE为PATTERNSEARCH求解%版权所有2004 The MathWorks公司目标函数,Inc.的X1 = X(1);X2 = X(2);。Y =(。4-2.1 * X1 ^ 2 + X1 ^ 4/3)* X1 ^ 2 + X 1 * X 2 +( -  4 + 4 * X 2 ^ 2)* X2 ^ 2。;

求解器如patternsearch接受单个输入X,其中X有一样多的元素的问题的变量数。目标函数计算目标函数的标量值,并返回它在其单一输出参数ÿ

编码约束函数

创建一个名为MATLAB文件simple_constraint.m包含以下代码:

类型simple_constraint
功能并[c,CEQ] = simple_constraint(X)%SIMPLE_CONSTRAINT非线性不等式约束。%版权所有2005-2007 MathWorks公司C = [1.5 + X(1)* X(2)+ X(1) -  X(2);-x(1)* X(2)+ 10];%未非线性等式约束:CEQ = [];

约束函数计算的所有的不等式和等式约束的值并返回矢量CCEQ, 分别。的价值C表示非线性不等式约束求解器企图使小于或等于零。的价值CEQ表示非线性等式约束求解器试图使等于零。本实施例中不具有非线性等式约束,所以CEQ = []。有关详细信息,请参阅非线性约束(优化工具箱)。

尽量减少使用patternsearch

指定目标函数的函数句柄。

ObjectiveFunction = @simple_objective;

指定问题范围。

磅= [0 0];%下界UB = [1 13];%上界

指定非线性约束功能的功能句柄。

ConstraintFunction = @simple_constraint;

指定解算器的初始点。

X0 = [0.5 0.5]。% 初始点

让解决,请求最佳点X和在最佳点的函数值FVAL

[X,FVAL] = patternsearch(ObjectiveFunction,X0,[],[],[],[],LB,UB,...ConstraintFunction)
优化终止:网孔尺寸小于options.MeshTolerance和约束违反小于options.ConstraintTolerance。
X =1×20.8122 12.3122
FVAL = 9.1324e + 04

添加可视化

观察求解器的进步,指定选择两个地块功能的选项。该地块功能psplotbestf绘制在每次迭代的最佳目标函数值,和绘图功能psplotmaxconstr绘制的最大约束违反在每次迭代。在单元阵列设置这两个情节功能。此外,通过设置显示关于在命令窗口中的解算器的进度信息显示选项'ITER'

选项= optimoptions(@patternsearch,'PlotFcn'{@ psplotbestf,@ psplotmaxconstr},...'显示''ITER');

运行求解器,包括选项论据。

[X,FVAL] = patternsearch(ObjectiveFunction,X0,[],[],[],[],LB,UB,...ConstraintFunction,期权)
最大Iter项目Func键数F(x)的约束MeshSize方法0 1 0.373958 9.75 0.9086
1 18 113581 1.617e-10 0.001增加惩罚
2 148 92267 0 1E-05增加惩罚
3 374 91333.2 0 1E-07增加惩罚
4 639 91324 0 1E-09增加惩罚优化终止:筛目大小小于options.MeshTolerance和约束违反小于options.ConstraintTolerance。

X =1×20.8122 12.3122
FVAL = 9.1324e + 04

非线性约束的原因patternsearch在每次迭代解决诸多的问题。如曲线和迭代显示两者中所示,溶液方法具有几个迭代。但是,那FUNC数在迭代显示栏显示每迭代许多功能评估。两者的曲线和迭代显示表明初始点是不可行的,并且所述目标函数是在初始点低。在求解过程中,目标函数值最初增加,然后下降到其最终值。

参考

[1]迪克森,L. C.W。,和G .P。Szego(编辑)。往全球性优化2。北荷兰:Elsevier科学有限公司,阿姆斯特丹,1978年。

相关话题