簡體   English   中英

為什么我的遺傳算法不收斂?

[英]Why is my genetic algorithm not converging?

我正在嘗試編寫一個程序來使用遺傳算法找到具有 n 個輸入和 n 個輸出的最佳組合電路。 該代碼有效,但沒有找到最佳解決方案。 該算法只是采用“好的”解決方案並嘗試隨機修改它以獲得更好的解決方案。 我的問題是,我的方法是錯誤的(不應該如此隨機)還是我的代碼在邏輯上是錯誤的?

Git 存儲庫: https : //github.com/Umuril/Genetic-Circuits

PS:我只需要看看代碼。 代碼是“注釋”的,運行只需要: cd "dir"; make; ./Genetic.out cd "dir"; make; ./Genetic.out

一般來說,進化算法不保證它們的響應是最好的,而是找到一個好的解決方案。 您可以先通過您的 GA 找到一個好的解決方案,然后在您的解決方案鄰域中使用本地搜索。

也許模因算法可以幫助你。 https://en.wikipedia.org/wiki/Memetic_algorithm

該算法不會自行停止。 當它必須停止時,您必須設置一些限制,從而為您提供最佳解決方案。 以下是 3 種最常見的停止方法:

  • 經過多次迭代(代),例如 =~ 1000
  • 在您的人口中有一定比例的畸變后,例如 >40%
  • 當總體平均適應度達到最高值然后開始惡化時

使用所有的組合以獲得更好的結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM