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

本文解釋瞭如何使用美麗的湯庫來解析html。 它詳細介紹了常見方法,例如find(),find_all(),select()和get_text(),以用於數據提取,處理不同的HTML結構和錯誤以及替代方案(SEL)

Linux終端中查看Python版本時遇到權限問題的解決方法當你在Linux終端中嘗試查看Python的版本時,輸入python...

Python的statistics模塊提供強大的數據統計分析功能,幫助我們快速理解數據整體特徵,例如生物統計學和商業分析等領域。無需逐個查看數據點,只需查看均值或方差等統計量,即可發現原始數據中可能被忽略的趨勢和特徵,並更輕鬆、有效地比較大型數據集。 本教程將介紹如何計算平均值和衡量數據集的離散程度。除非另有說明,本模塊中的所有函數都支持使用mean()函數計算平均值,而非簡單的求和平均。 也可使用浮點數。 import random import statistics from fracti

Python 對象的序列化和反序列化是任何非平凡程序的關鍵方面。如果您將某些內容保存到 Python 文件中,如果您讀取配置文件,或者如果您響應 HTTP 請求,您都會進行對象序列化和反序列化。 從某種意義上說,序列化和反序列化是世界上最無聊的事情。誰會在乎所有這些格式和協議?您想持久化或流式傳輸一些 Python 對象,並在以後完整地取回它們。 這是一種在概念層面上看待世界的好方法。但是,在實際層面上,您選擇的序列化方案、格式或協議可能會決定程序運行的速度、安全性、維護狀態的自由度以及與其他系

本文比較了Tensorflow和Pytorch的深度學習。 它詳細介紹了所涉及的步驟:數據準備,模型構建,培訓,評估和部署。 框架之間的關鍵差異,特別是關於計算刻度的

該教程建立在先前對美麗湯的介紹基礎上,重點是簡單的樹導航之外的DOM操縱。 我們將探索有效的搜索方法和技術,以修改HTML結構。 一種常見的DOM搜索方法是EX

本文討論了諸如Numpy,Pandas,Matplotlib,Scikit-Learn,Tensorflow,Tensorflow,Django,Blask和請求等流行的Python庫,並詳細介紹了它們在科學計算,數據分析,可視化,機器學習,網絡開發和H中的用途

本文指導Python開發人員構建命令行界面(CLIS)。 它使用Typer,Click和ArgParse等庫詳細介紹,強調輸入/輸出處理,並促進用戶友好的設計模式,以提高CLI可用性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Dreamweaver Mac版
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Linux新版
SublimeText3 Linux最新版

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能