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

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    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 averti 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
    Points : 444
    Points
    444
    Par défaut
    Tu pourais indiquer tes messages d'erreurs, ca pourait aider.

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    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 averti 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
    Points : 444
    Points
    444
    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 régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    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 averti 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
    Points : 444
    Points
    444
    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?

  7. #7
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

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

    Non, j'ai choisi la deuxième solution, j'essayais de mettre à chaque fois le chemin complet !!! Je vais réessayer avec la première.

    Merci.

  8. #8
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    Par défaut
    Re,

    Je viens d'essayer mais ça ne ùarche pas.

    Regardez ce que j'ai fait :

    J'ai rajouté les include suivants :

    C:\ILOG\OPLSt37\include\ilopl, C:\ILOG\Concert20\include\ilconcert

    Je n'ai pas trouvé le fichier "ilsolver" !!!

    Donc mon code sera :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <vcl.h>
    #pragma hdrstop
    //#include <ilsolver/ilcint.h>
    #ifdef ILUSESTL
    #include <iostream>
    #else
    #include <iostream.h>
    #endif
    #include <oplcomponent.h>
    #include <oplerror.h>
    #include "Unit1.h"
    J'ai à présent des erreurs dans "ilosys.h" qui appartient à "oplcomponent.h", il ne trouve pas "# include <generic.h>" . J'obtiens plein d'erreurs de ce type. Je ne sais pas quoi faire ?!!

    Merci de me proposer une solution, j'en ai vraiment besoin.

  9. #9
    Membre averti 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
    Points : 444
    Points
    444
    Par défaut
    A mon avis c'est plutot le chemin suivant qu'il faut metre dans les options: ["Compilateur C++" -> "Chemin d'inclusion" ]

    C:\ILOG\OPLSt37\include

    Apres, si il y encore des erreurs, il faut inclure les chemins ou se trouve les fichiers manquant.
    Et quand un fichier manquant est du type :
    #include <ilsolver/ilcint.h>
    if faut mettre la directory .../ilsolver (remplacer les ... par le chemin complet
    Bon courage

  10. #10
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    Par défaut
    Pardon, mais je n'ai pas su comment le faire !!!

    Dans les options du projet, j'ai bien un anglet "compilateur", mais il n'y a pas ou spécifier le chemin afin de faire ça ["Compilateur C++" -> "Chemin d'inclusion" ] ?!

    Merci.

  11. #11
    Membre averti 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
    Points : 444
    Points
    444
    Par défaut
    Non effectivement c'est pltutot
    ["Compilateur C++" -> "Chemin et définition" -> "chemin de recherche d'inclusion" ]
    Mais moi, je suis sous Builder2006

  12. #12
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    Par défaut
    Re,

    Dans les options de mon projet, j'ai deux anglets, ils sont représentés dans les fichiers attachés. La première fois, j'ai cherché les fichiers de mes include dans Répertoires/Conditions->Chemin d'inclusion, mais ça n'a pas marché de cette manière. Comme je l'ai déjà mentionné, il ne trouve pas tous les include requis . Est-ce que c'est ce que vous m'aviez proposé de faire ???

    Merci pour votre aide.

  13. #13
    Membre averti 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
    Points : 444
    Points
    444
    Par défaut
    Oui c'est bien là.
    Dans tous les cas, tu dois spécifier là, les chemin ou ce trouve les fichiers d'include qu'il a besoin.
    Il n'y a pas d'autre méthode. Et si aprés avoir ajouter le chemin d'un fichier qu'il n'arrive pas à trouver, il ne le trouve toujours pas, c'est que tu t'ai trompé quelquepart en incluant le chemin.
    Mais là à moin d'etre devant.

    Donne moi un exampe d'include qu'il ne trouve pas et surtout donne moi le chemin que tu as ajouter dans les options

  14. #14
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    Par défaut
    Bonsoir,

    Je vais tenter de vous décrire comment j'ai procédé :

    Alors :

    1) J'ai rajouté les include dont je n'ai besoin comme dans l'image Répertoires.

    2) J'ai écrit les include dans mon programme pour juste tester, comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    #include <vcl.h>
    #pragma hdrstop
    //#include <ilsolver/ilcint.h>
    #ifdef ILUSESTL
    #include <iostream>
    #else
    #include <iostream.h>
    #endif
    #include <oplcomponent.h> 
    #include <oplerror.h>
    #include "Unit1.h"
    J'ai enlevé isolver car je ne le retrouve pas dans mes fichiers, si je le rajoute j'obtiens une erreur comme dans l'image ilsolver non trouvé.

    3) Quand j'exécute ce programme, j'obtiens l'erreur qui est représentée dans l'image generic non trouvé, pourtant j'ai rajouté dans les options du projet l'include "ilopl" puisque "olpcomponent " se trouve dans cet include, et "ilosyst" dans ce dernier, comme représenté dans l'image olpcomponent.

    Je ne comprends pas pourquoi ça bloque à chaque fois et pourquoi je ne trouve pas tous les inculde ?!

    J'espère que j'étais assez claire.

    Merci.

  15. #15
    Membre averti 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
    Points : 444
    Points
    444
    Par défaut
    Je ne pige pas ou tu te gourres parce qu'il faudrait que j'ai le nez dessus. Ce qui m'étonne c'est que dans tes options, tu n'as pas mis "...\include".
    En général inclure ce répertoire est suffisante.
    Désolé de ne pouvoir t'aider plus...A moins de me transmetre tout ton projet et les librairie que j'essaye d'y inclure...

  16. #16
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

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

    Merci pour votre aide.

    Effectivement, je pense que c'est une bonne idée que je vous envoie les include et que vous essayez de les ajouter.

    Je n'ai pas de projet pour l'instant, justement j'attends de résoudre ce problème pour démarrer parce que sinon je programme soit le tout en C++ Builder, soit je combiner avec MatLab (que je ne sais pas faire également, mais je crois que cette manière de procéder est plus utilisée, comparée au Cplex). Essayez juste d'exécuter en rajoutant les include, pour tester si ça marche . Je vous envoie donc les include en pièce attachée. Je ne peux malheureusement tout envoyer d'un coup, alors je vais le faire en plusieurs étapes.

    Merci.

  17. #17
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    Par défaut
    Re,

    Voici le deuxième include.

  18. #18
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    Par défaut
    Re Re,

    Voici le dernier.

    Je viens de me rendre compte que je ne peux pas vous envoyer la bibliothèque olpServer.dll, parce que sinon à mon avis ça ne marche pas.

    J'attends votre réponse.

    Merci.

  19. #19
    Membre averti 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
    Points : 444
    Points
    444
    Par défaut
    Bonjour,

    Je ne comprend pas trop ce que vous m'avez envoyé!
    Si je prend le premier fichier "cplcomponent.h" il contient de include du type :
    #include <ilconcert/ilosys.h>
    #include <ilsolver/ilcint.h>
    #include <ilsolver/ilcfloat.h>
    ...
    ..
    faisant référence à des chemins "ilconcert", "imlsorver" n'apparaissant nulle par dans ce que vous m'avez transmis et de plus les fichier "ilosys.h" , "ilcint.h" n'existe nulle part non plus dans vos zip. Dans ces conditions pas étonnant que le compilateur ne les trouve pas!

  20. #20
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    Par défaut
    Bonsoir,

    Là je ne comprends plus rien .

    Quand je rajoute les include dans Réperoires/Conditions, et bien je ne peux rajouter que les trois fichiers que je vous ai envoyés, je ne peux pas les ouvrir pour inclure ceux qui sont à l'intérieur !!!

    Effectivement, l'include ilsolver est introuvable, comme plusieurs d'autres d'ailleurs !!!

    Apparemment, il n'y a pas d'espoir pour que ça marche, compte tenu qu'il y a des include qui manquent, n'est-ca pas ???

    Merci encore.

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