天天看点

[大家的项目]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 实践神经网络 & 遗传算法在线体验(可能需要科学上网)开源仓库简单介绍项目结构简介

继续阅读