$Title Modell (delta,s,S)-Politik $Ontext Vorlesung: Supply Chain Management Abschnitt: 2.3 Modelle der einstufigen Beschaffungsplanung Problemstellung: Modell zur approximativen Optimierung einer (delta,s,S)-Politik unter normalverteiltem Periodenbedarf - Model - Author: Christoph Schwindt Date: 06/03/2019 $Offtext $eolcom// $include delta-s-S_data.gms variables C Erwartete Gesamtkostenrate (Zielfunktion) small_s Bestellpunkt capital_S Bestellgrenze E_q Erwartete Bestellmenge V Wert der Verlustfunktion Psi_Y Standardverlustfunktion zweiter Ordnung fuer Bedarf Y im Zeitraum der Laenge L + delta Psi_Z Standardverlustfunktion zweiter Ordnung fuer Bedarf Z waehrend der Lieferzeit L ; positive variables capital_S, E_q, V, Psi_Y, Psi_Z ; equations def_C Definition der Gesamtkostenrate servicegrad Bedingung zur Einhaltung des beta-Servicegrads def_E_q Definition des approximativen Erwartungswerts der Bestellmenge def_V Definition des approximativen Werts der Verlustfunktion in Abhaengigkeit des Bestellpunkts s def_Psi_Y Definition der Standardverlustfunktion zweiter Ordnung fuer Bedarf Y def_Psi_Z Standardverlustfunktion zweiter Ordnung fuer Bedarf Z ; def_C.. C =e= h*(capital_S-L*d-E_q/2)+k*d/E_q ; servicegrad.. V =l= (1-beta)*E_q ; def_E_q.. E_q =e= capital_S - small_s + (delta*sqr(d)+sqr(sigma_D))/(2*d) ; def_V.. V =e= 1/(2*delta*d)*(Psi_Y*sqr(sigma_Y) + Psi_Z*sqr(sigma_Z)) ; def_Psi_Y.. Psi_Y =e= (1+sqr((small_s-mu_Y)/sigma_Y))*(1-errorf((small_s-mu_Y)/sigma_Y))-(small_s-mu_Y)/sigma_Y*(1/sqrt(2*pi))*exp(-sqr((small_s-mu_Y)/sigma_Y)/2) ; def_Psi_Z.. Psi_Z =e= (1+sqr((small_s-mu_Z)/sigma_Z))*(1-errorf((small_s-mu_Z)/sigma_Z))-(small_s-mu_Z)/sigma_Z*(1/sqrt(2*pi))*exp(-sqr((small_s-mu_Z)/sigma_Z)/2) ; model delta_s_S / all / ; options minlp = lindoglobal optcr = 1e-6 reslim = 60 ; * Schranken fuer den Solver small_s.lo = -1000 ; small_s.up = 1000 ; capital_S.lo = 1e-5 ; capital_S.up = 1000 ; E_q.lo = 1e-5 ; E_q.up = capital_S.up - small_s.lo + (delta*sqr(d)+sqr(sigma_D))/(2*d) ; solve delta_s_S using minlp minimzing C ; if (capital_S.l - small_s.l < 1.5*delta*d, display '!! Approximationsbedingung nicht erfuellt !!' ; ) ; scalar sb Sicherheitsbestand ; sb = capital_S.l - L*d - E_q.l ; display C.l, delta, small_s.l, capital_S.l, sb ;