天天看點

[大家的項目]Rust + WASM + Vite 實踐神經網絡 & 遺傳算法線上體驗(可能需要科學上網)開源倉庫簡單介紹項目結構簡介

線上體驗(可能需要科學上網)

https://osmos.jerryshell.eu.org

開源倉庫

https://github.com/jerryshell/osmos

簡單介紹

大的細胞會吃掉小的細胞,一定時間後系統會自動進化下一代,細胞越大它的移動速度就越慢,但是它的 DNA 能遺傳到下一代的機率就越大。

這些細胞一開始幾乎都是亂跑,進化 100 代之後(🧬 Epoch: 100),大概就能出現 主動捕食 和 躲避危險 的趨勢。

這個項目的基本思路是使用 Rust 驅動資料,然後使用 JavaScript 将資料渲染到 Canvas 中。

這個項目隻用到了 

rand

nalgebra

serde

wasm_bindgen

 這幾個 crate,如果你剛看完 Rust Book,但是沒有項目練手,可以試試這個!

項目結構簡介

osmos
├── osmos-core # 核心資料結構
├── osmos-nn   # 神經網絡
├── osmos-sim  # 進化模拟器,使用類似 ECS 的模式驅動全局資料
│   └── src
│       ├── ga # 遺傳算法
│       │   ├── crossover.rs # 交叉
│       │   ├── evolve.rs    # 進化
│       │   ├── fitness.rs   # 适應度
│       │   ├── gene.rs      # 基因
│       │   ├── mutation.rs  # 變異
│       │   └── selection.rs # 選擇
│       └── system # ECS 子系統
│           ├── collision.rs # 碰撞系統
│           ├── movement.rs  # 移動系統
│           ├── network.rs   # 神經網絡系統
│           └── sensor.rs    # 感覺器系統
├── osmos-wasm # 将模拟器編譯為 WASM,代理模式
└── osmos-web  # Web UI,通過導入 WASM 啟動模拟器,并将模拟器的資料渲染到 Canvas 中
           
[大家的項目]Rust + WASM + Vite 實踐神經網絡 & 遺傳算法線上體驗(可能需要科學上網)開源倉庫簡單介紹項目結構簡介

繼續閱讀