4个版本

使用旧的Rust 2015

0.0.4 2017年11月3日
0.0.3 2017年11月3日
0.0.2 2017年10月20日
0.0.1 2017年10月19日

#8 in #mutate

MIT 协议

29KB
736

Petri: 进化计算工具包

运行进化算法的工具

请阅读API文档

注意:此项目目前仍在开发中。如果你偶然发现了这个库:你不应该使用这个库,因为它的功能不完整,API也不稳定。

Travis Status codecov Crates.io badge License: MIT

用法

// Import what algorithms we're going to use
use petri::algo::{Simple, EvolutionaryAlgorithm};
use petri::ops::select::Tournament;
use petri::ops::crossover::TwoPoint;
use petri::ops::mutate::FlipBit;

use rand::thread_rng;

// Create the fitness function to evaluate a genome with
fn fitness_fn(genome: &Vec<bool>) -> u32
{
    let mut ones = 0;
    for c in genome {
        if c {
            ones += 1;
        }
    }

    ones
}

// Create the runner
let mut gen_runner = Simple::new(
    Tournament::with_size(3),
    TwoPoint::default(),
    FlipBit::with_pb(0.02),
    fitness_fn,
    0.01,
    0.05,
    300,
    thread_rng()
);

// Initialize population
gen_runner.initialize(300, || vec![false; 100]);

// run the algorithm
while !gen_runner.is_done() {
    let _ = gen_runner.next();
}

// View our final population
println!("{:?}", gen_runner.population());

贡献

请参阅CONTRIBUTING.md

许可证

双许可以与Rust项目兼容。

根据Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 或MIT许可证 http://opensource.org/licenses/MIT 许可,由您选择。此文件不得根据这些条款进行复制、修改或分发。

依赖

~2.7–4MB
~73K SLoC