www.impianti.dii.unipg.it

In the following the code for implementing Aggregate Planning optimization with Linear Program.

 

This is exactly the example of "Red Tomato Tools" in Meindl, Chopra,  Supply Chain Management, Chapter 8, Aggregate Planning, pp 228-238, 2014.  This is the matlab versions

Thanks to the students of my course on Facility and Industrial Logistics Management for the help. Comments by "Luca Fabellini" <This email address is being protected from spambots. You need JavaScript enabled to view it.>

 clear all

clc

% Le matrici Aeq e Beq sono rispettivamente la matrice dei coefficienti dei
% vincoli descritti da una equazione e il vettore dei termini noti.
% Le matrici A e B sono rispettivamente la matrice dei coefficienti dei
% vincoli descritti da una disequazione e il vettore dei termini noti (vedi
% help di Matlab per la funzione "linprog")

% Le matrici Aeq e A hanno tante righe quante sono i vincoli e tante
% colonne quante sono le variabili decisionali totali (cioè 8 per ogni
% mese). Entrambe sono organizzate in sottomatrici (dimensioni [14,6]) che 
% contengono in ordine i coefficienti di W,O,H,L,P,C,I,S.
% Beq e B sono vettori colonna di tante righe quante sono i vincoli. 

% f è un vettore colonna contenente i coefficienti della funzione
% obiettivo.


Aeq=zeros(14,48);
Aeq(1:6,1:6)=eye(6);
for i=1:5
    Aeq(i+1,i)=-1;
end
Aeq(1:6,13:18)=-eye(6);
Aeq(1:6,19:24)=eye(6);
Aeq(7:12,37:42)=eye(6);
for i=1:5
    Aeq(i+7,36+i)=-1;
end
Aeq(7:12,43:48)=-eye(6);
for i=1:5
    Aeq(i+7,42+i)=1;
end
Aeq(7:12,31:36)=-eye(6);
Aeq(7:12,25:30)=-eye(6);
Aeq(13,42)=1;
Aeq(14,48)=1;


Beq=zeros(14,1);
Beq(1,1)=80;
Beq(7,1)=1000-1600;
Beq(8,1)=-3000;
Beq(9,1)=-3200;
Beq(10,1)=-3800;
Beq(11,1)=-2200;
Beq(12,1)=-2200;
Beq(13,1)=500;


A=zeros(12,48);
A(1:6,1:6)=-10*eye(6);
A(1:6,7:12)=eye(6);
A(7:12,25:30)=eye(6);
A(7:12,1:6)=-40*eye(6);
A(7:12,7:12)=-eye(6)/4;


B=zeros(12,1);


f=zeros(48,1);
f(1:6,1)=640;
f(7:12,1)=6;
f(13:18,1)=300;
f(19:24,1)=500;
f(25:30,1)=10;
f(31:36,1)=30;
f(37:42,1)=2;
f(43:48,1)=5;

v=zeros(48,1); % Imposto il valore minimo delle variabili decisionali

[Y,fval]=linprog(f,A,B,Aeq,Beq,v);

% Riorganizzazione dei risultati
W=Y(1:6);
O=Y(7:12);
H=Y(13:18);
L=Y(19:24);
P=Y(25:30);
C=Y(31:36);
I=Y(37:42);
S=Y(43:48);
D=-Beq(7:12);