ermona | 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?
Merci |