[問題] GA演算法參數問題
看板Prob_Solve (計算數學 Problem Solving)作者tropical72 (藍影)時間14年前 (2010/02/22 15:47)推噓1(1推 0噓 0→)留言1則, 1人參與討論串1/3 (看更多)
各位先進好
關於 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
推
02/22 19:07, , 1F
02/22 19:07, 1F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 3 篇):
1
1
Prob_Solve 近期熱門文章
PTT數位生活區 即時熱門文章