2017-04-17 76 views
1

我一直在重新編碼,優化和解碼遺傳算法。我第一次嘗試的是有序交叉的旅行推銷員,這很有效。我發現一篇文章試圖優化更復雜的基因組,同時優化2d包裝問題。斷頭臺切割優化的遺傳算法

作者用有意義的反向波蘭符號來編碼問題。它使用部件和V或H作爲操作者的組合。

即34H5V

與具有被解析爲這是我的最終佈局一個堆疊元件堆棧進行解碼。也就是說,直到某個點的操作員數量必須比直到同一點的部件數量少1個。作者然後說,他使用交叉混合交叉,對操作員使用零件和二元交叉。

我仔細研究了這一點,但我無法理解他在交叉之前如何分離零件和操作員,然後在評估性能之前重新組合它們,並提供一些細節。如果發生二元交叉時,用「X」代替部件以保持相對位置,以便在交叉之後重新組合,但操作員與部件之間的關係不成立。

有沒有人可能有一個處理過類似情況的資源,或者可能已經成功地使用了它。

回答

0

這看起來比實際上更困難。當生成原始羣體時,您需要遵守由後綴表示法設定的限制。當穿越時,您只需建立父面具

即xxxxooxoxx

其中x是一個對象,O是operaror。一旦你的面具持有的位置,你可以創建一個只有操作員和只有一個對象的刺。操作員可以通過二進制交叉和對象作爲部分映射交叉來完成。一旦完成,您將按照它們在每個組中出現的順序填充掩碼。由於面膜是有效的,後代也是有效的。

唯一的問題是獲得所有可能的安排,因爲沒有它,它將被限制在面具。他通過做一個由突變率決定的交換突變來解決這個問題。

  1. 隨機選擇一個項目。
  2. 如果該項目是一個操作員,然後 A. Swithc操作員到另一種 B.選擇另一個。如果它的一個對象,然後確保符合要求,如果是的話,然後切換。