hadar.optimizer.domain package¶
Submodules¶
hadar.optimizer.domain.input module¶
-
class
hadar.optimizer.domain.input.Consumption(quantity: hadar.optimizer.domain.numeric.NumericalValue, cost: hadar.optimizer.domain.numeric.NumericalValue, name: str = '')¶ Bases:
hadar.optimizer.utils.JSONConsumption element.
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.domain.input.Link(dest: str, quantity: hadar.optimizer.domain.numeric.NumericalValue, cost: hadar.optimizer.domain.numeric.NumericalValue)¶ Bases:
hadar.optimizer.utils.JSONLink element
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.domain.input.Production(quantity: hadar.optimizer.domain.numeric.NumericalValue, cost: hadar.optimizer.domain.numeric.NumericalValue, name: str = 'in')¶ Bases:
hadar.optimizer.utils.JSONProduction element
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.domain.input.Storage(name, capacity: hadar.optimizer.domain.numeric.NumericalValue, flow_in: hadar.optimizer.domain.numeric.NumericalValue, flow_out: hadar.optimizer.domain.numeric.NumericalValue, cost: hadar.optimizer.domain.numeric.NumericalValue, init_capacity: int, eff: hadar.optimizer.domain.numeric.NumericalValue)¶ Bases:
hadar.optimizer.utils.JSONStorage element
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.domain.input.Converter(name: str, src_ratios: Dict[Tuple[str, str], hadar.optimizer.domain.numeric.NumericalValue], dest_network: str, dest_node: str, cost: hadar.optimizer.domain.numeric.NumericalValue, max: hadar.optimizer.domain.numeric.NumericalValue)¶ Bases:
hadar.optimizer.utils.JSONConverter element
-
static
from_json(dict: dict, factory=None)¶
-
to_json() → dict¶
-
static
-
class
hadar.optimizer.domain.input.InputNetwork(nodes: Dict[str, hadar.optimizer.domain.input.InputNode] = None)¶ Bases:
hadar.optimizer.utils.JSONNetwork element
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.domain.input.InputNode(consumptions: List[hadar.optimizer.domain.input.Consumption], productions: List[hadar.optimizer.domain.input.Production], storages: List[hadar.optimizer.domain.input.Storage], links: List[hadar.optimizer.domain.input.Link])¶ Bases:
hadar.optimizer.utils.JSONNode element
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.domain.input.Study(horizon: int, nb_scn: int = 1, version: str = None)¶ Bases:
hadar.optimizer.utils.JSONMain object to facilitate to build a study
-
add_link(network: str, src: str, dest: str, cost: Union[List[T], numpy.ndarray, float], quantity: Union[List[T], numpy.ndarray, float])¶ Add a link inside network.
- Parameters
network – network where nodes belong
src – source node name
dest – destination node name
cost – cost of use
quantity – transfer capacity
- Returns
-
add_network(network: str)¶
-
add_node(network: str, node: str)¶
-
static
from_json(dict, factory=None)¶
-
network(name='default')¶ Entry point to create study with the fluent api.
- Returns
-
to_json()¶
-
-
class
hadar.optimizer.domain.input.NetworkFluentAPISelector(study, selector)¶ Bases:
objectNetwork level of Fluent API Selector.
-
build()¶ Build study.
- Returns
return study
-
converter(name: str, to_network: str, to_node: str, max: Union[List[T], numpy.ndarray, float], cost: Union[List[T], numpy.ndarray, float] = 0)¶ Add a converter element.
- Parameters
name – converter name
to_network – converter output network
to_node – converter output node on network
max – maximum quantity from converter
cost – cost for each quantity produce by converter
- Returns
-
link(src: str, dest: str, cost: Union[List[T], numpy.ndarray, float], quantity: Union[List[T], numpy.ndarray, float])¶ Add a link on network.
- Parameters
src – node source
dest – node destination
cost – unit cost transfer
quantity – available capacity
- Returns
NetworkAPISelector with new link.
-
network(name='default')¶ Go to network level.
- Parameters
name – network level, ‘default’ as default name
- Returns
NetworkAPISelector with selector set to ‘default’
-
node(name)¶ Go to node level.
- Parameters
name – node to select when changing level
- Returns
NodeFluentAPISelector initialized
-
-
class
hadar.optimizer.domain.input.NodeFluentAPISelector(study, selector)¶ Bases:
objectNode level of Fluent API Selector
-
build()¶ Build study.
- Returns
study
-
consumption(name: str, cost: Union[List[T], numpy.ndarray, float], quantity: Union[List[T], numpy.ndarray, float])¶ Add consumption on node.
- Parameters
name – consumption name
cost – cost of unsuitability
quantity – consumption to sustain
- Returns
NodeFluentAPISelector with new consumption
-
converter(name: str, to_network: str, to_node: str, max: Union[List[T], numpy.ndarray, float], cost: Union[List[T], numpy.ndarray, float] = 0)¶ Add a converter element.
- Parameters
name – converter name
to_network – converter output network
to_node – converter output node on network
max – maximum quantity from converter
cost – cost for each quantity produce by converter
- Returns
-
link(src: str, dest: str, cost: int, quantity: Union[List[T], numpy.ndarray, float])¶ Add a link on network.
- Parameters
src – node source
dest – node destination
cost – unit cost transfer
quantity – available capacity
- Returns
NetworkAPISelector with new link.
-
network(name='default')¶ Go to network level.
- Parameters
name – network level, ‘default’ as default name
- Returns
NetworkAPISelector with selector set to ‘default’
-
node(name)¶ Go to different node level.
- Parameters
name – new node level
- Returns
NodeFluentAPISelector
-
production(name: str, cost: Union[List[T], numpy.ndarray, float], quantity: Union[List[T], numpy.ndarray, float])¶ Add production on node.
- Parameters
name – production name
cost – unit cost of use
quantity – available capacities
- Returns
NodeFluentAPISelector with new production
-
storage(name, capacity: Union[List[T], numpy.ndarray, float], flow_in: Union[List[T], numpy.ndarray, float], flow_out: Union[List[T], numpy.ndarray, float], cost: Union[List[T], numpy.ndarray, float] = 0, init_capacity: int = 0, eff: Union[List[T], numpy.ndarray, float] = 0.99)¶ Create storage.
- Parameters
capacity – maximum storage capacity (like of many quantity to use inside storage)
flow_in – max flow into storage during on time step
flow_out – max flow out storage during on time step
cost – unit cost of storage at each time-step. default 0
init_capacity – initial capacity level. default 0
eff – storage efficient (applied on input flow stored). default 0.99
-
to_converter(name: str, ratio: Union[List[T], numpy.ndarray, float] = 1)¶ Add an ouptput to converter.
- Parameters
name – converter name
ratio – ratio for output
- Returns
-
hadar.optimizer.domain.numeric module¶
-
class
hadar.optimizer.domain.numeric.ColumnNumericValue(value: T, horizon: int, nb_scn: int)¶ Bases:
hadar.optimizer.domain.numeric.NumpyNumericalValueImplementation with one time step by scenario with shape (nb_scn, 1)
-
flatten() → numpy.ndarray¶ flat data into 1D matrix. :return: [v[0, 0], v[0, 1], v[0, 2], …, v[1, i], v[2, i], …, v[j, i])
-
static
from_json(dict)¶
-
-
class
hadar.optimizer.domain.numeric.MatrixNumericalValue(value: T, horizon: int, nb_scn: int)¶ Bases:
hadar.optimizer.domain.numeric.NumpyNumericalValueImplementation with complex matrix with shape (nb_scn, horizon)
-
flatten() → numpy.ndarray¶ flat data into 1D matrix. :return: [v[0, 0], v[0, 1], v[0, 2], …, v[1, i], v[2, i], …, v[j, i])
-
static
from_json(dict)¶
-
-
class
hadar.optimizer.domain.numeric.NumericalValue(value: T, horizon: int, nb_scn: int)¶ Bases:
hadar.optimizer.utils.JSON,abc.ABC,typing.GenericInterface to handle numerical value in study
-
flatten() → numpy.ndarray¶ flat data into 1D matrix. :return: [v[0, 0], v[0, 1], v[0, 2], …, v[1, i], v[2, i], …, v[j, i])
-
-
class
hadar.optimizer.domain.numeric.NumericalValueFactory(horizon: int, nb_scn: int)¶ Bases:
object-
create(value: Union[float, List[float], str, numpy.ndarray, hadar.optimizer.domain.numeric.NumericalValue]) → hadar.optimizer.domain.numeric.NumericalValue¶
-
-
class
hadar.optimizer.domain.numeric.NumpyNumericalValue(value: T, horizon: int, nb_scn: int)¶ Bases:
hadar.optimizer.domain.numeric.NumericalValue,abc.ABCHalf-implementation with numpy array as numerical value. Implement only compare methods.
-
class
hadar.optimizer.domain.numeric.RowNumericValue(value: T, horizon: int, nb_scn: int)¶ Bases:
hadar.optimizer.domain.numeric.NumpyNumericalValueImplementation with one scenario wiht shape (horizon, ).
-
flatten() → numpy.ndarray¶ flat data into 1D matrix. :return: [v[0, 0], v[0, 1], v[0, 2], …, v[1, i], v[2, i], …, v[j, i])
-
static
from_json(dict)¶
-
-
class
hadar.optimizer.domain.numeric.ScalarNumericalValue(value: T, horizon: int, nb_scn: int)¶ Bases:
hadar.optimizer.domain.numeric.NumericalValueImplement one scalar numerical value i.e. float or int
-
flatten() → numpy.ndarray¶ flat data into 1D matrix. :return: [v[0, 0], v[0, 1], v[0, 2], …, v[1, i], v[2, i], …, v[j, i])
-
static
from_json(dict)¶
-
hadar.optimizer.domain.output module¶
-
class
hadar.optimizer.domain.output.OutputProduction(quantity: Union[numpy.ndarray, list], name: str = 'in')¶ Bases:
hadar.optimizer.utils.JSONProduction element
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.domain.output.OutputNode(consumptions: List[hadar.optimizer.domain.output.OutputConsumption], productions: List[hadar.optimizer.domain.output.OutputProduction], storages: List[hadar.optimizer.domain.output.OutputStorage], links: List[hadar.optimizer.domain.output.OutputLink])¶ Bases:
hadar.optimizer.utils.JSONNode element
-
static
build_like_input(input: hadar.optimizer.domain.input.InputNode, fill: numpy.ndarray)¶ Use an input node to create an output node. Keep list elements fill quantity by zeros.
- Parameters
input – InputNode to copy
fill – array to use to fill data
- Returns
OutputNode like InputNode with all quantity at zero
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.domain.output.OutputStorage(name: str, capacity: Union[numpy.ndarray, list], flow_in: Union[numpy.ndarray, list], flow_out: Union[numpy.ndarray, list])¶ Bases:
hadar.optimizer.utils.JSONStorage element
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.domain.output.OutputLink(dest: str, quantity: Union[numpy.ndarray, list])¶ Bases:
hadar.optimizer.utils.JSONLink element
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.domain.output.OutputConsumption(quantity: Union[numpy.ndarray, list], name: str = '')¶ Bases:
hadar.optimizer.utils.JSONConsumption element
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.domain.output.OutputNetwork(nodes: Dict[str, hadar.optimizer.domain.output.OutputNode])¶ Bases:
hadar.optimizer.utils.JSONNetwork element
-
static
from_json(dict, factory=None)¶
-
static
-
class
hadar.optimizer.domain.output.OutputConverter(name: str, flow_src: Dict[Tuple[str, str], Union[numpy.ndarray, List[T]]], flow_dest: Union[numpy.ndarray, List[T]])¶ Bases:
hadar.optimizer.utils.JSONConverter element
-
static
from_json(dict: dict, factory=None)¶
-
to_json() → dict¶
-
static
-
class
hadar.optimizer.domain.output.Result(networks: Dict[str, hadar.optimizer.domain.output.OutputNetwork], converters: Dict[str, hadar.optimizer.domain.output.OutputConverter], benchmark: hadar.optimizer.domain.output.Benchmark = None)¶ Bases:
hadar.optimizer.utils.JSONResult of study
-
static
from_json(dict, factory=None)¶
-
static