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

  FORUM HardWare.fr
  Programmation
  C++

  Programmation C++ et CPLEX

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Programmation C++ et CPLEX

n°1760932
mathematic​a
Posté le 17-07-2008 à 15:17:53  profilanswer
 

Bonjour à vous,  
 
je débute tous jsute en c++ et en Cplex. Actuellement je suis en stage et je dois implémenter mon modèle mathématique en c++ en utilisant des macros qui font appel au solveur Cplex.
 
1. création des variables binaires : j'ai une variable à 4 indices, je souhaiterais savoir comment je dois faire... j'ai pensais à créer un tableau à plusiuers dimensions mais je ne sais pas comment ça fonctionne et a quel endroit il faut le faire, si vous avez des suggestions et/ou des documents à lire, je suis prenant.
 
je vous remercie

mood
Publicité
Posté le 17-07-2008 à 15:17:53  profilanswer
 

n°1760963
Joel F
Real men use unique_ptr
Posté le 17-07-2008 à 15:54:11  profilanswer
 

un exemple de ce que tu veut faire (pas le code, le principe derrière).
CPLX doit bien avoir une doc sur l'interfaçage C/CPLX et donc sur les structures de données associées.

n°1760967
mathematic​a
Posté le 17-07-2008 à 16:01:00  profilanswer
 

ben alors, le but est de réécrire mon modèle mathématique en visual c++, donc je vais créer une classe qui s'appelle modèle mathématique, ensuite a partir de la, je ferais un appel au solveur cplec en utilisant des macros.... ma première fonction serait la création de variables binaires..... ma variable est une varaible comportant 4 indices ... donc c la ou je me demande a quel moment il faut déclarer cette variable , est ce dans le constructeur ou est ce dans la fonction création varables binaires et comment déclarer un vecteur à plusieurs dimensions !!!

n°1761446
mathematic​a
Posté le 18-07-2008 à 13:16:47  profilanswer
 

en gros je veux savoir comment passer d'un tableau a plusieurs dimension en c++ à une variable en cplex le représentant... je m'explique si ce n'est toujours pas aussi clair : j'ai une variable à 4 dimension, pour connaitre son emplacement mémoire une fois les résultats affichés, je créer un tableaux de tableux mais comment je fais pour dire a mon programme que la variable n° xxxx représente la variable X_1111 (avec les indices ijkm qui sont égaux à 1)
 
merci merci !

n°1761555
Joel F
Real men use unique_ptr
Posté le 18-07-2008 à 14:46:52  profilanswer
 

c'est pas parce que ta variable à plusieurs DIMENSIONS que ça correspond à un tableau à plusieurs dimensions.

n°1761931
mathematic​a
Posté le 19-07-2008 à 13:51:25  profilanswer
 

Ah, je fais comment alors pour la déclaration de mes variables à plusieurs dimensiosn ??? merci bcp de m'aider c super simpa de votre part  :bounce:

n°1938624
fleure2008
Posté le 07-11-2009 à 14:15:37  profilanswer
 

bonjour, je suis débutante en CLPex, est ce que vous pouvez m'orienter pour l'instalation de CPLEX et son utilisation. merci beaucoup.

n°2137861
rbluiza
Posté le 20-04-2012 à 10:29:59  profilanswer
 

Je dois faire un générateur en C++ qui fera un lecture d'un fichier lp et apres il appelera CPLEX, pour que ce logiciel execute le fichier. Mais j'arrive pas a reussi. Quand j'appele CPLEX a la main, j'ai une solution juste. Mais quand j'utilise le générateur, seulement le valeur de la fonction objectif est juste. Les variables recevoient les valeurs bizarres.
Ci-dessous il y a le code que j'ai fais:
 
#include <ilcplex/cplex.h>
#include <cstdlib>
#include <string>
#include <iostream>
#include <fstream>  
 
 
using namespace std;
 
 
 
 
 
int main( int argc, char *argv[] ){
 
    char nomlpin[30];
    char fichier[30];
 
    char * xctype;
    CPXENVptr env;
 
    CPXLPptr lp;
    int statut;
    double * x;
    double objval;
    ofstream out;
 
//  si le nombre de parametres inseres n'est pas correct
 
    if (argc != 2)
 
    {
 
        cout << "Utilisation: GenLectExec.exe <Fichier lp>\n";
 
        return -1;
 
    }
 
 
 
    strcpy(nomlpin, argv[1]);
 
    strncpy(fichier, nomlpin, strlen(nomlpin) - 2);
    strcat(fichier, "Response.txt" );
 
 
 
//  Environnement Cplex  
 
    env = CPXopenCPLEX (&statut);
 
     
//  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);
     
    xctype = (char *) malloc (CPXgetnumcols(env, lp) * sizeof(char));
     
    cout << "Nombre de variables: " << CPXgetnumcols(env, lp) << endl;
    cout << "Nombre de contraintes: " << CPXgetnumrows (env, lp) << endl;
     
//  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;
     
//  Fermer le fichier txt
    out.close();
 
    return 0;
}
 
Quelq'un peut m'aider s'il tu plait?????

n°2137997
meroum
ah les math
Posté le 20-04-2012 à 17:39:44  profilanswer
 

Bonsoir, je pense que la déclaration de vos variables qui n'est juste c tout ,peut être que vous les avez déclarer entiers .
je voudrai que vous m'apprenez à programmer en cplex car j'en aurai  besoin pour mon pfe .merci d'avance .


---------------
aimad
n°2138350
rbluiza
Posté le 23-04-2012 à 09:20:43  profilanswer
 

meroum a écrit :

Bonsoir, je pense que la déclaration de vos variables qui n'est juste c tout ,peut être que vous les avez déclarer entiers .
je voudrai que vous m'apprenez à programmer en cplex car j'en aurai  besoin pour mon pfe .merci d'avance .


 
Vous dites les variables qui sont dans le fichier .lp? Elles sont écrit comme Generals ou comme binnaires. Il n'y a aucune qui est entier.
En fait, je sais utilise CPLEX seulement avec fichiers .lp. Je sais pas comme programmer en utilisant une langage... Mais si vous voulez savoir ça je peux vous expliquer...

mood
Publicité
Posté le 23-04-2012 à 09:20:43  profilanswer
 

n°2138483
boulgakov
Posté le 23-04-2012 à 15:01:47  profilanswer
 

meroum a écrit :


je voudrai que vous m'apprenez à programmer en cplex car j'en aurai  besoin pour mon pfe .merci d'avance .


 
http://www-eio.upc.es/lceio/manuals/cplex-11/html/
 
De rien  :jap:  

n°2141360
meroum
ah les math
Posté le 08-05-2012 à 19:45:47  profilanswer
 

Bonsoir,j'ai un problème je n'arrive pas à executé mon problème ,je l'envoya a un fichier pour me donner le  résultat sur un autres logicielle .le problème et que le fichier source ou je met les donnée je ne le voie plus .merci si vous avez des idée .

n°2143847
meroum
ah les math
Posté le 27-05-2012 à 20:13:58  profilanswer
 

Bonjour,  
j'ai un prog mathématique codé sur CPLEX (C++) mais je reçois un message "Error 1016 :restrited version problem size limits.
comment libérer l'espace?
ou bien est ce qu'il ya une fonction CPLEX qui utilise le disque dur comme memoire? »  
pouvez vous m'aider


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

  Programmation C++ et CPLEX

 

Sujets relatifs
[Résolu][C]condition de sortie d'une boucle while = retour chariot[C] Manipulation de chaines dans un fichier
Indicer les lignes d'un fichier texte avec C++[Resolu] asp.net/C#/SQl server2005 affichage resultats recherche
Extraire lignes d'un fichier .csv avec Visual C++[C] Operand incorect .
Programmation aide?Dessiner une belle ligne au stylet
[C# XML Serialize .net 2.0]la programmation pour ordinateur
Plus de sujets relatifs à : Programmation C++ et CPLEX


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