optimization method-Genetic Algorithm(实例)

来源:互联网 发布:软件外包 源代码 编辑:程序博客网 时间:2024/05/16 06:54

为了巩固知识,这次使用GA算法求解遗传算法的例子。

首先,我们给遗传算法设定参数如下:

种群大小:2000个

种群代数: 200 代

交叉率: pc=1

变异率: pm=0.1

设定参数后,下面就是我们遗传算法的过程了:

(1)编码

 这里我们采用十进制编码,使用随机数w1w2...w102作为染色体,其中 0<wi<1,(i=2,3,..,,101),w1=0,w102=1;每个随机序列都和种群中的一个个体对应。

(2)初始化种群

 这里我们利用了经典的近似算法-改良圈算法求得一个较好的初始种群。即对于一个初始圈:


交换u和v之间的顺序,这样新的路径变为:


我们记

,那么 

,则以新的路径修改就的路径,直到不能修改为止。 

(3)适应度函数

 这里我们把目标函数作为适应度函数,即

 (4)交叉操作

  这里我们的交叉(交配)操作,采用单点交叉,例如我们先选定2个父代个体如下:


我们随机选择第t个基因处为交叉点,从而得到子代,如下图 :


交叉操作的方式很多,我们应该尽量选择好的交叉方式,以保证子代能继承父代的优良特性

(5)变异操作

 变异操作时一种实现种群多样性的一种手段,同时也是全局寻优的保证,我们可以按给定的变异率,对选定变异的个体,随机选取三个整数,满足1 < u < v < w < 102,把u,v之间(包括u和v)的基因段插到w后面。

(6)选择

 这里我们采用确定性的选择策略,即选择使得目标函数值最小的M个个体进化到下一代,这样可以保证父类的优良特性被保留下来。

下面是运行结果:

 


0 0
原创粉丝点击