public override async void OnNavigatedTo(NavigationContext navigationContext) { base.OnNavigatedTo(navigationContext); var latestNetwork = await _accessService.GetLatestNetwork(); _networkGeneration = latestNetwork.Generation; _blackPlayer = EvolutionService.GetPlayer(latestNetwork.Network); ChangeTurn(); }
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(); }
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(); }); }