十进制编码遗传算法

十进制编码的遗传算法与二进制编码的遗传算法有很多相似的地方,算法的流程图相同,选择算子也相同,最大的不同就是交叉算子和变异算子了。

本文只介绍十进制编码遗传算法的交叉算子和变异算子,以及一些小技巧,其余的请看我的二进制编码遗传算法。

一、交叉算子

1.中间重组交叉算子

d=0.25

alpha=uniform(-d, 1 + d)

child1 = parent1 + alpha * (parent2 - parent1) child2 = parent2 + alpha * (parent1 - parent2)

child1 和child2就是交叉后的子代个体了。仔细观察可以发现child1+child2=parent1 +parent2,这个规律在二进制交叉算子上也成立。

二、变异算子

1.步长变异

步长变异公式如下:

X' = X - 0.5 *L*d或者X' = X + 0.5 *L*d

X'就是变异后的染色体。

L为变量的取值范围 L = Upper - Lower, Upper问题解的上界,Lower为下界。

d=a(0)/2^{0}+a(1)/2^{1}+a(2)/2^{2}+...+a(m)/2^{m}

a(i)以1/m的概率取1,1-1/m的概率取0,m一般取20。

三、小技巧

1.混沌映射——Circle map

Circle map生成2000个点的散点图

从图中我们可以观察到,Circle map生成的点非常均匀,适合问题解的初始化。

Circle map公式如下:

Circle map公式 

其中x_{0}为一个在[0,1]区间内的一个随机值。

四、算法评估

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值