Voltage, Current, Pressure, and Flow Velocity Limits in Optimization Models

Hi all,
How can I in oemof incorporate specific operational constraints such as voltage limits (U_min ≤ U ≤ U_max) and maximum current (|I| ≤ I_max) for an electrical network, as well as pressure limits (p_min ≤ p ≤ p_max) and maximum flow velocity (ω_max) for a gas or heating network as constraints in my oemof.solph optimization model? What methods or approaches are best suited for this purpose?

I tried to make it possible, but without success.

VoltageConstraint/.github/workflows/blank.yml at main · AhmadAlHariri96/VoltageConstraint

Hi @AhmadAlHariri,

The problem is that you want to optimise power and P = U \times I or P \propto p \times \omega . So, having constraints for voltage and current will result in a quadratic problem. This is not directly possible in solph. For heat, I summarised a possible approach in [2012.12664v1] Simultaneous optimisation of temperature and energy in linear energy system models (arxiv.org).

For your case, something analogue would be possible. For example, having discrete pressure or levels voltage levels that then have a constrained power that is calculated using the maximum current or velocity. If you want to avoid mixed integer constraints, you can relax the constraint that allows only one voltage or pressure in the same spirit as @pierre-haessig sketched it for exclusive charging or discharging of a battery.

Hi @AhmadAlHariri,

Powerflow constraints are indeed nonconvex (often bilinear as stated by @pschoen ) once current and voltages comes into play. The classical so-called “DC power flow” (linear) approximation for meshed network will be of no use since it assumes U=Unominal at each bus.

If your problem happens to be a distribution grid (not meshed), there exists linear (or linearized?) simplifications. I came across this 2020 article by Rémy Rigo-Mariani (G2Elab, Grenoble) A Modified DistFlow for Distributed Generation Planning Problems in Radial Grids | IEEE Conference Publication | IEEE Xplore. I’m not familiar enough with this so-called “DistFlow” approach neither with his modification (and neither with your problem) to comment on its applicability for you, but it may be worth investigating.