(&'a mut self, seed: &Program)
| 53 | } |
| 54 | |
| 55 | pub fn select_seed_exclude<'a>(&'a mut self, seed: &Program) -> &'a Program { |
| 56 | if self.seed_queue.len() == 1 { |
| 57 | self.seed_queue[0].increase_visited(); |
| 58 | let program = &self.seed_queue[0]; |
| 59 | self.save_program(program).unwrap(); |
| 60 | return program; |
| 61 | } |
| 62 | let mut seed_queue: Vec<&mut Program> = self |
| 63 | .seed_queue |
| 64 | .iter_mut() |
| 65 | .filter(|x| x.id != seed.id) |
| 66 | .collect(); |
| 67 | let qualities: Vec<f32> = seed_queue.iter().map(|seed| seed.get_weight()).collect(); |
| 68 | let choose = crate::program::rand::weighted_choose(qualities); |
| 69 | seed_queue[choose].increase_visited(); |
| 70 | let select = seed_queue[choose].id; |
| 71 | let program = self.get_seed_from_queue(select); |
| 72 | self.save_program(program).unwrap(); |
| 73 | program |
| 74 | } |
| 75 | |
| 76 | pub fn update_seed_queue( |
| 77 | &mut self, |
no test coverage detected