在线体验(可能需要科学上网)
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 # 基因
│ │