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; } }
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; } } } }
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; } } }
public override Individual Clone() { ExampleIndividual newobj = (ExampleIndividual)this.MemberwiseClone(); newobj.fitness = 0f; newobj.trackPoints = new Dictionary <float, float> (this.trackPoints); return(newobj); }
void InitPopulation() { population = new List <Individual>(); while (population.Count < populationSize) { ExampleIndividual newind = new ExampleIndividual(info); //change accordingly newind.Initialize(); population.Add(newind); } }
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); } }
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); }
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); }
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); } } }