J'essaye de construire et de résoudre plusieurs modèles en utilisant cplex (IloCplex
) en C++. J'ai aléatoirement construit ces trois modèles sur papier mais je ne peux pas les construire dans une boucle for.Construction d'un modèle dans une boucle for C++ (avec Cplex Concert Technology)
Minimize 2x1 + 5x2
S.t. 3x1 + 2x2<=5
x1,x2 >= 0
Minimize x1 + 3x2
S.t. 2x1 + 5x2 >= 3
x1,x2>=0
Minimize 4x1+2x2
s.t. x1 – x2 <= 0
x1,x2>=0
Voici un extrait court et simple de ce que j'essaie de faire.
Je suis le débogage et l'erreur est renvoyée à cplex.extract(model);
J'ai aussi essayé (en place de cette ligne) IloCplex cplex(model)
ainsi; cependant, cela lance aussi la même erreur. J'ai également essayé d'avoir le IloEnv
et env.end()
à la fois dans et hors de la boucle for et rien ne change.
#include <iostream>
#include <sstream>
#include <vector>
#include <fstream>
#include <string>
#include <ilcplex/ilocplex.h>
ILOSTLBEGIN
using namespace std;
int main()
{
int a[3] = {3,2,1};
int b[3] = {2,5,-1};
int c1[3] = {2,1,4};
int c2[3] = {5,3,2};
cout << "Hi" <<endl;
//a = {3,2,1};
//b = [2,5,-1];
//c1 = [2,1,4];
//c2 = [5,3,2];
IloEnv env;
IloCplex cplex;
for(int r=0;r<3;r++){
cout << "Good" << endl;
IloModel model(env);
IloNumVarArray x(env);
x.add(IloNumVar(env));
x.add(IloNumVar(env));
model.add(a[r]*x[0]+b[r]*x[1]);
model.add(IloMinimize(env, c1[r]*x[0]+c2[r]*x[1]));
cplex.extract(model);
cplex.solve();
cout << "Min= " << cplex.getObjValue() << endl;
cplex.clear();
model.end();
}
env.end();
}
Et voici le message d'erreur que je reçois quand je suis débogage (si ce serait d'aucune aide) [Si je ne suis pas le débogage, il est juste abandon]:
Unhandled exception at at 0x00007FFA8B667788 in DebugTemplate.exe: Microsoft C++ exception: IloEmptyHandleException at memory location 0x00000003886FF510.
Merci d'avance.