public FourDFieldSubsQTable(RLClientBase client, int numTeammates, int myUnum)
            : base(client, numTeammates, myUnum, true)
        {
            //if (Program.LoadingGenome)
            //{
            //    try
            //    {
            //        XmlDocument doc = new XmlDocument();
            //        doc.Load(Program.LoadedGenomePath);
            //        var readCPPN = XmlNeatGenomeReaderStatic.Read(doc);

            //        var substrateBallOwner = new TwoLayerSandwichSubstrate(Rows, Cols + 2,
            //            NeatExpParams.AddBiasToSubstrate, HyperNEATParameters.substrateActivationFunction, 0);
            //        var substrateNotBallOwner = new TwoLayerSandwichSubstrate(Rows, Cols + 2,
            //            NeatExpParams.AddBiasToSubstrate, HyperNEATParameters.substrateActivationFunction,
            //            NeatExpParams.AddBiasToSubstrate ? 2 : 1);

            //        SharpNeatLib.NeatGenome.NeatGenome tempGenomeBallOwner = substrateBallOwner.GenerateGenome(readCPPN.Decode(HyperNEATParameters.substrateActivationFunction));
            //        m_loadedNetworkBallOwner = tempGenomeBallOwner.Decode(HyperNEATParameters.substrateActivationFunction);

            //        SharpNeatLib.NeatGenome.NeatGenome tempGenomeNotBallOwner = substrateNotBallOwner.GenerateGenome(readCPPN.Decode(HyperNEATParameters.substrateActivationFunction));
            //        m_loadedNetworkNotBallOwner = tempGenomeNotBallOwner.Decode(HyperNEATParameters.substrateActivationFunction);

            //        loadingBehaviour = true;
            //    }
            //    catch (Exception ex)
            //    {
            //        Console.WriteLine(ex.ToString());
            //        loadingBehaviour = false;
            //    }
            //}
        }
        public NeatCentralizedQTableBase(RLClientBase client, int numTeammates, int myUnum)
        {
            m_client = client;
            m_rows   = client.EnvRows;
            m_cols   = client.EnvCols;

            m_numTeammates = numTeammates;
            m_myUnum       = myUnum;
            m_numActions   = SoccerAction.GetActionCount(Params.MoveKings, m_numTeammates);

            this.PerformanceNetworkToEvaluate = new NeatPlayerPerformanceStats();

            if (NeatExpParams.SaveFitnessGrowth)
            {
                m_eaLogger = new PerformanceLogger(String.Format("EALogs/{0}-{1}-{2}",
                                                                 m_client.MyTeamName, m_myUnum, m_client.PerformanceLoggerMethodName), false);

                m_eaLogger.WriteLine("% Generation  BestFitness MeanFitness AvgComplexity");
            }

            Thread evoThread = new Thread(EvolutionaryThread);

            evoThread.Start();

            m_eventNewNetReady.WaitOne();
        }
        public FieldSubs3LQTable(RLClientBase client, int numTeammates, int myUnum)
            : base(client, numTeammates, myUnum, false)
        {
            if (Program.LoadingGenome)
            {
                try
                {
                    var doc = new XmlDocument();
                    doc.Load(Program.LoadedGenomePath);
                    NeatGenome readCPPN = XmlNeatGenomeReaderStatic.Read(doc);

                    var substrate = new MultiLayerSandwichSubstrate(Rows, Cols + 2, NeatExpParams.SubstrateLayers,
                                                                    NeatExpParams.AddBiasToSubstrate, HyperNEATParameters.substrateActivationFunction);

                    SharpNeatLib.NeatGenome.NeatGenome tempGenome = substrate.GenerateGenome(readCPPN.Decode(HyperNEATParameters.substrateActivationFunction));
                    m_loadedNetwork = tempGenome.Decode(HyperNEATParameters.substrateActivationFunction);

                    m_loadingBehaviour = true;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                    m_loadingBehaviour = false;
                }
            }
        }
        public ControllerForm(RLClientBase client)
        {
            InitializeComponent();

            foreach (string name in Enum.GetNames(typeof(Params.DM.MethodTypes)))
            {
                comboMethods.Items.Add(name);
            }

            comboMethods.SelectedItem = Params.DM.Method.ToString();

            SetClient(client);
            cbIsOnline_CheckedChanged(this, null);
        }
        public HyperNEATQTable(RLClientBase client, int numTeammates, int myUnum)
        {
            m_client = client;
            m_rows   = client.EnvRows;
            m_cols   = client.EnvCols;

            m_numTeammates = numTeammates;
            m_myUnum       = myUnum;
            m_numActions   = SoccerAction.GetActionCount(Params.MoveKings, m_numTeammates);

            if (NeatExpParams.SaveFitnessGrowth)
            {
                m_eaLogger = new PerformanceLogger(String.Format("EALogs/{0}-{1}",
                                                                 m_client.MyTeamName, m_myUnum), false);

                m_eaLogger.WriteLine("% generation  bestfitness");
            }

            Thread evoThread = new Thread(EvolutionaryThread);

            evoThread.Start();

            m_eventNewNetReady.WaitOne();
        }
 private void SetClient(RLClientBase client)
 {
     m_client  = client;
     this.Text = String.Format("{0} {1}", client.MyTeamName, client.MyUnum);
 }