Omlasting, direkteleveranser og flere vareslag
LOG530 Distribusjonsplanlegging 2 2 Vi har nå utvidet nettverket med flere vareslag. Vi har samme distribusjonsnett som før, men bare 2 lager. Distribusjonskostnadene er den samme for alle varer, men ulik etterspørsel og kapasitet. Omlasting, direkteleveranser og flere vareslag Fabrikk 1 Fabrikk 2 Kunde 1 Lager 2 Kunde 2 Kunde 3 Kunde 4 Lager 1
LOG530 Distribusjonsplanlegging 3 3 Omlasting, direkteleveranser og flere vareslag KostnadLagerKunderKapasiteterNode345678Vare 1Vare 2Vare 3 Produ sent Lager Behov vare Plassbehov pr. stk på lager: Behov vare Behov vare ,5
LOG530 Distribusjonsplanlegging 4 4 • La X f,t,m angi mengde transportert fra node f til node t av vare m. • Vi ønsker å finne disse mengdene X f,t,m slik at kundene får dekt sitt behov til lavest mulig kostnad, og uten å overskride kapasiteten hos produsent og lager. • Vi kan ikke nå organisere regnearket ved å kopiere tabellen med data, og bytte ut kostnadene med mengdene, slik vi har gjort så langt. • Siden samme transportkostnad gjelder alle varer har vi forenklet data- tabellen. • Hadde vi hatt ulik kostnad for hver vare, kunne vi fortsatt ha organisert regnearket basert på data-matrisen, siden vi da ville ha et 1:1 forhold mellom kostnader og variabler. Omlasting, direkteleveranser og flere vareslag
LOG530 Distribusjonsplanlegging 5 5 Beslutningsvariabler: Omlasting, direkteleveranser og flere vareslag p Antall produsenter l Antall lager k Antall kunder v Antall varer P Mengden av produsenter P = {1, 2, …, p} L Mengden av lager L = {p+1, …, p+l} K Mengden av kunder K = {p+l+1, …, p+l+k} V Mengden av varer V = {1, …, v} G Mengden av greiner G = {(P×L×V) (P×K×V) (L×K×V)} q h,m Kapasitet hos produsent h av vare m (h,m) {(P × V)} NiNiNiNi Kapasitet hos lager i i {L} emememem Volum vare m m {V} d j,m Behov hos kunde j av vare m (j,m) {(K × V)} c ft Enhetskostnad fra node f til node t (f,t) {(P×L) (P×K) (L×K)} X f,t,m Mengde transportert fra node f til node t av vare m (f,t,m) {G}
LOG530 Distribusjonsplanlegging 6 6 Målfunksjon: Omlasting, direkteleveranser og flere vareslag 4‑14‑14‑14‑1 Minimer totalsummen av pris∙mengde (c f,t, ∙X f,t,m ) for alle greiner i nettverket. Merk at hvert vareslag har en egen grein. Alternativ formulering:
LOG530 Distribusjonsplanlegging 7 7 Restriksjoner: Omlasting, direkteleveranser og flere vareslag 4‑24‑2 Sum levert til alle lager og kunder fra en produsent av en vare, må være mindre eller lik kapasiteten til produsenten for denne varen. Dette kravet må gjelde alle produsenter og alle varer. Siden vi har 2 produsenter som hver produserer 3 varer, vil dette gi oss i alt 2∙3 = 6 restriksjoner. Hver produsent leverer til 2 lager og 4 kunder, slik at alle restriksjonene vil inneholde 2+4 = 6 variabler.
LOG530 Distribusjonsplanlegging 8 8 Restriksjoner: Omlasting, direkteleveranser og flere vareslag 4‑34‑34‑34‑3 Sum volum for alle varer levert fra alle produsenter til et lager må være mindre eller lik volumkapasiteten til dette lageret. Dette kravet må gjelde for alle lager.
LOG530 Distribusjonsplanlegging 9 9 Restriksjoner: Omlasting, direkteleveranser og flere vareslag 4‑44‑44‑44‑4 Sum levert fra alle produsenter og lager til en kunde av en vare må være minst like stort som behovet til denne kunden av denne varen. Dette kravet må gjelde for alle kunder og varer.
LOG530 Distribusjonsplanlegging 10 Restriksjoner: Omlasting, direkteleveranser og flere vareslag 4‑54‑54‑54‑5 Sum levert fra alle produsenter til et lager av en vare må være minst like mye som sum levert til alle kunder fra samme lager av samme vare. Dette kravet må gjelde for alle lagrene og alle vareslagene.
LOG530 Distribusjonsplanlegging 11 Omlasting, direkteleveranser og flere vareslag En tabell for greinene (beslutningsvariablene) En tabell for nodene (restriksjonene)
LOG530 Distribusjonsplanlegging 12
LOG530 Distribusjonsplanlegging 13 Omlasting, direkteleveranser og flere vareslag # DEFINERE INDEKSER/DIMENSJON set H;#mengdenavn for produsenter set I;#mengdenavn for lager set J;#mengdenavn for kunder set V;#mengdenavn for varer set G=(H cross I cross V) union (H cross J cross V ) union (I cross J cross V);# mengdenavn for greiner # DEFINERE PARAMETRE param C{G}>=0;#C - transportkostnad langs greinene param D{J,V}>=0;#D - behov hos kunde J av vare V param E{I,V}>=0;#E - enhetsbehov ved lagring hos lager I av vare V param N{I}>=0;#N - lagerkapasitet hos lager I param Q{H,V}>=0;#Q - produksjonskapasitet hos produsent H av vare V # DEFINERE VARIABLER var x{G}>=0;# x - transportkvanta langs greinene # DEFINERE MÅLFUNKSJONEN minimize Kost: sum {(a,b,c) in G} C[a,b,c] * x[a,b,c]; # Sum kostnader langs alle greinene # DEFINERE RESTRIKSJONENE subject to Kbehv {j in J, v in V}:# For alle kunder j: sum {a in (H union I)} x[a,j,v] >= D[j,v];# Sum mottatt fra alle produsenter h og lager i = behovet subject to Lkap {i in I}:# For alle lager i: sum {h in H, v in V} E[i,v] * x[h,i,v]<= N[i];# Sum levert til alle kunder j <= kapasiteten subject to Pkap {h in H, v in V}:# For alle produsenter h og varer V: sum {b in (I union J)} x[h,b,v]<= Q[h,v];# Sum levert til alle lager i <= kapasiteten subject to Tbal {i in I, v in V}:# For alle lager i: sum {h in H} x[h,i,v] >= sum {j in J} x[i,j,v];# Sum mottatt >= sum levert
LOG530 Distribusjonsplanlegging 14 Omlasting, direkteleveranser og flere vareslag set H := P1 P2;# 2 produsenter set I := L1 L2;# 2 lager set J := K1 K2 K3 K4;# 4 kunder set V := V1 V2 V3;# 3 produkter param D: V1V2V3 := K K K K ; param N:= L13000 L24500; param Q: V1V2V3 := P P ; param E: V1V2V3 := L L2121.5;
LOG530 Distribusjonsplanlegging 15 Omlasting, direkteleveranser og flere vareslag param C:=# C - transportkostnader langs greinene [*,*,V1]:K1K2K3K4 L1L2:= L L P P [*,*,V2]:K1K2K3K4 L1L2:= L L P P [*,*,V3]:K1K2K3K4 L1L2:= L L P P ;
LOG530 Distribusjonsplanlegging 16 Omlasting, direkteleveranser og flere vareslag model C:\Bruker\AMPL\Lo530Ex1_4.mod; data C:\Bruker\AMPL\Lo530Ex1_4.dat; option solver cplex; solve; option omit_zero_rows 1; display Kost > C:\Bruker\AMPL\Lo530Ex1_4.sol; display {(a,b,c) in G} x[a,b,c] > C:\Bruker\AMPL\Lo530Ex1_4.sol; exit;