Salut,
j ai implemente un programme mixte en IBM ILOG CPLEX ,mais lors de son execution il m affiche le message suivant :
" Decison variable x[0][1] has never been used by the engine"
J attend vos suggestions
Merci d avance
Version imprimable
Salut,
j ai implemente un programme mixte en IBM ILOG CPLEX ,mais lors de son execution il m affiche le message suivant :
" Decison variable x[0][1] has never been used by the engine"
J attend vos suggestions
Merci d avance
Le plus simple serait de voir le modèle. Es tu sûr que ta variable est contrainte ?
Code:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97 tuple Node { int indice; string nom; }; tuple Product{ int indice; string nom; }; //Ensembles {Node} Suppliers = ...; {Node} Plants = ...; {Node} Customers = ...; {Product} Raw_Materials = ...; {Product} Intermediate_Products = ...; {Product} Finished_Products = ...; {int} Time_Periods = ...; {Node} Origin_Nodes = Suppliers union Plants; {Node} Destination_Nodes = Plants union Customers; {Product} Commodities = Raw_Materials union Intermediate_Products union Finished_Products; {Product} Commodities1 = Raw_Materials union Intermediate_Products; {Product} Commodities2 = Intermediate_Products union Finished_Products; {Node} Origin_Commodity[Commodities] = ...; {Node} Destination_Commodity[Commodities] = ...; {Node} Plant_Commodity[Commodities] = ...; {Product} Commodity_Origin[Origin_Nodes] = ...; {Node} Opened_Plants = ...; {Node} Closed_Plants = ...; //Données float Demand_Customer[Time_Periods][Customers][Finished_Products] = ...; float Production_Max[Time_Periods][Origin_Nodes][Commodities] = ...; float Production_Min[Time_Periods][Origin_Nodes][Commodities] = ...; float Capacity_Max[Time_Periods][Origin_Nodes] = ...; float Capacity_Min[Time_Periods][Origin_Nodes] = ...; float Number_Unit[Plants][Commodities2][Commodities] = ...; float Cost_Of_Selecting[Time_Periods][Origin_Nodes] = ...; float Cost_Of_Producing[Time_Periods][Commodities][Origin_Nodes] = ...; float Cost_Of_Transporting[Time_Periods][Commodities][Origin_Nodes][Destination_Nodes] = ...; {Product} L[Commodities1][Plants] = ...; //Les variables de décision dvar int+ y[Time_Periods][Origin_Nodes] in 0..1; dvar int+ v[Time_Periods][Commodities][Origin_Nodes] in 0..1; dvar float+ x[Time_Periods][Commodities][Origin_Nodes][Destination_Nodes]; //Fonction objective dexpr float Total_Selection = sum( t in Time_Periods, o in Origin_Nodes ) Cost_Of_Selecting[t][o]*y[t][o]; dexpr float Total_Production = sum( t in Time_Periods, k in Commodities, o in Origin_Commodity[k]) Cost_Of_Producing[t][k][o]*v[t][k][o]; dexpr float Total_Transport = sum( t in Time_Periods, k in Commodities, o in Origin_Commodity[k], d in Destination_Commodity[k]) Cost_Of_Transporting[t][k][o][d]*x[t][k][o][d]; minimize Total_Selection + Total_Production + Total_Transport; //Contraintes subject to { c_assign1: forall (c in Customers, t in Time_Periods, f in Finished_Products) { sum(p in Plants) x[t][f][p][c] <= Demand_Customer[t][c][f] ; } c_assign2: forall (k in Commodities1, t in Time_Periods, p in Plant_Commodity[k]) { sum(o in Origin_Commodity[k]) x[t][k][o][p] - sum(j in L[k][p], d in Destination_Commodity[j]) Number_Unit[p][j][k]*x[t][j][p][d]== 0 ; } c_assign3: forall (o in Origin_Nodes, t in Time_Periods) { sum(k in Commodity_Origin[o], d in Destination_Commodity[k]) x[t][k][o][d] <= Capacity_Max[t][o]*y[t][o] ; } c_assign4: forall (o in Origin_Nodes, t in Time_Periods) { sum(k in Commodity_Origin[o], d in Destination_Commodity[k]) x[t][k][o][d] >= Capacity_Min[t][o]*y[t][o] ; } c_assign5: forall (o in Origin_Nodes, t in Time_Periods, k in Commodity_Origin[o]) { sum(d in Destination_Commodity[k]) x[t][k][o][d] <= Production_Max[t][o][k]*v[t][k][o] ; } c_assign6: forall (o in Origin_Nodes, t in Time_Periods, k in Commodity_Origin[o]) { sum(d in Destination_Commodity[k]) x[t][k][o][d] >= Production_Min[t][o][k]*v[t][k][o] ; } c_assign7: forall (o in Closed_Plants, t in Time_Periods : t < card(Time_Periods)) { y[t+1][o] >= y[t][o] ; } c_assign8: forall (o in Opened_Plants, t in Time_Periods : t < card(Time_Periods)) { y[t+1][o] <= y[t][o] ; } }
Je retire ce que j'ai dit : ce n'est pas plus simple avec le "modèle". A défaut de réponse plus précises je ne peux que te conseiller de vérifier les éléments qui t'ont été indiqué dans les réponses précédentes (et éventuellement de faire un petit effort dans la rédaction de tes demandes d'aide).
Il s'agit d'un modèle de localisation de dépôts , ci-dessous mes variables de décisions :
la variable y[t][i] : permet de prendre une décision sur l'ouverture/fermeture d'un dépôt i à l'instant t .
la variable v[t][i][j] : produire ou non un bien i dans le dépôt j à l'instant t .
la variable x[t][i][j][k] : quantité transportée du bien i en provenance de dépôt j et à destination le dépôt k à l'instant t .
Si vous avez besoin de m'expliquer plus ,n'hésitez pas
Cordialement
Je ne suis pas un spécialiste d'OPL mais tu peux sinon essayer de jouer avec ton ficher .dat et avec la définition de tes variables pour voir si le message persiste.
Dans la doc la réponse est simple : "Switch off this warning using setting 'warnings'."