回答
可以使用struct模塊中提供的工具將二進制數據打包到緩衝區中。看到這裏:http://docs.python.org/library/struct.html
這就是說,我個人喜歡Python,但是:如果你想重複和有效地採取一組整數和浮點數,把它當作一個大的比特位,並將位運算應用於它,不要以爲Python是語言的最佳選擇。這在更低級別的語言中更直接(並且更快) - 我願意用C語言。
祝您好運!
不,我認爲你的問題的二進制表示是錯誤的。您的基本數據不是二進制的,那麼,爲什麼使用二進制?對實數和整數進行變異和交叉,而不是二進制表示。
最簡單的交叉:第一個父親:ABCDE其中A,B,...是浮點數,第二個父母是MNOPQ。隨機選擇D,第一個春天:ABCDQ,第二個:MNOPE。
使用IEEE754表示法表示浮點數和二進制補碼錶示法用於整數。或者,使用整數和浮點數,在您的計算機已經使用這些二進制表示的幕後知識中是安全的。
如果我理解正確的問題,這完全是語言不可知的。您應該能夠在標準化的IEEE表示中表示浮點數。這是一個tutorial。一旦你有了那個表示,你就不會發生什麼,你只需要在你的位上應用任何交叉點(單點,雙點)。
我會建議重新考慮,如果你真的需要位串表示..從浮點到位的轉換和返回有點多。如果你只能保持浮點值即一個候選解決方案是一個由N個浮點數組成的數組,您可以輕鬆地將其傳遞給您的評估函數(目標函數)。然後使用交叉方法,如模擬二進制交叉(SBX,http://www.slideshare.net/paskorn/self-adaptive-simulated-binary-crossover-presentation),它模仿將浮點數轉換爲二進制表示並在其上執行交叉之後得到的效果。 SBX的結果相當不錯,而且如果你處理比特串會發生什麼事情的類比會變得非常清晰......在這個幻燈片中它看起來很像..但是這一切都歸結爲幾行實施sbx交叉。
- 1. GA遺傳算法的染色體表示
- 2. 如何在遺傳算法中將數字表示爲染色體?
- 3. 排序染色體名字
- 4. 合併染色體Plink
- 5. 遺傳算法個體與染色體
- 6. 項目調度基本實例:遺傳算法的染色體
- 7. Symfony2 - Sonata Admin。以字段形式實體顯示顏色表
- 8. 訪問天藍色表實體
- 9. 顏色的數字表示
- 10. 實體框架 - 更改表格/實體的顯示名稱
- 11. [R染色體頻率計算
- 12. 在matlab中重組兩條染色體
- 13. 避免染色體重複基因(JGAP)
- 14. 遺傳算法染色體生成
- 15. 染色體非重複等位基因
- 16. 從人羣中去除染色體?
- 17. GA Jgap:避免重複(doublettes)染色體的訂單不計數
- 18. jQuery的.append()不渲染HTML實體
- 19. 如何獲取角色實體進行渲染(PHP從數據庫拉到Fullcalendar中顯示)?
- 20. symfony2中的實體顯示錶
- 21. 實體到數據表的列表
- 22. Jhispter實體數據庫表
- 23. 實體框架和角色
- 24. 顯示國家實體的指數
- 25. 顯示數據存儲實體的ID
- 26. 如何從二進制染色體中提取多個參數
- 27. Vue組件渲染函數:打印未轉義的html實體
- 28. OpenGL實例渲染每個實例的顏色和偏移量
- 29. 實體關係建模:如何實現實體「角色」?
- 30. 顯示的是OpenGL實體顏色而不是紋理
問題(正如我所說),是我不知道如何做浮動變量的交叉和變異。你能通過一個例子(甚至是一個鏈接)來展示,如何編碼這樣一個染色體,以及交叉和變異如何應用於這樣一個染色體? – skyeagle 2010-10-07 22:19:14
你可以用你認爲合適的方式定義交叉。我也建議不要製作二進制字符串,因爲這可能會產生更糟糕的結果,因爲切片可能發生在整數或浮點變量「內部」。 – 2010-10-08 11:07:55