hadar.optimizer.lp package¶
Submodules¶
hadar.optimizer.lp.domain module¶
-
class
hadar.optimizer.lp.domain.JSONLP¶ Bases:
hadar.optimizer.utils.JSON,abc.ABC-
static
from_json(dict, factory=None)¶
-
to_json()¶
-
static
-
class
hadar.optimizer.lp.domain.LPConsumption(quantity: int, variable: Union[ortools.linear_solver.pywraplp.Variable, float], cost: float = 0, name: str = '')¶ Bases:
hadar.optimizer.lp.domain.JSONLPConsumption element for linear programming.
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.lp.domain.LPConverter(name: str, src_ratios: Dict[Tuple[str, str], float], var_flow_src: Dict[Tuple[str, str], Union[ortools.linear_solver.pywraplp.Variable, float]], dest_network: str, dest_node: str, var_flow_dest: Union[ortools.linear_solver.pywraplp.Variable, float], cost: float, max: float)¶ Bases:
hadar.optimizer.lp.domain.JSONLPConverter element for linear programming
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.lp.domain.LPLink(src: str, dest: str, quantity: int, variable: Union[ortools.linear_solver.pywraplp.Variable, float], cost: float = 0)¶ Bases:
hadar.optimizer.lp.domain.JSONLPLink element for linear programming
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.lp.domain.LPNetwork(nodes: Dict[str, hadar.optimizer.lp.domain.LPNode] = None)¶ Bases:
hadar.optimizer.utils.JSONNetwork element for linear programming
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.lp.domain.LPNode(consumptions: List[hadar.optimizer.lp.domain.LPConsumption], productions: List[hadar.optimizer.lp.domain.LPProduction], storages: List[hadar.optimizer.lp.domain.LPStorage], links: List[hadar.optimizer.lp.domain.LPLink])¶ Bases:
hadar.optimizer.utils.JSONNode element for linear programming
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.lp.domain.LPProduction(quantity: int, variable: Union[ortools.linear_solver.pywraplp.Variable, float], cost: float = 0, name: str = 'in')¶ Bases:
hadar.optimizer.lp.domain.JSONLPProduction element for linear programming.
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.lp.domain.LPStorage(name, capacity: int, var_capacity: Union[ortools.linear_solver.pywraplp.Variable, float], flow_in: float, var_flow_in: Union[ortools.linear_solver.pywraplp.Variable, float], flow_out: float, var_flow_out: Union[ortools.linear_solver.pywraplp.Variable, float], cost: float = 0, init_capacity: int = 0, eff: float = 0.99)¶ Bases:
hadar.optimizer.lp.domain.JSONLPStorage element
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.lp.domain.LPTimeStep(networks: Dict[str, hadar.optimizer.lp.domain.LPNetwork], converters: Dict[str, hadar.optimizer.lp.domain.LPConverter])¶ Bases:
hadar.optimizer.utils.JSON-
static
create_like_study(study: hadar.optimizer.domain.input.Study)¶
-
static
from_json(dict, factory=None)¶
-
static
hadar.optimizer.lp.mapper module¶
-
class
hadar.optimizer.lp.mapper.InputMapper(solver: ortools.linear_solver.pywraplp.Solver, study: hadar.optimizer.domain.input.Study)¶ Bases:
objectInput mapper from global domain to linear programming specific domain
-
get_conv_var(name: str, t: int, scn: int) → hadar.optimizer.lp.domain.LPConverter¶ Map Converter to LPConverter.
- Parameters
name – converter name
t – time step
scn – scenario index
- Returns
LPConverter
-
get_node_var(network: str, node: str, t: int, scn: int) → hadar.optimizer.lp.domain.LPNode¶ Map InputNode to LPNode.
- Parameters
network – network name
node – node name
t – time step
scn – scenario index
- Returns
LPNode according to node name at t in study
-
-
class
hadar.optimizer.lp.mapper.OutputMapper(study: hadar.optimizer.domain.input.Study)¶ Bases:
objectOutput mapper from specific linear programming domain to global domain.
-
get_result() → hadar.optimizer.domain.output.Result¶ Get result.
- Returns
final result after map all nodes
-
set_converter_var(name: str, t: int, scn: int, vars: hadar.optimizer.lp.domain.LPConverter)¶
-
set_node_var(network: str, node: str, t: int, scn: int, vars: hadar.optimizer.lp.domain.LPNode)¶ Map linear programming node to global node (set inside intern attribute).
- Parameters
network – network name
node – node name
t – timestamp index
scn – scenario index
vars – linear programming node with ortools variables inside
- Returns
None (use get_result)
-
hadar.optimizer.lp.optimizer module¶
-
class
hadar.optimizer.lp.optimizer.AdequacyBuilder(solver: ortools.linear_solver.pywraplp.Solver)¶ Bases:
objectBuild adequacy flow constraint.
-
add_converter(conv: hadar.optimizer.lp.domain.LPConverter, t: int)¶ Add converter element in equation. Sources are like consumptions, destination like production
- Parameters
conv – converter element to add
t – time index to use
- Returns
-
add_node(name_network: str, name_node: str, node: hadar.optimizer.lp.domain.LPNode, t: int)¶ Add flow constraint for a specific node.
- Parameters
name_network – network name. Used to differentiate each equation
name_node – node name. Used to differentiate each equation
node – node to map constraint
- Returns
-
build()¶ Call when all node are added. Apply all import flow for each node.
- Returns
-
-
class
hadar.optimizer.lp.optimizer.ConverterMixBuilder(solver: ortools.linear_solver.pywraplp.Solver)¶ Bases:
objectBuild equation to determine ratio mix between sources converter.
-
add_converter(conv: hadar.optimizer.lp.domain.LPConverter)¶
-
build()¶
-
-
class
hadar.optimizer.lp.optimizer.ObjectiveBuilder(solver: ortools.linear_solver.pywraplp.Solver)¶ Bases:
objectBuild objective cost function.
-
add_converter(conv: hadar.optimizer.lp.domain.LPConverter)¶ Add converter. Apply cost on output of converter.
- Parameters
conv – converter to cost
- Returns
-
add_node(node: hadar.optimizer.lp.domain.LPNode)¶ Add cost in objective for each node element.
- Parameters
node – node to add
- Returns
-
build()¶
-
-
class
hadar.optimizer.lp.optimizer.StorageBuilder(solver: ortools.linear_solver.pywraplp.Solver)¶ Bases:
objectBuild storage constraints
-
add_node(name_network: str, name_node: str, node: hadar.optimizer.lp.domain.LPNode, t: int) → ortools.linear_solver.pywraplp.Constraint¶
-
build()¶
-
-
hadar.optimizer.lp.optimizer.solve_lp(study: hadar.optimizer.domain.input.Study, out_mapper=None) → hadar.optimizer.domain.output.Result¶ Solve adequacy flow problem with a linear optimizer.
- Parameters
study – study to compute
out_mapper – use only for test purpose to inject mock. Keep None as default.
- Returns
Result object with optimal solution