begin process at 2012 05 30 06:03:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Divers

 > 

la programmation de l'algorithme du simplexe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

la programmation de l'algorithme du simplexe

jeudi 12 février 2009 à 13:10:36 | la programmation de l'algorithme du simplexe

soums2009



salut à tous
j'ai un probleme  avec mon code qui implemente l'algoritme du symplexe et je sollicite votre aide pour pouvoir terminer et rendre mon devoir avant le 18/02/2009
voici le code que j'ai fais :
#include<stdio.h>
#include<stdlib.h>
#define N 8
#define M 8
int RechCP(float A[M][N],int NBC );
int RechLP(float A[M][N],int cp);/*
void simplexe(float* A,int NBL,int NBC); */
void affichMat(float A[M][N],int NBL,int NBC);

int LP, CP;
float pivot;

  float A[M][N] ;
  int n,m;
  int rep;
int main(void)
  {
   int i,j, NBC;
   int NBL;

  printf("donner le nombre de variables \t");
 scanf("%d",&n);
 printf("\n donner le nombre de contraintes \t");
 scanf("%d",&m);
 NBL=m+2;
 NBC=m+n+2;
 /* printf("maximiser ou minimiser ? 1=max et 0=min");
 scanf("%d",&rep);    */
  for(i=0;i<m+2;i++)
  for(j=0;j<n+m+2;j++)
   A[i][j]=0;
 printf("donner les coefficients de la fonction objective \n");

  for(j=1;j<n+1;j++)
    {
     printf("A[%d][%d]=",m+1,j);
     scanf("%f",&A[m+1][j]);
     A[m+1][j]=-A[m+1][j];
   }
  printf("donner les coefficients de la matrice des contraintes \n");

    for(i=1;i<m+1;i++)
     {
     printf("entrez %d ieme ligne \n",i);
     for(j=1;j<1+n;j++)
      {
      printf("A[%d][%d]=",i,j);
       scanf("%f",&A[i][j]);
      }
    }

  printf("donner les coefficients de la matrice de bord ou b \n");

   for(i=1;i<m+1;i++)
     {
     printf("A[%d][%d]=",i,n+m+1);
     scanf("%f",&A[i][n+m+1]);
     while(A[i][n+m+1]<=0)
      {
        printf("entrer un nombre positif\n");
        scanf("%f",&A[i][n+m+1]);
      }
     }
   for(i=0,j=1;j<n+m+1;j++)
    A[i][j]=j;
 /***1ere matrice des contraintes*/

  for(i=1;i<m+1;i++)
   {

   A[i][n+i]=1;
   }

   affichMat(A,NBL,NBC);
   printf("colonne du pivot: %d \t\n",RechCP( A,NBC));
   CP=RechCP( A,NBC);
   printf("ligne du pivot  : %d \t\n",RechLP( A,CP));
   LP=RechLP( A,CP);
   pivot=A[LP][CP];
   printf(" pivot          :%f \t\n",pivot);

 

  /* if(rep)
  simplexe(A,NBL,NBC);
 else
   {

    for(i=1;i<n+m+1;i++)
    {
     for(j=1;j<m+1;j++)
     A[i][j]=A[j][i];
    }
  }*/
  return 0;

   }

/**********les procedures**********/

/*******recherche colone du pivot***  ***/
int RechCP(float A[M][N], int NBC )

 {
   int i,CP;
   float min=A[m+1][1];

   for(i=2;i<NBC-1;i++)
   {
   if(min> A[m+1][i]) min=A[m+1][i] ;
   }


   for(i=1;i<NBC-1;i++)

   if(A[m+1][i]== min)
    {
     CP=i;
    }

  return CP;
  }


 /*******recherche ligne du pivot******/

int RechLP(float A[M][N],int cp)
 {
   int i,lp,lglp;
  float LP[8];
  float min;

     lglp=0;
    for(i=1;i<m+1;i++)
    {
     if(A[i][cp]>0)
     {
       LP[i]= A[i][m+n+1]/A[i][cp];
       lglp=lglp+1;
     }
                                  else {A[i][cp]=0;lglp=lglp+1;}
     }

   if(lglp)
    {
     min=LP[1];

    for(i=2;i<lglp+1;i++)
     {
       if(min> LP[i]) min=LP[i] ;  /*recherche du petit rapport positif*/
     }

    for(i=1;i<lglp+1;i++)

     if(LP[i]== min)
     {
      lp=i; /* saisie de la ligne du pivot*/
     }
   return lp;
   }
   else {
      printf("le probleme n'a pas de solution ");
      exit(1);
    }

  }

 

 

 /*******affichage de la matrice******/

