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())])
'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)