$Title Pooling-Problem $Ontext Vorlesung: Betriebliche Planung von Energiesystemen Abschnitt: 2.4 Das Blendung- und das Pooling-Problem in der Rohoelverarbeitung Problemstellung: Maximierung der Marge eines spezifikationskonformen Blending-Programms bei Speicherung in Sammeltanks - Model - Author: Christoph Schwindt Date: 23/12/2019 $Offtext $eolcom// $include pooling_data.gms variables marge Gesamte Blending-Marge (Zielfunktion) x(k,kPrime) Menge von stoff in Blend stoffPrime s_pool(i,q) Auspraegung von Qualitaet q bei Mischung i ; positive variables x, s_pool ; equations def_marge Definition der Blending-Marge nachfrage(j) Nachfrage nach Blend j verfuegbarkeit(h) Verfuegbarkeit des Einsatzstoffs h flusserhaltung(i) Flusserhaltungsbedingung fuer Sammeltank i def_qual_pool_vol(i,q) Definition der Qualitaet q der Mischung i bei volumenproportionaler Mischung def_qual_pool_gew(i,q) Definition der Qualitaet q der Mischung i bei gewichtsproportionaler Mischung spezifikation_vol_min(j,q) Mindestwerte gemaess Spezifikationen der Qualitaet q fuer Blend j bei volumenproportionaler Mischung spezifikation_vol_max(j,q) Hoechstwerte gemaess Spezifikationen der Qualitaet q fuer Blend j bei volumenproportionaler Mischung spezifikation_gew_min(j,q) Mindestwerte gemaess Spezifikationen der Qualitaet q fuer Blend j bei gewichtsproportionaler Mischung spezifikation_gew_max(j,q) Hoechstwerte gemaess Spezifikationen der Qualitaet q fuer Blend j gewichtsproportionaler Mischung ; def_marge.. marge =e= sum(j, p(j)*sum(k$a(k,j), x(k,j))) - sum(h, c(h)*sum(k$a(h,k), x(h,k))) ; nachfrage(j).. sum(k$a(k,j), x(k,j)) =l= d(j) ; verfuegbarkeit(h).. sum(k$a(h,k), x(h,k)) =l= b(h) ; flusserhaltung(i).. sum(h$a(h,i), x(h,i)) =e= sum(j$a(i,j), x(i,j)) ; def_qual_pool_vol(i,q)$qv(q).. s_pool(i,q)*sum(h$a(h,i), x(h,i)) =e= sum(h$a(h,i), s(h,q)*x(h,i)) ; def_qual_pool_gew(i,q)$qw(q).. s_pool(i,q)*sum(h$a(h,i), rho(h)*x(h,i)) =e= sum(h$a(h,i), s(h,q)*rho(h)*x(h,i)) ; spezifikation_vol_min(j,q)$qv(q).. sum(h$a(h,j), s(h,q)*x(h,j)) + sum(i$a(i,j), s_pool(i,q)*x(i,j)) =g= sUnder(j,q)*sum(k$a(k,j), x(k,j)) ; spezifikation_vol_max(j,q)$qv(q).. sum(h$a(h,j), s(h,q)*x(h,j)) + sum(i$a(i,j), s_pool(i,q)*x(i,j)) =l= sBar(j,q)*sum(k$a(k,j), x(k,j)) ; spezifikation_gew_min(j,q)$qw(q).. sum(i, s_pool(i,q)*rho(i)*x(i,j)) =l= sBar(j,q)*sum(i, rho(i)*x(i,j)) ; spezifikation_gew_max(j,q)$qw(q).. sum(i, s_pool(i,q)*rho(i)*x(i,j)) =l= sBar(j,q)*sum(i, rho(i)*x(i,j)) ; model pooling / all / ; options nlp = lindoglobal optcr = 1e-6 reslim = 60 ; solve pooling maximizing marge using nlp ; display marge.l, x.l, s_pool.l ;