作者tropical72 (蓝影)
看板Prob_Solve
标题[问题] GA演算法参数问题
时间Mon Feb 22 15:47:38 2010
各位先进好
关於 GA 演算法,近日我以 C/C++ 实做
有几个观念性问题想请教各位
在此先用以下假设:
母体个数:100个
交配率 :0.5
突变率 :0.05
复制方式采用 轮盘式选择
交配方式采用 单点交配
(1) 使用轮盘式决定复制母体个数後,
是否先将母体个数先丢到交配池中,
再以机率方式决定 -
该母体是否直接复制至子代或是与其它母体交配至子代
(2) 交配或突变时的机率,是以个别机率计算,还是以整体机率计算?
以交配而言,是每次都以 0.5 的机率算,
还是要用 0.5*100 = 50 个个体会进行交配?
(3) 整理以上,我暂写以下虚拟码请教各位先进
population: 母体,
pool: 交配池
child: 子代
rate: 交配率
// 母体有100个
population[100];
// 复制 每个母体 应复制之个数至交配池
for(i=0; i<100; i++) copy(pool, population[i], cnt);
// 交配池中之母体进行 交配\复制 至下一代 - 方法一
for(i=0; i<100; i++){
if(Rand(0,1) > rate) Copy(child, pool[i]); // 没中机率, 复制至子代
else Crossover(child, pool[i], pool[rand()]); // 中机率, 交配至子代
}
// 交配池中之母体进行 交配\复制至下一代 - 方法二, 决定交配个数
for(i=0; i<(int)(100*rate); i++) {
Crossover(child, pool[rand()], pool[rand()]);
}
for(i=0; i<100 - (int)(100*rate); i++){
Copy(child, pool[rand()];
}
请问上面的 code 是否有问题?交配或突变时应采用个别机率或是个数方式进行?
问题有些长,谢谢各位先进的细心指教,感激不尽
--
我期待 我等待
肩狭骨上的翅膀早些长出来
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 120.126.194.160
1F:推 PsMonkey:没良心的讲法:反正是 GA 没办法预测 [逃] 02/22 19:07