Esempio n. 1
0
        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");
            }
        }
Esempio n. 2
0
        public IGeneticSettings UpdateAlgorithm(int index, IGeneticSettings settings)
        {
            AlgorithmVisitorParam visitor = new AlgorithmVisitorParam(null,
                                                                      (algorithm) => UpdateGeneticAlgorithm(algorithm, settings));

            visitor.Visit(Context.Algorithms[index].Element);
            return(settings);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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");
        }
Esempio n. 5
0
        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;
        }