Esempio n. 1
0
u = prob.addControllerInputs(1, [0.0], [1.0])

rhs = Expression(SX.zeros(3))
rhs[0] = x[0] - x[0] * x[1] + w[0]
rhs[1] = -x[1] + x[0] * x[1] + u * x[2] * x[1] + w[1]
rhs[2] = -x[2] + 0.50 + w[2]
m = SX.zeros(2, 2)
m[0, 0] = 2 + 1.414
m[1, 0] = 1 + 1.414
m[0, 1] = 1 + 1.414
m[1, 1] = 1 + 1.414

prob.addControllerODEs(x, rhs)
f = sum((1 - x[0]('coll')) * (1 - x[0]('coll')) + (1 - x[1]('coll')) *
        (1 - x[1]('coll')) + u('coll') * u('coll')) + (mul((mul(
            (x[0:2](-1).T, m)), x[0:2](-1))))
prob.addControlObjective(f)
#prob.addConstraints(x(0),[1,1,0.50])
x1 = prob.addPlantStates(3)
u1 = prob.addPlantInputs(1)
rhs1 = SX.zeros(3)
rhs1[0] = x1[0] - x1[0] * x1[1]
rhs1[1] = -x1[1] + x1[0] * x1[1] + u1 * x1[2] * x1[1]
rhs1[2] = -x1[2] + 0.50
prob.addPlantODEs(x1, rhs1)
x0 = NP.array([1, 1, 0.50])
prob.setInitCondition(x0)
solver = MPCsolve(prob, printlevel=0)
solver.solve()
solver.plotStates()  #
solver.plotControls()  #
Esempio n. 2
0
rhs1[5] = u1[2] * stream_3_conc_F + stream_5_flow * stream_5_conc_F + stream_8_flow * stream_8_conc_F - stream_6_flow * (mixing[5]/mixing_zone_N)
rhs1[6] = stream_5_flow * stream_5_conc_G + stream_8_flow * stream_8_conc_G - stream_6_flow * (mixing[6]/mixing_zone_N)
rhs1[7] = stream_5_flow * stream_5_conc_H + stream_8_flow * stream_8_conc_H - stream_6_flow * (mixing[7]/mixing_zone_N)
rhs1[8] = (u1[3] * stream_1_cp * (stream_1_T - mixing[8]) + u1[1] * stream_2_cp * (stream_2_T - mixing[8]) + u1[2] * stream_3_cp * (stream_3_T - mixing[8]) + stream_5_flow * stream_5_cp * (Tstr - mixing[8]) + stream_8_flow * stream_8_cp * (stream_8_T - mixing[8]))/mixing_zone_Ncp;

rhs1[9] = stream_6_flow * (stream_6_conc[0]) - stream_7_flow * (stream_7_conc[0]) + reactor_conv_rate[0];
rhs1[10] = stream_6_flow * (stream_6_conc[1]) - stream_7_flow * (stream_7_conc[1]) + reactor_conv_rate[1];
rhs1[11] = stream_6_flow * (stream_6_conc[2]) - stream_7_flow * (stream_7_conc[2]) + reactor_conv_rate[2];
rhs1[12] = stream_6_flow * (stream_6_conc[3]) - stream_7_flow * (stream_7_conc[3]) + reactor_conv_rate[3];
rhs1[13] = stream_6_flow * (stream_6_conc[4]) - stream_7_flow * (stream_7_conc[4]) + reactor_conv_rate[4];
rhs1[14] = stream_6_flow * (stream_6_conc[5]) - stream_7_flow * (stream_7_conc[5]) + reactor_conv_rate[5];
rhs1[15] = stream_6_flow * (stream_6_conc[6]) - stream_7_flow * (stream_7_conc[6]) + reactor_conv_rate[6];
rhs1[16] = stream_6_flow * (stream_6_conc[7]) - stream_7_flow * (stream_7_conc[7]) + reactor_conv_rate[7];
rhs1[17] = ((1/1000.0) * stream_6_flow * stream_6_cp * (mixing[8] - reactor[8]) - Qr - reactor_exoth_heat)/reactor_Ncp;

