主要内容

非线性约束使用GA.

假设您希望最小化两个变量的简单健身功能X1X2

X F X = 100. X 1 2 - X 2 2 + 1 - X 1 2

受以下非线性不等式限制和界限

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. (边界)

首先创建健身和约束函数。首先,创建一个名为的文件simple_fitness.m.如下:

功能y = simple_fitness(x)y = 100 *(x(1)^ 2  -  x(2))^ 2 +(1  -  x(1))^ 2;

遗传算法功能,GA.,假设健身功能将采用一个输入X, 在哪里X具有与问题的变量数量有多种元素。Fitness函数计算函数的值,并返回其一个返回参数中的标量值,y

然后创建一个文件,simple_constraint.m.,包含限制

功能[c,ceq] = simple_constraint(x)c = [1.5 + x(1)* x(2)+ x(1) -  x(2);......-x(1)* x(2)+ 10];CEQ = [];

GA.函数假定约束函数将采用一个输入X, 在哪里X具有与问题的变量数量有多种元素。约束函数计算所有不等式和平等约束的值并返回两个向量,CCEQ., 分别。

要最大限度地减少健身功能,您需要将功能句柄传递给健身功能作为第一个参数GA.函数,以及将变量的数量指定为第二个参数。提供下限和上限UB.分别。此外,还需要将功能句柄传递给非线性约束函数。

ObjectiventFunction = @simple_fitness;nvars = 2;%变量数量lb = [0 0];%下限UB = [1 13];%上限约束函数= @simple_constraint;RNG(1,'twister'重复性的%[x,fval] = ga(OperateFunction,nvars,......[],[],[],[],LB,UB,约束功能)
优化终止:对options.functionTolance和约束违规的平均变化小于选项.ConstraintTolerance。X = 0.8123 12.3137 FVAL = 1.3581E + 04

对于没有整数约束的问题,遗传算法求解器处理线性约束和界限地与非线性约束不同。整个优化都满足所有线性约束和界限。然而,GA.可能无法满足每一代的所有非线性约束。如果GA.收敛于解决方案,将在该解决方案中满足非线性约束。

如果有整数约束,GA.不强制执行线性约束的可行性,而是将任何线性约束违反惩罚功能添加到惩罚功能。看整数GA算法

GA.使用突变和交叉功能在每一代产生新的个人。GA.通过使用只生成可行点的突变和交叉功能来满足线性和绑定约束。例如,在以前的召唤中GA.,突变函数变形吉语不一定遵守束缚约束。因此,当有绑定或线性约束时,默认值GA.突变函数是umatationAptFeasible.。如果提供自定义突变函数,则此自定义函数必须仅生成与线性和绑定约束可行的点。所有包含的横梁函数都会生成满足线性约束和边界的点。

要查看优化的进度,请使用优化选择功能要创建选择两个绘图函数的选项。第一个绘图功能是gaplotbestf.,这绘制了每一代人口的最佳和平均得分。第二个绘图功能是Gaplotmaxconstr.,这绘制了每一代中的非线性约束的最大约束。您还可以通过使用该命令窗口显示信息来可视化算法的进度'展示'选项。

选项= Optimoptions('Ga''plotfcn',{@ gaplotbestf,@ gaplotmaxconstr},'展示''iter');

重新运行GA.求解器。

[x,fval] = ga(looptfunction,nvars,[],[],[],[],......LB,UB,约束功能,选项)
最佳MAX Stall Generation F(x)约束几代1 2520 13603.6 0 0 2 4982 13578.2 5.718E-06 0 3 7538 14033.9 0 0 4 11116 140 0 4 11116 13573.7 0 0.0009577 0优化终止:适合值的平均变化小于选项。功能不变和约束违规小于选项.ConstraintTolerance。X = 0.8122 12.3104 FVAL = 1.3574E + 04

您可以为最小化提供最小化的开始点GA.通过指定的功能initialpopulationmatrix.选项。这GA.功能将使用第一个单独的人initialpopulationmatrix.作为受约束最小化的起点。

x0 = [0.5 0.5];%开始点(行矢量)选项= Optimoptions('Ga',选项,'initialpopulationmatrix',x0);

现在,重新运行GA.求解器。

[x,fval] = ga(looptfunction,nvars,[],[],[],[],......LB,UB,约束功能,选项)
最大的MAX Stall Generation F(x)约束几代1 2520 13578.1 0.0005269 0 2 4982 13578.2 1.815E-05 0 3 8008 14031.3 0 0 4 13525 14031.3 0 0 5 17525 14054.9 0 0 5 17620 13573.5 0 0.0009986 0优化终止:平均变化在适应值的平均变化少于option.FunctionTolectance和约束违规小于选项.ConstraintTolerance。X = 0.8122 12.3103 FVAL = 1.3573E + 04

相关话题