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.JSON
Consumption 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.JSON
Link 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.JSON
Production 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.JSON
Storage 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.JSON
Converter 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.JSON
Network 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.JSON
Node 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.JSON
Main 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:
object
Network 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:
object
Node 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.NumpyNumericalValue
Implementation 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.NumpyNumericalValue
Implementation 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.Generic
Interface 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.ABC
Half-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.NumpyNumericalValue
Implementation 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.NumericalValue
Implement 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.JSON
Production 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.JSON
Node 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.JSON
Storage 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.JSON
Link 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.JSON
Consumption 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.JSON
Network 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.JSON
Converter 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.JSON
Result of study
-
static
from_json
(dict, factory=None)¶
-
static