private void UpdateGeneticSettings(int index) { IGeneticSettings settings = null; _visitor = new AlgorithmOptionVisitorParam(null, (x) => settings = x); _visitor.Visit(AlgorithmElements[index]); if (settings != null) { IGeneticSettings newSettings = ConvertToViewModelSettings( _model.UpdateAlgorithm(index, ConvertToModelSettings(settings))); if (settings != newSettings) { settings.SelectionRate = newSettings.SelectionRate; settings.AbsoluteSelection = newSettings.AbsoluteSelection; settings.MutationChance = newSettings.MutationChance; settings.StablePairWeight = newSettings.StablePairWeight; settings.GroupHappinessWeight = newSettings.GroupHappinessWeight; settings.EgalitarianHappinessWeight = newSettings.EgalitarianHappinessWeight; settings.Size = newSettings.Size; settings.Generations = newSettings.Generations; } OnPropertyChanged("AlgorithmOptions"); } }
public IGeneticSettings UpdateAlgorithm(int index, IGeneticSettings settings) { AlgorithmVisitorParam visitor = new AlgorithmVisitorParam(null, (algorithm) => UpdateGeneticAlgorithm(algorithm, settings)); visitor.Visit(Context.Algorithms[index].Element); return(settings); }
private IGeneticSettings ConvertToModelSettings(IGeneticSettings settings) { IGeneticSettings newSettings = new Settings { AbsoluteSelection = settings.AbsoluteSelection / 100, SelectionRate = settings.SelectionRate / 100, MutationChance = settings.MutationChance / 100, StablePairWeight = settings.StablePairWeight, GroupHappinessWeight = settings.GroupHappinessWeight, EgalitarianHappinessWeight = settings.EgalitarianHappinessWeight, Generations = settings.Generations, Size = settings.Size }; return(newSettings); }
private void OnNewGeneticAlgorithmCommand() { IGeneticSettings settings = _model.CreateGeneticAlgorithm(); AlgorithmOptionGenetic alg = new AlgorithmOptionGenetic( _context.GetAlgorithms.Last().Name, AlgorithmOptions.Count(), ConvertToViewModelSettings(settings) ); alg.Changed += new EventHandler <AlgorithmOptionChangedEventArgs>(AlgorithmOption_Changed); AlgorithmOptions.Add(alg); AlgorithmElements.Add(alg); //UpdateGeneticSettings(alg.Index); OnPropertyChanged("AlgorithmOptions"); }
private void UpdateGeneticAlgorithm(GeneticAlgorithm algorithm, IGeneticSettings settings) { GeneticSettings newSettings = new GeneticSettings { SelectionRate = settings.SelectionRate, AbsoluteSelection = settings.AbsoluteSelection, MutationChance = settings.MutationChance, StablePairWeight = settings.StablePairWeight, GroupHappinessWeight = settings.GroupHappinessWeight, EgalitarianHappinessWeight = settings.EgalitarianHappinessWeight, Size = settings.Size, Generations = settings.Generations }; algorithm.Settings = newSettings; settings = newSettings; Context.AlgorithmsChanged = true; }