public Controller(ProblemDescription problem)
        {
            if (problem.Solver is HohmannSolver)
            {
                vm = new HohmannsEngine(117, problem.ScenarioNumber);
            }
            else if (problem.Solver is MeetAndGreetSolver)
            {
                vm = new MeetAndGreetEngine(117, problem.ScenarioNumber, problem.ScenarioNumber);
            }
            else if (problem.Solver is EccentricMeetAndGreetSolver)
            {
                vm = new EccentricMeetAndGreetEngine(117, problem.ScenarioNumber);
            }
            else
            {
                throw new ArgumentException("неизвестный солвер!");
            }

            solverDriver     = new Driver(problem.Solver);
            simulationThread = new Thread(Simulate)
            {
                Name = "Симулятор", IsBackground = true
            };
            simulationThread.Start();
        }
        public void Fly200x()
        {
            XmlConfigurator.Configure();
            var  vm       = new MeetAndGreetEngine(117, 2003, 2003);
            var  driver   = new Driver(new MeetAndGreetSolver());
            var  dv       = new Vector(0, 0);
            int  goodTime = 0;
            bool repeated = false;

            while (!driver.IsEnd())
            {
                double[] outPorts = vm.RunTimeStep(new Vector(dv.x, dv.y));
                dv = driver.RunStep(outPorts);
                //log.Info("TIME = " + time++);
                if (vm.Mem[336] > 0)
                {
                    goodTime = (int)vm.Mem[336];
                    log.Info("GOOD_TIME = " + goodTime);
                }
                else if (goodTime > 0)
                {
                    if (repeated)
                    {
                        break;
                    }
                    repeated = true;
                }
                else
                {
                    repeated = false;
                }
                //log.Info("DISTANCE_TO_TARGET_ORBIT = " + vm.Mem[155]);
            }
            if (driver.UnderlyingSolver.State.Score > 0)
            {
                File.WriteAllBytes("res2001.bin", vm.CreateSubmission());
                Console.WriteLine(driver.UnderlyingSolver.State.Score);
            }
        }