Re: [問題] GA演算法參數問題
看板Prob_Solve (計算數學 Problem Solving)作者H45 (!H45)時間14年前 (2010/02/22 23:02)推噓1(1推 0噓 3→)留言4則, 1人參與討論串2/3 (看更多)
※ 引述《tropical72 (藍影)》之銘言:
: 各位先進好
: 關於 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()]); // 中機率, 交配至子代
^ ^^^^^^
i 不能等於 rand()
: }
: // 交配池中之母體進行 交配\複製至下一代 - 方法二, 決定交配個數
: for(i=0; i<(int)(100*rate); i++) {
: Crossover(child, pool[rand()], pool[rand()]);
^^^^^^ ^^^^^^
rand() 不能等於 rand()
: }
: for(i=0; i<100 - (int)(100*rate); i++){
: Copy(child, pool[rand()];
: }
: 請問上面的 code 是否有問題?
突變到哪兒去了?
: 交配或突變時應採用個別機率或是個數方式進行?
個別機率。
: 問題有些長,謝謝各位先進的細心指教,感激不盡
若是多維實數最佳化問題,建議找 CMAES 下載來用,效果更佳。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.33.235.24
推
02/22 23:05, , 1F
02/22 23:05, 1F
→
02/22 23:06, , 2F
02/22 23:06, 2F
→
02/22 23:06, , 3F
02/22 23:06, 3F
→
02/22 23:07, , 4F
02/22 23:07, 4F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 3 篇):
1
1
Prob_Solve 近期熱門文章
PTT數位生活區 即時熱門文章