這篇部落格文章詳細介紹了一個令人著迷的項目,該項目使用遺傳演算法 (GA) 來模擬點向目標導航,同時避開障礙物。 GA 模仿自然選擇,根據點與目標的接近程度迭代地改進它們。
遺傳演算法實作:
GA 遵循以下標準步驟:
模擬概述:
模擬可視化了一群點的演化過程,以達到紅色方形目標。每個點的運動都是由它的「基因」(一系列運動方向)決定的。 透過選擇、突變和複製,族群會適應,提高其在繞過黑色矩形障礙物時到達目標的能力。
關鍵模擬組件:
專案設定(Python 與 Pygame):
此項目使用 Pygame 進行視覺化。 關鍵的全域變數控制模擬的參數(族群大小、突變率等)。 Dot
類別代表各點,管理它們的位置、運動和適應性。
初始模擬(單點):
初始程式碼模擬單點隨機移動,直到它退出螢幕邊界。這是引入種群和 GA 之前的基礎步驟。
人口模擬:
Population
類別管理點組。 update
方法移動點並檢查與障礙物的碰撞。 模擬現在顯示多個同時移動的點。
增加障礙與目標:
引入Obstacle
和 Goal
類別來分別表示障礙物和目標。 實施碰撞檢測,導致點在碰撞時「死亡」。模擬現在包括一個紅色目標方塊和一個黑色矩形障礙物。
實作遺傳演算法(複製):
get_fitness
類別中的Dot
方法計算適應度。 Population
類別獲得 generate_next_generation
和 select_best_dots
方法來實現選擇、複製(最初而不是交叉)、變異和精英主義。現在,模擬顯示了人口的幾代演變。
未來增強:
未來的部落格文章將涵蓋:
完整的程式碼(到目前為止)可以在 GitHub 上找到。 嘗試程式碼並分享您的發現! 加入 AICraftsLab Discord 社區,與其他人工智慧愛好者交流。
以上是使用遺傳演算法進行點模擬 - 第 1 部分的詳細內容。更多資訊請關注PHP中文網其他相關文章!