Ejemplo n.º 1
0
    public void InitializeEA()
    {
        // set up network structure from dropdown
        XmlDocument xmlConfig = new XmlDocument();
        TextAsset   textAsset = (TextAsset)Resources.Load("ExperimentSetups/experiment.config.braid.cppn.split");

        // load in XML
        xmlConfig.LoadXml(textAsset.text);

        // set up experiment
        experiment = new CPPNExperiment();

        experiment.Initialize("Braid Experiment", xmlConfig.DocumentElement, 0, 0);
        experiment.SetOptimizer(this);

        // set up network variables
        messenger      = GameObject.FindObjectOfType <ModelMessenger>();
        PopulationSize = XmlUtils.GetValueAsInt(xmlConfig.DocumentElement, "PopulationSize");
        messenger.SetupEvolutionParameters(PopulationSize);

        UnitContainer = GameObject.Find("UnitContainer");
        if (!UnitContainer)
        {
            UnitContainer = new GameObject("UnitContainer");
        }

        // setup the relevant ui
        IECManager.SetUIToEvolvingState();
        BraidSimulationManager.populationSize  = PopulationSize;
        BraidSimulationManager.evaluationsMade = 0;

        // clean up folders
        FindObjectOfType <StoryboardUtility>().InitializeStoryboardUtility();

        // start the EA
        Generation = 0;
        StartEA();
    }
 public override void Activate(IBlackBox box)
 {
     neat      = box;
     messenger = GameObject.FindObjectOfType <ModelMessenger>();
     ActivateBraidController();
 }
Ejemplo n.º 3
0
        private IEnumerator evaluateList(IList <TGenome> genomeList)
        {
            Debug.Log("---------------------- Evaluating List of genomes ----------------------");

            Dictionary <TGenome, TPhenome>      dict        = new Dictionary <TGenome, TPhenome>();
            Dictionary <TGenome, FitnessInfo[]> fitnessDict = new Dictionary <TGenome, FitnessInfo[]>();

            for (int i = 0; i < m_optimizer.Trials; i++)
            {
                m_phenomeEvaluator.Reset();
                dict = new Dictionary <TGenome, TPhenome>();
                foreach (TGenome genome in genomeList)
                {
                    TPhenome phenome = m_genomeDecoder.Decode(genome);
                    if (i == 0)
                    {
                        fitnessDict.Add(genome, new FitnessInfo[m_optimizer.Trials]);
                    }

                    dict.Add(genome, phenome);
                    Coroutiner.StartCoroutine(m_phenomeEvaluator.Evaluate(phenome));
                }

                Debug.Log("Done creating phenomes...");

                while (!BraidSimulationManager.HasControllersCreatedData())
                {
                    Debug.Log("Waiting on controllers...");
                    yield return(new WaitForSeconds(0.05f));
                }

                ModelMessenger messenger = GameObject.FindObjectOfType <ModelMessenger>();
                messenger.SendMessageToGH();

                while (!BraidSimulationManager.HasControllersEvaluated())
                {
                    yield return(new WaitForSeconds(0.05f));
                }

                BraidSimulationManager.AdvanceGeneration();

                Debug.Log("Getting fitness values...");
                foreach (TGenome genome in dict.Keys)
                {
                    TPhenome phenome = dict[genome];
                    if (phenome != null)
                    {
                        FitnessInfo fitnessInfo = m_phenomeEvaluator.GetLastFitness(phenome);

                        fitnessDict[genome][i] = fitnessInfo;
                    }
                }
                Debug.Log("Done getting fitness values...");
            }


            foreach (TGenome genome in dict.Keys)
            {
                TPhenome phenome = dict[genome];
                if (phenome != null)
                {
                    double fitness = 0;

                    for (int i = 0; i < m_optimizer.Trials; i++)
                    {
                        fitness += fitnessDict[genome][i]._fitness;
                    }

                    fitness /= m_optimizer.Trials; // Averaged fitness

                    genome.EvaluationInfo.SetFitness(fitness);
                    genome.EvaluationInfo.AuxFitnessArr = fitnessDict[genome][0]._auxFitnessArr;
                }
            }

            Debug.Log("---------------------- End of list evaluation ----------------------");
            BraidSimulationManager.evaluationsMade = 0;
        }