主要内容

混合整数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函数的混合整数优化

此示例显示了如何查找最少的Rastrigin的函数受限制所以第一个组件X是一个整数。组件的X进一步限制在该地区 5. π ≤. X 1 ≤. 2 0. π - 2 0. π ≤. X 2 ≤. - 4. π

为您的问题设置界限

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)

图遗传算法包含轴。标题最佳轴:424.136意思:424.368包含2个类型的2个对象。这些对象代表最佳罚款值,均值罚款。

优化终止:惩罚的平均变化比options.FunctionTolectance和约束违规小于选项.ConstraintTolerance。
X =1×216.0000 -12.9325.
fval = 424.1355.
EXITFLAG = 1

GA会迅速收敛到解决方案。

整数GA求解器的特征

对问题的类型有一些限制GA.可以解决当你包含整数约束:

  • 没有线性平等约束。你必须有AEQ = []说真的= [].对于可能的解决方法,请参阅没有平等约束

  • 没有非线性平等约束。任何非线性约束函数必须返回[]对于非线性平等约束。对于可能的解决方法,请参阅示例:具有非线性平等约束的整数编程

  • 只有双重传感器人口类型。

  • 没有自定义创建功能(Creationfcn.选项),交叉功能(Crossoverfcn.选项),突变函数(umtationfcn.选项)或初始分数(InitialScoreMatrix.选项)。如果您提供其中的任何一个,GA.覆盖他们的设置。

  • GA.仅使用二进制锦标赛选择功能(选择汇总选项),并覆盖任何其他设置。

  • 没有混合函数。GA.覆盖任何设置Hybridfcn.选项。

  • GA.忽略了帕撑针织品DistanceMeasureFcninitialPenalty., 和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..没有容差,非线性等式约束永远不满足,求解器不知道何时有可行解。

  1. 写表达式norm(x)= 4作为两个“小于零”不等式:

    常规(x) - 4≤.0.
    - (常规(x) - 4)≤.0.

  2. 允许在不等式中进行小的宽容:

    常规(x) - 4 - tol≤.0.
    - (符号(x) - 4) - 托≤.0.

  3. 编写一个非线性不等式约束函数,实现这些不等式:

    功能[c,ceq] = eqcon(x)ceq = [];rad = 4;tol = 1e-3;confcnval = norm(x) -  rad;c = [confcnval  -  tol; -confcnval  -  tol];
  4. 设置选项:

    • maxstallgenerations = 50.- 允许求解器尝试一段时间。

    • functiontolerance = 1e-10- 指定比平时更严格的停止标准。

    • maxgenerations = 300- 允许更多的生成默认。

    • plotfcn = @gaplotbestfun.- 观察优化。

    opts = Optimoptions('ga''maxstallgenerations',50,'functiontolerance',1E-10,......'maxgenerations'300,'plotfcn',@ gaplotbestfun);
  5. 设置下限和上限以帮助求解器:

    nvar = 5;LB = -5 * =(1,NVAR);UB = 5 *那些(1,NVAR);
  6. 解决问题:

    RNG(0,'twister'重复性的%[,fval,ExitFlag] = ga(@ ackleyfcn,nvar,[],[],[],[],......LB,UB,@ EQCON,[1 3 5],选择);
    优化终止:平均数改变点球健康价值较少的options.FunctionTolerance.约束违反较少的options.ConstraintTolerance。

  7. 检查解决方案:

    X,FVAL,EXITFLAG,NORM(x)x = 0 -1.7367 -3.0000 -0.0000 -2.0000 FVAL = 5.2303 EXITFLAG = 1 ANS = 4.0020

    奇怪的X组件是整数,如指定。规范X4.,到给定的相对容忍度1E-3

  8. 尽管存在正退出标志,但解决方案不是全球最佳。再次运行问题并检查解决方案:

    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组件是整数,常态X24.,到给定的相对容忍度1E-3

请注意,此过程可能会失败;GA.难以同时整数和平等约束。

有效整数GA.

使用GA.最有效地对整数问题,请遵循以下准则。

  • 尽可能紧密地将每个组件绑定。这种做法给出了GA.最小的搜索空间,启用GA.最有效地搜索。

  • 如果不能绑定组件,则指定适当的初始范围。默认情况下,GA.创建一个带距离的初始群体[-1e4,1e4]对于每个组件。更小或更大的初始范围可以在默认值不合适时提供更好的结果。要更改初始范围,请使用initialpopulationrange.选项。

  • 如果您有超过10个变量,请使用使用的群体大小大于默认值人群化选项。六个或更多变量的默认值为200。对于庞大的人口大小:

    • GA.可能需要很长时间才能收敛。如果您达到最大数量数(退出标志0.),增加价值最大选项。

    • 降低突变率。为此,提高价值交叉零件选项从其默认值0.80.9或更高。

    • 增加价值EliteCount.选项从其默认值0.05 *人口化0.1 *人口化或更高。

有关选项的信息,请参阅GA.选项输入参数。

整数GA.算法

整数编程GA.涉及对基本算法的若干修改(参见遗传算法如何运作).整数规划:

  • 特殊创建,交叉和突变函数强制变量为整数。有关详细信息,请参阅Deep等人。[2]

  • 遗传算法尝试最小化惩罚功能,而不是健身功能。惩罚函数包括一个不可行性的术语。此惩罚功能与二进制锦标赛选择相结合,以选择随后几代人的个人。人口成员的惩罚职能值是:

    • 如果成员是可行的,惩罚函数是适应度函数。

    • 如果该成员是不可行的,则惩罚功能是人口的可行成员中的最大健身功能,以及违反(不可行)点的约束违规的总和。

    有关惩罚功能的详细信息,请参阅Deb[1]

  • 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。

相关话题