$Title EOQ-Modell Stufenrabatte $Ontext Vorlesung: Supply Chain Management Abschnitt: 2.4 Einstufige Beschaffungsplanung bei Multiple Sourcing und Mengenrabatten Problemstellung: Lieferantenwahl und Allokation optimaler Bestellmengen bei Stufenrabatten und gleichmaessigem Bedarfsverlauf - Model - Author: Rui Guo Date: 06/03/2019 $Offtext $eolcom// $include eoq-qd_data.gms variables C Gesamtkostenrate (Zielfunktion) q_total Gesamtbestellmenge q(i,l) Bestellmenge bei Lieferant i auf Rabattstufe l y(i,l) gleich 1 falls bei Lieferant i auf Stufe l bestellt wird ; positive variables q_total, q ; binary variables y ; equations def_C Definition der Gesamtkostenrate eine_bestellung Sicherstellung dass mindestens eine Bestellung erfolgt rabattstufe(i) Zuweisung der Rabattstufe fuer Lieferant i def_q_total Definition der Gesamtbestellmenge rabattstufe_unten(i,l) Einhaltung der unteren Grenze der Rabattstufe l bei Lieferant i rabattstufe_oben(i,l) Einhaltung der oberen Grenze der Rabattstufe l bei Lieferant i lieferrate_max(i) Beschraenkung der Lieferrate von Lieferant i ; def_C.. C =e= sum((i,l)$stufe(i,l), pi(i,l)*q(i,l)*d/q_total + I_rate/2*pi(i,l)*q(i,l)+k(i)*y(i,l)*d/q_total) ; eine_bestellung.. sum((i,l)$stufe(i,l), y(i,l)) =g= 1 ; rabattstufe(i).. sum(l$stufe(i,l), y(i,l)) =l= 1 ; def_q_total.. q_total =e= sum((i,l)$stufe(i,l), q(i,l)) ; rabattstufe_unten(i,l)$stufe(i,l).. lb(i,l)*y(i,l) =l= q(i,l) ; rabattstufe_oben(i,l)$stufe(i,l).. q(i,l) =l= ub(i,l)*y(i,l) ; lieferrate_max(i).. sum(l$stufe(i,l), q(i,l)*d) =l= q_total*qDot(i) ; model eoq_stufenrabatt / all / ; options minlp = lindoglobal optcr = 1e-6 reslim = 60 ; * Schranken fuer den Solver q.up(i,l)$stufe(i,l) = ub(i,l) ; q_total.up = sum((i,l)$(ord(l)=num_levels(i)), ub(i,l)) ; q_total.lo = smin((i,l)$stufe(i,l), lb(i,l)) ; y.fx(i,l)$(not stufe(i,l)) = 0 ; q_total.l = 1 ; // Vermeidung von Fehlern wegen Division durch Null solve eoq_stufenrabatt using minlp minimzing C ; display C.l, q_total.l, y.l, q.l ;