Supermarket refrigeration system (optimica)
From Mintoc
This page contains the model formulation of the MIOCP Supermarket refrigeration system in optimica format.
optimica
The model in optimica code.
// Supermarket benchmark problem from the HYCON NoE. // (c) Sebastian Sager, 2005-2009 // More info on http://mintoc.de/index.php/Supermarket_refrigeration_system package supermarket_pack optimization supermarket_opt (objective = cost(finalTime), startTime = 0, finalTime=1) // Parameters parameter Real Q_airload = 3000.00; parameter Real m_ref = 0.20; parameter Real M_goods=200.00; parameter Real Cp_goods=1000.00; parameter Real UA_goods=300.00; parameter Real M_wall=260.00; parameter Real Cp_wall=385.00; parameter Real UA_air=500.00; parameter Real M_air=50.00; parameter Real Cp_air=1000.00; parameter Real UA_wall=4000.00; parameter Real t_fill=40.00; parameter Real T_sh=10.00; parameter Real M_ref=1.00; parameter Real V_suc=5.00; parameter Real V_sl=0.08; parameter Real eta_vol=0.81; parameter Real tf(free=true,min=650,max=750)=650; // Differential states Real x0; Real x1; Real x2; Real x3; Real x4; Real x5; Real x6; Real x7; Real x8; Real cost(start=0); // The control signal input Real u0(free=true,min=0,max=1,initialGuess=0.5); input Real u1(free=true,min=0,max=1,initialGuess=0.5); input Real u2(free=true,min=0,max=1,initialGuess=1); equation der(x0) = ((1.0/(V_suc*(-0.0329*x0*x0*x0+0.2161*x0*x0-0.4742*x0+5.4817)))*((UA_wall/(M_ref*((0.0217*x0*x0-0.1704*x0+2.2988)*10^5)))*(x4*(x2-(-4.3544*x0*x0+29.224*x0-51.2005))+x8*(x6-(-4.3544*x0*x0+29.224*x0-51.2005)))+M_ref-eta_vol*V_sl*0.5*(u2)*(4.6073*x0+0.3798)))*tf; der(x1) =(-UA_goods*(x1-x3)/(M_goods*Cp_goods))*tf; der(x2)=((UA_air*(x3-x2)-(UA_wall/M_ref)*x4*(x2-(-4.3544*x0*x0+29.224*x0-51.2005)))/(M_wall*Cp_wall))*tf; der(x3)=((UA_goods*(x1-x3)+Q_airload-UA_air*(x3-x2))/(M_air*Cp_air))*tf; der(x4)=(((M_ref-x4)/t_fill)*u0-((UA_wall/(M_ref*((0.0217*x0*x0-0.1704*x0+2.2988)*10^5)))*x4*(x2-(-4.3544*x0*x0+29.224*x0-51.2005)))*(1-u0))*tf; der(x5)=(-UA_goods*(x5-x7)/(M_goods*Cp_goods))*tf; der(x6)=((UA_air*(x7-x6)-(UA_wall/M_ref)*x8*(x6-(-4.3544*x0*x0+29.224*x0-51.2005)))/(M_wall*Cp_wall))*tf; der(x7)=((UA_goods*(x5-x7)+Q_airload-UA_air*(x7-x6))/(M_air*Cp_air))*tf; der(x8)=(((M_ref-x8)/t_fill)*u1-((UA_wall/(M_ref*((0.0217*x0*x0-0.1704*x0+2.2988)*10^5)))*x8*(x6-(-4.3544*x0*x0+29.224*x0-51.2005)))*(1-u1))*tf; der(cost) = ((-1.0/(((1/*time*/)*tf)))*cost+(1.0/(((1/*time*/))*tf))*((u2)*0.5*eta_vol*V_sl*((0.0265*x0*x0*x0-0.4346*x0*x0+2.4923*x0+1.2189)*10^5)))*tf; // der(cost) = 1.0 / 650 * (((u2)*0.5*eta_vol*V_sl*((0.0265*x0*x0*x0-0.4346*x0*x0+2.4923*x0+1.2189)*10^5)))*tf; constraint x3>=2.0; x3<=5.0; x7>=2.0; x7<=5.0; x0<=1.7; cost(startTime)=0.0; x0(finalTime)=x0(startTime); x1(finalTime)=x1(startTime); x2(finalTime)=x2(startTime); x3(finalTime)=x3(startTime); x4(finalTime)=x4(startTime); x5(finalTime)=x5(startTime); x6(finalTime)=x6(startTime); x7(finalTime)=x7(startTime); x8(finalTime)=x8(startTime); end supermarket_opt; end supermarket_pack;