% TP 1 -- Introduction à la programmation linéaire int: nUsine; % Paramètre reprenant le nombre d'usines du problème. int: nDistrib; % Paramètre reprenant le nombre de centres de distribution du problème. array[1..nUsine] of int: capacity; % La capacité de chaque usine, reprise dans un tableau à une dimension. array[1..nDistrib] of int: demand; % La capacité de chaque centre de distribution, reprise dans un tableau à une dimension. array[1..nDistrib,1..nUsine] of int: cost; % Le cout unitaire pour chaque couple usine-centre de distribution, reprise dans un tableau à deux dimensions. array[1..nDistrib,1..nUsine] of var int: production; % Variable correspondant à la production pour chaque couple usine-centre de distribution, reprise dans un tableau à deux dimensions. var int: total_cost; % Variable reprenant le coût total de production (à définir par la suite dans une contrainte). % Fonction objectif solve minimize total_cost; % Completez les contraintes du problème % 1) Aucune capacité n'est dépassée. % constraint forall(i in 1..nUsine)(sum(j in 1..nDistrib)(->COMPLETEZ ICI<-)->COMPLETEZ ICI<-); % 2) Toutes les demandes sont satisfaites. % constraint forall(->COMPLETEZ ICI<-)(sum(->COMPLETEZ ICI<-)(->COMPLETEZ ICI<-)->COMPLETEZ ICI<-); % 3) Toutes les productions sont positives % Ecrivez complètement la contrainte % 4) total_cost vaut la somme de toutes les productions multipliées par leur cout unitaire respectif. % constraint total_cost = sum(j in 1..nDistrib, i in 1..nUsine)(->COMPLETEZ ICI<-); % Le résultat est affiché output [ "total_cost: " ++ show(total_cost) ++ "\n" ++ "production:" ] ++ [ if j = 1 then "\n" else " " endif ++ show(production[j,i]) | i in 1..nUsine, j in 1..nDistrib ];