You then need to set the parameters and upper bounds directly on the optimization model (which is a pyomo model).
An example can be found here: https://github.com/oemof/oemof-examples/blob/master/oemof_examples/oemof.solph/v0.3.x/flexible_modelling/add_constraints.py
Unfortunately, the access differs depending on the actual object you are changing. But generally it should work like this whereas om
is your optimization model:
# Flow: Set upper bound
om.flow[(source, target), timestep].setub(my_value)
# Flow: Set value
om.flow[(source, target), timestep].value = my_value
# GenericStorage: Set upper bound (capacity)
om.GenericStorageBlock[(my_storage,), timestep].setub(my_value)
# GenericStorage: Set initial/end state of charge
om.GenericStorageBlock[(my_storage,),om.TIMESTEPS[-1]] = my_value * 0.5
om.GenericStorageBlock[(my_storage,),om.TIMESTEPS[-1]].fix()
# Other components: Set upper bound
om.MyComponent[my_component_instance, timestep].setub = my_value
# Other components: Set value
om.MyComponent[my_component_instance, timestep].value = my_value
Depending on the component you want to change, you might also have a look into the modules here which hold the different model blocks (blocks, components, custom): https://github.com/oemof/oemof/tree/dev/oemof/solph
General information on how to work with pyomo models can be found here: https://pyomo.readthedocs.io/en/latest/working_models.html
Good luck!
Cord