monee.model.formulation

Core

class monee.model.formulation.core.BranchFormulation[source]

Bases: Formulation

equations(branch, grid, from_node_model, to_node_model, **kwargs)[source]
minimize(branch, grid, from_node_model, to_node_model, **kwargs)[source]
class monee.model.formulation.core.ChildFormulation[source]

Bases: Formulation

equations(child, grid, node, **kwargs)[source]
minimize(child, grid, node, **kwargs)[source]
overwrite(child, node_model, grid)[source]
class monee.model.formulation.core.CompoundFormulation[source]

Bases: Formulation

equations(compound, network, **kwargs)[source]
minimize(compound, network, **kwargs)[source]
class monee.model.formulation.core.Formulation[source]

Bases: object

ensure_var(model)[source]
class monee.model.formulation.core.NetworkConstraint[source]

Bases: object

Solver-agnostic network-level constraint extension.

Analogous to BranchFormulation / NodeFormulation but spanning the entire network. Register with network.add_extension(constraint).

Phase 1 — prepare(network): called before variable injection; add Var placeholders to model objects so the injection loop picks them up.

Phase 2 — equations(network, ignored_nodes) list: called after variable injection; return relational expressions (==, <=, >=) built from injected model attributes. The solver registers them with m.Equations(eqs) / pm.cons.add without inspecting their content — exactly like branch/node equations.

equations(network, ignored_nodes: set)[source]

Return solver-agnostic relational expressions (empty by default).

Return type:

list

prepare(network)[source]

Add Var placeholders before variable injection (no-op by default).

Return type:

None

class monee.model.formulation.core.NetworkFormulation(branch_type_to_formulations=None, node_type_to_formulations=None, child_type_to_formulations=None, compound_type_to_formulations=None)[source]

Bases: object

branch_type_to_formulations: dict[tuple[type, type], BranchFormulation]
child_type_to_formulations: dict[tuple[type, type], ChildFormulation]
compound_type_to_formulations: dict[tuple[type, type], CompoundFormulation]
node_type_to_formulations: dict[tuple[type, type], NodeFormulation]
class monee.model.formulation.core.NodeFormulation[source]

Bases: Formulation

equations(node, grid, from_branch_models, to_branch_models, connected_child_models, **kwargs)[source]
minimize(node, grid, from_branch_models, to_branch_models, connected_child_models, **kwargs)[source]

Ready-to-use network formulations

The following constants are importable directly from monee.model.formulation:

Electricity

Nonlinear AC

class monee.model.formulation.nonlinear.ac.ACElectricityBranchFormulation[source]

Bases: BranchFormulation

equations(branch, grid, from_node_model, to_node_model, **kwargs)[source]
class monee.model.formulation.nonlinear.ac.ACElectricityNodeFormulation[source]

Bases: NodeFormulation

MISOCP relaxation

class monee.model.formulation.misoc.el.MISOCPElectricityBranchFormulation[source]

Bases: BranchFormulation

ensure_var(branch)[source]
equations(branch, grid, from_node_model, to_node_model, **kwargs)[source]
minimize(branch, grid, from_node_model, to_node_model, **kwargs)[source]
class monee.model.formulation.misoc.el.MISOCPElectricityNodeFormulation[source]

Bases: NodeFormulation

ensure_var(node)[source]
equations(node, grid, from_branch_models, to_branch_models, connected_node_models, **kwargs)[source]

Gas

Nonlinear Weymouth

class monee.model.formulation.nonlinear.gas.NLWeymouthBranchFormulation[source]

Bases: BranchFormulation

equations(branch, grid, from_node_model, to_node_model, **kwargs)[source]
class monee.model.formulation.nonlinear.gas.NLWeymouthNodeFormulation[source]

Bases: NodeFormulation

ensure_var(model)[source]
equations(node, grid, from_branch_models, to_branch_models, connected_child_models, **kwargs)[source]

Water / district heating

Nonlinear Darcy–Weisbach

class monee.model.formulation.nonlinear.water.NLDarcyWeisbachBranchFormulation[source]

Bases: BranchFormulation

ensure_var(model)[source]
equations(branch, grid, from_node_model, to_node_model, **kwargs)[source]
class monee.model.formulation.nonlinear.water.NLDarcyWeisbachHeatExchangerFormulation[source]

Bases: NLDarcyWeisbachBranchFormulation

ensure_var(model)[source]
equations(branch, grid, from_node_model, to_node_model, **kwargs)[source]
class monee.model.formulation.nonlinear.water.NLDarcyWeisbachNodeFormulation[source]

Bases: NodeFormulation

ensure_var(model)[source]
equations(node, grid, from_branch_models, to_branch_models, connected_child_models, **kwargs)[source]