Ejemplo n.º 1
0
    void AddToPool(GeneticAgent agent)
    {
        pool.Add(agent);
        pool.Sort();

        pool.Sort();

        if (pool.Count > maxPoolSize)
        {
            GeneticAgent a = pool[pool.Count - 1];
            Destroy(a.gameObject);
            pool.RemoveAt(pool.Count - 1);
        }
    }
Ejemplo n.º 2
0
    GeneticAgent CreateAgentFromCrossOver(GeneticAgent parentOne, GeneticAgent parentTwo)
    {
        NeuralNet neuralNetwork = parentOne.neuralNetwork;

        if (parentOne != parentTwo)
        {
            neuralNetwork = CreateNeuralNetworkFromCrossOver(parentOne.neuralNetwork, parentTwo.neuralNetwork);
        }

        var agent = AddAgentToSimulation();

        agent.neuralNetwork = neuralNetwork;

        return(agent);
    }
Ejemplo n.º 3
0
    /*
     * bool :PoolSort(std::shared_ptr<C_GeneticAgent> a, std::shared_ptr<C_GeneticAgent> b)
     * {
     *  return a->GetTimeAlive() > b->GetTimeAlive();
     * }
     */


    void Update()
    {
        for (int i = agents.Count - 1; i >= 0; i--)
        {
            GeneticAgent o            = agents[i];
            var          geneticAgent = o.GetComponent <GeneticAgent>();

            if (geneticAgent.energy <= 0)
            {
                AddToPool(o);

                CalculateTotalFitness();

                if (pool.Count > 1)
                {
                    int parentOne = FitnessProportionateSelection();
                    int parentTwo = FitnessProportionateSelection();


                    GeneticAgent agent = CreateAgentFromCrossOver(pool[parentOne], pool[parentTwo]);


                    float mutation = Random.value;
                    if (mutation < mutationChance)
                    {
                        agent.neuralNetwork.Mutate();
                    }


                    agents.Add(agent);
                }

                agents.RemoveAt(i);
                o.gameObject.SetActive(false);
            }
        }
    }
Ejemplo n.º 4
0
 private void Awake()
 {
     agent = GetComponent <GeneticAgent>();
 }
Ejemplo n.º 5
0
 // Use this for initialization
 void Start()
 {
     agent = GetComponent <GeneticAgent>();
 }