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?
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; }
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
Partager