2 个版本

0.1.1 2023年1月18日
0.1.0 2023年1月18日

#566 in 机器学习

MIT 许可证

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