void affichMat(float A[M][N],int NBL,int NBC)
  {
   int i;
  int j;

  for(i=1;i<NBL;i++)
  {
  printf("ligne %d \t",i);
  for(j=1;j<NBC;j++)
    {
    printf("%2.2f",A[i][j]);
    printf("\t");
    }
    printf("\n");
  }
   return;
  }

  /**** SIMPLEXE *****/

/*void simplexe(float *A,int NBL, int NBC )
  {  int i=0,j=0,c=0;
   float pivot;

  RechCP( A,NBC,&CP);
  rechLP(A,NBL,NBC,&LP);  /***** pas trop sur  **********/
  /*  pivot=A[CP][LP];

 while(A[NBL-1][CP]<0 && c<20)
  {
    for(i=0;i<NBL;i++)
   {
     if(i==LP)
      {
       for(j=0;j<NBC;j++)
        {
        if(j==CP)
         {
           A[i][j]=1;
         }

        else
         {
           A[i][j]=A[i][j]/pivot;
         }
         }
        }
     else
       for(j=0;j<NBC;j++)

        {
         if(j==CP)

         {
            A[i][j]=0;
         }
        else
          {
            A[i][j]=A[i][j]-A[LP][j]*A[i][CP]/pivot;
          }
       }
      }
   A[LP][0]=CP;

    affichMat(A,NBL,NBC);
      printf("/n pivot/t : %2.2f",A[LP][CP]);
   }
   printf("/t/t/tvotre probleme à pour solution:");

 }
  printf("/t/t tet celles du dual:");
  for(j=n+1;j<NBC;j++)
 printf(" /t/tU %d = %f",j-n,A[m+1][j]);  }
}
return;
  }


  */

mardi 17 février 2009 à 22:47:04 | Re : la programmation de l'algorithme du simplexe

SebLinck

Illisible...
tu ne dis pas ce qui ne fonctionne pas ...

Cordialement,
Sébastien.


Cette discussion est classée dans : int, printf, for, cp, lp


Répondre à ce message

Sujets en rapport avec ce message

Problem Affichage de mon Tableau [ par Orezza ] salut à tous, j'ai un blem à l'affichage du tableau. l'utilisateur parametre son tableau, c lui qui l'initilize mais j'arrive pas à afficher apres le affichage de caractere dans une grille [ par anzelus ] bonjour, voila, je suis un debutant en c, je dois faire un programme qui affiche une grille de points sur console, apres afficher un caractere special pb en c urgenttttttttttttttttt [ par natacha86 ] bonjour, j'ai un probleme avec mon programme, il ne veut pas sortir, j'ai fais un menu et apparement ya un bug mais je ne comprend rien.le code est as help une fonction qui a besoin de vous [ par natacha86 ] Re bonjour a tout le monde, voila j'ai mis tout le prog si vous voulez tester, en fait le pb viens de la fonctino tri_shell(), je ne sais pas pkoi ell methode de simplexe en c [ par antttar ] #include #include #include #include #include #include #include </ compilation mai au lancement "erreur la memoire ne peu pas pas etre read" [ par touny23 ] je maitrise pas tro le C.mai comme j ai un projet a faire dessus pour la rentré , je sui obligé de m y mettre .j arrive a compiler sous dev-cpp mai lo execution en DEV C++ [ par lucky31 ] bonsoir, j'ai 1 probleme avec l'execution de mon prg ecrit en c et j'utilise le dev c++voila mon code source alors si vous pouvez m'aider merci d'avan random et printf avec for :( [ par sokotanic ] salutj'ai besoin d'aide#include #include #include //Abdou chez les Almohadesusing namespace std;int main(){    srand(time(NULL));int j,i;i Trie bulle [ par afrikanoo ] #include #include void main(){ clrscr(); int n; <font color="#d3d3d encadre un texte en c/c++ [ par lil_adriano ] Slt tout le monde je debute en C/C++ je voudrai faire cadre  pour un mot mais j'y arrive pas.j'ai essayer de faire un mais on peu pas faire un mot cor


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 12,714 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales