< 返回版块

jerryshell 发表于 2023-02-18 19:18

Tags: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 中

Ext Link: https://github.com/jerryshell/osmos

评论区

写评论
chengyan7857 2023-02-20 09:38

学习一下

作者 jerryshell 2023-02-19 17:06

👍👍👍

--
👇
eweca-d: 哈哈,我修过dl的课,也知道怎么写遗传算法,但我其实最想试试改写成bevy的版本。

--
👇
jerryshell: 哈哈,这个项目还是有很多需要优化的地方,有些地方写得很粗糙,刚好处于「能用就行」的状态。

或者你可以自己从头实现,遇到困难的地方再回来参考参考我的实现。

--
👇
eweca-d: 挺有意思的项目,不过感觉挺完整的了,也没有issue,练手也找不到切入点啊。

eweca-d 2023-02-19 12:14

哈哈,我修过dl的课,也知道怎么写遗传算法,但我其实最想试试改写成bevy的版本。

--
👇
jerryshell: 哈哈,这个项目还是有很多需要优化的地方,有些地方写得很粗糙,刚好处于「能用就行」的状态。

或者你可以自己从头实现,遇到困难的地方再回来参考参考我的实现。

--
👇
eweca-d: 挺有意思的项目,不过感觉挺完整的了,也没有issue,练手也找不到切入点啊。

作者 jerryshell 2023-02-19 01:26

哈哈,这个项目还是有很多需要优化的地方,有些地方写得很粗糙,刚好处于「能用就行」的状态。

或者你可以自己从头实现,遇到困难的地方再回来参考参考我的实现。

--
👇
eweca-d: 挺有意思的项目,不过感觉挺完整的了,也没有issue,练手也找不到切入点啊。

eweca-d 2023-02-18 20:54

挺有意思的项目,不过感觉挺完整的了,也没有issue,练手也找不到切入点啊。

1 共 5 条评论, 1 页