45 lines
1.4 KiB
Modula-2
Executable file
45 lines
1.4 KiB
Modula-2
Executable file
############################ Model ##################################
|
|
|
|
############################ Sets ##################################
|
|
|
|
set DEMANDES;
|
|
|
|
set FLUIDES;
|
|
|
|
set MAGASINS;
|
|
|
|
######################### Variables ################################
|
|
|
|
var coef{i in DEMANDES, j in FLUIDES, k in MAGASINS}, >=0;
|
|
|
|
################## Constants: Data to load #########################
|
|
|
|
param fluidesParCommandes{i in DEMANDES, j in FLUIDES};
|
|
|
|
param stockMagasin{k in MAGASINS, j in FLUIDES};
|
|
|
|
param coutUnitaires{k in MAGASINS, j in FLUIDES};
|
|
|
|
param coutExpedition{i in DEMANDES, k in MAGASINS};
|
|
|
|
######################## Constraints ###############################
|
|
|
|
# Les proportions doivent être comprises entre 0 et 1
|
|
s.t. ProportionZeroUn{i in DEMANDES, j in FLUIDES, k in MAGASINS}:
|
|
coef[i, j, k] <= 1;
|
|
|
|
# La somme des proportions doit faire 1
|
|
s.t. ProportionTotalUn{i in DEMANDES, j in FLUIDES}:
|
|
sum{k in MAGASINS} coef[i, j, k] = 1;
|
|
|
|
# La répartions des commandes ne doit pas dépasser la limite des stocks
|
|
s.t. RespectDesStocks{j in FLUIDES, k in MAGASINS}:
|
|
sum{i in DEMANDES} coef[i, j, k] * fluidesParCommandes[i, j] <= stockMagasin[k, j];
|
|
|
|
######################## Objective #################################
|
|
|
|
minimize CoutTotal:
|
|
sum{i in DEMANDES, j in FLUIDES, k in MAGASINS} (coutUnitaires[k, j] * coef[i, j, k] + coef[i, j, k] * coutExpedition[i, k]);
|
|
|
|
end;
|