Ejemplo n.º 1
0
        public override async void OnNavigatedTo(NavigationContext navigationContext)
        {
            base.OnNavigatedTo(navigationContext);
            var latestNetwork = await _accessService.GetLatestNetwork();

            _networkGeneration = latestNetwork.Generation;
            _blackPlayer       = EvolutionService.GetPlayer(latestNetwork.Network);
            ChangeTurn();
        }
Ejemplo n.º 2
0
        public async Task OnIterationAsync(int iterations)
        {
            using (_profiler.Step(nameof(OnIterationAsync)))
            {
                var lastPopulationKey = _populationHistory.Max(x => x.Key);

                var newPopulationHistory = EvolutionService.RunIterations(iterations: iterations,
                                                                          maxDiffBetweenNode: _maxDiffBetweenNode,
                                                                          population: _populationHistory[lastPopulationKey],
                                                                          matrix: _matrix);

                var bestChromosomeFromHistory = _populationHistory.Select(x => x.Value.BestChromosome)
                                                .OrderBy(x => x.FactorsSum)
                                                .FirstOrDefault()
                                                .DeepCopy();

                foreach (var populationHistory in newPopulationHistory)
                {
                    _populationHistory.Add(populationHistory.Iteration, populationHistory);
                }

                for (int populationKey = lastPopulationKey + 1; populationKey < _populationHistory.Max(x => x.Key); populationKey++)
                {
                    bestChromosomeFromHistory = bestChromosomeFromHistory.FactorsSum < _populationHistory[populationKey].BestChromosome.FactorsSum ?
                                                bestChromosomeFromHistory.DeepCopy() : _populationHistory[populationKey].BestChromosome.DeepCopy();

                    _bestChromosomeChartData.Add(CanvasJsChartService.MapToDataPoint(bestChromosomeFromHistory.FactorsSum, _populationHistory[populationKey].Iteration));

                    var dataPoints = CanvasJsChartService.MapPopulationToDataPoints(_populationHistory[populationKey]);
                    _evolutionChartData = CanvasJsChartService.AddToDataPoints(_evolutionChartData, dataPoints);
                }

                _paretoChartData = ParetoService.GetParetoFrontier(_populationHistory).ToList();

                _paretoConfig.Data = CanvasJsChartService.GetParetoChartData(_paretoChartData);

                _evolutionConfig.Data = CanvasJsChartService.GetEvolutionChartData(_evolutionChartData, _bestChromosomeChartData);

                _graphData    = GraphChartService.GraphDataFromChromosome(bestChromosomeFromHistory, _matrix);
                _graphOptions = GraphChartService.GetBestChromosomeGraphOptions();

                await Task.Run(() => { _graphChart.RenderAsync(_graphData, _graphOptions); });

                await Task.Run(() => { _evolutionChart.RenderAsync(_evolutionConfig); });

                await Task.Run(() => { _paretoChart.RenderAsync(_paretoConfig); });
            }
            Console.WriteLine(_profiler.RenderPlainText());
            GC.Collect();
        }
Ejemplo n.º 3
0
 public DemoViewModel(IAccessService accessService, INotificationService notificationService)
 {
     _accessService       = accessService;
     _notificationService = notificationService;
     _timer = new Timer(3000)
     {
         AutoReset = true
     };
     _timer.Elapsed += (sender, args) => ChangeTurn();
     BindingOperations.EnableCollectionSynchronization(Board, new object());
     StartGameCommand = new DelegateCommand(async() =>
     {
         var whiteNetwork = await _accessService.GetByGeneration(WhiteGeneration);
         var blackNetwork = await _accessService.GetByGeneration(BlackGeneration);
         _whitePlayer     = EvolutionService.GetPlayer(whiteNetwork.Network);
         _blackPlayer     = EvolutionService.GetPlayer(blackNetwork.Network);
         Reset();
         _timer.Start();
     });
 }