Advertisement
madalinaradu

IA Evaluare Rucsac

May 29th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. #include<iostream>
  2. #include<conio.h>
  3. #include<iomanip>
  4. #include<time.h>
  5. #include<stdlib.h>
  6. #define C 50
  7. #define NOB 10
  8.  
  9. ///NOB numar obiecte
  10. using namespace std;
  11.  
  12. int ob[]= {4,14,9,18,20,7,12,5,1,33};
  13.  
  14. int eval(int v[]) {
  15.     int prod=0;
  16.     for(int i=0; i<NOB; i++)
  17.         prod+=ob[i]*v[i];   ///calculam produsul scalar intre v si ob
  18.     //cout<<"prod="<<prod<<endl;
  19.     return abs(C-prod);///cat din rucsac mai ramane gol
  20. }
  21.  
  22.  
  23. int main() {
  24.     int v[NOB];
  25.     srand(time(NULL));
  26.     int evaluareOptima=100;///trebuie sa tinda la 0
  27.     while(evaluareOptima!=0) {
  28.         for(int i=0; i<NOB; i++)
  29.             v[i]=rand()%2;
  30.  
  31.         for(int k = 0; k < 100; k++) {
  32.  
  33.  
  34.             int v2[NOB];
  35.             for(int i=0; i<NOB; i++)
  36.                 v2[i]=v[i];
  37.             int p=rand()% NOB;
  38.             v2[p]=1-v2[p];
  39.  
  40.             //cout<<endl;
  41.             //cout<<eval(v2)<<endl;
  42.             if(eval(v2) < eval(v)) {
  43.                 for(int i=0; i<NOB; i++)
  44.                     v[i]=v2[i];
  45.  
  46.             }
  47.         }
  48.         evaluareOptima =eval(v);
  49.     }
  50.  
  51.     for(int i=0; i<NOB; i++)
  52.         cout<<setw(4)<<ob[i]<<"  ";
  53.     cout<<endl;
  54.     for(int i=0; i<NOB; i++)
  55.         cout<<setw(4)<<v[i]<<"  ";
  56.  
  57.     cout<<endl;
  58.     cout<<"Evaluare: "<<eval(v);
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement