rl 0.4.0

A reinforcement learning library
Documentation
use rl::{
    algo::q_table::{QTableAgent, QTableAgentConfig},
    gym::GrassyField,
    viz,
};

const FIELD_SIZE: usize = 20;
const NUM_EPISODES: u16 = 10000;

fn main() {
    let mut env = GrassyField::<FIELD_SIZE>::new();
    let config = QTableAgentConfig {
        gamma: 0.95,
        ..Default::default()
    };
    let mut agent = QTableAgent::new(config);

    let (handle, tx) = viz::init(env.report.keys(), NUM_EPISODES);

    for i in 0..NUM_EPISODES {
        agent.go(&mut env);
        let report = env.report.take();
        tx.send(viz::Update {
            episode: i,
            data: report.values().copied().collect(),
        })
        .unwrap();
    }

    let _ = handle.join();
}