關於Smart Rockets (Genetic Alg.)
關於遺傳算法如何工作要達到的目標交互式演示。
這是一個演示遺傳算法如何工作的應用程序。
它基本上由一堆必須達到目標的火箭組成,避免了用戶繪製的障礙物。
他們必須通過在開始時嘗試隨機指示,然後選擇最適合解決方案的方法來學習獲勝的路徑。他們還必須適應不斷變化的環境,就像幾個世紀以來的生物一樣。
修改參數(種群大小,突變率,速度和壽命),您可以看到它們如何影響進化。
它是如何工作的:
每枚火箭都有一個設定其軌蹟的DNA(影響他在每一幀的速度)。在開始時,這是隨機生成的。
在接下來的每一代中,火箭的DNA都來自上一代的兩個“父母”;火箭作為下一代父母的機會與各種因素成正比:勝利,超越障礙的機會,死亡,與目標的距離等等......
影響模擬的變量:
- 生命時間:死亡前允許進入火箭的步數。
- 突變定量:每一步都有機會改變其初始DNA並在該點採取隨機方向。
- 火箭數量:數量越高,系統將越適應。
設置菜單:
- 跳過代:禁用渲染並以最大速度執行模擬(在表格或圖表中顯示結果)
- 切換到模式:允許從經典模式切換到GPU加速模式,反之亦然。警告:所有設備都不支持GPU加速模式,因此可能會導致應用程序出錯。
- 重置火箭:將火箭狀態(DNA)重置為初始狀態(不修改障礙物和目標)
- 加載/導出,保存和導入:使用這三個按鈕,您可以加載/保存模擬,或從設備內部存儲器導出/導入文件(.srk)。
- 其他設置:可通過屏幕頂部的設置圖標或通過單擊設備的後退按鈕進行訪問,您可以在此處編輯在應用程序啟動時選擇的模擬設置。
GPGPU功能:
此應用程序還使用Android Renderscript框架開發,允許在並行計算方面利用GPU優勢。不幸的是,它並沒有在所有設備上得到很好的支持,因此可能效果不佳;在這種情況下,僅使用經典模式。
它是如何工作的?在每個火箭上執行的任務是在GPU上並行完成的,其架構設計用於同時處理許多任務(只需考慮圖像渲染,該圖像的每個像素都必須單獨評估)。
遺傳算法通常與圖形無關,但它們的性質與並行計算非常吻合:它們是GPGPU特別成功實現的一個例子(圖形處理單元上的通用編程)
保存文件:
最新版本使用二進製文件而不是純文本,這樣可以減少使用內存的十倍和讀/寫時間;您仍然可以從舊版本加載文件(而不是導出)。
導出的文件保存在內部存儲根目錄的默認目錄SmartRockets中。我們嘗試了幾個文件管理器,你應該能夠加載一個.srk文件,只需點擊它(甚至從谷歌驅動器,WhatsApp或電報等...)或在顯示的列表中選擇我們的應用程序。唯一給我們帶來一些問題的是來自三星的“我的文件”,有時候甚至沒有顯示“打開”的選項就沒有打開文件;在這種情況下,您可以上傳到Google雲端硬盤或通過其他文件管理器打開它。
最新版本5.0的更新日誌
We've developed this application on Android Renderscript, that runs on GPU to increase performance (use the "skip generations" in settings menu to notice the huge difference!)
What's that? It's called GPGPU (Generic Programming on Graphics Processing Unit), a technique that makes use of the special architecture of a GPU to execute tasks in parallel very fast
The AI is also improved, we added some new features and all graphics are renewed to get a better experience