extern crate rand;
use rand::Rng;
pub trait SteppingAlg<M> {
fn step<R: Rng>(&self, rng: &mut R, model: &mut M) -> Self;
fn adapt_on(&self) -> Self;
fn adapt_off(&self) -> Self;
}
pub trait AnnealingAlg<M>: SteppingAlg<M> {
fn set_temperature(&self, t: f64) -> Self;
}