InfernalSpeed

HillClimbingIA

May 10th, 2018
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. #pragma warning(disable:4996)
  2. #include<iostream>
  3. using namespace std;
  4. #include<conio.h>
  5. #include<stdlib.h>
  6. #include<stdio.h>
  7. #include<time.h>
  8.  
  9. int *initializare() {
  10. int M[] = { 1,2,3,4,5,6,7,8 }, lungime_m = 8;
  11. int *configuratie;
  12. configuratie = (int*)malloc(8 * sizeof(int));
  13. int i = 0;
  14. time_t t;
  15. srand((unsigned)(time(&t)));
  16. while (lungime_m > 0) {
  17. int g = rand() % lungime_m;
  18. configuratie[i++] = M[g];
  19. for (int j = g; j < lungime_m - 1; j++)
  20. M[j] = M[j + 1];
  21. lungime_m--;
  22. }
  23. return configuratie;
  24. }
  25. int evaluare(int *configuratie) {
  26. int erori = 0;
  27. for(int i=0;i<7;i++)
  28. for (int j = i + 1; j < 8; j++)
  29. if (abs(configuratie[i] - configuratie[j]) == abs(i - j))
  30. erori++;
  31.  
  32. return erori;
  33. }
  34. int *perturbare(int *configuratie) {
  35. int x, y, temp;
  36. int lungime_config = 8;
  37. x = rand() % lungime_config;
  38. y = rand() % lungime_config;
  39. while (x == y)
  40. y = rand() % lungime_config;
  41. temp = configuratie[x];
  42. configuratie[x] = configuratie[y];
  43. configuratie[y] = temp;
  44. return configuratie;
  45. }
  46. //
  47.  
  48.  
  49. void main() {
  50. int eval_curenta, *configuratie, *configuratie1;
  51. configuratie1= (int*)malloc(8 * sizeof(int));
  52. configuratie = initializare();
  53. cout << "la inceput:" << endl;
  54. for (int i = 0; i < 8; i++)
  55. cout << configuratie[i] << " ";
  56.  
  57. for (int i = 0; i < 100; i++) {
  58. eval_curenta = evaluare(configuratie);
  59. configuratie1 = perturbare(configuratie);
  60. if (evaluare(configuratie1) < evaluare(configuratie))
  61. for (int j = 0; j < 8; j++)
  62. configuratie[j] = configuratie1[j];
  63. }
  64. cout << endl;
  65. cout << "La final:" << endl;
  66. for (int i = 0; i < 8; i++)
  67. cout << configuratie[i] << " ";
  68.  
  69.  
  70. _getch();
  71. }
Add Comment
Please, Sign In to add comment