Advertisement
Guest User

Untitled

a guest
Apr 30th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4.  
  5. public class RandomSelection : SelectionMethod {
  6.  
  7. public RandomSelection() : base() {
  8.  
  9. }
  10. public override List<Individual> selectIndividuals(List<Individual> oldpop, int num, int individuos_elitismo, float k) {
  11. int oldpop_len = oldpop.Count;
  12. List<Individual> selectedInds = new List<Individual>();
  13. oldpop.Sort((x, y) => y.Fitness.CompareTo(x.Fitness));
  14. for (int j = 0; j < individuos_elitismo; j++) {
  15. selectedInds.Add(oldpop[j].Clone());
  16. }
  17. float prob_aux;
  18. for (int i = 0; i < num - individuos_elitismo; i++) {
  19. Individual ind = oldpop[Random.Range(0, oldpop_len)];
  20. Individual ind2 = oldpop[Random.Range(0, oldpop_len)];
  21. while (ind2.Equals(ind)) {
  22. ind2 = oldpop[Random.Range(0, oldpop_len)];
  23. }
  24. prob_aux = Random.Range(0.0f, 1.0f);
  25. if (ind.fitness > ind2.fitness && prob_aux < k) {
  26. selectedInds.Add(ind.Clone());
  27. } else {
  28. selectedInds.Add(ind2.Clone());
  29. }
  30. }
  31. return selectedInds;
  32. }
  33.  
  34.  
  35. List<Individual> randomSelection(List<Individual> oldpop, int num) {
  36.  
  37. List<Individual> selectedInds = new List<Individual>();
  38. int popsize = oldpop.Count;
  39. for (int i = 0; i < num; i++) {
  40. //make sure selected individuals are different
  41. Individual ind = oldpop[Random.Range(0, popsize)];
  42. while (selectedInds.Contains(ind)) {
  43. ind = oldpop[Random.Range(0, popsize)];
  44. }
  45. selectedInds.Add(ind.Clone()); //we return copies of the selected individuals
  46. }
  47.  
  48. return selectedInds;
  49. }
  50.  
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement