遗传算法交叉概率和变异概率自适应方法

变遗传参数配置原因

​   在遗传算法的初期阶段,种群需要更多的多样性来探索解空间,较大的交叉概率有助于促进新基因组合,同样较大的变异概率有助于引入更多新基因,增加种群的多样性,这有利于避免过早收敛到局部最优解。随着进化的进行,算法逐渐接近最优解,这时应适当减小交叉概率和变异概率,以保护已获得的优良基因型不被破坏,同时允许细微的搜索来改进解的质量。因此总的来说,交叉概率函数和变异概率函数应设计为单调减函数,个体适应值越大,当前的交叉概率和变异概率应越小。

自适应遗传算法策略:

线性自适应遗传算法

Srinvas提出

交叉概率变化:
P c = { k 1 ( f m a x − f c m a x ) f m a x − f a v g , f c m a x ≥ f a v g k 2 , f c m a x < f a v g P_{c}=\begin{cases}\frac{k_{1} (f_{max} - f_{c}^{max} ) }{f_{max}-f_{avg}} ,f_{c}^{max}\ge f_{avg} \\ k_{2} ,f_{c}^{max}< f_{avg} \end{cases} Pc={fmaxfavgk1(fmaxfcmax),fcmaxfavgk2,fcmax<favg
其中 f m a x f_{max} fmax表示种群中适应值的最大值, f a v g f_{avg} favg表示种群适应值的平均值, f c m a x f_{c}^{max} fcmax表示参与交叉父代中适应值较大一方的适应值, k 1 , k 2 k_{1},k_{2} k1,k2为常数。

变异概率变化:
P m = { k 3 ( f m a x − f m ) f m a x − f a v g , f m ≥ f a v g k 4 , f m < f a v g P_{m}=\begin{cases}\frac{k_{3} (f_{max} - f_{m} ) }{f_{max}-f_{avg}} ,f_{m}\ge f_{avg} \\ k_{4} ,f_{m}< f_{avg} \end{cases} Pm={fmaxfavgk3(fmaxfm),fmfavgk4,fm<favg
其中 f m f_{m} fm表示变异个体的适应值, k 3 , k 4 k_{3},k_{4} k3,k4为常数。

改进的线性自适应遗传算法

交叉概率变化:
P c = { P c m a x − ( P c m a x − P c m i n ) ( f c m a x − f a v g ) f m a x − f a v g , f c m a x ≥ f a v g P c m a x , f c m a x < f a v g P_{c}=\begin{cases}P_{c}^{max} - \frac{(P_{c}^{max} - P_{c}^{min})(f_{c}^{max}-f_{avg}) }{f_{max}-f_{avg}},f_{c}^{max}\ge f_{avg} \\ P_{c}^{max} ,f_{c}^{max}< f_{avg} \end{cases} Pc={Pcmaxfmaxfavg(PcmaxPcmin)(fcmaxfavg),fcmaxfavgPcmax,fcmax<favg
其中 P c m a x , P c m i n P_{c}^{max},P_{c}^{min} Pcmax,Pcmin分别表示交叉概率的上界、下界, f m a x f_{max} fmax表示种群中适应值的最大值, f a v g f_{avg} favg表示种群适应值的平均值, f c m a x f_{c}^{max} fcmax表示参与交叉父代中适应值较大一方的适应值,取值范围为 [ P c m i n , P c m a x ] [P_{c}^{min},P_{c}^{max}] [Pcmin,Pcmax].

变异概率变化:
P m = { P m m a x − ( P m m a x − P m m i n ) ( f m − f a v g ) f m a x − f a v g , f m ≥ f a v g P m m a x , f m < f a v g P_{m}=\begin{cases}P_{m}^{max} - \frac{(P_{m}^{max} - P_{m}^{min})(f_{m}-f_{avg}) }{f_{max}-f_{avg}},f_{m}\ge f_{avg} \\ P_{m}^{max} ,f_{m}< f_{avg} \end{cases} Pm={Pmmaxfmaxfavg(PmmaxPmmin)(fmfavg),fmfavgPmmax,fm<favg
其中 P m m a x , P m m i n P_{m}^{max},P_{m}^{min} Pmmax,Pmmin分别表示变异概率的上界、下界, f m a x f_{max} fmax表示种群中适应值的最大值, f a v g f_{avg} favg表示种群适应值的平均值, f m f_{m} fm表示变异个体的适应值。当 f m ≥ f a v g f_{m}\ge f_{avg} fmfavg时,函数为单调递减函数,取值范围为 [ P m m i n , P m m a x ] [P_{m}^{min},P_{m}^{max}] [Pmmin,Pmmax].

余弦改进型的自适应遗传算法

交叉概率变化:
P c = { P c m a x + P c m i n 2 + P c m a x − P c m i n 2 cos ⁡ ( f c m a x − f a v g f m a x − f a v g π ) , f c m a x ≥ f a v g P c m a x , f c m a x < f a v g P_{c}=\begin{cases}\frac{P_{c}^{max} + P_{c}^{min}}{2} + \frac{P_{c}^{max} - P_{c}^{min}}{2}\cos(\frac{f_{c}^{max}-f_{avg}}{f_{max}-f_{avg}} \pi ),f_{c}^{max}\ge f_{avg} \\ P_{c}^{max} ,f_{c}^{max}< f_{avg} \end{cases} Pc={2Pcmax+Pcmin+2PcmaxPcmincos(fmaxfavgfcmaxfavgπ),fcmaxfavgPcmax,fcmax<favg
其中 P c m a x , P c m i n P_{c}^{max},P_{c}^{min} Pcmax,Pcmin分别表示交叉概率的上界、下界, f m a x f_{max} fmax表示种群中适应值的最大值, f a v g f_{avg} favg表示种群适应值的平均值, f c m a x f_{c}^{max} fcmax表示参与交叉父代中适应值较大一方的适应值。当 f c m a x ≥ f a v g f_{c}^{max}\ge f_{avg} fcmaxfavg时,可以函数单调递减函数,取值范围为 [ P c m i n , P c m a x ] [P_{c}^{min},P_{c}^{max}] [Pcmin,Pcmax]

变异概率变化:
P m = { P m m a x + P m m i n 2 + P m m a x − P m m i n 2 cos ⁡ ( f m − f a v g f m a x − f a v g π ) , f m ≥ f a v g P m m a x , f m < f a v g P_{m}=\begin{cases}\frac{P_{m}^{max} + P_{m}^{min}}{2} + \frac{P_{m}^{max} - P_{m}^{min}}{2}\cos(\frac{f_{m}-f_{avg}}{f_{max}-f_{avg}} \pi ),f_{m}\ge f_{avg} \\ P_{m}^{max} ,f_{m}< f_{avg} \end{cases} Pm={2Pmmax+Pmmin+2PmmaxPmmincos(fmaxfavgfmfavgπ),fmfavgPmmax,fm<favg
其中 P m m a x , P m m i n P_{m}^{max},P_{m}^{min} Pmmax,Pmmin分别表示变异概率的上界、下界, f m a x f_{max} fmax表示种群适应值中的最大值, f a v g f_{avg} favg表示种群适应值中的平均值, f m f_{m} fm表示变异个体的适应值,取值范围为 [ P m m i n , P m m a x ] [P_{m}^{min},P_{m}^{max}] [Pmmin,Pmmax].。

改进的自适应遗传算法

  论文《自适应遗传算法交叉变异算子的改进》提出的方法(IAGA,邝航宇),原论文经过验证发现其取值范围存在问题,函数本身不适用,可能是打印错误。

神经元激活函数常选用sigmoid函数,该函数在线性和非线性行为之间显现出较好的平衡。
s i g ( x ) = 1 1 + e − x sig(x)=\frac{1}{1+e^{-x} } sig(x)=1+ex1
x ≥ 9.903438 x\ge 9.903438 x9.903438时, s i g ( x ) sig(x) sig(x)的值接近于1,当 x < − 9.903438 x<- 9.903438 x<9.903438时, s i g ( x ) sig(x) sig(x)的值接近于0.

交叉概率变化:
P c = { P c m a x − P c m i n 1 + e x p ( − c 0 + 2 c 0 ( f c m a x − f a v g f m a x − f a v g ) ) + P c m i n , f c m a x ≥ f a v g P c m a x , f c m a x < f a v g P_{c}=\begin{cases}\frac{P_{c}^{max} - P_{c}^{min}}{1+exp(-c_{0}+\frac{2c_{0}(f_{c}^{max}-f_{avg}}{f_{max}-f_{avg}})) }+P_{c}^{min} ,f_{c}^{max}\ge f_{avg} \\ P_{c}^{max} ,f_{c}^{max}< f_{avg} \end{cases} Pc= 1+exp(c0+fmaxfavg2c0(fcmaxfavg))PcmaxPcmin+Pcmin,fcmaxfavgPcmax,fcmax<favg
其中 P c m a x , P c m i n P_{c}^{max},P_{c}^{min} Pcmax,Pcmin分别表示交叉概率的上界、下界, f m a x f_{max} fmax表示种群中适应值的最大值, f a v g f_{avg} favg表示种群适应值的平均值, f c m a x f_{c}^{max} fcmax表示参与交叉父代中适应值较大一方的适应值, c 0 c_{0} c0取值为9.903438。

变异概率变化:
P m = { P m m a x − P m m i n 1 + e x p ( − c 0 + 2 c 0 ( f m − f a v g ) f m a x − f a v g ) + P c m i n , f m ≥ f a v g P m m a x , f m < f a v g P_{m}=\begin{cases}\frac{P_{m}^{max} - P_{m}^{min}}{1+exp(-c_{0}+\frac{2c_{0}(f_{m}-f_{avg})}{f_{max}-f_{avg}}) }+P_{c}^{min} ,f_{m}\ge f_{avg} \\ P_{m}^{max} ,f_{m}< f_{avg} \end{cases} Pm= 1+exp(c0+fmaxfavg2c0(fmfavg))PmmaxPmmin+Pcmin,fmfavgPmmax,fm<favg
其中 P m m a x , P m m i n P_{m}^{max},P_{m}^{min} Pmmax,Pmmin分别表示变异概率的上界、下界, f m a x f_{max} fmax表示种群中适应值的最大值, f a v g f_{avg} favg表示种群适应值的平均值, f m f_{m} fm表示变异个体的适应值。

​ 在matlab上进行绘图测试,设置 P c m a x , P c m i n P_{c}^{max},P_{c}^{min} Pcmax,Pcmin分别为0.8和0.5,设置 f m a x , f a v g f_{max},f_{avg} fmax,favg分别为200,150。

clear;clc;
% 测试自适应交叉概率曲线
pcmax = 0.8;
pcmin = 0.5;

c0 = 9.903438;

% 平均适应值
favg = 150;
%最大适应值
fmax = 200;

x = favg : fmax;
myFun =@(x)(pcmax - pcmin)./(1+exp(-c0 + 2*c0*(x-favg)/(fmax-favg))) + pcmin;

y = myFun(x);

plot(x,y);
xlabel('适应值');
ylabel('交叉概率');

曲线结果如下:
在这里插入图片描述

  • 22
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值