Production dans une brasserie

Une brasserie dispose de deux machines pour embouteiller la boisson. Chaque année se pose le problème de la maintenance annuelle de ces machines. Une maintenance dure deux mois. Durant juillet et août seulement au plus une machine peut fonctionner car les gens doivent pouvoir partir en vacances. Les demandes en bouteilles mensuels sont \(d_{1} , \ldots ,d_{12}\). Les demandes sont livrées en fin de mois. Il est possible de stocker du produit pour satisfaire des demandes des mois suivants. La machine\(k=1,2\) peut produire jusqu’à \(a_{k}\) bouteilles par jour, si elle tourne à plein régime. Il y a aussi des contraintes de main d’œuvre. La machine \(k\) nécessite \(\ell_{k}\) ouvriers pour tourner à plein régime. Le nombre de jours ouvrés pour chaque mois est \(L_{1} , \ldots ,L_{12}\). On vous laisse compléter le fichier des données en prenant les données de cette page. Disons que pour ce problème on est en 2017.

Idéalement on aimerait bien faire travailler un nombre constant de ouvrier-jours par mois. Minimisez la somme des fluctuations mensuels par rapport à ce nombre optimal. Voici les données du problème en format AMPL.

brasserie.mod

set MOIS;
set MACH;
param d{MOIS}; 
param a{MACH};
param l{MACH};

brasserie.dat

set MOIS := 1..12;
set MACH := 1 2;
param d := 
 	 1 10200  
	 2 13100
	 3  9500
	 4 11500
	 5 12000
	 6 13500
	 7 11500
	 8  8000
	 9 14500
	10 16000
	11 11500
	12 10800;
param a := 1 450, 2 380;
param l := 1   9, 2   5;