GA.
假设您希望最小化两个变量的简单健身功能X1和X2那
受以下非线性不等式限制和界限
首先创建健身和约束函数。首先,创建一个名为的文件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
具有与问题的变量数量有多种元素。约束函数计算所有不等式和平等约束的值并返回两个向量,C
和CEQ.
, 分别。
要最大限度地减少健身功能,您需要将功能句柄传递给健身功能作为第一个参数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