GA.
优化GA.
当某些变量是整数值时,可以解决问题。给Intcon.
,一个矢量X整数类型的组件:
[x, fval exitflag] = ga(据nvar fitnessfcn, A, b ,[],[],...磅,乌兰巴托,nonlcon IntCon选项)
Intcon.
是包含含有的正整数的矢量X整数值的组件。例如,如果你想限制x(2)
和x(10)
是整数,设置Intcon.
至[2,10]
.
这代理人孔
求解器也接受整数约束。
笔记
限制存在于问题的类型上GA.
可以用整数变量来解决。特别是,GA.
当存在整数变量时,不接受任何平等约束。有关详细信息,请参阅整数GA求解器的特征.
小费
GA.
当您为每个时提供较低和上限时,最好解决整数问题X成分。
此示例显示了如何查找最少的Rastrigin的函数受限制所以第一个组件X是一个整数。组件的X进一步限制在该地区 .
为您的问题设置界限
lb = [5 * pi,-20 * pi];UB = [20 * pi,-4 * pi];
设置一个绘图功能,以便您可以查看GA的进度
opts = Optimoptions('ga'那'plotfcn',@ gaplotbestf);
呼叫X(1)具有整数值的GA求解器
RNG(1,'twister')重复性的%Intcon = 1;[x,fval,ExitFlag] = Ga(@ rastriginsfcn,2,[],[],[],[],......LB,UB,[],INTCON,OPTS)
优化终止:惩罚的平均变化比options.FunctionTolectance和约束违规小于选项.ConstraintTolerance。
X =1×216.0000 -12.9325.
fval = 424.1355.
EXITFLAG = 1
GA会迅速收敛到解决方案。
对问题的类型有一些限制GA.
可以解决当你包含整数约束:
没有线性平等约束。你必须有AEQ = []
和说真的= []
.对于可能的解决方法,请参阅没有平等约束.
没有非线性平等约束。任何非线性约束函数必须返回[]
对于非线性平等约束。对于可能的解决方法,请参阅示例:具有非线性平等约束的整数编程.
只有双重传感器
人口类型。
没有自定义创建功能(Creationfcn.
选项),交叉功能(Crossoverfcn.
选项),突变函数(umtationfcn.
选项)或初始分数(InitialScoreMatrix.
选项)。如果您提供其中的任何一个,GA.
覆盖他们的设置。
GA.
仅使用二进制锦标赛选择功能(选择汇总
选项),并覆盖任何其他设置。
没有混合函数。GA.
覆盖任何设置Hybridfcn.
选项。
GA.
忽略了帕撑针织品
那DistanceMeasureFcn
那initialPenalty.
, 和PenaltyFactor
选项。
所列限制主要是自然的,而不是任意。例如:
不存在支持整数约束的混合函数。万博1manbetx所以GA.
当存在整数约束时,不使用混合函数。
要获得整数变量,GA.
使用特殊的创建,交叉和突变函数。
您不能在同一问题中使用平等约束和整数约束。您可以通过包括每个线性平等约束的两个不等式约束来尝试解决此限制。例如,尝试包含约束
3.X1- 2X2= 5,
创建两个不等式约束:
3.X1- 2X2≤5.
3.X1- 2X2≥5。
在表单中编写这些约束x
≤.B.
,乘以第二个不平等-1
:
-3X1+ 2X2≤-5。
您可以尝试使用平等约束一种
=[3,-2; -3,2]
和B.
=[5; -5]
.
请注意,此过程可能会失败;GA.
难以同时整数和平等约束。
示例:具有非线性平等约束的整数编程。这个例子试图找到Ackley函数的最小值(包括在你的软件中)在五个维度的这些约束:
x(1)
那x(3)
, 和x(5)
是整数。
norm(x)= 4
.
Ackley功能很难最小化。添加整数和平等约束会增加难度。
包括非线性平等约束,给予小的耐受性托
允许规范X
在...之内托
的4.
.没有容差,非线性等式约束永远不满足,求解器不知道何时有可行解。
写表达式norm(x)= 4
作为两个“小于零”不等式:
常规(x) - 4
≤.0.
- (常规(x) - 4)
≤.0.
.
允许在不等式中进行小的宽容:
常规(x) - 4 - tol
≤.0.
- (符号(x) - 4) - 托
≤.0.
.
编写一个非线性不等式约束函数,实现这些不等式:
功能[c,ceq] = eqcon(x)ceq = [];rad = 4;tol = 1e-3;confcnval = norm(x) - rad;c = [confcnval - tol; -confcnval - tol];
设置选项:
maxstallgenerations = 50.
- 允许求解器尝试一段时间。
functiontolerance = 1e-10
- 指定比平时更严格的停止标准。
maxgenerations = 300
- 允许更多的生成默认。
plotfcn = @gaplotbestfun.
- 观察优化。
opts = Optimoptions('ga'那'maxstallgenerations',50,'functiontolerance',1E-10,......'maxgenerations'300,'plotfcn',@ gaplotbestfun);
设置下限和上限以帮助求解器:
nvar = 5;LB = -5 * =(1,NVAR);UB = 5 *那些(1,NVAR);
解决问题:
RNG(0,'twister')重复性的%[,fval,ExitFlag] = ga(@ ackleyfcn,nvar,[],[],[],[],......LB,UB,@ EQCON,[1 3 5],选择);
优化终止:平均数改变在这点球健康价值较少的比options.FunctionTolerance.和约束违反是较少的比options.ConstraintTolerance。
检查解决方案:
X,FVAL,EXITFLAG,NORM(x)x = 0 -1.7367 -3.0000 -0.0000 -2.0000 FVAL = 5.2303 EXITFLAG = 1 ANS = 4.0020
奇怪的X
组件是整数,如指定。规范X
是4.
,到给定的相对容忍度1E-3
.
尽管存在正退出标志,但解决方案不是全球最佳。再次运行问题并检查解决方案:
opts = Optimoptions('ga',选择,“显示”那'离开');[x2,fval2,exitflag2] = ga(@ ackleyfcn,nvar,[],[],[],[],......LB,UB,@ EQCON,[1 3 5],选择);
检查第二种解决方案:
X2,FVAL2,EXITFLAG2,NOM(X2)
X2 = -2.0000 2.8930 0 -1.9095 0 FVAL2 = 4.5520 ExitFlag2 = 0 ANS = 4.0020
第二次运行提供更好的解决方案(较低的健身功能值)。再次,奇怪的X
组件是整数,常态X2
是4.
,到给定的相对容忍度1E-3
.
请注意,此过程可能会失败;GA.
难以同时整数和平等约束。
GA.
使用GA.
最有效地对整数问题,请遵循以下准则。
尽可能紧密地将每个组件绑定。这种做法给出了GA.
最小的搜索空间,启用GA.
最有效地搜索。
如果不能绑定组件,则指定适当的初始范围。默认情况下,GA.
创建一个带距离的初始群体[-1e4,1e4]
对于每个组件。更小或更大的初始范围可以在默认值不合适时提供更好的结果。要更改初始范围,请使用initialpopulationrange.
选项。
如果您有超过10个变量,请使用使用的群体大小大于默认值人群化
选项。六个或更多变量的默认值为200。对于庞大的人口大小:
GA.
可能需要很长时间才能收敛。如果您达到最大数量数(退出标志0.
),增加价值最大
选项。
降低突变率。为此,提高价值交叉零件
选项从其默认值0.8
至0.9
或更高。
增加价值EliteCount.
选项从其默认值0.05 *人口化
至0.1 *人口化
或更高。
有关选项的信息,请参阅GA.
选项
输入参数。
GA.
算法整数编程GA.
涉及对基本算法的若干修改(参见遗传算法如何运作).整数规划:
[1] Deb,Kalyanmoy。一种有效的遗传算法约束处理方法。应用力学与工程中的计算机方法,186(2-4),PP。311-338,2000。
[2]深,Kusum,Krishna Pratap Singh,M.L.Kansal和C. Mohan。一种解决整数和混合整数优化问题的真正编码遗传算法。应用数学和计算,212(2),PP。505-518,2009。