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)

Bases: hadar.optimizer.utils.JSON

Link element

static from_json(dict, factory=None)
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)
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)
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
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)
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)
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 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

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

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)
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)
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)

Bases: hadar.optimizer.utils.JSON

Link element

static from_json(dict, factory=None)
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)
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)
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
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)

Module contents