Random mutations
This commit is contained in:
parent
2ebfe38bac
commit
35d186cf05
2 changed files with 22 additions and 2 deletions
|
|
@ -22,11 +22,13 @@ impl Formula {
|
|||
}
|
||||
outputs
|
||||
}
|
||||
pub fn mutate(&mut self) {}
|
||||
|
||||
pub fn modify_tree(&mut self) -> NodeModifier {
|
||||
self.tree.modify_tree()
|
||||
}
|
||||
pub fn modify_random_node(&mut self) -> NodeModifier {
|
||||
self.tree.modify_node()
|
||||
}
|
||||
pub fn display_tree(&self) {
|
||||
self.display_recursion(0, vec![&self.tree]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,10 @@
|
|||
use crate::formula::Formula;
|
||||
use rand::random_range;
|
||||
|
||||
const ACTION_ADD: u8 = 0;
|
||||
const ACTION_REMOVE: u8 = 1;
|
||||
const ACTION_INSERT: u8 = 2;
|
||||
const ACTION_MUTATE: u8 = 3;
|
||||
|
||||
pub struct Learner {
|
||||
best_algorithm: Formula,
|
||||
|
|
@ -49,7 +55,19 @@ impl Learner {
|
|||
.0
|
||||
.clone()
|
||||
}
|
||||
fn mutate_formula_randomly(formula: &mut Formula) {}
|
||||
fn mutate_formula_randomly(formula: &mut Formula) {
|
||||
let mut editor = formula.modify_random_node();
|
||||
let decided_action = random_range(0..3);
|
||||
if decided_action == ACTION_ADD {
|
||||
editor.add_node(editor.get_random_node());
|
||||
} else if decided_action == ACTION_REMOVE {
|
||||
editor.remove_node(None);
|
||||
} else if decided_action == ACTION_INSERT {
|
||||
editor.insert_node(editor.get_random_node(), None);
|
||||
} else if decided_action == ACTION_MUTATE {
|
||||
editor.mutate_node();
|
||||
}
|
||||
}
|
||||
fn get_similarity(expected_output: &Vec<f64>, real_output: &Vec<f64>) -> Result<f64, ()> {
|
||||
if expected_output.len() != real_output.len() {
|
||||
return Err(());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue