IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Cplex sous C++ Builder


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Par défaut Cplex sous C++ Builder
    Bonsoir à tous,

    Voilà, j'ai un méga problème à résoudre et je ne sais vraiment pas comment l'aborder. Je vais tenter de vous expliquer clairement :

    Je dois résoudre un programme linéaire en utilisant Cplex, mais l'interface est sous C++ Builder !!! En cherchant dans le Help de Cplex, j'ai bien trouvé quelque chose, mais quand je l'essaye dans C++ Builder, ça bloque . Bon, dans le Help, ils nous demandent de rajouter la bibliothèque OPL server, que j'ai fait sans soucis. Ils exposent le code suivant pour un exemple donné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    #include <ilsolver/ilcint.h>
    #ifdef ILUSESTL
    #include <iostream>
    #else
    #include <iostream.h>
    #endif
    #include <ilopl/oplcomponent.h>
    #include <ilopl/oplerror.h>
     
    ILCSTLBEGIN
     
    class MyReporter : public OPLerrorReporter {
       void notifySyntaxError(const OPLsyntaxError& err){
          cout << "OPL syntax error near line " 
               << err.getLine() << " : " 
               << err.getMessage() << endl;
       }
       void notifySemanticError(const OPLsemanticError& err){
          cout << "OPL semantic error near line " 
               << err.getLine() << " : " 
               << err.getMessage() << endl;
       }
       void notifyRuntimeError(const OPLruntimeError& err){
          cout << "OPL runtime error near line " 
               << err.getLine() << " : " 
               << err.getMessage() << endl;      
       }
       void notifyInternalError(const OPLinternalError& err){
         cout << "OPL internal error : " 
               << err.getMessage() << endl;
       }
    };
    int main(){
       int status = 0;
       OPLsolver solver;
       MyReporter reporter;
       solver.setErrorReporter(&reporter);
     
       try{
         solver.loadInterpretedModelFileAndDataFile
                                       ("d:\ILOG\OPLSl37\opl\scheduler\bridge.mod",
                                        "d:\ILOG\OPLSl37\opl\scheduler\bridge.dat", 1);
           if(solver.solve()){
             int obj = solver.getObjectiveValueInt();
             double time = solver.getTime();
             cout << "\nObjective: " << obj << endl;
             cout << "Time: " << time << endl << endl;
             OPLenum task = solver.getEnum("Task");
             int nbTasks = task.getCard();
             OPLarray activities = solver.getArray("a");
             OPLenumIterator ite = task.getIterator();
             for(; ite.ok() == 1; ite.next()) {
                OPLenumValue c = ite.get();
                OPLactivity act = activities.getActivity(c);
                cout << "Activity '" << c.getName() << "'";
                cout << " starts at " << act.getStart();
                cout << " with duration " << act.getDuration() << endl;
           }
          }else {
             cout << "No solution found" << endl;
           }
       }
       catch(...){
          cout << "An error occurred" << endl;
          status = -1;
       }
     
       solver.close();
       return status;
    }
    Il faut savoir qu'en Cplex, on a un fichier .mod pour écrire notre modèle mathématique et un fichier .dat pour les données du problème. Dans cet exemple on veut résoudre "brige" à partir de C++ Builder. Ce code est en C++. J'ai fait un exemple avec juste un bouton et un mémo pour afficher le résultat.

    La question que je me pose est comment je dois traduire ce code afin que je puisse l'utiliser sous C++ Builder ??? Comment résoudre le problème des include (car j'ai des erreurs au tout début, alors que j'ai rajouté la bibliothèque demandée) ???

    J'ai besoin du résultat que me donne Cplex pour continuer ma programmation !!!

    J'espère que j'étais assez claire pour que vous puissiez m'aider.

    Merci.

  2. #2
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    Tu pourais indiquer tes messages d'erreurs, ca pourait aider.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Par défaut
    Salut,

    Voici les messages d'erreurs que j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [C++ Erreur] Unit1.cpp(5): E2209 Impossible d'ouvrir le fichier include 'ilsolver/ilcint.h'
    [C++ Erreur] Unit1.cpp(11): E2209 Impossible d'ouvrir le fichier include 'ilopl/oplcomponent.h'
    [C++ Erreur] Unit1.cpp(12): E2209 Impossible d'ouvrir le fichier include 'ilopl/oplerror.h'
    Je reconnais que je ne sais pas trop utiliser les include, mais j'ai repris l'exemple qui existe dans le Help !!! Par conséquent, il doit être juste.

    J'espère que cela vous permet de mieux voir ou se situe l'erreur.

    Merci.

  4. #4
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    C'est plutot trivial comme erreur,
    Il ne trouve pas les fichiers d'include que tu as precifiés.
    Tu as 2 choix:
    - Tu mets le nom sans chemin et dans les options de ton projet tu spécifie les chemins ou il faut aller chercher les includes
    - Tu mets le chemin complet de tes *.h

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Par défaut
    Bonsoir ou plutôt bonjour,

    J'ai essayé ce que vous m'aviez proposé, et effectivement c'est ça la solution, mais j'ai un autre problème maintenant, je ne retrouve pas tous les include demandés !!! Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [C++ Erreur] oplcomponent.h(16): E2209 Impossible d'ouvrir le fichier include 'ilsolver/ilcint.h'
    [C++ Erreur] oplcomponent.h(19): E2209 Impossible d'ouvrir le fichier include 'ilplan/linear.h'
    Je ne retrouve même pas les fichiers ilsolver et ilplan !!! Comment faire dans ce cas ???

    Merci de me répondre.

  6. #6
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    ilsorver et ilplan ne sont pas des fichiers mais des chemin relatif.
    Ceux-ci signifie que tes includes contiennent des chemins relatifs et donc qu'il fallait choisir la solution N°1
    Est-ce bien ce que tu as fait?

Discussions similaires

  1. [PowerBuilder] Client Telnet sous Power builder 10
    Par ppronzola dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 30/01/2006, 14h22
  2. application style xp sous c++ builder
    Par sofiane44 dans le forum C++Builder
    Réponses: 1
    Dernier message: 08/01/2006, 15h17
  3. Debug de dll sous C++ Builder
    Par Négrier dans le forum C++Builder
    Réponses: 5
    Dernier message: 26/09/2005, 19h12
  4. Comment on connecte un modem sous C++ Builder?
    Par Snipeyes dans le forum C++Builder
    Réponses: 2
    Dernier message: 28/01/2005, 20h21
  5. DLL sous C++ builder 6
    Par ovdz dans le forum C++Builder
    Réponses: 3
    Dernier message: 05/08/2003, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo