Esempio n. 1
0
@author: user
"""

import time
import numpy as NP
from pomodoro.problem.problem import Problem
from pomodoro.solver.solver2 import Solver2
from pomodoro.discs.expression import Expression
from casadi import *
import matplotlib.pyplot as plt
from SolACE.MPCproblem import MPCproblem
from SolACE.MPCsolve import MPCsolve

t = time.time()

prob = MPCproblem(50, t_control=10, total_plant=15)
x = prob.addControllerStates(3, [0.0, 0.0, 0.0], [15.0, 30.0, 1000.0, 20.0])
w = prob.addControllerInputs(3, [-.5, -.5, 0.0], [.5] * 3)
#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
Esempio n. 2
0
lu = [0.0] * 4
uu = [227.10, 1.0, 1.0, 1.0]
xs = [
    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
]
mue1 = [-1, 0, -1, -1, 0, 0, 1, 0]
mue2 = [-1, 0, -1, 0, -1, 0, 0, 1]
mue3 = [-1, 0, 0, -3, -1, 3, 0, 0]

MPC = MPCproblem(1000, total_plant=10000.0)
x = MPC.addControllerStates(18, lx, ux, xs)
u = MPC.addControllerInputs(4, lu, uu)

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

stream_6_conc = SX.zeros(8)
for i in range(8):
    stream_6_conc[i] = mixing[i] / mixing_zone_N
stream_6_conc = MPC.prob.makeExpression(stream_6_conc)
Esempio n. 3
0
theta0 = 104.9
S00 = 0.2
S11 = 1.0
S22 = 0.5
S33 = 0.2
S44 = 0.5000
S55 = 0.0000005
r0 = NP.array([2.14, 1.09, 114.2, 112.9, 14.19, -1113.5])
r1 = NP.array([2.9805, 0.9612, 106.0, 100.75, 18.038, -4565.88])
r2 = NP.array([3.5176, 0.7395, 87.0, 79.8, 8.256, -6239.33])

tph = 3600.0

x0 = NP.array([1.0, 0.5, 100.0, 100.0])
#########
MPC = MPCproblem(50, total_plant=3000, dis='MultipleShooting')
x1 = MPC.addControllerStates(4, [0.0, 0.0, 50.0, 50.0, -1.0e06],
                             [10.0, 10.0, 250.0, 250.0, 1.0e06],
                             [2.14, 1.09, 114.2, 112.9, 0.0])

u1 = MPC.addControllerInputs(2, [3.0, -9000.0], [35.0, 0.0])

cA = x1[0]
cB = x1[1]
theta = x1[2]
thetaK = x1[3]
k1 = k10 * exp(E1 / (273.15 + theta))
k2 = k20 * exp(E2 / (273.15 + theta))
k3 = k30 * exp(E3 / (273.15 + theta))
rhs = SX.zeros(4)
rhs[0] = (1 / tph) * (u1[0] * (cA0 - cA) - k1 * cA - k3 * cA * cA)
@author: user
"""

import time
import numpy as NP
from pomodoro.problem.problem import Problem
from pomodoro.solver.solver2 import Solver2
from pomodoro.discs.expression import Expression
from casadi import *
import matplotlib.pyplot as plt
from SolACE.MPCproblem import MPCproblem
from SolACE.MPCsolve import MPCsolve
t = time.time()

prob = MPCproblem(50,t_control=10,total_plant=15)
x = prob.addControllerStates(3,[0.0,0.0,0.0],[15.0,30.0,1000.0,20.0])
w = prob.addControllerInputs(3,[-.5,-.5,0.0],[.5]*3)
#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
Esempio n. 5
0
## Assumption - from measurement data
T_CWSr_out = 0.367599000000000e+03;

UA =  127.6;

lx = [-0.10]*18
ux = [1000]*18

lu = [0.0]*4
uu = [227.10,1.0,1.0,1.0]
xs = [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]
mue1 = [-1,0,-1,-1,0,0,1,0]
mue2 = [-1,0,-1,0,-1,0,0,1]
mue3 = [-1,0,0,-3,-1,3,0,0]

MPC = MPCproblem(1000,total_plant=10000.0)
x = MPC.addControllerStates(18,lx,ux,xs)
u = MPC.addControllerInputs(4,lu,uu)


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

stream_6_conc = SX.zeros(8)
for i in range(8):
    stream_6_conc[i] = mixing[i]/mixing_zone_N
stream_6_conc = MPC.prob.makeExpression(stream_6_conc)
Esempio n. 6
0
from pomodoro.problem.problem import Problem
from pomodoro.solver.solver2 import Solver2
from pomodoro.discs.expression import Expression
from casadi import *
import matplotlib.pyplot as plt
#from mpc.solveMPC import solveMPC
from SolACE.MPCproblem import MPCproblem
from SolACE.MPCsolve import MPCsolve
from SolACE.Estimator import Estimator

mu_m = 1.6  # per day
Ks = 7.5
rho_m = 0.10
Q0 = 0.04
Sin = 4.0
MPC = MPCproblem(14, total_plant=14.)

x = MPC.addControllerStates(3, [0.0, 0.0, 0.0], [
    1000.0,
    1.0,
    1000.0,
])
u = MPC.addControllerInputs(1, [0], [0.5])
S = x[0]
Q = x[1]
X = x[2]
rho = rho_m * S / (S + Ks)
mu = mu_m * (1 - (Q0 / Q))

rhs = Expression(SX.zeros(3))
rhs[0] = -rho * X - u[0] * (S - Sin)
Esempio n. 7
0
S00 = 0.2
S11 = 1.0
S22 = 0.5
S33 = 0.2
S44 = 0.5000
S55 = 0.0000005
r0 = NP.array([2.14, 1.09, 114.2, 112.9, 14.19, -1113.5])
r1 = NP.array([2.9805,0.9612,106.0,100.75,18.038,-4565.88])
r2 = NP.array([3.5176,0.7395,87.0,79.8,8.256,-6239.33])

tph = 3600.0

x0 = NP.array([1.0,0.5,100.0,100.0])
#####################

MPC = MPCproblem(50,total_plant=3000)

x = MPC.addControllerStates(4,[0.0,0.0,50.0,50.0,-1.0e06],[10.0,10.0,250.0,250.0,1.0e06],[2.14,1.09,114.2,112.9,0.0])
u = MPC.addControllerInputs(2,[3.0,-9000.0],[35.0,0.0])

rhs = Expression(SX.zeros(4))

cA = x[0]
cB = x[1]
theta = x[2]
thetaK = x[3]

k1 = k10*exp(E1/(273.15 +theta))
k2 = k20*exp(E2/(273.15 +theta))
k3 = k30*exp(E3/(273.15 +theta))
r = r0
Esempio n. 8
0
from pomodoro.problem.problem import Problem
from pomodoro.solver.solver2 import Solver2
from pomodoro.discs.expression import Expression
from casadi import *
import matplotlib.pyplot as plt
#from mpc.solveMPC import solveMPC
from SolACE.MPCproblem import MPCproblem
from SolACE.MPCsolve import MPCsolve
from SolACE.Estimator import Estimator

mu_m = 1.6# per day
Ks = 7.5  
rho_m = 0.10
Q0 = 0.04
Sin = 4.0
MPC = MPCproblem(14,total_plant=14.)

x = MPC.addControllerStates(3,[0.0,0.0,0.0],[1000.0,1.0,1000.0,])
u = MPC.addControllerInputs(1,[0],[0.5])
S = x[0]; Q = x[1]; X = x[2]
rho = rho_m*S/(S + Ks)
mu = mu_m*(1 - (Q0/Q))

rhs = Expression(SX.zeros(3))
rhs[0] = -rho*X - u[0]*(S - Sin)
rhs[1] = rho - mu*Q
rhs[2] = mu*X - u[0]*X
MPC.addControllerODEs(x,u,rhs)

f = sum((X('coll')-100)*(X('coll')-100))
MPC.addControlObjective(f)
Esempio n. 9
0
from pomodoro.problem.problem import Problem
from pomodoro.solver.solver2 import Solver2
from pomodoro.discs.expression import Expression
from casadi import *
import matplotlib.pyplot as plt
#from mpc.solveMPC import solveMPC
from SolACE.MPCproblem import MPCproblem
from SolACE.MPCsolve import MPCsolve
from SolACE.Estimator import Estimator

t = time.time()

Fa = 1.83
W = 2104.669

MPC = MPCproblem(50, total_plant=1500.0)

x = MPC.addControllerStates(6, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
                            [1.0, 1.0, 1.0, 1.0, 1.0, 1.0])
u = MPC.addControllerInputs(2, [2.0, 50.0], [10, 150])
k1 = 1.6599e6 * exp(-6666.37 / (273.15 + u[1]))
k2 = 7.2117e8 * exp(-8333.3 / (273.15 + u[1]))
k3 = 2.6745e12 * exp(-11111.0 / (273.15 + u[1]))
#Fa = prob1.addFixedParameters(1)
#Fa.setPVals(NP.array([2.4]))
r1 = k1 * x[0] * x[1] * W
r2 = k2 * x[1] * x[2] * W
r3 = k3 * x[2] * x[5] * W

rhs = Expression(SX.zeros(6))
rhs[0] = Fa - (Fa + u[0]) * x[0] - r1
Esempio n. 10
0
theta0 = 104.9
S00 = 0.2
S11 = 1.0
S22 = 0.5
S33 = 0.2
S44 = 0.5000
S55 = 0.0000005
r0 = NP.array([2.14, 1.09, 114.2, 112.9, 14.19, -1113.5])
r1 = NP.array([2.9805,0.9612,106.0,100.75,18.038,-4565.88])
r2 = NP.array([3.5176,0.7395,87.0,79.8,8.256,-6239.33])

tph = 3600.0

x0 = NP.array([1.0,0.5,100.0,100.0])
#########
MPC = MPCproblem(50,total_plant=3000,dis='MultipleShooting')
x1 = MPC.addControllerStates(4,[0.0,0.0,50.0,50.0,-1.0e06],[10.0,10.0,250.0,250.0,1.0e06],[2.14,1.09,114.2,112.9,0.0])

u1 = MPC.addControllerInputs(2,[3.0,-9000.0],[35.0,0.0])

cA = x1[0]
cB = x1[1]
theta = x1[2]
thetaK = x1[3]
k1 = k10*exp(E1/(273.15 +theta))
k2 = k20*exp(E2/(273.15 +theta))
k3 = k30*exp(E3/(273.15 +theta))
rhs = SX.zeros(4)
rhs[0] = (1/tph)*(u1[0]*(cA0-cA) - k1*cA - k3*cA*cA)
rhs[1] = (1/tph)* (- u1[0]*cB + k1*cA - k2*cB)
rhs[2] = (1/tph)*(u1[0]*(theta0-theta) - (1/(rho*Cp)) *(k1*cA*H1 + k2*cB*H2 + k3*cA*cA*H3)+(kw*AR/(rho*Cp*VR))*(thetaK -theta))