Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- public class RandomSelection : SelectionMethod {
- public RandomSelection() : base() {
- }
- public override List<Individual> selectIndividuals(List<Individual> oldpop, int num, int individuos_elitismo, float k) {
- int oldpop_len = oldpop.Count;
- List<Individual> selectedInds = new List<Individual>();
- oldpop.Sort((x, y) => y.Fitness.CompareTo(x.Fitness));
- for (int j = 0; j < individuos_elitismo; j++) {
- selectedInds.Add(oldpop[j].Clone());
- }
- float prob_aux;
- for (int i = 0; i < num - individuos_elitismo; i++) {
- Individual ind = oldpop[Random.Range(0, oldpop_len)];
- Individual ind2 = oldpop[Random.Range(0, oldpop_len)];
- while (ind2.Equals(ind)) {
- ind2 = oldpop[Random.Range(0, oldpop_len)];
- }
- prob_aux = Random.Range(0.0f, 1.0f);
- if (ind.fitness > ind2.fitness && prob_aux < k) {
- selectedInds.Add(ind.Clone());
- } else {
- selectedInds.Add(ind2.Clone());
- }
- }
- return selectedInds;
- }
- List<Individual> randomSelection(List<Individual> oldpop, int num) {
- List<Individual> selectedInds = new List<Individual>();
- int popsize = oldpop.Count;
- for (int i = 0; i < num; i++) {
- //make sure selected individuals are different
- Individual ind = oldpop[Random.Range(0, popsize)];
- while (selectedInds.Contains(ind)) {
- ind = oldpop[Random.Range(0, popsize)];
- }
- selectedInds.Add(ind.Clone()); //we return copies of the selected individuals
- }
- return selectedInds;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement