Exemple #1
0
    public virtual void InitPopulation()
    {
        switch (typeOfIndividual)
        {
        case IndividualType.Example:
            population = new List <Individual> ();

            while (population.Count < populationSize)
            {
                ExampleIndividual new_ind = new ExampleIndividual(individualSize, individualMultiplier);
                new_ind.Initialize();
                new_ind.Translate();
                population.Add(new_ind);
            }
            break;

        case IndividualType.BitFlip:
            population = new List <Individual> ();

            while (population.Count < populationSize)
            {
                BitFlipIndividual new_ind = new BitFlipIndividual(individualSize, individualMultiplier);
                new_ind.Initialize();
                new_ind.Translate();
                population.Add(new_ind);
            }
            break;
        }
    }
Exemple #2
0
    public override void Crossover(Individual partner, float probability, int Ncortes)
    {
        int  cromI;
        bool cromB;
        ExampleIndividual crom = (ExampleIndividual)partner;

        if (Random.value < probability)
        {
            List <int> nCorte = new List <int>();
            for (int i = 0; i < Ncortes; i++)
            {
                int aux = Random.Range(0, chromosomeSize);
                while (nCorte.Contains(aux))
                {
                    aux = Random.Range(0, chromosomeSize);
                }
                nCorte.Add(aux);
            }
            nCorte.Sort();
            for (int i = 1; i < nCorte.Count; i += 2)
            {
                for (int j = nCorte [i - 1]; j < nCorte [i]; j++)
                {
                    cromI = this.chromosome1 [j];
                    cromB = this.chromosome2 [j];
                    this.chromosome1 [j] = crom.chromosome1 [j];
                    this.chromosome2 [j] = crom.chromosome2 [j];
                    crom.chromosome1 [j] = cromI;
                    crom.chromosome2 [j] = cromB;
                }
            }
        }
    }
Exemple #3
0
    public override void Crossover(Individual partner, float probability)
    {
        //N_Point Crossover
        //Basic theory:
        //1: random probability of happening the crossover between 0f and 1f
        //Loop through all chromossome pairs
        //Pick a random position to cut (n_cuts) ---------> should be dynamically changed in Unity, not in the code
        //Create 2 new chromossomes with the two parts cut (Clone?)
        ExampleIndividual bitFlipPartner = (ExampleIndividual)partner;

        //Debug.Log (n_cuts + " cuts");

        if (UnityEngine.Random.Range(0f, 1f) > probability)
        {
            return;
        }
        int crossoverPoint = Mathf.FloorToInt(chromosomeSize / (n_cuts + 1));

        for (int i = crossoverPoint; i < chromosomeSize; i += 2 * crossoverPoint)
        {
            for (int j = i; j < chromosomeSize && j < i + crossoverPoint; j++)
            {
                int  temp1 = chromosome1 [j];
                bool temp2 = chromosome2 [j];
                chromosome1 [j] = bitFlipPartner.chromosome1 [j];
                chromosome2 [j] = bitFlipPartner.chromosome2 [j];

                bitFlipPartner.chromosome1 [j] = temp1;
                bitFlipPartner.chromosome2 [j] = temp2;
            }
        }
    }
Exemple #4
0
    public override Individual Clone()
    {
        ExampleIndividual newobj = (ExampleIndividual)this.MemberwiseClone();

        newobj.fitness     = 0f;
        newobj.trackPoints = new Dictionary <float, float> (this.trackPoints);
        return(newobj);
    }
Exemple #5
0
 void InitPopulation()
 {
     population = new List <Individual>();
     while (population.Count < populationSize)
     {
         ExampleIndividual newind = new ExampleIndividual(info);             //change accordingly
         newind.Initialize();
         population.Add(newind);
     }
 }
Exemple #6
0
    public virtual void InitPopulation()
    {
        population = new List <Individual> ();

        while (population.Count < populationSize)
        {
            ExampleIndividual new_ind = new ExampleIndividual(individualSize, individualMultiplier);
            new_ind.Initialize();
            new_ind.Translate();
            population.Add(new_ind);
        }
    }
Exemple #7
0
    public override Individual Clone()
    {
        ExampleIndividual new_ind = new ExampleIndividual(totalSize, multiplier);

        chromosome1.CopyTo(new_ind.chromosome1, 0);
        chromosome2.CopyTo(new_ind.chromosome2, 0);

        //new_ind.Translate ();

        new_ind.fitness   = 0.0f;
        new_ind.evaluated = false;

        return(new_ind);
    }
Exemple #8
0
    public override Individual Clone()
    {
        ExampleIndividual new_ind = new ExampleIndividual(totalSize, multiplier);

        chromosome1.CopyTo(new_ind.chromosome1, 0);
        chromosome2.CopyTo(new_ind.chromosome2, 0);

        //new_ind.Translate ();

        new_ind.fitness   = 0.0f;
        new_ind.evaluated = false;
        //new_ind.trackPoints = new Dictionary<float,float> (this.trackPoints);

        return(new_ind);
    }
Exemple #9
0
 void InitPopulation()
 {
     population = new List <Individual>();
     while (population.Count < populationSize)
     {
         if (individuo == 0)
         {
             ExampleIndividual newind = new ExampleIndividual(info);
             newind.Initialize();
             population.Add(newind);
         }
         if (individuo == 1)
         {
             NovoIndividuo newind = new NovoIndividuo(info, numPontosCorte);
             newind.Initialize();
             population.Add(newind);
         }
     }
 }