Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. #pragma once
  2. #include <iostream>
  3. #include <vector>
  4. #include <cmath>
  5. #define pi 3.14
  6. #define TMAX 400
  7. #define nr_biti 5
  8. using namespace std;
  9.  
  10. int n;
  11. double N;
  12.  
  13. double DeJong(vector<double> v, int n)
  14. {
  15. double sum = 0;
  16. for (int i = 0; i < n; i++)
  17. sum += v[i] * v[i];
  18. return sum;
  19. }
  20. double Schwefels(vector <double> v, int n)
  21. {
  22. double sum = 0;
  23. for (int i = 0; i < n; i++)
  24. {
  25. sum += (-1 * v[i] * sin(sqrt(abs(v[i]))) + (-1)*v[i] * sin(sqrt(abs(v[i]))));
  26. }
  27. return sum;
  28. }
  29. double Rastrigin(vector <double> v, int n)
  30. {
  31. double sum = 10*n;
  32. for (int i = 0; i < n; i++)
  33. {
  34. sum += v[i] * v[i] - 10 * cos(2 * pi*v[i]);
  35. }
  36. return sum;
  37. }
  38. double Six_Hump(vector <double>v , int n) // n mereu 2
  39. {
  40. return (4 - 2.1*v[0] * v[0] + pow(v[0], 1.33)) * v[0] * v[0] + v[0] * v[1] + ((-4) + 4 * v[1] * v[1])*v[1] * v[1];
  41. }
  42. vector<int> select_vc(int n)
  43. {
  44. vector<int> v;
  45. int i;
  46. for (i = 0; i < n; ++i)
  47. {
  48. v.push_back(rand() % 2);
  49. }
  50. return v;
  51. }
  52. double conversie(vector<int> x, double a, double b)
  53. {
  54. double nr = 0;
  55. for (int i = 0; i < n; ++i)
  56. if (x[i] == 1)
  57. nr = nr + pow(2, i);
  58. double rez = a + nr*(b - a) / pow(2, n);
  59. return rez;
  60. }
  61. double fitness(vector <int>v, double a, double b)
  62. {
  63. return DeJong(v, a, b);
  64. }
  65. void mutatie(vector<double> v, int poz)
  66. {
  67. if (v[poz] == 0)
  68. v[poz] = 1;
  69. else
  70. v[poz] = 0;
  71. }
  72.  
  73.  
  74.  
  75. void HC_first(double a, double b)
  76. {
  77. int t = 0;
  78. N = (b - a)*pow(10, nr_biti);
  79. n = (int)log(ceil(N));
  80.  
  81. do
  82. {
  83. do
  84. {
  85. bool local = false;
  86. double best, vc1d;
  87. vector <double> vc, vc1;
  88. vc = select_vc(n);
  89. best = conversie(vc, a, b);
  90.  
  91. vc1 = vc;
  92. for (i = 0; i < n ; i++)
  93. {
  94. mutatie(vc1, i); // neg bitul de la poz i
  95. vc1d = conversie(vc1, a, b);
  96.  
  97.  
  98. }
  99.  
  100.  
  101. } while (!local);
  102. t++
  103.  
  104. } while (t < TMAX);
  105.  
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement