/// <summary> /// Starts the underlying timer. /// </summary> public void StartTimer() { if (IsRunning) { throw new InvalidOperationException("The Timer is already running and can only be started once."); } _stopwatch = StopwatchProvider.StartStopwatch(); }
static void Main(string[] args) { Func <double, double> fitness = x => 2 * x + 1; var ga = new GeneticAlgorithm(3000, 10, new OnePointCrossover(), new ClassicMutationOperator(), new RouletteWheelSelection(), fitness); ga.PrintStatistics = true; StopwatchProvider.StartStopWatch(); var result = ga.RunSimulation(5); Console.WriteLine(StopwatchProvider.StopWatchTime()); Console.WriteLine($"x = {result.Chromosome.DecodedValue}, f = {result.Fitness}"); //var ind = new Individual(10); //ind.ReplaceGenes(new bool[] { true, true, true, true, true, true, true, true, true, true }); //Console.WriteLine($"x = {ind.Chromosome.DecodedValue}, f = {fitness(ind.Chromosome.DecodedValue)}"); Console.ReadLine(); return; //var ind1 = new Individual(10); //var ind2 = new Individual(10); //Console.WriteLine("Individual 1: "); //Console.WriteLine(ind1); //Console.WriteLine("Individual 2: "); //Console.WriteLine(ind2); //var crossover = new OnePointCrossover(); //crossover.Crossover(ind1, ind2); //Console.WriteLine("Individual 1: "); //Console.WriteLine(ind1); //Console.WriteLine("Individual 2: "); //Console.WriteLine(ind2); //var mutation = new ClassicMutationOperator(); //Console.WriteLine("--Before mutation: "); //Console.WriteLine("Individual 1: "); //Console.WriteLine(ind1); //mutation.Mutation(ind1, 0.1); //Console.WriteLine("--After mutation: "); //Console.WriteLine("Individual 1: "); //Console.WriteLine(ind1); }
/// <summary> /// Reset to stationary state. You may wish to call this when, for example, switching interface screens. /// </summary> public void Reset() { StopwatchProvider.Stop(); StopwatchProvider.Reset(); StopwatchProvider.Start(); UpdateNumber = 0; _mouseStateMachine.CurrentState.Reset(this); _mouseStateMachine.SetCurrentState(_mouseStationaryState); _mouseStateMachine.SetPreviousState(_mouseStationaryState); }