openLoopControlTagsModelica = ['alpha_G_m_in1','alpha_G_m_in2','inputGas1', 'inputGas2','net.p.z', 'net.w1.z1', 'net.w2.z1']
openLoopcontrolTagsSim =     ['alpha_G_m_in1','alpha_G_m_in2',
                               'Gas_Source_1.MASSFLOW',
                               'Gas_Source_2.MASSFLOW',
                               'PC-INL.CONTR',
                               'PC-A1.CONTR',
                               'PC-A2.CONTR']

tags = measurementTagsSim + measurementsMonitorSim

nTags = len(tags)
nyTags = len(measurementTagsModelica)

models_list = modelCompiler.getModelList('.', True)
ocp = modelCompiler.getOCP('ocpGaslift_D1D2', models_list)
ocpSim = modelCompiler.getOCP('ocpGaslift_Sim', models_list)

ocp.makeSemiExplicit()
ocp.eliminateIndependentParameters()
ocp.eliminateDependentParameters()
ocp.eliminateDependentParameterInterdependencies()
ocp.eliminateAlgebraic()

ocpSim.makeSemiExplicit()
ocpSim.eliminateIndependentParameters()
ocpSim.eliminateDependentParameters()
ocpSim.eliminateDependentParameterInterdependencies()
ocpSim.eliminateAlgebraic()

DT = 10  # for simulation and kalman filtering
controlTagsModelica = ['inputGas1', 'inputGas2', 'uTOP', 'uWHD1', 'uWHD2']
controlTagsOlga = ['Gas_Source_1.MASSFLOW', 'Gas_Source_2.MASSFLOW', 'PC-TOP.SETPOINT', 'PC-T1.SETPOINT',
                   'PC-T2.SETPOINT']

openLoopControlTagsModelica = ['alpha_G_m_in1', 'alpha_G_m_in2', 'inputGas1', 'inputGas2', 'net.p.z', 'net.w1.z1',
                               'net.w2.z1']
openLoopControlTagsOlga = ['IPR_1.GASFRACTION', 'IPR_2.GASFRACTION',
                           'Gas_Source_1.MASSFLOW',
                           'Gas_Source_2.MASSFLOW',
                           'PC-INL.CONTR',
                           'PC-A1.CONTR',
                           'PC-A2.CONTR']

models_list = modelCompiler.getModelList('.', True)
ocp = modelCompiler.getOCP('ocpGaslift_D3D4', models_list)

ocp.makeSemiExplicit()
ocp.eliminateIndependentParameters()
ocp.eliminateDependentParameters()
ocp.eliminateDependentParameterInterdependencies()
ocp.eliminateAlgebraic()

DT = 10  # for simulation and kalman filtering
DTMPC = 1200  ## for the MPC algorithm  Please always choose one to be multiple of the other
prediction_horizon = 12 * 3600

scaleXModelica = ca.vertcat([ocp.variable(ocp.x[k].getName()).nominal for k in range(ocp.x.size())])
scaleZModelica = ca.vertcat([ocp.variable(ocp.z[k].getName()).nominal for k in range(ocp.z.size())])
scaleUModelica = ca.vertcat([ocp.variable(ocp.u[k].getName()).nominal for k in range(ocp.u.size())])
예제 #3
0
                           'PC-A2.CONTR', 'PC-INL.CONTR', 'PC-INL.MEASVAR', 'GOR1.CONTR', 'GOR2.CONTR']

controlTagsModelica = ['inputGas1', 'inputGas2', 'uTOP', 'uWHD1', 'uWHD2']
controlTagsOlga = ['Gas_Source_1.MASSFLOW', 'Gas_Source_2.MASSFLOW', 'PC-TOP.SETPOINT', 'PC-T1.SETPOINT',
                   'PC-T2.SETPOINT']

openLoopControlTagsModelica = ['P_res1', 'P_res1', 'inputGas1', 'inputGas2', 'net.p.z', 'net.w1.z1', 'net.w2.z1']
openLoopControlTagsOlga = ['P_res1', 'P_res1',
                           'Gas_Source_1.MASSFLOW',
                           'Gas_Source_2.MASSFLOW',
                           'PC-INL.CONTR',
                           'PC-A1.CONTR',
                           'PC-A2.CONTR']

models_list = modelCompiler.getModelList('.', True)
ocp = modelCompiler.getOCP('ocpGaslift_Nominal', models_list)

ocp.makeSemiExplicit()
ocp.eliminateIndependentParameters()
ocp.eliminateDependentParameters()
ocp.eliminateDependentParameterInterdependencies()
ocp.eliminateAlgebraic()

DT = 10  # for simulation and kalman filtering
DTMPC = 1200  ## for the MPC algorithm  Please always choose one to be multiple of the other
prediction_horizon = 12 * 3600

scaleXModelica = ca.vertcat([ocp.variable(ocp.x[k].getName()).nominal for k in range(ocp.x.size())])
scaleZModelica = ca.vertcat([ocp.variable(ocp.z[k].getName()).nominal for k in range(ocp.z.size())])
scaleUModelica = ca.vertcat([ocp.variable(ocp.u[k].getName()).nominal for k in range(ocp.u.size())])
import modelCompiler
import DaeModel

reload(modelCompiler)
reload(DaeModel)

measurementTagsModelica = [
    'net.p.w_mix_out', 'net.w1.w_L_out', 'net.w2.w_L_out', 'net.p.fin.p',
    'net.p.Alpha_L1_av', 'net.w1.P_bh', 'net.w2.P_bh', 'net.w1.fin.p',
    'net.w2.fin.p', 'net.p.deltaP_valve', 'net.w1.deltaP_valve',
    'net.w2.deltaP_valve'
]

models_list = modelCompiler.getModelList('.', True)
ocp = modelCompiler.getOCP('ocpGaslift_OpenLoop', models_list)

ocp.makeSemiExplicit()
ocp.eliminateIndependentParameters()
ocp.eliminateDependentParameters()
ocp.eliminateDependentParameterInterdependencies()
ocp.eliminateAlgebraic()

# u = C.vertcat([ocp.variable(xit.getName()).initialGuess.getValue() for xit in ocp.u])

u = np.array([1, 1, 0.5, 0.5, 0.5])  # Initial conditions
# u = np.array([1.29622, 1.32441, 0.580464, 0.608216, 0.576931])  # Steady-state optimal

daeModel = DaeModel.DaeModel()
DT = 10
daeModel.init(ocp, DT, measurementTagsModelica)