没有懂模拟退火法或者python 蚁群算法法的高手

现在我们用 Python 来实现遗传算法(求解例1)

(1)随机生成若干个数的二进制染色体

 

将二进制的染色体基因型编码成十进制的表现型。

 

个体适应度与其对应的个体表现型x的目标函數值相关联x越接近于目标函数的最优点,其适应度越大从而其存活的概率越大。反之适应度越小存活概率越小。这就引出一个问题關于适应度函数的选择本例中,函数值总取非负值以函数最大值为优化目标,故直接将目标函数作为适应度函数这里我们直接将目標函数2*sin(x)+cos作为个体适应度。如果你想优化的是多元函数的话,需要将个体中基因型的每个变量提取出来分别带入目标函数。比如说:我們想求x1+lnx2的最大值基因编码为4位编码,其中前两位是x1后两位是x2。那么我们在求适应度的时候需要将这两个值分别带入f(x1)=x,f(x2)=lnx。再对f(x1)和f(x2)求和得箌此个体的适应度在本篇中,虽然染色体长度为10,但是实际上只有一个变量

 

我们对个体的适应度调整的目的有两个:

一是维持个体之间嘚合理差距,加速竞争

二是避免个体之间的差距过大,限制竞争

(1).只保留非负值的适应度/函数值(不小于0)——避免轮盘赌出现负的概率

(2).首先计算出所有个体的适应度总和Σfi

 

(3).再产生一个0到1之间的随机数,依据随机数出现在上述哪个概率区域内来确定各个个体被选中的次数

 
 
 

参考资料

 

随机推荐