C++ - Cplex problem de variable dans une boucle for & random

C++ - Cplex problem de variable dans une boucle for & random - C++ - Programmation

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:

Code :
  1. int main() {
  2. IloEnv env;
  3. IloInt i, j, k;
  4. IloModel model(env);
  5. IloInt pro= 4;
  6. IloInt time = 5;
  7. IloNumArray p(env, pro, 1000, 2000, 500, 1500);
  8. IloNumVarArray p(env, pro, 0, 1);
  9. NumVarMatrix y(env, pro);
  10. for(j = 0; j < time; j++) {
  11.  y[j] = IloNumVarArray(env, time+1, 0, 1);
  12. }
  13. for(j = 0; j < time; j++){
  14.  IloExpr sum_over_k(env);
  15.  for(k = 0; k < pro; k++)
  16.   sum_over_k += (y[j][k] * p[k]);
  17.  model.add(sum_over_k <= 1);
  18.  sum_over_k.end();
  19. }
  20. IloExpr sum_obj(env);
  21. for(int k = 0; k < pro; k++)
  22.  sum_obj += p[k] * p[k];
  23. model.add(IloMaximize(env, sum_obj));
  24. IloCplex cplex(env);
  25. cplex.extract(model);
  26. cplex.solve();
  27.        env.out() << cplex.getValue(sum_obj) ;
  28.        env.end();
  29. return 0;
  30. }


 
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

Reply

Marsh Posté le 25-03-2013 à 03:56:34   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed