以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 算法理论与分析 』  (http://bbs.xml.org.cn/list.asp?boardid=60)
----  [求助]heyhelloworld:再次向你询问轮盘赌算法  (http://bbs.xml.org.cn/dispbbs.asp?boardid=60&rootid=&id=35911)


--  作者:pwzhaoxu
--  发布时间:7/22/2006 10:10:00 AM

--  [求助]heyhelloworld:再次向你询问轮盘赌算法
heyhelloworld,谢谢你上次的答复。不过关于轮盘赌算法我还是不太懂,你能否举个实例说明下,或者把相关资料发到我的信箱(pwzhaoxu@163.com),期待你的回复,谢谢!
--  作者:heyhelloworld
--  发布时间:7/23/2006 5:54:00 PM

--  
/*盘轮赌算法一般用于遗传算法中个体的选择.
假设种群的大小为5 {A[0],A[1],A[2],A[3],A[4]},适应度分别为{27,12,23,18,20}

个体的声明如下:*/
const float totalfitness = 100;//100 = 27+12+23+18+20
class individual
{
public:
float fitness;
flloat fitfreq;
void setvalue(void)
{fitfreq = fitness/total;//个体适应率计算}
};

/*采用轮盘赌算法进行种群后代个体选择*/
/*将当前种群的个体映射到区间(0,1),个体
适应率A[i].fitfreq作为个体映射区间的宽度.
a[i]=A[0].fitfreq+...+A[i].fitfreq,则区间
(a[i-1],a[i])为个体A[i]在(0,1)上的映射区间,
其中(0,a[0])为个体A[0]的映射区间.进行5
次选种操作,每次产生5个(0,1)上的随机数,
随机数落在各个区间上的次数进行统计,次数
最多的区间所对应的个体就被选中进入下一代*/
.
/*设函数float frand()产生(0,1)上的随机数
设函数  int select(float randnum,int size)是对随机数进行统计并
对个体进行选择的函数,返回值为选中个体的标号*/

int nextage[5];//记录被选中的个体的编号
float randnum;
int i,j;
for(i = 0; i < 5; i ++)
{
for(j = 0; j < 5; j ++)
{
   randnum = frand();
   nextage[i] = select(randnum,5);
}
}

/*大概样子就是这样的*/


--  作者:yhh
--  发布时间:11/27/2008 3:30:00 PM

--  
你好!
     我对轮盘赌算法还有些不懂,请问:"以知一个数,能否知道下一个数是什么?"."假设种群的大小为5,适应度分别为{27,12,23,18,20},以知上一次的数12,哪下一个数是什么?怎样得出?"
    谢谢
--  作者:yhh
--  发布时间:11/27/2008 3:31:00 PM

--  
期待你的回复,谢谢!
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
5,648.438ms