C++ - Cplex problem de variable dans une boucle for & random
C++ - Cplex problem de variable dans une boucle for & random - C++ - Programmation
MarshPosté le 25-03-2013 à 03:56:34
Bonjour,
Je suis nouveau dans l'utilisation de Cplex. Je l'utilise avec callable library en C++ visual studio. J'ai un probleme dans mon programme (je sais ou) mais que je ne comprends pas et donc que je n'arrive pas a resoudre.
Voici mon code:
Code :
int main() {
IloEnv env;
IloInt i, j, k;
IloModel model(env);
IloInt pro= 4;
IloInt time = 5;
IloNumArray p(env, pro, 1000, 2000, 500, 1500);
IloNumVarArray p(env, pro, 0, 1);
NumVarMatrix y(env, pro);
for(j = 0; j < time; j++) {
y[j] = IloNumVarArray(env, time+1, 0, 1);
}
for(j = 0; j < time; j++){
IloExpr sum_over_k(env);
for(k = 0; k < pro; k++)
sum_over_k += (y[j][k] * p[k]);
model.add(sum_over_k <= 1);
sum_over_k.end();
}
IloExpr sum_obj(env);
for(int k = 0; k < pro; k++)
sum_obj += p[k] * p[k];
model.add(IloMaximize(env, sum_obj));
IloCplex cplex(env);
cplex.extract(model);
cplex.solve();
env.out() << cplex.getValue(sum_obj) ;
env.end();
return 0;
}
Le probleme se trouve a cette ligne sum_over_k += (y[j][k] * p[k]) si je met une valeur a p[k] le programme va fonctionner donc j'ai du mal a comprendre pourquoi cela ne marche pas ainsi. Quelqu'un a t-il une idee?
J'aurais aussi voulu faire du random. J'avais essayer IloInt dt= (rand() % time) + 1 en c++ cela fonctionne mais pas avec cplex. Comment je pourrais faire la meme chose en cplex?
Marsh Posté le 25-03-2013 à 03:56:34
Bonjour,
Je suis nouveau dans l'utilisation de Cplex. Je l'utilise avec callable library en C++ visual studio.
J'ai un probleme dans mon programme (je sais ou) mais que je ne comprends pas et donc que je n'arrive pas a resoudre.
Voici mon code:
Le probleme se trouve a cette ligne sum_over_k += (y[j][k] * p[k]) si je met une valeur a p[k] le programme va fonctionner donc j'ai du mal a comprendre pourquoi cela ne marche pas ainsi. Quelqu'un a t-il une idee?
J'aurais aussi voulu faire du random. J'avais essayer IloInt dt= (rand() % time) + 1 en c++ cela fonctionne mais pas avec cplex. Comment je pourrais faire la meme chose en cplex?
Merci