Algorithme de niveau pour la résolution du méthode potentiel métra (mpm)

Contenu du snippet

salut,
ce programme, il faut le signaler, ne résoud pas le problème de MPM (pour la planification des projets); mais plutôt détermine le niveau ou le rang de chaque tâche (selon l'ordre contrainte d'antériorité de ces tâches), ce qui est très délicat...

merci

Source / Exemple :

#include <cstdlib>

#include <iostream>



using namespace std;



int d[20][20],k=0,dt[20],nt,test,pop[20];

int r[20];

int main(int argc, char *argv[])

{

    

     printf(" ===========================================================\n");

     printf("  UNIVERSITE DE KINSHASA \n ");

     printf(" DEPARTEMENT D'INFORMATIQUE \n ");

     printf(" ETUDIANT : KAYEMBA KAVUALLA \n ");

     printf(" COURS DE RECHERCHE OPERATIONNELLE\n");

     printf(" ===========================================================\n");  

     

    

    cout<<endl<<endl<<" ALGORITHME DE NIVEAUX POUR LE MPM ";

    cout<<endl<<endl<<" ================================= ";

    

    cout<<endl<<endl<<" Nombre de taches : ";

         cin>>nt;

    cout<<endl;

    test=nt+2;  //le nombre des taches + 2 taches virtuelles

         

      //initialisation de degré à zéro

     for(int a =0;a<=nt+1;a++)

       dt[a]=0;

    

     //incrémentation de degrés et enregistrement de durée

     

     cout<<endl<<" d[i][j]; c-a-d tache i est precedente a tache j ."<<endl;

     cout<<"               Si oui mettre la duree de la tache i, sinon -1 "<<endl<<endl;

    for (int i=0; i<=nt+1; i++)

     {

      for(int j=0; j<=nt+1;j++)

       {

        cout<<" d["<< i<<"][" <<j<<"] = ";

         cin>>d[i][j]; 

         

         if (d[i][j]>-1)

          dt[j]++;

        }       

             

      }    

   //juste pour forcer  

  dt[0]= 0;

  dt[1]=1;

  dt[nt+1]=1;

  

  system("cls");

     printf(" ===========================================================\n");

     printf("  UNIVERSITE DE KINSHASA \n ");

     printf(" DEPARTEMENT D'INFORMATIQUE \n ");

     printf(" ETUDIANT : KAYEMBA KAVUALLA \n ");

     printf(" COURS DE RECHERCHE OPERATIONNELLE\n");

     printf(" ===========================================================\n");  





     cout<<endl<<endl<<" ALGORITHME DE NIVEAUX POUR LE MPM ";

     cout<<endl<<endl<<" ================================= "<<endl<<endl;

  for(int sonnerie=0;sonnerie<5;sonnerie++)

    printf("\a\a\a") ;

  

    //affichage de degré

    cout<<endl<<" dt[i] = k; c-a-d le degre de la tache i est k "<<endl<<endl;

    for(int z=0;z<=nt+1;z++)

   cout<<" dt["<< z<<"] = " <<dt[z] ;

    cout<<endl<<endl;    

  

kavy:

     int love=0;

     

  for(int e=0;e<=nt+1;e++)

   {

          

     if (dt[e]==0)

      {

          pop[love]  = e;

          love++;

          dt[e]=-2;

          test--;                   

        }            

        

     }

     

     //retrouver les rang ou les niveau de chacune des taches

      for(int g=0;g<love;g++)

       {

         r[pop[g]]=k;



          if (test==0) //quand toutes les taches s'épuise, alors on sort

            {goto kaye;}

          for(int h=0;h<=nt+1;h++)

           {

             if(d[pop[g]][h]>-1)

              {dt[h]-=1;}

                   

             }     

         }

         k++; //le compteur de rang ou niveau

         goto kavy;

         

  

       //résultat  

  kaye:     

            cout<<endl<<" r[i] = k; c-a-d le rang ou niveau de la tache i est k"<<endl<<endl;

            for(int l=0;l<=nt+1;l++)

             {

              cout<<" r["<<l<<"]= "<<r[l]<<endl;

              }

      system("PAUSE");

    return EXIT_SUCCESS;

}

Conclusion :

ceci pourra faire pour le problème évoqué, c.à.d. de MPM.
veuillez en profiter
merci
sagessekayemba

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.