[問題] GA演算法參數問題

看板Prob_Solve (計算數學 Problem Solving)作者 (藍影)時間14年前 (2010/02/22 15:47), 編輯推噓1(100)
留言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
沒良心的講法:反正是 GA 沒辦法預測 [逃]
02/22 19:07, 1F
文章代碼(AID): #1BWZQU8z (Prob_Solve)
文章代碼(AID): #1BWZQU8z (Prob_Solve)