I would like to specify a certain range for a variable for a certain timeslot in Pyomo. I have a temperature variable $T(t)$ that is defined by using the difference equation $$T(t) = T(t-1) + \cdots,\quad\forall t>1.$$ But for the last value of the timeslot
t_end the temperature should be between two limits
T_init + 0.1 >= T(t_end) >= T_init - 0.1, where
T_init is a constant temperature value at the beginning of the optimization. How can I realize that in Pyomo? I have only set one boundary so far (either the greater than or equal or the less than or equal constraint). Here is the code that I have:
def temperatureBufferStorageConstraintRule(model, t): if t == model.set_timeslots.first(): return model.variable_temperatureBufferStorage[t] == SetUpScenarios.initialBufferStorageTemperature if t == model.set_timeslots.last(): return SetUpScenarios.initialBufferStorageTemperature + 0.1 >= model.variable_temperatureBufferStorage[t] >= SetUpScenarios.initialBufferStorageTemperature - 0.1 return model.variable_temperatureBufferStorage[t] == model.variable_temperatureBufferStorage[t-1] + ((model.variable_heatGenerationCoefficient_SpaceHeating[t] * model.param_COPHeatPump_SpaceHeating[t] * SetUpScenarios.electricalPower_HP * SetUpScenarios.timeResolution - model.param_heatDemand_In_W [t] * SetUpScenarios.timeResolution - SetUpScenarios.standingLossesBufferStorage * SetUpScenarios.timeResolution) / (SetUpScenarios.capacityOfBufferStorage * SetUpScenarios.densityOfCement * SetUpScenarios.specificHeatCapacityOfCement)) model.constraint_temperatureBufferStorage = pyo.Constraint (model.set_timeslots, rule=temperatureBufferStorageConstraintRule) model.constraint_temperatureBufferStorage.pprint()
You do not have to care about the exact definition of
model.variable_temperatureBufferStorage[t] which is the $T(t)$. Basically only the line with
if t == model.set_timeslots.last(): is important. Just for clarification I want to mention that I load all the constant values from a class called
SetUpScenarios but this is not so important I guess for my question.
When using my code I only realize the less than or equal constraint and get the following output when printing the constraint:
variable_temperatureBufferStorage : 21.1 : True
Do you know how I can combine those two constraints and also realize the less than or equal constraint? I'd appreciate every comment and would be quite thankful for your help.