Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2998 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  gecode:Multiple Multidimensional Knapsack Problem (MMKP)

 

Sujet(s) à lire :
 

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

gecode:Multiple Multidimensional Knapsack Problem (MMKP)

n°2198558
manel1989
Posté le 24-07-2013 à 06:17:23  profilanswer
 

salut tout le monde !
je suis nouvelle au monde de programmation par contrainte avec Gecode qui utilise le c++, je vous présente le problème :
 
Mathématiquement, notre problème de placement peut être modélisé par la fusion des deux variantes knapsack introduites : problème du multidimensionnelle et multiples sac à dos  . Le modèle obtenu est appelé Multiple Multidimensional Knapsack Problem (MMKP). Nous supposons que le
environnement d'exécution se compose de m nœuds et nous avons n composants de test qui peuvent leur être confiées. Nous essayons de trouver une solution optimale de placement des composants de test ne viole pas les ressources et les contraintes de connectivité et aussi
maximiser leurs profits de placement. Nous pouvons formuler ce problème en utilisant la Variante MMKP comme suit https://mail-attachment.googleuserc [...] Q&sadssc=1
 
Les ressources fournies par les noeuds m sont donnés par trois vecteurs: C qui contient l'unité centrale de traitement fournie, R qui fournit la mémoire vive et B qui sont disponibles contient le niveau de la batterie de chaque noeud (voir le lien suivant ) https://mail-attachment.googleuserc [...] _IoGLZOyyk
 
En outre, les ressources requises pour chaque composant de test sont illustrés sur trois vecteurs: DC qui porte l'unité centrale requise CPU, le Dr qui contient le nécessaire RAM et Db qui contient la batterie requis par chaque testeur.(voir le lien suivant )https://mail-attachment.googleuserc [...] JF-KMsY1mk
 
Voici mon code que j'ai développé pour résoudre ce problème :

Code :
  1. #include <gecode/driver.hh>
  2. #include <gecode/int.hh>
  3. #include <gecode/search.hh>
  4. #include <gecode/minimodel.hh>
  5. using namespace Gecode;
  6. class MMKP : public Script{
  7. protected:
  8. static const int n=4 ;//number of testers
  9. static const int m=5;// number of nodes
  10. IntArgs R;
  11. IntArgs C;
  12. IntArgs B;
  13. IntArgs Dr;
  14. IntArgs Dc;
  15. IntArgs Db;
  16. IntArgs g;
  17. IntVarArray a;
  18. IntVarArray k;
  19. IntVar l;
  20. public :
  21. enum {
  22.     find_Optimal_Solution, find_realizable_solution
  23.   };
  24. MMKP (const Options& opt) : a(*this,n*m, 0,1){
  25.  R=IntArgs(4,10,15,20,40);
  26.  C=IntArgs(4,20,25,30,40);
  27.  B=IntArgs(4,20,30,35,40);
  28.  Dr=IntArgs(4,5,10,15,25);
  29.  Dc=IntArgs(4,15,20,35,37);
  30.  Db=IntArgs(4,10,15,20,35);
  31.  k=IntVarArray(*this,n*m ,0,100000);
  32.  Matrix <IntVarArray> results(k, n,m);
  33.  //creation variables
  34.  //IntVarArray a(*this,n*m,0,1); // Array of n*m boolean variables
  35.  Matrix <IntVarArray> X (a,n,m);// Matrix "view" of the array a
  36.  // objectiv variable
  37.  IntVar gain (*this, 1,1000000);
  38.  //creation of constraints  
  39.   // ... over rows
  40.  for ( int j=0; j<n;j++)
  41.  {
  42.    linear(*this , X.row(j),IRT_EQ,1);
  43.  }
  44.  //... over columns
  45.   // first, get the columns, we will use an intermidiare matrix XDual
  46.  IntVarArray b(*this, m*n,0,1);
  47.  Matrix <IntVarArray> XDual (b, m, n);
  48.  for (int i=0; i<m;i++)
  49.  {
  50.   for ( int j =0; j<n ; j++)
  51.   {
  52.    XDual(i,j)=X(j,i);
  53.   }
  54.  }
  55.  for (int j = 0; j < m; j++) {
  56.   linear(*this, Dr,XDual.row(j),IRT_NQ, R[j]);
  57.  }
  58.  for (int j = 0; j < m; j++) {
  59.   linear (*this, Dc, XDual.row(j), IRT_NQ,C[j]);
  60.  }
  61.  for (int j = 0; j < m; j++) {
  62.   linear (*this, Db, XDual.row(j), IRT_NQ,B[j]);
  63.  }
  64.  switch (opt.model()) {
  65.         case find_Optimal_Solution:
  66.   g=IntArgs(4,20,30,40,50);
  67.  //Objective function
  68.  for (int i = 0; i < n; i++)
  69.  {
  70.   linear(*this, g,X.row(i), IRT_EQ, gain);
  71.  }
  72.  for ( int i=0; i<n;i++){
  73.   for ( int j =0; j<m;j++)
  74.   {
  75.    results(i,j)=X(i,j);
  76.   }
  77.  }
  78.  break;
  79.  case find_realizable_solution:
  80.   for ( int i=0; i<n;i++){
  81.   for ( int j =0; j<m;j++)
  82.   {
  83.    results(i,j)=X(i,j);
  84.   }
  85.  }
  86.         break;
  87.      // post branching
  88.         branch(*this, a, INT_VAR_SIZE_MAX(), INT_VAL_MAX());
  89.  }
  90. }
  91.  // search support
  92.      MMKP(bool share, MMKP& s) : Script(share, s){
  93.       a.update(*this, share, s.a);
  94.     }
  95.     virtual Space* copy(bool share) {
  96.       return new MMKP(share,*this);
  97.     }
  98.     // print solution
  99.     void print(std::ostream& os) const  {
  100.  for(int i = 0; i < n; i++) {
  101.   for(int j = 0; j < n; j++)
  102.            os << std::setw(4) << a[i * n + j];
  103.   os << std::endl;
  104. }
  105. }
  106. };
  107. // main function
  108. int main(int argc, char* argv[]) {
  109.   Options opt("MMKP" );
  110.   opt.model(MMKP::find_Optimal_Solution);
  111.   opt.model(MMKP::find_realizable_solution);
  112.   opt.parse(argc,argv);
  113.   Script::run<MMKP,DFS,Options>(opt);
  114.   return 0;
  115. }


Cela m'affiche des erreurs que je ne comprend pas,donc je serai très reconnaissante si vous pouvez m'aidez  
merci d'avance


---------------
when there is a will there is a way
mood
Publicité
Posté le 24-07-2013 à 06:17:23  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  gecode:Multiple Multidimensional Knapsack Problem (MMKP)

 

Sujets relatifs
C++ - Cplex problem de variable dans une boucle for & randomSauvegarde multiple xcopy ?
[Ada] Multiple with clause.selection multiple sur une jtable et deselection
Besoin d'aide, blog multiple-image[JS et PHP] Récupération des donées d'un Select multiple
JSON php vers jquery Ajax problemdelphi, file Directory problem!!
Besoin d'aide pour problem entre yoxview et IEAjax / GWT / Androïd / Multiple appels
Plus de sujets relatifs à : gecode:Multiple Multidimensional Knapsack Problem (MMKP)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR