2 个版本
0.1.1 | 2023年1月18日 |
---|---|
0.1.0 | 2023年1月18日 |
#566 in 机器学习
84KB
1.5K SLoC
profqu_neat
根据 Finn Eggers 的教程 (教程链接) 创建的,他是 Finn Eggers。我尝试从官方 github 仓库 实现 NEAT,但没有成功,所以我使用了 Finn 的实现。
然后我在 YouTube 上找到了 Finn Eggers 和他的教程,这对创建这个库非常有帮助。
网络中不允许循环连接。
示例
use profqu_neat::Neat;
// Load config and create new Neat
Neat::load_config_from_file("src/config.txt");
let mut neat = Neat::new(10, 1, 1000);
// Create inputs
let input: Vec<f32> = vec![rand::random(); 10];
// Try to evolve the clients
for _iteration in 0..200 {
for mut client in neat.iter_clients() {
let fitness = client.calculate(&input)[0];
client.fitness = fitness;
}
neat.evolve();
}
/// Get the best client
let best = neat.best_client().expect("Failed to get client");
/// Print all the data
neat.print_species();
println!("Best: {best:?}");
assert!(best.fitness > 0.8);
依赖
~355KB