Académique Documents
Professionnel Documents
Culture Documents
On veut affecter des caisses qui ont un poids de 355 quintaux aux wagons qui
ont un poids de 100 quintaux chacune (300 quintaux) en respectant les
capacités max des wagons et en minimisant leur charge.
Variables de de décision :
Xi,j : ` la caisse numéro i est affecté au wagons j '`
On note aussi Pi = le poids de la caisse i.
Avec i=1,..16 et j=1,..3.
Xi,j est une variable booléenne, i.e :
Elle prend la valeur 1 si la caisse i est affectée au wagon j
Et elle prend la valeur 0 sinon.
Les contraintes :
a) Relatives aux caisses :
Sachant qu’une caisse i est présente une et une seule fois sur les 3 wagons (on
peut l’affecter à une seule wagon uniquement) on aura :
X1,1+ X1,2 + X1,3 = 1
X2,1+ X2,2 + X2,3 = 1
X3,1+ X3,2 + X3,3 = 1
X4,1+ X4,2 + X4,3 = 1
.
.
.
X16,1+ X16,2 + X16,3 = 1
35X1,2 + 6X2,2 + 8X3,2 + 17X4,2 + 16X5,2 +5 X6,2 +73X7,2 + 21X8,2 + 25X9,2 + 31X10,2 +
14X11,2 + 13X12,2 + 33X13,2 + 9X14,2 + 25X15,2 + 25X16,2 <= 100
35X1,3 + 6X2,3 + 8X3,3 +17 X4,3 + 16X5,3 + X56,3 + 73X7,3 + 21X8,3 + 25X9,3 + 31X10,3 +
14X11,3 +13 X12,3 + 33X13,3 + 9X14,3 + 25X15,3 + 25X16,3 <= 100
La fonction objectif :
On veut affecter les caisses aux wagons en minimisant la charge de chaque
wagon de maniéré la plus équitable possible :
16 16 16 16 16 16
Le modèle :
/*********************************************
* OPL 12.9.0.0 Model
* Author: shiishii
* Creation Date: May 11, 2020 at 7:29:50 AM
*********************************************/
int n=...;
int m=...;
range caisses=1..n;
range wagons=1..m;
int poids[caisses]=...;
dvar boolean x[caisses][wagons];
dexpr float z=(sum(i in caisses)(x[i][1]*poids[i]) - sum(i in caisses)(x[i]
[2]*poids[i])) + (sum(i in caisses)(x[i][2]*poids[i]) - sum(i in caisses)(x[i]
[3]*poids[i])) + (sum(i in caisses)(x[i][3]*poids[i]) - sum(i in caisses)(x[i]
[1]*poids[i]));
minimize z;
subject to {
forall(i in caisses)
contrcaisse:
sum(j in wagons ) ( x[i][j]) ==1;
forall(j in wagons )
contrwagon:
sum(i in caisses)(x[i][j]*poids[i])<=100;
}
Les données :
n=16;
m=3;
poids=[35,6,8,17,16,5,73,21,25,31,14,13,33,9,25,25];
La solution donnée:
X= [0 1 0,0 0 1,0 0 1,0 0 1,1 0 0,0 0 1,0 0 0,0 0 1,1 0 0,0 0 1,1 0 0,1 0 1,0 1 0,0
0 1,1 0 0,0 1 0]