轮盘赌算法
/*
* 按设定的概率,随机选中一个个体
* P[i]表示第i个个体被选中的概率
*/
int RWS()
{
m = 0;
r =Random(0,1); //r为0至1的随机数
for(i=1;i<=N; i++)
{
/* 产生的随机数在m~m+P[i]间则认为选中了i
* 因此i被选中的概率是P[i]
*/
m = m + P[i];
if(r<=m) return i;
}
}
交叉(Crossover):2条染色体交换部分基因,来构造下一代的2条新的染色体。例如:
交叉前:
00000|011100000000|10000
11100|000001111110|00101
交叉后:
00000|000001111110|10000
11100|011100000000|00101
染色体交叉是以一定的概率发生的,这个概率记为Pc 。
变异(Mutation):在繁殖过程,新产生的染色体中的基因会以一定的概率出错,称为变异。变异发生的概率记为Pm 。例如:
变异前:
000001110000000010000
变异后:
000001110000100010000
适应度函数 ( Fitness Function ):用于评价某个染色体的适应度,用f(x)表示。有时需要区分染色体的适应度函数与问题的目标函数。例如:0-1背包问题的目标函数是所取得物品价值,但将物品价值作为染色体的适应度函数可能并不一定适合。适应度函数与目标函数是正相关的,可对目标函数作一些变形来得到适应度函数。
2.3遗传算法的数学基础
一个简单的遗传算法有以下三个步骤:
选择(selection),交叉(crossover)和变异(mutation)。
在时间ti创建测量的响应r(ti),考虑r(ti)的早期采样,散射中心的脉冲响应振幅{amn}可通过以下公式最小化残余量residual建立:
其中ϵ代表响应能量。
通过公式(1)计算出时刻Tm,并通过最小二乘法确定振幅amn。然后重建第m个散射中心的传递函数。在标准的遗传算法实现中,只有一个函数最大化被定义。
因此,为了最小化公式(1),我们必须最大化一个合适的适应度fitness,定义如下:
其中F(Tm)>0。
常数C由用户给定,并可以更新以使max[F(Tm)] 趋于零。
重复三个步骤即可得到最大化的F(Tm):选择,交叉和变异。遗传算法通常将参数编码为二进制字符串,并模拟自然选择对字符串进行交叉和变异。在[Tmmin, Tmmax]范围内定义一个Tm,并按以下规则编码:
其中L代表字符串长度,bm,l表示b进制。然后将所有字符串连接,得到一个长度为ML的字符串B,字符串B包括了所有变量。其中,M是散射中心数量。
有很多方案可对其进行优化选择,方案之一为“不重复的随机采样”,从M个里面随机挑选出K个字符串用以入池(种群)。
其中,T包括T1, T2 , … , TM, Pk是第k位字符串被选中的概率,Bk 是所有字符串变量连接而成的一个字符串,ek是成员期望。通过自然选择,我们将Bk 副本ek的整数部分加入种群,并根据概率在{ Bk }中随机选择,并加入表单。
其中(ek )指ek 的整数部分。
种群被加满后,选取其中K /2对的字符串。一般的遗传算法都有一个交配概率P(又称为交叉概率),(由用户指定,P, = 0.5 to 0.6),交配点随机选择,并在此间交配父母的染色体相互交换,种群完成繁殖后,Bk 中的一个字节以Pm的变异概率完成变异,变异概率Pm的大小由用户决定,但通常遵循以下公式:
经过这一系列的过程(选择、交配和突变),产生的新一代个体不同于初始的一代,并一代一代向增加整体适应度的方向发展,因为最好的个体总是更多的被选择去产生下一代,而适应度低的个体逐渐被淘汰掉。这样的过程不断的重复:每个个体被评价,计算出适应度,两个个体交配,然后突变,产生第三代。周而复始,直到终止条件满足为止。
- 上一篇:89C51单片机热电偶的温度测量系统设计
- 下一篇:激光测距中激光接收电路的设计
-
-
-
-
-
-
-
乳业同业并购式全产业链...
河岸冲刷和泥沙淤积的监测国内外研究现状
大众媒体对公共政策制定的影响
杂拟谷盗体内共生菌沃尔...
酸性水汽提装置总汽提塔设计+CAD图纸
电站锅炉暖风器设计任务书
java+mysql车辆管理系统的设计+源代码
当代大学生慈善意识研究+文献综述
十二层带中心支撑钢结构...
中考体育项目与体育教学合理结合的研究