Advertisement
Guest User

Untitled

a guest
Dec 12th, 2018
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.31 KB | None | 0 0
  1. private static Osobnik KrzyżujParęOX(int indeksRodziców, List<Osobnik> rodzice)
  2. {
  3. Osobnik o = new Osobnik();
  4. int któryRodzic = 0;
  5. if(indeksRodziców%2==0)
  6. {
  7. któryRodzic = 1;
  8. }
  9. else
  10. {
  11. któryRodzic = -1;
  12. }
  13.  
  14. int początekKrzyżowania = 0, koniecKrzyżowania = 0, indeksZero = -1;
  15. początekKrzyżowania = RNG.Next(rodzice.Count);
  16. koniecKrzyżowania = RNG.Next(rodzice.Count);
  17.  
  18. if(początekKrzyżowania > koniecKrzyżowania)
  19. {
  20. int tmp = koniecKrzyżowania;
  21. koniecKrzyżowania = początekKrzyżowania;
  22. początekKrzyżowania = tmp;
  23. }
  24.  
  25. for (int j = początekKrzyżowania; j <= koniecKrzyżowania; j++)
  26. {
  27. o.trasa[j] = rodzice[indeksRodziców].trasa[j];
  28. if(rodzice[indeksRodziców].trasa[j] == 0)
  29. {
  30. indeksZero = Array.IndexOf(rodzice[indeksRodziców].trasa,0);
  31. }
  32. }
  33.  
  34. if(indeksZero == -1)
  35. {
  36. indeksZero = Array.IndexOf(rodzice[indeksRodziców + któryRodzic].trasa, 0);
  37. }
  38.  
  39. int licznikRodzica = koniecKrzyżowania + 1, licznikOsobnika = koniecKrzyżowania + 1;
  40.  
  41. while(Array.IndexOf(o.trasa,0) != Array.LastIndexOf(o.trasa,0))
  42. {
  43. if (Array.IndexOf(o.trasa, rodzice[indeksRodziców + któryRodzic].trasa[licznikRodzica]) == -1)
  44. {
  45. o.trasa[licznikOsobnika] = rodzice[indeksRodziców + któryRodzic].trasa[licznikRodzica];
  46. licznikOsobnika++;
  47. }
  48.  
  49. licznikRodzica++;
  50. if(licznikRodzica > 51)
  51. {
  52. licznikRodzica = 0;
  53. }
  54. if(licznikOsobnika > 51)
  55. {
  56. licznikOsobnika = 0;
  57. }
  58. }
  59.  
  60. //for (int j = 0; j < Osobnik.liczbaMiast; j++)
  61. //{
  62. // if (Array.IndexOf(o.trasa, rodzice[indeksRodziców + któryRodzic].trasa[j]) == -1)
  63. // {
  64. // int indeksPrzepisanejWartości = Array.IndexOf(rodzice[indeksRodziców + któryRodzic].trasa, o.trasa[j]);
  65. // while (o.trasa[indeksPrzepisanejWartości] != 0)
  66. // {
  67. // indeksPrzepisanejWartości = Array.IndexOf(rodzice[indeksRodziców + któryRodzic].trasa, o.trasa[indeksPrzepisanejWartości]);
  68. // }
  69. // o.trasa[indeksPrzepisanejWartości] = rodzice[indeksRodziców + któryRodzic].trasa[j];
  70. // }
  71. //}
  72.  
  73. //for (int j = 0; j < Osobnik.liczbaMiast; j++)
  74. //{
  75. // if (Array.IndexOf(o.trasa, rodzice[indeksRodziców + któryRodzic].trasa[j]) == -1)
  76. // {
  77. // o.trasa[Array.IndexOf(o.trasa, 0)] = rodzice[indeksRodziców + któryRodzic].trasa[j];
  78. // }
  79. //}
  80.  
  81. if(SprawdźPoprawnośćTrasy(o))
  82. {
  83. //Console.WriteLine("OK");
  84. }
  85. return o;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement