初识遗传算法

一、遗传算法基本问题

遗传算法有3个最基本的操作:选择,交叉,变异。

抽象:每个问题的元素必须要被抽象成向量(染色体)才能被解决,而且这个向量的所有子集合中尽量没有无效元素(有也要在算法中取出)。

例如:    1、我们可以发现x1和x2的取值都是1~7,可以用三位二进制数表示,所以我们使用六位二进制标识x1和x2的一种组合

2、0-1背包问题,可以把背包标号,如果取这个背包那么向量对应的位置就是1,否则就是0

    3、TSP问题,二进制向量的每n位都对应着一个城市的标号,那么染色体可以体现城市经过的顺序
   

选择:选择一些染色体来产生下一代。

(1)排序选择方法(源代码中使用类似此方法)

排序选择方法是指在计算每一个个体的适应度(源代码中将路径总长度当适应度)之后,根据适应度大小对个体排序,然后按照事先设置好的概率表按序分配给个体,作为个自的选择概率。

(2)适应度比例方法

适应度比例方法是目前遗传算法中最基本也是最常用的选择方法,即各个个体的选择概率和其适应度值成正比。

(3)最佳个体保留方法

即把群体中适应度最高的个体不进行交叉而直接复制到下一代。


一种常用的选择策略是 “比例选择”,也就是个体被选中的概率与其适应度函数值成正比。假设群体的个体总数是M,那么那么一个体Xi被选中的概率为f(Xi)/( f(X1) + f(X2) + …….. + f(Xn) ) 。比例选择实现算法就是所谓的“轮盘赌算法”( Roulette Wheel Selection ) ,轮盘赌算法的一个简单的实现如下:

 

复制代码
轮盘赌算法(比例选择算法,每个个体被选中的概率和他的适应度成正比)
/*
* 按设定的概率,随机选中一个个体
* P[i]表示第i个个体被选中的概率
*/
int RWS()
{
=0;
=Random(0,1); //r为0至1的随机数
for(i=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值