MPC.addPlantODEs(x1,rhs1)
x0 = NP.array([4.883796012e+01,1.3581698782601494e01,4.003019454e01,9.7240317507928289e00,2.7443144213409383e01,2.5287892794899194e00,5.4376801699256117e00,2.5340908634231365e00,3.626444078091077e02,5.031608878009897e00,2.1296567956657944e00,3.7868352943264569e00,1.5154871302534503e-01,9.6154000218439766e00,1.3071231152493332e00,6.328731837338335e01,6.9378697766081004e01,393.55])
MPC.setInitCondition(x0)
solver = MPCsolve(MPC,printlevel=0)
solver.solve()
solver.plotStates()#
solver.plotControls()#
###
x = NP.loadtxt('xTE')
mixing = x[0:9,:] #mixing(8) is temperature
reactor = x[9:18,:] #reactor(8) is temperature

mixing_zone_N = (mixing[0,:] + mixing[1,:] + mixing[2,:] + mixing[3,:] + mixing[4,:] + mixing[5,:] + mixing[6,:] + mixing[7,:])
pm_MPa = mixing_zone_N * (RkJ * mixing[8] / Vm) / 1000.0
t = NP.linspace(0,108000,301)
plt.plot(t,pm_MPa)
Esempio n. 3
0
rhs1[11] = stream_6_flow * (stream_6_conc[2]) - stream_7_flow * (
    stream_7_conc[2]) + reactor_conv_rate[2]
rhs1[12] = stream_6_flow * (stream_6_conc[3]) - stream_7_flow * (
    stream_7_conc[3]) + reactor_conv_rate[3]
rhs1[13] = stream_6_flow * (stream_6_conc[4]) - stream_7_flow * (
    stream_7_conc[4]) + reactor_conv_rate[4]
rhs1[14] = stream_6_flow * (stream_6_conc[5]) - stream_7_flow * (
    stream_7_conc[5]) + reactor_conv_rate[5]
rhs1[15] = stream_6_flow * (stream_6_conc[6]) - stream_7_flow * (
    stream_7_conc[6]) + reactor_conv_rate[6]
rhs1[16] = stream_6_flow * (stream_6_conc[7]) - stream_7_flow * (
    stream_7_conc[7]) + reactor_conv_rate[7]
rhs1[17] = ((1 / 1000.0) * stream_6_flow * stream_6_cp *
            (mixing[8] - reactor[8]) - Qr - reactor_exoth_heat) / reactor_Ncp

MPC.addPlantODEs(x1, rhs1)
x0 = NP.array([
    4.883796012e+01, 1.3581698782601494e01, 4.003019454e01,
    9.7240317507928289e00, 2.7443144213409383e01, 2.5287892794899194e00,
    5.4376801699256117e00, 2.5340908634231365e00, 3.626444078091077e02,
    5.031608878009897e00, 2.1296567956657944e00, 3.7868352943264569e00,
    1.5154871302534503e-01, 9.6154000218439766e00, 1.3071231152493332e00,
    6.328731837338335e01, 6.9378697766081004e01, 393.55
])
MPC.setInitCondition(x0)
solver = MPCsolve(MPC, printlevel=0)
solver.solve()
solver.plotStates()  #
solver.plotControls()  #
###
x = NP.loadtxt('xTE')
#w.fix()
w.plot()
u = prob.addControllerInputs(1,[0.0],[1.0])

rhs = Expression(SX.zeros(3))
rhs[0] = x[0] - x[0]*x[1] + w[0]
rhs[1] = -x[1] + x[0]*x[1] + u*x[2]*x[1] + w[1]
rhs[2] = -x[2] + 0.50 + w[2]
m = SX.zeros(2,2)
m[0,0] = 2 + 1.414
m[1,0] = 1 + 1.414
m[0,1] = 1 + 1.414
m[1,1] = 1 + 1.414

prob.addControllerODEs(x,rhs)
f = sum((1 - x[0]('coll'))*(1 - x[0]('coll')) + (1 - x[1]('coll'))*(1-x[1]('coll')) + u('coll')*u('coll')) + (mul((mul((x[0:2](-1).T,m)),x[0:2](-1))))
prob.addControlObjective(f)
#prob.addConstraints(x(0),[1,1,0.50])
x1 = prob.addPlantStates(3)
u1 = prob.addPlantInputs(1)
rhs1 = SX.zeros(3)
rhs1[0] = x1[0] - x1[0]*x1[1]
rhs1[1] = -x1[1] + x1[0]*x1[1] + u1*x1[2]*x1[1]
rhs1[2] = -x1[2] + 0.50
prob.addPlantODEs(x1,rhs1)
x0 = NP.array([1,1,0.50])
prob.setInitCondition(x0)
solver = MPCsolve(prob,printlevel=0)
solver.solve()
solver.plotStates()#
solver.plotControls()#