最简单的遗传算法

1定义:
基于自然界“自然选择”和“优胜劣汰”的进化规律,通过模拟生物进化中的自然选择和交配变异寻找问题的全局最优解。
2类比对应:
群体:搜索空间的一组有效解
种群:选择得到的新群体
染色体:可行解的编码串
基因:染色体的一个编码单元
适应能力:染色体的适应值
交配:染色体交换部分基因得到新染色体
变异:染色体某些基因值改变
算法流程:
1染色体编码:二进制编码以及浮点数编码
2群体初始化:一般是随机数初始化
3适应值评价:用于评估各个染色体适应值,适应值越大的染色体越优。
4选择算子:
轮盘赌选择算法:

//输出选中的染色体
m=0;
r=random(0,1);
for (i=1;i<=n;i++)
{
m=m+Pi;
if(r<=m)return i;
}

5交配算子
交配概率Pc;
对于每一个染色体,如果random(0,1)小于Pc则表示该染色体可进行交配操作。
交配方法:
随机产生一个有效交配位置,染色体交换位于该交配位置后的所有基因。

6变异算子:
变异概率Pm;
交配后,对于染色体中的每一位基因,如果random(0,1)小于Pm,则改变基因取值。
伪代码:

/*
P(t)表示某一代的群体,t为当前进化代数。
Best表示目前已找到的最优解
*/
begin
t=0;
initialize(P(t));//初始化群体
evaluate(P(t));//适应值评价
keep_best(P(t));//保存最优染色体
while(不满足终止条件)do
begin
P(t)=selection(P(t));//选择算子
P(t)=crossover(P(t));//交配算子
P(t)=mutation(P(t));//变异算子
t=t+1;
P(t)=P(t+1);
evaluate(P(t));
if(P(t)的最优适应值优于Best)replace(Best);
end if
end
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值