cs_Matematica
Messages postés1Date d'inscriptionvendredi 20 avril 2012StatutMembreDernière intervention20 avril 2012
-
20 avril 2012 à 10:49
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024
-
20 avril 2012 à 12:43
J'ai un fichier .lp, ou il y a mon porblème de programation lineaire. Quand j'appele le CPLEX à main pour le resoudre, ça marche très bien. Mais quand j'utilise un code en C++ pour appeler CPLEX, ça ne marche pas. Seulement le valeur de la fonction objectif est just. Les variables recevoient les valeurs bizarres.
// Faire une liason avec le fichier .lp
lp = CPXcreateprob (env, &statut, nomlpin);
// Define objectif function type
CPXchgobjsen(env, lp, CPX_MIN) ;
// Define Prob type : LP, MILP,...
CPXchgprobtype(env, lp, CPXPROB_MILP) ;
// Lecture du fichier .lp
statut = CPXreadcopyprob (env, lp, nomlpin, NULL);
// NULL signfie que la fin du name du fichier du etre par exemple .lp
// Lance les calculs
statut = CPXmipopt (env, lp);
// Enresgistrer le valeur de la fonction objectif dans la variable objval
statut = CPXgetmipobjval (env, lp, &objval);
// CPXgetnumcols retourne la taille du problème et enregistre les valeurs des variables CPXgetmipx dans le mémoire pointé par x.
x = (double *) malloc (CPXgetnumcols(env, lp) * sizeof(double));
statut = CPXgetmipx(env,lp,x,0,CPXgetnumcols(env,lp) -1);
// La routine retourne 1 si c'est un MIP
cout << "Type du probleme: " << CPXgetprobtype(env, lp) << endl;
cout << "Nombre de variables du type binnaire: " << CPXgetnumbin (env, lp) << endl;
cout << "Nombre de variables du type entier: " << CPXgetnumint (env, lp) << endl;
// Accéde les types de gamme de variables
// La routine retourne 0 en cas de succès
cout << "Type variable: " << CPXgetctype(env,lp, xctype, 0,CPXgetnumcols(env,lp)-1) << endl;
// Ouvrir un fichier txt
out.open(fichier);
// Pour savoir se la mémoire de la variable x a été alloué de maniére correct
if (!x)
{
out << " Erro: Memoria Insuficiente" << endl;
}
// Ecrire les variables et la fo dans le fichier txt
for (int i = 0; i <= CPXgetnumcols(env,lp) -1; i++)
{
out << "x" << i << ": " << x[i] << endl;
}
out << "Fonction Objectif: " << objval << endl;
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 20 avril 2012 à 12:43
Bonjour,
C++ n'est pas C#, ej déplace dans le bon forum.
Sinon, pour le code, lis le point 2 de ma signature.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site