4个版本
0.1.0-alpha.4 | 2024年6月25日 |
---|---|
0.1.0-alpha.3 | 2024年6月24日 |
0.1.0-alpha.2 | 2024年4月22日 |
0.1.0-alpha.1 | 2023年11月10日 |
#463 在 机器学习 中
115KB
2K SLoC
Evo RL
Evo RL是一个用Rust编写的机器学习库,旨在探索创建人工神经网络的进化策略。神经网络作为由直接编码方案指定的图来实现,允许在选择过程中进行交叉。
神经进化
神经进化 是人工智能领域的一个分支,利用进化算法创建结构化的人工神经网络。
此库中的主要进化算法灵感来源于 NEAT (K.O. Stanley and R. Miikkulainen) 并实现了截断作为选择机制的随机通用抽样。
关于2024年该领域的最新进展和其他包的调查/讨论,请参阅 此处。
或者 EvoJAX 提供了一个更完整且可扩展的工具包,实现了许多神经进化算法。
仓库
该仓库的代码位于 Github。
Python
可以通过在源代码目录中运行 maturin develop
来构建一个python包 (evo_rl)。示例包含在 examples
目录中。
以下是一个代码片段
#A Python script which trains an agent to solve the mountain car task in OpenAI's Gymnasium
import evo_rl
import logging
from utils import MountainCarEnvironment, visualize_gen
import gymnasium as gym
import numpy as np
FORMAT = '%(levelname)s %(name)s %(asctime)-15s %(filename)s:%(lineno)d %(message)s'
logging.basicConfig(format=FORMAT)
logging.getLogger().setLevel(logging.INFO)
population_size = 200
configuration = {
"population_size": population_size,
"survival_rate": 0.2,
"mutation_rate": 0.4,
"input_size": 2,
"output_size": 2,
"topology_mutation_rate": 0.4,
"project_name": "mountaincar",
"project_directory": "mc_agents"
}
env = gym.make('MountainCarContinuous-v0')
mc = MountainCarEnvironment(env, configuration)
p = evo_rl.PopulationApi(configuration)
while p.generation < 1000:
for agent in range(population_size):
mc.evaluate_agent(p, agent)
if p.fitness > 100:
break
p.update_population_fitness()
p.report()
p.evolve_step()
运行测试
详细
RUST_LOG=[debug/info] cargo test -- --nocapture
依赖项
~14–21MB
~299K SLoC