static void Simulate() { var heuristic = new GaHeuristic(-0.317854214844296, -0.548457056926845, -0.434173510009484, -0.640044465657585); //var heuristic = new YiyuanLeeHeuristic(); //var heuristic = new ElTetrisHeuristic(); //var heuristic = new ExperimentalHeuristic(); //var heuristic = new MaxBergmarkHeuristic(); var tetrisSearch = new TwoPieceSearch(heuristic); //var tetrisSearch = new OnePieceSearch(heuristic); //var tetrisSearch = new PredictiveSearch(heuristic); //tetrisSearch.Cache = true; //var tetrisSearch = new RecursiveSearch(heuristic); //tetrisSearch.Depth = 3; for (int i = 0; i < _games; i++) { Console.WriteLine($"Game {i + 1}"); var tetrisSimulator = new TetrisSimulator(); var engine = new SimulatorEngine(tetrisSearch, tetrisSimulator); engine.FrameUpdateDelay = 1; engine.PauseTime = 0; engine.Multiplayer = false; //engine.MaxHeight = 10; engine.Render = false; engine.Run(); } }
public double EvaluateFitness(Chromosome chromosome) { var p1 = chromosome.Genes[0].RealValue; var p2 = chromosome.Genes[1].RealValue; var p3 = chromosome.Genes[2].RealValue; var p4 = chromosome.Genes[3].RealValue; var heuristic = new GaHeuristic(p1, p2, p3, p4); var search = new TwoPieceSearch(heuristic); var lines = SimulateAvg(search, _games, _pieces); return(System.Math.Min((1.0 + lines) / 1000000.0, 1.0)); }