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 : 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
 
    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