From 3fca2d2b4e0d151e7e75939c0e88765ab1de88f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 5 Jun 2024 10:41:36 +0200 Subject: [PATCH 01/17] Start removing period from flow index An index entry should not be needed for the flow. In preparation for time-series aggegration, a cleanup might make sense, to keep overall complexity managable. --- src/oemof/solph/_models.py | 41 +++++++-------------- src/oemof/solph/flows/_simple_flow_block.py | 38 ++++++++----------- 2 files changed, 28 insertions(+), 51 deletions(-) diff --git a/src/oemof/solph/_models.py b/src/oemof/solph/_models.py index 59ab74188..47ad31f7e 100644 --- a/src/oemof/solph/_models.py +++ b/src/oemof/solph/_models.py @@ -425,31 +425,16 @@ def _add_parent_block_sets(self): initialize=range(len(self.es.timeincrement) + 1), ordered=True ) + + self.TIMEINDEX = po.Set( + initialize=list( + range(len(self.es.timeincrement)), + ), + ordered=True, + ) if self.es.periods is None: - self.TIMEINDEX = po.Set( - initialize=list( - zip( - [0] * len(self.es.timeincrement), - range(len(self.es.timeincrement)), - ) - ), - ordered=True, - ) self.PERIODS = po.Set(initialize=[0]) else: - nested_list = [ - [k] * len(self.es.periods[k]) - for k in range(len(self.es.periods)) - ] - flattened_list = [ - item for sublist in nested_list for item in sublist - ] - self.TIMEINDEX = po.Set( - initialize=list( - zip(flattened_list, range(len(self.es.timeincrement))) - ), - ordered=True, - ) self.PERIODS = po.Set( initialize=sorted(list(set(range(len(self.es.periods))))) ) @@ -496,27 +481,27 @@ def _add_parent_block_variables(self): if self.flows[o, i].nominal_value is not None: if self.flows[o, i].fix[self.TIMESTEPS.at(1)] is not None: for p, t in self.TIMEINDEX: - self.flow[o, i, p, t].value = ( + self.flow[o, i, t].value = ( self.flows[o, i].fix[t] * self.flows[o, i].nominal_value ) - self.flow[o, i, p, t].fix() + self.flow[o, i, t].fix() else: for p, t in self.TIMEINDEX: - self.flow[o, i, p, t].setub( + self.flow[o, i, t].setub( self.flows[o, i].max[t] * self.flows[o, i].nominal_value ) if not self.flows[o, i].nonconvex: for p, t in self.TIMEINDEX: - self.flow[o, i, p, t].setlb( + self.flow[o, i, t].setlb( self.flows[o, i].min[t] * self.flows[o, i].nominal_value ) elif (o, i) in self.UNIDIRECTIONAL_FLOWS: for p, t in self.TIMEINDEX: - self.flow[o, i, p, t].setlb(0) + self.flow[o, i, t].setlb(0) else: if (o, i) in self.UNIDIRECTIONAL_FLOWS: for p, t in self.TIMEINDEX: - self.flow[o, i, p, t].setlb(0) + self.flow[o, i, t].setlb(0) diff --git a/src/oemof/solph/flows/_simple_flow_block.py b/src/oemof/solph/flows/_simple_flow_block.py index eb4d55c26..14fbe6136 100644 --- a/src/oemof/solph/flows/_simple_flow_block.py +++ b/src/oemof/solph/flows/_simple_flow_block.py @@ -215,7 +215,7 @@ def _flow_full_load_time_max_rule(model): """Rule definition for build action of max. sum flow constraint.""" for inp, out in self.FULL_LOAD_TIME_MAX_FLOWS: lhs = sum( - m.flow[inp, out, p, ts] * m.timeincrement[ts] + m.flow[inp, out, ts] * m.timeincrement[ts] for p, ts in m.TIMEINDEX ) rhs = ( @@ -235,7 +235,7 @@ def _flow_full_load_time_min_rule(model): """Rule definition for build action of min. sum flow constraint.""" for inp, out in self.FULL_LOAD_TIME_MIN_FLOWS: lhs = sum( - m.flow[inp, out, p, ts] * m.timeincrement[ts] + m.flow[inp, out, ts] * m.timeincrement[ts] for p, ts in m.TIMEINDEX ) rhs = ( @@ -260,14 +260,12 @@ def _positive_gradient_flow_rule(model): m.flow[ inp, out, - m.TIMEINDEX.at(index)[0], - m.TIMEINDEX.at(index)[1], + m.TIMEINDEX.at(index), ] - m.flow[ inp, out, - m.TIMEINDEX.at(index - 1)[0], - m.TIMEINDEX.at(index - 1)[1], + m.TIMEINDEX.at(index - 1), ] ) rhs = self.positive_gradient[ @@ -277,8 +275,7 @@ def _positive_gradient_flow_rule(model): ( inp, out, - m.TIMEINDEX.at(index)[0], - m.TIMEINDEX.at(index)[1], + m.TIMEINDEX.at(index) ), lhs <= rhs, ) @@ -289,8 +286,7 @@ def _positive_gradient_flow_rule(model): ( inp, out, - m.TIMEINDEX.at(index)[0], - m.TIMEINDEX.at(index)[1], + m.TIMEINDEX.at(index) ), lhs == rhs, ) @@ -311,14 +307,12 @@ def _negative_gradient_flow_rule(model): m.flow[ inp, out, - m.TIMEINDEX.at(index - 1)[0], - m.TIMEINDEX.at(index - 1)[1], + m.TIMEINDEX.at(index - 1) ] - m.flow[ inp, out, - m.TIMEINDEX.at(index)[0], - m.TIMEINDEX.at(index)[1], + m.TIMEINDEX.at(index) ] ) rhs = self.negative_gradient[ @@ -328,8 +322,7 @@ def _negative_gradient_flow_rule(model): ( inp, out, - m.TIMEINDEX.at(index)[0], - m.TIMEINDEX.at(index)[1], + m.TIMEINDEX.at(index) ), lhs <= rhs, ) @@ -340,8 +333,7 @@ def _negative_gradient_flow_rule(model): ( inp, out, - m.TIMEINDEX.at(index)[0], - m.TIMEINDEX.at(index)[1], + m.TIMEINDEX.at(index) ), lhs == rhs, ) @@ -353,9 +345,9 @@ def _negative_gradient_flow_rule(model): rule=_negative_gradient_flow_rule ) - def _integer_flow_rule(block, ii, oi, pi, ti): + def _integer_flow_rule(block, ii, oi, ti): """Force flow variable to NonNegativeInteger values.""" - return self.integer_flow[ii, oi, ti] == m.flow[ii, oi, pi, ti] + return self.integer_flow[ii, oi, ti] == m.flow[ii, oi, ti] self.integer_flow_constr = Constraint( self.INTEGER_FLOWS, m.TIMEINDEX, rule=_integer_flow_rule @@ -368,7 +360,7 @@ def _lifetime_output_rule(block): for inp, out in self.LIFETIME_FLOWS: for p, ts in m.TIMEINDEX: if m.flows[inp, out].lifetime <= m.es.periods_years[p]: - lhs = m.flow[inp, out, p, ts] + lhs = m.flow[inp, out, ts] rhs = 0 self.lifetime_output.add( (inp, out, p, ts), (lhs == rhs) @@ -462,9 +454,9 @@ def _objective_expression(self): if m.es.periods is None: for i, o in m.FLOWS: if m.flows[i, o].variable_costs[0] is not None: - for p, t in m.TIMEINDEX: + for t in m.TIMEINDEX: variable_costs += ( - m.flow[i, o, p, t] + m.flow[i, o, t] * m.objective_weighting[t] * m.flows[i, o].variable_costs[t] ) From c25ba7bc9b5bdc06984179e3059c10d91556972d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 5 Jun 2024 11:53:39 +0200 Subject: [PATCH 02/17] Adhere to Black --- src/oemof/solph/_models.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/oemof/solph/_models.py b/src/oemof/solph/_models.py index 47ad31f7e..eb0d88224 100644 --- a/src/oemof/solph/_models.py +++ b/src/oemof/solph/_models.py @@ -425,7 +425,6 @@ def _add_parent_block_sets(self): initialize=range(len(self.es.timeincrement) + 1), ordered=True ) - self.TIMEINDEX = po.Set( initialize=list( range(len(self.es.timeincrement)), From 1c19f6dface942be31f4be6137e97324bb028b9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 5 Jun 2024 12:13:46 +0200 Subject: [PATCH 03/17] Adjust first Blocks for simpler index --- src/oemof/solph/_models.py | 14 +++++----- src/oemof/solph/buses/_bus.py | 28 +++++++++---------- src/oemof/solph/components/_converter.py | 18 ++++++------ .../components/_extraction_turbine_chp.py | 16 +++++------ .../solph/components/_generic_storage.py | 12 ++++---- 5 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/oemof/solph/_models.py b/src/oemof/solph/_models.py index eb0d88224..992c377df 100644 --- a/src/oemof/solph/_models.py +++ b/src/oemof/solph/_models.py @@ -440,8 +440,8 @@ def _add_parent_block_sets(self): # (Re-)Map timesteps to periods timesteps_in_period = {p: [] for p in self.PERIODS} - for p, t in self.TIMEINDEX: - timesteps_in_period[p].append(t) + for t in self.TIMEINDEX: + timesteps_in_period[0].append(t) self.TIMESTEPS_IN_PERIOD = timesteps_in_period # previous timesteps @@ -479,28 +479,28 @@ def _add_parent_block_variables(self): for o, i in self.FLOWS: if self.flows[o, i].nominal_value is not None: if self.flows[o, i].fix[self.TIMESTEPS.at(1)] is not None: - for p, t in self.TIMEINDEX: + for t in self.TIMEINDEX: self.flow[o, i, t].value = ( self.flows[o, i].fix[t] * self.flows[o, i].nominal_value ) self.flow[o, i, t].fix() else: - for p, t in self.TIMEINDEX: + for t in self.TIMEINDEX: self.flow[o, i, t].setub( self.flows[o, i].max[t] * self.flows[o, i].nominal_value ) if not self.flows[o, i].nonconvex: - for p, t in self.TIMEINDEX: + for t in self.TIMEINDEX: self.flow[o, i, t].setlb( self.flows[o, i].min[t] * self.flows[o, i].nominal_value ) elif (o, i) in self.UNIDIRECTIONAL_FLOWS: - for p, t in self.TIMEINDEX: + for t in self.TIMEINDEX: self.flow[o, i, t].setlb(0) else: if (o, i) in self.UNIDIRECTIONAL_FLOWS: - for p, t in self.TIMEINDEX: + for t in self.TIMEINDEX: self.flow[o, i, t].setlb(0) diff --git a/src/oemof/solph/buses/_bus.py b/src/oemof/solph/buses/_bus.py index 98cf88787..f6004b9e6 100644 --- a/src/oemof/solph/buses/_bus.py +++ b/src/oemof/solph/buses/_bus.py @@ -78,9 +78,9 @@ class BusBlock(ScalarBlock): Bus balance: `om.Bus.balance[i, o, t]` .. math:: - \sum_{i \in INPUTS(n)} P_{i}(p, t) = - \sum_{o \in OUTPUTS(n)} P_{o}(p, t), \\ - \forall p, t \in \textrm{TIMEINDEX}, \\ + \sum_{i \in INPUTS(n)} P_{i}(t) = + \sum_{o \in OUTPUTS(n)} P_{o}(t), \\ + \forall t \in \textrm{TIMEINDEX}, \\ \forall i \in \textrm{INPUTS}, \\ \forall o \in \textrm{OUTPUTS} @@ -89,17 +89,17 @@ class BusBlock(ScalarBlock): output of the Bus object. The index :math:`n` is the index for the Bus node itself. Therefore, - a :math:`flow[i, n, p, t]` is a flow from the Component i to the Bus n at + a :math:`flow[i, n, t]` is a flow from the Component i to the Bus n at time index p, t. - ====================== ============================ ==================== - symbol attribute explanation - ====================== ============================ ==================== - :math:`P_{i}(p, t)` `flow[i, n, p, t]` Bus, inflow + ====================== ========================= ==================== + symbol attribute explanation + ====================== ========================= ==================== + :math:`P_{i}(p, t)` `flow[i, n, t]` Bus, inflow - :math:`P_{o}(p, t)` `flow[n, o, p, t]` Bus, outflow + :math:`P_{o}(p, t)` `flow[n, o, t]` Bus, outflow - ====================== ============================ ==================== + ====================== ========================= ==================== """ def __init__(self, *args, **kwargs): @@ -126,14 +126,14 @@ def _create(self, group=None): outs[n] = [o for o in n.outputs] def _busbalance_rule(block): - for p, t in m.TIMEINDEX: + for t in m.TIMEINDEX: for g in group: - lhs = sum(m.flow[i, g, p, t] for i in ins[g]) - rhs = sum(m.flow[g, o, p, t] for o in outs[g]) + lhs = sum(m.flow[i, g, t] for i in ins[g]) + rhs = sum(m.flow[g, o, t] for o in outs[g]) expr = lhs == rhs # no inflows no outflows yield: 0 == 0 which is True if expr is not True: - block.balance.add((g, p, t), expr) + block.balance.add((g, t), expr) self.balance = Constraint(group, m.TIMEINDEX, noruleinit=True) self.balance_build = BuildAction(rule=_busbalance_rule) diff --git a/src/oemof/solph/components/_converter.py b/src/oemof/solph/components/_converter.py index 04044836f..256ebb41f 100644 --- a/src/oemof/solph/components/_converter.py +++ b/src/oemof/solph/components/_converter.py @@ -196,15 +196,15 @@ class ConverterBlock(ScalarBlock): constraints. The index :math: n is the index for the Transformer node itself. Therefore, - a `flow[i, n, p, t]` is a flow from the Bus i to the Transformer n at + a `flow[i, n, t]` is a flow from the Bus i to the Transformer n at time index p, t. ====================== ============================ ==================== symbol attribute explanation ====================== ============================ ==================== - :math:`P_{i,n}(p, t)` `flow[i, n, p, t]` Converter, inflow + :math:`P_{i,n}(p, t)` `flow[i, n, t]` Converter, inflow - :math:`P_{n,o}(p, t)` `flow[n, o, p, t]` Converter, outflow + :math:`P_{n,o}(p, t)` `flow[n, o, t]` Converter, outflow :math:`\eta_{i}(t)` `conversion_factor[i, n, t]` Inflow, efficiency @@ -243,8 +243,8 @@ def _create(self, group=None): self.relation = Constraint( [ - (n, i, o, p, t) - for p, t in m.TIMEINDEX + (n, i, o, t) + for t in m.TIMEINDEX for n in group for o in out_flows[n] for i in in_flows[n] @@ -253,17 +253,17 @@ def _create(self, group=None): ) def _input_output_relation(block): - for p, t in m.TIMEINDEX: + for t in m.TIMEINDEX: for n in group: for o in out_flows[n]: for i in in_flows[n]: try: lhs = ( - m.flow[i, n, p, t] + m.flow[i, n, t] * n.conversion_factors[o][t] ) rhs = ( - m.flow[n, o, p, t] + m.flow[n, o, t] * n.conversion_factors[i][t] ) except ValueError: @@ -273,6 +273,6 @@ def _input_output_relation(block): n.label, o.label ), ) - block.relation.add((n, i, o, p, t), (lhs == rhs)) + block.relation.add((n, i, o, t), (lhs == rhs)) self.relation_build = BuildAction(rule=_input_output_relation) diff --git a/src/oemof/solph/components/_extraction_turbine_chp.py b/src/oemof/solph/components/_extraction_turbine_chp.py index 0a2ef8f1e..a14d89cbc 100644 --- a/src/oemof/solph/components/_extraction_turbine_chp.py +++ b/src/oemof/solph/components/_extraction_turbine_chp.py @@ -105,17 +105,17 @@ class ExtractionTurbineCHPBlock(ScalarBlock): * :math:`\dot H_{Fuel}` - Fuel input flow, represented in code as `flow[i, n, p, t]` + Fuel input flow, represented in code as `flow[i, n, t]` * :math:`P_{el}` Electric power outflow, represented in code as - `flow[n, main_output, p, t]` + `flow[n, main_output, t]` * :math:`\dot Q_{th}` Thermal output flow, represented in code as - `flow[n, tapped_output, p, t]` + `flow[n, tapped_output, t]` **Parameters** @@ -242,15 +242,15 @@ def _create(self, group=None): def _input_output_relation_rule(block): """Connection between input, main output and tapped output.""" - for p, t in m.TIMEINDEX: + for t in m.TIMEINDEX: for g in group: - lhs = m.flow[g.inflow, g, p, t] + lhs = m.flow[g.inflow, g, t] rhs = ( - m.flow[g, g.main_output, p, t] - + m.flow[g, g.tapped_output, p, t] + m.flow[g, g.main_output, t] + + m.flow[g, g.tapped_output, t] * g.main_flow_loss_index[t] ) / g.conversion_factor_full_condensation_sq[t] - block.input_output_relation.add((g, p, t), (lhs == rhs)) + block.input_output_relation.add((g, t), (lhs == rhs)) self.input_output_relation = Constraint( group, m.TIMEINDEX, noruleinit=True diff --git a/src/oemof/solph/components/_generic_storage.py b/src/oemof/solph/components/_generic_storage.py index f6dbcd95e..abdba8228 100644 --- a/src/oemof/solph/components/_generic_storage.py +++ b/src/oemof/solph/components/_generic_storage.py @@ -508,7 +508,7 @@ def _storage_content_bound_rule(block, n, t): # ************* Constraints *************************** - def _storage_balance_rule(block, n, p, t): + def _storage_balance_rule(block, n, t): """ Rule definition for the storage balance of every storage n and every timestep. @@ -526,10 +526,10 @@ def _storage_balance_rule(block, n, p, t): ) expr += n.fixed_losses_absolute[t] * m.timeincrement[t] expr += ( - -m.flow[i[n], n, p, t] * n.inflow_conversion_factor[t] + -m.flow[i[n], n, t] * n.inflow_conversion_factor[t] ) * m.timeincrement[t] expr += ( - m.flow[n, o[n], p, t] / n.outflow_conversion_factor[t] + m.flow[n, o[n], t] / n.outflow_conversion_factor[t] ) * m.timeincrement[t] return expr == 0 @@ -1258,7 +1258,7 @@ def _storage_investvar_bound_rule(block, n, p): i = {n: [i for i in n.inputs][0] for n in group} o = {n: [o for o in n.outputs][0] for n in group} - reduced_periods_timesteps = [(p, t) for (p, t) in m.TIMEINDEX if t > 0] + reduced_periods_timesteps = [t for t in m.TIMEINDEX if t > 0] # Handle unit lifetimes def _total_storage_capacity_rule(block): @@ -1625,14 +1625,14 @@ def _storage_capacity_outflow_invest_rule(block): rule=_storage_capacity_outflow_invest_rule ) - def _max_storage_content_invest_rule(block, n, p, t): + def _max_storage_content_invest_rule(block, n, t): """ Rule definition for upper bound constraint for the storage content. """ expr = ( self.storage_content[n, t] - <= self.total[n, p] * n.max_storage_level[t] + <= self.total[n] * n.max_storage_level[t] ) return expr From f19d65e51475dd1beb342ac5cc0f92c64eb85eb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 5 Jun 2024 12:22:49 +0200 Subject: [PATCH 04/17] Adhere to Black --- src/oemof/solph/flows/_simple_flow_block.py | 36 ++++----------------- 1 file changed, 6 insertions(+), 30 deletions(-) diff --git a/src/oemof/solph/flows/_simple_flow_block.py b/src/oemof/solph/flows/_simple_flow_block.py index 14fbe6136..43310cbe3 100644 --- a/src/oemof/solph/flows/_simple_flow_block.py +++ b/src/oemof/solph/flows/_simple_flow_block.py @@ -272,22 +272,14 @@ def _positive_gradient_flow_rule(model): inp, out, m.TIMEINDEX.at(index)[1] ] self.positive_gradient_constr.add( - ( - inp, - out, - m.TIMEINDEX.at(index) - ), + (inp, out, m.TIMEINDEX.at(index)), lhs <= rhs, ) else: lhs = self.positive_gradient[inp, out, 0] rhs = 0 self.positive_gradient_constr.add( - ( - inp, - out, - m.TIMEINDEX.at(index) - ), + (inp, out, m.TIMEINDEX.at(index)), lhs == rhs, ) @@ -304,37 +296,21 @@ def _negative_gradient_flow_rule(model): for index in range(1, len(m.TIMEINDEX) + 1): if m.TIMEINDEX.at(index)[1] > 0: lhs = ( - m.flow[ - inp, - out, - m.TIMEINDEX.at(index - 1) - ] - - m.flow[ - inp, - out, - m.TIMEINDEX.at(index) - ] + m.flow[inp, out, m.TIMEINDEX.at(index - 1)] + - m.flow[inp, out, m.TIMEINDEX.at(index)] ) rhs = self.negative_gradient[ inp, out, m.TIMEINDEX.at(index)[1] ] self.negative_gradient_constr.add( - ( - inp, - out, - m.TIMEINDEX.at(index) - ), + (inp, out, m.TIMEINDEX.at(index)), lhs <= rhs, ) else: lhs = self.negative_gradient[inp, out, 0] rhs = 0 self.negative_gradient_constr.add( - ( - inp, - out, - m.TIMEINDEX.at(index) - ), + (inp, out, m.TIMEINDEX.at(index)), lhs == rhs, ) From fdadeced951dfad1930c20242ab9e0eed2224695 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 5 Jun 2024 14:55:42 +0200 Subject: [PATCH 05/17] Allow TIMEINDEX and TIMESTEPS as indexes For the refactoring, it should be convenient to allow both. TIMEINDEX can be disused later. --- src/oemof/solph/_models.py | 44 ++++++++++++------ src/oemof/solph/buses/_bus.py | 6 +-- src/oemof/solph/components/_converter.py | 10 ++-- .../components/_extraction_turbine_chp.py | 6 +-- .../solph/components/_generic_storage.py | 6 +-- src/oemof/solph/flows/_simple_flow_block.py | 46 +++++++++---------- 6 files changed, 67 insertions(+), 51 deletions(-) diff --git a/src/oemof/solph/_models.py b/src/oemof/solph/_models.py index 992c377df..068fe4ad9 100644 --- a/src/oemof/solph/_models.py +++ b/src/oemof/solph/_models.py @@ -425,23 +425,39 @@ def _add_parent_block_sets(self): initialize=range(len(self.es.timeincrement) + 1), ordered=True ) - self.TIMEINDEX = po.Set( - initialize=list( - range(len(self.es.timeincrement)), - ), - ordered=True, - ) if self.es.periods is None: + self.TIMEINDEX = po.Set( + initialize=list( + zip( + [0] * len(self.es.timeincrement), + range(len(self.es.timeincrement)), + ) + ), + ordered=True, + ) self.PERIODS = po.Set(initialize=[0]) else: + nested_list = [ + [k] * len(self.es.periods[k]) + for k in range(len(self.es.periods)) + ] + flattened_list = [ + item for sublist in nested_list for item in sublist + ] + self.TIMEINDEX = po.Set( + initialize=list( + zip(flattened_list, range(len(self.es.timeincrement))) + ), + ordered=True, + ) self.PERIODS = po.Set( initialize=sorted(list(set(range(len(self.es.periods))))) ) # (Re-)Map timesteps to periods timesteps_in_period = {p: [] for p in self.PERIODS} - for t in self.TIMEINDEX: - timesteps_in_period[0].append(t) + for p, t in self.TIMEINDEX: + timesteps_in_period[p].append(t) self.TIMESTEPS_IN_PERIOD = timesteps_in_period # previous timesteps @@ -474,33 +490,33 @@ def _add_parent_block_sets(self): def _add_parent_block_variables(self): """Add the parent block variables, which is the `flow` variable, indexed by FLOWS and TIMEINDEX.""" - self.flow = po.Var(self.FLOWS, self.TIMEINDEX, within=po.Reals) + self.flow = po.Var(self.FLOWS, self.TIMESTEPS, within=po.Reals) for o, i in self.FLOWS: if self.flows[o, i].nominal_value is not None: if self.flows[o, i].fix[self.TIMESTEPS.at(1)] is not None: - for t in self.TIMEINDEX: + for t in self.TIMESTEPS: self.flow[o, i, t].value = ( self.flows[o, i].fix[t] * self.flows[o, i].nominal_value ) self.flow[o, i, t].fix() else: - for t in self.TIMEINDEX: + for t in self.TIMESTEPS: self.flow[o, i, t].setub( self.flows[o, i].max[t] * self.flows[o, i].nominal_value ) if not self.flows[o, i].nonconvex: - for t in self.TIMEINDEX: + for t in self.TIMESTEPS: self.flow[o, i, t].setlb( self.flows[o, i].min[t] * self.flows[o, i].nominal_value ) elif (o, i) in self.UNIDIRECTIONAL_FLOWS: - for t in self.TIMEINDEX: + for t in self.TIMESTEPS: self.flow[o, i, t].setlb(0) else: if (o, i) in self.UNIDIRECTIONAL_FLOWS: - for t in self.TIMEINDEX: + for t in self.TIMESTEPS: self.flow[o, i, t].setlb(0) diff --git a/src/oemof/solph/buses/_bus.py b/src/oemof/solph/buses/_bus.py index f6004b9e6..7b2f83e28 100644 --- a/src/oemof/solph/buses/_bus.py +++ b/src/oemof/solph/buses/_bus.py @@ -80,7 +80,7 @@ class BusBlock(ScalarBlock): .. math:: \sum_{i \in INPUTS(n)} P_{i}(t) = \sum_{o \in OUTPUTS(n)} P_{o}(t), \\ - \forall t \in \textrm{TIMEINDEX}, \\ + \forall t \in \textrm{TIMESTEPS}, \\ \forall i \in \textrm{INPUTS}, \\ \forall o \in \textrm{OUTPUTS} @@ -126,7 +126,7 @@ def _create(self, group=None): outs[n] = [o for o in n.outputs] def _busbalance_rule(block): - for t in m.TIMEINDEX: + for t in m.TIMESTEPS: for g in group: lhs = sum(m.flow[i, g, t] for i in ins[g]) rhs = sum(m.flow[g, o, t] for o in outs[g]) @@ -135,5 +135,5 @@ def _busbalance_rule(block): if expr is not True: block.balance.add((g, t), expr) - self.balance = Constraint(group, m.TIMEINDEX, noruleinit=True) + self.balance = Constraint(group, m.TIMESTEPS, noruleinit=True) self.balance_build = BuildAction(rule=_busbalance_rule) diff --git a/src/oemof/solph/components/_converter.py b/src/oemof/solph/components/_converter.py index 256ebb41f..ab660ea02 100644 --- a/src/oemof/solph/components/_converter.py +++ b/src/oemof/solph/components/_converter.py @@ -181,9 +181,9 @@ class ConverterBlock(ScalarBlock): Linear relation :attr:`om.ConverterBlock.relation[i,o,t]` .. math:: - P_{i}(p, t) \cdot \eta_{o}(t) = - P_{o}(p, t) \cdot \eta_{i}(t), \\ - \forall p, t \in \textrm{TIMEINDEX}, \\ + P_{i}(t) \cdot \eta_{o}(t) = + P_{o}(t) \cdot \eta_{i}(t), \\ + \forall t \in \textrm{TIMESTEPS}, \\ \forall n \in \textrm{CONVERTERS}, \\ \forall i \in \textrm{INPUTS}, \\ \forall o \in \textrm{OUTPUTS} @@ -244,7 +244,7 @@ def _create(self, group=None): self.relation = Constraint( [ (n, i, o, t) - for t in m.TIMEINDEX + for t in m.TIMESTEPS for n in group for o in out_flows[n] for i in in_flows[n] @@ -253,7 +253,7 @@ def _create(self, group=None): ) def _input_output_relation(block): - for t in m.TIMEINDEX: + for t in m.TIMESTEPS: for n in group: for o in out_flows[n]: for i in in_flows[n]: diff --git a/src/oemof/solph/components/_extraction_turbine_chp.py b/src/oemof/solph/components/_extraction_turbine_chp.py index a14d89cbc..ecb08b0e2 100644 --- a/src/oemof/solph/components/_extraction_turbine_chp.py +++ b/src/oemof/solph/components/_extraction_turbine_chp.py @@ -242,7 +242,7 @@ def _create(self, group=None): def _input_output_relation_rule(block): """Connection between input, main output and tapped output.""" - for t in m.TIMEINDEX: + for t in m.TIMESTEPS: for g in group: lhs = m.flow[g.inflow, g, t] rhs = ( @@ -263,9 +263,9 @@ def _out_flow_relation_rule(block): """Relation between main and tapped output in full chp mode.""" for p, t in m.TIMEINDEX: for g in group: - lhs = m.flow[g, g.main_output, p, t] + lhs = m.flow[g, g.main_output, t] rhs = ( - m.flow[g, g.tapped_output, p, t] + m.flow[g, g.tapped_output, t] * g.flow_relation_index[t] ) block.out_flow_relation.add((g, p, t), (lhs >= rhs)) diff --git a/src/oemof/solph/components/_generic_storage.py b/src/oemof/solph/components/_generic_storage.py index abdba8228..0cfef23b9 100644 --- a/src/oemof/solph/components/_generic_storage.py +++ b/src/oemof/solph/components/_generic_storage.py @@ -534,7 +534,7 @@ def _storage_balance_rule(block, n, t): return expr == 0 self.balance = Constraint( - self.STORAGES, m.TIMEINDEX, rule=_storage_balance_rule + self.STORAGES, m.TIMESTEPS, rule=_storage_balance_rule ) def _balanced_storage_rule(block, n): @@ -1258,7 +1258,7 @@ def _storage_investvar_bound_rule(block, n, p): i = {n: [i for i in n.inputs][0] for n in group} o = {n: [o for o in n.outputs][0] for n in group} - reduced_periods_timesteps = [t for t in m.TIMEINDEX if t > 0] + reduced_periods_timesteps = [t for t in m.TIMESTEPS if t > 0] # Handle unit lifetimes def _total_storage_capacity_rule(block): @@ -1638,7 +1638,7 @@ def _max_storage_content_invest_rule(block, n, t): self.max_storage_content = Constraint( self.INVESTSTORAGES, - m.TIMEINDEX, + m.TIMESTEPS, rule=_max_storage_content_invest_rule, ) diff --git a/src/oemof/solph/flows/_simple_flow_block.py b/src/oemof/solph/flows/_simple_flow_block.py index 43310cbe3..7b0e0a148 100644 --- a/src/oemof/solph/flows/_simple_flow_block.py +++ b/src/oemof/solph/flows/_simple_flow_block.py @@ -216,7 +216,7 @@ def _flow_full_load_time_max_rule(model): for inp, out in self.FULL_LOAD_TIME_MAX_FLOWS: lhs = sum( m.flow[inp, out, ts] * m.timeincrement[ts] - for p, ts in m.TIMEINDEX + for ts in m.TIMESTEPS ) rhs = ( m.flows[inp, out].full_load_time_max @@ -236,7 +236,7 @@ def _flow_full_load_time_min_rule(model): for inp, out in self.FULL_LOAD_TIME_MIN_FLOWS: lhs = sum( m.flow[inp, out, ts] * m.timeincrement[ts] - for p, ts in m.TIMEINDEX + for ts in m.TIMESTEPS ) rhs = ( m.flows[inp, out].full_load_time_min @@ -254,37 +254,37 @@ def _flow_full_load_time_min_rule(model): def _positive_gradient_flow_rule(model): """Rule definition for positive gradient constraint.""" for inp, out in self.POSITIVE_GRADIENT_FLOWS: - for index in range(1, len(m.TIMEINDEX) + 1): - if m.TIMEINDEX.at(index)[1] > 0: + for index in range(1, len(m.TIMESTEPS) + 1): + if m.TIMESTEPS.at(index)[1] > 0: lhs = ( m.flow[ inp, out, - m.TIMEINDEX.at(index), + m.TIMESTEPS.at(index), ] - m.flow[ inp, out, - m.TIMEINDEX.at(index - 1), + m.TIMESTEPS.at(index - 1), ] ) rhs = self.positive_gradient[ - inp, out, m.TIMEINDEX.at(index)[1] + inp, out, m.TIMESTEPS.at(index)[1] ] self.positive_gradient_constr.add( - (inp, out, m.TIMEINDEX.at(index)), + (inp, out, m.TIMESTEPS.at(index)), lhs <= rhs, ) else: lhs = self.positive_gradient[inp, out, 0] rhs = 0 self.positive_gradient_constr.add( - (inp, out, m.TIMEINDEX.at(index)), + (inp, out, m.TIMESTEPS.at(index)), lhs == rhs, ) self.positive_gradient_constr = Constraint( - self.POSITIVE_GRADIENT_FLOWS, m.TIMEINDEX, noruleinit=True + self.POSITIVE_GRADIENT_FLOWS, m.TIMESTEPS, noruleinit=True ) self.positive_gradient_build = BuildAction( rule=_positive_gradient_flow_rule @@ -293,45 +293,45 @@ def _positive_gradient_flow_rule(model): def _negative_gradient_flow_rule(model): """Rule definition for negative gradient constraint.""" for inp, out in self.NEGATIVE_GRADIENT_FLOWS: - for index in range(1, len(m.TIMEINDEX) + 1): - if m.TIMEINDEX.at(index)[1] > 0: + for index in range(1, len(m.TIMESTEPS) + 1): + if m.TIMESTEPS.at(index) > 0: lhs = ( - m.flow[inp, out, m.TIMEINDEX.at(index - 1)] - - m.flow[inp, out, m.TIMEINDEX.at(index)] + m.flow[inp, out, m.TIMESTEPS.at(index - 1)] + - m.flow[inp, out, m.TIMESTEPS.at(index)] ) rhs = self.negative_gradient[ - inp, out, m.TIMEINDEX.at(index)[1] + inp, out, m.TIMESTEPS.at(index) ] self.negative_gradient_constr.add( - (inp, out, m.TIMEINDEX.at(index)), + (inp, out, m.TIMESTEPS.at(index)), lhs <= rhs, ) else: lhs = self.negative_gradient[inp, out, 0] rhs = 0 self.negative_gradient_constr.add( - (inp, out, m.TIMEINDEX.at(index)), + (inp, out, m.TIMESTEPS.at(index)), lhs == rhs, ) self.negative_gradient_constr = Constraint( - self.NEGATIVE_GRADIENT_FLOWS, m.TIMEINDEX, noruleinit=True + self.NEGATIVE_GRADIENT_FLOWS, m.TIMESTEPS, noruleinit=True ) self.negative_gradient_build = BuildAction( rule=_negative_gradient_flow_rule ) - def _integer_flow_rule(block, ii, oi, ti): + def _integer_flow_rule(_, ii, oi, ti): """Force flow variable to NonNegativeInteger values.""" return self.integer_flow[ii, oi, ti] == m.flow[ii, oi, ti] self.integer_flow_constr = Constraint( - self.INTEGER_FLOWS, m.TIMEINDEX, rule=_integer_flow_rule + self.INTEGER_FLOWS, m.TIMESTEPS, rule=_integer_flow_rule ) if m.es.periods is not None: - def _lifetime_output_rule(block): + def _lifetime_output_rule(_): """Force flow value to zero when lifetime is reached""" for inp, out in self.LIFETIME_FLOWS: for p, ts in m.TIMEINDEX: @@ -430,7 +430,7 @@ def _objective_expression(self): if m.es.periods is None: for i, o in m.FLOWS: if m.flows[i, o].variable_costs[0] is not None: - for t in m.TIMEINDEX: + for t in m.TIMESTEPS: variable_costs += ( m.flow[i, o, t] * m.objective_weighting[t] @@ -442,7 +442,7 @@ def _objective_expression(self): if m.flows[i, o].variable_costs[0] is not None: for p, t in m.TIMEINDEX: variable_costs += ( - m.flow[i, o, p, t] + m.flow[i, o, t] * m.objective_weighting[t] * m.flows[i, o].variable_costs[t] * ((1 + m.discount_rate) ** -m.es.periods_years[p]) From 99446a88547935de4985d8fe59dd9a0893ba9267 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 5 Jun 2024 16:26:17 +0200 Subject: [PATCH 06/17] Use TIMESTEPS to index flows and storage content --- .../flexible_modelling/add_constraints.py | 12 ++--- .../components/_extraction_turbine_chp.py | 8 +-- src/oemof/solph/components/_generic_chp.py | 18 +++---- .../solph/components/_generic_storage.py | 18 +++---- src/oemof/solph/components/_link.py | 12 ++--- .../solph/components/_offset_converter.py | 8 +-- .../components/experimental/_generic_caes.py | 18 +++---- .../_piecewise_linear_converter.py | 12 ++--- .../components/experimental/_sink_dsm.py | 20 +++---- src/oemof/solph/constraints/equate_flows.py | 10 ++-- src/oemof/solph/constraints/integral_limit.py | 6 +-- src/oemof/solph/constraints/storage_level.py | 6 +-- .../solph/flows/_investment_flow_block.py | 10 ++-- .../solph/flows/_non_convex_flow_block.py | 54 ++++++++----------- .../flows/experimental/_electrical_line.py | 8 +-- src/oemof/solph/processing.py | 4 +- tests/test_processing.py | 2 +- .../test_add_constraints.py | 12 ++--- 18 files changed, 115 insertions(+), 123 deletions(-) diff --git a/examples/flexible_modelling/add_constraints.py b/examples/flexible_modelling/add_constraints.py index dda9e3639..1f1efceab 100644 --- a/examples/flexible_modelling/add_constraints.py +++ b/examples/flexible_modelling/add_constraints.py @@ -123,26 +123,26 @@ def run_add_constraints_example(solver="cbc", nologg=False): # add the sub-model to the oemof Model instance om.add_component("MyBlock", myblock) - def _inflow_share_rule(m, s, e, p, t): + def _inflow_share_rule(m, s, e, t): """pyomo rule definition: Here we can use all objects from the block or the om object, in this case we don't need anything from the block except the newly defined set MYFLOWS. """ - expr = om.flow[s, e, p, t] >= om.flows[s, e].outflow_share[t] * sum( - om.flow[i, o, p, t] for (i, o) in om.FLOWS if o == e + expr = om.flow[s, e, t] >= om.flows[s, e].outflow_share[t] * sum( + om.flow[i, o, t] for (i, o) in om.FLOWS if o == e ) return expr myblock.inflow_share = po.Constraint( - myblock.MYFLOWS, om.TIMEINDEX, rule=_inflow_share_rule + myblock.MYFLOWS, om.TIMESTEPS, rule=_inflow_share_rule ) # add emission constraint myblock.emission_constr = po.Constraint( expr=( sum( - om.flow[i, o, p, t] + om.flow[i, o, t] for (i, o) in myblock.COMMODITYFLOWS - for p, t in om.TIMEINDEX + for t in om.TIMESTEPS ) <= emission_limit ) diff --git a/src/oemof/solph/components/_extraction_turbine_chp.py b/src/oemof/solph/components/_extraction_turbine_chp.py index ecb08b0e2..cef1a6152 100644 --- a/src/oemof/solph/components/_extraction_turbine_chp.py +++ b/src/oemof/solph/components/_extraction_turbine_chp.py @@ -253,7 +253,7 @@ def _input_output_relation_rule(block): block.input_output_relation.add((g, t), (lhs == rhs)) self.input_output_relation = Constraint( - group, m.TIMEINDEX, noruleinit=True + group, m.TIMESTEPS, noruleinit=True ) self.input_output_relation_build = BuildAction( rule=_input_output_relation_rule @@ -261,17 +261,17 @@ def _input_output_relation_rule(block): def _out_flow_relation_rule(block): """Relation between main and tapped output in full chp mode.""" - for p, t in m.TIMEINDEX: + for t in m.TIMESTEPS: for g in group: lhs = m.flow[g, g.main_output, t] rhs = ( m.flow[g, g.tapped_output, t] * g.flow_relation_index[t] ) - block.out_flow_relation.add((g, p, t), (lhs >= rhs)) + block.out_flow_relation.add((g, t), (lhs >= rhs)) self.out_flow_relation = Constraint( - group, m.TIMEINDEX, noruleinit=True + group, m.TIMESTEPS, noruleinit=True ) self.out_flow_relation_build = BuildAction( rule=_out_flow_relation_rule diff --git a/src/oemof/solph/components/_generic_chp.py b/src/oemof/solph/components/_generic_chp.py index 047d69b44..83246bb6c 100644 --- a/src/oemof/solph/components/_generic_chp.py +++ b/src/oemof/solph/components/_generic_chp.py @@ -338,37 +338,37 @@ def _create(self, group=None): self.Y = Var(self.GENERICCHPS, m.TIMESTEPS, within=Binary) # constraint rules - def _H_flow_rule(block, n, p, t): + def _H_flow_rule(block, n, t): """Link fuel consumption to component inflow.""" expr = 0 expr += self.H_F[n, t] - expr += -m.flow[list(n.fuel_input.keys())[0], n, p, t] + expr += -m.flow[list(n.fuel_input.keys())[0], n, t] return expr == 0 self.H_flow = Constraint( - self.GENERICCHPS, m.TIMEINDEX, rule=_H_flow_rule + self.GENERICCHPS, m.TIMESTEPS, rule=_H_flow_rule ) - def _Q_flow_rule(block, n, p, t): + def _Q_flow_rule(block, n, t): """Link heat flow to component outflow.""" expr = 0 expr += self.Q[n, t] - expr += -m.flow[n, list(n.heat_output.keys())[0], p, t] + expr += -m.flow[n, list(n.heat_output.keys())[0], t] return expr == 0 self.Q_flow = Constraint( - self.GENERICCHPS, m.TIMEINDEX, rule=_Q_flow_rule + self.GENERICCHPS, m.TIMESTEPS, rule=_Q_flow_rule ) - def _P_flow_rule(block, n, p, t): + def _P_flow_rule(block, n, t): """Link power flow to component outflow.""" expr = 0 expr += self.P[n, t] - expr += -m.flow[n, list(n.electrical_output.keys())[0], p, t] + expr += -m.flow[n, list(n.electrical_output.keys())[0], t] return expr == 0 self.P_flow = Constraint( - self.GENERICCHPS, m.TIMEINDEX, rule=_P_flow_rule + self.GENERICCHPS, m.TIMESTEPS, rule=_P_flow_rule ) def _H_F_1_rule(block, n, t): diff --git a/src/oemof/solph/components/_generic_storage.py b/src/oemof/solph/components/_generic_storage.py index 0cfef23b9..7e287fc09 100644 --- a/src/oemof/solph/components/_generic_storage.py +++ b/src/oemof/solph/components/_generic_storage.py @@ -1258,7 +1258,7 @@ def _storage_investvar_bound_rule(block, n, p): i = {n: [i for i in n.inputs][0] for n in group} o = {n: [o for o in n.outputs][0] for n in group} - reduced_periods_timesteps = [t for t in m.TIMESTEPS if t > 0] + reduced_periods_timeindex = [(p, t) for (p, t) in m.TIMEINDEX if t > 0] # Handle unit lifetimes def _total_storage_capacity_rule(block): @@ -1507,10 +1507,10 @@ def _storage_balance_first_rule(block, n): ) expr += n.fixed_losses_absolute[0] * m.timeincrement[0] expr += ( - -m.flow[i[n], n, 0, 0] * n.inflow_conversion_factor[0] + -m.flow[i[n], n, 0] * n.inflow_conversion_factor[0] ) * m.timeincrement[0] expr += ( - m.flow[n, o[n], 0, 0] / n.outflow_conversion_factor[0] + m.flow[n, o[n], 0] / n.outflow_conversion_factor[0] ) * m.timeincrement[0] return expr == 0 @@ -1536,16 +1536,16 @@ def _storage_balance_rule(block, n, p, t): ) expr += n.fixed_losses_absolute[t] * m.timeincrement[t] expr += ( - -m.flow[i[n], n, p, t] * n.inflow_conversion_factor[t] + -m.flow[i[n], n, t] * n.inflow_conversion_factor[t] ) * m.timeincrement[t] expr += ( - m.flow[n, o[n], p, t] / n.outflow_conversion_factor[t] + m.flow[n, o[n], t] / n.outflow_conversion_factor[t] ) * m.timeincrement[t] return expr == 0 self.balance = Constraint( self.INVESTSTORAGES, - reduced_periods_timesteps, + reduced_periods_timeindex, rule=_storage_balance_rule, ) @@ -1625,20 +1625,20 @@ def _storage_capacity_outflow_invest_rule(block): rule=_storage_capacity_outflow_invest_rule ) - def _max_storage_content_invest_rule(block, n, t): + def _max_storage_content_invest_rule(block, n, p, t): """ Rule definition for upper bound constraint for the storage content. """ expr = ( self.storage_content[n, t] - <= self.total[n] * n.max_storage_level[t] + <= self.total[n, p] * n.max_storage_level[t] ) return expr self.max_storage_content = Constraint( self.INVESTSTORAGES, - m.TIMESTEPS, + m.TIMEINDEX, rule=_max_storage_content_invest_rule, ) diff --git a/src/oemof/solph/components/_link.py b/src/oemof/solph/components/_link.py index 38604bf72..d5ca435c4 100644 --- a/src/oemof/solph/components/_link.py +++ b/src/oemof/solph/components/_link.py @@ -177,13 +177,13 @@ def _create(self, group=None): self.LINKS = Set(initialize=[g for g in group]) def _input_output_relation(block): - for p, t in m.TIMEINDEX: + for t in m.TIMESTEPS: for n, conversion in all_conversions.items(): for cidx, c in conversion.items(): try: expr = ( - m.flow[n, cidx[1], p, t] - == c[t] * m.flow[cidx[0], n, p, t] + m.flow[n, cidx[1], t] + == c[t] * m.flow[cidx[0], n, t] ) except KeyError: raise KeyError( @@ -192,12 +192,12 @@ def _input_output_relation(block): "Check if all connected buses match " "the conversion factors.", ) - block.relation.add((n, cidx[0], cidx[1], p, t), expr) + block.relation.add((n, cidx[0], cidx[1], t), expr) self.relation = Constraint( [ - (n, cidx[0], cidx[1], p, t) - for p, t in m.TIMEINDEX + (n, cidx[0], cidx[1], t) + for t in m.TIMESTEPS for n, conversion in all_conversions.items() for cidx, c in conversion.items() ], diff --git a/src/oemof/solph/components/_offset_converter.py b/src/oemof/solph/components/_offset_converter.py index d97a47f97..f56707e20 100644 --- a/src/oemof/solph/components/_offset_converter.py +++ b/src/oemof/solph/components/_offset_converter.py @@ -284,14 +284,14 @@ def _create(self, group=None): def _relation_rule(block): """Link binary input and output flow to component outflow.""" - for p, t in m.TIMEINDEX: + for t in m.TIMESTEPS: for n in group: for o in out_flows[n]: for i in in_flows[n]: expr = 0 - expr += -m.flow[n, o, p, t] + expr += -m.flow[n, o, t] expr += ( - m.flow[i, n, p, t] * n.coefficients[o][1][t] + m.flow[i, n, t] * n.coefficients[o][1][t] ) # `Y(t)` in the last term of the constraint # (":math:`C_0(t) \cdot Y(t)`") is different for @@ -328,6 +328,6 @@ def _relation_rule(block): ] * n.coefficients[o][0][t] ) - block.relation.add((n, i, o, p, t), (expr == 0)) + block.relation.add((n, i, o, t), (expr == 0)) self.relation_build = BuildAction(rule=_relation_rule) diff --git a/src/oemof/solph/components/experimental/_generic_caes.py b/src/oemof/solph/components/experimental/_generic_caes.py index 53f667edc..ac1b075b4 100644 --- a/src/oemof/solph/components/experimental/_generic_caes.py +++ b/src/oemof/solph/components/experimental/_generic_caes.py @@ -444,14 +444,14 @@ def _create(self, group=None): ) # Compression: Capacity on markets - def cmp_p_constr_rule(block, n, p, t): + def cmp_p_constr_rule(block, n, t): expr = 0 expr += -self.cmp_p[n, t] - expr += m.flow[list(n.electrical_input.keys())[0], n, p, t] + expr += m.flow[list(n.electrical_input.keys())[0], n, t] return expr == 0 self.cmp_p_constr = Constraint( - self.GENERICCAES, m.TIMEINDEX, rule=cmp_p_constr_rule + self.GENERICCAES, m.TIMESTEPS, rule=cmp_p_constr_rule ) # Compression: Max. capacity depending on cavern filling level @@ -534,14 +534,14 @@ def cmp_q_out_shr_constr_rule(block, n, t): ) # (10) Expansion: Capacity on markets - def exp_p_constr_rule(block, n, p, t): + def exp_p_constr_rule(block, n, t): expr = 0 expr += -self.exp_p[n, t] - expr += m.flow[n, list(n.electrical_output.keys())[0], p, t] + expr += m.flow[n, list(n.electrical_output.keys())[0], t] return expr == 0 self.exp_p_constr = Constraint( - self.GENERICCAES, m.TIMEINDEX, rule=exp_p_constr_rule + self.GENERICCAES, m.TIMESTEPS, rule=exp_p_constr_rule ) # (11-12) Expansion: Max. capacity depending on cavern filling level @@ -605,14 +605,14 @@ def exp_q_in_constr_rule(block, n, t): ) # (17) Expansion: Fuel allocation - def exp_q_fuel_constr_rule(block, n, p, t): + def exp_q_fuel_constr_rule(block, n, t): expr = 0 expr += -self.exp_q_fuel_in[n, t] - expr += m.flow[list(n.fuel_input.keys())[0], n, p, t] + expr += m.flow[list(n.fuel_input.keys())[0], n, t] return expr == 0 self.exp_q_fuel_constr = Constraint( - self.GENERICCAES, m.TIMEINDEX, rule=exp_q_fuel_constr_rule + self.GENERICCAES, m.TIMESTEPS, rule=exp_q_fuel_constr_rule ) # (18) Expansion: Definition of single heat flows diff --git a/src/oemof/solph/components/experimental/_piecewise_linear_converter.py b/src/oemof/solph/components/experimental/_piecewise_linear_converter.py index c8da7cd99..666dfd701 100644 --- a/src/oemof/solph/components/experimental/_piecewise_linear_converter.py +++ b/src/oemof/solph/components/experimental/_piecewise_linear_converter.py @@ -185,26 +185,26 @@ def get_outflow_bounds(model, n, t): self.PWLINEARCONVERTERS, m.TIMESTEPS, bounds=get_outflow_bounds ) - def _in_equation(block, n, p, t): + def _in_equation(block, n, t): """Link binary input and output flow to component outflow.""" expr = 0 - expr += -m.flow[list(n.inputs.keys())[0], n, p, t] + expr += -m.flow[list(n.inputs.keys())[0], n, t] expr += self.inflow[n, t] return expr == 0 self.equate_in = Constraint( - self.PWLINEARCONVERTERS, m.TIMEINDEX, rule=_in_equation + self.PWLINEARCONVERTERS, m.TIMESTEPS, rule=_in_equation ) - def _out_equation(block, n, p, t): + def _out_equation(block, n, t): """Link binary input and output flow to component outflow.""" expr = 0 - expr += -m.flow[n, list(n.outputs.keys())[0], p, t] + expr += -m.flow[n, list(n.outputs.keys())[0], t] expr += self.outflow[n, t] return expr == 0 self.equate_out = Constraint( - self.PWLINEARCONVERTERS, m.TIMEINDEX, rule=_out_equation + self.PWLINEARCONVERTERS, m.TIMESTEPS, rule=_out_equation ) self.piecewise = Piecewise( diff --git a/src/oemof/solph/components/experimental/_sink_dsm.py b/src/oemof/solph/components/experimental/_sink_dsm.py index 61c9498cd..1d910f54e 100644 --- a/src/oemof/solph/components/experimental/_sink_dsm.py +++ b/src/oemof/solph/components/experimental/_sink_dsm.py @@ -565,7 +565,7 @@ def _input_output_relation_rule(block): for p, t in m.TIMEINDEX: for g in group: # Inflow from bus - lhs = m.flow[g.inflow, g, p, t] + lhs = m.flow[g.inflow, g, t] # Demand + DSM_up - DSM_down rhs = ( @@ -1193,7 +1193,7 @@ def _input_output_relation_rule(block): for p, t in m.TIMEINDEX: for g in group: # Inflow from bus - lhs = m.flow[g.inflow, g, p, t] + lhs = m.flow[g.inflow, g, t] # Demand + DSM_up - DSM_down rhs = ( @@ -1745,7 +1745,7 @@ def _input_output_relation_rule(block): # first time steps: 0 + delay time if t <= g.delay_time: # Inflow from bus - lhs = m.flow[g.inflow, g, p, t] + lhs = m.flow[g.inflow, g, t] # Demand +- DSM rhs = ( g.demand[t] * g.max_demand[p] @@ -1765,7 +1765,7 @@ def _input_output_relation_rule(block): # main use case elif g.delay_time < t <= m.TIMESTEPS.at(-1) - g.delay_time: # Inflow from bus - lhs = m.flow[g.inflow, g, p, t] + lhs = m.flow[g.inflow, g, t] # Demand +- DSM rhs = ( g.demand[t] * g.max_demand[p] @@ -1787,7 +1787,7 @@ def _input_output_relation_rule(block): # last time steps: end - delay time else: # Inflow from bus - lhs = m.flow[g.inflow, g, p, t] + lhs = m.flow[g.inflow, g, t] # Demand +- DSM rhs = ( g.demand[t] * g.max_demand[p] @@ -2721,7 +2721,7 @@ def _input_output_relation_rule(block): # first time steps: 0 + delay time if t <= g.delay_time: # Inflow from bus - lhs = m.flow[g.inflow, g, p, t] + lhs = m.flow[g.inflow, g, t] # Demand +- DSM rhs = ( g.demand[t] * g.max_demand[p] @@ -2741,7 +2741,7 @@ def _input_output_relation_rule(block): # main use case elif g.delay_time < t <= m.TIMESTEPS.at(-1) - g.delay_time: # Inflow from bus - lhs = m.flow[g.inflow, g, p, t] + lhs = m.flow[g.inflow, g, t] # Demand +- DSM rhs = ( g.demand[t] * g.max_demand[p] @@ -2763,7 +2763,7 @@ def _input_output_relation_rule(block): # last time steps: end - delay time else: # Inflow from bus - lhs = m.flow[g.inflow, g, p, t] + lhs = m.flow[g.inflow, g, t] # Demand +- DSM rhs = ( g.demand[t] * g.max_demand[p] @@ -3722,7 +3722,7 @@ def _input_output_relation_rule(block): for p, t in m.TIMEINDEX: for g in group: # outflow from bus - lhs = m.flow[g.inflow, g, p, t] + lhs = m.flow[g.inflow, g, t] # Demand +- DR rhs = ( @@ -5024,7 +5024,7 @@ def _input_output_relation_rule(block): for p, t in m.TIMEINDEX: for g in group: # outflow from bus - lhs = m.flow[g.inflow, g, p, t] + lhs = m.flow[g.inflow, g, t] # Demand +- DR rhs = ( diff --git a/src/oemof/solph/constraints/equate_flows.py b/src/oemof/solph/constraints/equate_flows.py index bd9f3e725..286209cc3 100644 --- a/src/oemof/solph/constraints/equate_flows.py +++ b/src/oemof/solph/constraints/equate_flows.py @@ -43,17 +43,17 @@ def equate_flows(model, flows1, flows2, factor1=1, name="equate_flows"): """ def _equate_flow_groups_rule(m): - for p, ts in m.TIMEINDEX: - sum1_t = sum(m.flow[fi, fo, p, ts] for fi, fo in flows1) - sum2_t = sum(m.flow[fi, fo, p, ts] for fi, fo in flows2) + for ts in m.TIMESTEPS: + sum1_t = sum(m.flow[fi, fo, ts] for fi, fo in flows1) + sum2_t = sum(m.flow[fi, fo, ts] for fi, fo in flows2) expr = sum1_t * factor1 == sum2_t if expr is not True: - getattr(m, name).add((p, ts), expr) + getattr(m, name).add(ts, expr) setattr( model, name, - po.Constraint(model.TIMEINDEX, noruleinit=True), + po.Constraint(model.TIMESTEPS, noruleinit=True), ) setattr( model, diff --git a/src/oemof/solph/constraints/integral_limit.py b/src/oemof/solph/constraints/integral_limit.py index 282e9ebcc..3d2bc3ffa 100644 --- a/src/oemof/solph/constraints/integral_limit.py +++ b/src/oemof/solph/constraints/integral_limit.py @@ -129,11 +129,11 @@ def generic_integral_limit(om, keyword, flows=None, limit=None): limit_name, po.Expression( expr=sum( - om.flow[inflow, outflow, p, t] + om.flow[inflow, outflow, t] * om.timeincrement[t] * sequence(getattr(flows[inflow, outflow], keyword))[t] for (inflow, outflow) in flows - for p, t in om.TIMEINDEX + for t in om.TIMESTEPS ) ), ) @@ -208,7 +208,7 @@ def generic_periodical_integral_limit(om, keyword, flows=None, limit=None): def _periodical_integral_limit_rule(m, p): expr = sum( - om.flow[inflow, outflow, p, t] + om.flow[inflow, outflow, t] * om.timeincrement[t] * sequence(getattr(flows[inflow, outflow], keyword))[t] for (inflow, outflow) in flows diff --git a/src/oemof/solph/constraints/storage_level.py b/src/oemof/solph/constraints/storage_level.py index 15b13b017..ca22d1a78 100644 --- a/src/oemof/solph/constraints/storage_level.py +++ b/src/oemof/solph/constraints/storage_level.py @@ -88,9 +88,9 @@ def _output_active_rule(m): ) # Define constraints on the output flows - def _constraint_output_rule(m, o, p, t): + def _constraint_output_rule(m, o, t): return ( - m.flow[multiplexer_bus, o, p, t] + m.flow[multiplexer_bus, o, t] / m.flows[multiplexer_bus, o].nominal_value <= active_output[o, t] ) @@ -100,7 +100,7 @@ def _constraint_output_rule(m, o, p, t): f"{name}_output_constraint", po.Constraint( OUTPUTS, - model.TIMEINDEX, + model.TIMESTEPS, rule=_constraint_output_rule, ), ) diff --git a/src/oemof/solph/flows/_investment_flow_block.py b/src/oemof/solph/flows/_investment_flow_block.py index 760c58354..02f3c8f37 100644 --- a/src/oemof/solph/flows/_investment_flow_block.py +++ b/src/oemof/solph/flows/_investment_flow_block.py @@ -629,7 +629,7 @@ def _investflow_fixed_rule(block): for i, o in self.FIXED_INVESTFLOWS: for p, t in m.TIMEINDEX: expr = ( - m.flow[i, o, p, t] + m.flow[i, o, t] == self.total[i, o, p] * m.flows[i, o].fix[t] ) self.fixed.add((i, o, p, t), expr) @@ -646,7 +646,7 @@ def _max_investflow_rule(block): for i, o in self.NON_FIXED_INVESTFLOWS: for p, t in m.TIMEINDEX: expr = ( - m.flow[i, o, p, t] + m.flow[i, o, t] <= self.total[i, o, p] * m.flows[i, o].max[t] ) self.max.add((i, o, p, t), expr) @@ -663,7 +663,7 @@ def _min_investflow_rule(block): for i, o in self.MIN_INVESTFLOWS: for p, t in m.TIMEINDEX: expr = ( - m.flow[i, o, p, t] + m.flow[i, o, t] >= self.total[i, o, p] * m.flows[i, o].min[t] ) self.min.add((i, o, p, t), expr) @@ -678,7 +678,7 @@ def _full_load_time_max_investflow_rule(_, i, o): in investment case. """ expr = sum( - m.flow[i, o, p, t] * m.timeincrement[t] for p, t in m.TIMEINDEX + m.flow[i, o, t] * m.timeincrement[t] for t in m.TIMESTEPS ) <= ( m.flows[i, o].full_load_time_max * sum(self.total[i, o, p] for p in m.PERIODS) @@ -695,7 +695,7 @@ def _full_load_time_min_investflow_rule(_, i, o): in investment case. """ expr = sum( - m.flow[i, o, p, t] * m.timeincrement[t] for p, t in m.TIMEINDEX + m.flow[i, o, t] * m.timeincrement[t] for t in m.TIMESTEPS ) >= ( sum(self.total[i, o, p] for p in m.PERIODS) * m.flows[i, o].full_load_time_min diff --git a/src/oemof/solph/flows/_non_convex_flow_block.py b/src/oemof/solph/flows/_non_convex_flow_block.py index 89faa9320..5bf00b223 100644 --- a/src/oemof/solph/flows/_non_convex_flow_block.py +++ b/src/oemof/solph/flows/_non_convex_flow_block.py @@ -650,15 +650,15 @@ def _maximum_flow_constraint(self): """ m = self.parent_block() - def _maximum_flow_rule(_, i, o, p, t): + def _maximum_flow_rule(_, i, o, t): """Rule definition for MILP maximum flow constraints.""" expr = ( self.status_nominal[i, o, t] * m.flows[i, o].max[t] - >= m.flow[i, o, p, t] + >= m.flow[i, o, t] ) return expr - return Constraint(self.MIN_FLOWS, m.TIMEINDEX, rule=_maximum_flow_rule) + return Constraint(self.MIN_FLOWS, m.TIMESTEPS, rule=_maximum_flow_rule) def _minimum_flow_constraint(self): r""" @@ -670,15 +670,15 @@ def _minimum_flow_constraint(self): """ m = self.parent_block() - def _minimum_flow_rule(_, i, o, p, t): + def _minimum_flow_rule(_, i, o, t): """Rule definition for MILP minimum flow constraints.""" expr = ( self.status_nominal[i, o, t] * m.flows[i, o].min[t] - <= m.flow[i, o, p, t] + <= m.flow[i, o, t] ) return expr - return Constraint(self.MIN_FLOWS, m.TIMEINDEX, rule=_minimum_flow_rule) + return Constraint(self.MIN_FLOWS, m.TIMESTEPS, rule=_minimum_flow_rule) def _status_nominal_constraint(self): r""" @@ -743,17 +743,15 @@ def _positive_gradient_flow_constraint(_): m.flow[ i, o, - m.TIMEINDEX[index][0], - m.TIMEINDEX[index][1], + m.TIMESTEPS[index], ] - * self.status[i, o, m.TIMEINDEX[index][1]] + * self.status[i, o, m.TIMESTEPS[index]] - m.flow[ i, o, - m.TIMEINDEX[index - 1][0], - m.TIMEINDEX[index - 1][1], + m.TIMESTEPS[index - 1] ] - * self.status[i, o, m.TIMEINDEX[index - 1][1]] + * self.status[i, o, m.TIMESTEPS[index - 1]] ) rhs = self.positive_gradient[ i, o, m.TIMEINDEX[index][1] @@ -762,8 +760,7 @@ def _positive_gradient_flow_constraint(_): ( i, o, - m.TIMEINDEX[index][0], - m.TIMEINDEX[index][1], + m.TIMESTEPS[index], ), lhs <= rhs, ) @@ -774,14 +771,13 @@ def _positive_gradient_flow_constraint(_): ( i, o, - m.TIMEINDEX[index][0], - m.TIMEINDEX[index][1], + m.TIMESTEPS[index], ), lhs == rhs, ) self.positive_gradient_constr = Constraint( - self.POSITIVE_GRADIENT_FLOWS, m.TIMEINDEX, noruleinit=True + self.POSITIVE_GRADIENT_FLOWS, m.TIMESTEPS, noruleinit=True ) self.positive_gradient_build = BuildAction( rule=_positive_gradient_flow_constraint @@ -790,33 +786,30 @@ def _positive_gradient_flow_constraint(_): def _negative_gradient_flow_constraint(_): r"""Rule definition for negative gradient constraint.""" for i, o in self.NEGATIVE_GRADIENT_FLOWS: - for index in range(1, len(m.TIMEINDEX) + 1): - if m.TIMEINDEX[index][1] > 0: + for index in range(1, len(m.TIMESTEPS) + 1): + if m.TIMESTEPS[index] > 0: lhs = ( m.flow[ i, o, - m.TIMEINDEX[index - 1][0], - m.TIMEINDEX[index - 1][1], + m.TIMESTEPS[index - 1], ] - * self.status[i, o, m.TIMEINDEX[index - 1][1]] + * self.status[i, o, m.TIMESTEPS[index - 1]] - m.flow[ i, o, - m.TIMEINDEX[index][0], - m.TIMEINDEX[index][1], + m.TIMESTEPS[index], ] - * self.status[i, o, m.TIMEINDEX[index][1]] + * self.status[i, o, m.TIMESTEPS[index]] ) rhs = self.negative_gradient[ - i, o, m.TIMEINDEX[index][1] + i, o, m.TIMESTEPS[index] ] self.negative_gradient_constr.add( ( i, o, - m.TIMEINDEX[index][0], - m.TIMEINDEX[index][1], + m.TIMESTEPS[index], ), lhs <= rhs, ) @@ -827,14 +820,13 @@ def _negative_gradient_flow_constraint(_): ( i, o, - m.TIMEINDEX[index][0], - m.TIMEINDEX[index][1], + m.TIMESTEPS[index], ), lhs == rhs, ) self.negative_gradient_constr = Constraint( - self.NEGATIVE_GRADIENT_FLOWS, m.TIMEINDEX, noruleinit=True + self.NEGATIVE_GRADIENT_FLOWS, m.TIMESTEPS, noruleinit=True ) self.negative_gradient_build = BuildAction( rule=_negative_gradient_flow_constraint diff --git a/src/oemof/solph/flows/experimental/_electrical_line.py b/src/oemof/solph/flows/experimental/_electrical_line.py index e96f85de7..2150b1264 100644 --- a/src/oemof/solph/flows/experimental/_electrical_line.py +++ b/src/oemof/solph/flows/experimental/_electrical_line.py @@ -170,13 +170,13 @@ def _voltage_angle_bounds(block, b, t): bus.slack = True def _voltage_angle_relation(block): - for p, t in m.TIMEINDEX: + for p, t in m.TIMESTEPS: for n in group: if n.input.slack is True: self.voltage_angle[n.output, t].value = 0 self.voltage_angle[n.output, t].fix() try: - lhs = m.flow[n.input, n.output, p, t] + lhs = m.flow[n.input, n.output, t] rhs = ( 1 / n.reactance[t] @@ -190,8 +190,8 @@ def _voltage_angle_relation(block): "Error in constraint creation", "of node {}".format(n.label), ) - block.electrical_flow.add((n, p, t), (lhs == rhs)) + block.electrical_flow.add((n, t), (lhs == rhs)) - self.electrical_flow = Constraint(group, m.TIMEINDEX, noruleinit=True) + self.electrical_flow = Constraint(group, m.TIMESTEPS, noruleinit=True) self.electrical_flow_build = BuildAction(rule=_voltage_angle_relation) diff --git a/src/oemof/solph/processing.py b/src/oemof/solph/processing.py index 2b4755c65..1c066a82c 100644 --- a/src/oemof/solph/processing.py +++ b/src/oemof/solph/processing.py @@ -277,8 +277,8 @@ def results(model, remove_last_time_point=False): ) for bus, timeindex in grouped: duals = [ - model.dual[model.BusBlock.balance[bus, p, t]] - for _, p, t in timeindex + model.dual[model.BusBlock.balance[bus, t]] + for _, t in timeindex ] if model.es.periods is None: df = pd.DataFrame({"duals": duals}, index=result_index[:-1]) diff --git a/tests/test_processing.py b/tests/test_processing.py index b35c0e9e3..c7b93c900 100644 --- a/tests/test_processing.py +++ b/tests/test_processing.py @@ -290,7 +290,7 @@ def test_multiindex_sequences(self): def test_error_from_nan_values(self): trsf = self.es.groups["diesel"] bus = self.es.groups["b_el1"] - self.mod.flow[trsf, bus, 0, 5] = float("nan") + self.mod.flow[trsf, bus, 5] = float("nan") with pytest.raises(ValueError): processing.results(self.mod) diff --git a/tests/test_scripts/test_solph/test_flexible_modelling/test_add_constraints.py b/tests/test_scripts/test_solph/test_flexible_modelling/test_add_constraints.py index 9919eb735..f53072c7a 100644 --- a/tests/test_scripts/test_solph/test_flexible_modelling/test_add_constraints.py +++ b/tests/test_scripts/test_solph/test_flexible_modelling/test_add_constraints.py @@ -102,26 +102,26 @@ def test_add_constraints_example(solver="cbc", nologg=False): # add the sub-model to the oemof Model instance om.add_component("MyBlock", myblock) - def _inflow_share_rule(m, si, e, p, ti): + def _inflow_share_rule(m, si, e, ti): """pyomo rule definition: Here we can use all objects from the block or the om object, in this case we don't need anything from the block except the newly defined set MYFLOWS. """ - expr = om.flow[si, e, p, ti] >= om.flows[si, e].outflow_share[ + expr = om.flow[si, e, ti] >= om.flows[si, e].outflow_share[ ti - ] * sum(om.flow[i, o, p, ti] for (i, o) in om.FLOWS if o == e) + ] * sum(om.flow[i, o, ti] for (i, o) in om.FLOWS if o == e) return expr myblock.inflow_share = po.Constraint( - myblock.MYFLOWS, om.TIMEINDEX, rule=_inflow_share_rule + myblock.MYFLOWS, om.TIMESTEPS, rule=_inflow_share_rule ) # add emission constraint myblock.emission_constr = po.Constraint( expr=( sum( - om.flow[i, o, p, t] + om.flow[i, o, t] for (i, o) in myblock.COMMODITYFLOWS - for p, t in om.TIMEINDEX + for t in om.TIMESTEPS ) <= emission_limit ) From 12777ea80bdf0fbf76b1c67b6314f8348d58cadd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 6 Jun 2024 12:36:34 +0200 Subject: [PATCH 07/17] Fix index usage in ElectricalLine --- src/oemof/solph/flows/experimental/_electrical_line.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/oemof/solph/flows/experimental/_electrical_line.py b/src/oemof/solph/flows/experimental/_electrical_line.py index 2150b1264..2b5e2eb85 100644 --- a/src/oemof/solph/flows/experimental/_electrical_line.py +++ b/src/oemof/solph/flows/experimental/_electrical_line.py @@ -170,7 +170,7 @@ def _voltage_angle_bounds(block, b, t): bus.slack = True def _voltage_angle_relation(block): - for p, t in m.TIMESTEPS: + for t in m.TIMESTEPS: for n in group: if n.input.slack is True: self.voltage_angle[n.output, t].value = 0 From 1f2a9d439bb6ae15677637f4466f2be32e5ea3da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 6 Jun 2024 13:42:59 +0200 Subject: [PATCH 08/17] Adhere to Black --- src/oemof/solph/components/_offset_converter.py | 4 +--- src/oemof/solph/flows/_non_convex_flow_block.py | 10 ++-------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/oemof/solph/components/_offset_converter.py b/src/oemof/solph/components/_offset_converter.py index f56707e20..35e593107 100644 --- a/src/oemof/solph/components/_offset_converter.py +++ b/src/oemof/solph/components/_offset_converter.py @@ -290,9 +290,7 @@ def _relation_rule(block): for i in in_flows[n]: expr = 0 expr += -m.flow[n, o, t] - expr += ( - m.flow[i, n, t] * n.coefficients[o][1][t] - ) + expr += m.flow[i, n, t] * n.coefficients[o][1][t] # `Y(t)` in the last term of the constraint # (":math:`C_0(t) \cdot Y(t)`") is different for # different cases. If both `Investment` and diff --git a/src/oemof/solph/flows/_non_convex_flow_block.py b/src/oemof/solph/flows/_non_convex_flow_block.py index 5bf00b223..5034ab176 100644 --- a/src/oemof/solph/flows/_non_convex_flow_block.py +++ b/src/oemof/solph/flows/_non_convex_flow_block.py @@ -746,11 +746,7 @@ def _positive_gradient_flow_constraint(_): m.TIMESTEPS[index], ] * self.status[i, o, m.TIMESTEPS[index]] - - m.flow[ - i, - o, - m.TIMESTEPS[index - 1] - ] + - m.flow[i, o, m.TIMESTEPS[index - 1]] * self.status[i, o, m.TIMESTEPS[index - 1]] ) rhs = self.positive_gradient[ @@ -802,9 +798,7 @@ def _negative_gradient_flow_constraint(_): ] * self.status[i, o, m.TIMESTEPS[index]] ) - rhs = self.negative_gradient[ - i, o, m.TIMESTEPS[index] - ] + rhs = self.negative_gradient[i, o, m.TIMESTEPS[index]] self.negative_gradient_constr.add( ( i, From ef7c9bbea4f452a419de0531141cfa2429b93d18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 6 Jun 2024 13:44:37 +0200 Subject: [PATCH 09/17] Adhere to Black --- .../test_flexible_modelling/test_add_constraints.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_scripts/test_solph/test_flexible_modelling/test_add_constraints.py b/tests/test_scripts/test_solph/test_flexible_modelling/test_add_constraints.py index f53072c7a..01a63e426 100644 --- a/tests/test_scripts/test_solph/test_flexible_modelling/test_add_constraints.py +++ b/tests/test_scripts/test_solph/test_flexible_modelling/test_add_constraints.py @@ -107,9 +107,9 @@ def _inflow_share_rule(m, si, e, ti): the om object, in this case we don't need anything from the block except the newly defined set MYFLOWS. """ - expr = om.flow[si, e, ti] >= om.flows[si, e].outflow_share[ - ti - ] * sum(om.flow[i, o, ti] for (i, o) in om.FLOWS if o == e) + expr = om.flow[si, e, ti] >= om.flows[si, e].outflow_share[ti] * sum( + om.flow[i, o, ti] for (i, o) in om.FLOWS if o == e + ) return expr myblock.inflow_share = po.Constraint( From 89cf222d3fef0ef1d6312630601d60f07cb5e346 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 12 Jun 2024 07:53:57 +0200 Subject: [PATCH 10/17] Adapt lp files in constraint tests --- tests/lp_files/activity_costs.lp | 48 +- tests/lp_files/activity_costs_multi_period.lp | 96 +- tests/lp_files/connect_investment.lp | 140 +- .../connect_investment_multi_period.lp | 530 +- tests/lp_files/converter.lp | 156 +- tests/lp_files/converter_invest.lp | 162 +- .../lp_files/converter_invest_multi_period.lp | 330 +- .../converter_invest_with_existing.lp | 162 +- ...erter_invest_with_existing_multi_period.lp | 330 +- tests/lp_files/converter_multi_period.lp | 312 +- tests/lp_files/dsm_module_DIW.lp | 40 +- tests/lp_files/dsm_module_DIW_extended.lp | 70 +- .../dsm_module_DIW_extended_multi_period.lp | 220 +- tests/lp_files/dsm_module_DIW_invest.lp | 70 +- .../dsm_module_DIW_invest_multi_period.lp | 226 +- ...DIW_invest_multi_period_remaining_value.lp | 226 +- tests/lp_files/dsm_module_DIW_multi_period.lp | 148 +- tests/lp_files/dsm_module_DLR.lp | 162 +- tests/lp_files/dsm_module_DLR_delay_time.lp | 160 +- tests/lp_files/dsm_module_DLR_extended.lp | 134 +- .../dsm_module_DLR_extended_multi_period.lp | 330 +- tests/lp_files/dsm_module_DLR_invest.lp | 138 +- .../dsm_module_DLR_invest_multi_period.lp | 312 +- ...DLR_invest_multi_period_remaining_value.lp | 312 +- tests/lp_files/dsm_module_DLR_multi_period.lp | 354 +- tests/lp_files/dsm_module_oemof.lp | 24 +- tests/lp_files/dsm_module_oemof_extended.lp | 46 +- .../dsm_module_oemof_extended_multi_period.lp | 114 +- tests/lp_files/dsm_module_oemof_invest.lp | 46 +- .../dsm_module_oemof_invest_multi_period.lp | 114 +- ...mof_invest_multi_period_remaining_value.lp | 114 +- .../lp_files/dsm_module_oemof_multi_period.lp | 72 +- tests/lp_files/emission_budget_limit.lp | 48 +- tests/lp_files/emission_limit.lp | 54 +- tests/lp_files/emission_limit_no_error.lp | 36 +- tests/lp_files/equate_flows.lp | 84 +- tests/lp_files/fixed_costs_sources.lp | 2 +- tests/lp_files/fixed_source_invest_sink.lp | 36 +- .../fixed_source_invest_sink_multi_period.lp | 80 +- tests/lp_files/fixed_source_variable_sink.lp | 24 +- ...fixed_source_variable_sink_multi_period.lp | 48 +- tests/lp_files/flow_count_limit.lp | 192 +- .../lp_files/flow_count_limit_multi_period.lp | 358 +- tests/lp_files/flow_invest_with_offset.lp | 36 +- .../flow_invest_with_offset_multi_period.lp | 88 +- ...ith_offset_multi_period_remaining_value.lp | 88 +- .../flow_invest_with_offset_no_minimum.lp | 36 +- ...est_with_offset_no_minimum_multi_period.lp | 88 +- tests/lp_files/flow_invest_without_offset.lp | 36 +- ...flow_invest_without_offset_multi_period.lp | 80 +- ...out_offset_multi_period_remaining_value.lp | 80 +- ...flow_nonconvex_invest_bounded_converter.lp | 84 +- tests/lp_files/flow_reaching_lifetime.lp | 52 +- tests/lp_files/generic_invest_limit.lp | 110 +- tests/lp_files/inactivity_costs.lp | 48 +- .../lp_files/inactivity_costs_multi_period.lp | 96 +- tests/lp_files/integer_source.lp | 36 +- tests/lp_files/invest_non_convex_flow.lp | 78 +- tests/lp_files/invest_source_fixed_sink.lp | 30 +- .../invest_source_fixed_sink_multi_period.lp | 66 +- tests/lp_files/investment_limit.lp | 118 +- .../lp_files/investment_limit_with_dsm_DIW.lp | 100 +- .../lp_files/investment_limit_with_dsm_DLR.lp | 114 +- .../investment_limit_with_dsm_oemof.lp | 56 +- tests/lp_files/linear_converter.lp | 60 +- tests/lp_files/linear_converter_chp.lp | 96 +- tests/lp_files/linear_converter_chp_invest.lp | 102 +- ...inear_converter_chp_invest_multi_period.lp | 210 +- .../linear_converter_chp_multi_period.lp | 192 +- tests/lp_files/linear_converter_invest.lp | 66 +- .../linear_converter_invest_multi_period.lp | 138 +- ...inear_converter_invest_multi_period_old.lp | 138 +- ...ter_invest_multi_period_remaining_value.lp | 138 +- .../lp_files/linear_converter_multi_period.lp | 120 +- tests/lp_files/link.lp | 98 +- tests/lp_files/max_source_min_sink.lp | 36 +- .../max_source_min_sink_multi_period.lp | 72 +- tests/lp_files/maximum_shutdowns.lp | 52 +- .../maximum_shutdowns_multi_period.lp | 106 +- tests/lp_files/maximum_startups.lp | 52 +- .../lp_files/maximum_startups_multi_period.lp | 106 +- tests/lp_files/min_max_runtime.lp | 48 +- .../lp_files/min_max_runtime_multi_period.lp | 102 +- tests/lp_files/multi_period_period_length.lp | 5450 ++++++++--------- tests/lp_files/nominal_value_to_zero.lp | 18 +- .../nominal_value_to_zero_multi_period.lp | 36 +- tests/lp_files/nonequidistant_timeindex.lp | 304 +- .../lp_files/offsetconverter_multi_period.lp | 138 +- tests/lp_files/offsetconverter_nonconvex.lp | 72 +- .../offsetconverter_nonconvex_investment.lp | 82 +- tests/lp_files/periodical_emission_limit.lp | 48 +- tests/lp_files/periodical_investment_limit.lp | 334 +- ...eriodical_investment_limit_with_dsm_DIW.lp | 286 +- ...eriodical_investment_limit_with_dsm_DLR.lp | 264 +- ...iodical_investment_limit_with_dsm_oemof.lp | 136 +- .../lp_files/piecewise_linear_converter_cc.lp | 266 +- ...cewise_linear_converter_cc_multi_period.lp | 156 +- .../piecewise_linear_converter_dcc.lp | 254 +- ...ewise_linear_converter_dcc_multi_period.lp | 156 +- tests/lp_files/shared_limit.lp | 102 +- tests/lp_files/shared_limit_multi_period.lp | 204 +- .../source_with_nonconvex_gradient.lp | 80 +- ...ce_with_nonconvex_gradient_multi_period.lp | 170 +- tests/lp_files/storage.lp | 62 +- tests/lp_files/storage_fixed_losses.lp | 60 +- .../storage_fixed_losses_multi_period.lp | 120 +- tests/lp_files/storage_invest_1.lp | 68 +- .../lp_files/storage_invest_1_fixed_losses.lp | 68 +- .../lp_files/storage_invest_1_multi_period.lp | 158 +- ...e_invest_1_multi_period_remaining_value.lp | 298 +- tests/lp_files/storage_invest_2.lp | 54 +- .../lp_files/storage_invest_2_multi_period.lp | 278 +- tests/lp_files/storage_invest_3.lp | 64 +- .../lp_files/storage_invest_3_multi_period.lp | 292 +- tests/lp_files/storage_invest_4.lp | 42 +- .../lp_files/storage_invest_4_multi_period.lp | 86 +- tests/lp_files/storage_invest_5.lp | 68 +- .../lp_files/storage_invest_5_multi_period.lp | 150 +- tests/lp_files/storage_invest_6.lp | 58 +- .../lp_files/storage_invest_6_multi_period.lp | 136 +- .../lp_files/storage_invest_all_nonconvex.lp | 112 +- ...orage_invest_all_nonconvex_multi_period.lp | 346 +- tests/lp_files/storage_invest_minimum.lp | 42 +- .../storage_invest_minimum_multi_period.lp | 86 +- tests/lp_files/storage_invest_multi_period.lp | 86 +- tests/lp_files/storage_invest_unbalanced.lp | 56 +- tests/lp_files/storage_invest_with_offset.lp | 102 +- ...storage_invest_with_offset_multi_period.lp | 166 +- ...ith_offset_multi_period_remaining_value.lp | 306 +- .../lp_files/storage_invest_without_offset.lp | 102 +- ...rage_invest_without_offset_multi_period.lp | 158 +- ...out_offset_multi_period_remaining_value.lp | 298 +- tests/lp_files/storage_level_constraint.lp | 40 +- tests/lp_files/storage_multi_period.lp | 120 +- tests/lp_files/storage_unbalanced.lp | 52 +- .../storage_unbalanced_multi_period.lp | 100 +- tests/lp_files/summed_min_source.lp | 36 +- .../summed_min_source_multi_period.lp | 72 +- tests/lp_files/variable_chp.lp | 198 +- tests/lp_files/variable_chp_multi_period.lp | 396 +- 140 files changed, 11802 insertions(+), 11802 deletions(-) diff --git a/tests/lp_files/activity_costs.lp b/tests/lp_files/activity_costs.lp index 02f6420cf..5e10fb48a 100644 --- a/tests/lp_files/activity_costs.lp +++ b/tests/lp_files/activity_costs.lp @@ -2,25 +2,25 @@ min objective: -+10 flow(cheap_plant_activity_costs_Bus_C_0_0) -+10 flow(cheap_plant_activity_costs_Bus_C_0_1) -+10 flow(cheap_plant_activity_costs_Bus_C_0_2) ++10 flow(cheap_plant_activity_costs_Bus_C_0) ++10 flow(cheap_plant_activity_costs_Bus_C_1) ++10 flow(cheap_plant_activity_costs_Bus_C_2) +2 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_0) +2 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_1) +2 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_2) s.t. -c_e_BusBlock_balance(Bus_C_0_0)_: -+1 flow(cheap_plant_activity_costs_Bus_C_0_0) +c_e_BusBlock_balance(Bus_C_0)_: ++1 flow(cheap_plant_activity_costs_Bus_C_0) = 0 -c_e_BusBlock_balance(Bus_C_0_1)_: -+1 flow(cheap_plant_activity_costs_Bus_C_0_1) +c_e_BusBlock_balance(Bus_C_1)_: ++1 flow(cheap_plant_activity_costs_Bus_C_1) = 0 -c_e_BusBlock_balance(Bus_C_0_2)_: -+1 flow(cheap_plant_activity_costs_Bus_C_0_2) +c_e_BusBlock_balance(Bus_C_2)_: ++1 flow(cheap_plant_activity_costs_Bus_C_2) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_C_0)_: @@ -38,40 +38,40 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_ +1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_2) = 0 -c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_0_0)_: --1 flow(cheap_plant_activity_costs_Bus_C_0_0) +c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_0)_: +-1 flow(cheap_plant_activity_costs_Bus_C_0) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_0) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_0_1)_: --1 flow(cheap_plant_activity_costs_Bus_C_0_1) +c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_1)_: +-1 flow(cheap_plant_activity_costs_Bus_C_1) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_1) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_0_2)_: --1 flow(cheap_plant_activity_costs_Bus_C_0_2) +c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_2)_: +-1 flow(cheap_plant_activity_costs_Bus_C_2) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_2) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_0_0)_: -+1 flow(cheap_plant_activity_costs_Bus_C_0_0) +c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_0)_: ++1 flow(cheap_plant_activity_costs_Bus_C_0) -1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_0) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_0_1)_: -+1 flow(cheap_plant_activity_costs_Bus_C_0_1) +c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_1)_: ++1 flow(cheap_plant_activity_costs_Bus_C_1) -1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_1) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_0_2)_: -+1 flow(cheap_plant_activity_costs_Bus_C_0_2) +c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_2)_: ++1 flow(cheap_plant_activity_costs_Bus_C_2) -1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_2) <= 0 bounds - 0 <= flow(cheap_plant_activity_costs_Bus_C_0_0) <= 10.0 - 0 <= flow(cheap_plant_activity_costs_Bus_C_0_1) <= 10.0 - 0 <= flow(cheap_plant_activity_costs_Bus_C_0_2) <= 10.0 + 0 <= flow(cheap_plant_activity_costs_Bus_C_0) <= 10.0 + 0 <= flow(cheap_plant_activity_costs_Bus_C_1) <= 10.0 + 0 <= flow(cheap_plant_activity_costs_Bus_C_2) <= 10.0 0 <= NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_0) <= 1 0 <= NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_1) <= 1 0 <= NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_2) <= 1 diff --git a/tests/lp_files/activity_costs_multi_period.lp b/tests/lp_files/activity_costs_multi_period.lp index fd798fa7b..ee364020e 100644 --- a/tests/lp_files/activity_costs_multi_period.lp +++ b/tests/lp_files/activity_costs_multi_period.lp @@ -2,12 +2,12 @@ min objective: -+10 flow(cheap_plant_activity_costs_Bus_C_0_0) -+10 flow(cheap_plant_activity_costs_Bus_C_0_1) -+9.80392156862745 flow(cheap_plant_activity_costs_Bus_C_1_2) -+9.80392156862745 flow(cheap_plant_activity_costs_Bus_C_1_3) -+9.611687812379854 flow(cheap_plant_activity_costs_Bus_C_2_4) -+9.611687812379854 flow(cheap_plant_activity_costs_Bus_C_2_5) ++10 flow(cheap_plant_activity_costs_Bus_C_0) ++10 flow(cheap_plant_activity_costs_Bus_C_1) ++9.80392156862745 flow(cheap_plant_activity_costs_Bus_C_2) ++9.80392156862745 flow(cheap_plant_activity_costs_Bus_C_3) ++9.611687812379854 flow(cheap_plant_activity_costs_Bus_C_4) ++9.611687812379854 flow(cheap_plant_activity_costs_Bus_C_5) +2 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_0) +2 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_1) +1.9607843137254901 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_2) @@ -17,28 +17,28 @@ objective: s.t. -c_e_BusBlock_balance(Bus_C_0_0)_: -+1 flow(cheap_plant_activity_costs_Bus_C_0_0) +c_e_BusBlock_balance(Bus_C_0)_: ++1 flow(cheap_plant_activity_costs_Bus_C_0) = 0 -c_e_BusBlock_balance(Bus_C_0_1)_: -+1 flow(cheap_plant_activity_costs_Bus_C_0_1) +c_e_BusBlock_balance(Bus_C_1)_: ++1 flow(cheap_plant_activity_costs_Bus_C_1) = 0 -c_e_BusBlock_balance(Bus_C_1_2)_: -+1 flow(cheap_plant_activity_costs_Bus_C_1_2) +c_e_BusBlock_balance(Bus_C_2)_: ++1 flow(cheap_plant_activity_costs_Bus_C_2) = 0 -c_e_BusBlock_balance(Bus_C_1_3)_: -+1 flow(cheap_plant_activity_costs_Bus_C_1_3) +c_e_BusBlock_balance(Bus_C_3)_: ++1 flow(cheap_plant_activity_costs_Bus_C_3) = 0 -c_e_BusBlock_balance(Bus_C_2_4)_: -+1 flow(cheap_plant_activity_costs_Bus_C_2_4) +c_e_BusBlock_balance(Bus_C_4)_: ++1 flow(cheap_plant_activity_costs_Bus_C_4) = 0 -c_e_BusBlock_balance(Bus_C_2_5)_: -+1 flow(cheap_plant_activity_costs_Bus_C_2_5) +c_e_BusBlock_balance(Bus_C_5)_: ++1 flow(cheap_plant_activity_costs_Bus_C_5) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_C_0)_: @@ -71,73 +71,73 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_ +1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_5) = 0 -c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_0_0)_: --1 flow(cheap_plant_activity_costs_Bus_C_0_0) +c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_0)_: +-1 flow(cheap_plant_activity_costs_Bus_C_0) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_0) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_0_1)_: --1 flow(cheap_plant_activity_costs_Bus_C_0_1) +c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_1)_: +-1 flow(cheap_plant_activity_costs_Bus_C_1) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_1) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_1_2)_: --1 flow(cheap_plant_activity_costs_Bus_C_1_2) +c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_2)_: +-1 flow(cheap_plant_activity_costs_Bus_C_2) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_2) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_1_3)_: --1 flow(cheap_plant_activity_costs_Bus_C_1_3) +c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_3)_: +-1 flow(cheap_plant_activity_costs_Bus_C_3) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_3) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_2_4)_: --1 flow(cheap_plant_activity_costs_Bus_C_2_4) +c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_4)_: +-1 flow(cheap_plant_activity_costs_Bus_C_4) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_4) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_2_5)_: --1 flow(cheap_plant_activity_costs_Bus_C_2_5) +c_u_NonConvexFlowBlock_min(cheap_plant_activity_costs_Bus_C_5)_: +-1 flow(cheap_plant_activity_costs_Bus_C_5) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_5) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_0_0)_: -+1 flow(cheap_plant_activity_costs_Bus_C_0_0) +c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_0)_: ++1 flow(cheap_plant_activity_costs_Bus_C_0) -1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_0) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_0_1)_: -+1 flow(cheap_plant_activity_costs_Bus_C_0_1) +c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_1)_: ++1 flow(cheap_plant_activity_costs_Bus_C_1) -1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_1) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_1_2)_: -+1 flow(cheap_plant_activity_costs_Bus_C_1_2) +c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_2)_: ++1 flow(cheap_plant_activity_costs_Bus_C_2) -1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_2) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_1_3)_: -+1 flow(cheap_plant_activity_costs_Bus_C_1_3) +c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_3)_: ++1 flow(cheap_plant_activity_costs_Bus_C_3) -1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_3) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_2_4)_: -+1 flow(cheap_plant_activity_costs_Bus_C_2_4) +c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_4)_: ++1 flow(cheap_plant_activity_costs_Bus_C_4) -1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_4) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_2_5)_: -+1 flow(cheap_plant_activity_costs_Bus_C_2_5) +c_u_NonConvexFlowBlock_max(cheap_plant_activity_costs_Bus_C_5)_: ++1 flow(cheap_plant_activity_costs_Bus_C_5) -1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_5) <= 0 bounds - 0 <= flow(cheap_plant_activity_costs_Bus_C_0_0) <= 10.0 - 0 <= flow(cheap_plant_activity_costs_Bus_C_0_1) <= 10.0 - 0 <= flow(cheap_plant_activity_costs_Bus_C_1_2) <= 10.0 - 0 <= flow(cheap_plant_activity_costs_Bus_C_1_3) <= 10.0 - 0 <= flow(cheap_plant_activity_costs_Bus_C_2_4) <= 10.0 - 0 <= flow(cheap_plant_activity_costs_Bus_C_2_5) <= 10.0 + 0 <= flow(cheap_plant_activity_costs_Bus_C_0) <= 10.0 + 0 <= flow(cheap_plant_activity_costs_Bus_C_1) <= 10.0 + 0 <= flow(cheap_plant_activity_costs_Bus_C_2) <= 10.0 + 0 <= flow(cheap_plant_activity_costs_Bus_C_3) <= 10.0 + 0 <= flow(cheap_plant_activity_costs_Bus_C_4) <= 10.0 + 0 <= flow(cheap_plant_activity_costs_Bus_C_5) <= 10.0 0 <= NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_0) <= 1 0 <= NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_1) <= 1 0 <= NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_2) <= 1 diff --git a/tests/lp_files/connect_investment.lp b/tests/lp_files/connect_investment.lp index 5573bd32f..0f6b8e97d 100644 --- a/tests/lp_files/connect_investment.lp +++ b/tests/lp_files/connect_investment.lp @@ -2,15 +2,15 @@ min objective: -+500 InvestmentFlowBlock_invest(Bus1_Sink_0) +123 InvestmentFlowBlock_invest(Source_Bus1_0) ++500 InvestmentFlowBlock_invest(Bus1_Sink_0) +145 GenericInvestmentStorageBlock_invest(storage_0) s.t. c_e__equate_InvestmentFlowBlock_invest(Source_Bus1_0)_InvestmentFlowBlock_invest(Bus1_Sink_0)__: --1 InvestmentFlowBlock_invest(Bus1_Sink_0) +2 InvestmentFlowBlock_invest(Source_Bus1_0) +-1 InvestmentFlowBlock_invest(Bus1_Sink_0) = 0 c_e__equate_InvestmentFlowBlock_invest(Source_Bus1_0)_GenericInvestmentStorageBlock_invest(storage_0)__: @@ -18,35 +18,30 @@ c_e__equate_InvestmentFlowBlock_invest(Source_Bus1_0)_GenericInvestmentStorageBl -1 GenericInvestmentStorageBlock_invest(storage_0) = 0 -c_e_BusBlock_balance(Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) -+1 flow(storage_Bus1_0_0) --1 flow(Bus1_storage_0_0) --1 flow(Bus1_Sink_0_0) +c_e_BusBlock_balance(Bus1_0)_: +-1 flow(Bus1_storage_0) +-1 flow(Bus1_Sink_0) ++1 flow(storage_Bus1_0) ++1 flow(Source_Bus1_0) = 0 -c_e_BusBlock_balance(Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) -+1 flow(storage_Bus1_0_1) --1 flow(Bus1_storage_0_1) --1 flow(Bus1_Sink_0_1) +c_e_BusBlock_balance(Bus1_1)_: +-1 flow(Bus1_storage_1) +-1 flow(Bus1_Sink_1) ++1 flow(storage_Bus1_1) ++1 flow(Source_Bus1_1) = 0 -c_e_BusBlock_balance(Bus1_0_2)_: -+1 flow(Source_Bus1_0_2) -+1 flow(storage_Bus1_0_2) --1 flow(Bus1_storage_0_2) --1 flow(Bus1_Sink_0_2) +c_e_BusBlock_balance(Bus1_2)_: +-1 flow(Bus1_storage_2) +-1 flow(Bus1_Sink_2) ++1 flow(storage_Bus1_2) ++1 flow(Source_Bus1_2) = 0 c_e_InvestmentFlowBlock_total_rule(storage_Bus1_0)_: -+1 InvestmentFlowBlock_total(storage_Bus1_0) -1 InvestmentFlowBlock_invest(storage_Bus1_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(Bus1_Sink_0)_: --1 InvestmentFlowBlock_invest(Bus1_Sink_0) -+1 InvestmentFlowBlock_total(Bus1_Sink_0) ++1 InvestmentFlowBlock_total(storage_Bus1_0) = 0 c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: @@ -54,68 +49,73 @@ c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: +1 InvestmentFlowBlock_total(Source_Bus1_0) = 0 +c_e_InvestmentFlowBlock_total_rule(Bus1_Sink_0)_: +-1 InvestmentFlowBlock_invest(Bus1_Sink_0) ++1 InvestmentFlowBlock_total(Bus1_Sink_0) += 0 + c_e_InvestmentFlowBlock_total_rule(Bus1_storage_0)_: -+1 InvestmentFlowBlock_total(Bus1_storage_0) -1 InvestmentFlowBlock_invest(Bus1_storage_0) ++1 InvestmentFlowBlock_total(Bus1_storage_0) = 0 c_u_InvestmentFlowBlock_max(storage_Bus1_0_0)_: -+1 flow(storage_Bus1_0_0) ++1 flow(storage_Bus1_0) -1 InvestmentFlowBlock_total(storage_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(storage_Bus1_0_1)_: -+1 flow(storage_Bus1_0_1) ++1 flow(storage_Bus1_1) -1 InvestmentFlowBlock_total(storage_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(storage_Bus1_0_2)_: -+1 flow(storage_Bus1_0_2) ++1 flow(storage_Bus1_2) -1 InvestmentFlowBlock_total(storage_Bus1_0) <= 0 -c_u_InvestmentFlowBlock_max(Bus1_Sink_0_0)_: -+1 flow(Bus1_Sink_0_0) --1 InvestmentFlowBlock_total(Bus1_Sink_0) -<= 0 - -c_u_InvestmentFlowBlock_max(Bus1_Sink_0_1)_: -+1 flow(Bus1_Sink_0_1) --1 InvestmentFlowBlock_total(Bus1_Sink_0) -<= 0 - -c_u_InvestmentFlowBlock_max(Bus1_Sink_0_2)_: -+1 flow(Bus1_Sink_0_2) --1 InvestmentFlowBlock_total(Bus1_Sink_0) -<= 0 - c_u_InvestmentFlowBlock_max(Source_Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) ++1 flow(Source_Bus1_0) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) ++1 flow(Source_Bus1_1) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_0_2)_: -+1 flow(Source_Bus1_0_2) ++1 flow(Source_Bus1_2) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 +c_u_InvestmentFlowBlock_max(Bus1_Sink_0_0)_: ++1 flow(Bus1_Sink_0) +-1 InvestmentFlowBlock_total(Bus1_Sink_0) +<= 0 + +c_u_InvestmentFlowBlock_max(Bus1_Sink_0_1)_: ++1 flow(Bus1_Sink_1) +-1 InvestmentFlowBlock_total(Bus1_Sink_0) +<= 0 + +c_u_InvestmentFlowBlock_max(Bus1_Sink_0_2)_: ++1 flow(Bus1_Sink_2) +-1 InvestmentFlowBlock_total(Bus1_Sink_0) +<= 0 + c_u_InvestmentFlowBlock_max(Bus1_storage_0_0)_: -+1 flow(Bus1_storage_0_0) ++1 flow(Bus1_storage_0) -1 InvestmentFlowBlock_total(Bus1_storage_0) <= 0 c_u_InvestmentFlowBlock_max(Bus1_storage_0_1)_: -+1 flow(Bus1_storage_0_1) ++1 flow(Bus1_storage_1) -1 InvestmentFlowBlock_total(Bus1_storage_0) <= 0 c_u_InvestmentFlowBlock_max(Bus1_storage_0_2)_: -+1 flow(Bus1_storage_0_2) ++1 flow(Bus1_storage_2) -1 InvestmentFlowBlock_total(Bus1_storage_0) <= 0 @@ -130,22 +130,22 @@ c_u_GenericInvestmentStorageBlock_init_content_limit(storage)_: <= 0 c_e_GenericInvestmentStorageBlock_balance_first(storage)_: -+1 flow(storage_Bus1_0_0) --1 flow(Bus1_storage_0_0) +-1 flow(Bus1_storage_0) ++1 flow(storage_Bus1_0) -1 GenericInvestmentStorageBlock_init_content(storage) +1 GenericInvestmentStorageBlock_storage_content(storage_0) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_0_1)_: -+1 flow(storage_Bus1_0_1) --1 flow(Bus1_storage_0_1) +-1 flow(Bus1_storage_1) ++1 flow(storage_Bus1_1) -1 GenericInvestmentStorageBlock_storage_content(storage_0) +1 GenericInvestmentStorageBlock_storage_content(storage_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_0_2)_: -+1 flow(storage_Bus1_0_2) --1 flow(Bus1_storage_0_2) +-1 flow(Bus1_storage_2) ++1 flow(storage_Bus1_2) -1 GenericInvestmentStorageBlock_storage_content(storage_1) +1 GenericInvestmentStorageBlock_storage_content(storage_2) = 0 @@ -181,27 +181,27 @@ c_u_GenericInvestmentStorageBlock_max_storage_content(storage_0_2)_: <= 0 bounds - 0 <= InvestmentFlowBlock_invest(Bus1_Sink_0) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_invest(Source_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_invest(Bus1_Sink_0) <= +inf + 0 <= InvestmentFlowBlock_invest(Bus1_storage_0) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage_0) <= +inf - 0 <= flow(Source_Bus1_0_0) <= +inf - 0 <= flow(storage_Bus1_0_0) <= +inf - 0 <= flow(Bus1_storage_0_0) <= +inf - 0 <= flow(Bus1_Sink_0_0) <= +inf - 0 <= flow(Source_Bus1_0_1) <= +inf - 0 <= flow(storage_Bus1_0_1) <= +inf - 0 <= flow(Bus1_storage_0_1) <= +inf - 0 <= flow(Bus1_Sink_0_1) <= +inf - 0 <= flow(Source_Bus1_0_2) <= +inf - 0 <= flow(storage_Bus1_0_2) <= +inf - 0 <= flow(Bus1_storage_0_2) <= +inf - 0 <= flow(Bus1_Sink_0_2) <= +inf + 0 <= flow(Bus1_storage_0) <= +inf + 0 <= flow(Bus1_storage_1) <= +inf + 0 <= flow(Bus1_storage_2) <= +inf + 0 <= flow(Bus1_Sink_0) <= +inf + 0 <= flow(Bus1_Sink_1) <= +inf + 0 <= flow(Bus1_Sink_2) <= +inf + 0 <= flow(storage_Bus1_0) <= +inf + 0 <= flow(storage_Bus1_1) <= +inf + 0 <= flow(storage_Bus1_2) <= +inf + 0 <= flow(Source_Bus1_0) <= +inf + 0 <= flow(Source_Bus1_1) <= +inf + 0 <= flow(Source_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_total(storage_Bus1_0) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_Bus1_0) <= +inf - 0 <= InvestmentFlowBlock_total(Bus1_Sink_0) <= +inf 0 <= InvestmentFlowBlock_total(Source_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_total(Bus1_Sink_0) <= +inf 0 <= InvestmentFlowBlock_total(Bus1_storage_0) <= +inf - 0 <= InvestmentFlowBlock_invest(Bus1_storage_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_0) <= +inf 0 <= GenericInvestmentStorageBlock_init_content(storage) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_0) <= +inf diff --git a/tests/lp_files/connect_investment_multi_period.lp b/tests/lp_files/connect_investment_multi_period.lp index 75e8a280e..c4e944198 100644 --- a/tests/lp_files/connect_investment_multi_period.lp +++ b/tests/lp_files/connect_investment_multi_period.lp @@ -2,12 +2,12 @@ min objective: -+499.99999999999994 InvestmentFlowBlock_invest(Bus1_Sink_0) -+330.02221931773533 InvestmentFlowBlock_invest(Bus1_Sink_1) -+163.37733629590875 InvestmentFlowBlock_invest(Bus1_Sink_2) +123.0 InvestmentFlowBlock_invest(Source_Bus1_0) +81.1854659521629 InvestmentFlowBlock_invest(Source_Bus1_1) +40.19082472879356 InvestmentFlowBlock_invest(Source_Bus1_2) ++499.99999999999994 InvestmentFlowBlock_invest(Bus1_Sink_0) ++330.02221931773533 InvestmentFlowBlock_invest(Bus1_Sink_1) ++163.37733629590875 InvestmentFlowBlock_invest(Bus1_Sink_2) +144.99999999999997 GenericInvestmentStorageBlock_invest(storage_0) +95.70644360214325 GenericInvestmentStorageBlock_invest(storage_1) +47.37942752581354 GenericInvestmentStorageBlock_invest(storage_2) @@ -15,8 +15,8 @@ objective: s.t. c_e__equate_InvestmentFlowBlock_invest(Source_Bus1_0)_InvestmentFlowBlock_invest(Bus1_Sink_0)__: --1 InvestmentFlowBlock_invest(Bus1_Sink_0) +2 InvestmentFlowBlock_invest(Source_Bus1_0) +-1 InvestmentFlowBlock_invest(Bus1_Sink_0) = 0 c_e__equate_InvestmentFlowBlock_invest(Source_Bus1_0)_GenericInvestmentStorageBlock_invest(storage_0)__: @@ -24,46 +24,84 @@ c_e__equate_InvestmentFlowBlock_invest(Source_Bus1_0)_GenericInvestmentStorageBl -1 GenericInvestmentStorageBlock_invest(storage_0) = 0 -c_e_BusBlock_balance(Bus1_0_0)_: -+1 flow(storage_Bus1_0_0) -+1 flow(Source_Bus1_0_0) --1 flow(Bus1_storage_0_0) --1 flow(Bus1_Sink_0_0) +c_e_BusBlock_balance(Bus1_0)_: +-1 flow(Bus1_storage_0) +-1 flow(Bus1_Sink_0) ++1 flow(storage_Bus1_0) ++1 flow(Source_Bus1_0) = 0 -c_e_BusBlock_balance(Bus1_0_1)_: -+1 flow(storage_Bus1_0_1) -+1 flow(Source_Bus1_0_1) --1 flow(Bus1_storage_0_1) --1 flow(Bus1_Sink_0_1) +c_e_BusBlock_balance(Bus1_1)_: +-1 flow(Bus1_storage_1) +-1 flow(Bus1_Sink_1) ++1 flow(storage_Bus1_1) ++1 flow(Source_Bus1_1) = 0 -c_e_BusBlock_balance(Bus1_1_2)_: -+1 flow(storage_Bus1_1_2) -+1 flow(Source_Bus1_1_2) --1 flow(Bus1_storage_1_2) --1 flow(Bus1_Sink_1_2) +c_e_BusBlock_balance(Bus1_2)_: +-1 flow(Bus1_storage_2) +-1 flow(Bus1_Sink_2) ++1 flow(storage_Bus1_2) ++1 flow(Source_Bus1_2) = 0 -c_e_BusBlock_balance(Bus1_1_3)_: -+1 flow(storage_Bus1_1_3) -+1 flow(Source_Bus1_1_3) --1 flow(Bus1_storage_1_3) --1 flow(Bus1_Sink_1_3) +c_e_BusBlock_balance(Bus1_3)_: +-1 flow(Bus1_storage_3) +-1 flow(Bus1_Sink_3) ++1 flow(storage_Bus1_3) ++1 flow(Source_Bus1_3) = 0 -c_e_BusBlock_balance(Bus1_2_4)_: -+1 flow(storage_Bus1_2_4) -+1 flow(Source_Bus1_2_4) --1 flow(Bus1_storage_2_4) --1 flow(Bus1_Sink_2_4) +c_e_BusBlock_balance(Bus1_4)_: +-1 flow(Bus1_storage_4) +-1 flow(Bus1_Sink_4) ++1 flow(storage_Bus1_4) ++1 flow(Source_Bus1_4) = 0 -c_e_BusBlock_balance(Bus1_2_5)_: -+1 flow(storage_Bus1_2_5) -+1 flow(Source_Bus1_2_5) --1 flow(Bus1_storage_2_5) --1 flow(Bus1_Sink_2_5) +c_e_BusBlock_balance(Bus1_5)_: +-1 flow(Bus1_storage_5) +-1 flow(Bus1_Sink_5) ++1 flow(storage_Bus1_5) ++1 flow(Source_Bus1_5) += 0 + +c_e_InvestmentFlowBlock_total_rule(storage_Bus1_0)_: +-1 InvestmentFlowBlock_invest(storage_Bus1_0) ++1 InvestmentFlowBlock_total(storage_Bus1_0) += 0 + +c_e_InvestmentFlowBlock_total_rule(storage_Bus1_1)_: +-1 InvestmentFlowBlock_invest(storage_Bus1_1) +-1 InvestmentFlowBlock_total(storage_Bus1_0) ++1 InvestmentFlowBlock_total(storage_Bus1_1) ++1 InvestmentFlowBlock_old(storage_Bus1_1) += 0 + +c_e_InvestmentFlowBlock_total_rule(storage_Bus1_2)_: +-1 InvestmentFlowBlock_invest(storage_Bus1_2) +-1 InvestmentFlowBlock_total(storage_Bus1_1) ++1 InvestmentFlowBlock_total(storage_Bus1_2) ++1 InvestmentFlowBlock_old(storage_Bus1_2) += 0 + +c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: +-1 InvestmentFlowBlock_invest(Source_Bus1_0) ++1 InvestmentFlowBlock_total(Source_Bus1_0) += 0 + +c_e_InvestmentFlowBlock_total_rule(Source_Bus1_1)_: +-1 InvestmentFlowBlock_invest(Source_Bus1_1) +-1 InvestmentFlowBlock_total(Source_Bus1_0) ++1 InvestmentFlowBlock_total(Source_Bus1_1) ++1 InvestmentFlowBlock_old(Source_Bus1_1) += 0 + +c_e_InvestmentFlowBlock_total_rule(Source_Bus1_2)_: +-1 InvestmentFlowBlock_invest(Source_Bus1_2) +-1 InvestmentFlowBlock_total(Source_Bus1_1) ++1 InvestmentFlowBlock_total(Source_Bus1_2) ++1 InvestmentFlowBlock_old(Source_Bus1_2) = 0 c_e_InvestmentFlowBlock_total_rule(Bus1_Sink_0)_: @@ -86,60 +124,46 @@ c_e_InvestmentFlowBlock_total_rule(Bus1_Sink_2)_: = 0 c_e_InvestmentFlowBlock_total_rule(Bus1_storage_0)_: -+1 InvestmentFlowBlock_total(Bus1_storage_0) -1 InvestmentFlowBlock_invest(Bus1_storage_0) ++1 InvestmentFlowBlock_total(Bus1_storage_0) = 0 c_e_InvestmentFlowBlock_total_rule(Bus1_storage_1)_: +-1 InvestmentFlowBlock_invest(Bus1_storage_1) -1 InvestmentFlowBlock_total(Bus1_storage_0) +1 InvestmentFlowBlock_total(Bus1_storage_1) --1 InvestmentFlowBlock_invest(Bus1_storage_1) +1 InvestmentFlowBlock_old(Bus1_storage_1) = 0 c_e_InvestmentFlowBlock_total_rule(Bus1_storage_2)_: +-1 InvestmentFlowBlock_invest(Bus1_storage_2) -1 InvestmentFlowBlock_total(Bus1_storage_1) +1 InvestmentFlowBlock_total(Bus1_storage_2) --1 InvestmentFlowBlock_invest(Bus1_storage_2) +1 InvestmentFlowBlock_old(Bus1_storage_2) = 0 -c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: --1 InvestmentFlowBlock_invest(Source_Bus1_0) -+1 InvestmentFlowBlock_total(Source_Bus1_0) +c_e_InvestmentFlowBlock_old_rule_end(storage_Bus1_0)_: ++1 InvestmentFlowBlock_old_end(storage_Bus1_0) = 0 -c_e_InvestmentFlowBlock_total_rule(Source_Bus1_1)_: --1 InvestmentFlowBlock_invest(Source_Bus1_1) --1 InvestmentFlowBlock_total(Source_Bus1_0) -+1 InvestmentFlowBlock_total(Source_Bus1_1) -+1 InvestmentFlowBlock_old(Source_Bus1_1) +c_e_InvestmentFlowBlock_old_rule_end(storage_Bus1_1)_: ++1 InvestmentFlowBlock_old_end(storage_Bus1_1) = 0 -c_e_InvestmentFlowBlock_total_rule(Source_Bus1_2)_: --1 InvestmentFlowBlock_invest(Source_Bus1_2) --1 InvestmentFlowBlock_total(Source_Bus1_1) -+1 InvestmentFlowBlock_total(Source_Bus1_2) -+1 InvestmentFlowBlock_old(Source_Bus1_2) +c_e_InvestmentFlowBlock_old_rule_end(storage_Bus1_2)_: ++1 InvestmentFlowBlock_old_end(storage_Bus1_2) = 0 -c_e_InvestmentFlowBlock_total_rule(storage_Bus1_0)_: -+1 InvestmentFlowBlock_total(storage_Bus1_0) --1 InvestmentFlowBlock_invest(storage_Bus1_0) +c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_0)_: ++1 InvestmentFlowBlock_old_end(Source_Bus1_0) = 0 -c_e_InvestmentFlowBlock_total_rule(storage_Bus1_1)_: --1 InvestmentFlowBlock_total(storage_Bus1_0) -+1 InvestmentFlowBlock_total(storage_Bus1_1) --1 InvestmentFlowBlock_invest(storage_Bus1_1) -+1 InvestmentFlowBlock_old(storage_Bus1_1) +c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_1)_: ++1 InvestmentFlowBlock_old_end(Source_Bus1_1) = 0 -c_e_InvestmentFlowBlock_total_rule(storage_Bus1_2)_: --1 InvestmentFlowBlock_total(storage_Bus1_1) -+1 InvestmentFlowBlock_total(storage_Bus1_2) --1 InvestmentFlowBlock_invest(storage_Bus1_2) -+1 InvestmentFlowBlock_old(storage_Bus1_2) +c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_2)_: ++1 InvestmentFlowBlock_old_end(Source_Bus1_2) = 0 c_e_InvestmentFlowBlock_old_rule_end(Bus1_Sink_0)_: @@ -166,28 +190,28 @@ c_e_InvestmentFlowBlock_old_rule_end(Bus1_storage_2)_: +1 InvestmentFlowBlock_old_end(Bus1_storage_2) = 0 -c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_0)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_0) +c_e_InvestmentFlowBlock_old_rule_exo(storage_Bus1_0)_: ++1 InvestmentFlowBlock_old_exo(storage_Bus1_0) = 0 -c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_1)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_1) +c_e_InvestmentFlowBlock_old_rule_exo(storage_Bus1_1)_: ++1 InvestmentFlowBlock_old_exo(storage_Bus1_1) = 0 -c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_2)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_2) +c_e_InvestmentFlowBlock_old_rule_exo(storage_Bus1_2)_: ++1 InvestmentFlowBlock_old_exo(storage_Bus1_2) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage_Bus1_0)_: -+1 InvestmentFlowBlock_old_end(storage_Bus1_0) +c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_0)_: ++1 InvestmentFlowBlock_old_exo(Source_Bus1_0) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage_Bus1_1)_: -+1 InvestmentFlowBlock_old_end(storage_Bus1_1) +c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_1)_: ++1 InvestmentFlowBlock_old_exo(Source_Bus1_1) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage_Bus1_2)_: -+1 InvestmentFlowBlock_old_end(storage_Bus1_2) +c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_2)_: ++1 InvestmentFlowBlock_old_exo(Source_Bus1_2) = 0 c_e_InvestmentFlowBlock_old_rule_exo(Bus1_Sink_0)_: @@ -214,34 +238,46 @@ c_e_InvestmentFlowBlock_old_rule_exo(Bus1_storage_2)_: +1 InvestmentFlowBlock_old_exo(Bus1_storage_2) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_0)_: -+1 InvestmentFlowBlock_old_exo(Source_Bus1_0) +c_e_InvestmentFlowBlock_old_rule(storage_Bus1_0)_: ++1 InvestmentFlowBlock_old(storage_Bus1_0) +-1 InvestmentFlowBlock_old_end(storage_Bus1_0) +-1 InvestmentFlowBlock_old_exo(storage_Bus1_0) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_1)_: -+1 InvestmentFlowBlock_old_exo(Source_Bus1_1) +c_e_InvestmentFlowBlock_old_rule(storage_Bus1_1)_: ++1 InvestmentFlowBlock_old(storage_Bus1_1) +-1 InvestmentFlowBlock_old_end(storage_Bus1_1) +-1 InvestmentFlowBlock_old_exo(storage_Bus1_1) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_2)_: -+1 InvestmentFlowBlock_old_exo(Source_Bus1_2) +c_e_InvestmentFlowBlock_old_rule(storage_Bus1_2)_: ++1 InvestmentFlowBlock_old(storage_Bus1_2) +-1 InvestmentFlowBlock_old_end(storage_Bus1_2) +-1 InvestmentFlowBlock_old_exo(storage_Bus1_2) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage_Bus1_0)_: -+1 InvestmentFlowBlock_old_exo(storage_Bus1_0) +c_e_InvestmentFlowBlock_old_rule(Source_Bus1_0)_: ++1 InvestmentFlowBlock_old(Source_Bus1_0) +-1 InvestmentFlowBlock_old_end(Source_Bus1_0) +-1 InvestmentFlowBlock_old_exo(Source_Bus1_0) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage_Bus1_1)_: -+1 InvestmentFlowBlock_old_exo(storage_Bus1_1) +c_e_InvestmentFlowBlock_old_rule(Source_Bus1_1)_: ++1 InvestmentFlowBlock_old(Source_Bus1_1) +-1 InvestmentFlowBlock_old_end(Source_Bus1_1) +-1 InvestmentFlowBlock_old_exo(Source_Bus1_1) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage_Bus1_2)_: -+1 InvestmentFlowBlock_old_exo(storage_Bus1_2) +c_e_InvestmentFlowBlock_old_rule(Source_Bus1_2)_: ++1 InvestmentFlowBlock_old(Source_Bus1_2) +-1 InvestmentFlowBlock_old_end(Source_Bus1_2) +-1 InvestmentFlowBlock_old_exo(Source_Bus1_2) = 0 c_e_InvestmentFlowBlock_old_rule(Bus1_Sink_0)_: ++1 InvestmentFlowBlock_old(Bus1_Sink_0) -1 InvestmentFlowBlock_old_end(Bus1_Sink_0) -1 InvestmentFlowBlock_old_exo(Bus1_Sink_0) -+1 InvestmentFlowBlock_old(Bus1_Sink_0) = 0 c_e_InvestmentFlowBlock_old_rule(Bus1_Sink_1)_: @@ -257,9 +293,9 @@ c_e_InvestmentFlowBlock_old_rule(Bus1_Sink_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(Bus1_storage_0)_: ++1 InvestmentFlowBlock_old(Bus1_storage_0) -1 InvestmentFlowBlock_old_end(Bus1_storage_0) -1 InvestmentFlowBlock_old_exo(Bus1_storage_0) -+1 InvestmentFlowBlock_old(Bus1_storage_0) = 0 c_e_InvestmentFlowBlock_old_rule(Bus1_storage_1)_: @@ -274,162 +310,126 @@ c_e_InvestmentFlowBlock_old_rule(Bus1_storage_2)_: -1 InvestmentFlowBlock_old_exo(Bus1_storage_2) = 0 -c_e_InvestmentFlowBlock_old_rule(Source_Bus1_0)_: --1 InvestmentFlowBlock_old_end(Source_Bus1_0) --1 InvestmentFlowBlock_old_exo(Source_Bus1_0) -+1 InvestmentFlowBlock_old(Source_Bus1_0) -= 0 +c_u_InvestmentFlowBlock_max(storage_Bus1_0_0)_: ++1 flow(storage_Bus1_0) +-1 InvestmentFlowBlock_total(storage_Bus1_0) +<= 0 -c_e_InvestmentFlowBlock_old_rule(Source_Bus1_1)_: -+1 InvestmentFlowBlock_old(Source_Bus1_1) --1 InvestmentFlowBlock_old_end(Source_Bus1_1) --1 InvestmentFlowBlock_old_exo(Source_Bus1_1) -= 0 +c_u_InvestmentFlowBlock_max(storage_Bus1_0_1)_: ++1 flow(storage_Bus1_1) +-1 InvestmentFlowBlock_total(storage_Bus1_0) +<= 0 -c_e_InvestmentFlowBlock_old_rule(Source_Bus1_2)_: -+1 InvestmentFlowBlock_old(Source_Bus1_2) --1 InvestmentFlowBlock_old_end(Source_Bus1_2) --1 InvestmentFlowBlock_old_exo(Source_Bus1_2) -= 0 +c_u_InvestmentFlowBlock_max(storage_Bus1_1_2)_: ++1 flow(storage_Bus1_2) +-1 InvestmentFlowBlock_total(storage_Bus1_1) +<= 0 -c_e_InvestmentFlowBlock_old_rule(storage_Bus1_0)_: --1 InvestmentFlowBlock_old_end(storage_Bus1_0) --1 InvestmentFlowBlock_old_exo(storage_Bus1_0) -+1 InvestmentFlowBlock_old(storage_Bus1_0) -= 0 +c_u_InvestmentFlowBlock_max(storage_Bus1_1_3)_: ++1 flow(storage_Bus1_3) +-1 InvestmentFlowBlock_total(storage_Bus1_1) +<= 0 -c_e_InvestmentFlowBlock_old_rule(storage_Bus1_1)_: -+1 InvestmentFlowBlock_old(storage_Bus1_1) --1 InvestmentFlowBlock_old_end(storage_Bus1_1) --1 InvestmentFlowBlock_old_exo(storage_Bus1_1) -= 0 +c_u_InvestmentFlowBlock_max(storage_Bus1_2_4)_: ++1 flow(storage_Bus1_4) +-1 InvestmentFlowBlock_total(storage_Bus1_2) +<= 0 -c_e_InvestmentFlowBlock_old_rule(storage_Bus1_2)_: -+1 InvestmentFlowBlock_old(storage_Bus1_2) --1 InvestmentFlowBlock_old_end(storage_Bus1_2) --1 InvestmentFlowBlock_old_exo(storage_Bus1_2) -= 0 +c_u_InvestmentFlowBlock_max(storage_Bus1_2_5)_: ++1 flow(storage_Bus1_5) +-1 InvestmentFlowBlock_total(storage_Bus1_2) +<= 0 + +c_u_InvestmentFlowBlock_max(Source_Bus1_0_0)_: ++1 flow(Source_Bus1_0) +-1 InvestmentFlowBlock_total(Source_Bus1_0) +<= 0 + +c_u_InvestmentFlowBlock_max(Source_Bus1_0_1)_: ++1 flow(Source_Bus1_1) +-1 InvestmentFlowBlock_total(Source_Bus1_0) +<= 0 + +c_u_InvestmentFlowBlock_max(Source_Bus1_1_2)_: ++1 flow(Source_Bus1_2) +-1 InvestmentFlowBlock_total(Source_Bus1_1) +<= 0 + +c_u_InvestmentFlowBlock_max(Source_Bus1_1_3)_: ++1 flow(Source_Bus1_3) +-1 InvestmentFlowBlock_total(Source_Bus1_1) +<= 0 + +c_u_InvestmentFlowBlock_max(Source_Bus1_2_4)_: ++1 flow(Source_Bus1_4) +-1 InvestmentFlowBlock_total(Source_Bus1_2) +<= 0 + +c_u_InvestmentFlowBlock_max(Source_Bus1_2_5)_: ++1 flow(Source_Bus1_5) +-1 InvestmentFlowBlock_total(Source_Bus1_2) +<= 0 c_u_InvestmentFlowBlock_max(Bus1_Sink_0_0)_: -+1 flow(Bus1_Sink_0_0) ++1 flow(Bus1_Sink_0) -1 InvestmentFlowBlock_total(Bus1_Sink_0) <= 0 c_u_InvestmentFlowBlock_max(Bus1_Sink_0_1)_: -+1 flow(Bus1_Sink_0_1) ++1 flow(Bus1_Sink_1) -1 InvestmentFlowBlock_total(Bus1_Sink_0) <= 0 c_u_InvestmentFlowBlock_max(Bus1_Sink_1_2)_: -+1 flow(Bus1_Sink_1_2) ++1 flow(Bus1_Sink_2) -1 InvestmentFlowBlock_total(Bus1_Sink_1) <= 0 c_u_InvestmentFlowBlock_max(Bus1_Sink_1_3)_: -+1 flow(Bus1_Sink_1_3) ++1 flow(Bus1_Sink_3) -1 InvestmentFlowBlock_total(Bus1_Sink_1) <= 0 c_u_InvestmentFlowBlock_max(Bus1_Sink_2_4)_: -+1 flow(Bus1_Sink_2_4) ++1 flow(Bus1_Sink_4) -1 InvestmentFlowBlock_total(Bus1_Sink_2) <= 0 c_u_InvestmentFlowBlock_max(Bus1_Sink_2_5)_: -+1 flow(Bus1_Sink_2_5) ++1 flow(Bus1_Sink_5) -1 InvestmentFlowBlock_total(Bus1_Sink_2) <= 0 c_u_InvestmentFlowBlock_max(Bus1_storage_0_0)_: -+1 flow(Bus1_storage_0_0) ++1 flow(Bus1_storage_0) -1 InvestmentFlowBlock_total(Bus1_storage_0) <= 0 c_u_InvestmentFlowBlock_max(Bus1_storage_0_1)_: -+1 flow(Bus1_storage_0_1) ++1 flow(Bus1_storage_1) -1 InvestmentFlowBlock_total(Bus1_storage_0) <= 0 c_u_InvestmentFlowBlock_max(Bus1_storage_1_2)_: -+1 flow(Bus1_storage_1_2) ++1 flow(Bus1_storage_2) -1 InvestmentFlowBlock_total(Bus1_storage_1) <= 0 c_u_InvestmentFlowBlock_max(Bus1_storage_1_3)_: -+1 flow(Bus1_storage_1_3) ++1 flow(Bus1_storage_3) -1 InvestmentFlowBlock_total(Bus1_storage_1) <= 0 c_u_InvestmentFlowBlock_max(Bus1_storage_2_4)_: -+1 flow(Bus1_storage_2_4) ++1 flow(Bus1_storage_4) -1 InvestmentFlowBlock_total(Bus1_storage_2) <= 0 c_u_InvestmentFlowBlock_max(Bus1_storage_2_5)_: -+1 flow(Bus1_storage_2_5) ++1 flow(Bus1_storage_5) -1 InvestmentFlowBlock_total(Bus1_storage_2) <= 0 -c_u_InvestmentFlowBlock_max(Source_Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) --1 InvestmentFlowBlock_total(Source_Bus1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(Source_Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) --1 InvestmentFlowBlock_total(Source_Bus1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(Source_Bus1_1_2)_: -+1 flow(Source_Bus1_1_2) --1 InvestmentFlowBlock_total(Source_Bus1_1) -<= 0 - -c_u_InvestmentFlowBlock_max(Source_Bus1_1_3)_: -+1 flow(Source_Bus1_1_3) --1 InvestmentFlowBlock_total(Source_Bus1_1) -<= 0 - -c_u_InvestmentFlowBlock_max(Source_Bus1_2_4)_: -+1 flow(Source_Bus1_2_4) --1 InvestmentFlowBlock_total(Source_Bus1_2) -<= 0 - -c_u_InvestmentFlowBlock_max(Source_Bus1_2_5)_: -+1 flow(Source_Bus1_2_5) --1 InvestmentFlowBlock_total(Source_Bus1_2) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_Bus1_0_0)_: -+1 flow(storage_Bus1_0_0) --1 InvestmentFlowBlock_total(storage_Bus1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_Bus1_0_1)_: -+1 flow(storage_Bus1_0_1) --1 InvestmentFlowBlock_total(storage_Bus1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_Bus1_1_2)_: -+1 flow(storage_Bus1_1_2) --1 InvestmentFlowBlock_total(storage_Bus1_1) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_Bus1_1_3)_: -+1 flow(storage_Bus1_1_3) --1 InvestmentFlowBlock_total(storage_Bus1_1) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_Bus1_2_4)_: -+1 flow(storage_Bus1_2_4) --1 InvestmentFlowBlock_total(storage_Bus1_2) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_Bus1_2_5)_: -+1 flow(storage_Bus1_2_5) --1 InvestmentFlowBlock_total(storage_Bus1_2) -<= 0 - c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_0)_: -1 GenericInvestmentStorageBlock_invest(storage_0) +1 GenericInvestmentStorageBlock_total(storage_0) @@ -474,9 +474,9 @@ c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_2)_: = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage_0)_: ++1 GenericInvestmentStorageBlock_old(storage_0) -1 GenericInvestmentStorageBlock_old_end(storage_0) -1 GenericInvestmentStorageBlock_old_exo(storage_0) -+1 GenericInvestmentStorageBlock_old(storage_0) = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage_1)_: @@ -496,36 +496,36 @@ c_e_GenericInvestmentStorageBlock_initially_empty(storage_0)_: = 0 c_e_GenericInvestmentStorageBlock_balance(storage_0_1)_: -+1 flow(storage_Bus1_0_1) --1 flow(Bus1_storage_0_1) +-1 flow(Bus1_storage_1) ++1 flow(storage_Bus1_1) -1 GenericInvestmentStorageBlock_storage_content(storage_0) +1 GenericInvestmentStorageBlock_storage_content(storage_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_1_2)_: -+1 flow(storage_Bus1_1_2) --1 flow(Bus1_storage_1_2) +-1 flow(Bus1_storage_2) ++1 flow(storage_Bus1_2) -1 GenericInvestmentStorageBlock_storage_content(storage_1) +1 GenericInvestmentStorageBlock_storage_content(storage_2) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_1_3)_: -+1 flow(storage_Bus1_1_3) --1 flow(Bus1_storage_1_3) +-1 flow(Bus1_storage_3) ++1 flow(storage_Bus1_3) -1 GenericInvestmentStorageBlock_storage_content(storage_2) +1 GenericInvestmentStorageBlock_storage_content(storage_3) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_2_4)_: -+1 flow(storage_Bus1_2_4) --1 flow(Bus1_storage_2_4) +-1 flow(Bus1_storage_4) ++1 flow(storage_Bus1_4) -1 GenericInvestmentStorageBlock_storage_content(storage_3) +1 GenericInvestmentStorageBlock_storage_content(storage_4) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_2_5)_: -+1 flow(storage_Bus1_2_5) --1 flow(Bus1_storage_2_5) +-1 flow(Bus1_storage_5) ++1 flow(storage_Bus1_5) -1 GenericInvestmentStorageBlock_storage_content(storage_4) +1 GenericInvestmentStorageBlock_storage_content(storage_5) = 0 @@ -591,97 +591,98 @@ c_u_GenericInvestmentStorageBlock_max_storage_content(storage_2_5)_: <= 0 bounds - 0 <= InvestmentFlowBlock_invest(Bus1_Sink_0) <= +inf - 0 <= InvestmentFlowBlock_invest(Bus1_Sink_1) <= +inf - 0 <= InvestmentFlowBlock_invest(Bus1_Sink_2) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_Bus1_1) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_invest(Source_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_invest(Source_Bus1_1) <= +inf 0 <= InvestmentFlowBlock_invest(Source_Bus1_2) <= +inf + 0 <= InvestmentFlowBlock_invest(Bus1_Sink_0) <= +inf + 0 <= InvestmentFlowBlock_invest(Bus1_Sink_1) <= +inf + 0 <= InvestmentFlowBlock_invest(Bus1_Sink_2) <= +inf + 0 <= InvestmentFlowBlock_invest(Bus1_storage_0) <= +inf + 0 <= InvestmentFlowBlock_invest(Bus1_storage_1) <= +inf + 0 <= InvestmentFlowBlock_invest(Bus1_storage_2) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage_0) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage_1) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage_2) <= +inf - 0 <= flow(storage_Bus1_0_0) <= +inf - 0 <= flow(Source_Bus1_0_0) <= +inf - 0 <= flow(Bus1_storage_0_0) <= +inf - 0 <= flow(Bus1_Sink_0_0) <= +inf - 0 <= flow(storage_Bus1_0_1) <= +inf - 0 <= flow(Source_Bus1_0_1) <= +inf - 0 <= flow(Bus1_storage_0_1) <= +inf - 0 <= flow(Bus1_Sink_0_1) <= +inf - 0 <= flow(storage_Bus1_1_2) <= +inf - 0 <= flow(Source_Bus1_1_2) <= +inf - 0 <= flow(Bus1_storage_1_2) <= +inf - 0 <= flow(Bus1_Sink_1_2) <= +inf - 0 <= flow(storage_Bus1_1_3) <= +inf - 0 <= flow(Source_Bus1_1_3) <= +inf - 0 <= flow(Bus1_storage_1_3) <= +inf - 0 <= flow(Bus1_Sink_1_3) <= +inf - 0 <= flow(storage_Bus1_2_4) <= +inf - 0 <= flow(Source_Bus1_2_4) <= +inf - 0 <= flow(Bus1_storage_2_4) <= +inf - 0 <= flow(Bus1_Sink_2_4) <= +inf - 0 <= flow(storage_Bus1_2_5) <= +inf - 0 <= flow(Source_Bus1_2_5) <= +inf - 0 <= flow(Bus1_storage_2_5) <= +inf - 0 <= flow(Bus1_Sink_2_5) <= +inf + 0 <= flow(Bus1_storage_0) <= +inf + 0 <= flow(Bus1_storage_1) <= +inf + 0 <= flow(Bus1_storage_2) <= +inf + 0 <= flow(Bus1_storage_3) <= +inf + 0 <= flow(Bus1_storage_4) <= +inf + 0 <= flow(Bus1_storage_5) <= +inf + 0 <= flow(Bus1_Sink_0) <= +inf + 0 <= flow(Bus1_Sink_1) <= +inf + 0 <= flow(Bus1_Sink_2) <= +inf + 0 <= flow(Bus1_Sink_3) <= +inf + 0 <= flow(Bus1_Sink_4) <= +inf + 0 <= flow(Bus1_Sink_5) <= +inf + 0 <= flow(storage_Bus1_0) <= +inf + 0 <= flow(storage_Bus1_1) <= +inf + 0 <= flow(storage_Bus1_2) <= +inf + 0 <= flow(storage_Bus1_3) <= +inf + 0 <= flow(storage_Bus1_4) <= +inf + 0 <= flow(storage_Bus1_5) <= +inf + 0 <= flow(Source_Bus1_0) <= +inf + 0 <= flow(Source_Bus1_1) <= +inf + 0 <= flow(Source_Bus1_2) <= +inf + 0 <= flow(Source_Bus1_3) <= +inf + 0 <= flow(Source_Bus1_4) <= +inf + 0 <= flow(Source_Bus1_5) <= +inf + 0 <= InvestmentFlowBlock_total(storage_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_total(storage_Bus1_1) <= +inf + 0 <= InvestmentFlowBlock_total(storage_Bus1_2) <= +inf + 0 <= InvestmentFlowBlock_total(Source_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_total(Source_Bus1_1) <= +inf + 0 <= InvestmentFlowBlock_total(Source_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_total(Bus1_Sink_0) <= +inf 0 <= InvestmentFlowBlock_total(Bus1_Sink_1) <= +inf - 0 <= InvestmentFlowBlock_old(Bus1_Sink_1) <= +inf 0 <= InvestmentFlowBlock_total(Bus1_Sink_2) <= +inf - 0 <= InvestmentFlowBlock_old(Bus1_Sink_2) <= +inf 0 <= InvestmentFlowBlock_total(Bus1_storage_0) <= +inf - 0 <= InvestmentFlowBlock_invest(Bus1_storage_0) <= +inf 0 <= InvestmentFlowBlock_total(Bus1_storage_1) <= +inf - 0 <= InvestmentFlowBlock_invest(Bus1_storage_1) <= +inf - 0 <= InvestmentFlowBlock_old(Bus1_storage_1) <= +inf 0 <= InvestmentFlowBlock_total(Bus1_storage_2) <= +inf - 0 <= InvestmentFlowBlock_invest(Bus1_storage_2) <= +inf - 0 <= InvestmentFlowBlock_old(Bus1_storage_2) <= +inf - 0 <= InvestmentFlowBlock_total(Source_Bus1_0) <= +inf - 0 <= InvestmentFlowBlock_total(Source_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_old(Source_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_total(Source_Bus1_2) <= +inf - 0 <= InvestmentFlowBlock_old(Source_Bus1_2) <= +inf - 0 <= InvestmentFlowBlock_total(storage_Bus1_0) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_Bus1_0) <= +inf - 0 <= InvestmentFlowBlock_total(storage_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_Bus1_1) <= +inf + 0 <= InvestmentFlowBlock_old(storage_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_old(storage_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_total(storage_Bus1_2) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_old(storage_Bus1_2) <= +inf + 0 <= InvestmentFlowBlock_old(Source_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_old(Source_Bus1_1) <= +inf + 0 <= InvestmentFlowBlock_old(Source_Bus1_2) <= +inf + 0 <= InvestmentFlowBlock_old(Bus1_Sink_0) <= +inf + 0 <= InvestmentFlowBlock_old(Bus1_Sink_1) <= +inf + 0 <= InvestmentFlowBlock_old(Bus1_Sink_2) <= +inf + 0 <= InvestmentFlowBlock_old(Bus1_storage_0) <= +inf + 0 <= InvestmentFlowBlock_old(Bus1_storage_1) <= +inf + 0 <= InvestmentFlowBlock_old(Bus1_storage_2) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage_Bus1_1) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage_Bus1_2) <= +inf + 0 <= InvestmentFlowBlock_old_end(Source_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_old_end(Source_Bus1_1) <= +inf + 0 <= InvestmentFlowBlock_old_end(Source_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_old_end(Bus1_Sink_0) <= +inf 0 <= InvestmentFlowBlock_old_end(Bus1_Sink_1) <= +inf 0 <= InvestmentFlowBlock_old_end(Bus1_Sink_2) <= +inf 0 <= InvestmentFlowBlock_old_end(Bus1_storage_0) <= +inf 0 <= InvestmentFlowBlock_old_end(Bus1_storage_1) <= +inf 0 <= InvestmentFlowBlock_old_end(Bus1_storage_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(Source_Bus1_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(Source_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(Source_Bus1_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage_Bus1_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage_Bus1_2) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage_Bus1_1) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage_Bus1_2) <= +inf + 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_1) <= +inf + 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_old_exo(Bus1_Sink_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(Bus1_Sink_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(Bus1_Sink_2) <= +inf 0 <= InvestmentFlowBlock_old_exo(Bus1_storage_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(Bus1_storage_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(Bus1_storage_2) <= +inf - 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_0) <= +inf - 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_2) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage_Bus1_0) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage_Bus1_2) <= +inf - 0 <= InvestmentFlowBlock_old(Bus1_Sink_0) <= +inf - 0 <= InvestmentFlowBlock_old(Bus1_storage_0) <= +inf - 0 <= InvestmentFlowBlock_old(Source_Bus1_0) <= +inf - 0 <= InvestmentFlowBlock_old(storage_Bus1_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_1) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_2) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_0) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_1) <= +inf 0 <= GenericInvestmentStorageBlock_old(storage_2) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage_1) <= +inf @@ -689,7 +690,6 @@ bounds 0 <= GenericInvestmentStorageBlock_old_exo(storage_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage_1) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_1) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_2) <= +inf diff --git a/tests/lp_files/converter.lp b/tests/lp_files/converter.lp index e91691132..f72f22c7d 100644 --- a/tests/lp_files/converter.lp +++ b/tests/lp_files/converter.lp @@ -2,134 +2,134 @@ min objective: -+50 flow(powerplantGasBiomass_electricityBus_0_0) -+50 flow(powerplantGasBiomass_electricityBus_0_1) -+50 flow(powerplantGasBiomass_electricityBus_0_2) -+20 flow(powerplantGasBiomass_thermalBus_0_0) -+20 flow(powerplantGasBiomass_thermalBus_0_1) -+20 flow(powerplantGasBiomass_thermalBus_0_2) ++50 flow(powerplantGasBiomass_electricityBus_0) ++50 flow(powerplantGasBiomass_electricityBus_1) ++50 flow(powerplantGasBiomass_electricityBus_2) ++20 flow(powerplantGasBiomass_thermalBus_0) ++20 flow(powerplantGasBiomass_thermalBus_1) ++20 flow(powerplantGasBiomass_thermalBus_2) s.t. -c_e_BusBlock_balance(biomassBus_0_0)_: -+1 flow(biomassBus_powerplantGasBiomass_0_0) +c_e_BusBlock_balance(biomassBus_0)_: ++1 flow(biomassBus_powerplantGasBiomass_0) = 0 -c_e_BusBlock_balance(biomassBus_0_1)_: -+1 flow(biomassBus_powerplantGasBiomass_0_1) +c_e_BusBlock_balance(biomassBus_1)_: ++1 flow(biomassBus_powerplantGasBiomass_1) = 0 -c_e_BusBlock_balance(biomassBus_0_2)_: -+1 flow(biomassBus_powerplantGasBiomass_0_2) +c_e_BusBlock_balance(biomassBus_2)_: ++1 flow(biomassBus_powerplantGasBiomass_2) = 0 -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplantGasBiomass_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(powerplantGasBiomass_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplantGasBiomass_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(powerplantGasBiomass_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(powerplantGasBiomass_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(powerplantGasBiomass_electricityBus_2) = 0 -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_powerplantGasBiomass_0_0) +c_e_BusBlock_balance(gasBus_0)_: ++1 flow(gasBus_powerplantGasBiomass_0) = 0 -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_powerplantGasBiomass_0_1) +c_e_BusBlock_balance(gasBus_1)_: ++1 flow(gasBus_powerplantGasBiomass_1) = 0 -c_e_BusBlock_balance(gasBus_0_2)_: -+1 flow(gasBus_powerplantGasBiomass_0_2) +c_e_BusBlock_balance(gasBus_2)_: ++1 flow(gasBus_powerplantGasBiomass_2) = 0 -c_e_BusBlock_balance(thermalBus_0_0)_: -+1 flow(powerplantGasBiomass_thermalBus_0_0) +c_e_BusBlock_balance(thermalBus_0)_: ++1 flow(powerplantGasBiomass_thermalBus_0) = 0 -c_e_BusBlock_balance(thermalBus_0_1)_: -+1 flow(powerplantGasBiomass_thermalBus_0_1) +c_e_BusBlock_balance(thermalBus_1)_: ++1 flow(powerplantGasBiomass_thermalBus_1) = 0 -c_e_BusBlock_balance(thermalBus_0_2)_: -+1 flow(powerplantGasBiomass_thermalBus_0_2) +c_e_BusBlock_balance(thermalBus_2)_: ++1 flow(powerplantGasBiomass_thermalBus_2) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_0_0)_: --0.1 flow(powerplantGasBiomass_electricityBus_0_0) -+0.3 flow(biomassBus_powerplantGasBiomass_0_0) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_0)_: ++0.3 flow(gasBus_powerplantGasBiomass_0) +-0.4 flow(powerplantGasBiomass_electricityBus_0) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_0_0)_: --0.4 flow(powerplantGasBiomass_electricityBus_0_0) -+0.3 flow(gasBus_powerplantGasBiomass_0_0) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_0)_: ++0.3 flow(biomassBus_powerplantGasBiomass_0) +-0.1 flow(powerplantGasBiomass_electricityBus_0) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_0_0)_: --0.1 flow(powerplantGasBiomass_thermalBus_0_0) -+0.5 flow(biomassBus_powerplantGasBiomass_0_0) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_0)_: ++0.5 flow(gasBus_powerplantGasBiomass_0) +-0.4 flow(powerplantGasBiomass_thermalBus_0) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_0_0)_: --0.4 flow(powerplantGasBiomass_thermalBus_0_0) -+0.5 flow(gasBus_powerplantGasBiomass_0_0) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_0)_: ++0.5 flow(biomassBus_powerplantGasBiomass_0) +-0.1 flow(powerplantGasBiomass_thermalBus_0) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_0_1)_: --0.1 flow(powerplantGasBiomass_electricityBus_0_1) -+0.3 flow(biomassBus_powerplantGasBiomass_0_1) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_1)_: ++0.3 flow(gasBus_powerplantGasBiomass_1) +-0.4 flow(powerplantGasBiomass_electricityBus_1) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_0_1)_: --0.4 flow(powerplantGasBiomass_electricityBus_0_1) -+0.3 flow(gasBus_powerplantGasBiomass_0_1) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_1)_: ++0.3 flow(biomassBus_powerplantGasBiomass_1) +-0.1 flow(powerplantGasBiomass_electricityBus_1) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_0_1)_: --0.1 flow(powerplantGasBiomass_thermalBus_0_1) -+0.5 flow(biomassBus_powerplantGasBiomass_0_1) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_1)_: ++0.5 flow(gasBus_powerplantGasBiomass_1) +-0.4 flow(powerplantGasBiomass_thermalBus_1) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_0_1)_: --0.4 flow(powerplantGasBiomass_thermalBus_0_1) -+0.5 flow(gasBus_powerplantGasBiomass_0_1) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_1)_: ++0.5 flow(biomassBus_powerplantGasBiomass_1) +-0.1 flow(powerplantGasBiomass_thermalBus_1) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_0_2)_: --0.1 flow(powerplantGasBiomass_electricityBus_0_2) -+0.3 flow(biomassBus_powerplantGasBiomass_0_2) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_2)_: ++0.3 flow(gasBus_powerplantGasBiomass_2) +-0.4 flow(powerplantGasBiomass_electricityBus_2) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_0_2)_: --0.4 flow(powerplantGasBiomass_electricityBus_0_2) -+0.3 flow(gasBus_powerplantGasBiomass_0_2) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_2)_: ++0.3 flow(biomassBus_powerplantGasBiomass_2) +-0.1 flow(powerplantGasBiomass_electricityBus_2) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_0_2)_: --0.1 flow(powerplantGasBiomass_thermalBus_0_2) -+0.5 flow(biomassBus_powerplantGasBiomass_0_2) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_2)_: ++0.5 flow(gasBus_powerplantGasBiomass_2) +-0.4 flow(powerplantGasBiomass_thermalBus_2) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_0_2)_: --0.4 flow(powerplantGasBiomass_thermalBus_0_2) -+0.5 flow(gasBus_powerplantGasBiomass_0_2) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_2)_: ++0.5 flow(biomassBus_powerplantGasBiomass_2) +-0.1 flow(powerplantGasBiomass_thermalBus_2) = 0 bounds - 0 <= flow(powerplantGasBiomass_electricityBus_0_0) <= +inf - 0 <= flow(powerplantGasBiomass_electricityBus_0_1) <= +inf - 0 <= flow(powerplantGasBiomass_electricityBus_0_2) <= +inf - 0.0 <= flow(powerplantGasBiomass_thermalBus_0_0) <= 50000000000.0 - 0.0 <= flow(powerplantGasBiomass_thermalBus_0_1) <= 50000000000.0 - 0.0 <= flow(powerplantGasBiomass_thermalBus_0_2) <= 50000000000.0 - 0 <= flow(biomassBus_powerplantGasBiomass_0_0) <= +inf - 0 <= flow(biomassBus_powerplantGasBiomass_0_1) <= +inf - 0 <= flow(biomassBus_powerplantGasBiomass_0_2) <= +inf - 0 <= flow(gasBus_powerplantGasBiomass_0_0) <= +inf - 0 <= flow(gasBus_powerplantGasBiomass_0_1) <= +inf - 0 <= flow(gasBus_powerplantGasBiomass_0_2) <= +inf + 0 <= flow(gasBus_powerplantGasBiomass_0) <= +inf + 0 <= flow(gasBus_powerplantGasBiomass_1) <= +inf + 0 <= flow(gasBus_powerplantGasBiomass_2) <= +inf + 0 <= flow(biomassBus_powerplantGasBiomass_0) <= +inf + 0 <= flow(biomassBus_powerplantGasBiomass_1) <= +inf + 0 <= flow(biomassBus_powerplantGasBiomass_2) <= +inf + 0 <= flow(powerplantGasBiomass_electricityBus_0) <= +inf + 0 <= flow(powerplantGasBiomass_electricityBus_1) <= +inf + 0 <= flow(powerplantGasBiomass_electricityBus_2) <= +inf + 0.0 <= flow(powerplantGasBiomass_thermalBus_0) <= 50000000000.0 + 0.0 <= flow(powerplantGasBiomass_thermalBus_1) <= 50000000000.0 + 0.0 <= flow(powerplantGasBiomass_thermalBus_2) <= 50000000000.0 end diff --git a/tests/lp_files/converter_invest.lp b/tests/lp_files/converter_invest.lp index bbcc7ff59..149ac8d30 100644 --- a/tests/lp_files/converter_invest.lp +++ b/tests/lp_files/converter_invest.lp @@ -3,121 +3,121 @@ min objective: +20 InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_0) -+50 flow(powerplant_gas_coal_electricityBus_0_0) -+50 flow(powerplant_gas_coal_electricityBus_0_1) -+50 flow(powerplant_gas_coal_electricityBus_0_2) -+20 flow(powerplant_gas_coal_thermalBus_0_0) -+20 flow(powerplant_gas_coal_thermalBus_0_1) -+20 flow(powerplant_gas_coal_thermalBus_0_2) ++50 flow(powerplant_gas_coal_electricityBus_0) ++50 flow(powerplant_gas_coal_electricityBus_1) ++50 flow(powerplant_gas_coal_electricityBus_2) ++20 flow(powerplant_gas_coal_thermalBus_0) ++20 flow(powerplant_gas_coal_thermalBus_1) ++20 flow(powerplant_gas_coal_thermalBus_2) s.t. -c_e_BusBlock_balance(coalBus_0_0)_: -+1 flow(coalBus_powerplant_gas_coal_0_0) +c_e_BusBlock_balance(coalBus_0)_: ++1 flow(coalBus_powerplant_gas_coal_0) = 0 -c_e_BusBlock_balance(coalBus_0_1)_: -+1 flow(coalBus_powerplant_gas_coal_0_1) +c_e_BusBlock_balance(coalBus_1)_: ++1 flow(coalBus_powerplant_gas_coal_1) = 0 -c_e_BusBlock_balance(coalBus_0_2)_: -+1 flow(coalBus_powerplant_gas_coal_0_2) +c_e_BusBlock_balance(coalBus_2)_: ++1 flow(coalBus_powerplant_gas_coal_2) = 0 -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_powerplant_gas_coal_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(powerplant_gas_coal_electricityBus_0) = 0 -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_powerplant_gas_coal_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(powerplant_gas_coal_electricityBus_1) = 0 -c_e_BusBlock_balance(gasBus_0_2)_: -+1 flow(gasBus_powerplant_gas_coal_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(powerplant_gas_coal_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplant_gas_coal_electricityBus_0_0) +c_e_BusBlock_balance(gasBus_0)_: ++1 flow(gasBus_powerplant_gas_coal_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplant_gas_coal_electricityBus_0_1) +c_e_BusBlock_balance(gasBus_1)_: ++1 flow(gasBus_powerplant_gas_coal_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(powerplant_gas_coal_electricityBus_0_2) +c_e_BusBlock_balance(gasBus_2)_: ++1 flow(gasBus_powerplant_gas_coal_2) = 0 -c_e_BusBlock_balance(thermalBus_0_0)_: -+1 flow(powerplant_gas_coal_thermalBus_0_0) +c_e_BusBlock_balance(thermalBus_0)_: ++1 flow(powerplant_gas_coal_thermalBus_0) = 0 -c_e_BusBlock_balance(thermalBus_0_1)_: -+1 flow(powerplant_gas_coal_thermalBus_0_1) +c_e_BusBlock_balance(thermalBus_1)_: ++1 flow(powerplant_gas_coal_thermalBus_1) = 0 -c_e_BusBlock_balance(thermalBus_0_2)_: -+1 flow(powerplant_gas_coal_thermalBus_0_2) +c_e_BusBlock_balance(thermalBus_2)_: ++1 flow(powerplant_gas_coal_thermalBus_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_0_0)_: --0.2 flow(powerplant_gas_coal_electricityBus_0_0) -+0.3 flow(coalBus_powerplant_gas_coal_0_0) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_0)_: ++0.3 flow(coalBus_powerplant_gas_coal_0) +-0.2 flow(powerplant_gas_coal_electricityBus_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_0_0)_: --0.58 flow(powerplant_gas_coal_electricityBus_0_0) -+0.3 flow(gasBus_powerplant_gas_coal_0_0) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_0)_: ++0.3 flow(gasBus_powerplant_gas_coal_0) +-0.58 flow(powerplant_gas_coal_electricityBus_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_0_0)_: --0.2 flow(powerplant_gas_coal_thermalBus_0_0) -+0.5 flow(coalBus_powerplant_gas_coal_0_0) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_0)_: ++0.5 flow(coalBus_powerplant_gas_coal_0) +-0.2 flow(powerplant_gas_coal_thermalBus_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_0_0)_: --0.58 flow(powerplant_gas_coal_thermalBus_0_0) -+0.5 flow(gasBus_powerplant_gas_coal_0_0) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_0)_: ++0.5 flow(gasBus_powerplant_gas_coal_0) +-0.58 flow(powerplant_gas_coal_thermalBus_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_0_1)_: --0.2 flow(powerplant_gas_coal_electricityBus_0_1) -+0.3 flow(coalBus_powerplant_gas_coal_0_1) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_1)_: ++0.3 flow(coalBus_powerplant_gas_coal_1) +-0.2 flow(powerplant_gas_coal_electricityBus_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_0_1)_: --0.58 flow(powerplant_gas_coal_electricityBus_0_1) -+0.3 flow(gasBus_powerplant_gas_coal_0_1) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_1)_: ++0.3 flow(gasBus_powerplant_gas_coal_1) +-0.58 flow(powerplant_gas_coal_electricityBus_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_0_1)_: --0.2 flow(powerplant_gas_coal_thermalBus_0_1) -+0.5 flow(coalBus_powerplant_gas_coal_0_1) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_1)_: ++0.5 flow(coalBus_powerplant_gas_coal_1) +-0.2 flow(powerplant_gas_coal_thermalBus_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_0_1)_: --0.58 flow(powerplant_gas_coal_thermalBus_0_1) -+0.5 flow(gasBus_powerplant_gas_coal_0_1) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_1)_: ++0.5 flow(gasBus_powerplant_gas_coal_1) +-0.58 flow(powerplant_gas_coal_thermalBus_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_0_2)_: --0.2 flow(powerplant_gas_coal_electricityBus_0_2) -+0.3 flow(coalBus_powerplant_gas_coal_0_2) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_2)_: ++0.3 flow(coalBus_powerplant_gas_coal_2) +-0.2 flow(powerplant_gas_coal_electricityBus_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_0_2)_: --0.58 flow(powerplant_gas_coal_electricityBus_0_2) -+0.3 flow(gasBus_powerplant_gas_coal_0_2) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_2)_: ++0.3 flow(gasBus_powerplant_gas_coal_2) +-0.58 flow(powerplant_gas_coal_electricityBus_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_0_2)_: --0.2 flow(powerplant_gas_coal_thermalBus_0_2) -+0.5 flow(coalBus_powerplant_gas_coal_0_2) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_2)_: ++0.5 flow(coalBus_powerplant_gas_coal_2) +-0.2 flow(powerplant_gas_coal_thermalBus_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_0_2)_: --0.58 flow(powerplant_gas_coal_thermalBus_0_2) -+0.5 flow(gasBus_powerplant_gas_coal_0_2) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_2)_: ++0.5 flow(gasBus_powerplant_gas_coal_2) +-0.58 flow(powerplant_gas_coal_thermalBus_2) = 0 c_e_InvestmentFlowBlock_total_rule(powerplant_gas_coal_electricityBus_0)_: @@ -126,33 +126,33 @@ c_e_InvestmentFlowBlock_total_rule(powerplant_gas_coal_electricityBus_0)_: = 0 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_0_0)_: -+1 flow(powerplant_gas_coal_electricityBus_0_0) ++1 flow(powerplant_gas_coal_electricityBus_0) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_0_1)_: -+1 flow(powerplant_gas_coal_electricityBus_0_1) ++1 flow(powerplant_gas_coal_electricityBus_1) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_0_2)_: -+1 flow(powerplant_gas_coal_electricityBus_0_2) ++1 flow(powerplant_gas_coal_electricityBus_2) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) <= 0 bounds 0 <= InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_0) <= 1000 - 0 <= flow(powerplant_gas_coal_electricityBus_0_0) <= +inf - 0 <= flow(powerplant_gas_coal_electricityBus_0_1) <= +inf - 0 <= flow(powerplant_gas_coal_electricityBus_0_2) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_0_0) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_0_1) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_0_2) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_0_0) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_0_1) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_0_2) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_0_0) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_0_1) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_0_2) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_0) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_1) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_2) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_0) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_1) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_2) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_0) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_1) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_2) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_0) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_1) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_2) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) <= +inf end diff --git a/tests/lp_files/converter_invest_multi_period.lp b/tests/lp_files/converter_invest_multi_period.lp index 35ada8c5b..2f618d1bf 100644 --- a/tests/lp_files/converter_invest_multi_period.lp +++ b/tests/lp_files/converter_invest_multi_period.lp @@ -5,235 +5,235 @@ objective: +32.94298610923851 InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_0) +21.74383477344849 InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_1) +10.764274640321037 InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_2) -+50 flow(powerplant_gas_coal_electricityBus_0_0) -+50 flow(powerplant_gas_coal_electricityBus_0_1) -+49.01960784313725 flow(powerplant_gas_coal_electricityBus_1_2) -+49.01960784313725 flow(powerplant_gas_coal_electricityBus_1_3) -+48.058439061899264 flow(powerplant_gas_coal_electricityBus_2_4) -+48.058439061899264 flow(powerplant_gas_coal_electricityBus_2_5) -+20 flow(powerplant_gas_coal_thermalBus_0_0) -+20 flow(powerplant_gas_coal_thermalBus_0_1) -+19.6078431372549 flow(powerplant_gas_coal_thermalBus_1_2) -+19.6078431372549 flow(powerplant_gas_coal_thermalBus_1_3) -+19.223375624759708 flow(powerplant_gas_coal_thermalBus_2_4) -+19.223375624759708 flow(powerplant_gas_coal_thermalBus_2_5) ++50 flow(powerplant_gas_coal_electricityBus_0) ++50 flow(powerplant_gas_coal_electricityBus_1) ++49.01960784313725 flow(powerplant_gas_coal_electricityBus_2) ++49.01960784313725 flow(powerplant_gas_coal_electricityBus_3) ++48.058439061899264 flow(powerplant_gas_coal_electricityBus_4) ++48.058439061899264 flow(powerplant_gas_coal_electricityBus_5) ++20 flow(powerplant_gas_coal_thermalBus_0) ++20 flow(powerplant_gas_coal_thermalBus_1) ++19.6078431372549 flow(powerplant_gas_coal_thermalBus_2) ++19.6078431372549 flow(powerplant_gas_coal_thermalBus_3) ++19.223375624759708 flow(powerplant_gas_coal_thermalBus_4) ++19.223375624759708 flow(powerplant_gas_coal_thermalBus_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplant_gas_coal_electricityBus_0_0) +c_e_BusBlock_balance(coalBus_0)_: ++1 flow(coalBus_powerplant_gas_coal_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplant_gas_coal_electricityBus_0_1) +c_e_BusBlock_balance(coalBus_1)_: ++1 flow(coalBus_powerplant_gas_coal_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(powerplant_gas_coal_electricityBus_1_2) +c_e_BusBlock_balance(coalBus_2)_: ++1 flow(coalBus_powerplant_gas_coal_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(powerplant_gas_coal_electricityBus_1_3) +c_e_BusBlock_balance(coalBus_3)_: ++1 flow(coalBus_powerplant_gas_coal_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(powerplant_gas_coal_electricityBus_2_4) +c_e_BusBlock_balance(coalBus_4)_: ++1 flow(coalBus_powerplant_gas_coal_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(powerplant_gas_coal_electricityBus_2_5) +c_e_BusBlock_balance(coalBus_5)_: ++1 flow(coalBus_powerplant_gas_coal_5) = 0 -c_e_BusBlock_balance(coalBus_0_0)_: -+1 flow(coalBus_powerplant_gas_coal_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(powerplant_gas_coal_electricityBus_0) = 0 -c_e_BusBlock_balance(coalBus_0_1)_: -+1 flow(coalBus_powerplant_gas_coal_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(powerplant_gas_coal_electricityBus_1) = 0 -c_e_BusBlock_balance(coalBus_1_2)_: -+1 flow(coalBus_powerplant_gas_coal_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(powerplant_gas_coal_electricityBus_2) = 0 -c_e_BusBlock_balance(coalBus_1_3)_: -+1 flow(coalBus_powerplant_gas_coal_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(powerplant_gas_coal_electricityBus_3) = 0 -c_e_BusBlock_balance(coalBus_2_4)_: -+1 flow(coalBus_powerplant_gas_coal_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(powerplant_gas_coal_electricityBus_4) = 0 -c_e_BusBlock_balance(coalBus_2_5)_: -+1 flow(coalBus_powerplant_gas_coal_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(powerplant_gas_coal_electricityBus_5) = 0 -c_e_BusBlock_balance(thermalBus_0_0)_: -+1 flow(powerplant_gas_coal_thermalBus_0_0) +c_e_BusBlock_balance(gasBus_0)_: ++1 flow(gasBus_powerplant_gas_coal_0) = 0 -c_e_BusBlock_balance(thermalBus_0_1)_: -+1 flow(powerplant_gas_coal_thermalBus_0_1) +c_e_BusBlock_balance(gasBus_1)_: ++1 flow(gasBus_powerplant_gas_coal_1) = 0 -c_e_BusBlock_balance(thermalBus_1_2)_: -+1 flow(powerplant_gas_coal_thermalBus_1_2) +c_e_BusBlock_balance(gasBus_2)_: ++1 flow(gasBus_powerplant_gas_coal_2) = 0 -c_e_BusBlock_balance(thermalBus_1_3)_: -+1 flow(powerplant_gas_coal_thermalBus_1_3) +c_e_BusBlock_balance(gasBus_3)_: ++1 flow(gasBus_powerplant_gas_coal_3) = 0 -c_e_BusBlock_balance(thermalBus_2_4)_: -+1 flow(powerplant_gas_coal_thermalBus_2_4) +c_e_BusBlock_balance(gasBus_4)_: ++1 flow(gasBus_powerplant_gas_coal_4) = 0 -c_e_BusBlock_balance(thermalBus_2_5)_: -+1 flow(powerplant_gas_coal_thermalBus_2_5) +c_e_BusBlock_balance(gasBus_5)_: ++1 flow(gasBus_powerplant_gas_coal_5) = 0 -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_powerplant_gas_coal_0_0) +c_e_BusBlock_balance(thermalBus_0)_: ++1 flow(powerplant_gas_coal_thermalBus_0) = 0 -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_powerplant_gas_coal_0_1) +c_e_BusBlock_balance(thermalBus_1)_: ++1 flow(powerplant_gas_coal_thermalBus_1) = 0 -c_e_BusBlock_balance(gasBus_1_2)_: -+1 flow(gasBus_powerplant_gas_coal_1_2) +c_e_BusBlock_balance(thermalBus_2)_: ++1 flow(powerplant_gas_coal_thermalBus_2) = 0 -c_e_BusBlock_balance(gasBus_1_3)_: -+1 flow(gasBus_powerplant_gas_coal_1_3) +c_e_BusBlock_balance(thermalBus_3)_: ++1 flow(powerplant_gas_coal_thermalBus_3) = 0 -c_e_BusBlock_balance(gasBus_2_4)_: -+1 flow(gasBus_powerplant_gas_coal_2_4) +c_e_BusBlock_balance(thermalBus_4)_: ++1 flow(powerplant_gas_coal_thermalBus_4) = 0 -c_e_BusBlock_balance(gasBus_2_5)_: -+1 flow(gasBus_powerplant_gas_coal_2_5) +c_e_BusBlock_balance(thermalBus_5)_: ++1 flow(powerplant_gas_coal_thermalBus_5) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_0_0)_: --0.2 flow(powerplant_gas_coal_electricityBus_0_0) -+0.3 flow(coalBus_powerplant_gas_coal_0_0) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_0)_: ++0.3 flow(coalBus_powerplant_gas_coal_0) +-0.2 flow(powerplant_gas_coal_electricityBus_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_0_0)_: --0.58 flow(powerplant_gas_coal_electricityBus_0_0) -+0.3 flow(gasBus_powerplant_gas_coal_0_0) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_0)_: ++0.3 flow(gasBus_powerplant_gas_coal_0) +-0.58 flow(powerplant_gas_coal_electricityBus_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_0_0)_: --0.2 flow(powerplant_gas_coal_thermalBus_0_0) -+0.5 flow(coalBus_powerplant_gas_coal_0_0) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_0)_: ++0.5 flow(coalBus_powerplant_gas_coal_0) +-0.2 flow(powerplant_gas_coal_thermalBus_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_0_0)_: --0.58 flow(powerplant_gas_coal_thermalBus_0_0) -+0.5 flow(gasBus_powerplant_gas_coal_0_0) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_0)_: ++0.5 flow(gasBus_powerplant_gas_coal_0) +-0.58 flow(powerplant_gas_coal_thermalBus_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_0_1)_: --0.2 flow(powerplant_gas_coal_electricityBus_0_1) -+0.3 flow(coalBus_powerplant_gas_coal_0_1) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_1)_: ++0.3 flow(coalBus_powerplant_gas_coal_1) +-0.2 flow(powerplant_gas_coal_electricityBus_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_0_1)_: --0.58 flow(powerplant_gas_coal_electricityBus_0_1) -+0.3 flow(gasBus_powerplant_gas_coal_0_1) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_1)_: ++0.3 flow(gasBus_powerplant_gas_coal_1) +-0.58 flow(powerplant_gas_coal_electricityBus_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_0_1)_: --0.2 flow(powerplant_gas_coal_thermalBus_0_1) -+0.5 flow(coalBus_powerplant_gas_coal_0_1) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_1)_: ++0.5 flow(coalBus_powerplant_gas_coal_1) +-0.2 flow(powerplant_gas_coal_thermalBus_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_0_1)_: --0.58 flow(powerplant_gas_coal_thermalBus_0_1) -+0.5 flow(gasBus_powerplant_gas_coal_0_1) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_1)_: ++0.5 flow(gasBus_powerplant_gas_coal_1) +-0.58 flow(powerplant_gas_coal_thermalBus_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_1_2)_: --0.2 flow(powerplant_gas_coal_electricityBus_1_2) -+0.3 flow(coalBus_powerplant_gas_coal_1_2) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_2)_: ++0.3 flow(coalBus_powerplant_gas_coal_2) +-0.2 flow(powerplant_gas_coal_electricityBus_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_1_2)_: --0.58 flow(powerplant_gas_coal_electricityBus_1_2) -+0.3 flow(gasBus_powerplant_gas_coal_1_2) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_2)_: ++0.3 flow(gasBus_powerplant_gas_coal_2) +-0.58 flow(powerplant_gas_coal_electricityBus_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_1_2)_: --0.2 flow(powerplant_gas_coal_thermalBus_1_2) -+0.5 flow(coalBus_powerplant_gas_coal_1_2) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_2)_: ++0.5 flow(coalBus_powerplant_gas_coal_2) +-0.2 flow(powerplant_gas_coal_thermalBus_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_1_2)_: --0.58 flow(powerplant_gas_coal_thermalBus_1_2) -+0.5 flow(gasBus_powerplant_gas_coal_1_2) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_2)_: ++0.5 flow(gasBus_powerplant_gas_coal_2) +-0.58 flow(powerplant_gas_coal_thermalBus_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_1_3)_: --0.2 flow(powerplant_gas_coal_electricityBus_1_3) -+0.3 flow(coalBus_powerplant_gas_coal_1_3) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_3)_: ++0.3 flow(coalBus_powerplant_gas_coal_3) +-0.2 flow(powerplant_gas_coal_electricityBus_3) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_1_3)_: --0.58 flow(powerplant_gas_coal_electricityBus_1_3) -+0.3 flow(gasBus_powerplant_gas_coal_1_3) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_3)_: ++0.3 flow(gasBus_powerplant_gas_coal_3) +-0.58 flow(powerplant_gas_coal_electricityBus_3) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_1_3)_: --0.2 flow(powerplant_gas_coal_thermalBus_1_3) -+0.5 flow(coalBus_powerplant_gas_coal_1_3) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_3)_: ++0.5 flow(coalBus_powerplant_gas_coal_3) +-0.2 flow(powerplant_gas_coal_thermalBus_3) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_1_3)_: --0.58 flow(powerplant_gas_coal_thermalBus_1_3) -+0.5 flow(gasBus_powerplant_gas_coal_1_3) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_3)_: ++0.5 flow(gasBus_powerplant_gas_coal_3) +-0.58 flow(powerplant_gas_coal_thermalBus_3) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_2_4)_: --0.2 flow(powerplant_gas_coal_electricityBus_2_4) -+0.3 flow(coalBus_powerplant_gas_coal_2_4) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_4)_: ++0.3 flow(coalBus_powerplant_gas_coal_4) +-0.2 flow(powerplant_gas_coal_electricityBus_4) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_2_4)_: --0.58 flow(powerplant_gas_coal_electricityBus_2_4) -+0.3 flow(gasBus_powerplant_gas_coal_2_4) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_4)_: ++0.3 flow(gasBus_powerplant_gas_coal_4) +-0.58 flow(powerplant_gas_coal_electricityBus_4) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_2_4)_: --0.2 flow(powerplant_gas_coal_thermalBus_2_4) -+0.5 flow(coalBus_powerplant_gas_coal_2_4) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_4)_: ++0.5 flow(coalBus_powerplant_gas_coal_4) +-0.2 flow(powerplant_gas_coal_thermalBus_4) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_2_4)_: --0.58 flow(powerplant_gas_coal_thermalBus_2_4) -+0.5 flow(gasBus_powerplant_gas_coal_2_4) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_4)_: ++0.5 flow(gasBus_powerplant_gas_coal_4) +-0.58 flow(powerplant_gas_coal_thermalBus_4) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_2_5)_: --0.2 flow(powerplant_gas_coal_electricityBus_2_5) -+0.3 flow(coalBus_powerplant_gas_coal_2_5) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_5)_: ++0.3 flow(coalBus_powerplant_gas_coal_5) +-0.2 flow(powerplant_gas_coal_electricityBus_5) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_2_5)_: --0.58 flow(powerplant_gas_coal_electricityBus_2_5) -+0.3 flow(gasBus_powerplant_gas_coal_2_5) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_5)_: ++0.3 flow(gasBus_powerplant_gas_coal_5) +-0.58 flow(powerplant_gas_coal_electricityBus_5) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_2_5)_: --0.2 flow(powerplant_gas_coal_thermalBus_2_5) -+0.5 flow(coalBus_powerplant_gas_coal_2_5) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_5)_: ++0.5 flow(coalBus_powerplant_gas_coal_5) +-0.2 flow(powerplant_gas_coal_thermalBus_5) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_2_5)_: --0.58 flow(powerplant_gas_coal_thermalBus_2_5) -+0.5 flow(gasBus_powerplant_gas_coal_2_5) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_5)_: ++0.5 flow(gasBus_powerplant_gas_coal_5) +-0.58 flow(powerplant_gas_coal_thermalBus_5) = 0 c_e_InvestmentFlowBlock_total_rule(powerplant_gas_coal_electricityBus_0)_: @@ -280,9 +280,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_coal_electricityBus_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(powerplant_gas_coal_electricityBus_0)_: ++1 InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_0) -1 InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_0) -1 InvestmentFlowBlock_old_exo(powerplant_gas_coal_electricityBus_0) -+1 InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_0) = 0 c_e_InvestmentFlowBlock_old_rule(powerplant_gas_coal_electricityBus_1)_: @@ -298,32 +298,32 @@ c_e_InvestmentFlowBlock_old_rule(powerplant_gas_coal_electricityBus_2)_: = 0 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_0_0)_: -+1 flow(powerplant_gas_coal_electricityBus_0_0) ++1 flow(powerplant_gas_coal_electricityBus_0) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_0_1)_: -+1 flow(powerplant_gas_coal_electricityBus_0_1) ++1 flow(powerplant_gas_coal_electricityBus_1) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_1_2)_: -+1 flow(powerplant_gas_coal_electricityBus_1_2) ++1 flow(powerplant_gas_coal_electricityBus_2) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_1_3)_: -+1 flow(powerplant_gas_coal_electricityBus_1_3) ++1 flow(powerplant_gas_coal_electricityBus_3) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_2_4)_: -+1 flow(powerplant_gas_coal_electricityBus_2_4) ++1 flow(powerplant_gas_coal_electricityBus_4) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_2) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_2_5)_: -+1 flow(powerplant_gas_coal_electricityBus_2_5) ++1 flow(powerplant_gas_coal_electricityBus_5) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_2) <= 0 @@ -331,34 +331,35 @@ bounds 0 <= InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_0) <= 1000 0 <= InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_1) <= 1000 0 <= InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_2) <= 1000 - 0 <= flow(powerplant_gas_coal_electricityBus_0_0) <= +inf - 0 <= flow(powerplant_gas_coal_electricityBus_0_1) <= +inf - 0 <= flow(powerplant_gas_coal_electricityBus_1_2) <= +inf - 0 <= flow(powerplant_gas_coal_electricityBus_1_3) <= +inf - 0 <= flow(powerplant_gas_coal_electricityBus_2_4) <= +inf - 0 <= flow(powerplant_gas_coal_electricityBus_2_5) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_0_0) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_0_1) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_1_2) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_1_3) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_2_4) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_2_5) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_0_0) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_0_1) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_1_2) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_1_3) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_2_4) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_2_5) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_0_0) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_0_1) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_1_2) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_1_3) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_2_4) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_2_5) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_0) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_1) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_2) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_3) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_4) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_5) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_0) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_1) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_2) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_3) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_4) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_5) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_0) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_1) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_2) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_3) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_4) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_5) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_0) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_1) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_2) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_3) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_4) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_5) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_1) <= +inf @@ -366,5 +367,4 @@ bounds 0 <= InvestmentFlowBlock_old_exo(powerplant_gas_coal_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(powerplant_gas_coal_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(powerplant_gas_coal_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_0) <= +inf end diff --git a/tests/lp_files/converter_invest_with_existing.lp b/tests/lp_files/converter_invest_with_existing.lp index b7d4e5de5..03b081632 100644 --- a/tests/lp_files/converter_invest_with_existing.lp +++ b/tests/lp_files/converter_invest_with_existing.lp @@ -3,121 +3,121 @@ min objective: +20 InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_0) -+50 flow(powerplant_gas_coal_electricityBus_0_0) -+50 flow(powerplant_gas_coal_electricityBus_0_1) -+50 flow(powerplant_gas_coal_electricityBus_0_2) -+20 flow(powerplant_gas_coal_thermalBus_0_0) -+20 flow(powerplant_gas_coal_thermalBus_0_1) -+20 flow(powerplant_gas_coal_thermalBus_0_2) ++50 flow(powerplant_gas_coal_electricityBus_0) ++50 flow(powerplant_gas_coal_electricityBus_1) ++50 flow(powerplant_gas_coal_electricityBus_2) ++20 flow(powerplant_gas_coal_thermalBus_0) ++20 flow(powerplant_gas_coal_thermalBus_1) ++20 flow(powerplant_gas_coal_thermalBus_2) s.t. -c_e_BusBlock_balance(coalBus_0_0)_: -+1 flow(coalBus_powerplant_gas_coal_0_0) +c_e_BusBlock_balance(coalBus_0)_: ++1 flow(coalBus_powerplant_gas_coal_0) = 0 -c_e_BusBlock_balance(coalBus_0_1)_: -+1 flow(coalBus_powerplant_gas_coal_0_1) +c_e_BusBlock_balance(coalBus_1)_: ++1 flow(coalBus_powerplant_gas_coal_1) = 0 -c_e_BusBlock_balance(coalBus_0_2)_: -+1 flow(coalBus_powerplant_gas_coal_0_2) +c_e_BusBlock_balance(coalBus_2)_: ++1 flow(coalBus_powerplant_gas_coal_2) = 0 -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_powerplant_gas_coal_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(powerplant_gas_coal_electricityBus_0) = 0 -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_powerplant_gas_coal_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(powerplant_gas_coal_electricityBus_1) = 0 -c_e_BusBlock_balance(gasBus_0_2)_: -+1 flow(gasBus_powerplant_gas_coal_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(powerplant_gas_coal_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplant_gas_coal_electricityBus_0_0) +c_e_BusBlock_balance(gasBus_0)_: ++1 flow(gasBus_powerplant_gas_coal_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplant_gas_coal_electricityBus_0_1) +c_e_BusBlock_balance(gasBus_1)_: ++1 flow(gasBus_powerplant_gas_coal_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(powerplant_gas_coal_electricityBus_0_2) +c_e_BusBlock_balance(gasBus_2)_: ++1 flow(gasBus_powerplant_gas_coal_2) = 0 -c_e_BusBlock_balance(thermalBus_0_0)_: -+1 flow(powerplant_gas_coal_thermalBus_0_0) +c_e_BusBlock_balance(thermalBus_0)_: ++1 flow(powerplant_gas_coal_thermalBus_0) = 0 -c_e_BusBlock_balance(thermalBus_0_1)_: -+1 flow(powerplant_gas_coal_thermalBus_0_1) +c_e_BusBlock_balance(thermalBus_1)_: ++1 flow(powerplant_gas_coal_thermalBus_1) = 0 -c_e_BusBlock_balance(thermalBus_0_2)_: -+1 flow(powerplant_gas_coal_thermalBus_0_2) +c_e_BusBlock_balance(thermalBus_2)_: ++1 flow(powerplant_gas_coal_thermalBus_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_0_0)_: --0.2 flow(powerplant_gas_coal_electricityBus_0_0) -+0.3 flow(coalBus_powerplant_gas_coal_0_0) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_0)_: ++0.3 flow(coalBus_powerplant_gas_coal_0) +-0.2 flow(powerplant_gas_coal_electricityBus_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_0_0)_: --0.58 flow(powerplant_gas_coal_electricityBus_0_0) -+0.3 flow(gasBus_powerplant_gas_coal_0_0) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_0)_: ++0.3 flow(gasBus_powerplant_gas_coal_0) +-0.58 flow(powerplant_gas_coal_electricityBus_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_0_0)_: --0.2 flow(powerplant_gas_coal_thermalBus_0_0) -+0.5 flow(coalBus_powerplant_gas_coal_0_0) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_0)_: ++0.5 flow(coalBus_powerplant_gas_coal_0) +-0.2 flow(powerplant_gas_coal_thermalBus_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_0_0)_: --0.58 flow(powerplant_gas_coal_thermalBus_0_0) -+0.5 flow(gasBus_powerplant_gas_coal_0_0) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_0)_: ++0.5 flow(gasBus_powerplant_gas_coal_0) +-0.58 flow(powerplant_gas_coal_thermalBus_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_0_1)_: --0.2 flow(powerplant_gas_coal_electricityBus_0_1) -+0.3 flow(coalBus_powerplant_gas_coal_0_1) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_1)_: ++0.3 flow(coalBus_powerplant_gas_coal_1) +-0.2 flow(powerplant_gas_coal_electricityBus_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_0_1)_: --0.58 flow(powerplant_gas_coal_electricityBus_0_1) -+0.3 flow(gasBus_powerplant_gas_coal_0_1) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_1)_: ++0.3 flow(gasBus_powerplant_gas_coal_1) +-0.58 flow(powerplant_gas_coal_electricityBus_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_0_1)_: --0.2 flow(powerplant_gas_coal_thermalBus_0_1) -+0.5 flow(coalBus_powerplant_gas_coal_0_1) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_1)_: ++0.5 flow(coalBus_powerplant_gas_coal_1) +-0.2 flow(powerplant_gas_coal_thermalBus_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_0_1)_: --0.58 flow(powerplant_gas_coal_thermalBus_0_1) -+0.5 flow(gasBus_powerplant_gas_coal_0_1) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_1)_: ++0.5 flow(gasBus_powerplant_gas_coal_1) +-0.58 flow(powerplant_gas_coal_thermalBus_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_0_2)_: --0.2 flow(powerplant_gas_coal_electricityBus_0_2) -+0.3 flow(coalBus_powerplant_gas_coal_0_2) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_2)_: ++0.3 flow(coalBus_powerplant_gas_coal_2) +-0.2 flow(powerplant_gas_coal_electricityBus_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_0_2)_: --0.58 flow(powerplant_gas_coal_electricityBus_0_2) -+0.3 flow(gasBus_powerplant_gas_coal_0_2) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_2)_: ++0.3 flow(gasBus_powerplant_gas_coal_2) +-0.58 flow(powerplant_gas_coal_electricityBus_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_0_2)_: --0.2 flow(powerplant_gas_coal_thermalBus_0_2) -+0.5 flow(coalBus_powerplant_gas_coal_0_2) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_2)_: ++0.5 flow(coalBus_powerplant_gas_coal_2) +-0.2 flow(powerplant_gas_coal_thermalBus_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_0_2)_: --0.58 flow(powerplant_gas_coal_thermalBus_0_2) -+0.5 flow(gasBus_powerplant_gas_coal_0_2) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_2)_: ++0.5 flow(gasBus_powerplant_gas_coal_2) +-0.58 flow(powerplant_gas_coal_thermalBus_2) = 0 c_e_InvestmentFlowBlock_total_rule(powerplant_gas_coal_electricityBus_0)_: @@ -126,33 +126,33 @@ c_e_InvestmentFlowBlock_total_rule(powerplant_gas_coal_electricityBus_0)_: = 200 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_0_0)_: -+1 flow(powerplant_gas_coal_electricityBus_0_0) ++1 flow(powerplant_gas_coal_electricityBus_0) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_0_1)_: -+1 flow(powerplant_gas_coal_electricityBus_0_1) ++1 flow(powerplant_gas_coal_electricityBus_1) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_0_2)_: -+1 flow(powerplant_gas_coal_electricityBus_0_2) ++1 flow(powerplant_gas_coal_electricityBus_2) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) <= 0 bounds 0 <= InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_0) <= 1000 - 0 <= flow(powerplant_gas_coal_electricityBus_0_0) <= +inf - 0 <= flow(powerplant_gas_coal_electricityBus_0_1) <= +inf - 0 <= flow(powerplant_gas_coal_electricityBus_0_2) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_0_0) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_0_1) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_0_2) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_0_0) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_0_1) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_0_2) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_0_0) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_0_1) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_0_2) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_0) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_1) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_2) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_0) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_1) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_2) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_0) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_1) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_2) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_0) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_1) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_2) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) <= +inf end diff --git a/tests/lp_files/converter_invest_with_existing_multi_period.lp b/tests/lp_files/converter_invest_with_existing_multi_period.lp index e18a16e66..1af877c80 100644 --- a/tests/lp_files/converter_invest_with_existing_multi_period.lp +++ b/tests/lp_files/converter_invest_with_existing_multi_period.lp @@ -5,235 +5,235 @@ objective: +20.0 InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_0) +19.6078431372549 InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_1) +9.706853038245011 InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_2) -+50 flow(powerplant_gas_coal_electricityBus_0_0) -+50 flow(powerplant_gas_coal_electricityBus_0_1) -+49.01960784313725 flow(powerplant_gas_coal_electricityBus_1_2) -+49.01960784313725 flow(powerplant_gas_coal_electricityBus_1_3) -+48.058439061899264 flow(powerplant_gas_coal_electricityBus_2_4) -+48.058439061899264 flow(powerplant_gas_coal_electricityBus_2_5) -+20 flow(powerplant_gas_coal_thermalBus_0_0) -+20 flow(powerplant_gas_coal_thermalBus_0_1) -+19.6078431372549 flow(powerplant_gas_coal_thermalBus_1_2) -+19.6078431372549 flow(powerplant_gas_coal_thermalBus_1_3) -+19.223375624759708 flow(powerplant_gas_coal_thermalBus_2_4) -+19.223375624759708 flow(powerplant_gas_coal_thermalBus_2_5) ++50 flow(powerplant_gas_coal_electricityBus_0) ++50 flow(powerplant_gas_coal_electricityBus_1) ++49.01960784313725 flow(powerplant_gas_coal_electricityBus_2) ++49.01960784313725 flow(powerplant_gas_coal_electricityBus_3) ++48.058439061899264 flow(powerplant_gas_coal_electricityBus_4) ++48.058439061899264 flow(powerplant_gas_coal_electricityBus_5) ++20 flow(powerplant_gas_coal_thermalBus_0) ++20 flow(powerplant_gas_coal_thermalBus_1) ++19.6078431372549 flow(powerplant_gas_coal_thermalBus_2) ++19.6078431372549 flow(powerplant_gas_coal_thermalBus_3) ++19.223375624759708 flow(powerplant_gas_coal_thermalBus_4) ++19.223375624759708 flow(powerplant_gas_coal_thermalBus_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplant_gas_coal_electricityBus_0_0) +c_e_BusBlock_balance(coalBus_0)_: ++1 flow(coalBus_powerplant_gas_coal_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplant_gas_coal_electricityBus_0_1) +c_e_BusBlock_balance(coalBus_1)_: ++1 flow(coalBus_powerplant_gas_coal_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(powerplant_gas_coal_electricityBus_1_2) +c_e_BusBlock_balance(coalBus_2)_: ++1 flow(coalBus_powerplant_gas_coal_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(powerplant_gas_coal_electricityBus_1_3) +c_e_BusBlock_balance(coalBus_3)_: ++1 flow(coalBus_powerplant_gas_coal_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(powerplant_gas_coal_electricityBus_2_4) +c_e_BusBlock_balance(coalBus_4)_: ++1 flow(coalBus_powerplant_gas_coal_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(powerplant_gas_coal_electricityBus_2_5) +c_e_BusBlock_balance(coalBus_5)_: ++1 flow(coalBus_powerplant_gas_coal_5) = 0 -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_powerplant_gas_coal_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(powerplant_gas_coal_electricityBus_0) = 0 -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_powerplant_gas_coal_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(powerplant_gas_coal_electricityBus_1) = 0 -c_e_BusBlock_balance(gasBus_1_2)_: -+1 flow(gasBus_powerplant_gas_coal_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(powerplant_gas_coal_electricityBus_2) = 0 -c_e_BusBlock_balance(gasBus_1_3)_: -+1 flow(gasBus_powerplant_gas_coal_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(powerplant_gas_coal_electricityBus_3) = 0 -c_e_BusBlock_balance(gasBus_2_4)_: -+1 flow(gasBus_powerplant_gas_coal_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(powerplant_gas_coal_electricityBus_4) = 0 -c_e_BusBlock_balance(gasBus_2_5)_: -+1 flow(gasBus_powerplant_gas_coal_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(powerplant_gas_coal_electricityBus_5) = 0 -c_e_BusBlock_balance(thermalBus_0_0)_: -+1 flow(powerplant_gas_coal_thermalBus_0_0) +c_e_BusBlock_balance(gasBus_0)_: ++1 flow(gasBus_powerplant_gas_coal_0) = 0 -c_e_BusBlock_balance(thermalBus_0_1)_: -+1 flow(powerplant_gas_coal_thermalBus_0_1) +c_e_BusBlock_balance(gasBus_1)_: ++1 flow(gasBus_powerplant_gas_coal_1) = 0 -c_e_BusBlock_balance(thermalBus_1_2)_: -+1 flow(powerplant_gas_coal_thermalBus_1_2) +c_e_BusBlock_balance(gasBus_2)_: ++1 flow(gasBus_powerplant_gas_coal_2) = 0 -c_e_BusBlock_balance(thermalBus_1_3)_: -+1 flow(powerplant_gas_coal_thermalBus_1_3) +c_e_BusBlock_balance(gasBus_3)_: ++1 flow(gasBus_powerplant_gas_coal_3) = 0 -c_e_BusBlock_balance(thermalBus_2_4)_: -+1 flow(powerplant_gas_coal_thermalBus_2_4) +c_e_BusBlock_balance(gasBus_4)_: ++1 flow(gasBus_powerplant_gas_coal_4) = 0 -c_e_BusBlock_balance(thermalBus_2_5)_: -+1 flow(powerplant_gas_coal_thermalBus_2_5) +c_e_BusBlock_balance(gasBus_5)_: ++1 flow(gasBus_powerplant_gas_coal_5) = 0 -c_e_BusBlock_balance(coalBus_0_0)_: -+1 flow(coalBus_powerplant_gas_coal_0_0) +c_e_BusBlock_balance(thermalBus_0)_: ++1 flow(powerplant_gas_coal_thermalBus_0) = 0 -c_e_BusBlock_balance(coalBus_0_1)_: -+1 flow(coalBus_powerplant_gas_coal_0_1) +c_e_BusBlock_balance(thermalBus_1)_: ++1 flow(powerplant_gas_coal_thermalBus_1) = 0 -c_e_BusBlock_balance(coalBus_1_2)_: -+1 flow(coalBus_powerplant_gas_coal_1_2) +c_e_BusBlock_balance(thermalBus_2)_: ++1 flow(powerplant_gas_coal_thermalBus_2) = 0 -c_e_BusBlock_balance(coalBus_1_3)_: -+1 flow(coalBus_powerplant_gas_coal_1_3) +c_e_BusBlock_balance(thermalBus_3)_: ++1 flow(powerplant_gas_coal_thermalBus_3) = 0 -c_e_BusBlock_balance(coalBus_2_4)_: -+1 flow(coalBus_powerplant_gas_coal_2_4) +c_e_BusBlock_balance(thermalBus_4)_: ++1 flow(powerplant_gas_coal_thermalBus_4) = 0 -c_e_BusBlock_balance(coalBus_2_5)_: -+1 flow(coalBus_powerplant_gas_coal_2_5) +c_e_BusBlock_balance(thermalBus_5)_: ++1 flow(powerplant_gas_coal_thermalBus_5) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_0_0)_: --0.58 flow(powerplant_gas_coal_electricityBus_0_0) -+0.3 flow(gasBus_powerplant_gas_coal_0_0) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_0)_: ++0.3 flow(coalBus_powerplant_gas_coal_0) +-0.2 flow(powerplant_gas_coal_electricityBus_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_0_0)_: --0.2 flow(powerplant_gas_coal_electricityBus_0_0) -+0.3 flow(coalBus_powerplant_gas_coal_0_0) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_0)_: ++0.3 flow(gasBus_powerplant_gas_coal_0) +-0.58 flow(powerplant_gas_coal_electricityBus_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_0_0)_: --0.58 flow(powerplant_gas_coal_thermalBus_0_0) -+0.5 flow(gasBus_powerplant_gas_coal_0_0) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_0)_: ++0.5 flow(coalBus_powerplant_gas_coal_0) +-0.2 flow(powerplant_gas_coal_thermalBus_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_0_0)_: --0.2 flow(powerplant_gas_coal_thermalBus_0_0) -+0.5 flow(coalBus_powerplant_gas_coal_0_0) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_0)_: ++0.5 flow(gasBus_powerplant_gas_coal_0) +-0.58 flow(powerplant_gas_coal_thermalBus_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_0_1)_: --0.58 flow(powerplant_gas_coal_electricityBus_0_1) -+0.3 flow(gasBus_powerplant_gas_coal_0_1) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_1)_: ++0.3 flow(coalBus_powerplant_gas_coal_1) +-0.2 flow(powerplant_gas_coal_electricityBus_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_0_1)_: --0.2 flow(powerplant_gas_coal_electricityBus_0_1) -+0.3 flow(coalBus_powerplant_gas_coal_0_1) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_1)_: ++0.3 flow(gasBus_powerplant_gas_coal_1) +-0.58 flow(powerplant_gas_coal_electricityBus_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_0_1)_: --0.58 flow(powerplant_gas_coal_thermalBus_0_1) -+0.5 flow(gasBus_powerplant_gas_coal_0_1) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_1)_: ++0.5 flow(coalBus_powerplant_gas_coal_1) +-0.2 flow(powerplant_gas_coal_thermalBus_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_0_1)_: --0.2 flow(powerplant_gas_coal_thermalBus_0_1) -+0.5 flow(coalBus_powerplant_gas_coal_0_1) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_1)_: ++0.5 flow(gasBus_powerplant_gas_coal_1) +-0.58 flow(powerplant_gas_coal_thermalBus_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_1_2)_: --0.58 flow(powerplant_gas_coal_electricityBus_1_2) -+0.3 flow(gasBus_powerplant_gas_coal_1_2) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_2)_: ++0.3 flow(coalBus_powerplant_gas_coal_2) +-0.2 flow(powerplant_gas_coal_electricityBus_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_1_2)_: --0.2 flow(powerplant_gas_coal_electricityBus_1_2) -+0.3 flow(coalBus_powerplant_gas_coal_1_2) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_2)_: ++0.3 flow(gasBus_powerplant_gas_coal_2) +-0.58 flow(powerplant_gas_coal_electricityBus_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_1_2)_: --0.58 flow(powerplant_gas_coal_thermalBus_1_2) -+0.5 flow(gasBus_powerplant_gas_coal_1_2) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_2)_: ++0.5 flow(coalBus_powerplant_gas_coal_2) +-0.2 flow(powerplant_gas_coal_thermalBus_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_1_2)_: --0.2 flow(powerplant_gas_coal_thermalBus_1_2) -+0.5 flow(coalBus_powerplant_gas_coal_1_2) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_2)_: ++0.5 flow(gasBus_powerplant_gas_coal_2) +-0.58 flow(powerplant_gas_coal_thermalBus_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_1_3)_: --0.58 flow(powerplant_gas_coal_electricityBus_1_3) -+0.3 flow(gasBus_powerplant_gas_coal_1_3) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_3)_: ++0.3 flow(coalBus_powerplant_gas_coal_3) +-0.2 flow(powerplant_gas_coal_electricityBus_3) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_1_3)_: --0.2 flow(powerplant_gas_coal_electricityBus_1_3) -+0.3 flow(coalBus_powerplant_gas_coal_1_3) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_3)_: ++0.3 flow(gasBus_powerplant_gas_coal_3) +-0.58 flow(powerplant_gas_coal_electricityBus_3) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_1_3)_: --0.58 flow(powerplant_gas_coal_thermalBus_1_3) -+0.5 flow(gasBus_powerplant_gas_coal_1_3) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_3)_: ++0.5 flow(coalBus_powerplant_gas_coal_3) +-0.2 flow(powerplant_gas_coal_thermalBus_3) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_1_3)_: --0.2 flow(powerplant_gas_coal_thermalBus_1_3) -+0.5 flow(coalBus_powerplant_gas_coal_1_3) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_3)_: ++0.5 flow(gasBus_powerplant_gas_coal_3) +-0.58 flow(powerplant_gas_coal_thermalBus_3) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_2_4)_: --0.58 flow(powerplant_gas_coal_electricityBus_2_4) -+0.3 flow(gasBus_powerplant_gas_coal_2_4) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_4)_: ++0.3 flow(coalBus_powerplant_gas_coal_4) +-0.2 flow(powerplant_gas_coal_electricityBus_4) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_2_4)_: --0.2 flow(powerplant_gas_coal_electricityBus_2_4) -+0.3 flow(coalBus_powerplant_gas_coal_2_4) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_4)_: ++0.3 flow(gasBus_powerplant_gas_coal_4) +-0.58 flow(powerplant_gas_coal_electricityBus_4) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_2_4)_: --0.58 flow(powerplant_gas_coal_thermalBus_2_4) -+0.5 flow(gasBus_powerplant_gas_coal_2_4) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_4)_: ++0.5 flow(coalBus_powerplant_gas_coal_4) +-0.2 flow(powerplant_gas_coal_thermalBus_4) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_2_4)_: --0.2 flow(powerplant_gas_coal_thermalBus_2_4) -+0.5 flow(coalBus_powerplant_gas_coal_2_4) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_4)_: ++0.5 flow(gasBus_powerplant_gas_coal_4) +-0.58 flow(powerplant_gas_coal_thermalBus_4) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_2_5)_: --0.58 flow(powerplant_gas_coal_electricityBus_2_5) -+0.3 flow(gasBus_powerplant_gas_coal_2_5) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_5)_: ++0.3 flow(coalBus_powerplant_gas_coal_5) +-0.2 flow(powerplant_gas_coal_electricityBus_5) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_electricityBus_2_5)_: --0.2 flow(powerplant_gas_coal_electricityBus_2_5) -+0.3 flow(coalBus_powerplant_gas_coal_2_5) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_electricityBus_5)_: ++0.3 flow(gasBus_powerplant_gas_coal_5) +-0.58 flow(powerplant_gas_coal_electricityBus_5) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_2_5)_: --0.58 flow(powerplant_gas_coal_thermalBus_2_5) -+0.5 flow(gasBus_powerplant_gas_coal_2_5) +c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_5)_: ++0.5 flow(coalBus_powerplant_gas_coal_5) +-0.2 flow(powerplant_gas_coal_thermalBus_5) = 0 -c_e_ConverterBlock_relation(powerplant_gas_coal_coalBus_thermalBus_2_5)_: --0.2 flow(powerplant_gas_coal_thermalBus_2_5) -+0.5 flow(coalBus_powerplant_gas_coal_2_5) +c_e_ConverterBlock_relation(powerplant_gas_coal_gasBus_thermalBus_5)_: ++0.5 flow(gasBus_powerplant_gas_coal_5) +-0.58 flow(powerplant_gas_coal_thermalBus_5) = 0 c_e_InvestmentFlowBlock_total_rule(powerplant_gas_coal_electricityBus_0)_: @@ -281,9 +281,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_coal_electricityBus_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(powerplant_gas_coal_electricityBus_0)_: ++1 InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_0) -1 InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_0) -1 InvestmentFlowBlock_old_exo(powerplant_gas_coal_electricityBus_0) -+1 InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_0) = 0 c_e_InvestmentFlowBlock_old_rule(powerplant_gas_coal_electricityBus_1)_: @@ -299,32 +299,32 @@ c_e_InvestmentFlowBlock_old_rule(powerplant_gas_coal_electricityBus_2)_: = 0 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_0_0)_: -+1 flow(powerplant_gas_coal_electricityBus_0_0) ++1 flow(powerplant_gas_coal_electricityBus_0) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_0_1)_: -+1 flow(powerplant_gas_coal_electricityBus_0_1) ++1 flow(powerplant_gas_coal_electricityBus_1) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_1_2)_: -+1 flow(powerplant_gas_coal_electricityBus_1_2) ++1 flow(powerplant_gas_coal_electricityBus_2) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_1_3)_: -+1 flow(powerplant_gas_coal_electricityBus_1_3) ++1 flow(powerplant_gas_coal_electricityBus_3) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_2_4)_: -+1 flow(powerplant_gas_coal_electricityBus_2_4) ++1 flow(powerplant_gas_coal_electricityBus_4) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_2) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_coal_electricityBus_2_5)_: -+1 flow(powerplant_gas_coal_electricityBus_2_5) ++1 flow(powerplant_gas_coal_electricityBus_5) -1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_2) <= 0 @@ -332,34 +332,35 @@ bounds 0 <= InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_0) <= 1000 0 <= InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_1) <= 1000 0 <= InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_2) <= 1000 - 0 <= flow(powerplant_gas_coal_electricityBus_0_0) <= +inf - 0 <= flow(powerplant_gas_coal_electricityBus_0_1) <= +inf - 0 <= flow(powerplant_gas_coal_electricityBus_1_2) <= +inf - 0 <= flow(powerplant_gas_coal_electricityBus_1_3) <= +inf - 0 <= flow(powerplant_gas_coal_electricityBus_2_4) <= +inf - 0 <= flow(powerplant_gas_coal_electricityBus_2_5) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_0_0) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_0_1) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_1_2) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_1_3) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_2_4) <= +inf - 0 <= flow(powerplant_gas_coal_thermalBus_2_5) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_0_0) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_0_1) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_1_2) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_1_3) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_2_4) <= +inf - 0 <= flow(gasBus_powerplant_gas_coal_2_5) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_0_0) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_0_1) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_1_2) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_1_3) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_2_4) <= +inf - 0 <= flow(coalBus_powerplant_gas_coal_2_5) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_0) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_1) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_2) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_3) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_4) <= +inf + 0 <= flow(gasBus_powerplant_gas_coal_5) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_0) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_1) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_2) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_3) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_4) <= +inf + 0 <= flow(coalBus_powerplant_gas_coal_5) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_0) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_1) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_2) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_3) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_4) <= +inf + 0 <= flow(powerplant_gas_coal_electricityBus_5) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_0) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_1) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_2) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_3) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_4) <= +inf + 0 <= flow(powerplant_gas_coal_thermalBus_5) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_1) <= +inf @@ -367,5 +368,4 @@ bounds 0 <= InvestmentFlowBlock_old_exo(powerplant_gas_coal_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(powerplant_gas_coal_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(powerplant_gas_coal_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_0) <= +inf end diff --git a/tests/lp_files/converter_multi_period.lp b/tests/lp_files/converter_multi_period.lp index 0a63e9490..d9be36e15 100644 --- a/tests/lp_files/converter_multi_period.lp +++ b/tests/lp_files/converter_multi_period.lp @@ -2,260 +2,260 @@ min objective: -+50 flow(powerplantGasBiomass_electricityBus_0_0) -+50 flow(powerplantGasBiomass_electricityBus_0_1) -+49.01960784313725 flow(powerplantGasBiomass_electricityBus_1_2) -+49.01960784313725 flow(powerplantGasBiomass_electricityBus_1_3) -+48.058439061899264 flow(powerplantGasBiomass_electricityBus_2_4) -+48.058439061899264 flow(powerplantGasBiomass_electricityBus_2_5) -+20 flow(powerplantGasBiomass_thermalBus_0_0) -+20 flow(powerplantGasBiomass_thermalBus_0_1) -+19.6078431372549 flow(powerplantGasBiomass_thermalBus_1_2) -+19.6078431372549 flow(powerplantGasBiomass_thermalBus_1_3) -+19.223375624759708 flow(powerplantGasBiomass_thermalBus_2_4) -+19.223375624759708 flow(powerplantGasBiomass_thermalBus_2_5) ++50 flow(powerplantGasBiomass_electricityBus_0) ++50 flow(powerplantGasBiomass_electricityBus_1) ++49.01960784313725 flow(powerplantGasBiomass_electricityBus_2) ++49.01960784313725 flow(powerplantGasBiomass_electricityBus_3) ++48.058439061899264 flow(powerplantGasBiomass_electricityBus_4) ++48.058439061899264 flow(powerplantGasBiomass_electricityBus_5) ++20 flow(powerplantGasBiomass_thermalBus_0) ++20 flow(powerplantGasBiomass_thermalBus_1) ++19.6078431372549 flow(powerplantGasBiomass_thermalBus_2) ++19.6078431372549 flow(powerplantGasBiomass_thermalBus_3) ++19.223375624759708 flow(powerplantGasBiomass_thermalBus_4) ++19.223375624759708 flow(powerplantGasBiomass_thermalBus_5) s.t. -c_e_BusBlock_balance(biomassBus_0_0)_: -+1 flow(biomassBus_powerplantGasBiomass_0_0) +c_e_BusBlock_balance(biomassBus_0)_: ++1 flow(biomassBus_powerplantGasBiomass_0) = 0 -c_e_BusBlock_balance(biomassBus_0_1)_: -+1 flow(biomassBus_powerplantGasBiomass_0_1) +c_e_BusBlock_balance(biomassBus_1)_: ++1 flow(biomassBus_powerplantGasBiomass_1) = 0 -c_e_BusBlock_balance(biomassBus_1_2)_: -+1 flow(biomassBus_powerplantGasBiomass_1_2) +c_e_BusBlock_balance(biomassBus_2)_: ++1 flow(biomassBus_powerplantGasBiomass_2) = 0 -c_e_BusBlock_balance(biomassBus_1_3)_: -+1 flow(biomassBus_powerplantGasBiomass_1_3) +c_e_BusBlock_balance(biomassBus_3)_: ++1 flow(biomassBus_powerplantGasBiomass_3) = 0 -c_e_BusBlock_balance(biomassBus_2_4)_: -+1 flow(biomassBus_powerplantGasBiomass_2_4) +c_e_BusBlock_balance(biomassBus_4)_: ++1 flow(biomassBus_powerplantGasBiomass_4) = 0 -c_e_BusBlock_balance(biomassBus_2_5)_: -+1 flow(biomassBus_powerplantGasBiomass_2_5) +c_e_BusBlock_balance(biomassBus_5)_: ++1 flow(biomassBus_powerplantGasBiomass_5) = 0 -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplantGasBiomass_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(powerplantGasBiomass_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplantGasBiomass_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(powerplantGasBiomass_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(powerplantGasBiomass_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(powerplantGasBiomass_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(powerplantGasBiomass_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(powerplantGasBiomass_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(powerplantGasBiomass_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(powerplantGasBiomass_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(powerplantGasBiomass_electricityBus_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(powerplantGasBiomass_electricityBus_5) = 0 -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_powerplantGasBiomass_0_0) +c_e_BusBlock_balance(gasBus_0)_: ++1 flow(gasBus_powerplantGasBiomass_0) = 0 -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_powerplantGasBiomass_0_1) +c_e_BusBlock_balance(gasBus_1)_: ++1 flow(gasBus_powerplantGasBiomass_1) = 0 -c_e_BusBlock_balance(gasBus_1_2)_: -+1 flow(gasBus_powerplantGasBiomass_1_2) +c_e_BusBlock_balance(gasBus_2)_: ++1 flow(gasBus_powerplantGasBiomass_2) = 0 -c_e_BusBlock_balance(gasBus_1_3)_: -+1 flow(gasBus_powerplantGasBiomass_1_3) +c_e_BusBlock_balance(gasBus_3)_: ++1 flow(gasBus_powerplantGasBiomass_3) = 0 -c_e_BusBlock_balance(gasBus_2_4)_: -+1 flow(gasBus_powerplantGasBiomass_2_4) +c_e_BusBlock_balance(gasBus_4)_: ++1 flow(gasBus_powerplantGasBiomass_4) = 0 -c_e_BusBlock_balance(gasBus_2_5)_: -+1 flow(gasBus_powerplantGasBiomass_2_5) +c_e_BusBlock_balance(gasBus_5)_: ++1 flow(gasBus_powerplantGasBiomass_5) = 0 -c_e_BusBlock_balance(thermalBus_0_0)_: -+1 flow(powerplantGasBiomass_thermalBus_0_0) +c_e_BusBlock_balance(thermalBus_0)_: ++1 flow(powerplantGasBiomass_thermalBus_0) = 0 -c_e_BusBlock_balance(thermalBus_0_1)_: -+1 flow(powerplantGasBiomass_thermalBus_0_1) +c_e_BusBlock_balance(thermalBus_1)_: ++1 flow(powerplantGasBiomass_thermalBus_1) = 0 -c_e_BusBlock_balance(thermalBus_1_2)_: -+1 flow(powerplantGasBiomass_thermalBus_1_2) +c_e_BusBlock_balance(thermalBus_2)_: ++1 flow(powerplantGasBiomass_thermalBus_2) = 0 -c_e_BusBlock_balance(thermalBus_1_3)_: -+1 flow(powerplantGasBiomass_thermalBus_1_3) +c_e_BusBlock_balance(thermalBus_3)_: ++1 flow(powerplantGasBiomass_thermalBus_3) = 0 -c_e_BusBlock_balance(thermalBus_2_4)_: -+1 flow(powerplantGasBiomass_thermalBus_2_4) +c_e_BusBlock_balance(thermalBus_4)_: ++1 flow(powerplantGasBiomass_thermalBus_4) = 0 -c_e_BusBlock_balance(thermalBus_2_5)_: -+1 flow(powerplantGasBiomass_thermalBus_2_5) +c_e_BusBlock_balance(thermalBus_5)_: ++1 flow(powerplantGasBiomass_thermalBus_5) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_0_0)_: --0.1 flow(powerplantGasBiomass_electricityBus_0_0) -+0.3 flow(biomassBus_powerplantGasBiomass_0_0) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_0)_: ++0.3 flow(gasBus_powerplantGasBiomass_0) +-0.4 flow(powerplantGasBiomass_electricityBus_0) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_0_0)_: --0.4 flow(powerplantGasBiomass_electricityBus_0_0) -+0.3 flow(gasBus_powerplantGasBiomass_0_0) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_0)_: ++0.3 flow(biomassBus_powerplantGasBiomass_0) +-0.1 flow(powerplantGasBiomass_electricityBus_0) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_0_0)_: --0.1 flow(powerplantGasBiomass_thermalBus_0_0) -+0.5 flow(biomassBus_powerplantGasBiomass_0_0) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_0)_: ++0.5 flow(gasBus_powerplantGasBiomass_0) +-0.4 flow(powerplantGasBiomass_thermalBus_0) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_0_0)_: --0.4 flow(powerplantGasBiomass_thermalBus_0_0) -+0.5 flow(gasBus_powerplantGasBiomass_0_0) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_0)_: ++0.5 flow(biomassBus_powerplantGasBiomass_0) +-0.1 flow(powerplantGasBiomass_thermalBus_0) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_0_1)_: --0.1 flow(powerplantGasBiomass_electricityBus_0_1) -+0.3 flow(biomassBus_powerplantGasBiomass_0_1) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_1)_: ++0.3 flow(gasBus_powerplantGasBiomass_1) +-0.4 flow(powerplantGasBiomass_electricityBus_1) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_0_1)_: --0.4 flow(powerplantGasBiomass_electricityBus_0_1) -+0.3 flow(gasBus_powerplantGasBiomass_0_1) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_1)_: ++0.3 flow(biomassBus_powerplantGasBiomass_1) +-0.1 flow(powerplantGasBiomass_electricityBus_1) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_0_1)_: --0.1 flow(powerplantGasBiomass_thermalBus_0_1) -+0.5 flow(biomassBus_powerplantGasBiomass_0_1) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_1)_: ++0.5 flow(gasBus_powerplantGasBiomass_1) +-0.4 flow(powerplantGasBiomass_thermalBus_1) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_0_1)_: --0.4 flow(powerplantGasBiomass_thermalBus_0_1) -+0.5 flow(gasBus_powerplantGasBiomass_0_1) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_1)_: ++0.5 flow(biomassBus_powerplantGasBiomass_1) +-0.1 flow(powerplantGasBiomass_thermalBus_1) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_1_2)_: --0.1 flow(powerplantGasBiomass_electricityBus_1_2) -+0.3 flow(biomassBus_powerplantGasBiomass_1_2) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_2)_: ++0.3 flow(gasBus_powerplantGasBiomass_2) +-0.4 flow(powerplantGasBiomass_electricityBus_2) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_1_2)_: --0.4 flow(powerplantGasBiomass_electricityBus_1_2) -+0.3 flow(gasBus_powerplantGasBiomass_1_2) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_2)_: ++0.3 flow(biomassBus_powerplantGasBiomass_2) +-0.1 flow(powerplantGasBiomass_electricityBus_2) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_1_2)_: --0.1 flow(powerplantGasBiomass_thermalBus_1_2) -+0.5 flow(biomassBus_powerplantGasBiomass_1_2) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_2)_: ++0.5 flow(gasBus_powerplantGasBiomass_2) +-0.4 flow(powerplantGasBiomass_thermalBus_2) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_1_2)_: --0.4 flow(powerplantGasBiomass_thermalBus_1_2) -+0.5 flow(gasBus_powerplantGasBiomass_1_2) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_2)_: ++0.5 flow(biomassBus_powerplantGasBiomass_2) +-0.1 flow(powerplantGasBiomass_thermalBus_2) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_1_3)_: --0.1 flow(powerplantGasBiomass_electricityBus_1_3) -+0.3 flow(biomassBus_powerplantGasBiomass_1_3) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_3)_: ++0.3 flow(gasBus_powerplantGasBiomass_3) +-0.4 flow(powerplantGasBiomass_electricityBus_3) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_1_3)_: --0.4 flow(powerplantGasBiomass_electricityBus_1_3) -+0.3 flow(gasBus_powerplantGasBiomass_1_3) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_3)_: ++0.3 flow(biomassBus_powerplantGasBiomass_3) +-0.1 flow(powerplantGasBiomass_electricityBus_3) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_1_3)_: --0.1 flow(powerplantGasBiomass_thermalBus_1_3) -+0.5 flow(biomassBus_powerplantGasBiomass_1_3) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_3)_: ++0.5 flow(gasBus_powerplantGasBiomass_3) +-0.4 flow(powerplantGasBiomass_thermalBus_3) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_1_3)_: --0.4 flow(powerplantGasBiomass_thermalBus_1_3) -+0.5 flow(gasBus_powerplantGasBiomass_1_3) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_3)_: ++0.5 flow(biomassBus_powerplantGasBiomass_3) +-0.1 flow(powerplantGasBiomass_thermalBus_3) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_2_4)_: --0.1 flow(powerplantGasBiomass_electricityBus_2_4) -+0.3 flow(biomassBus_powerplantGasBiomass_2_4) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_4)_: ++0.3 flow(gasBus_powerplantGasBiomass_4) +-0.4 flow(powerplantGasBiomass_electricityBus_4) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_2_4)_: --0.4 flow(powerplantGasBiomass_electricityBus_2_4) -+0.3 flow(gasBus_powerplantGasBiomass_2_4) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_4)_: ++0.3 flow(biomassBus_powerplantGasBiomass_4) +-0.1 flow(powerplantGasBiomass_electricityBus_4) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_2_4)_: --0.1 flow(powerplantGasBiomass_thermalBus_2_4) -+0.5 flow(biomassBus_powerplantGasBiomass_2_4) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_4)_: ++0.5 flow(gasBus_powerplantGasBiomass_4) +-0.4 flow(powerplantGasBiomass_thermalBus_4) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_2_4)_: --0.4 flow(powerplantGasBiomass_thermalBus_2_4) -+0.5 flow(gasBus_powerplantGasBiomass_2_4) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_4)_: ++0.5 flow(biomassBus_powerplantGasBiomass_4) +-0.1 flow(powerplantGasBiomass_thermalBus_4) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_2_5)_: --0.1 flow(powerplantGasBiomass_electricityBus_2_5) -+0.3 flow(biomassBus_powerplantGasBiomass_2_5) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_5)_: ++0.3 flow(gasBus_powerplantGasBiomass_5) +-0.4 flow(powerplantGasBiomass_electricityBus_5) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_2_5)_: --0.4 flow(powerplantGasBiomass_electricityBus_2_5) -+0.3 flow(gasBus_powerplantGasBiomass_2_5) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_electricityBus_5)_: ++0.3 flow(biomassBus_powerplantGasBiomass_5) +-0.1 flow(powerplantGasBiomass_electricityBus_5) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_2_5)_: --0.1 flow(powerplantGasBiomass_thermalBus_2_5) -+0.5 flow(biomassBus_powerplantGasBiomass_2_5) +c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_5)_: ++0.5 flow(gasBus_powerplantGasBiomass_5) +-0.4 flow(powerplantGasBiomass_thermalBus_5) = 0 -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_2_5)_: --0.4 flow(powerplantGasBiomass_thermalBus_2_5) -+0.5 flow(gasBus_powerplantGasBiomass_2_5) +c_e_ConverterBlock_relation(powerplantGasBiomass_biomassBus_thermalBus_5)_: ++0.5 flow(biomassBus_powerplantGasBiomass_5) +-0.1 flow(powerplantGasBiomass_thermalBus_5) = 0 bounds - 0 <= flow(powerplantGasBiomass_electricityBus_0_0) <= +inf - 0 <= flow(powerplantGasBiomass_electricityBus_0_1) <= +inf - 0 <= flow(powerplantGasBiomass_electricityBus_1_2) <= +inf - 0 <= flow(powerplantGasBiomass_electricityBus_1_3) <= +inf - 0 <= flow(powerplantGasBiomass_electricityBus_2_4) <= +inf - 0 <= flow(powerplantGasBiomass_electricityBus_2_5) <= +inf - 0.0 <= flow(powerplantGasBiomass_thermalBus_0_0) <= 50000000000.0 - 0.0 <= flow(powerplantGasBiomass_thermalBus_0_1) <= 50000000000.0 - 0.0 <= flow(powerplantGasBiomass_thermalBus_1_2) <= 50000000000.0 - 0.0 <= flow(powerplantGasBiomass_thermalBus_1_3) <= 50000000000.0 - 0.0 <= flow(powerplantGasBiomass_thermalBus_2_4) <= 50000000000.0 - 0.0 <= flow(powerplantGasBiomass_thermalBus_2_5) <= 50000000000.0 - 0 <= flow(biomassBus_powerplantGasBiomass_0_0) <= +inf - 0 <= flow(biomassBus_powerplantGasBiomass_0_1) <= +inf - 0 <= flow(biomassBus_powerplantGasBiomass_1_2) <= +inf - 0 <= flow(biomassBus_powerplantGasBiomass_1_3) <= +inf - 0 <= flow(biomassBus_powerplantGasBiomass_2_4) <= +inf - 0 <= flow(biomassBus_powerplantGasBiomass_2_5) <= +inf - 0 <= flow(gasBus_powerplantGasBiomass_0_0) <= +inf - 0 <= flow(gasBus_powerplantGasBiomass_0_1) <= +inf - 0 <= flow(gasBus_powerplantGasBiomass_1_2) <= +inf - 0 <= flow(gasBus_powerplantGasBiomass_1_3) <= +inf - 0 <= flow(gasBus_powerplantGasBiomass_2_4) <= +inf - 0 <= flow(gasBus_powerplantGasBiomass_2_5) <= +inf + 0 <= flow(gasBus_powerplantGasBiomass_0) <= +inf + 0 <= flow(gasBus_powerplantGasBiomass_1) <= +inf + 0 <= flow(gasBus_powerplantGasBiomass_2) <= +inf + 0 <= flow(gasBus_powerplantGasBiomass_3) <= +inf + 0 <= flow(gasBus_powerplantGasBiomass_4) <= +inf + 0 <= flow(gasBus_powerplantGasBiomass_5) <= +inf + 0 <= flow(biomassBus_powerplantGasBiomass_0) <= +inf + 0 <= flow(biomassBus_powerplantGasBiomass_1) <= +inf + 0 <= flow(biomassBus_powerplantGasBiomass_2) <= +inf + 0 <= flow(biomassBus_powerplantGasBiomass_3) <= +inf + 0 <= flow(biomassBus_powerplantGasBiomass_4) <= +inf + 0 <= flow(biomassBus_powerplantGasBiomass_5) <= +inf + 0 <= flow(powerplantGasBiomass_electricityBus_0) <= +inf + 0 <= flow(powerplantGasBiomass_electricityBus_1) <= +inf + 0 <= flow(powerplantGasBiomass_electricityBus_2) <= +inf + 0 <= flow(powerplantGasBiomass_electricityBus_3) <= +inf + 0 <= flow(powerplantGasBiomass_electricityBus_4) <= +inf + 0 <= flow(powerplantGasBiomass_electricityBus_5) <= +inf + 0.0 <= flow(powerplantGasBiomass_thermalBus_0) <= 50000000000.0 + 0.0 <= flow(powerplantGasBiomass_thermalBus_1) <= 50000000000.0 + 0.0 <= flow(powerplantGasBiomass_thermalBus_2) <= 50000000000.0 + 0.0 <= flow(powerplantGasBiomass_thermalBus_3) <= 50000000000.0 + 0.0 <= flow(powerplantGasBiomass_thermalBus_4) <= 50000000000.0 + 0.0 <= flow(powerplantGasBiomass_thermalBus_5) <= 50000000000.0 end diff --git a/tests/lp_files/dsm_module_DIW.lp b/tests/lp_files/dsm_module_DIW.lp index 337238871..e3d5eec30 100644 --- a/tests/lp_files/dsm_module_DIW.lp +++ b/tests/lp_files/dsm_module_DIW.lp @@ -3,27 +3,27 @@ min objective: +2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) -+2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) -+2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_0) +2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) -+2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) -+2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) +2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_2) ++2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) ++2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) +2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) ++2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_0) ++2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) +2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 c_e_SinkDSMDIWBlock_shift_shed_vars(demand_dsm_0)_: @@ -41,26 +41,26 @@ c_e_SinkDSMDIWBlock_shift_shed_vars(demand_dsm_2)_: c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_0_0)_: +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) -+1 flow(bus_elec_demand_dsm_0_0) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) -1 SinkDSMDIWBlock_dsm_up(demand_dsm_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_0_1)_: +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) -+1 flow(bus_elec_demand_dsm_0_1) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) -1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) ++1 flow(bus_elec_demand_dsm_1) = 1 c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_0_2)_: +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) -+1 flow(bus_elec_demand_dsm_0_2) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) -1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) ++1 flow(bus_elec_demand_dsm_2) = 1 c_e_SinkDSMDIWBlock_dsm_updo_constraint(demand_dsm_0)_: @@ -137,21 +137,21 @@ c_u_SinkDSMDIWBlock_C2_constraint(demand_dsm_2)_: bounds 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_0) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_2) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_2) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) <= +inf 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_0) <= +inf 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_1) <= +inf 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf end diff --git a/tests/lp_files/dsm_module_DIW_extended.lp b/tests/lp_files/dsm_module_DIW_extended.lp index 92ce70c7e..88cfa3bb1 100644 --- a/tests/lp_files/dsm_module_DIW_extended.lp +++ b/tests/lp_files/dsm_module_DIW_extended.lp @@ -3,33 +3,33 @@ min objective: +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) ++1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) ++1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_2) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) ++1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) ++1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) +100 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) ++100 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) ++100 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) +1 SinkDSMDIWBlock_dsm_up(demand_dsm_0) +1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) -+100 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) +1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_2) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) -+100 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_0_0)_: @@ -37,43 +37,43 @@ c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_0_0)_: +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) -1 SinkDSMDIWBlock_dsm_up(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_0_1)_: --1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_1) +-1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) ++1 flow(bus_elec_demand_dsm_1) = 0.9 c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_0_2)_: --1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_0_2) +-1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) ++1 flow(bus_elec_demand_dsm_2) = 0.8 c_e_SinkDSMDIWBlock_dsm_updo_constraint(demand_dsm_0)_: -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) -+0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_0) -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) ++0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_0) = 0 c_e_SinkDSMDIWBlock_dsm_updo_constraint(demand_dsm_1)_: -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) -+0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_1) -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) ++0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_1) = 0 c_e_SinkDSMDIWBlock_dsm_updo_constraint(demand_dsm_2)_: -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) -+0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_2) -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) ++0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_2) = 0 c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_0)_: @@ -115,18 +115,18 @@ c_u_SinkDSMDIWBlock_C2_constraint(demand_dsm_0)_: <= 0.5 c_u_SinkDSMDIWBlock_C2_constraint(demand_dsm_1)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) ++1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) <= 0.4 c_u_SinkDSMDIWBlock_C2_constraint(demand_dsm_2)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) ++1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) <= 0.5 c_u_SinkDSMDIWBlock_recovery_constraint(demand_dsm_0)_: @@ -159,21 +159,21 @@ c_u_SinkDSMDIWBlock_shed_limit_constraint(demand_dsm_2)_: bounds 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_2) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) <= +inf 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_0) <= +inf 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_2) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_2) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf end diff --git a/tests/lp_files/dsm_module_DIW_extended_multi_period.lp b/tests/lp_files/dsm_module_DIW_extended_multi_period.lp index e247e622e..80272cd99 100644 --- a/tests/lp_files/dsm_module_DIW_extended_multi_period.lp +++ b/tests/lp_files/dsm_module_DIW_extended_multi_period.lp @@ -3,78 +3,78 @@ min objective: +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) ++1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) ++0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_2) ++0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_3) ++0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_4) ++0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_5) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) ++1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) ++0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) ++0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_3) ++0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_4) ++0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_5) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) ++0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) ++0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_3) ++0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_4) ++0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_5) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_0) ++1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_1) ++0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_2) ++0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_3) ++0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_4) ++0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_5) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_0) ++1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_1) ++0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_2) ++0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_3) ++0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_4) ++0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_5) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_0) ++1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_1) ++0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_2) ++0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_3) ++0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_4) ++0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_5) +100 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) ++100 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) ++98.0392156862745 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) ++98.0392156862745 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_3) ++96.11687812379853 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_4) ++96.11687812379853 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_5) +1 SinkDSMDIWBlock_dsm_up(demand_dsm_0) +1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_1) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_1) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_1) -+100 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) +0.9803921568627451 SinkDSMDIWBlock_dsm_up(demand_dsm_2) -+0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_2) -+0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) -+0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) -+0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_2) -+0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_2) -+0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_2) -+98.0392156862745 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) +0.9803921568627451 SinkDSMDIWBlock_dsm_up(demand_dsm_3) -+0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_3) -+0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_3) -+0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_3) -+0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_3) -+0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_3) -+0.9803921568627451 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_3) -+98.0392156862745 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_3) +0.9611687812379853 SinkDSMDIWBlock_dsm_up(demand_dsm_4) -+0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_4) -+0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_4) -+0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_4) -+0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_4) -+0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_4) -+0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_4) -+96.11687812379853 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_4) +0.9611687812379853 SinkDSMDIWBlock_dsm_up(demand_dsm_5) -+0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_5) -+0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_5) -+0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_5) -+0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_5) -+0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_5) -+0.9611687812379853 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_5) -+96.11687812379853 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_5) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) +c_e_BusBlock_balance(bus_elec_3)_: ++1 flow(bus_elec_demand_dsm_3) = 0 -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) +c_e_BusBlock_balance(bus_elec_4)_: ++1 flow(bus_elec_demand_dsm_4) = 0 -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) +c_e_BusBlock_balance(bus_elec_5)_: ++1 flow(bus_elec_demand_dsm_5) = 0 c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_0_0)_: @@ -82,91 +82,91 @@ c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_0_0)_: +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) -1 SinkDSMDIWBlock_dsm_up(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_0_1)_: --1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_1) +-1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) ++1 flow(bus_elec_demand_dsm_1) = 0.9 c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_1_2)_: --1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_2) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_1_2) +-1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) ++1 flow(bus_elec_demand_dsm_2) = 0.8 c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_1_3)_: --1 SinkDSMDIWBlock_dsm_up(demand_dsm_3) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_3) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_3) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_3) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_3) -+1 flow(bus_elec_demand_dsm_1_3) +-1 SinkDSMDIWBlock_dsm_up(demand_dsm_3) ++1 flow(bus_elec_demand_dsm_3) = 0.7 c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_2_4)_: --1 SinkDSMDIWBlock_dsm_up(demand_dsm_4) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_4) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_4) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_4) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_4) -+1 flow(bus_elec_demand_dsm_2_4) +-1 SinkDSMDIWBlock_dsm_up(demand_dsm_4) ++1 flow(bus_elec_demand_dsm_4) = 0.7 c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_2_5)_: --1 SinkDSMDIWBlock_dsm_up(demand_dsm_5) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_5) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_5) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_5) -+1 flow(bus_elec_demand_dsm_2_5) +-1 SinkDSMDIWBlock_dsm_up(demand_dsm_5) ++1 flow(bus_elec_demand_dsm_5) = 0.7 c_e_SinkDSMDIWBlock_dsm_updo_constraint(demand_dsm_0)_: -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) -+0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_0) -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) ++0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_0) = 0 c_e_SinkDSMDIWBlock_dsm_updo_constraint(demand_dsm_1)_: -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) -+0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_1) -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) ++0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_1) = 0 c_e_SinkDSMDIWBlock_dsm_updo_constraint(demand_dsm_2)_: -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) -+0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_2) -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_3) ++0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_2) = 0 c_e_SinkDSMDIWBlock_dsm_updo_constraint(demand_dsm_3)_: -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_2) -+0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_3) -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_3) -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_4) ++0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_3) = 0 c_e_SinkDSMDIWBlock_dsm_updo_constraint(demand_dsm_4)_: -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_3) -+0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_4) -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_4) -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_5) ++0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_4) = 0 c_e_SinkDSMDIWBlock_dsm_updo_constraint(demand_dsm_5)_: -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_4) -+0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_5) -1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_5) ++0.99 SinkDSMDIWBlock_dsm_up(demand_dsm_5) = 0 c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_0)_: @@ -241,42 +241,42 @@ c_u_SinkDSMDIWBlock_C2_constraint(demand_dsm_0)_: <= 0.5 c_u_SinkDSMDIWBlock_C2_constraint(demand_dsm_1)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) ++1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) <= 0.4 c_u_SinkDSMDIWBlock_C2_constraint(demand_dsm_2)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_2) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) ++1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) <= 0.5 c_u_SinkDSMDIWBlock_C2_constraint(demand_dsm_3)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_3) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_3) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_3) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_3) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_3) ++1 SinkDSMDIWBlock_dsm_up(demand_dsm_3) <= 0.3 c_u_SinkDSMDIWBlock_C2_constraint(demand_dsm_4)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_4) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_4) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_4) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_4) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_4) ++1 SinkDSMDIWBlock_dsm_up(demand_dsm_4) <= 0.3 c_u_SinkDSMDIWBlock_C2_constraint(demand_dsm_5)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_5) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_5) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_5) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_5) ++1 SinkDSMDIWBlock_dsm_up(demand_dsm_5) <= 0.3 c_u_SinkDSMDIWBlock_recovery_constraint(demand_dsm_0)_: @@ -339,57 +339,57 @@ c_u_SinkDSMDIWBlock_shed_limit_constraint(demand_dsm_5)_: bounds 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_2) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_3) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_4) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_5) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_3) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_4) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_5) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_4) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_5) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_1) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_2) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_3) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_4) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_5) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_1) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_2) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_3) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_4) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_5) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_1) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_2) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_3) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_4) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_5) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_3) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_4) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_5) <= +inf 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_0) <= +inf 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_2) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_2) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_2) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_2) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_2) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) <= +inf 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_3) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_3) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_3) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_3) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_3) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_3) <= +inf 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_4) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_4) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_4) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_4) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_4) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_4) <= +inf 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_5) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_5) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_5) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_5) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_5) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_5) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_5) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_5) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_3) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_4) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_5) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_3) <= +inf + 0 <= flow(bus_elec_demand_dsm_4) <= +inf + 0 <= flow(bus_elec_demand_dsm_5) <= +inf end diff --git a/tests/lp_files/dsm_module_DIW_invest.lp b/tests/lp_files/dsm_module_DIW_invest.lp index ee3ccfb2a..4db037a09 100644 --- a/tests/lp_files/dsm_module_DIW_invest.lp +++ b/tests/lp_files/dsm_module_DIW_invest.lp @@ -3,33 +3,33 @@ min objective: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) +100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) ++100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) ++100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) +1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) +1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) -+100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) +1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) -+100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_0)_: @@ -42,43 +42,43 @@ c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_0_0)_: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) -1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_0_1)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_1) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) ++1 flow(bus_elec_demand_dsm_1) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_0_2)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_0_2) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) ++1 flow(bus_elec_demand_dsm_2) = 1 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_0)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_1)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_2)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) = 0 c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_0_0)_: @@ -127,19 +127,19 @@ c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_0_0)_: <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_0_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_0_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) <= 0 @@ -162,23 +162,23 @@ c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_0_2)_: bounds 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_2) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(demand_dsm_0) <= +inf 33 <= SinkDSMDIWInvestmentBlock_invest(demand_dsm_0) <= 100 end diff --git a/tests/lp_files/dsm_module_DIW_invest_multi_period.lp b/tests/lp_files/dsm_module_DIW_invest_multi_period.lp index 1ff5873d6..8f3d611e7 100644 --- a/tests/lp_files/dsm_module_DIW_invest_multi_period.lp +++ b/tests/lp_files/dsm_module_DIW_invest_multi_period.lp @@ -4,81 +4,81 @@ min objective: +2941.5609381007307 ONE_VAR_CONSTANT +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_2) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_3) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_4) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_3) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_4) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_3) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_4) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_1) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_2) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_3) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_4) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_1) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_2) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_3) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_4) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_1) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_2) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_3) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_4) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_5) +100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) ++100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) ++98.0392156862745 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) ++98.0392156862745 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_3) ++96.11687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_4) ++96.11687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_5) +1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) +1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_1) -+100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) +0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_2) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_2) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_2) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_2) -+98.0392156862745 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) +0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_3) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_3) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_3) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_3) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_3) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_3) -+98.0392156862745 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_3) +0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_4) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_4) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_4) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_4) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_4) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_4) -+96.11687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_4) +0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_5) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_5) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_5) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_5) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_5) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_5) -+96.11687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_5) +76.46810240317063 SinkDSMDIWInvestmentBlock_invest(demand_dsm_0) +50.47234572422055 SinkDSMDIWInvestmentBlock_invest(demand_dsm_1) +24.986309764465627 SinkDSMDIWInvestmentBlock_invest(demand_dsm_2) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) +c_e_BusBlock_balance(bus_elec_3)_: ++1 flow(bus_elec_demand_dsm_3) = 0 -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) +c_e_BusBlock_balance(bus_elec_4)_: ++1 flow(bus_elec_demand_dsm_4) = 0 -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) +c_e_BusBlock_balance(bus_elec_5)_: ++1 flow(bus_elec_demand_dsm_5) = 0 c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_0)_: @@ -125,9 +125,9 @@ c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(demand_dsm_2)_: = 0 c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(demand_dsm_0)_: ++1 SinkDSMDIWInvestmentBlock_old(demand_dsm_0) -1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_0) -1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_0) -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_0) = 0 c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(demand_dsm_1)_: @@ -147,91 +147,91 @@ c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_0_0)_: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) -1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_0_1)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_1) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) ++1 flow(bus_elec_demand_dsm_1) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_1_2)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_1_2) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) ++1 flow(bus_elec_demand_dsm_2) = 2 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_1_3)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_3) -+1 flow(bus_elec_demand_dsm_1_3) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) ++1 flow(bus_elec_demand_dsm_3) = 2 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_2_4)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_4) -+1 flow(bus_elec_demand_dsm_2_4) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) ++1 flow(bus_elec_demand_dsm_4) = 3 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_2_5)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_5) -+1 flow(bus_elec_demand_dsm_2_5) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) ++1 flow(bus_elec_demand_dsm_5) = 3 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_0)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_1)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_2)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_3) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_3)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_2) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_3) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_4) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_4)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_3) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_4) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_5) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_5)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_4) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_5) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) = 0 c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_0_0)_: @@ -319,46 +319,46 @@ c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_0_0)_: <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_0_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_1_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_1_3)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_3) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_2_4)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_4) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_2_5)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_5) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) <= 0 @@ -416,66 +416,67 @@ c_l_SinkDSMDIWInvestmentBlock_overall_minimum(demand_dsm)_: bounds 1 <= ONE_VAR_CONSTANT <= 1 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_3) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_4) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_5) <= +inf 33 <= SinkDSMDIWInvestmentBlock_invest(demand_dsm_0) <= 100 33 <= SinkDSMDIWInvestmentBlock_invest(demand_dsm_1) <= 100 33 <= SinkDSMDIWInvestmentBlock_invest(demand_dsm_2) <= 100 - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_3) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_4) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_5) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_3) <= +inf + 0 <= flow(bus_elec_demand_dsm_4) <= +inf + 0 <= flow(bus_elec_demand_dsm_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(demand_dsm_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(demand_dsm_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_1) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(demand_dsm_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_1) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_2) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_1) <= +inf @@ -483,5 +484,4 @@ bounds 0 <= SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_1) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_0) <= +inf end diff --git a/tests/lp_files/dsm_module_DIW_invest_multi_period_remaining_value.lp b/tests/lp_files/dsm_module_DIW_invest_multi_period_remaining_value.lp index c4783b7fe..8875230b1 100644 --- a/tests/lp_files/dsm_module_DIW_invest_multi_period_remaining_value.lp +++ b/tests/lp_files/dsm_module_DIW_invest_multi_period_remaining_value.lp @@ -4,81 +4,81 @@ min objective: +2941.5609381007307 ONE_VAR_CONSTANT +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_2) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_3) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_4) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_3) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_4) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_3) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_4) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_1) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_2) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_3) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_4) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_1) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_2) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_3) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_4) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_1) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_2) ++0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_3) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_4) ++0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_5) +100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) ++100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) ++98.0392156862745 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) ++98.0392156862745 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_3) ++96.11687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_4) ++96.11687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_5) +1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) +1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_1) -+100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) +0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_2) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_2) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_2) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_2) -+98.0392156862745 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) +0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_3) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_3) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_3) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_3) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_3) -+0.9803921568627451 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_3) -+98.0392156862745 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_3) +0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_4) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_4) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_4) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_4) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_4) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_4) -+96.11687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_4) +0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_5) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_5) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_5) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_5) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_5) -+0.9611687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_5) -+96.11687812379853 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_5) +57.62165571222974 SinkDSMDIWInvestmentBlock_invest(demand_dsm_0) +39.8850096825295 SinkDSMDIWInvestmentBlock_invest(demand_dsm_1) +23.833722936524442 SinkDSMDIWInvestmentBlock_invest(demand_dsm_2) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) +c_e_BusBlock_balance(bus_elec_3)_: ++1 flow(bus_elec_demand_dsm_3) = 0 -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) +c_e_BusBlock_balance(bus_elec_4)_: ++1 flow(bus_elec_demand_dsm_4) = 0 -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) +c_e_BusBlock_balance(bus_elec_5)_: ++1 flow(bus_elec_demand_dsm_5) = 0 c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_0)_: @@ -125,9 +125,9 @@ c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(demand_dsm_2)_: = 0 c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(demand_dsm_0)_: ++1 SinkDSMDIWInvestmentBlock_old(demand_dsm_0) -1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_0) -1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_0) -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_0) = 0 c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(demand_dsm_1)_: @@ -147,91 +147,91 @@ c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_0_0)_: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) -1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_0_1)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_1) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) ++1 flow(bus_elec_demand_dsm_1) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_1_2)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_1_2) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) ++1 flow(bus_elec_demand_dsm_2) = 2 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_1_3)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_3) -+1 flow(bus_elec_demand_dsm_1_3) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) ++1 flow(bus_elec_demand_dsm_3) = 2 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_2_4)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_4) -+1 flow(bus_elec_demand_dsm_2_4) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) ++1 flow(bus_elec_demand_dsm_4) = 3 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_2_5)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_5) -+1 flow(bus_elec_demand_dsm_2_5) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) ++1 flow(bus_elec_demand_dsm_5) = 3 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_0)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_1)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_2)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_3) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_3)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_2) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_3) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_4) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_4)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_3) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_4) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_5) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_5)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_4) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_5) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) = 0 c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_0_0)_: @@ -319,46 +319,46 @@ c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_0_0)_: <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_0_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_1_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_1_3)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_3) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_2_4)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_4) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_2_5)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_5) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) <= 0 @@ -416,66 +416,67 @@ c_l_SinkDSMDIWInvestmentBlock_overall_minimum(demand_dsm)_: bounds 1 <= ONE_VAR_CONSTANT <= 1 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_3) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_4) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_5) <= +inf 33 <= SinkDSMDIWInvestmentBlock_invest(demand_dsm_0) <= 100 33 <= SinkDSMDIWInvestmentBlock_invest(demand_dsm_1) <= 100 33 <= SinkDSMDIWInvestmentBlock_invest(demand_dsm_2) <= 100 - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_3) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_4) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_5) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_3) <= +inf + 0 <= flow(bus_elec_demand_dsm_4) <= +inf + 0 <= flow(bus_elec_demand_dsm_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(demand_dsm_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(demand_dsm_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_1) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(demand_dsm_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_1) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_2) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_1) <= +inf @@ -483,5 +484,4 @@ bounds 0 <= SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_1) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_0) <= +inf end diff --git a/tests/lp_files/dsm_module_DIW_multi_period.lp b/tests/lp_files/dsm_module_DIW_multi_period.lp index a1be324b6..55998ee97 100644 --- a/tests/lp_files/dsm_module_DIW_multi_period.lp +++ b/tests/lp_files/dsm_module_DIW_multi_period.lp @@ -3,66 +3,66 @@ min objective: +2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) -+2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) -+2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_0) -+2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_0) -+2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_0) -+2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_0) +2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) -+2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) -+2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) -+2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_1) -+2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_1) -+2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_1) +1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_2) -+1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) -+1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) -+1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_2) -+1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_2) -+1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_2) +1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_3) -+1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_3) -+1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_3) -+1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_3) -+1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_3) -+1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_3) +1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_4) -+1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_4) -+1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_4) -+1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_4) -+1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_4) -+1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_4) +1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_5) ++2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) ++2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) ++1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) ++1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_3) ++1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_4) +1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_5) ++2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_0) ++2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) ++1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) ++1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_3) ++1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_4) +1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_5) ++2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_0) ++2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_1) ++1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_2) ++1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_3) ++1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_4) +1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_5) ++2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_0) ++2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_1) ++1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_2) ++1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_3) ++1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_4) +1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_5) ++2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_0) ++2 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_1) ++1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_2) ++1.9607843137254901 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_3) ++1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_4) +1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_5) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) +c_e_BusBlock_balance(bus_elec_3)_: ++1 flow(bus_elec_demand_dsm_3) = 0 -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) +c_e_BusBlock_balance(bus_elec_4)_: ++1 flow(bus_elec_demand_dsm_4) = 0 -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) +c_e_BusBlock_balance(bus_elec_5)_: ++1 flow(bus_elec_demand_dsm_5) = 0 c_e_SinkDSMDIWBlock_shift_shed_vars(demand_dsm_0)_: @@ -92,53 +92,53 @@ c_e_SinkDSMDIWBlock_shift_shed_vars(demand_dsm_5)_: c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_0_0)_: +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) -+1 flow(bus_elec_demand_dsm_0_0) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) -1 SinkDSMDIWBlock_dsm_up(demand_dsm_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_0_1)_: +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) -+1 flow(bus_elec_demand_dsm_0_1) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) -1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) ++1 flow(bus_elec_demand_dsm_1) = 1 c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_1_2)_: +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_2) -+1 flow(bus_elec_demand_dsm_1_2) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) -1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) ++1 flow(bus_elec_demand_dsm_2) = 1 c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_1_3)_: +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_3) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_3) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_3) -+1 flow(bus_elec_demand_dsm_1_3) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_3) -1 SinkDSMDIWBlock_dsm_up(demand_dsm_3) ++1 flow(bus_elec_demand_dsm_3) = 1 c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_2_4)_: +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_4) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_4) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_4) -+1 flow(bus_elec_demand_dsm_2_4) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_4) -1 SinkDSMDIWBlock_dsm_up(demand_dsm_4) ++1 flow(bus_elec_demand_dsm_4) = 1 c_e_SinkDSMDIWBlock_input_output_relation(demand_dsm_2_5)_: +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_5) +1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_5) -+1 flow(bus_elec_demand_dsm_2_5) +1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_5) -1 SinkDSMDIWBlock_dsm_up(demand_dsm_5) ++1 flow(bus_elec_demand_dsm_5) = 1 c_e_SinkDSMDIWBlock_dsm_updo_constraint(demand_dsm_0)_: @@ -293,47 +293,41 @@ c_u_SinkDSMDIWBlock_C2_constraint(demand_dsm_5)_: bounds 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_0) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_0) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_0) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_1) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_1) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_2) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_2) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_2) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_2) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_3) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_3) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_3) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_3) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_4) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_4) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_4) <= +inf - 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_4) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_5) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_3) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_4) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_5) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_4) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_5) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_1) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_2) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_3) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_4) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_5) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_1) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_2) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_3) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_4) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_5) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_0) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_1) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_2) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_3) <= +inf + 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_4) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_5) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_3) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_4) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_5) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) <= +inf @@ -346,4 +340,10 @@ bounds 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_3) <= +inf 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_4) <= +inf 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_5) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_3) <= +inf + 0 <= flow(bus_elec_demand_dsm_4) <= +inf + 0 <= flow(bus_elec_demand_dsm_5) <= +inf end diff --git a/tests/lp_files/dsm_module_DLR.lp b/tests/lp_files/dsm_module_DLR.lp index e6aa3475a..aadfe6936 100644 --- a/tests/lp_files/dsm_module_DLR.lp +++ b/tests/lp_files/dsm_module_DLR.lp @@ -3,30 +3,30 @@ min objective: +2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) -+2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) -+2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) +2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) -+2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) -+2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) +2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) ++2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) ++2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) +2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) ++2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) ++2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) ++2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) ++2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) ++2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) +2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_1_0)_: @@ -55,41 +55,41 @@ c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_2_2)_: c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_0_0)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) -1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) -1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) -1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) -+1 flow(bus_elec_demand_dsm_0_0) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_0_1)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) --1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) -+1 flow(bus_elec_demand_dsm_0_1) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) ++1 flow(bus_elec_demand_dsm_1) = 1 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_0_2)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) --1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) -+1 flow(bus_elec_demand_dsm_0_2) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) ++1 flow(bus_elec_demand_dsm_2) = 1 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_0)_: @@ -120,13 +120,13 @@ c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_0)_: = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_1)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_2)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_0)_: @@ -134,8 +134,8 @@ c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_0)_: = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_2)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) = 0 c_e_SinkDSMDLRBlock_no_comp_red(demand_dsm_1_2)_: @@ -164,46 +164,46 @@ c_e_SinkDSMDLRBlock_no_comp_inc(demand_dsm_2_2)_: c_u_SinkDSMDLRBlock_availability_red(demand_dsm_0)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) <= 0.5 c_u_SinkDSMDLRBlock_availability_red(demand_dsm_1)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) <= 0.5 c_u_SinkDSMDLRBlock_availability_red(demand_dsm_2)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) <= 0.5 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_0)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) <= 0.5 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_1)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) <= 0.5 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_2)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) <= 0.5 @@ -214,19 +214,19 @@ c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_0)_: = 0 c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_1)_: --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_0) -1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) = 0 c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_2)_: --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) -1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) = 0 @@ -238,19 +238,19 @@ c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_0)_: = 0 c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_1)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_0) -1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) = 0 c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_2)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) -1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) = 0 @@ -281,71 +281,71 @@ c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_2)_: c_u_SinkDSMDLRBlock_dr_logical_constraint(demand_dsm_0)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) <= 0.5 c_u_SinkDSMDLRBlock_dr_logical_constraint(demand_dsm_1)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) <= 0.5 c_u_SinkDSMDLRBlock_dr_logical_constraint(demand_dsm_2)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) <= 0.5 bounds 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) <= +inf 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_2) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_0) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) <= +inf diff --git a/tests/lp_files/dsm_module_DLR_delay_time.lp b/tests/lp_files/dsm_module_DLR_delay_time.lp index 21997cf82..8a6a7c3a0 100644 --- a/tests/lp_files/dsm_module_DLR_delay_time.lp +++ b/tests/lp_files/dsm_module_DLR_delay_time.lp @@ -3,30 +3,30 @@ min objective: +2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) -+2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_0) -+2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_0) +2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) -+2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_1) -+2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_1) +2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) ++2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_0) ++2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_1) +2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_2) ++2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) ++2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) ++2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) ++2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_0) ++2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_1) +2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_2) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_1_0)_: @@ -55,41 +55,41 @@ c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_3_2)_: c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_0_0)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_0) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_0) ++1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) -1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) -1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_0) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) -1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_0) -+1 flow(bus_elec_demand_dsm_0_0) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_0_1)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) --1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_1) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_1) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_1) -+1 flow(bus_elec_demand_dsm_0_1) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_1) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_1) ++1 flow(bus_elec_demand_dsm_1) = 1 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_0_2)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) --1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_2) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_2) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_2) -+1 flow(bus_elec_demand_dsm_0_2) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_2) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_2) ++1 flow(bus_elec_demand_dsm_2) = 1 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_0)_: @@ -115,13 +115,13 @@ c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_0)_: = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_1)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_2)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_3_0)_: @@ -162,46 +162,46 @@ c_e_SinkDSMDLRBlock_no_comp_inc(demand_dsm_3_2)_: c_u_SinkDSMDLRBlock_availability_red(demand_dsm_0)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_0) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_0) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) <= 0.5 c_u_SinkDSMDLRBlock_availability_red(demand_dsm_1)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_1) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_1) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) <= 0.5 c_u_SinkDSMDLRBlock_availability_red(demand_dsm_2)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_2) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_2) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) <= 0.5 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_0)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_0) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_0) <= 0.5 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_1)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_1) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_1) <= 0.5 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_2)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_2) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_2) <= 0.5 @@ -212,19 +212,19 @@ c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_0)_: = 0 c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_1)_: --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_1) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_1) +1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_0) -1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) = 0 c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_2)_: --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_2) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_2) +1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) -1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) = 0 @@ -236,19 +236,19 @@ c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_0)_: = 0 c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_1)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_1) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_1) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_1) +1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_0) -1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) = 0 c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_2)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_2) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_2) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_2) +1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) -1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) = 0 @@ -279,71 +279,71 @@ c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_2)_: c_u_SinkDSMDLRBlock_dr_logical_constraint(demand_dsm_0)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_0) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_0) ++1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_0) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_0) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) <= 0.5 c_u_SinkDSMDLRBlock_dr_logical_constraint(demand_dsm_1)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_1) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_1) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_1) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_1) <= 0.5 c_u_SinkDSMDLRBlock_dr_logical_constraint(demand_dsm_2)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_2) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_2) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_2) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_2) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_2) <= 0.5 bounds 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_3_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_3_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_3_2) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_2) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_0) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_1) <= +inf 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_2) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_3_0) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_3_1) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_3_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_1) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_0) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) <= +inf diff --git a/tests/lp_files/dsm_module_DLR_extended.lp b/tests/lp_files/dsm_module_DLR_extended.lp index 3c09f5fe8..7c0b2198a 100644 --- a/tests/lp_files/dsm_module_DLR_extended.lp +++ b/tests/lp_files/dsm_module_DLR_extended.lp @@ -3,84 +3,84 @@ min objective: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) -+100 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) -+100 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) ++100 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) ++100 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) +100 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_0_0)_: -1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) -1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) -1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_0_1)_: -1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) -1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) -1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_1) ++1 flow(bus_elec_demand_dsm_1) = 0.9 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_0_2)_: -1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) -1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) -1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_0_2) ++1 flow(bus_elec_demand_dsm_2) = 0.8 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_0)_: @@ -88,13 +88,13 @@ c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_0)_: = 0 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_1)_: --1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +-1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) = 0 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_2)_: --1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +-1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) = 0 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_0)_: @@ -102,8 +102,8 @@ c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_0)_: = 0 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_2)_: --1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) +-1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_0)_: @@ -131,46 +131,46 @@ c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_2)_: c_u_SinkDSMDLRBlock_availability_red(demand_dsm_0)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) <= 0.3 c_u_SinkDSMDLRBlock_availability_red(demand_dsm_1)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) <= 0.3 c_u_SinkDSMDLRBlock_availability_red(demand_dsm_2)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) <= 0.4 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_0)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) <= 0.5 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_1)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) <= 0.4 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_2)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) <= 0.5 @@ -254,53 +254,53 @@ c_u_SinkDSMDLRBlock_dr_yearly_limit_shed(demand_dsm_0)_: c_u_SinkDSMDLRBlock_dr_yearly_limit_red(demand_dsm_0)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) <= 33.33333333333333 c_u_SinkDSMDLRBlock_dr_yearly_limit_inc(demand_dsm_0)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) <= 46.666666666666664 bounds 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) <= +inf 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) <= +inf 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) <= +inf 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_0) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) <= +inf diff --git a/tests/lp_files/dsm_module_DLR_extended_multi_period.lp b/tests/lp_files/dsm_module_DLR_extended_multi_period.lp index 1626a1bfd..e086a8428 100644 --- a/tests/lp_files/dsm_module_DLR_extended_multi_period.lp +++ b/tests/lp_files/dsm_module_DLR_extended_multi_period.lp @@ -3,162 +3,162 @@ min objective: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) -+100 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) -+100 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) +0.9803921568627451 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+0.9803921568627451 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) -+0.9803921568627451 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) -+0.9803921568627451 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) -+0.9803921568627451 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+0.9803921568627451 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) -+0.9803921568627451 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) -+0.9803921568627451 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) -+98.0392156862745 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) +0.9803921568627451 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) -+0.9803921568627451 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) -+0.9803921568627451 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) -+0.9803921568627451 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_3) -+0.9803921568627451 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) -+0.9803921568627451 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) -+0.9803921568627451 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) -+0.9803921568627451 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_3) -+98.0392156862745 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_3) +0.9611687812379853 SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) -+0.9611687812379853 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) -+0.9611687812379853 SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) -+0.9611687812379853 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_4) -+0.9611687812379853 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) -+0.9611687812379853 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) -+0.9611687812379853 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) -+0.9611687812379853 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_4) -+96.11687812379853 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_4) +0.9611687812379853 SinkDSMDLRBlock_dsm_up(demand_dsm_1_5) -+0.9611687812379853 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) ++0.9803921568627451 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) ++0.9803921568627451 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) ++0.9611687812379853 SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) +0.9611687812379853 SinkDSMDLRBlock_dsm_up(demand_dsm_2_5) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) ++0.9803921568627451 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) ++0.9803921568627451 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) ++0.9611687812379853 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) ++0.9611687812379853 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) ++0.9803921568627451 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) ++0.9803921568627451 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_3) ++0.9611687812379853 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_4) +0.9611687812379853 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_5) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) ++0.9803921568627451 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) ++0.9803921568627451 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) ++0.9611687812379853 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) +0.9611687812379853 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_5) -+0.9611687812379853 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) ++0.9803921568627451 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) ++0.9803921568627451 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) ++0.9611687812379853 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) +0.9611687812379853 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_5) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) ++0.9803921568627451 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) ++0.9803921568627451 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) ++0.9611687812379853 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) ++0.9611687812379853 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) ++0.9803921568627451 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) ++0.9803921568627451 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_3) ++0.9611687812379853 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_4) +0.9611687812379853 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_5) ++100 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) ++100 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) ++98.0392156862745 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) ++98.0392156862745 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_3) ++96.11687812379853 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_4) +96.11687812379853 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_5) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) +c_e_BusBlock_balance(bus_elec_3)_: ++1 flow(bus_elec_demand_dsm_3) = 0 -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) +c_e_BusBlock_balance(bus_elec_4)_: ++1 flow(bus_elec_demand_dsm_4) = 0 -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) +c_e_BusBlock_balance(bus_elec_5)_: ++1 flow(bus_elec_demand_dsm_5) = 0 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_0_0)_: -1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) -1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) -1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_0_1)_: -1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) -1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) -1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_1) ++1 flow(bus_elec_demand_dsm_1) = 0.9 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_1_2)_: -1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) -1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) -1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_1_2) ++1 flow(bus_elec_demand_dsm_2) = 0.8 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_1_3)_: -1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) -1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) -1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_3) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_3) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_3) -+1 flow(bus_elec_demand_dsm_1_3) ++1 flow(bus_elec_demand_dsm_3) = 0.7 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_2_4)_: -1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) -1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) -1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_4) -+1 flow(bus_elec_demand_dsm_2_4) ++1 flow(bus_elec_demand_dsm_4) = 0.7 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_2_5)_: -1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_5) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) -1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_5) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) -1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_5) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_5) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_5) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_5) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_5) -+1 flow(bus_elec_demand_dsm_2_5) ++1 flow(bus_elec_demand_dsm_5) = 0.7 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_0)_: @@ -166,28 +166,28 @@ c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_0)_: = 0 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_1)_: --1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +-1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) = 0 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_2)_: --1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +-1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) = 0 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_3)_: --1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) +-1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) = 0 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_4)_: --1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) +-1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) = 0 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_5)_: --1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) +-1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) = 0 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_0)_: @@ -195,23 +195,23 @@ c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_0)_: = 0 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_2)_: --1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) +-1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) = 0 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_3)_: --1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_3) +-1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) = 0 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_4)_: --1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_4) +-1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) = 0 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_5)_: --1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_5) +-1.0101010101010102 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_0)_: @@ -269,91 +269,91 @@ c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_5)_: c_u_SinkDSMDLRBlock_availability_red(demand_dsm_0)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) <= 0.3 c_u_SinkDSMDLRBlock_availability_red(demand_dsm_1)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) <= 0.3 c_u_SinkDSMDLRBlock_availability_red(demand_dsm_2)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) <= 0.4 c_u_SinkDSMDLRBlock_availability_red(demand_dsm_3)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_3) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_3) <= 0.3 c_u_SinkDSMDLRBlock_availability_red(demand_dsm_4)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_4) <= 0.3 c_u_SinkDSMDLRBlock_availability_red(demand_dsm_5)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_5) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_5) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_5) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_5) <= 0.3 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_0)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) <= 0.5 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_1)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) <= 0.4 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_2)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) <= 0.5 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_3)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_3) <= 0.3 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_4)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_4) <= 0.3 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_5)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_5) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_5) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_5) <= 0.3 @@ -524,173 +524,173 @@ c_u_SinkDSMDLRBlock_dr_yearly_limit_shed(demand_dsm_2)_: c_u_SinkDSMDLRBlock_dr_yearly_limit_red(demand_dsm_0)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) <= 31.66666666666667 c_u_SinkDSMDLRBlock_dr_yearly_limit_red(demand_dsm_1)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) <= 31.66666666666667 c_u_SinkDSMDLRBlock_dr_yearly_limit_red(demand_dsm_2)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_5) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_5) <= 31.66666666666667 c_u_SinkDSMDLRBlock_dr_yearly_limit_inc(demand_dsm_0)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) <= 38.33333333333333 c_u_SinkDSMDLRBlock_dr_yearly_limit_inc(demand_dsm_1)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) <= 38.33333333333333 c_u_SinkDSMDLRBlock_dr_yearly_limit_inc(demand_dsm_2)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_5) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_5) <= 38.33333333333333 c_u_SinkDSMDLRBlock_dr_daily_limit_red(demand_dsm_3)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) <= 0.3166666666666667 c_u_SinkDSMDLRBlock_dr_daily_limit_red(demand_dsm_4)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) <= 0.3166666666666667 c_u_SinkDSMDLRBlock_dr_daily_limit_red(demand_dsm_5)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_5) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) ++1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_5) <= 0.3166666666666667 c_u_SinkDSMDLRBlock_dr_daily_limit_inc(demand_dsm_3)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) <= 0.3833333333333333 c_u_SinkDSMDLRBlock_dr_daily_limit_inc(demand_dsm_4)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) <= 0.3833333333333333 c_u_SinkDSMDLRBlock_dr_daily_limit_inc(demand_dsm_5)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_5) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_5) <= 0.3833333333333333 bounds 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) <= +inf 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) <= +inf 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_3) <= +inf 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_4) <= +inf 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_5) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) <= +inf 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_5) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_4) <= +inf 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_5) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_5) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_5) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_4) <= +inf 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_5) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_3) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_4) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_5) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_3) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_4) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_5) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_3) <= +inf + 0 <= flow(bus_elec_demand_dsm_4) <= +inf + 0 <= flow(bus_elec_demand_dsm_5) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_0) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) <= +inf diff --git a/tests/lp_files/dsm_module_DLR_invest.lp b/tests/lp_files/dsm_module_DLR_invest.lp index c7404697f..a694b431c 100644 --- a/tests/lp_files/dsm_module_DLR_invest.lp +++ b/tests/lp_files/dsm_module_DLR_invest.lp @@ -3,45 +3,45 @@ min objective: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) -+100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) -+100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) ++1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) ++100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) ++100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) +100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_0)_: @@ -51,41 +51,41 @@ c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_0)_: c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_0_0)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_0_1)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_1) ++1 flow(bus_elec_demand_dsm_1) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_0_2)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_0_2) ++1 flow(bus_elec_demand_dsm_2) = 1 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_0)_: @@ -93,13 +93,13 @@ c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_0)_: = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_1)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_0)_: @@ -107,8 +107,8 @@ c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_0)_: = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_0)_: @@ -160,8 +160,8 @@ c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(demand_dsm_2_2)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) @@ -169,8 +169,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_0_0)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_0_1)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) @@ -178,8 +178,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_0_1)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_0_2)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) @@ -187,24 +187,24 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_0_2)_: c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_0_1)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_0_2)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) <= 0 @@ -296,12 +296,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_0)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) @@ -309,12 +309,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_0_0)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_0_1)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) @@ -322,12 +322,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_0_1)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_0_2)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) @@ -335,35 +335,35 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_0_2)_: bounds 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(demand_dsm_0) <= +inf 33 <= SinkDSMDLRInvestmentBlock_invest(demand_dsm_0) <= 100 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_0) <= +inf diff --git a/tests/lp_files/dsm_module_DLR_invest_multi_period.lp b/tests/lp_files/dsm_module_DLR_invest_multi_period.lp index 4bfd30471..c8a023deb 100644 --- a/tests/lp_files/dsm_module_DLR_invest_multi_period.lp +++ b/tests/lp_files/dsm_module_DLR_invest_multi_period.lp @@ -4,58 +4,58 @@ min objective: +2941.5609381007307 ONE_VAR_CONSTANT +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) -+100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) -+100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) +0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) -+98.0392156862745 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) +0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_3) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_3) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_3) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_3) -+98.0392156862745 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) +0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_4) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_4) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_4) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_4) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_4) -+96.11687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) +0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_5) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) ++1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_3) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_4) +0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_3) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_4) +0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_5) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) +0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_5) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_4) +0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_3) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_4) +0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_5) ++100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) ++100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) ++98.0392156862745 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) ++98.0392156862745 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) ++96.11687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) +96.11687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) +76.46810240317063 SinkDSMDLRInvestmentBlock_invest(demand_dsm_0) +50.47234572422055 SinkDSMDLRInvestmentBlock_invest(demand_dsm_1) @@ -63,28 +63,28 @@ objective: s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) +c_e_BusBlock_balance(bus_elec_3)_: ++1 flow(bus_elec_demand_dsm_3) = 0 -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) +c_e_BusBlock_balance(bus_elec_4)_: ++1 flow(bus_elec_demand_dsm_4) = 0 -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) +c_e_BusBlock_balance(bus_elec_5)_: ++1 flow(bus_elec_demand_dsm_5) = 0 c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_0)_: @@ -131,9 +131,9 @@ c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(demand_dsm_2)_: = 0 c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(demand_dsm_0)_: ++1 SinkDSMDLRInvestmentBlock_old(demand_dsm_0) -1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_0) -1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_0) = 0 c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(demand_dsm_1)_: @@ -150,80 +150,80 @@ c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(demand_dsm_2)_: c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_0_0)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_0_1)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_1) ++1 flow(bus_elec_demand_dsm_1) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_1_2)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_1_2) ++1 flow(bus_elec_demand_dsm_2) = 2 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_1_3)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_3) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_3) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) -+1 flow(bus_elec_demand_dsm_1_3) ++1 flow(bus_elec_demand_dsm_3) = 2 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_2_4)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_4) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_4) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_4) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) -+1 flow(bus_elec_demand_dsm_2_4) ++1 flow(bus_elec_demand_dsm_4) = 3 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_2_5)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_5) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_5) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) -+1 flow(bus_elec_demand_dsm_2_5) ++1 flow(bus_elec_demand_dsm_5) = 3 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_0)_: @@ -231,28 +231,28 @@ c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_0)_: = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_1)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_3)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_4)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_5)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_0)_: @@ -260,23 +260,23 @@ c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_0)_: = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_3)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_3) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_4)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_4) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_5)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_5) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_0)_: @@ -358,8 +358,8 @@ c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(demand_dsm_2_5)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) @@ -367,8 +367,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_0_0)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_0_1)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) @@ -376,8 +376,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_0_1)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_1_2)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) @@ -385,8 +385,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_1_2)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_1_3)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) @@ -394,8 +394,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_1_3)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_2_4)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_4) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) @@ -403,8 +403,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_2_4)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_2_5)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) @@ -412,48 +412,48 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_2_5)_: c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_0_1)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_1_2)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_1_3)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_3) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_3) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_2_4)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_4) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_4) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_2_5)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_5) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) <= 0 @@ -640,12 +640,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_2)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) @@ -653,12 +653,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_0_0)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_0_1)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) @@ -666,12 +666,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_0_1)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_1_2)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) @@ -679,12 +679,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_1_2)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_1_3)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_3) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) @@ -692,12 +692,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_1_3)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_2_4)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_4) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_4) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) @@ -705,12 +705,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_2_4)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_2_5)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) @@ -735,72 +735,73 @@ c_l_SinkDSMDLRInvestmentBlock_overall_minimum(demand_dsm)_: bounds 1 <= ONE_VAR_CONSTANT <= 1 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) <= +inf 33 <= SinkDSMDLRInvestmentBlock_invest(demand_dsm_0) <= 100 33 <= SinkDSMDLRInvestmentBlock_invest(demand_dsm_1) <= 100 33 <= SinkDSMDLRInvestmentBlock_invest(demand_dsm_2) <= 100 - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_3) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_4) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_5) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_3) <= +inf + 0 <= flow(bus_elec_demand_dsm_4) <= +inf + 0 <= flow(bus_elec_demand_dsm_5) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(demand_dsm_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(demand_dsm_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(demand_dsm_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_2) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_1) <= +inf @@ -808,7 +809,6 @@ bounds 0 <= SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_2) <= +inf diff --git a/tests/lp_files/dsm_module_DLR_invest_multi_period_remaining_value.lp b/tests/lp_files/dsm_module_DLR_invest_multi_period_remaining_value.lp index 2742536af..c640481b5 100644 --- a/tests/lp_files/dsm_module_DLR_invest_multi_period_remaining_value.lp +++ b/tests/lp_files/dsm_module_DLR_invest_multi_period_remaining_value.lp @@ -4,58 +4,58 @@ min objective: +2941.5609381007307 ONE_VAR_CONSTANT +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) -+100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) -+100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) +0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) -+98.0392156862745 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) +0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_3) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_3) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_3) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) -+0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_3) -+98.0392156862745 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) +0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_4) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_4) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_4) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_4) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_4) -+96.11687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) +0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_5) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) ++1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_3) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_4) +0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_3) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_4) +0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_5) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) +0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_5) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_4) +0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) ++0.9803921568627451 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_3) ++0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_4) +0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_5) ++100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) ++100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) ++98.0392156862745 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) ++98.0392156862745 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) ++96.11687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) +96.11687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) +57.62165571222974 SinkDSMDLRInvestmentBlock_invest(demand_dsm_0) +39.8850096825295 SinkDSMDLRInvestmentBlock_invest(demand_dsm_1) @@ -63,28 +63,28 @@ objective: s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) +c_e_BusBlock_balance(bus_elec_3)_: ++1 flow(bus_elec_demand_dsm_3) = 0 -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) +c_e_BusBlock_balance(bus_elec_4)_: ++1 flow(bus_elec_demand_dsm_4) = 0 -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) +c_e_BusBlock_balance(bus_elec_5)_: ++1 flow(bus_elec_demand_dsm_5) = 0 c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_0)_: @@ -131,9 +131,9 @@ c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(demand_dsm_2)_: = 0 c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(demand_dsm_0)_: ++1 SinkDSMDLRInvestmentBlock_old(demand_dsm_0) -1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_0) -1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_0) = 0 c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(demand_dsm_1)_: @@ -150,80 +150,80 @@ c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(demand_dsm_2)_: c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_0_0)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_0_1)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_1) ++1 flow(bus_elec_demand_dsm_1) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_1_2)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_1_2) ++1 flow(bus_elec_demand_dsm_2) = 2 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_1_3)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_3) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_3) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) -+1 flow(bus_elec_demand_dsm_1_3) ++1 flow(bus_elec_demand_dsm_3) = 2 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_2_4)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_4) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_4) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_4) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) -+1 flow(bus_elec_demand_dsm_2_4) ++1 flow(bus_elec_demand_dsm_4) = 3 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_2_5)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_5) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_5) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) -+1 flow(bus_elec_demand_dsm_2_5) ++1 flow(bus_elec_demand_dsm_5) = 3 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_0)_: @@ -231,28 +231,28 @@ c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_0)_: = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_1)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_3)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_4)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_5)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_0)_: @@ -260,23 +260,23 @@ c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_0)_: = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_3)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_3) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_4)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_4) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_5)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_5) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_0)_: @@ -358,8 +358,8 @@ c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(demand_dsm_2_5)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) @@ -367,8 +367,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_0_0)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_0_1)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) @@ -376,8 +376,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_0_1)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_1_2)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) @@ -385,8 +385,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_1_2)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_1_3)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) @@ -394,8 +394,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_1_3)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_2_4)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_4) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) @@ -403,8 +403,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_2_4)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_2_5)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) @@ -412,48 +412,48 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_2_5)_: c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_0_1)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_1_2)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_1_3)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_3) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_3) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_2_4)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_4) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_4) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_2_5)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_5) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) <= 0 @@ -640,12 +640,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_2)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) @@ -653,12 +653,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_0_0)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_0_1)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) @@ -666,12 +666,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_0_1)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_1_2)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) @@ -679,12 +679,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_1_2)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_1_3)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_3) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) @@ -692,12 +692,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_1_3)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_2_4)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_4) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_4) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) @@ -705,12 +705,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_2_4)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_2_5)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) @@ -735,72 +735,73 @@ c_l_SinkDSMDLRInvestmentBlock_overall_minimum(demand_dsm)_: bounds 1 <= ONE_VAR_CONSTANT <= 1 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_4) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_1_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) <= +inf 33 <= SinkDSMDLRInvestmentBlock_invest(demand_dsm_0) <= 100 33 <= SinkDSMDLRInvestmentBlock_invest(demand_dsm_1) <= 100 33 <= SinkDSMDLRInvestmentBlock_invest(demand_dsm_2) <= 100 - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_3) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_4) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_5) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_3) <= +inf + 0 <= flow(bus_elec_demand_dsm_4) <= +inf + 0 <= flow(bus_elec_demand_dsm_5) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(demand_dsm_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(demand_dsm_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(demand_dsm_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_2) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_1) <= +inf @@ -808,7 +809,6 @@ bounds 0 <= SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_2) <= +inf diff --git a/tests/lp_files/dsm_module_DLR_multi_period.lp b/tests/lp_files/dsm_module_DLR_multi_period.lp index c9ff2e694..83f0184f5 100644 --- a/tests/lp_files/dsm_module_DLR_multi_period.lp +++ b/tests/lp_files/dsm_module_DLR_multi_period.lp @@ -3,54 +3,54 @@ min objective: +2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) -+2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) -+2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) +2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) -+2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) -+2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) +1.9607843137254901 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1.9607843137254901 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) -+1.9607843137254901 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) -+1.9607843137254901 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) +1.9607843137254901 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) -+1.9607843137254901 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) -+1.9607843137254901 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) -+1.9607843137254901 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_3) +1.9223375624759707 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) -+1.9223375624759707 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) -+1.9223375624759707 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) -+1.9223375624759707 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_4) +1.9223375624759707 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_5) -+1.9223375624759707 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) ++2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) ++2 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) ++1.9607843137254901 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) ++1.9607843137254901 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) ++1.9223375624759707 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) +1.9223375624759707 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_5) ++2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) ++2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) ++1.9607843137254901 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) ++1.9607843137254901 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) ++1.9223375624759707 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) ++1.9223375624759707 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) ++2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) ++2 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) ++1.9607843137254901 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) ++1.9607843137254901 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_3) ++1.9223375624759707 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_4) +1.9223375624759707 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_5) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) +c_e_BusBlock_balance(bus_elec_3)_: ++1 flow(bus_elec_demand_dsm_3) = 0 -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) +c_e_BusBlock_balance(bus_elec_4)_: ++1 flow(bus_elec_demand_dsm_4) = 0 -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) +c_e_BusBlock_balance(bus_elec_5)_: ++1 flow(bus_elec_demand_dsm_5) = 0 c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_1_0)_: @@ -103,80 +103,80 @@ c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_2_5)_: c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_0_0)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) -1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) -1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) -1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) -+1 flow(bus_elec_demand_dsm_0_0) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_0_1)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) --1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) -+1 flow(bus_elec_demand_dsm_0_1) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) ++1 flow(bus_elec_demand_dsm_1) = 1 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_1_2)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) --1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) -+1 flow(bus_elec_demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) ++1 flow(bus_elec_demand_dsm_2) = 1 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_1_3)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) --1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_3) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_3) -+1 flow(bus_elec_demand_dsm_1_3) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_3) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_3) ++1 flow(bus_elec_demand_dsm_3) = 1 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_2_4)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) --1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_4) -+1 flow(bus_elec_demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_4) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_4) ++1 flow(bus_elec_demand_dsm_4) = 1 c_e_SinkDSMDLRBlock_input_output_relation(demand_dsm_2_5)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_5) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) --1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_5) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_5) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_5) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_5) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_5) -+1 flow(bus_elec_demand_dsm_2_5) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_5) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_5) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_5) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_5) ++1 flow(bus_elec_demand_dsm_5) = 1 c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_0)_: @@ -237,28 +237,28 @@ c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_0)_: = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_1)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_2)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_3)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_4)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_5)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_0)_: @@ -266,23 +266,23 @@ c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_0)_: = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_2)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_3)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_3) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_4)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_4) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) = 0 c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_5)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_5) +-1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) = 0 c_e_SinkDSMDLRBlock_no_comp_red(demand_dsm_1_5)_: @@ -311,91 +311,91 @@ c_e_SinkDSMDLRBlock_no_comp_inc(demand_dsm_2_5)_: c_u_SinkDSMDLRBlock_availability_red(demand_dsm_0)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) <= 0.5 c_u_SinkDSMDLRBlock_availability_red(demand_dsm_1)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) <= 0.5 c_u_SinkDSMDLRBlock_availability_red(demand_dsm_2)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) <= 0.5 c_u_SinkDSMDLRBlock_availability_red(demand_dsm_3)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_3) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_3) <= 0.5 c_u_SinkDSMDLRBlock_availability_red(demand_dsm_4)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_4) <= 0.5 c_u_SinkDSMDLRBlock_availability_red(demand_dsm_5)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_5) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_5) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_5) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_5) <= 0.5 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_0)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) <= 0.5 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_1)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) <= 0.5 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_2)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) <= 0.5 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_3)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_3) <= 0.5 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_4)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_4) <= 0.5 c_u_SinkDSMDLRBlock_availability_inc(demand_dsm_5)_: +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_5) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_5) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_5) <= 0.5 @@ -406,46 +406,46 @@ c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_0)_: = 0 c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_1)_: --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_0) -1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) = 0 c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_2)_: --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) -1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) = 0 c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_3)_: --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_3) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_3) +1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) -1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_3) = 0 c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_4)_: --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_3) -1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_4) = 0 c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_5)_: --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) --1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_5) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_5) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_5) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) +-1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_5) +1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_4) -1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_5) = 0 @@ -457,46 +457,46 @@ c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_0)_: = 0 c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_1)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_0) -1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) = 0 c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_2)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) -1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) = 0 c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_3)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_3) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) +1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) -1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_3) = 0 c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_4)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_4) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_3) -1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_4) = 0 c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_5)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_5) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_5) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) -1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_5) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_5) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_5) +1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_4) -1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_5) = 0 @@ -551,137 +551,137 @@ c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_5)_: c_u_SinkDSMDLRBlock_dr_logical_constraint(demand_dsm_0)_: +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) +1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) <= 0.5 c_u_SinkDSMDLRBlock_dr_logical_constraint(demand_dsm_1)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) <= 0.5 c_u_SinkDSMDLRBlock_dr_logical_constraint(demand_dsm_2)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) <= 0.5 c_u_SinkDSMDLRBlock_dr_logical_constraint(demand_dsm_3)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_3) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_3) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_3) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_3) <= 0.5 c_u_SinkDSMDLRBlock_dr_logical_constraint(demand_dsm_4)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_4) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_4) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_4) <= 0.5 c_u_SinkDSMDLRBlock_dr_logical_constraint(demand_dsm_5)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_5) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_5) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_5) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_5) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_5) ++1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) +1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_5) +1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_5) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_5) ++1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_5) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) ++1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_5) <= 0.5 bounds 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_3) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_3) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_4) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_4) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_5) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_5) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_5) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_5) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_5) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_4) <= +inf 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_5) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_3) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_4) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_5) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_3) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_4) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_shed(demand_dsm_5) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_1_5) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) <= +inf + 0 <= SinkDSMDLRBlock_dsm_up(demand_dsm_2_5) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_1) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_3) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_4) <= +inf + 0 <= SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_5) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_3) <= +inf + 0 <= flow(bus_elec_demand_dsm_4) <= +inf + 0 <= flow(bus_elec_demand_dsm_5) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_0) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) <= +inf 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) <= +inf diff --git a/tests/lp_files/dsm_module_oemof.lp b/tests/lp_files/dsm_module_oemof.lp index 416c4ee1b..a40037672 100644 --- a/tests/lp_files/dsm_module_oemof.lp +++ b/tests/lp_files/dsm_module_oemof.lp @@ -8,16 +8,16 @@ objective: s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 c_e_SinkDSMOemofBlock_shift_shed_vars(demand_dsm_0)_: @@ -34,21 +34,21 @@ c_e_SinkDSMOemofBlock_shift_shed_vars(demand_dsm_2)_: c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_0_0)_: +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_0) ++1 flow(bus_elec_demand_dsm_0) +1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) -1 SinkDSMOemofBlock_dsm_up(demand_dsm_0) = 1 c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_0_1)_: +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_1) ++1 flow(bus_elec_demand_dsm_1) +1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) -1 SinkDSMOemofBlock_dsm_up(demand_dsm_1) = 1 c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_0_2)_: +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_0_2) ++1 flow(bus_elec_demand_dsm_2) +1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) -1 SinkDSMOemofBlock_dsm_up(demand_dsm_2) = 1 @@ -91,9 +91,9 @@ bounds 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) <= +inf 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) <= +inf 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) <= +inf 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) <= +inf diff --git a/tests/lp_files/dsm_module_oemof_extended.lp b/tests/lp_files/dsm_module_oemof_extended.lp index 7d2eda425..6720fe240 100644 --- a/tests/lp_files/dsm_module_oemof_extended.lp +++ b/tests/lp_files/dsm_module_oemof_extended.lp @@ -3,48 +3,48 @@ min objective: +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) ++1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) ++1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) +100 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) ++100 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) ++100 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) +1 SinkDSMOemofBlock_dsm_up(demand_dsm_0) +1 SinkDSMOemofBlock_dsm_up(demand_dsm_1) -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) -+100 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) +1 SinkDSMOemofBlock_dsm_up(demand_dsm_2) -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) -+100 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_0_0)_: +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) +1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) -1 SinkDSMOemofBlock_dsm_up(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_0_1)_: --1 SinkDSMOemofBlock_dsm_up(demand_dsm_1) +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) +1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_1) +-1 SinkDSMOemofBlock_dsm_up(demand_dsm_1) ++1 flow(bus_elec_demand_dsm_1) = 0.9 c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_0_2)_: --1 SinkDSMOemofBlock_dsm_up(demand_dsm_2) +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) +1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_0_2) +-1 SinkDSMOemofBlock_dsm_up(demand_dsm_2) ++1 flow(bus_elec_demand_dsm_2) = 0.8 c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_0)_: @@ -76,22 +76,22 @@ c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_2)_: c_e_SinkDSMOemofBlock_dsm_sum_constraint(demand_dsm_0)_: -1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) +-1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) +0.99 SinkDSMOemofBlock_dsm_up(demand_dsm_0) +0.99 SinkDSMOemofBlock_dsm_up(demand_dsm_1) --1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) = 0 bounds 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) <= +inf 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) <= +inf 0 <= SinkDSMOemofBlock_dsm_up(demand_dsm_0) <= +inf 0 <= SinkDSMOemofBlock_dsm_up(demand_dsm_1) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMOemofBlock_dsm_up(demand_dsm_2) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf end diff --git a/tests/lp_files/dsm_module_oemof_extended_multi_period.lp b/tests/lp_files/dsm_module_oemof_extended_multi_period.lp index 745854ca7..1493fdc57 100644 --- a/tests/lp_files/dsm_module_oemof_extended_multi_period.lp +++ b/tests/lp_files/dsm_module_oemof_extended_multi_period.lp @@ -3,90 +3,90 @@ min objective: +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) ++1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) ++0.9803921568627451 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) ++0.9803921568627451 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_3) ++0.9611687812379853 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_4) ++0.9611687812379853 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_5) +100 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) ++100 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) ++98.0392156862745 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) ++98.0392156862745 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_3) ++96.11687812379853 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_4) ++96.11687812379853 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_5) +1 SinkDSMOemofBlock_dsm_up(demand_dsm_0) +1 SinkDSMOemofBlock_dsm_up(demand_dsm_1) -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) -+100 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) +0.9803921568627451 SinkDSMOemofBlock_dsm_up(demand_dsm_2) -+0.9803921568627451 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) -+98.0392156862745 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) +0.9803921568627451 SinkDSMOemofBlock_dsm_up(demand_dsm_3) -+0.9803921568627451 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_3) -+98.0392156862745 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_3) +0.9611687812379853 SinkDSMOemofBlock_dsm_up(demand_dsm_4) -+0.9611687812379853 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_4) -+96.11687812379853 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_4) +0.9611687812379853 SinkDSMOemofBlock_dsm_up(demand_dsm_5) -+0.9611687812379853 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_5) -+96.11687812379853 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_5) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) +c_e_BusBlock_balance(bus_elec_3)_: ++1 flow(bus_elec_demand_dsm_3) = 0 -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) +c_e_BusBlock_balance(bus_elec_4)_: ++1 flow(bus_elec_demand_dsm_4) = 0 -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) +c_e_BusBlock_balance(bus_elec_5)_: ++1 flow(bus_elec_demand_dsm_5) = 0 c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_0_0)_: +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) +1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) -1 SinkDSMOemofBlock_dsm_up(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_0_1)_: --1 SinkDSMOemofBlock_dsm_up(demand_dsm_1) +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) +1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_1) +-1 SinkDSMOemofBlock_dsm_up(demand_dsm_1) ++1 flow(bus_elec_demand_dsm_1) = 0.9 c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_1_2)_: --1 SinkDSMOemofBlock_dsm_up(demand_dsm_2) +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) +1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_1_2) +-1 SinkDSMOemofBlock_dsm_up(demand_dsm_2) ++1 flow(bus_elec_demand_dsm_2) = 0.8 c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_1_3)_: --1 SinkDSMOemofBlock_dsm_up(demand_dsm_3) +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_3) +1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_3) -+1 flow(bus_elec_demand_dsm_1_3) +-1 SinkDSMOemofBlock_dsm_up(demand_dsm_3) ++1 flow(bus_elec_demand_dsm_3) = 0.7 c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_2_4)_: --1 SinkDSMOemofBlock_dsm_up(demand_dsm_4) +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_4) +1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_4) -+1 flow(bus_elec_demand_dsm_2_4) +-1 SinkDSMOemofBlock_dsm_up(demand_dsm_4) ++1 flow(bus_elec_demand_dsm_4) = 0.7 c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_2_5)_: --1 SinkDSMOemofBlock_dsm_up(demand_dsm_5) +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_5) +1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_5) -+1 flow(bus_elec_demand_dsm_2_5) +-1 SinkDSMOemofBlock_dsm_up(demand_dsm_5) ++1 flow(bus_elec_demand_dsm_5) = 0.7 c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_0)_: @@ -145,48 +145,48 @@ c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_5)_: c_e_SinkDSMOemofBlock_dsm_sum_constraint(demand_dsm_0)_: -1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) +-1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) +0.99 SinkDSMOemofBlock_dsm_up(demand_dsm_0) +0.99 SinkDSMOemofBlock_dsm_up(demand_dsm_1) --1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) -= 0.0 += 0 c_e_SinkDSMOemofBlock_dsm_sum_constraint(demand_dsm_2)_: -+0.99 SinkDSMOemofBlock_dsm_up(demand_dsm_2) -1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) -+0.99 SinkDSMOemofBlock_dsm_up(demand_dsm_3) -1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_3) -= 0.0 ++0.99 SinkDSMOemofBlock_dsm_up(demand_dsm_2) ++0.99 SinkDSMOemofBlock_dsm_up(demand_dsm_3) += 0 c_e_SinkDSMOemofBlock_dsm_sum_constraint(demand_dsm_4)_: -+0.99 SinkDSMOemofBlock_dsm_up(demand_dsm_4) -1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_4) -+0.99 SinkDSMOemofBlock_dsm_up(demand_dsm_5) -1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_5) -= 0.0 ++0.99 SinkDSMOemofBlock_dsm_up(demand_dsm_4) ++0.99 SinkDSMOemofBlock_dsm_up(demand_dsm_5) += 0 bounds 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_3) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_4) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_5) <= +inf 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_3) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_4) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_5) <= +inf 0 <= SinkDSMOemofBlock_dsm_up(demand_dsm_0) <= +inf 0 <= SinkDSMOemofBlock_dsm_up(demand_dsm_1) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMOemofBlock_dsm_up(demand_dsm_2) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) <= +inf 0 <= SinkDSMOemofBlock_dsm_up(demand_dsm_3) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_3) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_3) <= +inf 0 <= SinkDSMOemofBlock_dsm_up(demand_dsm_4) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_4) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_4) <= +inf 0 <= SinkDSMOemofBlock_dsm_up(demand_dsm_5) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_5) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_5) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_3) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_4) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_5) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_3) <= +inf + 0 <= flow(bus_elec_demand_dsm_4) <= +inf + 0 <= flow(bus_elec_demand_dsm_5) <= +inf end diff --git a/tests/lp_files/dsm_module_oemof_invest.lp b/tests/lp_files/dsm_module_oemof_invest.lp index ca2a89296..fff0830d0 100644 --- a/tests/lp_files/dsm_module_oemof_invest.lp +++ b/tests/lp_files/dsm_module_oemof_invest.lp @@ -3,27 +3,27 @@ min objective: +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) ++1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) ++1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) +100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_0) ++100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) ++100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) +1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_0) +1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) -+100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) +1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) -+100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_0)_: @@ -35,21 +35,21 @@ c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_0_0)_: +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_0) -1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_0_1)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_1) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) ++1 flow(bus_elec_demand_dsm_1) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_0_2)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_0_2) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) ++1 flow(bus_elec_demand_dsm_2) = 1 c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_0_0)_: @@ -87,24 +87,24 @@ c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_0_2)_: c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_0)_: -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) +-1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) +1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_0) +1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) --1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) = 0 bounds 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_0) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(demand_dsm_0) <= +inf 33 <= SinkDSMOemofInvestmentBlock_invest(demand_dsm_0) <= 100 end diff --git a/tests/lp_files/dsm_module_oemof_invest_multi_period.lp b/tests/lp_files/dsm_module_oemof_invest_multi_period.lp index 47a17847e..dffeb504a 100644 --- a/tests/lp_files/dsm_module_oemof_invest_multi_period.lp +++ b/tests/lp_files/dsm_module_oemof_invest_multi_period.lp @@ -4,51 +4,51 @@ min objective: +2941.5609381007307 ONE_VAR_CONSTANT +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) ++1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) ++0.9803921568627451 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) ++0.9803921568627451 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_3) ++0.9611687812379853 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_4) ++0.9611687812379853 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_5) +100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_0) ++100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) ++98.0392156862745 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) ++98.0392156862745 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_3) ++96.11687812379853 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_4) ++96.11687812379853 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_5) +1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_0) +1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) -+100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) +0.9803921568627451 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) -+0.9803921568627451 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) -+98.0392156862745 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) +0.9803921568627451 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_3) -+0.9803921568627451 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_3) -+98.0392156862745 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_3) +0.9611687812379853 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_4) -+0.9611687812379853 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_4) -+96.11687812379853 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_4) +0.9611687812379853 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_5) -+0.9611687812379853 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_5) -+96.11687812379853 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_5) +76.46810240317063 SinkDSMOemofInvestmentBlock_invest(demand_dsm_0) +50.47234572422055 SinkDSMOemofInvestmentBlock_invest(demand_dsm_1) +24.986309764465627 SinkDSMOemofInvestmentBlock_invest(demand_dsm_2) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) +c_e_BusBlock_balance(bus_elec_3)_: ++1 flow(bus_elec_demand_dsm_3) = 0 -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) +c_e_BusBlock_balance(bus_elec_4)_: ++1 flow(bus_elec_demand_dsm_4) = 0 -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) +c_e_BusBlock_balance(bus_elec_5)_: ++1 flow(bus_elec_demand_dsm_5) = 0 c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_0)_: @@ -95,9 +95,9 @@ c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(demand_dsm_2)_: = 0 c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(demand_dsm_0)_: ++1 SinkDSMOemofInvestmentBlock_old(demand_dsm_0) -1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_0) -1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_0) -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_0) = 0 c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(demand_dsm_1)_: @@ -116,42 +116,42 @@ c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_0_0)_: +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_0) -1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_0_1)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_1) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) ++1 flow(bus_elec_demand_dsm_1) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_1_2)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_1_2) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) ++1 flow(bus_elec_demand_dsm_2) = 2 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_1_3)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_3) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_3) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_3) -+1 flow(bus_elec_demand_dsm_1_3) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_3) ++1 flow(bus_elec_demand_dsm_3) = 2 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_2_4)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_4) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_4) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_4) -+1 flow(bus_elec_demand_dsm_2_4) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_4) ++1 flow(bus_elec_demand_dsm_4) = 3 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_2_5)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_5) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_5) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_5) -+1 flow(bus_elec_demand_dsm_2_5) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_5) ++1 flow(bus_elec_demand_dsm_5) = 3 c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_0_0)_: @@ -222,23 +222,23 @@ c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_2_5)_: c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_0)_: -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) +-1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) +1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_0) +1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) --1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) = 0 c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_3) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_3) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_3) = 0 c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_4)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_4) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_4) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_5) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_5) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_4) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_5) = 0 c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(demand_dsm_0)_: @@ -260,36 +260,37 @@ c_l_SinkDSMOemofInvestmentBlock_overall_minimum(demand_dsm)_: bounds 1 <= ONE_VAR_CONSTANT <= 1 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_3) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_4) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_5) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_0) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_3) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_4) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_5) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_3) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_3) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_3) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_4) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_4) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_4) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_5) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_5) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_5) <= +inf 33 <= SinkDSMOemofInvestmentBlock_invest(demand_dsm_0) <= 100 33 <= SinkDSMOemofInvestmentBlock_invest(demand_dsm_1) <= 100 33 <= SinkDSMOemofInvestmentBlock_invest(demand_dsm_2) <= 100 - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_3) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_4) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_5) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_3) <= +inf + 0 <= flow(bus_elec_demand_dsm_4) <= +inf + 0 <= flow(bus_elec_demand_dsm_5) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(demand_dsm_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(demand_dsm_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_1) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(demand_dsm_2) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_0) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_1) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_2) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_1) <= +inf @@ -297,5 +298,4 @@ bounds 0 <= SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_1) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_0) <= +inf end diff --git a/tests/lp_files/dsm_module_oemof_invest_multi_period_remaining_value.lp b/tests/lp_files/dsm_module_oemof_invest_multi_period_remaining_value.lp index 5b31f8473..77c32e736 100644 --- a/tests/lp_files/dsm_module_oemof_invest_multi_period_remaining_value.lp +++ b/tests/lp_files/dsm_module_oemof_invest_multi_period_remaining_value.lp @@ -4,51 +4,51 @@ min objective: +2941.5609381007307 ONE_VAR_CONSTANT +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) ++1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) ++0.9803921568627451 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) ++0.9803921568627451 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_3) ++0.9611687812379853 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_4) ++0.9611687812379853 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_5) +100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_0) ++100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) ++98.0392156862745 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) ++98.0392156862745 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_3) ++96.11687812379853 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_4) ++96.11687812379853 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_5) +1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_0) +1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) -+100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) +0.9803921568627451 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) -+0.9803921568627451 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) -+98.0392156862745 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) +0.9803921568627451 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_3) -+0.9803921568627451 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_3) -+98.0392156862745 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_3) +0.9611687812379853 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_4) -+0.9611687812379853 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_4) -+96.11687812379853 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_4) +0.9611687812379853 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_5) -+0.9611687812379853 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_5) -+96.11687812379853 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_5) +57.62165571222974 SinkDSMOemofInvestmentBlock_invest(demand_dsm_0) +39.8850096825295 SinkDSMOemofInvestmentBlock_invest(demand_dsm_1) +23.833722936524442 SinkDSMOemofInvestmentBlock_invest(demand_dsm_2) s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) +c_e_BusBlock_balance(bus_elec_3)_: ++1 flow(bus_elec_demand_dsm_3) = 0 -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) +c_e_BusBlock_balance(bus_elec_4)_: ++1 flow(bus_elec_demand_dsm_4) = 0 -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) +c_e_BusBlock_balance(bus_elec_5)_: ++1 flow(bus_elec_demand_dsm_5) = 0 c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_0)_: @@ -95,9 +95,9 @@ c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(demand_dsm_2)_: = 0 c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(demand_dsm_0)_: ++1 SinkDSMOemofInvestmentBlock_old(demand_dsm_0) -1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_0) -1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_0) -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_0) = 0 c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(demand_dsm_1)_: @@ -116,42 +116,42 @@ c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_0_0)_: +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_0) -1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_0) ++1 flow(bus_elec_demand_dsm_0) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_0_1)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_1) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) ++1 flow(bus_elec_demand_dsm_1) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_1_2)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_1_2) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) ++1 flow(bus_elec_demand_dsm_2) = 2 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_1_3)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_3) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_3) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_3) -+1 flow(bus_elec_demand_dsm_1_3) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_3) ++1 flow(bus_elec_demand_dsm_3) = 2 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_2_4)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_4) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_4) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_4) -+1 flow(bus_elec_demand_dsm_2_4) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_4) ++1 flow(bus_elec_demand_dsm_4) = 3 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_2_5)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_5) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_5) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_5) -+1 flow(bus_elec_demand_dsm_2_5) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_5) ++1 flow(bus_elec_demand_dsm_5) = 3 c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_0_0)_: @@ -222,23 +222,23 @@ c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_2_5)_: c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_0)_: -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) +-1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) +1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_0) +1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) --1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) = 0 c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_3) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_3) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_3) = 0 c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_4)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_4) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_4) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_5) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_5) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_4) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_5) = 0 c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(demand_dsm_0)_: @@ -260,36 +260,37 @@ c_l_SinkDSMOemofInvestmentBlock_overall_minimum(demand_dsm)_: bounds 1 <= ONE_VAR_CONSTANT <= 1 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_3) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_4) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_5) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_0) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_3) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_4) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_5) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_3) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_3) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_3) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_4) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_4) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_4) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_5) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_5) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_5) <= +inf 33 <= SinkDSMOemofInvestmentBlock_invest(demand_dsm_0) <= 100 33 <= SinkDSMOemofInvestmentBlock_invest(demand_dsm_1) <= 100 33 <= SinkDSMOemofInvestmentBlock_invest(demand_dsm_2) <= 100 - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_3) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_4) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_5) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_3) <= +inf + 0 <= flow(bus_elec_demand_dsm_4) <= +inf + 0 <= flow(bus_elec_demand_dsm_5) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(demand_dsm_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(demand_dsm_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_1) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(demand_dsm_2) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_0) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_1) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_2) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_1) <= +inf @@ -297,5 +298,4 @@ bounds 0 <= SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_1) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_0) <= +inf end diff --git a/tests/lp_files/dsm_module_oemof_multi_period.lp b/tests/lp_files/dsm_module_oemof_multi_period.lp index 225e20da6..6ace1e5a3 100644 --- a/tests/lp_files/dsm_module_oemof_multi_period.lp +++ b/tests/lp_files/dsm_module_oemof_multi_period.lp @@ -11,28 +11,28 @@ objective: s.t. -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) +c_e_BusBlock_balance(bus_elec_0)_: ++1 flow(bus_elec_demand_dsm_0) = 0 -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) +c_e_BusBlock_balance(bus_elec_1)_: ++1 flow(bus_elec_demand_dsm_1) = 0 -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) +c_e_BusBlock_balance(bus_elec_2)_: ++1 flow(bus_elec_demand_dsm_2) = 0 -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) +c_e_BusBlock_balance(bus_elec_3)_: ++1 flow(bus_elec_demand_dsm_3) = 0 -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) +c_e_BusBlock_balance(bus_elec_4)_: ++1 flow(bus_elec_demand_dsm_4) = 0 -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) +c_e_BusBlock_balance(bus_elec_5)_: ++1 flow(bus_elec_demand_dsm_5) = 0 c_e_SinkDSMOemofBlock_shift_shed_vars(demand_dsm_0)_: @@ -61,44 +61,44 @@ c_e_SinkDSMOemofBlock_shift_shed_vars(demand_dsm_5)_: c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_0_0)_: +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_0) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) -1 SinkDSMOemofBlock_dsm_up(demand_dsm_0) ++1 flow(bus_elec_demand_dsm_0) ++1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) = 1 c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_0_1)_: +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_1) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) -1 SinkDSMOemofBlock_dsm_up(demand_dsm_1) ++1 flow(bus_elec_demand_dsm_1) ++1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) = 1 c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_1_2)_: +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_1_2) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) -1 SinkDSMOemofBlock_dsm_up(demand_dsm_2) ++1 flow(bus_elec_demand_dsm_2) ++1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) = 1 c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_1_3)_: +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_3) -+1 flow(bus_elec_demand_dsm_1_3) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_3) -1 SinkDSMOemofBlock_dsm_up(demand_dsm_3) ++1 flow(bus_elec_demand_dsm_3) ++1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_3) = 1 c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_2_4)_: +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_4) -+1 flow(bus_elec_demand_dsm_2_4) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_4) -1 SinkDSMOemofBlock_dsm_up(demand_dsm_4) ++1 flow(bus_elec_demand_dsm_4) ++1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_4) = 1 c_e_SinkDSMOemofBlock_input_output_relation(demand_dsm_2_5)_: +1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_5) -+1 flow(bus_elec_demand_dsm_2_5) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_5) -1 SinkDSMOemofBlock_dsm_up(demand_dsm_5) ++1 flow(bus_elec_demand_dsm_5) ++1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_5) = 1 c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_0)_: @@ -183,22 +183,22 @@ bounds 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_3) <= +inf 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_4) <= +inf 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_5) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_0) <= +inf - 0 <= flow(bus_elec_demand_dsm_0_1) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_2) <= +inf - 0 <= flow(bus_elec_demand_dsm_1_3) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_4) <= +inf - 0 <= flow(bus_elec_demand_dsm_2_5) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_3) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_4) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_5) <= +inf 0 <= SinkDSMOemofBlock_dsm_up(demand_dsm_0) <= +inf 0 <= SinkDSMOemofBlock_dsm_up(demand_dsm_1) <= +inf 0 <= SinkDSMOemofBlock_dsm_up(demand_dsm_2) <= +inf 0 <= SinkDSMOemofBlock_dsm_up(demand_dsm_3) <= +inf 0 <= SinkDSMOemofBlock_dsm_up(demand_dsm_4) <= +inf 0 <= SinkDSMOemofBlock_dsm_up(demand_dsm_5) <= +inf + 0 <= flow(bus_elec_demand_dsm_0) <= +inf + 0 <= flow(bus_elec_demand_dsm_1) <= +inf + 0 <= flow(bus_elec_demand_dsm_2) <= +inf + 0 <= flow(bus_elec_demand_dsm_3) <= +inf + 0 <= flow(bus_elec_demand_dsm_4) <= +inf + 0 <= flow(bus_elec_demand_dsm_5) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_3) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_4) <= +inf + 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_5) <= +inf end diff --git a/tests/lp_files/emission_budget_limit.lp b/tests/lp_files/emission_budget_limit.lp index cbe106b68..825ded62d 100644 --- a/tests/lp_files/emission_budget_limit.lp +++ b/tests/lp_files/emission_budget_limit.lp @@ -7,32 +7,32 @@ objective: s.t. c_u_integral_limit_emission_factor_constraint_: -+0.5 flow(source1_electricityBus_0_0) --1.0 flow(source1_electricityBus_0_1) -+2.0 flow(source1_electricityBus_1_2) -+1 flow(source1_electricityBus_1_3) -+0.5 flow(source1_electricityBus_2_4) -+0.5 flow(source1_electricityBus_2_5) -+3.5 flow(source2_electricityBus_0_0) -+3.5 flow(source2_electricityBus_0_1) -+3.5 flow(source2_electricityBus_1_2) -+3.5 flow(source2_electricityBus_1_3) -+3.5 flow(source2_electricityBus_2_4) -+3.5 flow(source2_electricityBus_2_5) ++0.5 flow(source1_electricityBus_0) +-1.0 flow(source1_electricityBus_1) ++2.0 flow(source1_electricityBus_2) ++1 flow(source1_electricityBus_3) ++0.5 flow(source1_electricityBus_4) ++0.5 flow(source1_electricityBus_5) ++3.5 flow(source2_electricityBus_0) ++3.5 flow(source2_electricityBus_1) ++3.5 flow(source2_electricityBus_2) ++3.5 flow(source2_electricityBus_3) ++3.5 flow(source2_electricityBus_4) ++3.5 flow(source2_electricityBus_5) <= 777 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(source1_electricityBus_0_0) <= 100 - 0 <= flow(source1_electricityBus_0_1) <= 100 - 0 <= flow(source1_electricityBus_1_2) <= 100 - 0 <= flow(source1_electricityBus_1_3) <= 100 - 0 <= flow(source1_electricityBus_2_4) <= 100 - 0 <= flow(source1_electricityBus_2_5) <= 100 - 0 <= flow(source2_electricityBus_0_0) <= 100 - 0 <= flow(source2_electricityBus_0_1) <= 100 - 0 <= flow(source2_electricityBus_1_2) <= 100 - 0 <= flow(source2_electricityBus_1_3) <= 100 - 0 <= flow(source2_electricityBus_2_4) <= 100 - 0 <= flow(source2_electricityBus_2_5) <= 100 + 0 <= flow(source1_electricityBus_0) <= 100 + 0 <= flow(source1_electricityBus_1) <= 100 + 0 <= flow(source1_electricityBus_2) <= 100 + 0 <= flow(source1_electricityBus_3) <= 100 + 0 <= flow(source1_electricityBus_4) <= 100 + 0 <= flow(source1_electricityBus_5) <= 100 + 0 <= flow(source2_electricityBus_0) <= 100 + 0 <= flow(source2_electricityBus_1) <= 100 + 0 <= flow(source2_electricityBus_2) <= 100 + 0 <= flow(source2_electricityBus_3) <= 100 + 0 <= flow(source2_electricityBus_4) <= 100 + 0 <= flow(source2_electricityBus_5) <= 100 end diff --git a/tests/lp_files/emission_limit.lp b/tests/lp_files/emission_limit.lp index 8d00d7c36..373339e8a 100644 --- a/tests/lp_files/emission_limit.lp +++ b/tests/lp_files/emission_limit.lp @@ -7,41 +7,41 @@ objective: s.t. c_u_integral_limit_emission_factor_constraint_: -+0.5 flow(source1_electricityBus_0_0) --1.0 flow(source1_electricityBus_0_1) -+2.0 flow(source1_electricityBus_0_2) -+3.5 flow(source2_electricityBus_0_0) -+3.5 flow(source2_electricityBus_0_1) -+3.5 flow(source2_electricityBus_0_2) ++0.5 flow(source1_electricityBus_0) +-1.0 flow(source1_electricityBus_1) ++2.0 flow(source1_electricityBus_2) ++3.5 flow(source2_electricityBus_0) ++3.5 flow(source2_electricityBus_1) ++3.5 flow(source2_electricityBus_2) <= 777 -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(source1_electricityBus_0_0) -+1 flow(source2_electricityBus_0_0) -+1 flow(source3_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(source1_electricityBus_0) ++1 flow(source2_electricityBus_0) ++1 flow(source3_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(source1_electricityBus_0_1) -+1 flow(source2_electricityBus_0_1) -+1 flow(source3_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(source1_electricityBus_1) ++1 flow(source2_electricityBus_1) ++1 flow(source3_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(source1_electricityBus_0_2) -+1 flow(source2_electricityBus_0_2) -+1 flow(source3_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(source1_electricityBus_2) ++1 flow(source2_electricityBus_2) ++1 flow(source3_electricityBus_2) = 0 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(source1_electricityBus_0_0) <= 100 - 0 <= flow(source1_electricityBus_0_1) <= 100 - 0 <= flow(source1_electricityBus_0_2) <= 100 - 0 <= flow(source2_electricityBus_0_0) <= 100 - 0 <= flow(source2_electricityBus_0_1) <= 100 - 0 <= flow(source2_electricityBus_0_2) <= 100 - 0 <= flow(source3_electricityBus_0_0) <= 100 - 0 <= flow(source3_electricityBus_0_1) <= 100 - 0 <= flow(source3_electricityBus_0_2) <= 100 + 0 <= flow(source1_electricityBus_0) <= 100 + 0 <= flow(source1_electricityBus_1) <= 100 + 0 <= flow(source1_electricityBus_2) <= 100 + 0 <= flow(source2_electricityBus_0) <= 100 + 0 <= flow(source2_electricityBus_1) <= 100 + 0 <= flow(source2_electricityBus_2) <= 100 + 0 <= flow(source3_electricityBus_0) <= 100 + 0 <= flow(source3_electricityBus_1) <= 100 + 0 <= flow(source3_electricityBus_2) <= 100 end diff --git a/tests/lp_files/emission_limit_no_error.lp b/tests/lp_files/emission_limit_no_error.lp index 564aadb05..bbf05d19d 100644 --- a/tests/lp_files/emission_limit_no_error.lp +++ b/tests/lp_files/emission_limit_no_error.lp @@ -7,32 +7,32 @@ objective: s.t. c_u_integral_limit_emission_factor_constraint_: -+0.8 flow(source1_electricityBus_0_0) -+0.8 flow(source1_electricityBus_0_1) -+0.8 flow(source1_electricityBus_0_2) ++0.8 flow(source1_electricityBus_0) ++0.8 flow(source1_electricityBus_1) ++0.8 flow(source1_electricityBus_2) <= 777 -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(source1_electricityBus_0_0) -+1 flow(source2_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(source1_electricityBus_0) ++1 flow(source2_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(source1_electricityBus_0_1) -+1 flow(source2_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(source1_electricityBus_1) ++1 flow(source2_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(source1_electricityBus_0_2) -+1 flow(source2_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(source1_electricityBus_2) ++1 flow(source2_electricityBus_2) = 0 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(source1_electricityBus_0_0) <= 100 - 0 <= flow(source1_electricityBus_0_1) <= 100 - 0 <= flow(source1_electricityBus_0_2) <= 100 - 0 <= flow(source2_electricityBus_0_0) <= 100 - 0 <= flow(source2_electricityBus_0_1) <= 100 - 0 <= flow(source2_electricityBus_0_2) <= 100 + 0 <= flow(source1_electricityBus_0) <= 100 + 0 <= flow(source1_electricityBus_1) <= 100 + 0 <= flow(source1_electricityBus_2) <= 100 + 0 <= flow(source2_electricityBus_0) <= 100 + 0 <= flow(source2_electricityBus_1) <= 100 + 0 <= flow(source2_electricityBus_2) <= 100 end diff --git a/tests/lp_files/equate_flows.lp b/tests/lp_files/equate_flows.lp index 950d932e8..cbde310e2 100644 --- a/tests/lp_files/equate_flows.lp +++ b/tests/lp_files/equate_flows.lp @@ -2,62 +2,62 @@ min objective: -+2 flow(Bus1_Sink_0_0) -+2 flow(Bus1_Sink_0_1) -+2 flow(Bus1_Sink_0_2) -+2 flow(Source1_Bus1_0_0) -+2 flow(Source1_Bus1_0_1) -+2 flow(Source1_Bus1_0_2) -+10 flow(Source2_Bus1_0_0) -+10 flow(Source2_Bus1_0_1) -+10 flow(Source2_Bus1_0_2) ++2 flow(Bus1_Sink_0) ++2 flow(Bus1_Sink_1) ++2 flow(Bus1_Sink_2) ++2 flow(Source1_Bus1_0) ++2 flow(Source1_Bus1_1) ++2 flow(Source1_Bus1_2) ++10 flow(Source2_Bus1_0) ++10 flow(Source2_Bus1_1) ++10 flow(Source2_Bus1_2) s.t. -c_e_equate_flows(0_0)_: --1 flow(Bus1_Sink_0_0) -+2 flow(Source1_Bus1_0_0) -+2 flow(Source2_Bus1_0_0) +c_e_equate_flows(0)_: +-1 flow(Bus1_Sink_0) ++2 flow(Source1_Bus1_0) ++2 flow(Source2_Bus1_0) = 0 -c_e_equate_flows(0_1)_: --1 flow(Bus1_Sink_0_1) -+2 flow(Source1_Bus1_0_1) -+2 flow(Source2_Bus1_0_1) +c_e_equate_flows(1)_: +-1 flow(Bus1_Sink_1) ++2 flow(Source1_Bus1_1) ++2 flow(Source2_Bus1_1) = 0 -c_e_equate_flows(0_2)_: --1 flow(Bus1_Sink_0_2) -+2 flow(Source1_Bus1_0_2) -+2 flow(Source2_Bus1_0_2) +c_e_equate_flows(2)_: +-1 flow(Bus1_Sink_2) ++2 flow(Source1_Bus1_2) ++2 flow(Source2_Bus1_2) = 0 -c_e_BusBlock_balance(Bus1_0_0)_: --1 flow(Bus1_Sink_0_0) -+1 flow(Source1_Bus1_0_0) -+1 flow(Source2_Bus1_0_0) +c_e_BusBlock_balance(Bus1_0)_: +-1 flow(Bus1_Sink_0) ++1 flow(Source1_Bus1_0) ++1 flow(Source2_Bus1_0) = 0 -c_e_BusBlock_balance(Bus1_0_1)_: --1 flow(Bus1_Sink_0_1) -+1 flow(Source1_Bus1_0_1) -+1 flow(Source2_Bus1_0_1) +c_e_BusBlock_balance(Bus1_1)_: +-1 flow(Bus1_Sink_1) ++1 flow(Source1_Bus1_1) ++1 flow(Source2_Bus1_1) = 0 -c_e_BusBlock_balance(Bus1_0_2)_: --1 flow(Bus1_Sink_0_2) -+1 flow(Source1_Bus1_0_2) -+1 flow(Source2_Bus1_0_2) +c_e_BusBlock_balance(Bus1_2)_: +-1 flow(Bus1_Sink_2) ++1 flow(Source1_Bus1_2) ++1 flow(Source2_Bus1_2) = 0 bounds - 0 <= flow(Bus1_Sink_0_0) <= 300 - 0 <= flow(Bus1_Sink_0_1) <= 300 - 0 <= flow(Bus1_Sink_0_2) <= 300 - 0 <= flow(Source1_Bus1_0_0) <= 400 - 0 <= flow(Source1_Bus1_0_1) <= 400 - 0 <= flow(Source1_Bus1_0_2) <= 400 - 0 <= flow(Source2_Bus1_0_0) <= 200 - 0 <= flow(Source2_Bus1_0_1) <= 200 - 0 <= flow(Source2_Bus1_0_2) <= 200 + 0 <= flow(Bus1_Sink_0) <= 300 + 0 <= flow(Bus1_Sink_1) <= 300 + 0 <= flow(Bus1_Sink_2) <= 300 + 0 <= flow(Source1_Bus1_0) <= 400 + 0 <= flow(Source1_Bus1_1) <= 400 + 0 <= flow(Source1_Bus1_2) <= 400 + 0 <= flow(Source2_Bus1_0) <= 200 + 0 <= flow(Source2_Bus1_1) <= 200 + 0 <= flow(Source2_Bus1_2) <= 200 end diff --git a/tests/lp_files/fixed_costs_sources.lp b/tests/lp_files/fixed_costs_sources.lp index 004e64ad8..8629b5295 100644 --- a/tests/lp_files/fixed_costs_sources.lp +++ b/tests/lp_files/fixed_costs_sources.lp @@ -2,7 +2,7 @@ min objective: -+235.90542099192615 ONE_VAR_CONSTANT ++235.90542099192618 ONE_VAR_CONSTANT +25 flow(pv_forever_electricityBus_0_0) +25 flow(pv_forever_electricityBus_0_1) +24.509803921568626 flow(pv_forever_electricityBus_1_2) diff --git a/tests/lp_files/fixed_source_invest_sink.lp b/tests/lp_files/fixed_source_invest_sink.lp index 7e36eb90b..1a836007d 100644 --- a/tests/lp_files/fixed_source_invest_sink.lp +++ b/tests/lp_files/fixed_source_invest_sink.lp @@ -3,22 +3,22 @@ min objective: +500 InvestmentFlowBlock_invest(electricityBus_excess_0) -+25 flow(electricityBus_excess_0_0) -+25 flow(electricityBus_excess_0_1) -+25 flow(electricityBus_excess_0_2) ++25 flow(electricityBus_excess_0) ++25 flow(electricityBus_excess_1) ++25 flow(electricityBus_excess_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_excess_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_excess_0) = -12000000.0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_excess_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_excess_1) = -16000000.0 -c_e_BusBlock_balance(electricityBus_0_2)_: --1 flow(electricityBus_excess_0_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_excess_2) = -14000000.0 c_e_InvestmentFlowBlock_total_rule(electricityBus_excess_0)_: @@ -27,31 +27,31 @@ c_e_InvestmentFlowBlock_total_rule(electricityBus_excess_0)_: = 50 c_u_InvestmentFlowBlock_max(electricityBus_excess_0_0)_: -+1 flow(electricityBus_excess_0_0) ++1 flow(electricityBus_excess_0) -0.8 InvestmentFlowBlock_total(electricityBus_excess_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_excess_0_1)_: -+1 flow(electricityBus_excess_0_1) ++1 flow(electricityBus_excess_1) -0.8 InvestmentFlowBlock_total(electricityBus_excess_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_excess_0_2)_: -+1 flow(electricityBus_excess_0_2) ++1 flow(electricityBus_excess_2) -0.8 InvestmentFlowBlock_total(electricityBus_excess_0) <= 0 c_u_InvestmentFlowBlock_full_load_time_max(electricityBus_excess)_: -+1 flow(electricityBus_excess_0_0) -+1 flow(electricityBus_excess_0_1) -+1 flow(electricityBus_excess_0_2) ++1 flow(electricityBus_excess_0) ++1 flow(electricityBus_excess_1) ++1 flow(electricityBus_excess_2) -2.3 InvestmentFlowBlock_total(electricityBus_excess_0) <= 0 bounds 0 <= InvestmentFlowBlock_invest(electricityBus_excess_0) <= 1000000.0 - 0 <= flow(electricityBus_excess_0_0) <= +inf - 0 <= flow(electricityBus_excess_0_1) <= +inf - 0 <= flow(electricityBus_excess_0_2) <= +inf + 0 <= flow(electricityBus_excess_0) <= +inf + 0 <= flow(electricityBus_excess_1) <= +inf + 0 <= flow(electricityBus_excess_2) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_excess_0) <= +inf end diff --git a/tests/lp_files/fixed_source_invest_sink_multi_period.lp b/tests/lp_files/fixed_source_invest_sink_multi_period.lp index af511ec32..3959ce6eb 100644 --- a/tests/lp_files/fixed_source_invest_sink_multi_period.lp +++ b/tests/lp_files/fixed_source_invest_sink_multi_period.lp @@ -5,37 +5,37 @@ objective: +88.1844182057801 InvestmentFlowBlock_invest(electricityBus_excess_0) +58.20563481102971 InvestmentFlowBlock_invest(electricityBus_excess_1) +28.814670698529593 InvestmentFlowBlock_invest(electricityBus_excess_2) -+25 flow(electricityBus_excess_0_0) -+25 flow(electricityBus_excess_0_1) -+24.509803921568626 flow(electricityBus_excess_1_2) -+24.509803921568626 flow(electricityBus_excess_1_3) -+24.029219530949632 flow(electricityBus_excess_2_4) -+24.029219530949632 flow(electricityBus_excess_2_5) ++25 flow(electricityBus_excess_0) ++25 flow(electricityBus_excess_1) ++24.509803921568626 flow(electricityBus_excess_2) ++24.509803921568626 flow(electricityBus_excess_3) ++24.029219530949632 flow(electricityBus_excess_4) ++24.029219530949632 flow(electricityBus_excess_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_excess_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_excess_0) = -12000000.0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_excess_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_excess_1) = -16000000.0 -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_excess_1_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_excess_2) = -14000000.0 -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_excess_1_3) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_excess_3) = -18000000.0 -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_excess_2_4) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_excess_4) = -18000000.0 -c_e_BusBlock_balance(electricityBus_2_5)_: --1 flow(electricityBus_excess_2_5) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_excess_5) = -18000000.0 c_e_InvestmentFlowBlock_total_rule(electricityBus_excess_0)_: @@ -82,9 +82,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_excess_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_excess_0)_: ++1 InvestmentFlowBlock_old(electricityBus_excess_0) -1 InvestmentFlowBlock_old_end(electricityBus_excess_0) -1 InvestmentFlowBlock_old_exo(electricityBus_excess_0) -+1 InvestmentFlowBlock_old(electricityBus_excess_0) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_excess_1)_: @@ -100,61 +100,62 @@ c_e_InvestmentFlowBlock_old_rule(electricityBus_excess_2)_: = 0 c_u_InvestmentFlowBlock_max(electricityBus_excess_0_0)_: -+1 flow(electricityBus_excess_0_0) ++1 flow(electricityBus_excess_0) -0.8 InvestmentFlowBlock_total(electricityBus_excess_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_excess_0_1)_: -+1 flow(electricityBus_excess_0_1) ++1 flow(electricityBus_excess_1) -0.8 InvestmentFlowBlock_total(electricityBus_excess_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_excess_1_2)_: -+1 flow(electricityBus_excess_1_2) ++1 flow(electricityBus_excess_2) -0.8 InvestmentFlowBlock_total(electricityBus_excess_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_excess_1_3)_: -+1 flow(electricityBus_excess_1_3) ++1 flow(electricityBus_excess_3) -0.8 InvestmentFlowBlock_total(electricityBus_excess_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_excess_2_4)_: -+1 flow(electricityBus_excess_2_4) ++1 flow(electricityBus_excess_4) -0.8 InvestmentFlowBlock_total(electricityBus_excess_2) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_excess_2_5)_: -+1 flow(electricityBus_excess_2_5) ++1 flow(electricityBus_excess_5) -0.8 InvestmentFlowBlock_total(electricityBus_excess_2) <= 0 c_u_InvestmentFlowBlock_full_load_time_max(electricityBus_excess)_: -+1 flow(electricityBus_excess_0_0) -+1 flow(electricityBus_excess_0_1) -+1 flow(electricityBus_excess_1_2) -+1 flow(electricityBus_excess_1_3) -+1 flow(electricityBus_excess_2_4) -+1 flow(electricityBus_excess_2_5) ++1 flow(electricityBus_excess_0) ++1 flow(electricityBus_excess_1) ++1 flow(electricityBus_excess_2) ++1 flow(electricityBus_excess_3) ++1 flow(electricityBus_excess_4) ++1 flow(electricityBus_excess_5) -2.3 InvestmentFlowBlock_total(electricityBus_excess_0) -2.3 InvestmentFlowBlock_total(electricityBus_excess_1) -2.3 InvestmentFlowBlock_total(electricityBus_excess_2) -<= 0.0 +<= 0 bounds 0 <= InvestmentFlowBlock_invest(electricityBus_excess_0) <= 1000000.0 0 <= InvestmentFlowBlock_invest(electricityBus_excess_1) <= 1000000.0 0 <= InvestmentFlowBlock_invest(electricityBus_excess_2) <= 1000000.0 - 0 <= flow(electricityBus_excess_0_0) <= +inf - 0 <= flow(electricityBus_excess_0_1) <= +inf - 0 <= flow(electricityBus_excess_1_2) <= +inf - 0 <= flow(electricityBus_excess_1_3) <= +inf - 0 <= flow(electricityBus_excess_2_4) <= +inf - 0 <= flow(electricityBus_excess_2_5) <= +inf + 0 <= flow(electricityBus_excess_0) <= +inf + 0 <= flow(electricityBus_excess_1) <= +inf + 0 <= flow(electricityBus_excess_2) <= +inf + 0 <= flow(electricityBus_excess_3) <= +inf + 0 <= flow(electricityBus_excess_4) <= +inf + 0 <= flow(electricityBus_excess_5) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_excess_0) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_excess_1) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_excess_1) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_excess_2) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_excess_0) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_excess_1) <= +inf 0 <= InvestmentFlowBlock_old(electricityBus_excess_2) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_excess_0) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_excess_1) <= +inf @@ -162,5 +163,4 @@ bounds 0 <= InvestmentFlowBlock_old_exo(electricityBus_excess_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_excess_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_excess_2) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_excess_0) <= +inf end diff --git a/tests/lp_files/fixed_source_variable_sink.lp b/tests/lp_files/fixed_source_variable_sink.lp index 064e7f06a..b2da930f0 100644 --- a/tests/lp_files/fixed_source_variable_sink.lp +++ b/tests/lp_files/fixed_source_variable_sink.lp @@ -2,26 +2,26 @@ min objective: -+40 flow(electricityBus_excess_0_0) -+40 flow(electricityBus_excess_0_1) -+40 flow(electricityBus_excess_0_2) ++40 flow(electricityBus_excess_0) ++40 flow(electricityBus_excess_1) ++40 flow(electricityBus_excess_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_excess_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_excess_0) = -430000.0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_excess_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_excess_1) = -720000.0 -c_e_BusBlock_balance(electricityBus_0_2)_: --1 flow(electricityBus_excess_0_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_excess_2) = -290000.0 bounds - 0 <= flow(electricityBus_excess_0_0) <= +inf - 0 <= flow(electricityBus_excess_0_1) <= +inf - 0 <= flow(electricityBus_excess_0_2) <= +inf + 0 <= flow(electricityBus_excess_0) <= +inf + 0 <= flow(electricityBus_excess_1) <= +inf + 0 <= flow(electricityBus_excess_2) <= +inf end diff --git a/tests/lp_files/fixed_source_variable_sink_multi_period.lp b/tests/lp_files/fixed_source_variable_sink_multi_period.lp index f86665232..c4b93ed4b 100644 --- a/tests/lp_files/fixed_source_variable_sink_multi_period.lp +++ b/tests/lp_files/fixed_source_variable_sink_multi_period.lp @@ -2,44 +2,44 @@ min objective: -+40 flow(electricityBus_excess_0_0) -+40 flow(electricityBus_excess_0_1) -+39.2156862745098 flow(electricityBus_excess_1_2) -+39.2156862745098 flow(electricityBus_excess_1_3) -+38.446751249519416 flow(electricityBus_excess_2_4) -+38.446751249519416 flow(electricityBus_excess_2_5) ++40 flow(electricityBus_excess_0) ++40 flow(electricityBus_excess_1) ++39.2156862745098 flow(electricityBus_excess_2) ++39.2156862745098 flow(electricityBus_excess_3) ++38.446751249519416 flow(electricityBus_excess_4) ++38.446751249519416 flow(electricityBus_excess_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_excess_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_excess_0) = -430000.0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_excess_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_excess_1) = -720000.0 -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_excess_1_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_excess_2) = -290000.0 -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_excess_1_3) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_excess_3) = -330000.0 -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_excess_2_4) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_excess_4) = -330000.0 -c_e_BusBlock_balance(electricityBus_2_5)_: --1 flow(electricityBus_excess_2_5) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_excess_5) = -330000.0 bounds - 0 <= flow(electricityBus_excess_0_0) <= +inf - 0 <= flow(electricityBus_excess_0_1) <= +inf - 0 <= flow(electricityBus_excess_1_2) <= +inf - 0 <= flow(electricityBus_excess_1_3) <= +inf - 0 <= flow(electricityBus_excess_2_4) <= +inf - 0 <= flow(electricityBus_excess_2_5) <= +inf + 0 <= flow(electricityBus_excess_0) <= +inf + 0 <= flow(electricityBus_excess_1) <= +inf + 0 <= flow(electricityBus_excess_2) <= +inf + 0 <= flow(electricityBus_excess_3) <= +inf + 0 <= flow(electricityBus_excess_4) <= +inf + 0 <= flow(electricityBus_excess_5) <= +inf end diff --git a/tests/lp_files/flow_count_limit.lp b/tests/lp_files/flow_count_limit.lp index b4e80d20e..499d88d04 100644 --- a/tests/lp_files/flow_count_limit.lp +++ b/tests/lp_files/flow_count_limit.lp @@ -24,25 +24,25 @@ c_e_emission_factor_constraint(2)_: -1 emission_factor(2) = 0 -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(source4_electricityBus_0_0) -+1 flow(source2_electricityBus_0_0) -+1 flow(source1_electricityBus_0_0) -+1 flow(source3_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(source1_electricityBus_0) ++1 flow(source2_electricityBus_0) ++1 flow(source3_electricityBus_0) ++1 flow(source4_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(source4_electricityBus_0_1) -+1 flow(source2_electricityBus_0_1) -+1 flow(source1_electricityBus_0_1) -+1 flow(source3_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(source1_electricityBus_1) ++1 flow(source2_electricityBus_1) ++1 flow(source3_electricityBus_1) ++1 flow(source4_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(source4_electricityBus_0_2) -+1 flow(source2_electricityBus_0_2) -+1 flow(source1_electricityBus_0_2) -+1 flow(source3_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(source1_electricityBus_2) ++1 flow(source2_electricityBus_2) ++1 flow(source3_electricityBus_2) ++1 flow(source4_electricityBus_2) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(source1_electricityBus_0)_: @@ -60,21 +60,6 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(source1_electricityBus_2)_: +1 NonConvexFlowBlock_status_nominal(source1_electricityBus_2) = 0 -c_e_NonConvexFlowBlock_status_nominal_constraint(source3_electricityBus_0)_: -+1 NonConvexFlowBlock_status_nominal(source3_electricityBus_0) --100 NonConvexFlowBlock_status(source3_electricityBus_0) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(source3_electricityBus_1)_: -+1 NonConvexFlowBlock_status_nominal(source3_electricityBus_1) --100 NonConvexFlowBlock_status(source3_electricityBus_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(source3_electricityBus_2)_: -+1 NonConvexFlowBlock_status_nominal(source3_electricityBus_2) --100 NonConvexFlowBlock_status(source3_electricityBus_2) -= 0 - c_e_NonConvexFlowBlock_status_nominal_constraint(source2_electricityBus_0)_: -100 NonConvexFlowBlock_status(source2_electricityBus_0) +1 NonConvexFlowBlock_status_nominal(source2_electricityBus_0) @@ -90,128 +75,143 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(source2_electricityBus_2)_: +1 NonConvexFlowBlock_status_nominal(source2_electricityBus_2) = 0 -c_u_NonConvexFlowBlock_min(source1_electricityBus_0_0)_: --1 flow(source1_electricityBus_0_0) +c_e_NonConvexFlowBlock_status_nominal_constraint(source3_electricityBus_0)_: +-100 NonConvexFlowBlock_status(source3_electricityBus_0) ++1 NonConvexFlowBlock_status_nominal(source3_electricityBus_0) += 0 + +c_e_NonConvexFlowBlock_status_nominal_constraint(source3_electricityBus_1)_: +-100 NonConvexFlowBlock_status(source3_electricityBus_1) ++1 NonConvexFlowBlock_status_nominal(source3_electricityBus_1) += 0 + +c_e_NonConvexFlowBlock_status_nominal_constraint(source3_electricityBus_2)_: +-100 NonConvexFlowBlock_status(source3_electricityBus_2) ++1 NonConvexFlowBlock_status_nominal(source3_electricityBus_2) += 0 + +c_u_NonConvexFlowBlock_min(source1_electricityBus_0)_: +-1 flow(source1_electricityBus_0) <= 0 -c_u_NonConvexFlowBlock_min(source1_electricityBus_0_1)_: --1 flow(source1_electricityBus_0_1) +c_u_NonConvexFlowBlock_min(source1_electricityBus_1)_: +-1 flow(source1_electricityBus_1) <= 0 -c_u_NonConvexFlowBlock_min(source1_electricityBus_0_2)_: --1 flow(source1_electricityBus_0_2) +c_u_NonConvexFlowBlock_min(source1_electricityBus_2)_: +-1 flow(source1_electricityBus_2) <= 0 -c_u_NonConvexFlowBlock_min(source3_electricityBus_0_0)_: --1 flow(source3_electricityBus_0_0) +c_u_NonConvexFlowBlock_min(source2_electricityBus_0)_: +-1 flow(source2_electricityBus_0) <= 0 -c_u_NonConvexFlowBlock_min(source3_electricityBus_0_1)_: --1 flow(source3_electricityBus_0_1) +c_u_NonConvexFlowBlock_min(source2_electricityBus_1)_: +-1 flow(source2_electricityBus_1) <= 0 -c_u_NonConvexFlowBlock_min(source3_electricityBus_0_2)_: --1 flow(source3_electricityBus_0_2) +c_u_NonConvexFlowBlock_min(source2_electricityBus_2)_: +-1 flow(source2_electricityBus_2) <= 0 -c_u_NonConvexFlowBlock_min(source2_electricityBus_0_0)_: --1 flow(source2_electricityBus_0_0) +c_u_NonConvexFlowBlock_min(source3_electricityBus_0)_: +-1 flow(source3_electricityBus_0) <= 0 -c_u_NonConvexFlowBlock_min(source2_electricityBus_0_1)_: --1 flow(source2_electricityBus_0_1) +c_u_NonConvexFlowBlock_min(source3_electricityBus_1)_: +-1 flow(source3_electricityBus_1) <= 0 -c_u_NonConvexFlowBlock_min(source2_electricityBus_0_2)_: --1 flow(source2_electricityBus_0_2) +c_u_NonConvexFlowBlock_min(source3_electricityBus_2)_: +-1 flow(source3_electricityBus_2) <= 0 -c_u_NonConvexFlowBlock_max(source1_electricityBus_0_0)_: -+1 flow(source1_electricityBus_0_0) +c_u_NonConvexFlowBlock_max(source1_electricityBus_0)_: ++1 flow(source1_electricityBus_0) -1 NonConvexFlowBlock_status_nominal(source1_electricityBus_0) <= 0 -c_u_NonConvexFlowBlock_max(source1_electricityBus_0_1)_: -+1 flow(source1_electricityBus_0_1) +c_u_NonConvexFlowBlock_max(source1_electricityBus_1)_: ++1 flow(source1_electricityBus_1) -1 NonConvexFlowBlock_status_nominal(source1_electricityBus_1) <= 0 -c_u_NonConvexFlowBlock_max(source1_electricityBus_0_2)_: -+1 flow(source1_electricityBus_0_2) +c_u_NonConvexFlowBlock_max(source1_electricityBus_2)_: ++1 flow(source1_electricityBus_2) -1 NonConvexFlowBlock_status_nominal(source1_electricityBus_2) <= 0 -c_u_NonConvexFlowBlock_max(source3_electricityBus_0_0)_: -+1 flow(source3_electricityBus_0_0) --1 NonConvexFlowBlock_status_nominal(source3_electricityBus_0) +c_u_NonConvexFlowBlock_max(source2_electricityBus_0)_: ++1 flow(source2_electricityBus_0) +-1 NonConvexFlowBlock_status_nominal(source2_electricityBus_0) <= 0 -c_u_NonConvexFlowBlock_max(source3_electricityBus_0_1)_: -+1 flow(source3_electricityBus_0_1) --1 NonConvexFlowBlock_status_nominal(source3_electricityBus_1) +c_u_NonConvexFlowBlock_max(source2_electricityBus_1)_: ++1 flow(source2_electricityBus_1) +-1 NonConvexFlowBlock_status_nominal(source2_electricityBus_1) <= 0 -c_u_NonConvexFlowBlock_max(source3_electricityBus_0_2)_: -+1 flow(source3_electricityBus_0_2) --1 NonConvexFlowBlock_status_nominal(source3_electricityBus_2) +c_u_NonConvexFlowBlock_max(source2_electricityBus_2)_: ++1 flow(source2_electricityBus_2) +-1 NonConvexFlowBlock_status_nominal(source2_electricityBus_2) <= 0 -c_u_NonConvexFlowBlock_max(source2_electricityBus_0_0)_: -+1 flow(source2_electricityBus_0_0) --1 NonConvexFlowBlock_status_nominal(source2_electricityBus_0) +c_u_NonConvexFlowBlock_max(source3_electricityBus_0)_: ++1 flow(source3_electricityBus_0) +-1 NonConvexFlowBlock_status_nominal(source3_electricityBus_0) <= 0 -c_u_NonConvexFlowBlock_max(source2_electricityBus_0_1)_: -+1 flow(source2_electricityBus_0_1) --1 NonConvexFlowBlock_status_nominal(source2_electricityBus_1) +c_u_NonConvexFlowBlock_max(source3_electricityBus_1)_: ++1 flow(source3_electricityBus_1) +-1 NonConvexFlowBlock_status_nominal(source3_electricityBus_1) <= 0 -c_u_NonConvexFlowBlock_max(source2_electricityBus_0_2)_: -+1 flow(source2_electricityBus_0_2) --1 NonConvexFlowBlock_status_nominal(source2_electricityBus_2) +c_u_NonConvexFlowBlock_max(source3_electricityBus_2)_: ++1 flow(source3_electricityBus_2) +-1 NonConvexFlowBlock_status_nominal(source3_electricityBus_2) <= 0 bounds 1 <= ONE_VAR_CONSTANT <= 1 0 <= NonConvexFlowBlock_status(source1_electricityBus_0) <= 1 - 0 <= NonConvexFlowBlock_status(source2_electricityBus_0) <= 1 - 1 <= emission_factor(0) <= 2 0 <= NonConvexFlowBlock_status(source1_electricityBus_1) <= 1 - 0 <= NonConvexFlowBlock_status(source2_electricityBus_1) <= 1 - 1 <= emission_factor(1) <= 2 0 <= NonConvexFlowBlock_status(source1_electricityBus_2) <= 1 + 0 <= NonConvexFlowBlock_status(source2_electricityBus_0) <= 1 + 0 <= NonConvexFlowBlock_status(source2_electricityBus_1) <= 1 0 <= NonConvexFlowBlock_status(source2_electricityBus_2) <= 1 + 0 <= NonConvexFlowBlock_status(source3_electricityBus_0) <= 1 + 0 <= NonConvexFlowBlock_status(source3_electricityBus_1) <= 1 + 0 <= NonConvexFlowBlock_status(source3_electricityBus_2) <= 1 + 1 <= emission_factor(0) <= 2 + 1 <= emission_factor(1) <= 2 1 <= emission_factor(2) <= 2 - 30.0 <= flow(source4_electricityBus_0_0) <= 100 - 0 <= flow(source2_electricityBus_0_0) <= 100 - 0 <= flow(source1_electricityBus_0_0) <= 100 - 0 <= flow(source3_electricityBus_0_0) <= 100 - 30.0 <= flow(source4_electricityBus_0_1) <= 100 - 0 <= flow(source2_electricityBus_0_1) <= 100 - 0 <= flow(source1_electricityBus_0_1) <= 100 - 0 <= flow(source3_electricityBus_0_1) <= 100 - 30.0 <= flow(source4_electricityBus_0_2) <= 100 - 0 <= flow(source2_electricityBus_0_2) <= 100 - 0 <= flow(source1_electricityBus_0_2) <= 100 - 0 <= flow(source3_electricityBus_0_2) <= 100 + 0 <= flow(source1_electricityBus_0) <= 100 + 0 <= flow(source1_electricityBus_1) <= 100 + 0 <= flow(source1_electricityBus_2) <= 100 + 0 <= flow(source2_electricityBus_0) <= 100 + 0 <= flow(source2_electricityBus_1) <= 100 + 0 <= flow(source2_electricityBus_2) <= 100 + 0 <= flow(source3_electricityBus_0) <= 100 + 0 <= flow(source3_electricityBus_1) <= 100 + 0 <= flow(source3_electricityBus_2) <= 100 + 30.0 <= flow(source4_electricityBus_0) <= 100 + 30.0 <= flow(source4_electricityBus_1) <= 100 + 30.0 <= flow(source4_electricityBus_2) <= 100 0 <= NonConvexFlowBlock_status_nominal(source1_electricityBus_0) <= +inf 0 <= NonConvexFlowBlock_status_nominal(source1_electricityBus_1) <= +inf 0 <= NonConvexFlowBlock_status_nominal(source1_electricityBus_2) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(source3_electricityBus_0) <= +inf - 0 <= NonConvexFlowBlock_status(source3_electricityBus_0) <= 1 - 0 <= NonConvexFlowBlock_status_nominal(source3_electricityBus_1) <= +inf - 0 <= NonConvexFlowBlock_status(source3_electricityBus_1) <= 1 - 0 <= NonConvexFlowBlock_status_nominal(source3_electricityBus_2) <= +inf - 0 <= NonConvexFlowBlock_status(source3_electricityBus_2) <= 1 0 <= NonConvexFlowBlock_status_nominal(source2_electricityBus_0) <= +inf 0 <= NonConvexFlowBlock_status_nominal(source2_electricityBus_1) <= +inf 0 <= NonConvexFlowBlock_status_nominal(source2_electricityBus_2) <= +inf + 0 <= NonConvexFlowBlock_status_nominal(source3_electricityBus_0) <= +inf + 0 <= NonConvexFlowBlock_status_nominal(source3_electricityBus_1) <= +inf + 0 <= NonConvexFlowBlock_status_nominal(source3_electricityBus_2) <= +inf binary NonConvexFlowBlock_status(source1_electricityBus_0) - NonConvexFlowBlock_status(source2_electricityBus_0) NonConvexFlowBlock_status(source1_electricityBus_1) - NonConvexFlowBlock_status(source2_electricityBus_1) NonConvexFlowBlock_status(source1_electricityBus_2) + NonConvexFlowBlock_status(source2_electricityBus_0) + NonConvexFlowBlock_status(source2_electricityBus_1) NonConvexFlowBlock_status(source2_electricityBus_2) NonConvexFlowBlock_status(source3_electricityBus_0) NonConvexFlowBlock_status(source3_electricityBus_1) diff --git a/tests/lp_files/flow_count_limit_multi_period.lp b/tests/lp_files/flow_count_limit_multi_period.lp index 3532a0b18..27e0d980b 100644 --- a/tests/lp_files/flow_count_limit_multi_period.lp +++ b/tests/lp_files/flow_count_limit_multi_period.lp @@ -7,99 +7,69 @@ objective: s.t. c_e_emission_factor_constraint(0)_: -+1 NonConvexFlowBlock_status(source1_electricityBus_0) +1 NonConvexFlowBlock_status(source2_electricityBus_0) ++1 NonConvexFlowBlock_status(source1_electricityBus_0) -1 emission_factor(0) = 0 c_e_emission_factor_constraint(1)_: -+1 NonConvexFlowBlock_status(source1_electricityBus_1) +1 NonConvexFlowBlock_status(source2_electricityBus_1) ++1 NonConvexFlowBlock_status(source1_electricityBus_1) -1 emission_factor(1) = 0 c_e_emission_factor_constraint(2)_: -+1 NonConvexFlowBlock_status(source1_electricityBus_2) +1 NonConvexFlowBlock_status(source2_electricityBus_2) ++1 NonConvexFlowBlock_status(source1_electricityBus_2) -1 emission_factor(2) = 0 c_e_emission_factor_constraint(3)_: -+1 NonConvexFlowBlock_status(source1_electricityBus_3) +1 NonConvexFlowBlock_status(source2_electricityBus_3) ++1 NonConvexFlowBlock_status(source1_electricityBus_3) -1 emission_factor(3) = 0 c_e_emission_factor_constraint(4)_: -+1 NonConvexFlowBlock_status(source1_electricityBus_4) +1 NonConvexFlowBlock_status(source2_electricityBus_4) ++1 NonConvexFlowBlock_status(source1_electricityBus_4) -1 emission_factor(4) = 0 c_e_emission_factor_constraint(5)_: -+1 NonConvexFlowBlock_status(source1_electricityBus_5) +1 NonConvexFlowBlock_status(source2_electricityBus_5) ++1 NonConvexFlowBlock_status(source1_electricityBus_5) -1 emission_factor(5) = 0 -c_e_NonConvexFlowBlock_status_nominal_constraint(source1_electricityBus_0)_: --100 NonConvexFlowBlock_status(source1_electricityBus_0) -+1 NonConvexFlowBlock_status_nominal(source1_electricityBus_0) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(source1_electricityBus_1)_: --100 NonConvexFlowBlock_status(source1_electricityBus_1) -+1 NonConvexFlowBlock_status_nominal(source1_electricityBus_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(source1_electricityBus_2)_: --100 NonConvexFlowBlock_status(source1_electricityBus_2) -+1 NonConvexFlowBlock_status_nominal(source1_electricityBus_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(source1_electricityBus_3)_: --100 NonConvexFlowBlock_status(source1_electricityBus_3) -+1 NonConvexFlowBlock_status_nominal(source1_electricityBus_3) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(source1_electricityBus_4)_: --100 NonConvexFlowBlock_status(source1_electricityBus_4) -+1 NonConvexFlowBlock_status_nominal(source1_electricityBus_4) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(source1_electricityBus_5)_: --100 NonConvexFlowBlock_status(source1_electricityBus_5) -+1 NonConvexFlowBlock_status_nominal(source1_electricityBus_5) -= 0 - c_e_NonConvexFlowBlock_status_nominal_constraint(source3_electricityBus_0)_: -+1 NonConvexFlowBlock_status_nominal(source3_electricityBus_0) -100 NonConvexFlowBlock_status(source3_electricityBus_0) ++1 NonConvexFlowBlock_status_nominal(source3_electricityBus_0) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(source3_electricityBus_1)_: -+1 NonConvexFlowBlock_status_nominal(source3_electricityBus_1) -100 NonConvexFlowBlock_status(source3_electricityBus_1) ++1 NonConvexFlowBlock_status_nominal(source3_electricityBus_1) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(source3_electricityBus_2)_: -+1 NonConvexFlowBlock_status_nominal(source3_electricityBus_2) -100 NonConvexFlowBlock_status(source3_electricityBus_2) ++1 NonConvexFlowBlock_status_nominal(source3_electricityBus_2) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(source3_electricityBus_3)_: -+1 NonConvexFlowBlock_status_nominal(source3_electricityBus_3) -100 NonConvexFlowBlock_status(source3_electricityBus_3) ++1 NonConvexFlowBlock_status_nominal(source3_electricityBus_3) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(source3_electricityBus_4)_: -+1 NonConvexFlowBlock_status_nominal(source3_electricityBus_4) -100 NonConvexFlowBlock_status(source3_electricityBus_4) ++1 NonConvexFlowBlock_status_nominal(source3_electricityBus_4) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(source3_electricityBus_5)_: -+1 NonConvexFlowBlock_status_nominal(source3_electricityBus_5) -100 NonConvexFlowBlock_status(source3_electricityBus_5) ++1 NonConvexFlowBlock_status_nominal(source3_electricityBus_5) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(source2_electricityBus_0)_: @@ -132,247 +102,277 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(source2_electricityBus_5)_: +1 NonConvexFlowBlock_status_nominal(source2_electricityBus_5) = 0 -c_u_NonConvexFlowBlock_min(source1_electricityBus_0_0)_: --1 flow(source1_electricityBus_0_0) -<= 0 +c_e_NonConvexFlowBlock_status_nominal_constraint(source1_electricityBus_0)_: +-100 NonConvexFlowBlock_status(source1_electricityBus_0) ++1 NonConvexFlowBlock_status_nominal(source1_electricityBus_0) += 0 -c_u_NonConvexFlowBlock_min(source1_electricityBus_0_1)_: --1 flow(source1_electricityBus_0_1) -<= 0 +c_e_NonConvexFlowBlock_status_nominal_constraint(source1_electricityBus_1)_: +-100 NonConvexFlowBlock_status(source1_electricityBus_1) ++1 NonConvexFlowBlock_status_nominal(source1_electricityBus_1) += 0 -c_u_NonConvexFlowBlock_min(source1_electricityBus_1_2)_: --1 flow(source1_electricityBus_1_2) -<= 0 +c_e_NonConvexFlowBlock_status_nominal_constraint(source1_electricityBus_2)_: +-100 NonConvexFlowBlock_status(source1_electricityBus_2) ++1 NonConvexFlowBlock_status_nominal(source1_electricityBus_2) += 0 -c_u_NonConvexFlowBlock_min(source1_electricityBus_1_3)_: --1 flow(source1_electricityBus_1_3) -<= 0 +c_e_NonConvexFlowBlock_status_nominal_constraint(source1_electricityBus_3)_: +-100 NonConvexFlowBlock_status(source1_electricityBus_3) ++1 NonConvexFlowBlock_status_nominal(source1_electricityBus_3) += 0 -c_u_NonConvexFlowBlock_min(source1_electricityBus_2_4)_: --1 flow(source1_electricityBus_2_4) -<= 0 +c_e_NonConvexFlowBlock_status_nominal_constraint(source1_electricityBus_4)_: +-100 NonConvexFlowBlock_status(source1_electricityBus_4) ++1 NonConvexFlowBlock_status_nominal(source1_electricityBus_4) += 0 -c_u_NonConvexFlowBlock_min(source1_electricityBus_2_5)_: --1 flow(source1_electricityBus_2_5) -<= 0 +c_e_NonConvexFlowBlock_status_nominal_constraint(source1_electricityBus_5)_: +-100 NonConvexFlowBlock_status(source1_electricityBus_5) ++1 NonConvexFlowBlock_status_nominal(source1_electricityBus_5) += 0 -c_u_NonConvexFlowBlock_min(source3_electricityBus_0_0)_: --1 flow(source3_electricityBus_0_0) +c_u_NonConvexFlowBlock_min(source3_electricityBus_0)_: +-1 flow(source3_electricityBus_0) <= 0 -c_u_NonConvexFlowBlock_min(source3_electricityBus_0_1)_: --1 flow(source3_electricityBus_0_1) +c_u_NonConvexFlowBlock_min(source3_electricityBus_1)_: +-1 flow(source3_electricityBus_1) <= 0 -c_u_NonConvexFlowBlock_min(source3_electricityBus_1_2)_: --1 flow(source3_electricityBus_1_2) +c_u_NonConvexFlowBlock_min(source3_electricityBus_2)_: +-1 flow(source3_electricityBus_2) <= 0 -c_u_NonConvexFlowBlock_min(source3_electricityBus_1_3)_: --1 flow(source3_electricityBus_1_3) +c_u_NonConvexFlowBlock_min(source3_electricityBus_3)_: +-1 flow(source3_electricityBus_3) <= 0 -c_u_NonConvexFlowBlock_min(source3_electricityBus_2_4)_: --1 flow(source3_electricityBus_2_4) +c_u_NonConvexFlowBlock_min(source3_electricityBus_4)_: +-1 flow(source3_electricityBus_4) <= 0 -c_u_NonConvexFlowBlock_min(source3_electricityBus_2_5)_: --1 flow(source3_electricityBus_2_5) +c_u_NonConvexFlowBlock_min(source3_electricityBus_5)_: +-1 flow(source3_electricityBus_5) <= 0 -c_u_NonConvexFlowBlock_min(source2_electricityBus_0_0)_: --1 flow(source2_electricityBus_0_0) +c_u_NonConvexFlowBlock_min(source2_electricityBus_0)_: +-1 flow(source2_electricityBus_0) <= 0 -c_u_NonConvexFlowBlock_min(source2_electricityBus_0_1)_: --1 flow(source2_electricityBus_0_1) +c_u_NonConvexFlowBlock_min(source2_electricityBus_1)_: +-1 flow(source2_electricityBus_1) <= 0 -c_u_NonConvexFlowBlock_min(source2_electricityBus_1_2)_: --1 flow(source2_electricityBus_1_2) +c_u_NonConvexFlowBlock_min(source2_electricityBus_2)_: +-1 flow(source2_electricityBus_2) <= 0 -c_u_NonConvexFlowBlock_min(source2_electricityBus_1_3)_: --1 flow(source2_electricityBus_1_3) +c_u_NonConvexFlowBlock_min(source2_electricityBus_3)_: +-1 flow(source2_electricityBus_3) <= 0 -c_u_NonConvexFlowBlock_min(source2_electricityBus_2_4)_: --1 flow(source2_electricityBus_2_4) +c_u_NonConvexFlowBlock_min(source2_electricityBus_4)_: +-1 flow(source2_electricityBus_4) <= 0 -c_u_NonConvexFlowBlock_min(source2_electricityBus_2_5)_: --1 flow(source2_electricityBus_2_5) +c_u_NonConvexFlowBlock_min(source2_electricityBus_5)_: +-1 flow(source2_electricityBus_5) <= 0 -c_u_NonConvexFlowBlock_max(source1_electricityBus_0_0)_: --1 NonConvexFlowBlock_status_nominal(source1_electricityBus_0) -+1 flow(source1_electricityBus_0_0) +c_u_NonConvexFlowBlock_min(source1_electricityBus_0)_: +-1 flow(source1_electricityBus_0) <= 0 -c_u_NonConvexFlowBlock_max(source1_electricityBus_0_1)_: --1 NonConvexFlowBlock_status_nominal(source1_electricityBus_1) -+1 flow(source1_electricityBus_0_1) +c_u_NonConvexFlowBlock_min(source1_electricityBus_1)_: +-1 flow(source1_electricityBus_1) <= 0 -c_u_NonConvexFlowBlock_max(source1_electricityBus_1_2)_: --1 NonConvexFlowBlock_status_nominal(source1_electricityBus_2) -+1 flow(source1_electricityBus_1_2) +c_u_NonConvexFlowBlock_min(source1_electricityBus_2)_: +-1 flow(source1_electricityBus_2) <= 0 -c_u_NonConvexFlowBlock_max(source1_electricityBus_1_3)_: --1 NonConvexFlowBlock_status_nominal(source1_electricityBus_3) -+1 flow(source1_electricityBus_1_3) +c_u_NonConvexFlowBlock_min(source1_electricityBus_3)_: +-1 flow(source1_electricityBus_3) <= 0 -c_u_NonConvexFlowBlock_max(source1_electricityBus_2_4)_: --1 NonConvexFlowBlock_status_nominal(source1_electricityBus_4) -+1 flow(source1_electricityBus_2_4) +c_u_NonConvexFlowBlock_min(source1_electricityBus_4)_: +-1 flow(source1_electricityBus_4) <= 0 -c_u_NonConvexFlowBlock_max(source1_electricityBus_2_5)_: --1 NonConvexFlowBlock_status_nominal(source1_electricityBus_5) -+1 flow(source1_electricityBus_2_5) +c_u_NonConvexFlowBlock_min(source1_electricityBus_5)_: +-1 flow(source1_electricityBus_5) <= 0 -c_u_NonConvexFlowBlock_max(source3_electricityBus_0_0)_: +c_u_NonConvexFlowBlock_max(source3_electricityBus_0)_: -1 NonConvexFlowBlock_status_nominal(source3_electricityBus_0) -+1 flow(source3_electricityBus_0_0) ++1 flow(source3_electricityBus_0) <= 0 -c_u_NonConvexFlowBlock_max(source3_electricityBus_0_1)_: +c_u_NonConvexFlowBlock_max(source3_electricityBus_1)_: -1 NonConvexFlowBlock_status_nominal(source3_electricityBus_1) -+1 flow(source3_electricityBus_0_1) ++1 flow(source3_electricityBus_1) <= 0 -c_u_NonConvexFlowBlock_max(source3_electricityBus_1_2)_: +c_u_NonConvexFlowBlock_max(source3_electricityBus_2)_: -1 NonConvexFlowBlock_status_nominal(source3_electricityBus_2) -+1 flow(source3_electricityBus_1_2) ++1 flow(source3_electricityBus_2) <= 0 -c_u_NonConvexFlowBlock_max(source3_electricityBus_1_3)_: +c_u_NonConvexFlowBlock_max(source3_electricityBus_3)_: -1 NonConvexFlowBlock_status_nominal(source3_electricityBus_3) -+1 flow(source3_electricityBus_1_3) ++1 flow(source3_electricityBus_3) <= 0 -c_u_NonConvexFlowBlock_max(source3_electricityBus_2_4)_: +c_u_NonConvexFlowBlock_max(source3_electricityBus_4)_: -1 NonConvexFlowBlock_status_nominal(source3_electricityBus_4) -+1 flow(source3_electricityBus_2_4) ++1 flow(source3_electricityBus_4) <= 0 -c_u_NonConvexFlowBlock_max(source3_electricityBus_2_5)_: +c_u_NonConvexFlowBlock_max(source3_electricityBus_5)_: -1 NonConvexFlowBlock_status_nominal(source3_electricityBus_5) -+1 flow(source3_electricityBus_2_5) ++1 flow(source3_electricityBus_5) <= 0 -c_u_NonConvexFlowBlock_max(source2_electricityBus_0_0)_: +c_u_NonConvexFlowBlock_max(source2_electricityBus_0)_: -1 NonConvexFlowBlock_status_nominal(source2_electricityBus_0) -+1 flow(source2_electricityBus_0_0) ++1 flow(source2_electricityBus_0) <= 0 -c_u_NonConvexFlowBlock_max(source2_electricityBus_0_1)_: +c_u_NonConvexFlowBlock_max(source2_electricityBus_1)_: -1 NonConvexFlowBlock_status_nominal(source2_electricityBus_1) -+1 flow(source2_electricityBus_0_1) ++1 flow(source2_electricityBus_1) <= 0 -c_u_NonConvexFlowBlock_max(source2_electricityBus_1_2)_: +c_u_NonConvexFlowBlock_max(source2_electricityBus_2)_: -1 NonConvexFlowBlock_status_nominal(source2_electricityBus_2) -+1 flow(source2_electricityBus_1_2) ++1 flow(source2_electricityBus_2) <= 0 -c_u_NonConvexFlowBlock_max(source2_electricityBus_1_3)_: +c_u_NonConvexFlowBlock_max(source2_electricityBus_3)_: -1 NonConvexFlowBlock_status_nominal(source2_electricityBus_3) -+1 flow(source2_electricityBus_1_3) ++1 flow(source2_electricityBus_3) <= 0 -c_u_NonConvexFlowBlock_max(source2_electricityBus_2_4)_: +c_u_NonConvexFlowBlock_max(source2_electricityBus_4)_: -1 NonConvexFlowBlock_status_nominal(source2_electricityBus_4) -+1 flow(source2_electricityBus_2_4) ++1 flow(source2_electricityBus_4) <= 0 -c_u_NonConvexFlowBlock_max(source2_electricityBus_2_5)_: +c_u_NonConvexFlowBlock_max(source2_electricityBus_5)_: -1 NonConvexFlowBlock_status_nominal(source2_electricityBus_5) -+1 flow(source2_electricityBus_2_5) ++1 flow(source2_electricityBus_5) +<= 0 + +c_u_NonConvexFlowBlock_max(source1_electricityBus_0)_: +-1 NonConvexFlowBlock_status_nominal(source1_electricityBus_0) ++1 flow(source1_electricityBus_0) +<= 0 + +c_u_NonConvexFlowBlock_max(source1_electricityBus_1)_: +-1 NonConvexFlowBlock_status_nominal(source1_electricityBus_1) ++1 flow(source1_electricityBus_1) +<= 0 + +c_u_NonConvexFlowBlock_max(source1_electricityBus_2)_: +-1 NonConvexFlowBlock_status_nominal(source1_electricityBus_2) ++1 flow(source1_electricityBus_2) +<= 0 + +c_u_NonConvexFlowBlock_max(source1_electricityBus_3)_: +-1 NonConvexFlowBlock_status_nominal(source1_electricityBus_3) ++1 flow(source1_electricityBus_3) +<= 0 + +c_u_NonConvexFlowBlock_max(source1_electricityBus_4)_: +-1 NonConvexFlowBlock_status_nominal(source1_electricityBus_4) ++1 flow(source1_electricityBus_4) +<= 0 + +c_u_NonConvexFlowBlock_max(source1_electricityBus_5)_: +-1 NonConvexFlowBlock_status_nominal(source1_electricityBus_5) ++1 flow(source1_electricityBus_5) <= 0 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= NonConvexFlowBlock_status(source1_electricityBus_0) <= 1 + 0 <= NonConvexFlowBlock_status(source3_electricityBus_0) <= 1 + 0 <= NonConvexFlowBlock_status(source3_electricityBus_1) <= 1 + 0 <= NonConvexFlowBlock_status(source3_electricityBus_2) <= 1 + 0 <= NonConvexFlowBlock_status(source3_electricityBus_3) <= 1 + 0 <= NonConvexFlowBlock_status(source3_electricityBus_4) <= 1 + 0 <= NonConvexFlowBlock_status(source3_electricityBus_5) <= 1 0 <= NonConvexFlowBlock_status(source2_electricityBus_0) <= 1 - 1 <= emission_factor(0) <= 2 - 0 <= NonConvexFlowBlock_status(source1_electricityBus_1) <= 1 0 <= NonConvexFlowBlock_status(source2_electricityBus_1) <= 1 - 1 <= emission_factor(1) <= 2 - 0 <= NonConvexFlowBlock_status(source1_electricityBus_2) <= 1 0 <= NonConvexFlowBlock_status(source2_electricityBus_2) <= 1 - 1 <= emission_factor(2) <= 2 - 0 <= NonConvexFlowBlock_status(source1_electricityBus_3) <= 1 0 <= NonConvexFlowBlock_status(source2_electricityBus_3) <= 1 - 1 <= emission_factor(3) <= 2 - 0 <= NonConvexFlowBlock_status(source1_electricityBus_4) <= 1 0 <= NonConvexFlowBlock_status(source2_electricityBus_4) <= 1 - 1 <= emission_factor(4) <= 2 - 0 <= NonConvexFlowBlock_status(source1_electricityBus_5) <= 1 0 <= NonConvexFlowBlock_status(source2_electricityBus_5) <= 1 + 0 <= NonConvexFlowBlock_status(source1_electricityBus_0) <= 1 + 0 <= NonConvexFlowBlock_status(source1_electricityBus_1) <= 1 + 0 <= NonConvexFlowBlock_status(source1_electricityBus_2) <= 1 + 0 <= NonConvexFlowBlock_status(source1_electricityBus_3) <= 1 + 0 <= NonConvexFlowBlock_status(source1_electricityBus_4) <= 1 + 0 <= NonConvexFlowBlock_status(source1_electricityBus_5) <= 1 + 1 <= emission_factor(0) <= 2 + 1 <= emission_factor(1) <= 2 + 1 <= emission_factor(2) <= 2 + 1 <= emission_factor(3) <= 2 + 1 <= emission_factor(4) <= 2 1 <= emission_factor(5) <= 2 - 0 <= NonConvexFlowBlock_status_nominal(source1_electricityBus_0) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(source1_electricityBus_1) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(source1_electricityBus_2) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(source1_electricityBus_3) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(source1_electricityBus_4) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(source1_electricityBus_5) <= +inf 0 <= NonConvexFlowBlock_status_nominal(source3_electricityBus_0) <= +inf - 0 <= NonConvexFlowBlock_status(source3_electricityBus_0) <= 1 0 <= NonConvexFlowBlock_status_nominal(source3_electricityBus_1) <= +inf - 0 <= NonConvexFlowBlock_status(source3_electricityBus_1) <= 1 0 <= NonConvexFlowBlock_status_nominal(source3_electricityBus_2) <= +inf - 0 <= NonConvexFlowBlock_status(source3_electricityBus_2) <= 1 0 <= NonConvexFlowBlock_status_nominal(source3_electricityBus_3) <= +inf - 0 <= NonConvexFlowBlock_status(source3_electricityBus_3) <= 1 0 <= NonConvexFlowBlock_status_nominal(source3_electricityBus_4) <= +inf - 0 <= NonConvexFlowBlock_status(source3_electricityBus_4) <= 1 0 <= NonConvexFlowBlock_status_nominal(source3_electricityBus_5) <= +inf - 0 <= NonConvexFlowBlock_status(source3_electricityBus_5) <= 1 0 <= NonConvexFlowBlock_status_nominal(source2_electricityBus_0) <= +inf 0 <= NonConvexFlowBlock_status_nominal(source2_electricityBus_1) <= +inf 0 <= NonConvexFlowBlock_status_nominal(source2_electricityBus_2) <= +inf 0 <= NonConvexFlowBlock_status_nominal(source2_electricityBus_3) <= +inf 0 <= NonConvexFlowBlock_status_nominal(source2_electricityBus_4) <= +inf 0 <= NonConvexFlowBlock_status_nominal(source2_electricityBus_5) <= +inf - 0 <= flow(source1_electricityBus_0_0) <= 100 - 0 <= flow(source1_electricityBus_0_1) <= 100 - 0 <= flow(source1_electricityBus_1_2) <= 100 - 0 <= flow(source1_electricityBus_1_3) <= 100 - 0 <= flow(source1_electricityBus_2_4) <= 100 - 0 <= flow(source1_electricityBus_2_5) <= 100 - 0 <= flow(source3_electricityBus_0_0) <= 100 - 0 <= flow(source3_electricityBus_0_1) <= 100 - 0 <= flow(source3_electricityBus_1_2) <= 100 - 0 <= flow(source3_electricityBus_1_3) <= 100 - 0 <= flow(source3_electricityBus_2_4) <= 100 - 0 <= flow(source3_electricityBus_2_5) <= 100 - 0 <= flow(source2_electricityBus_0_0) <= 100 - 0 <= flow(source2_electricityBus_0_1) <= 100 - 0 <= flow(source2_electricityBus_1_2) <= 100 - 0 <= flow(source2_electricityBus_1_3) <= 100 - 0 <= flow(source2_electricityBus_2_4) <= 100 - 0 <= flow(source2_electricityBus_2_5) <= 100 + 0 <= NonConvexFlowBlock_status_nominal(source1_electricityBus_0) <= +inf + 0 <= NonConvexFlowBlock_status_nominal(source1_electricityBus_1) <= +inf + 0 <= NonConvexFlowBlock_status_nominal(source1_electricityBus_2) <= +inf + 0 <= NonConvexFlowBlock_status_nominal(source1_electricityBus_3) <= +inf + 0 <= NonConvexFlowBlock_status_nominal(source1_electricityBus_4) <= +inf + 0 <= NonConvexFlowBlock_status_nominal(source1_electricityBus_5) <= +inf + 0 <= flow(source1_electricityBus_0) <= 100 + 0 <= flow(source1_electricityBus_1) <= 100 + 0 <= flow(source1_electricityBus_2) <= 100 + 0 <= flow(source1_electricityBus_3) <= 100 + 0 <= flow(source1_electricityBus_4) <= 100 + 0 <= flow(source1_electricityBus_5) <= 100 + 0 <= flow(source2_electricityBus_0) <= 100 + 0 <= flow(source2_electricityBus_1) <= 100 + 0 <= flow(source2_electricityBus_2) <= 100 + 0 <= flow(source2_electricityBus_3) <= 100 + 0 <= flow(source2_electricityBus_4) <= 100 + 0 <= flow(source2_electricityBus_5) <= 100 + 0 <= flow(source3_electricityBus_0) <= 100 + 0 <= flow(source3_electricityBus_1) <= 100 + 0 <= flow(source3_electricityBus_2) <= 100 + 0 <= flow(source3_electricityBus_3) <= 100 + 0 <= flow(source3_electricityBus_4) <= 100 + 0 <= flow(source3_electricityBus_5) <= 100 binary - NonConvexFlowBlock_status(source1_electricityBus_0) - NonConvexFlowBlock_status(source2_electricityBus_0) - NonConvexFlowBlock_status(source1_electricityBus_1) - NonConvexFlowBlock_status(source2_electricityBus_1) - NonConvexFlowBlock_status(source1_electricityBus_2) - NonConvexFlowBlock_status(source2_electricityBus_2) - NonConvexFlowBlock_status(source1_electricityBus_3) - NonConvexFlowBlock_status(source2_electricityBus_3) - NonConvexFlowBlock_status(source1_electricityBus_4) - NonConvexFlowBlock_status(source2_electricityBus_4) - NonConvexFlowBlock_status(source1_electricityBus_5) - NonConvexFlowBlock_status(source2_electricityBus_5) NonConvexFlowBlock_status(source3_electricityBus_0) NonConvexFlowBlock_status(source3_electricityBus_1) NonConvexFlowBlock_status(source3_electricityBus_2) NonConvexFlowBlock_status(source3_electricityBus_3) NonConvexFlowBlock_status(source3_electricityBus_4) NonConvexFlowBlock_status(source3_electricityBus_5) + NonConvexFlowBlock_status(source2_electricityBus_0) + NonConvexFlowBlock_status(source2_electricityBus_1) + NonConvexFlowBlock_status(source2_electricityBus_2) + NonConvexFlowBlock_status(source2_electricityBus_3) + NonConvexFlowBlock_status(source2_electricityBus_4) + NonConvexFlowBlock_status(source2_electricityBus_5) + NonConvexFlowBlock_status(source1_electricityBus_0) + NonConvexFlowBlock_status(source1_electricityBus_1) + NonConvexFlowBlock_status(source1_electricityBus_2) + NonConvexFlowBlock_status(source1_electricityBus_3) + NonConvexFlowBlock_status(source1_electricityBus_4) + NonConvexFlowBlock_status(source1_electricityBus_5) end diff --git a/tests/lp_files/flow_invest_with_offset.lp b/tests/lp_files/flow_invest_with_offset.lp index 168b31a8a..78a06691f 100644 --- a/tests/lp_files/flow_invest_with_offset.lp +++ b/tests/lp_files/flow_invest_with_offset.lp @@ -4,22 +4,22 @@ min objective: +500 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) +34 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) -+25 flow(source_nonconvex_invest_electricityBus_0_0) -+25 flow(source_nonconvex_invest_electricityBus_0_1) -+25 flow(source_nonconvex_invest_electricityBus_0_2) ++25 flow(source_nonconvex_invest_electricityBus_0) ++25 flow(source_nonconvex_invest_electricityBus_1) ++25 flow(source_nonconvex_invest_electricityBus_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(source_nonconvex_invest_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(source_nonconvex_invest_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(source_nonconvex_invest_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(source_nonconvex_invest_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(source_nonconvex_invest_electricityBus_2) = 0 c_u_InvestmentFlowBlock_minimum_rule(source_nonconvex_invest_electricityBus_0)_: @@ -38,33 +38,33 @@ c_e_InvestmentFlowBlock_total_rule(source_nonconvex_invest_electricityBus_0)_: = 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) ++1 flow(source_nonconvex_invest_electricityBus_0) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_0_1)_: -+1 flow(source_nonconvex_invest_electricityBus_0_1) ++1 flow(source_nonconvex_invest_electricityBus_1) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_0_2)_: -+1 flow(source_nonconvex_invest_electricityBus_0_2) ++1 flow(source_nonconvex_invest_electricityBus_2) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_full_load_time_max(source_nonconvex_invest_electricityBus)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) -+1 flow(source_nonconvex_invest_electricityBus_0_1) -+1 flow(source_nonconvex_invest_electricityBus_0_2) ++1 flow(source_nonconvex_invest_electricityBus_0) ++1 flow(source_nonconvex_invest_electricityBus_1) ++1 flow(source_nonconvex_invest_electricityBus_2) -2.3 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= 0 bounds 0 <= InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) <= 20 0 <= InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) <= 1 - 0 <= flow(source_nonconvex_invest_electricityBus_0_0) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_0_1) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_0_2) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_0) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_1) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= +inf binary InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) diff --git a/tests/lp_files/flow_invest_with_offset_multi_period.lp b/tests/lp_files/flow_invest_with_offset_multi_period.lp index 5e4510206..fafc4b0e0 100644 --- a/tests/lp_files/flow_invest_with_offset_multi_period.lp +++ b/tests/lp_files/flow_invest_with_offset_multi_period.lp @@ -3,42 +3,42 @@ min objective: +88.1844182057801 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) -+34 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) +58.20563481102971 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_1) -+33.33333333333333 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) +28.814670698529593 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_2) ++34 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) ++33.33333333333333 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) +32.6797385620915 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_2) -+25 flow(source_nonconvex_invest_electricityBus_0_0) -+25 flow(source_nonconvex_invest_electricityBus_0_1) -+24.509803921568626 flow(source_nonconvex_invest_electricityBus_1_2) -+24.509803921568626 flow(source_nonconvex_invest_electricityBus_1_3) -+24.029219530949632 flow(source_nonconvex_invest_electricityBus_2_4) -+24.029219530949632 flow(source_nonconvex_invest_electricityBus_2_5) ++25 flow(source_nonconvex_invest_electricityBus_0) ++25 flow(source_nonconvex_invest_electricityBus_1) ++24.509803921568626 flow(source_nonconvex_invest_electricityBus_2) ++24.509803921568626 flow(source_nonconvex_invest_electricityBus_3) ++24.029219530949632 flow(source_nonconvex_invest_electricityBus_4) ++24.029219530949632 flow(source_nonconvex_invest_electricityBus_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(source_nonconvex_invest_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(source_nonconvex_invest_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(source_nonconvex_invest_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(source_nonconvex_invest_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(source_nonconvex_invest_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(source_nonconvex_invest_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(source_nonconvex_invest_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(source_nonconvex_invest_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(source_nonconvex_invest_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(source_nonconvex_invest_electricityBus_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(source_nonconvex_invest_electricityBus_5) = 0 c_u_InvestmentFlowBlock_minimum_rule(source_nonconvex_invest_electricityBus_0)_: @@ -115,9 +115,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(source_nonconvex_invest_electricityBus_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(source_nonconvex_invest_electricityBus_0)_: ++1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_0) -1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_0) -1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_0) -+1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_0) = 0 c_e_InvestmentFlowBlock_old_rule(source_nonconvex_invest_electricityBus_1)_: @@ -133,64 +133,65 @@ c_e_InvestmentFlowBlock_old_rule(source_nonconvex_invest_electricityBus_2)_: = 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) ++1 flow(source_nonconvex_invest_electricityBus_0) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_0_1)_: -+1 flow(source_nonconvex_invest_electricityBus_0_1) ++1 flow(source_nonconvex_invest_electricityBus_1) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_1_2)_: -+1 flow(source_nonconvex_invest_electricityBus_1_2) ++1 flow(source_nonconvex_invest_electricityBus_2) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_1_3)_: -+1 flow(source_nonconvex_invest_electricityBus_1_3) ++1 flow(source_nonconvex_invest_electricityBus_3) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_2_4)_: -+1 flow(source_nonconvex_invest_electricityBus_2_4) ++1 flow(source_nonconvex_invest_electricityBus_4) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_2) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_2_5)_: -+1 flow(source_nonconvex_invest_electricityBus_2_5) ++1 flow(source_nonconvex_invest_electricityBus_5) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_2) <= 0 c_u_InvestmentFlowBlock_full_load_time_max(source_nonconvex_invest_electricityBus)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) -+1 flow(source_nonconvex_invest_electricityBus_0_1) -+1 flow(source_nonconvex_invest_electricityBus_1_2) -+1 flow(source_nonconvex_invest_electricityBus_1_3) -+1 flow(source_nonconvex_invest_electricityBus_2_4) -+1 flow(source_nonconvex_invest_electricityBus_2_5) ++1 flow(source_nonconvex_invest_electricityBus_0) ++1 flow(source_nonconvex_invest_electricityBus_1) ++1 flow(source_nonconvex_invest_electricityBus_2) ++1 flow(source_nonconvex_invest_electricityBus_3) ++1 flow(source_nonconvex_invest_electricityBus_4) ++1 flow(source_nonconvex_invest_electricityBus_5) -2.3 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) -2.3 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) -2.3 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_2) -<= 0.0 +<= 0 bounds 0 <= InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) <= 20 - 0 <= InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) <= 1 0 <= InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_1) <= 20 - 0 <= InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) <= 1 0 <= InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_2) <= 20 + 0 <= InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) <= 1 + 0 <= InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) <= 1 0 <= InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_2) <= 1 - 0 <= flow(source_nonconvex_invest_electricityBus_0_0) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_0_1) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_1_2) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_1_3) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_2_4) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_2_5) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_0) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_1) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_2) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_3) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_4) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_5) <= +inf 0 <= InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_1) <= +inf @@ -198,7 +199,6 @@ bounds 0 <= InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_0) <= +inf binary InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) diff --git a/tests/lp_files/flow_invest_with_offset_multi_period_remaining_value.lp b/tests/lp_files/flow_invest_with_offset_multi_period_remaining_value.lp index 5e4510206..fafc4b0e0 100644 --- a/tests/lp_files/flow_invest_with_offset_multi_period_remaining_value.lp +++ b/tests/lp_files/flow_invest_with_offset_multi_period_remaining_value.lp @@ -3,42 +3,42 @@ min objective: +88.1844182057801 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) -+34 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) +58.20563481102971 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_1) -+33.33333333333333 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) +28.814670698529593 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_2) ++34 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) ++33.33333333333333 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) +32.6797385620915 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_2) -+25 flow(source_nonconvex_invest_electricityBus_0_0) -+25 flow(source_nonconvex_invest_electricityBus_0_1) -+24.509803921568626 flow(source_nonconvex_invest_electricityBus_1_2) -+24.509803921568626 flow(source_nonconvex_invest_electricityBus_1_3) -+24.029219530949632 flow(source_nonconvex_invest_electricityBus_2_4) -+24.029219530949632 flow(source_nonconvex_invest_electricityBus_2_5) ++25 flow(source_nonconvex_invest_electricityBus_0) ++25 flow(source_nonconvex_invest_electricityBus_1) ++24.509803921568626 flow(source_nonconvex_invest_electricityBus_2) ++24.509803921568626 flow(source_nonconvex_invest_electricityBus_3) ++24.029219530949632 flow(source_nonconvex_invest_electricityBus_4) ++24.029219530949632 flow(source_nonconvex_invest_electricityBus_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(source_nonconvex_invest_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(source_nonconvex_invest_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(source_nonconvex_invest_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(source_nonconvex_invest_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(source_nonconvex_invest_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(source_nonconvex_invest_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(source_nonconvex_invest_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(source_nonconvex_invest_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(source_nonconvex_invest_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(source_nonconvex_invest_electricityBus_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(source_nonconvex_invest_electricityBus_5) = 0 c_u_InvestmentFlowBlock_minimum_rule(source_nonconvex_invest_electricityBus_0)_: @@ -115,9 +115,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(source_nonconvex_invest_electricityBus_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(source_nonconvex_invest_electricityBus_0)_: ++1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_0) -1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_0) -1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_0) -+1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_0) = 0 c_e_InvestmentFlowBlock_old_rule(source_nonconvex_invest_electricityBus_1)_: @@ -133,64 +133,65 @@ c_e_InvestmentFlowBlock_old_rule(source_nonconvex_invest_electricityBus_2)_: = 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) ++1 flow(source_nonconvex_invest_electricityBus_0) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_0_1)_: -+1 flow(source_nonconvex_invest_electricityBus_0_1) ++1 flow(source_nonconvex_invest_electricityBus_1) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_1_2)_: -+1 flow(source_nonconvex_invest_electricityBus_1_2) ++1 flow(source_nonconvex_invest_electricityBus_2) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_1_3)_: -+1 flow(source_nonconvex_invest_electricityBus_1_3) ++1 flow(source_nonconvex_invest_electricityBus_3) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_2_4)_: -+1 flow(source_nonconvex_invest_electricityBus_2_4) ++1 flow(source_nonconvex_invest_electricityBus_4) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_2) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_2_5)_: -+1 flow(source_nonconvex_invest_electricityBus_2_5) ++1 flow(source_nonconvex_invest_electricityBus_5) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_2) <= 0 c_u_InvestmentFlowBlock_full_load_time_max(source_nonconvex_invest_electricityBus)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) -+1 flow(source_nonconvex_invest_electricityBus_0_1) -+1 flow(source_nonconvex_invest_electricityBus_1_2) -+1 flow(source_nonconvex_invest_electricityBus_1_3) -+1 flow(source_nonconvex_invest_electricityBus_2_4) -+1 flow(source_nonconvex_invest_electricityBus_2_5) ++1 flow(source_nonconvex_invest_electricityBus_0) ++1 flow(source_nonconvex_invest_electricityBus_1) ++1 flow(source_nonconvex_invest_electricityBus_2) ++1 flow(source_nonconvex_invest_electricityBus_3) ++1 flow(source_nonconvex_invest_electricityBus_4) ++1 flow(source_nonconvex_invest_electricityBus_5) -2.3 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) -2.3 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) -2.3 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_2) -<= 0.0 +<= 0 bounds 0 <= InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) <= 20 - 0 <= InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) <= 1 0 <= InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_1) <= 20 - 0 <= InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) <= 1 0 <= InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_2) <= 20 + 0 <= InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) <= 1 + 0 <= InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) <= 1 0 <= InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_2) <= 1 - 0 <= flow(source_nonconvex_invest_electricityBus_0_0) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_0_1) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_1_2) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_1_3) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_2_4) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_2_5) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_0) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_1) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_2) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_3) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_4) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_5) <= +inf 0 <= InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_1) <= +inf @@ -198,7 +199,6 @@ bounds 0 <= InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_0) <= +inf binary InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) diff --git a/tests/lp_files/flow_invest_with_offset_no_minimum.lp b/tests/lp_files/flow_invest_with_offset_no_minimum.lp index ead5cfa51..dbc64c216 100644 --- a/tests/lp_files/flow_invest_with_offset_no_minimum.lp +++ b/tests/lp_files/flow_invest_with_offset_no_minimum.lp @@ -4,22 +4,22 @@ min objective: +500 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) +34 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) -+25 flow(source_nonconvex_invest_electricityBus_0_0) -+25 flow(source_nonconvex_invest_electricityBus_0_1) -+25 flow(source_nonconvex_invest_electricityBus_0_2) ++25 flow(source_nonconvex_invest_electricityBus_0) ++25 flow(source_nonconvex_invest_electricityBus_1) ++25 flow(source_nonconvex_invest_electricityBus_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(source_nonconvex_invest_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(source_nonconvex_invest_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(source_nonconvex_invest_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(source_nonconvex_invest_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(source_nonconvex_invest_electricityBus_2) = 0 c_u_InvestmentFlowBlock_minimum_rule(source_nonconvex_invest_electricityBus_0)_: @@ -37,33 +37,33 @@ c_e_InvestmentFlowBlock_total_rule(source_nonconvex_invest_electricityBus_0)_: = 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) ++1 flow(source_nonconvex_invest_electricityBus_0) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_0_1)_: -+1 flow(source_nonconvex_invest_electricityBus_0_1) ++1 flow(source_nonconvex_invest_electricityBus_1) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_0_2)_: -+1 flow(source_nonconvex_invest_electricityBus_0_2) ++1 flow(source_nonconvex_invest_electricityBus_2) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_full_load_time_max(source_nonconvex_invest_electricityBus)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) -+1 flow(source_nonconvex_invest_electricityBus_0_1) -+1 flow(source_nonconvex_invest_electricityBus_0_2) ++1 flow(source_nonconvex_invest_electricityBus_0) ++1 flow(source_nonconvex_invest_electricityBus_1) ++1 flow(source_nonconvex_invest_electricityBus_2) -2.3 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= 0 bounds 0 <= InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) <= 1234 0 <= InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) <= 1 - 0 <= flow(source_nonconvex_invest_electricityBus_0_0) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_0_1) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_0_2) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_0) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_1) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= +inf binary InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) diff --git a/tests/lp_files/flow_invest_with_offset_no_minimum_multi_period.lp b/tests/lp_files/flow_invest_with_offset_no_minimum_multi_period.lp index 6ff9b91de..a589a982e 100644 --- a/tests/lp_files/flow_invest_with_offset_no_minimum_multi_period.lp +++ b/tests/lp_files/flow_invest_with_offset_no_minimum_multi_period.lp @@ -3,42 +3,42 @@ min objective: +88.1844182057801 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) -+34 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) +58.20563481102971 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_1) -+33.33333333333333 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) +28.814670698529593 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_2) ++34 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) ++33.33333333333333 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) +32.6797385620915 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_2) -+25 flow(source_nonconvex_invest_electricityBus_0_0) -+25 flow(source_nonconvex_invest_electricityBus_0_1) -+24.509803921568626 flow(source_nonconvex_invest_electricityBus_1_2) -+24.509803921568626 flow(source_nonconvex_invest_electricityBus_1_3) -+24.029219530949632 flow(source_nonconvex_invest_electricityBus_2_4) -+24.029219530949632 flow(source_nonconvex_invest_electricityBus_2_5) ++25 flow(source_nonconvex_invest_electricityBus_0) ++25 flow(source_nonconvex_invest_electricityBus_1) ++24.509803921568626 flow(source_nonconvex_invest_electricityBus_2) ++24.509803921568626 flow(source_nonconvex_invest_electricityBus_3) ++24.029219530949632 flow(source_nonconvex_invest_electricityBus_4) ++24.029219530949632 flow(source_nonconvex_invest_electricityBus_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(source_nonconvex_invest_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(source_nonconvex_invest_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(source_nonconvex_invest_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(source_nonconvex_invest_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(source_nonconvex_invest_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(source_nonconvex_invest_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(source_nonconvex_invest_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(source_nonconvex_invest_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(source_nonconvex_invest_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(source_nonconvex_invest_electricityBus_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(source_nonconvex_invest_electricityBus_5) = 0 c_u_InvestmentFlowBlock_minimum_rule(source_nonconvex_invest_electricityBus_0)_: @@ -112,9 +112,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(source_nonconvex_invest_electricityBus_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(source_nonconvex_invest_electricityBus_0)_: ++1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_0) -1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_0) -1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_0) -+1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_0) = 0 c_e_InvestmentFlowBlock_old_rule(source_nonconvex_invest_electricityBus_1)_: @@ -130,64 +130,65 @@ c_e_InvestmentFlowBlock_old_rule(source_nonconvex_invest_electricityBus_2)_: = 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) ++1 flow(source_nonconvex_invest_electricityBus_0) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_0_1)_: -+1 flow(source_nonconvex_invest_electricityBus_0_1) ++1 flow(source_nonconvex_invest_electricityBus_1) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_1_2)_: -+1 flow(source_nonconvex_invest_electricityBus_1_2) ++1 flow(source_nonconvex_invest_electricityBus_2) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_1_3)_: -+1 flow(source_nonconvex_invest_electricityBus_1_3) ++1 flow(source_nonconvex_invest_electricityBus_3) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_2_4)_: -+1 flow(source_nonconvex_invest_electricityBus_2_4) ++1 flow(source_nonconvex_invest_electricityBus_4) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_2) <= 0 c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_2_5)_: -+1 flow(source_nonconvex_invest_electricityBus_2_5) ++1 flow(source_nonconvex_invest_electricityBus_5) -0.8 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_2) <= 0 c_u_InvestmentFlowBlock_full_load_time_max(source_nonconvex_invest_electricityBus)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) -+1 flow(source_nonconvex_invest_electricityBus_0_1) -+1 flow(source_nonconvex_invest_electricityBus_1_2) -+1 flow(source_nonconvex_invest_electricityBus_1_3) -+1 flow(source_nonconvex_invest_electricityBus_2_4) -+1 flow(source_nonconvex_invest_electricityBus_2_5) ++1 flow(source_nonconvex_invest_electricityBus_0) ++1 flow(source_nonconvex_invest_electricityBus_1) ++1 flow(source_nonconvex_invest_electricityBus_2) ++1 flow(source_nonconvex_invest_electricityBus_3) ++1 flow(source_nonconvex_invest_electricityBus_4) ++1 flow(source_nonconvex_invest_electricityBus_5) -2.3 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) -2.3 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) -2.3 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_2) -<= 0.0 +<= 0 bounds 0 <= InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) <= 1234 - 0 <= InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) <= 1 0 <= InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_1) <= 1234 - 0 <= InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) <= 1 0 <= InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_2) <= 1234 + 0 <= InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) <= 1 + 0 <= InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) <= 1 0 <= InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_2) <= 1 - 0 <= flow(source_nonconvex_invest_electricityBus_0_0) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_0_1) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_1_2) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_1_3) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_2_4) <= +inf - 0 <= flow(source_nonconvex_invest_electricityBus_2_5) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_0) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_1) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_2) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_3) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_4) <= +inf + 0 <= flow(source_nonconvex_invest_electricityBus_5) <= +inf 0 <= InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_1) <= +inf @@ -195,7 +196,6 @@ bounds 0 <= InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_0) <= +inf binary InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) diff --git a/tests/lp_files/flow_invest_without_offset.lp b/tests/lp_files/flow_invest_without_offset.lp index 0e52141d3..7f02b3885 100644 --- a/tests/lp_files/flow_invest_without_offset.lp +++ b/tests/lp_files/flow_invest_without_offset.lp @@ -3,22 +3,22 @@ min objective: +500 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_0) -+25 flow(electricityBus_sink_nonconvex_invest_0_0) -+25 flow(electricityBus_sink_nonconvex_invest_0_1) -+25 flow(electricityBus_sink_nonconvex_invest_0_2) ++25 flow(electricityBus_sink_nonconvex_invest_0) ++25 flow(electricityBus_sink_nonconvex_invest_1) ++25 flow(electricityBus_sink_nonconvex_invest_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(electricityBus_sink_nonconvex_invest_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(electricityBus_sink_nonconvex_invest_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(electricityBus_sink_nonconvex_invest_2) = 0 c_u_InvestmentFlowBlock_minimum_rule(electricityBus_sink_nonconvex_invest_0)_: @@ -37,32 +37,32 @@ c_e_InvestmentFlowBlock_total_rule(electricityBus_sink_nonconvex_invest_0)_: = 0 c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_0_0)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_0) ++1 flow(electricityBus_sink_nonconvex_invest_0) -0.8 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_0_1)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_1) ++1 flow(electricityBus_sink_nonconvex_invest_1) -0.8 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_0_2)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_2) ++1 flow(electricityBus_sink_nonconvex_invest_2) -0.8 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) <= 0 c_u_InvestmentFlowBlock_full_load_time_max(electricityBus_sink_nonconvex_invest)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_0) -+1 flow(electricityBus_sink_nonconvex_invest_0_1) -+1 flow(electricityBus_sink_nonconvex_invest_0_2) ++1 flow(electricityBus_sink_nonconvex_invest_0) ++1 flow(electricityBus_sink_nonconvex_invest_1) ++1 flow(electricityBus_sink_nonconvex_invest_2) -2.3 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) <= 0 bounds 0 <= InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_0) <= 172 - 0 <= flow(electricityBus_sink_nonconvex_invest_0_0) <= +inf - 0 <= flow(electricityBus_sink_nonconvex_invest_0_1) <= +inf - 0 <= flow(electricityBus_sink_nonconvex_invest_0_2) <= +inf + 0 <= flow(electricityBus_sink_nonconvex_invest_0) <= +inf + 0 <= flow(electricityBus_sink_nonconvex_invest_1) <= +inf + 0 <= flow(electricityBus_sink_nonconvex_invest_2) <= +inf 0 <= InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_0) <= 1 0 <= InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) <= +inf binary diff --git a/tests/lp_files/flow_invest_without_offset_multi_period.lp b/tests/lp_files/flow_invest_without_offset_multi_period.lp index 40b7e34a1..527720e56 100644 --- a/tests/lp_files/flow_invest_without_offset_multi_period.lp +++ b/tests/lp_files/flow_invest_without_offset_multi_period.lp @@ -5,37 +5,37 @@ objective: +88.1844182057801 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_0) +58.20563481102971 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_1) +28.814670698529593 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_2) -+25 flow(electricityBus_sink_nonconvex_invest_0_0) -+25 flow(electricityBus_sink_nonconvex_invest_0_1) -+24.509803921568626 flow(electricityBus_sink_nonconvex_invest_1_2) -+24.509803921568626 flow(electricityBus_sink_nonconvex_invest_1_3) -+24.029219530949632 flow(electricityBus_sink_nonconvex_invest_2_4) -+24.029219530949632 flow(electricityBus_sink_nonconvex_invest_2_5) ++25 flow(electricityBus_sink_nonconvex_invest_0) ++25 flow(electricityBus_sink_nonconvex_invest_1) ++24.509803921568626 flow(electricityBus_sink_nonconvex_invest_2) ++24.509803921568626 flow(electricityBus_sink_nonconvex_invest_3) ++24.029219530949632 flow(electricityBus_sink_nonconvex_invest_4) ++24.029219530949632 flow(electricityBus_sink_nonconvex_invest_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(electricityBus_sink_nonconvex_invest_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(electricityBus_sink_nonconvex_invest_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(electricityBus_sink_nonconvex_invest_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(electricityBus_sink_nonconvex_invest_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(electricityBus_sink_nonconvex_invest_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(electricityBus_sink_nonconvex_invest_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(electricityBus_sink_nonconvex_invest_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(electricityBus_sink_nonconvex_invest_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(electricityBus_sink_nonconvex_invest_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(electricityBus_sink_nonconvex_invest_5) = 0 c_u_InvestmentFlowBlock_minimum_rule(electricityBus_sink_nonconvex_invest_0)_: @@ -112,9 +112,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_sink_nonconvex_invest_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_sink_nonconvex_invest_0)_: ++1 InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_0) -1 InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_0) -1 InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_0) -+1 InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_0) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_sink_nonconvex_invest_1)_: @@ -130,64 +130,65 @@ c_e_InvestmentFlowBlock_old_rule(electricityBus_sink_nonconvex_invest_2)_: = 0 c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_0_0)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_0) ++1 flow(electricityBus_sink_nonconvex_invest_0) -0.8 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_0_1)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_1) ++1 flow(electricityBus_sink_nonconvex_invest_1) -0.8 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_1_2)_: -+1 flow(electricityBus_sink_nonconvex_invest_1_2) ++1 flow(electricityBus_sink_nonconvex_invest_2) -0.8 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_1_3)_: -+1 flow(electricityBus_sink_nonconvex_invest_1_3) ++1 flow(electricityBus_sink_nonconvex_invest_3) -0.8 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_2_4)_: -+1 flow(electricityBus_sink_nonconvex_invest_2_4) ++1 flow(electricityBus_sink_nonconvex_invest_4) -0.8 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_2) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_2_5)_: -+1 flow(electricityBus_sink_nonconvex_invest_2_5) ++1 flow(electricityBus_sink_nonconvex_invest_5) -0.8 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_2) <= 0 c_u_InvestmentFlowBlock_full_load_time_max(electricityBus_sink_nonconvex_invest)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_0) -+1 flow(electricityBus_sink_nonconvex_invest_0_1) -+1 flow(electricityBus_sink_nonconvex_invest_1_2) -+1 flow(electricityBus_sink_nonconvex_invest_1_3) -+1 flow(electricityBus_sink_nonconvex_invest_2_4) -+1 flow(electricityBus_sink_nonconvex_invest_2_5) ++1 flow(electricityBus_sink_nonconvex_invest_0) ++1 flow(electricityBus_sink_nonconvex_invest_1) ++1 flow(electricityBus_sink_nonconvex_invest_2) ++1 flow(electricityBus_sink_nonconvex_invest_3) ++1 flow(electricityBus_sink_nonconvex_invest_4) ++1 flow(electricityBus_sink_nonconvex_invest_5) -2.3 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) -2.3 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_1) -2.3 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_2) -<= 0.0 +<= 0 bounds 0 <= InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_0) <= 172 0 <= InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_1) <= 172 0 <= InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_2) <= 172 - 0 <= flow(electricityBus_sink_nonconvex_invest_0_0) <= +inf - 0 <= flow(electricityBus_sink_nonconvex_invest_0_1) <= +inf - 0 <= flow(electricityBus_sink_nonconvex_invest_1_2) <= +inf - 0 <= flow(electricityBus_sink_nonconvex_invest_1_3) <= +inf - 0 <= flow(electricityBus_sink_nonconvex_invest_2_4) <= +inf - 0 <= flow(electricityBus_sink_nonconvex_invest_2_5) <= +inf + 0 <= flow(electricityBus_sink_nonconvex_invest_0) <= +inf + 0 <= flow(electricityBus_sink_nonconvex_invest_1) <= +inf + 0 <= flow(electricityBus_sink_nonconvex_invest_2) <= +inf + 0 <= flow(electricityBus_sink_nonconvex_invest_3) <= +inf + 0 <= flow(electricityBus_sink_nonconvex_invest_4) <= +inf + 0 <= flow(electricityBus_sink_nonconvex_invest_5) <= +inf 0 <= InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_0) <= 1 0 <= InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_1) <= 1 0 <= InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_2) <= 1 0 <= InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_1) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_1) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_2) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_0) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_1) <= +inf 0 <= InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_2) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_0) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_1) <= +inf @@ -195,7 +196,6 @@ bounds 0 <= InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_2) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_0) <= +inf binary InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_0) InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_1) diff --git a/tests/lp_files/flow_invest_without_offset_multi_period_remaining_value.lp b/tests/lp_files/flow_invest_without_offset_multi_period_remaining_value.lp index 40b7e34a1..527720e56 100644 --- a/tests/lp_files/flow_invest_without_offset_multi_period_remaining_value.lp +++ b/tests/lp_files/flow_invest_without_offset_multi_period_remaining_value.lp @@ -5,37 +5,37 @@ objective: +88.1844182057801 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_0) +58.20563481102971 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_1) +28.814670698529593 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_2) -+25 flow(electricityBus_sink_nonconvex_invest_0_0) -+25 flow(electricityBus_sink_nonconvex_invest_0_1) -+24.509803921568626 flow(electricityBus_sink_nonconvex_invest_1_2) -+24.509803921568626 flow(electricityBus_sink_nonconvex_invest_1_3) -+24.029219530949632 flow(electricityBus_sink_nonconvex_invest_2_4) -+24.029219530949632 flow(electricityBus_sink_nonconvex_invest_2_5) ++25 flow(electricityBus_sink_nonconvex_invest_0) ++25 flow(electricityBus_sink_nonconvex_invest_1) ++24.509803921568626 flow(electricityBus_sink_nonconvex_invest_2) ++24.509803921568626 flow(electricityBus_sink_nonconvex_invest_3) ++24.029219530949632 flow(electricityBus_sink_nonconvex_invest_4) ++24.029219530949632 flow(electricityBus_sink_nonconvex_invest_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(electricityBus_sink_nonconvex_invest_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(electricityBus_sink_nonconvex_invest_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(electricityBus_sink_nonconvex_invest_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(electricityBus_sink_nonconvex_invest_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(electricityBus_sink_nonconvex_invest_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(electricityBus_sink_nonconvex_invest_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(electricityBus_sink_nonconvex_invest_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(electricityBus_sink_nonconvex_invest_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(electricityBus_sink_nonconvex_invest_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(electricityBus_sink_nonconvex_invest_5) = 0 c_u_InvestmentFlowBlock_minimum_rule(electricityBus_sink_nonconvex_invest_0)_: @@ -112,9 +112,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_sink_nonconvex_invest_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_sink_nonconvex_invest_0)_: ++1 InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_0) -1 InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_0) -1 InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_0) -+1 InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_0) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_sink_nonconvex_invest_1)_: @@ -130,64 +130,65 @@ c_e_InvestmentFlowBlock_old_rule(electricityBus_sink_nonconvex_invest_2)_: = 0 c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_0_0)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_0) ++1 flow(electricityBus_sink_nonconvex_invest_0) -0.8 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_0_1)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_1) ++1 flow(electricityBus_sink_nonconvex_invest_1) -0.8 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_1_2)_: -+1 flow(electricityBus_sink_nonconvex_invest_1_2) ++1 flow(electricityBus_sink_nonconvex_invest_2) -0.8 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_1_3)_: -+1 flow(electricityBus_sink_nonconvex_invest_1_3) ++1 flow(electricityBus_sink_nonconvex_invest_3) -0.8 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_2_4)_: -+1 flow(electricityBus_sink_nonconvex_invest_2_4) ++1 flow(electricityBus_sink_nonconvex_invest_4) -0.8 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_2) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_2_5)_: -+1 flow(electricityBus_sink_nonconvex_invest_2_5) ++1 flow(electricityBus_sink_nonconvex_invest_5) -0.8 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_2) <= 0 c_u_InvestmentFlowBlock_full_load_time_max(electricityBus_sink_nonconvex_invest)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_0) -+1 flow(electricityBus_sink_nonconvex_invest_0_1) -+1 flow(electricityBus_sink_nonconvex_invest_1_2) -+1 flow(electricityBus_sink_nonconvex_invest_1_3) -+1 flow(electricityBus_sink_nonconvex_invest_2_4) -+1 flow(electricityBus_sink_nonconvex_invest_2_5) ++1 flow(electricityBus_sink_nonconvex_invest_0) ++1 flow(electricityBus_sink_nonconvex_invest_1) ++1 flow(electricityBus_sink_nonconvex_invest_2) ++1 flow(electricityBus_sink_nonconvex_invest_3) ++1 flow(electricityBus_sink_nonconvex_invest_4) ++1 flow(electricityBus_sink_nonconvex_invest_5) -2.3 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) -2.3 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_1) -2.3 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_2) -<= 0.0 +<= 0 bounds 0 <= InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_0) <= 172 0 <= InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_1) <= 172 0 <= InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_2) <= 172 - 0 <= flow(electricityBus_sink_nonconvex_invest_0_0) <= +inf - 0 <= flow(electricityBus_sink_nonconvex_invest_0_1) <= +inf - 0 <= flow(electricityBus_sink_nonconvex_invest_1_2) <= +inf - 0 <= flow(electricityBus_sink_nonconvex_invest_1_3) <= +inf - 0 <= flow(electricityBus_sink_nonconvex_invest_2_4) <= +inf - 0 <= flow(electricityBus_sink_nonconvex_invest_2_5) <= +inf + 0 <= flow(electricityBus_sink_nonconvex_invest_0) <= +inf + 0 <= flow(electricityBus_sink_nonconvex_invest_1) <= +inf + 0 <= flow(electricityBus_sink_nonconvex_invest_2) <= +inf + 0 <= flow(electricityBus_sink_nonconvex_invest_3) <= +inf + 0 <= flow(electricityBus_sink_nonconvex_invest_4) <= +inf + 0 <= flow(electricityBus_sink_nonconvex_invest_5) <= +inf 0 <= InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_0) <= 1 0 <= InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_1) <= 1 0 <= InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_2) <= 1 0 <= InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_1) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_1) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_2) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_0) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_1) <= +inf 0 <= InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_2) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_0) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_1) <= +inf @@ -195,7 +196,6 @@ bounds 0 <= InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_2) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_0) <= +inf binary InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_0) InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_1) diff --git a/tests/lp_files/flow_nonconvex_invest_bounded_converter.lp b/tests/lp_files/flow_nonconvex_invest_bounded_converter.lp index 7e8e1e56d..c1d0128ae 100644 --- a/tests/lp_files/flow_nonconvex_invest_bounded_converter.lp +++ b/tests/lp_files/flow_nonconvex_invest_bounded_converter.lp @@ -2,50 +2,50 @@ min objective: -+25 flow(converter_nonconvex_invest_electricityBus_0_0) -+25 flow(converter_nonconvex_invest_electricityBus_0_1) -+25 flow(converter_nonconvex_invest_electricityBus_0_2) ++25 flow(converter_nonconvex_invest_electricityBus_0) ++25 flow(converter_nonconvex_invest_electricityBus_1) ++25 flow(converter_nonconvex_invest_electricityBus_2) +500 InvestNonConvexFlowBlock_invest(converter_nonconvex_invest_electricityBus_0) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(converter_nonconvex_invest_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(converter_nonconvex_invest_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(converter_nonconvex_invest_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(converter_nonconvex_invest_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(converter_nonconvex_invest_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(converter_nonconvex_invest_electricityBus_2) = 0 -c_e_BusBlock_balance(fuelBus_0_0)_: -+1 flow(fuelBus_converter_nonconvex_invest_0_0) +c_e_BusBlock_balance(fuelBus_0)_: ++1 flow(fuelBus_converter_nonconvex_invest_0) = 0 -c_e_BusBlock_balance(fuelBus_0_1)_: -+1 flow(fuelBus_converter_nonconvex_invest_0_1) +c_e_BusBlock_balance(fuelBus_1)_: ++1 flow(fuelBus_converter_nonconvex_invest_1) = 0 -c_e_BusBlock_balance(fuelBus_0_2)_: -+1 flow(fuelBus_converter_nonconvex_invest_0_2) +c_e_BusBlock_balance(fuelBus_2)_: ++1 flow(fuelBus_converter_nonconvex_invest_2) = 0 -c_e_ConverterBlock_relation(converter_nonconvex_invest_fuelBus_electricityBus_0_0)_: --1 flow(converter_nonconvex_invest_electricityBus_0_0) -+0.5 flow(fuelBus_converter_nonconvex_invest_0_0) +c_e_ConverterBlock_relation(converter_nonconvex_invest_fuelBus_electricityBus_0)_: ++0.5 flow(fuelBus_converter_nonconvex_invest_0) +-1 flow(converter_nonconvex_invest_electricityBus_0) = 0 -c_e_ConverterBlock_relation(converter_nonconvex_invest_fuelBus_electricityBus_0_1)_: --1 flow(converter_nonconvex_invest_electricityBus_0_1) -+0.5 flow(fuelBus_converter_nonconvex_invest_0_1) +c_e_ConverterBlock_relation(converter_nonconvex_invest_fuelBus_electricityBus_1)_: ++0.5 flow(fuelBus_converter_nonconvex_invest_1) +-1 flow(converter_nonconvex_invest_electricityBus_1) = 0 -c_e_ConverterBlock_relation(converter_nonconvex_invest_fuelBus_electricityBus_0_2)_: --1 flow(converter_nonconvex_invest_electricityBus_0_2) -+0.5 flow(fuelBus_converter_nonconvex_invest_0_2) +c_e_ConverterBlock_relation(converter_nonconvex_invest_fuelBus_electricityBus_2)_: ++0.5 flow(fuelBus_converter_nonconvex_invest_2) +-1 flow(converter_nonconvex_invest_electricityBus_2) = 0 c_l_InvestNonConvexFlowBlock_minimum_investment(converter_nonconvex_invest_electricityBus_0)_: @@ -56,33 +56,33 @@ c_u_InvestNonConvexFlowBlock_maximum_investment(converter_nonconvex_invest_elect +1 InvestNonConvexFlowBlock_invest(converter_nonconvex_invest_electricityBus_0) <= 1234 -c_u_InvestNonConvexFlowBlock_min(converter_nonconvex_invest_electricityBus_0_0)_: --1 flow(converter_nonconvex_invest_electricityBus_0_0) +c_u_InvestNonConvexFlowBlock_min(converter_nonconvex_invest_electricityBus_0)_: +-1 flow(converter_nonconvex_invest_electricityBus_0) +0.25 InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_0) <= 0 -c_u_InvestNonConvexFlowBlock_min(converter_nonconvex_invest_electricityBus_0_1)_: --1 flow(converter_nonconvex_invest_electricityBus_0_1) +c_u_InvestNonConvexFlowBlock_min(converter_nonconvex_invest_electricityBus_1)_: +-1 flow(converter_nonconvex_invest_electricityBus_1) +0.25 InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_1) <= 0 -c_u_InvestNonConvexFlowBlock_min(converter_nonconvex_invest_electricityBus_0_2)_: --1 flow(converter_nonconvex_invest_electricityBus_0_2) +c_u_InvestNonConvexFlowBlock_min(converter_nonconvex_invest_electricityBus_2)_: +-1 flow(converter_nonconvex_invest_electricityBus_2) +0.25 InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_2) <= 0 -c_u_InvestNonConvexFlowBlock_max(converter_nonconvex_invest_electricityBus_0_0)_: -+1 flow(converter_nonconvex_invest_electricityBus_0_0) +c_u_InvestNonConvexFlowBlock_max(converter_nonconvex_invest_electricityBus_0)_: ++1 flow(converter_nonconvex_invest_electricityBus_0) -0.5 InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_0) <= 0 -c_u_InvestNonConvexFlowBlock_max(converter_nonconvex_invest_electricityBus_0_1)_: -+1 flow(converter_nonconvex_invest_electricityBus_0_1) +c_u_InvestNonConvexFlowBlock_max(converter_nonconvex_invest_electricityBus_1)_: ++1 flow(converter_nonconvex_invest_electricityBus_1) -0.5 InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_1) <= 0 -c_u_InvestNonConvexFlowBlock_max(converter_nonconvex_invest_electricityBus_0_2)_: -+1 flow(converter_nonconvex_invest_electricityBus_0_2) +c_u_InvestNonConvexFlowBlock_max(converter_nonconvex_invest_electricityBus_2)_: ++1 flow(converter_nonconvex_invest_electricityBus_2) -0.5 InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_2) <= 0 @@ -135,13 +135,13 @@ c_u_InvestNonConvexFlowBlock_invest_nc_three(converter_nonconvex_invest_electric <= 1234 bounds - 0 <= flow(converter_nonconvex_invest_electricityBus_0_0) <= +inf - 0 <= flow(converter_nonconvex_invest_electricityBus_0_1) <= +inf - 0 <= flow(converter_nonconvex_invest_electricityBus_0_2) <= +inf + 0 <= flow(fuelBus_converter_nonconvex_invest_0) <= +inf + 0 <= flow(fuelBus_converter_nonconvex_invest_1) <= +inf + 0 <= flow(fuelBus_converter_nonconvex_invest_2) <= +inf + 0 <= flow(converter_nonconvex_invest_electricityBus_0) <= +inf + 0 <= flow(converter_nonconvex_invest_electricityBus_1) <= +inf + 0 <= flow(converter_nonconvex_invest_electricityBus_2) <= +inf 0 <= InvestNonConvexFlowBlock_invest(converter_nonconvex_invest_electricityBus_0) <= 1234 - 0 <= flow(fuelBus_converter_nonconvex_invest_0_0) <= +inf - 0 <= flow(fuelBus_converter_nonconvex_invest_0_1) <= +inf - 0 <= flow(fuelBus_converter_nonconvex_invest_0_2) <= +inf 0 <= InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_0) <= +inf 0 <= InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_1) <= +inf 0 <= InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_2) <= +inf diff --git a/tests/lp_files/flow_reaching_lifetime.lp b/tests/lp_files/flow_reaching_lifetime.lp index e4b063214..343cf5573 100644 --- a/tests/lp_files/flow_reaching_lifetime.lp +++ b/tests/lp_files/flow_reaching_lifetime.lp @@ -2,52 +2,52 @@ min objective: -+25 flow(electricityBus_excess_0_0) -+25 flow(electricityBus_excess_0_1) -+24.509803921568626 flow(electricityBus_excess_1_2) -+24.509803921568626 flow(electricityBus_excess_1_3) -+24.029219530949632 flow(electricityBus_excess_2_4) -+24.029219530949632 flow(electricityBus_excess_2_5) ++25 flow(electricityBus_excess_0) ++25 flow(electricityBus_excess_1) ++24.509803921568626 flow(electricityBus_excess_2) ++24.509803921568626 flow(electricityBus_excess_3) ++24.029219530949632 flow(electricityBus_excess_4) ++24.029219530949632 flow(electricityBus_excess_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(electricityBus_excess_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(electricityBus_excess_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(electricityBus_excess_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(electricityBus_excess_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(electricityBus_excess_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(electricityBus_excess_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(electricityBus_excess_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(electricityBus_excess_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(electricityBus_excess_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(electricityBus_excess_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(electricityBus_excess_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(electricityBus_excess_5) = 0 c_e_SimpleFlowBlock_lifetime_output(electricityBus_excess_2_4)_: -+1 flow(electricityBus_excess_2_4) ++1 flow(electricityBus_excess_4) = 0 c_e_SimpleFlowBlock_lifetime_output(electricityBus_excess_2_5)_: -+1 flow(electricityBus_excess_2_5) ++1 flow(electricityBus_excess_5) = 0 bounds - 0 <= flow(electricityBus_excess_0_0) <= 8.0 - 0 <= flow(electricityBus_excess_0_1) <= 8.0 - 0 <= flow(electricityBus_excess_1_2) <= 8.0 - 0 <= flow(electricityBus_excess_1_3) <= 8.0 - 0 <= flow(electricityBus_excess_2_4) <= 8.0 - 0 <= flow(electricityBus_excess_2_5) <= 8.0 + 0 <= flow(electricityBus_excess_0) <= 8.0 + 0 <= flow(electricityBus_excess_1) <= 8.0 + 0 <= flow(electricityBus_excess_2) <= 8.0 + 0 <= flow(electricityBus_excess_3) <= 8.0 + 0 <= flow(electricityBus_excess_4) <= 8.0 + 0 <= flow(electricityBus_excess_5) <= 8.0 end diff --git a/tests/lp_files/generic_invest_limit.lp b/tests/lp_files/generic_invest_limit.lp index f8598642b..0a0387c16 100644 --- a/tests/lp_files/generic_invest_limit.lp +++ b/tests/lp_files/generic_invest_limit.lp @@ -2,38 +2,38 @@ min objective: -+100 InvestmentFlowBlock_invest(source_1_bus_1_0) -+75 InvestmentFlowBlock_invest(source_2_bus_1_0) +50 InvestmentFlowBlock_invest(source_0_bus_1_0) ++75 InvestmentFlowBlock_invest(source_2_bus_1_0) ++100 InvestmentFlowBlock_invest(source_1_bus_1_0) s.t. c_u_invest_limit_space_constraint_: -+1 InvestmentFlowBlock_invest(source_1_bus_1_0) +4 InvestmentFlowBlock_invest(source_0_bus_1_0) ++1 InvestmentFlowBlock_invest(source_1_bus_1_0) <= 20 -c_e_BusBlock_balance(bus_1_0_0)_: -+1 flow(source_0_bus_1_0_0) -+1 flow(source_2_bus_1_0_0) -+1 flow(source_1_bus_1_0_0) +c_e_BusBlock_balance(bus_1_0)_: ++1 flow(source_0_bus_1_0) ++1 flow(source_1_bus_1_0) ++1 flow(source_2_bus_1_0) = 0 -c_e_BusBlock_balance(bus_1_0_1)_: -+1 flow(source_0_bus_1_0_1) -+1 flow(source_2_bus_1_0_1) -+1 flow(source_1_bus_1_0_1) +c_e_BusBlock_balance(bus_1_1)_: ++1 flow(source_0_bus_1_1) ++1 flow(source_1_bus_1_1) ++1 flow(source_2_bus_1_1) = 0 -c_e_BusBlock_balance(bus_1_0_2)_: -+1 flow(source_0_bus_1_0_2) -+1 flow(source_2_bus_1_0_2) -+1 flow(source_1_bus_1_0_2) +c_e_BusBlock_balance(bus_1_2)_: ++1 flow(source_0_bus_1_2) ++1 flow(source_1_bus_1_2) ++1 flow(source_2_bus_1_2) = 0 -c_e_InvestmentFlowBlock_total_rule(source_1_bus_1_0)_: --1 InvestmentFlowBlock_invest(source_1_bus_1_0) -+1 InvestmentFlowBlock_total(source_1_bus_1_0) +c_e_InvestmentFlowBlock_total_rule(source_0_bus_1_0)_: +-1 InvestmentFlowBlock_invest(source_0_bus_1_0) ++1 InvestmentFlowBlock_total(source_0_bus_1_0) = 0 c_e_InvestmentFlowBlock_total_rule(source_2_bus_1_0)_: @@ -41,70 +41,70 @@ c_e_InvestmentFlowBlock_total_rule(source_2_bus_1_0)_: +1 InvestmentFlowBlock_total(source_2_bus_1_0) = 0 -c_e_InvestmentFlowBlock_total_rule(source_0_bus_1_0)_: --1 InvestmentFlowBlock_invest(source_0_bus_1_0) -+1 InvestmentFlowBlock_total(source_0_bus_1_0) +c_e_InvestmentFlowBlock_total_rule(source_1_bus_1_0)_: +-1 InvestmentFlowBlock_invest(source_1_bus_1_0) ++1 InvestmentFlowBlock_total(source_1_bus_1_0) = 0 -c_u_InvestmentFlowBlock_max(source_1_bus_1_0_0)_: -+1 flow(source_1_bus_1_0_0) --1 InvestmentFlowBlock_total(source_1_bus_1_0) +c_u_InvestmentFlowBlock_max(source_0_bus_1_0_0)_: ++1 flow(source_0_bus_1_0) +-1 InvestmentFlowBlock_total(source_0_bus_1_0) <= 0 -c_u_InvestmentFlowBlock_max(source_1_bus_1_0_1)_: -+1 flow(source_1_bus_1_0_1) --1 InvestmentFlowBlock_total(source_1_bus_1_0) +c_u_InvestmentFlowBlock_max(source_0_bus_1_0_1)_: ++1 flow(source_0_bus_1_1) +-1 InvestmentFlowBlock_total(source_0_bus_1_0) <= 0 -c_u_InvestmentFlowBlock_max(source_1_bus_1_0_2)_: -+1 flow(source_1_bus_1_0_2) --1 InvestmentFlowBlock_total(source_1_bus_1_0) +c_u_InvestmentFlowBlock_max(source_0_bus_1_0_2)_: ++1 flow(source_0_bus_1_2) +-1 InvestmentFlowBlock_total(source_0_bus_1_0) <= 0 c_u_InvestmentFlowBlock_max(source_2_bus_1_0_0)_: -+1 flow(source_2_bus_1_0_0) ++1 flow(source_2_bus_1_0) -1 InvestmentFlowBlock_total(source_2_bus_1_0) <= 0 c_u_InvestmentFlowBlock_max(source_2_bus_1_0_1)_: -+1 flow(source_2_bus_1_0_1) ++1 flow(source_2_bus_1_1) -1 InvestmentFlowBlock_total(source_2_bus_1_0) <= 0 c_u_InvestmentFlowBlock_max(source_2_bus_1_0_2)_: -+1 flow(source_2_bus_1_0_2) ++1 flow(source_2_bus_1_2) -1 InvestmentFlowBlock_total(source_2_bus_1_0) <= 0 -c_u_InvestmentFlowBlock_max(source_0_bus_1_0_0)_: -+1 flow(source_0_bus_1_0_0) --1 InvestmentFlowBlock_total(source_0_bus_1_0) +c_u_InvestmentFlowBlock_max(source_1_bus_1_0_0)_: ++1 flow(source_1_bus_1_0) +-1 InvestmentFlowBlock_total(source_1_bus_1_0) <= 0 -c_u_InvestmentFlowBlock_max(source_0_bus_1_0_1)_: -+1 flow(source_0_bus_1_0_1) --1 InvestmentFlowBlock_total(source_0_bus_1_0) +c_u_InvestmentFlowBlock_max(source_1_bus_1_0_1)_: ++1 flow(source_1_bus_1_1) +-1 InvestmentFlowBlock_total(source_1_bus_1_0) <= 0 -c_u_InvestmentFlowBlock_max(source_0_bus_1_0_2)_: -+1 flow(source_0_bus_1_0_2) --1 InvestmentFlowBlock_total(source_0_bus_1_0) +c_u_InvestmentFlowBlock_max(source_1_bus_1_0_2)_: ++1 flow(source_1_bus_1_2) +-1 InvestmentFlowBlock_total(source_1_bus_1_0) <= 0 bounds - 0 <= InvestmentFlowBlock_invest(source_1_bus_1_0) <= +inf - 0 <= InvestmentFlowBlock_invest(source_2_bus_1_0) <= +inf 0 <= InvestmentFlowBlock_invest(source_0_bus_1_0) <= +inf - 0 <= flow(source_0_bus_1_0_0) <= +inf - 0 <= flow(source_2_bus_1_0_0) <= +inf - 0 <= flow(source_1_bus_1_0_0) <= +inf - 0 <= flow(source_0_bus_1_0_1) <= +inf - 0 <= flow(source_2_bus_1_0_1) <= +inf - 0 <= flow(source_1_bus_1_0_1) <= +inf - 0 <= flow(source_0_bus_1_0_2) <= +inf - 0 <= flow(source_2_bus_1_0_2) <= +inf - 0 <= flow(source_1_bus_1_0_2) <= +inf - 0 <= InvestmentFlowBlock_total(source_1_bus_1_0) <= +inf - 0 <= InvestmentFlowBlock_total(source_2_bus_1_0) <= +inf + 0 <= InvestmentFlowBlock_invest(source_2_bus_1_0) <= +inf + 0 <= InvestmentFlowBlock_invest(source_1_bus_1_0) <= +inf + 0 <= flow(source_0_bus_1_0) <= +inf + 0 <= flow(source_0_bus_1_1) <= +inf + 0 <= flow(source_0_bus_1_2) <= +inf + 0 <= flow(source_1_bus_1_0) <= +inf + 0 <= flow(source_1_bus_1_1) <= +inf + 0 <= flow(source_1_bus_1_2) <= +inf + 0 <= flow(source_2_bus_1_0) <= +inf + 0 <= flow(source_2_bus_1_1) <= +inf + 0 <= flow(source_2_bus_1_2) <= +inf 0 <= InvestmentFlowBlock_total(source_0_bus_1_0) <= +inf + 0 <= InvestmentFlowBlock_total(source_2_bus_1_0) <= +inf + 0 <= InvestmentFlowBlock_total(source_1_bus_1_0) <= +inf end diff --git a/tests/lp_files/inactivity_costs.lp b/tests/lp_files/inactivity_costs.lp index 16ed152a4..13af5cc7b 100644 --- a/tests/lp_files/inactivity_costs.lp +++ b/tests/lp_files/inactivity_costs.lp @@ -3,25 +3,25 @@ min objective: +6 ONE_VAR_CONSTANT -+10 flow(cheap_plant_inactivity_costs_Bus_C_0_0) -+10 flow(cheap_plant_inactivity_costs_Bus_C_0_1) -+10 flow(cheap_plant_inactivity_costs_Bus_C_0_2) ++10 flow(cheap_plant_inactivity_costs_Bus_C_0) ++10 flow(cheap_plant_inactivity_costs_Bus_C_1) ++10 flow(cheap_plant_inactivity_costs_Bus_C_2) -2 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_0) -2 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_1) -2 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_2) s.t. -c_e_BusBlock_balance(Bus_C_0_0)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_0_0) +c_e_BusBlock_balance(Bus_C_0)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_0) = 0 -c_e_BusBlock_balance(Bus_C_0_1)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_0_1) +c_e_BusBlock_balance(Bus_C_1)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_1) = 0 -c_e_BusBlock_balance(Bus_C_0_2)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_0_2) +c_e_BusBlock_balance(Bus_C_2)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_2) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bus_C_0)_: @@ -39,41 +39,41 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bu +1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_2) = 0 -c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_0_0)_: --1 flow(cheap_plant_inactivity_costs_Bus_C_0_0) +c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_0)_: +-1 flow(cheap_plant_inactivity_costs_Bus_C_0) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_0) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_0_1)_: --1 flow(cheap_plant_inactivity_costs_Bus_C_0_1) +c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_1)_: +-1 flow(cheap_plant_inactivity_costs_Bus_C_1) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_1) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_0_2)_: --1 flow(cheap_plant_inactivity_costs_Bus_C_0_2) +c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_2)_: +-1 flow(cheap_plant_inactivity_costs_Bus_C_2) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_2) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_0_0)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_0_0) +c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_0)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_0) -1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_0) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_0_1)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_0_1) +c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_1)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_1) -1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_1) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_0_2)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_0_2) +c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_2)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_2) -1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_2) <= 0 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(cheap_plant_inactivity_costs_Bus_C_0_0) <= 10.0 - 0 <= flow(cheap_plant_inactivity_costs_Bus_C_0_1) <= 10.0 - 0 <= flow(cheap_plant_inactivity_costs_Bus_C_0_2) <= 10.0 + 0 <= flow(cheap_plant_inactivity_costs_Bus_C_0) <= 10.0 + 0 <= flow(cheap_plant_inactivity_costs_Bus_C_1) <= 10.0 + 0 <= flow(cheap_plant_inactivity_costs_Bus_C_2) <= 10.0 0 <= NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_0) <= 1 0 <= NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_1) <= 1 0 <= NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_2) <= 1 diff --git a/tests/lp_files/inactivity_costs_multi_period.lp b/tests/lp_files/inactivity_costs_multi_period.lp index b9a6b5800..532b6b432 100644 --- a/tests/lp_files/inactivity_costs_multi_period.lp +++ b/tests/lp_files/inactivity_costs_multi_period.lp @@ -3,12 +3,12 @@ min objective: +11.766243752402922 ONE_VAR_CONSTANT -+10 flow(cheap_plant_inactivity_costs_Bus_C_0_0) -+10 flow(cheap_plant_inactivity_costs_Bus_C_0_1) -+9.80392156862745 flow(cheap_plant_inactivity_costs_Bus_C_1_2) -+9.80392156862745 flow(cheap_plant_inactivity_costs_Bus_C_1_3) -+9.611687812379854 flow(cheap_plant_inactivity_costs_Bus_C_2_4) -+9.611687812379854 flow(cheap_plant_inactivity_costs_Bus_C_2_5) ++10 flow(cheap_plant_inactivity_costs_Bus_C_0) ++10 flow(cheap_plant_inactivity_costs_Bus_C_1) ++9.80392156862745 flow(cheap_plant_inactivity_costs_Bus_C_2) ++9.80392156862745 flow(cheap_plant_inactivity_costs_Bus_C_3) ++9.611687812379854 flow(cheap_plant_inactivity_costs_Bus_C_4) ++9.611687812379854 flow(cheap_plant_inactivity_costs_Bus_C_5) -2 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_0) -2 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_1) -1.9607843137254901 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_2) @@ -18,28 +18,28 @@ objective: s.t. -c_e_BusBlock_balance(Bus_C_0_0)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_0_0) +c_e_BusBlock_balance(Bus_C_0)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_0) = 0 -c_e_BusBlock_balance(Bus_C_0_1)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_0_1) +c_e_BusBlock_balance(Bus_C_1)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_1) = 0 -c_e_BusBlock_balance(Bus_C_1_2)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_1_2) +c_e_BusBlock_balance(Bus_C_2)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_2) = 0 -c_e_BusBlock_balance(Bus_C_1_3)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_1_3) +c_e_BusBlock_balance(Bus_C_3)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_3) = 0 -c_e_BusBlock_balance(Bus_C_2_4)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_2_4) +c_e_BusBlock_balance(Bus_C_4)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_4) = 0 -c_e_BusBlock_balance(Bus_C_2_5)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_2_5) +c_e_BusBlock_balance(Bus_C_5)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_5) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bus_C_0)_: @@ -72,74 +72,74 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bu +1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_5) = 0 -c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_0_0)_: --1 flow(cheap_plant_inactivity_costs_Bus_C_0_0) +c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_0)_: +-1 flow(cheap_plant_inactivity_costs_Bus_C_0) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_0) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_0_1)_: --1 flow(cheap_plant_inactivity_costs_Bus_C_0_1) +c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_1)_: +-1 flow(cheap_plant_inactivity_costs_Bus_C_1) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_1) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_1_2)_: --1 flow(cheap_plant_inactivity_costs_Bus_C_1_2) +c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_2)_: +-1 flow(cheap_plant_inactivity_costs_Bus_C_2) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_2) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_1_3)_: --1 flow(cheap_plant_inactivity_costs_Bus_C_1_3) +c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_3)_: +-1 flow(cheap_plant_inactivity_costs_Bus_C_3) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_3) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_2_4)_: --1 flow(cheap_plant_inactivity_costs_Bus_C_2_4) +c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_4)_: +-1 flow(cheap_plant_inactivity_costs_Bus_C_4) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_4) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_2_5)_: --1 flow(cheap_plant_inactivity_costs_Bus_C_2_5) +c_u_NonConvexFlowBlock_min(cheap_plant_inactivity_costs_Bus_C_5)_: +-1 flow(cheap_plant_inactivity_costs_Bus_C_5) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_5) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_0_0)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_0_0) +c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_0)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_0) -1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_0) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_0_1)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_0_1) +c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_1)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_1) -1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_1) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_1_2)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_1_2) +c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_2)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_2) -1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_2) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_1_3)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_1_3) +c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_3)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_3) -1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_3) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_2_4)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_2_4) +c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_4)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_4) -1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_4) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_2_5)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_2_5) +c_u_NonConvexFlowBlock_max(cheap_plant_inactivity_costs_Bus_C_5)_: ++1 flow(cheap_plant_inactivity_costs_Bus_C_5) -1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_5) <= 0 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(cheap_plant_inactivity_costs_Bus_C_0_0) <= 10.0 - 0 <= flow(cheap_plant_inactivity_costs_Bus_C_0_1) <= 10.0 - 0 <= flow(cheap_plant_inactivity_costs_Bus_C_1_2) <= 10.0 - 0 <= flow(cheap_plant_inactivity_costs_Bus_C_1_3) <= 10.0 - 0 <= flow(cheap_plant_inactivity_costs_Bus_C_2_4) <= 10.0 - 0 <= flow(cheap_plant_inactivity_costs_Bus_C_2_5) <= 10.0 + 0 <= flow(cheap_plant_inactivity_costs_Bus_C_0) <= 10.0 + 0 <= flow(cheap_plant_inactivity_costs_Bus_C_1) <= 10.0 + 0 <= flow(cheap_plant_inactivity_costs_Bus_C_2) <= 10.0 + 0 <= flow(cheap_plant_inactivity_costs_Bus_C_3) <= 10.0 + 0 <= flow(cheap_plant_inactivity_costs_Bus_C_4) <= 10.0 + 0 <= flow(cheap_plant_inactivity_costs_Bus_C_5) <= 10.0 0 <= NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_0) <= 1 0 <= NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_1) <= 1 0 <= NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_2) <= 1 diff --git a/tests/lp_files/integer_source.lp b/tests/lp_files/integer_source.lp index 7a28ce404..5cd5960d1 100644 --- a/tests/lp_files/integer_source.lp +++ b/tests/lp_files/integer_source.lp @@ -2,43 +2,43 @@ min objective: -+25 flow(electricityBus_excess_0_0) -+25 flow(electricityBus_excess_0_1) -+25 flow(electricityBus_excess_0_2) ++25 flow(electricityBus_excess_0) ++25 flow(electricityBus_excess_1) ++25 flow(electricityBus_excess_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(electricityBus_excess_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(electricityBus_excess_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(electricityBus_excess_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(electricityBus_excess_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(electricityBus_excess_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(electricityBus_excess_2) = 0 -c_e_SimpleFlowBlock_integer_flow_constr(electricityBus_excess_0_0)_: --1 flow(electricityBus_excess_0_0) +c_e_SimpleFlowBlock_integer_flow_constr(electricityBus_excess_0)_: +-1 flow(electricityBus_excess_0) +1 SimpleFlowBlock_integer_flow(electricityBus_excess_0) = 0 -c_e_SimpleFlowBlock_integer_flow_constr(electricityBus_excess_0_1)_: --1 flow(electricityBus_excess_0_1) +c_e_SimpleFlowBlock_integer_flow_constr(electricityBus_excess_1)_: +-1 flow(electricityBus_excess_1) +1 SimpleFlowBlock_integer_flow(electricityBus_excess_1) = 0 -c_e_SimpleFlowBlock_integer_flow_constr(electricityBus_excess_0_2)_: --1 flow(electricityBus_excess_0_2) +c_e_SimpleFlowBlock_integer_flow_constr(electricityBus_excess_2)_: +-1 flow(electricityBus_excess_2) +1 SimpleFlowBlock_integer_flow(electricityBus_excess_2) = 0 bounds - 0 <= flow(electricityBus_excess_0_0) <= 10 - 0 <= flow(electricityBus_excess_0_1) <= 10 - 0 <= flow(electricityBus_excess_0_2) <= 10 + 0 <= flow(electricityBus_excess_0) <= 10 + 0 <= flow(electricityBus_excess_1) <= 10 + 0 <= flow(electricityBus_excess_2) <= 10 0 <= SimpleFlowBlock_integer_flow(electricityBus_excess_0) <= +inf 0 <= SimpleFlowBlock_integer_flow(electricityBus_excess_1) <= +inf 0 <= SimpleFlowBlock_integer_flow(electricityBus_excess_2) <= +inf diff --git a/tests/lp_files/invest_non_convex_flow.lp b/tests/lp_files/invest_non_convex_flow.lp index 17d43149a..7258edf67 100644 --- a/tests/lp_files/invest_non_convex_flow.lp +++ b/tests/lp_files/invest_non_convex_flow.lp @@ -2,41 +2,41 @@ min objective: -+8 flow(b1_b2_0_0) -+8 flow(b1_b2_0_1) -+8 flow(b1_b2_0_2) ++8 flow(b1_b2_0) ++8 flow(b1_b2_1) ++8 flow(b1_b2_2) +0.75 InvestNonConvexFlowBlock_invest(b1_b2_0) s.t. -c_e_BusBlock_balance(b2_0_0)_: -+1 flow(b1_b2_0_0) --1 flow(b2_b1_0_0) +c_e_BusBlock_balance(b1_0)_: +-1 flow(b1_b2_0) ++1 flow(b2_b1_0) = 0 -c_e_BusBlock_balance(b2_0_1)_: -+1 flow(b1_b2_0_1) --1 flow(b2_b1_0_1) +c_e_BusBlock_balance(b1_1)_: +-1 flow(b1_b2_1) ++1 flow(b2_b1_1) = 0 -c_e_BusBlock_balance(b2_0_2)_: -+1 flow(b1_b2_0_2) --1 flow(b2_b1_0_2) +c_e_BusBlock_balance(b1_2)_: +-1 flow(b1_b2_2) ++1 flow(b2_b1_2) = 0 -c_e_BusBlock_balance(b1_0_0)_: --1 flow(b1_b2_0_0) -+1 flow(b2_b1_0_0) +c_e_BusBlock_balance(b2_0)_: ++1 flow(b1_b2_0) +-1 flow(b2_b1_0) = 0 -c_e_BusBlock_balance(b1_0_1)_: --1 flow(b1_b2_0_1) -+1 flow(b2_b1_0_1) +c_e_BusBlock_balance(b2_1)_: ++1 flow(b1_b2_1) +-1 flow(b2_b1_1) = 0 -c_e_BusBlock_balance(b1_0_2)_: --1 flow(b1_b2_0_2) -+1 flow(b2_b1_0_2) +c_e_BusBlock_balance(b2_2)_: ++1 flow(b1_b2_2) +-1 flow(b2_b1_2) = 0 c_l_InvestNonConvexFlowBlock_minimum_investment(b1_b2_0)_: @@ -47,33 +47,33 @@ c_u_InvestNonConvexFlowBlock_maximum_investment(b1_b2_0)_: +1 InvestNonConvexFlowBlock_invest(b1_b2_0) <= 10 -c_u_InvestNonConvexFlowBlock_min(b1_b2_0_0)_: --1 flow(b1_b2_0_0) +c_u_InvestNonConvexFlowBlock_min(b1_b2_0)_: +-1 flow(b1_b2_0) +0.25 InvestNonConvexFlowBlock_status_nominal(b1_b2_0) <= 0 -c_u_InvestNonConvexFlowBlock_min(b1_b2_0_1)_: --1 flow(b1_b2_0_1) +c_u_InvestNonConvexFlowBlock_min(b1_b2_1)_: +-1 flow(b1_b2_1) +0.25 InvestNonConvexFlowBlock_status_nominal(b1_b2_1) <= 0 -c_u_InvestNonConvexFlowBlock_min(b1_b2_0_2)_: --1 flow(b1_b2_0_2) +c_u_InvestNonConvexFlowBlock_min(b1_b2_2)_: +-1 flow(b1_b2_2) +0.25 InvestNonConvexFlowBlock_status_nominal(b1_b2_2) <= 0 -c_u_InvestNonConvexFlowBlock_max(b1_b2_0_0)_: -+1 flow(b1_b2_0_0) +c_u_InvestNonConvexFlowBlock_max(b1_b2_0)_: ++1 flow(b1_b2_0) -0.5 InvestNonConvexFlowBlock_status_nominal(b1_b2_0) <= 0 -c_u_InvestNonConvexFlowBlock_max(b1_b2_0_1)_: -+1 flow(b1_b2_0_1) +c_u_InvestNonConvexFlowBlock_max(b1_b2_1)_: ++1 flow(b1_b2_1) -0.5 InvestNonConvexFlowBlock_status_nominal(b1_b2_1) <= 0 -c_u_InvestNonConvexFlowBlock_max(b1_b2_0_2)_: -+1 flow(b1_b2_0_2) +c_u_InvestNonConvexFlowBlock_max(b1_b2_2)_: ++1 flow(b1_b2_2) -0.5 InvestNonConvexFlowBlock_status_nominal(b1_b2_2) <= 0 @@ -126,13 +126,13 @@ c_u_InvestNonConvexFlowBlock_invest_nc_three(b1_b2_0_2)_: <= 10 bounds - 0 <= flow(b1_b2_0_0) <= +inf - 0 <= flow(b1_b2_0_1) <= +inf - 0 <= flow(b1_b2_0_2) <= +inf + 0 <= flow(b1_b2_0) <= +inf + 0 <= flow(b1_b2_1) <= +inf + 0 <= flow(b1_b2_2) <= +inf + 0 <= flow(b2_b1_0) <= +inf + 0 <= flow(b2_b1_1) <= +inf + 0 <= flow(b2_b1_2) <= +inf 0 <= InvestNonConvexFlowBlock_invest(b1_b2_0) <= 10 - 0 <= flow(b2_b1_0_0) <= +inf - 0 <= flow(b2_b1_0_1) <= +inf - 0 <= flow(b2_b1_0_2) <= +inf 0 <= InvestNonConvexFlowBlock_status_nominal(b1_b2_0) <= +inf 0 <= InvestNonConvexFlowBlock_status_nominal(b1_b2_1) <= +inf 0 <= InvestNonConvexFlowBlock_status_nominal(b1_b2_2) <= +inf diff --git a/tests/lp_files/invest_source_fixed_sink.lp b/tests/lp_files/invest_source_fixed_sink.lp index f7749fb18..6ceeb2ded 100644 --- a/tests/lp_files/invest_source_fixed_sink.lp +++ b/tests/lp_files/invest_source_fixed_sink.lp @@ -3,22 +3,22 @@ min objective: +123 InvestmentFlowBlock_invest(pv_electricityBus_0) -+13 flow(pv_electricityBus_0_0) -+13 flow(pv_electricityBus_0_1) -+13 flow(pv_electricityBus_0_2) ++13 flow(pv_electricityBus_0) ++13 flow(pv_electricityBus_1) ++13 flow(pv_electricityBus_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(pv_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(pv_electricityBus_0) = 50000.0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(pv_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(pv_electricityBus_1) = 80000.0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(pv_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(pv_electricityBus_2) = 30000.0 c_e_InvestmentFlowBlock_total_rule(pv_electricityBus_0)_: @@ -27,24 +27,24 @@ c_e_InvestmentFlowBlock_total_rule(pv_electricityBus_0)_: = 0 c_u_InvestmentFlowBlock_max(pv_electricityBus_0_0)_: -+1 flow(pv_electricityBus_0_0) ++1 flow(pv_electricityBus_0) -45 InvestmentFlowBlock_total(pv_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(pv_electricityBus_0_1)_: -+1 flow(pv_electricityBus_0_1) ++1 flow(pv_electricityBus_1) -83 InvestmentFlowBlock_total(pv_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(pv_electricityBus_0_2)_: -+1 flow(pv_electricityBus_0_2) ++1 flow(pv_electricityBus_2) -65 InvestmentFlowBlock_total(pv_electricityBus_0) <= 0 bounds 0 <= InvestmentFlowBlock_invest(pv_electricityBus_0) <= +inf - 0 <= flow(pv_electricityBus_0_0) <= +inf - 0 <= flow(pv_electricityBus_0_1) <= +inf - 0 <= flow(pv_electricityBus_0_2) <= +inf + 0 <= flow(pv_electricityBus_0) <= +inf + 0 <= flow(pv_electricityBus_1) <= +inf + 0 <= flow(pv_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_total(pv_electricityBus_0) <= +inf end diff --git a/tests/lp_files/invest_source_fixed_sink_multi_period.lp b/tests/lp_files/invest_source_fixed_sink_multi_period.lp index b549928ee..70844ad2a 100644 --- a/tests/lp_files/invest_source_fixed_sink_multi_period.lp +++ b/tests/lp_files/invest_source_fixed_sink_multi_period.lp @@ -5,37 +5,37 @@ objective: +18.16879316506207 InvestmentFlowBlock_invest(pv_electricityBus_0) +11.99221088531737 InvestmentFlowBlock_invest(pv_electricityBus_1) +5.93673806203831 InvestmentFlowBlock_invest(pv_electricityBus_2) -+13 flow(pv_electricityBus_0_0) -+13 flow(pv_electricityBus_0_1) -+12.745098039215685 flow(pv_electricityBus_1_2) -+12.745098039215685 flow(pv_electricityBus_1_3) -+12.49519415609381 flow(pv_electricityBus_2_4) -+12.49519415609381 flow(pv_electricityBus_2_5) ++13 flow(pv_electricityBus_0) ++13 flow(pv_electricityBus_1) ++12.745098039215685 flow(pv_electricityBus_2) ++12.745098039215685 flow(pv_electricityBus_3) ++12.49519415609381 flow(pv_electricityBus_4) ++12.49519415609381 flow(pv_electricityBus_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(pv_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(pv_electricityBus_0) = 50000.0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(pv_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(pv_electricityBus_1) = 80000.0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(pv_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(pv_electricityBus_2) = 30000.0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(pv_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(pv_electricityBus_3) = 60000.0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(pv_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(pv_electricityBus_4) = 70000.0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(pv_electricityBus_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(pv_electricityBus_5) = 20000.0 c_e_InvestmentFlowBlock_total_rule(pv_electricityBus_0)_: @@ -82,9 +82,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(pv_electricityBus_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(pv_electricityBus_0)_: ++1 InvestmentFlowBlock_old(pv_electricityBus_0) -1 InvestmentFlowBlock_old_end(pv_electricityBus_0) -1 InvestmentFlowBlock_old_exo(pv_electricityBus_0) -+1 InvestmentFlowBlock_old(pv_electricityBus_0) = 0 c_e_InvestmentFlowBlock_old_rule(pv_electricityBus_1)_: @@ -100,32 +100,32 @@ c_e_InvestmentFlowBlock_old_rule(pv_electricityBus_2)_: = 0 c_u_InvestmentFlowBlock_max(pv_electricityBus_0_0)_: -+1 flow(pv_electricityBus_0_0) ++1 flow(pv_electricityBus_0) -45 InvestmentFlowBlock_total(pv_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(pv_electricityBus_0_1)_: -+1 flow(pv_electricityBus_0_1) ++1 flow(pv_electricityBus_1) -83 InvestmentFlowBlock_total(pv_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(pv_electricityBus_1_2)_: -+1 flow(pv_electricityBus_1_2) ++1 flow(pv_electricityBus_2) -65 InvestmentFlowBlock_total(pv_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(pv_electricityBus_1_3)_: -+1 flow(pv_electricityBus_1_3) ++1 flow(pv_electricityBus_3) -67 InvestmentFlowBlock_total(pv_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(pv_electricityBus_2_4)_: -+1 flow(pv_electricityBus_2_4) ++1 flow(pv_electricityBus_4) -33 InvestmentFlowBlock_total(pv_electricityBus_2) <= 0 c_u_InvestmentFlowBlock_max(pv_electricityBus_2_5)_: -+1 flow(pv_electricityBus_2_5) ++1 flow(pv_electricityBus_5) -96 InvestmentFlowBlock_total(pv_electricityBus_2) <= 0 @@ -133,16 +133,17 @@ bounds 0 <= InvestmentFlowBlock_invest(pv_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_invest(pv_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_invest(pv_electricityBus_2) <= +inf - 0 <= flow(pv_electricityBus_0_0) <= +inf - 0 <= flow(pv_electricityBus_0_1) <= +inf - 0 <= flow(pv_electricityBus_1_2) <= +inf - 0 <= flow(pv_electricityBus_1_3) <= +inf - 0 <= flow(pv_electricityBus_2_4) <= +inf - 0 <= flow(pv_electricityBus_2_5) <= +inf + 0 <= flow(pv_electricityBus_0) <= +inf + 0 <= flow(pv_electricityBus_1) <= +inf + 0 <= flow(pv_electricityBus_2) <= +inf + 0 <= flow(pv_electricityBus_3) <= +inf + 0 <= flow(pv_electricityBus_4) <= +inf + 0 <= flow(pv_electricityBus_5) <= +inf 0 <= InvestmentFlowBlock_total(pv_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(pv_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old(pv_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_total(pv_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(pv_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old(pv_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old(pv_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old_end(pv_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_end(pv_electricityBus_1) <= +inf @@ -150,5 +151,4 @@ bounds 0 <= InvestmentFlowBlock_old_exo(pv_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(pv_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(pv_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old(pv_electricityBus_0) <= +inf end diff --git a/tests/lp_files/investment_limit.lp b/tests/lp_files/investment_limit.lp index c52f8973b..f2569b9a4 100644 --- a/tests/lp_files/investment_limit.lp +++ b/tests/lp_files/investment_limit.lp @@ -12,82 +12,82 @@ c_u_investment_limit_: +145 GenericInvestmentStorageBlock_invest(storage_invest_limit_0) <= 900 -c_e_BusBlock_balance(Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) -+1 flow(storage_invest_limit_Bus1_0_0) --1 flow(Bus1_storage_invest_limit_0_0) +c_e_BusBlock_balance(Bus1_0)_: +-1 flow(Bus1_storage_invest_limit_0) ++1 flow(storage_invest_limit_Bus1_0) ++1 flow(Source_Bus1_0) = 0 -c_e_BusBlock_balance(Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) -+1 flow(storage_invest_limit_Bus1_0_1) --1 flow(Bus1_storage_invest_limit_0_1) +c_e_BusBlock_balance(Bus1_1)_: +-1 flow(Bus1_storage_invest_limit_1) ++1 flow(storage_invest_limit_Bus1_1) ++1 flow(Source_Bus1_1) = 0 -c_e_BusBlock_balance(Bus1_0_2)_: -+1 flow(Source_Bus1_0_2) -+1 flow(storage_invest_limit_Bus1_0_2) --1 flow(Bus1_storage_invest_limit_0_2) +c_e_BusBlock_balance(Bus1_2)_: +-1 flow(Bus1_storage_invest_limit_2) ++1 flow(storage_invest_limit_Bus1_2) ++1 flow(Source_Bus1_2) = 0 -c_e_InvestmentFlowBlock_total_rule(Bus1_storage_invest_limit_0)_: -+1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) --1 InvestmentFlowBlock_invest(Bus1_storage_invest_limit_0) +c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: +-1 InvestmentFlowBlock_invest(Source_Bus1_0) ++1 InvestmentFlowBlock_total(Source_Bus1_0) = 0 c_e_InvestmentFlowBlock_total_rule(storage_invest_limit_Bus1_0)_: -+1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_0) -1 InvestmentFlowBlock_invest(storage_invest_limit_Bus1_0) ++1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_0) = 0 -c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: --1 InvestmentFlowBlock_invest(Source_Bus1_0) -+1 InvestmentFlowBlock_total(Source_Bus1_0) +c_e_InvestmentFlowBlock_total_rule(Bus1_storage_invest_limit_0)_: +-1 InvestmentFlowBlock_invest(Bus1_storage_invest_limit_0) ++1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) = 0 -c_u_InvestmentFlowBlock_max(Bus1_storage_invest_limit_0_0)_: -+1 flow(Bus1_storage_invest_limit_0_0) --1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) +c_u_InvestmentFlowBlock_max(Source_Bus1_0_0)_: ++1 flow(Source_Bus1_0) +-1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 -c_u_InvestmentFlowBlock_max(Bus1_storage_invest_limit_0_1)_: -+1 flow(Bus1_storage_invest_limit_0_1) --1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) +c_u_InvestmentFlowBlock_max(Source_Bus1_0_1)_: ++1 flow(Source_Bus1_1) +-1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 -c_u_InvestmentFlowBlock_max(Bus1_storage_invest_limit_0_2)_: -+1 flow(Bus1_storage_invest_limit_0_2) --1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) +c_u_InvestmentFlowBlock_max(Source_Bus1_0_2)_: ++1 flow(Source_Bus1_2) +-1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(storage_invest_limit_Bus1_0_0)_: -+1 flow(storage_invest_limit_Bus1_0_0) ++1 flow(storage_invest_limit_Bus1_0) -1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(storage_invest_limit_Bus1_0_1)_: -+1 flow(storage_invest_limit_Bus1_0_1) ++1 flow(storage_invest_limit_Bus1_1) -1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(storage_invest_limit_Bus1_0_2)_: -+1 flow(storage_invest_limit_Bus1_0_2) ++1 flow(storage_invest_limit_Bus1_2) -1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_0) <= 0 -c_u_InvestmentFlowBlock_max(Source_Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) --1 InvestmentFlowBlock_total(Source_Bus1_0) +c_u_InvestmentFlowBlock_max(Bus1_storage_invest_limit_0_0)_: ++1 flow(Bus1_storage_invest_limit_0) +-1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) <= 0 -c_u_InvestmentFlowBlock_max(Source_Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) --1 InvestmentFlowBlock_total(Source_Bus1_0) +c_u_InvestmentFlowBlock_max(Bus1_storage_invest_limit_0_1)_: ++1 flow(Bus1_storage_invest_limit_1) +-1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) <= 0 -c_u_InvestmentFlowBlock_max(Source_Bus1_0_2)_: -+1 flow(Source_Bus1_0_2) --1 InvestmentFlowBlock_total(Source_Bus1_0) +c_u_InvestmentFlowBlock_max(Bus1_storage_invest_limit_0_2)_: ++1 flow(Bus1_storage_invest_limit_2) +-1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) <= 0 c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_invest_limit_0)_: @@ -101,22 +101,22 @@ c_u_GenericInvestmentStorageBlock_init_content_limit(storage_invest_limit)_: <= 0 c_e_GenericInvestmentStorageBlock_balance_first(storage_invest_limit)_: -+1 flow(storage_invest_limit_Bus1_0_0) --1 flow(Bus1_storage_invest_limit_0_0) +-1 flow(Bus1_storage_invest_limit_0) ++1 flow(storage_invest_limit_Bus1_0) -1 GenericInvestmentStorageBlock_init_content(storage_invest_limit) +1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_0) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_invest_limit_0_1)_: -+1 flow(storage_invest_limit_Bus1_0_1) --1 flow(Bus1_storage_invest_limit_0_1) +-1 flow(Bus1_storage_invest_limit_1) ++1 flow(storage_invest_limit_Bus1_1) -1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_0) +1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_invest_limit_0_2)_: -+1 flow(storage_invest_limit_Bus1_0_2) --1 flow(Bus1_storage_invest_limit_0_2) +-1 flow(Bus1_storage_invest_limit_2) ++1 flow(storage_invest_limit_Bus1_2) -1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_1) +1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_2) = 0 @@ -153,21 +153,21 @@ c_u_GenericInvestmentStorageBlock_max_storage_content(storage_invest_limit_0_2)_ bounds 0 <= InvestmentFlowBlock_invest(Source_Bus1_0) <= +inf - 0 <= GenericInvestmentStorageBlock_invest(storage_invest_limit_0) <= +inf - 0 <= flow(Source_Bus1_0_0) <= +inf - 0 <= flow(storage_invest_limit_Bus1_0_0) <= +inf - 0 <= flow(Bus1_storage_invest_limit_0_0) <= +inf - 0 <= flow(Source_Bus1_0_1) <= +inf - 0 <= flow(storage_invest_limit_Bus1_0_1) <= +inf - 0 <= flow(Bus1_storage_invest_limit_0_1) <= +inf - 0 <= flow(Source_Bus1_0_2) <= +inf - 0 <= flow(storage_invest_limit_Bus1_0_2) <= +inf - 0 <= flow(Bus1_storage_invest_limit_0_2) <= +inf - 0 <= InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) <= +inf - 0 <= InvestmentFlowBlock_invest(Bus1_storage_invest_limit_0) <= +inf - 0 <= InvestmentFlowBlock_total(storage_invest_limit_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_invest(storage_invest_limit_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_invest(Bus1_storage_invest_limit_0) <= +inf + 0 <= GenericInvestmentStorageBlock_invest(storage_invest_limit_0) <= +inf + 0 <= flow(Bus1_storage_invest_limit_0) <= +inf + 0 <= flow(Bus1_storage_invest_limit_1) <= +inf + 0 <= flow(Bus1_storage_invest_limit_2) <= +inf + 0 <= flow(storage_invest_limit_Bus1_0) <= +inf + 0 <= flow(storage_invest_limit_Bus1_1) <= +inf + 0 <= flow(storage_invest_limit_Bus1_2) <= +inf + 0 <= flow(Source_Bus1_0) <= +inf + 0 <= flow(Source_Bus1_1) <= +inf + 0 <= flow(Source_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_total(Source_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_total(storage_invest_limit_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_invest_limit_0) <= +inf 0 <= GenericInvestmentStorageBlock_init_content(storage_invest_limit) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_invest_limit_0) <= +inf diff --git a/tests/lp_files/investment_limit_with_dsm_DIW.lp b/tests/lp_files/investment_limit_with_dsm_DIW.lp index 2f1f88c0f..f3074c71e 100644 --- a/tests/lp_files/investment_limit_with_dsm_DIW.lp +++ b/tests/lp_files/investment_limit_with_dsm_DIW.lp @@ -4,17 +4,17 @@ min objective: +123 InvestmentFlowBlock_invest(Source_Bus1_0) +0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_0) ++0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_1) ++0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_2) +0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_0) ++0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_1) ++0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_2) +0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_0) ++0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_1) ++0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_2) +0.5 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_0) +0.5 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) -+0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_1) -+0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_1) -+0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_1) +0.5 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) -+0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_2) -+0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_2) -+0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_2) +100 SinkDSMDIWInvestmentBlock_invest(sink_dsm_DIW_0) s.t. @@ -24,19 +24,19 @@ c_u_investment_limit_: +100 SinkDSMDIWInvestmentBlock_invest(sink_dsm_DIW_0) <= 900 -c_e_BusBlock_balance(Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) --1 flow(Bus1_sink_dsm_DIW_0_0) +c_e_BusBlock_balance(Bus1_0)_: +-1 flow(Bus1_sink_dsm_DIW_0) ++1 flow(Source_Bus1_0) = 0 -c_e_BusBlock_balance(Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) --1 flow(Bus1_sink_dsm_DIW_0_1) +c_e_BusBlock_balance(Bus1_1)_: +-1 flow(Bus1_sink_dsm_DIW_1) ++1 flow(Source_Bus1_1) = 0 -c_e_BusBlock_balance(Bus1_0_2)_: -+1 flow(Source_Bus1_0_2) --1 flow(Bus1_sink_dsm_DIW_0_2) +c_e_BusBlock_balance(Bus1_2)_: +-1 flow(Bus1_sink_dsm_DIW_2) ++1 flow(Source_Bus1_2) = 0 c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: @@ -45,17 +45,17 @@ c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: = 0 c_u_InvestmentFlowBlock_max(Source_Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) ++1 flow(Source_Bus1_0) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) ++1 flow(Source_Bus1_1) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_0_2)_: -+1 flow(Source_Bus1_0_2) ++1 flow(Source_Bus1_2) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 @@ -79,45 +79,45 @@ c_e_SinkDSMDIWInvestmentBlock_shift_shed_vars(sink_dsm_DIW_2)_: c_e_SinkDSMDIWInvestmentBlock_input_output_relation(sink_dsm_DIW_0_0)_: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_0) --1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_0) -+1 flow(Bus1_sink_dsm_DIW_0_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_0) +-1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_0) ++1 flow(Bus1_sink_dsm_DIW_0) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(sink_dsm_DIW_0_1)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_1) -+1 flow(Bus1_sink_dsm_DIW_0_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_1) +-1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) ++1 flow(Bus1_sink_dsm_DIW_1) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(sink_dsm_DIW_0_2)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_2) -+1 flow(Bus1_sink_dsm_DIW_0_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_2) +-1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) ++1 flow(Bus1_sink_dsm_DIW_2) = 1 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(sink_dsm_DIW_0)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_0) -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_0) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_1) ++1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_0) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(sink_dsm_DIW_1)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_0) -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_1) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_2) ++1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(sink_dsm_DIW_2)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_1) -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_2) ++1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) = 0 c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(sink_dsm_DIW_0_0)_: @@ -138,74 +138,74 @@ c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(sink_dsm_DIW_0_2)_: c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(sink_dsm_DIW_0_0)_: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_0) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_0) +-0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) <= 0 c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(sink_dsm_DIW_0_1)_: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_1) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_1) +-0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) <= 0 c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(sink_dsm_DIW_0_2)_: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_2) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_2) +-0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(sink_dsm_DIW_0_0)_: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_0) +1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_0) -0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_0) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(sink_dsm_DIW_0_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_1) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_1) ++1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) +-0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(sink_dsm_DIW_0_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_2) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_2) ++1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) +-0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) <= 0 bounds 0 <= InvestmentFlowBlock_invest(Source_Bus1_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_2) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_2) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_2) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_1) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_2) <= +inf 33 <= SinkDSMDIWInvestmentBlock_invest(sink_dsm_DIW_0) <= 100 - 0 <= flow(Source_Bus1_0_0) <= +inf - 0 <= flow(Bus1_sink_dsm_DIW_0_0) <= +inf - 0 <= flow(Source_Bus1_0_1) <= +inf - 0 <= flow(Bus1_sink_dsm_DIW_0_1) <= +inf - 0 <= flow(Source_Bus1_0_2) <= +inf - 0 <= flow(Bus1_sink_dsm_DIW_0_2) <= +inf + 0 <= flow(Bus1_sink_dsm_DIW_0) <= +inf + 0 <= flow(Bus1_sink_dsm_DIW_1) <= +inf + 0 <= flow(Bus1_sink_dsm_DIW_2) <= +inf + 0 <= flow(Source_Bus1_0) <= +inf + 0 <= flow(Source_Bus1_1) <= +inf + 0 <= flow(Source_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_total(Source_Bus1_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_2) <= +inf end diff --git a/tests/lp_files/investment_limit_with_dsm_DLR.lp b/tests/lp_files/investment_limit_with_dsm_DLR.lp index d6d74c5de..c92d6003a 100644 --- a/tests/lp_files/investment_limit_with_dsm_DLR.lp +++ b/tests/lp_files/investment_limit_with_dsm_DLR.lp @@ -4,17 +4,17 @@ min objective: +123 InvestmentFlowBlock_invest(Source_Bus1_0) +0.5 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_0) ++0.5 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) ++0.5 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) +0.5 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_0) ++0.5 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) ++0.5 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) +0.5 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_0) -+0.5 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_0) +0.5 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) -+0.5 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) -+0.5 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) -+0.5 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) +0.5 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) ++0.5 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_0) ++0.5 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) +0.5 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) -+0.5 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) -+0.5 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) +100 SinkDSMDLRInvestmentBlock_invest(sink_dsm_DLR_0) s.t. @@ -24,19 +24,19 @@ c_u_investment_limit_: +100 SinkDSMDLRInvestmentBlock_invest(sink_dsm_DLR_0) <= 900 -c_e_BusBlock_balance(Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) --1 flow(Bus1_sink_dsm_DLR_0_0) +c_e_BusBlock_balance(Bus1_0)_: +-1 flow(Bus1_sink_dsm_DLR_0) ++1 flow(Source_Bus1_0) = 0 -c_e_BusBlock_balance(Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) --1 flow(Bus1_sink_dsm_DLR_0_1) +c_e_BusBlock_balance(Bus1_1)_: +-1 flow(Bus1_sink_dsm_DLR_1) ++1 flow(Source_Bus1_1) = 0 -c_e_BusBlock_balance(Bus1_0_2)_: -+1 flow(Source_Bus1_0_2) --1 flow(Bus1_sink_dsm_DLR_0_2) +c_e_BusBlock_balance(Bus1_2)_: +-1 flow(Bus1_sink_dsm_DLR_2) ++1 flow(Source_Bus1_2) = 0 c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: @@ -45,17 +45,17 @@ c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: = 0 c_u_InvestmentFlowBlock_max(Source_Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) ++1 flow(Source_Bus1_0) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) ++1 flow(Source_Bus1_1) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_0_2)_: -+1 flow(Source_Bus1_0_2) ++1 flow(Source_Bus1_2) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 @@ -79,28 +79,28 @@ c_e_SinkDSMDLRInvestmentBlock_shift_shed_vars(sink_dsm_DLR_1_2)_: c_e_SinkDSMDLRInvestmentBlock_input_output_relation(sink_dsm_DLR_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_0) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_0) -1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_0) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_0) -+1 flow(Bus1_sink_dsm_DLR_0_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_0) ++1 flow(Bus1_sink_dsm_DLR_0) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(sink_dsm_DLR_0_1)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) -+1 flow(Bus1_sink_dsm_DLR_0_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_1) +-1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) ++1 flow(Bus1_sink_dsm_DLR_1) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(sink_dsm_DLR_0_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) -+1 flow(Bus1_sink_dsm_DLR_0_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_2) +-1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) ++1 flow(Bus1_sink_dsm_DLR_2) = 1 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(sink_dsm_DLR_1_0)_: @@ -122,13 +122,13 @@ c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(sink_dsm_DLR_1_0)_: = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(sink_dsm_DLR_1_1)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) +-1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_0) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(sink_dsm_DLR_1_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) +-1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) = 0 c_e_SinkDSMDLRInvestmentBlock_no_comp_red(sink_dsm_DLR_1_2)_: @@ -142,22 +142,22 @@ c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(sink_dsm_DLR_1_2)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(sink_dsm_DLR_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_0) --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_0) +-0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_red(sink_dsm_DLR_0_1)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_1) +-0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_red(sink_dsm_DLR_0_2)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_2) +-0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(sink_dsm_DLR_0_0)_: @@ -184,15 +184,15 @@ c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(sink_dsm_DLR_0)_: = 0 c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(sink_dsm_DLR_1)_: --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_0) -1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_1) = 0 c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(sink_dsm_DLR_2)_: --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_1) -1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_2) = 0 @@ -203,15 +203,15 @@ c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(sink_dsm_DLR_0)_: = 0 c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(sink_dsm_DLR_1)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) -1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) ++1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_0) -1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_1) = 0 c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(sink_dsm_DLR_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) -1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) ++1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_1) -1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_2) = 0 @@ -249,56 +249,56 @@ c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(sink_dsm_DLR_0_2)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(sink_dsm_DLR_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_0) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_0) +1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_0) -0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(sink_dsm_DLR_0_1)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_1) ++1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) +-0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(sink_dsm_DLR_0_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_2) ++1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) +-0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) <= 0 bounds 0 <= InvestmentFlowBlock_invest(Source_Bus1_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_2) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) <= +inf 33 <= SinkDSMDLRInvestmentBlock_invest(sink_dsm_DLR_0) <= 100 - 0 <= flow(Source_Bus1_0_0) <= +inf - 0 <= flow(Bus1_sink_dsm_DLR_0_0) <= +inf - 0 <= flow(Source_Bus1_0_1) <= +inf - 0 <= flow(Bus1_sink_dsm_DLR_0_1) <= +inf - 0 <= flow(Source_Bus1_0_2) <= +inf - 0 <= flow(Bus1_sink_dsm_DLR_0_2) <= +inf + 0 <= flow(Bus1_sink_dsm_DLR_0) <= +inf + 0 <= flow(Bus1_sink_dsm_DLR_1) <= +inf + 0 <= flow(Bus1_sink_dsm_DLR_2) <= +inf + 0 <= flow(Source_Bus1_0) <= +inf + 0 <= flow(Source_Bus1_1) <= +inf + 0 <= flow(Source_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_total(Source_Bus1_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_2) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_2) <= +inf diff --git a/tests/lp_files/investment_limit_with_dsm_oemof.lp b/tests/lp_files/investment_limit_with_dsm_oemof.lp index ecfc14250..b02c8cc22 100644 --- a/tests/lp_files/investment_limit_with_dsm_oemof.lp +++ b/tests/lp_files/investment_limit_with_dsm_oemof.lp @@ -4,11 +4,11 @@ min objective: +123 InvestmentFlowBlock_invest(Source_Bus1_0) +0.5 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_0) ++0.5 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_1) ++0.5 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_2) +0.5 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_0) +0.5 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_1) -+0.5 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_1) +0.5 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_2) -+0.5 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_2) +100 SinkDSMOemofInvestmentBlock_invest(sink_dsm_oemof_0) s.t. @@ -18,19 +18,19 @@ c_u_investment_limit_: +100 SinkDSMOemofInvestmentBlock_invest(sink_dsm_oemof_0) <= 900 -c_e_BusBlock_balance(Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) --1 flow(Bus1_sink_dsm_oemof_0_0) +c_e_BusBlock_balance(Bus1_0)_: +-1 flow(Bus1_sink_dsm_oemof_0) ++1 flow(Source_Bus1_0) = 0 -c_e_BusBlock_balance(Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) --1 flow(Bus1_sink_dsm_oemof_0_1) +c_e_BusBlock_balance(Bus1_1)_: +-1 flow(Bus1_sink_dsm_oemof_1) ++1 flow(Source_Bus1_1) = 0 -c_e_BusBlock_balance(Bus1_0_2)_: -+1 flow(Source_Bus1_0_2) --1 flow(Bus1_sink_dsm_oemof_0_2) +c_e_BusBlock_balance(Bus1_2)_: +-1 flow(Bus1_sink_dsm_oemof_2) ++1 flow(Source_Bus1_2) = 0 c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: @@ -39,17 +39,17 @@ c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: = 0 c_u_InvestmentFlowBlock_max(Source_Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) ++1 flow(Source_Bus1_0) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) ++1 flow(Source_Bus1_1) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_0_2)_: -+1 flow(Source_Bus1_0_2) ++1 flow(Source_Bus1_2) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 @@ -73,21 +73,21 @@ c_e_SinkDSMOemofInvestmentBlock_shift_shed_vars(sink_dsm_oemof_2)_: c_e_SinkDSMOemofInvestmentBlock_input_output_relation(sink_dsm_oemof_0_0)_: +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_0) -1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_0) -+1 flow(Bus1_sink_dsm_oemof_0_0) ++1 flow(Bus1_sink_dsm_oemof_0) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_0) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(sink_dsm_oemof_0_1)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_1) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_1) -+1 flow(Bus1_sink_dsm_oemof_0_1) +-1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_1) ++1 flow(Bus1_sink_dsm_oemof_1) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_1) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(sink_dsm_oemof_0_2)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_2) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_2) -+1 flow(Bus1_sink_dsm_oemof_0_2) +-1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_2) ++1 flow(Bus1_sink_dsm_oemof_2) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_2) = 1 @@ -126,26 +126,26 @@ c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(sink_dsm_oemof_0_2)_: c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(sink_dsm_oemof_0)_: -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_0) +-1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_1) +1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_0) +1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_1) --1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_1) = 0 bounds 0 <= InvestmentFlowBlock_invest(Source_Bus1_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_0) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_1) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_2) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_1) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_2) <= +inf 33 <= SinkDSMOemofInvestmentBlock_invest(sink_dsm_oemof_0) <= 100 - 0 <= flow(Source_Bus1_0_0) <= +inf - 0 <= flow(Bus1_sink_dsm_oemof_0_0) <= +inf - 0 <= flow(Source_Bus1_0_1) <= +inf - 0 <= flow(Bus1_sink_dsm_oemof_0_1) <= +inf - 0 <= flow(Source_Bus1_0_2) <= +inf - 0 <= flow(Bus1_sink_dsm_oemof_0_2) <= +inf + 0 <= flow(Bus1_sink_dsm_oemof_0) <= +inf + 0 <= flow(Bus1_sink_dsm_oemof_1) <= +inf + 0 <= flow(Bus1_sink_dsm_oemof_2) <= +inf + 0 <= flow(Source_Bus1_0) <= +inf + 0 <= flow(Source_Bus1_1) <= +inf + 0 <= flow(Source_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_total(Source_Bus1_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_0) <= +inf diff --git a/tests/lp_files/linear_converter.lp b/tests/lp_files/linear_converter.lp index 86eddb60f..b7c1b8106 100644 --- a/tests/lp_files/linear_converter.lp +++ b/tests/lp_files/linear_converter.lp @@ -2,56 +2,56 @@ min objective: -+50 flow(powerplantGas_electricity_0_0) -+50 flow(powerplantGas_electricity_0_1) -+50 flow(powerplantGas_electricity_0_2) ++50 flow(powerplantGas_electricity_0) ++50 flow(powerplantGas_electricity_1) ++50 flow(powerplantGas_electricity_2) s.t. -c_e_BusBlock_balance(gas_0_0)_: -+1 flow(gas_powerplantGas_0_0) +c_e_BusBlock_balance(electricity_0)_: ++1 flow(powerplantGas_electricity_0) = 0 -c_e_BusBlock_balance(gas_0_1)_: -+1 flow(gas_powerplantGas_0_1) +c_e_BusBlock_balance(electricity_1)_: ++1 flow(powerplantGas_electricity_1) = 0 -c_e_BusBlock_balance(gas_0_2)_: -+1 flow(gas_powerplantGas_0_2) +c_e_BusBlock_balance(electricity_2)_: ++1 flow(powerplantGas_electricity_2) = 0 -c_e_BusBlock_balance(electricity_0_0)_: -+1 flow(powerplantGas_electricity_0_0) +c_e_BusBlock_balance(gas_0)_: ++1 flow(gas_powerplantGas_0) = 0 -c_e_BusBlock_balance(electricity_0_1)_: -+1 flow(powerplantGas_electricity_0_1) +c_e_BusBlock_balance(gas_1)_: ++1 flow(gas_powerplantGas_1) = 0 -c_e_BusBlock_balance(electricity_0_2)_: -+1 flow(powerplantGas_electricity_0_2) +c_e_BusBlock_balance(gas_2)_: ++1 flow(gas_powerplantGas_2) = 0 -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_0_0)_: --1 flow(powerplantGas_electricity_0_0) -+0.58 flow(gas_powerplantGas_0_0) +c_e_ConverterBlock_relation(powerplantGas_gas_electricity_0)_: ++0.58 flow(gas_powerplantGas_0) +-1 flow(powerplantGas_electricity_0) = 0 -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_0_1)_: --1 flow(powerplantGas_electricity_0_1) -+0.58 flow(gas_powerplantGas_0_1) +c_e_ConverterBlock_relation(powerplantGas_gas_electricity_1)_: ++0.58 flow(gas_powerplantGas_1) +-1 flow(powerplantGas_electricity_1) = 0 -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_0_2)_: --1 flow(powerplantGas_electricity_0_2) -+0.58 flow(gas_powerplantGas_0_2) +c_e_ConverterBlock_relation(powerplantGas_gas_electricity_2)_: ++0.58 flow(gas_powerplantGas_2) +-1 flow(powerplantGas_electricity_2) = 0 bounds - 0.0 <= flow(powerplantGas_electricity_0_0) <= 100000000000.0 - 0.0 <= flow(powerplantGas_electricity_0_1) <= 100000000000.0 - 0.0 <= flow(powerplantGas_electricity_0_2) <= 100000000000.0 - 0 <= flow(gas_powerplantGas_0_0) <= +inf - 0 <= flow(gas_powerplantGas_0_1) <= +inf - 0 <= flow(gas_powerplantGas_0_2) <= +inf + 0 <= flow(gas_powerplantGas_0) <= +inf + 0 <= flow(gas_powerplantGas_1) <= +inf + 0 <= flow(gas_powerplantGas_2) <= +inf + 0.0 <= flow(powerplantGas_electricity_0) <= 100000000000.0 + 0.0 <= flow(powerplantGas_electricity_1) <= 100000000000.0 + 0.0 <= flow(powerplantGas_electricity_2) <= 100000000000.0 end diff --git a/tests/lp_files/linear_converter_chp.lp b/tests/lp_files/linear_converter_chp.lp index adf6125be..643270948 100644 --- a/tests/lp_files/linear_converter_chp.lp +++ b/tests/lp_files/linear_converter_chp.lp @@ -2,86 +2,86 @@ min objective: -+50 flow(gasBus_CHPpowerplantGas_0_0) -+50 flow(gasBus_CHPpowerplantGas_0_1) -+50 flow(gasBus_CHPpowerplantGas_0_2) ++50 flow(gasBus_CHPpowerplantGas_0) ++50 flow(gasBus_CHPpowerplantGas_1) ++50 flow(gasBus_CHPpowerplantGas_2) s.t. -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_CHPpowerplantGas_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(CHPpowerplantGas_electricityBus_0) = 0 -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_CHPpowerplantGas_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(CHPpowerplantGas_electricityBus_1) = 0 -c_e_BusBlock_balance(gasBus_0_2)_: -+1 flow(gasBus_CHPpowerplantGas_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(CHPpowerplantGas_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(CHPpowerplantGas_electricityBus_0_0) +c_e_BusBlock_balance(gasBus_0)_: ++1 flow(gasBus_CHPpowerplantGas_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(CHPpowerplantGas_electricityBus_0_1) +c_e_BusBlock_balance(gasBus_1)_: ++1 flow(gasBus_CHPpowerplantGas_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(CHPpowerplantGas_electricityBus_0_2) +c_e_BusBlock_balance(gasBus_2)_: ++1 flow(gasBus_CHPpowerplantGas_2) = 0 -c_e_BusBlock_balance(heatBus_0_0)_: -+1 flow(CHPpowerplantGas_heatBus_0_0) +c_e_BusBlock_balance(heatBus_0)_: ++1 flow(CHPpowerplantGas_heatBus_0) = 0 -c_e_BusBlock_balance(heatBus_0_1)_: -+1 flow(CHPpowerplantGas_heatBus_0_1) +c_e_BusBlock_balance(heatBus_1)_: ++1 flow(CHPpowerplantGas_heatBus_1) = 0 -c_e_BusBlock_balance(heatBus_0_2)_: -+1 flow(CHPpowerplantGas_heatBus_0_2) +c_e_BusBlock_balance(heatBus_2)_: ++1 flow(CHPpowerplantGas_heatBus_2) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_0_0)_: -+0.4 flow(gasBus_CHPpowerplantGas_0_0) --1 flow(CHPpowerplantGas_electricityBus_0_0) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_0)_: ++0.4 flow(gasBus_CHPpowerplantGas_0) +-1 flow(CHPpowerplantGas_electricityBus_0) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_0_0)_: -+0.5 flow(gasBus_CHPpowerplantGas_0_0) --1 flow(CHPpowerplantGas_heatBus_0_0) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_0)_: ++0.5 flow(gasBus_CHPpowerplantGas_0) +-1 flow(CHPpowerplantGas_heatBus_0) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_0_1)_: -+0.4 flow(gasBus_CHPpowerplantGas_0_1) --1 flow(CHPpowerplantGas_electricityBus_0_1) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_1)_: ++0.4 flow(gasBus_CHPpowerplantGas_1) +-1 flow(CHPpowerplantGas_electricityBus_1) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_0_1)_: -+0.5 flow(gasBus_CHPpowerplantGas_0_1) --1 flow(CHPpowerplantGas_heatBus_0_1) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_1)_: ++0.5 flow(gasBus_CHPpowerplantGas_1) +-1 flow(CHPpowerplantGas_heatBus_1) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_0_2)_: -+0.4 flow(gasBus_CHPpowerplantGas_0_2) --1 flow(CHPpowerplantGas_electricityBus_0_2) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_2)_: ++0.4 flow(gasBus_CHPpowerplantGas_2) +-1 flow(CHPpowerplantGas_electricityBus_2) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_0_2)_: -+0.5 flow(gasBus_CHPpowerplantGas_0_2) --1 flow(CHPpowerplantGas_heatBus_0_2) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_2)_: ++0.5 flow(gasBus_CHPpowerplantGas_2) +-1 flow(CHPpowerplantGas_heatBus_2) = 0 bounds - 0.0 <= flow(gasBus_CHPpowerplantGas_0_0) <= 100000000000.0 - 0.0 <= flow(gasBus_CHPpowerplantGas_0_1) <= 100000000000.0 - 0.0 <= flow(gasBus_CHPpowerplantGas_0_2) <= 100000000000.0 - 0 <= flow(CHPpowerplantGas_electricityBus_0_0) <= +inf - 0 <= flow(CHPpowerplantGas_electricityBus_0_1) <= +inf - 0 <= flow(CHPpowerplantGas_electricityBus_0_2) <= +inf - 0 <= flow(CHPpowerplantGas_heatBus_0_0) <= +inf - 0 <= flow(CHPpowerplantGas_heatBus_0_1) <= +inf - 0 <= flow(CHPpowerplantGas_heatBus_0_2) <= +inf + 0.0 <= flow(gasBus_CHPpowerplantGas_0) <= 100000000000.0 + 0.0 <= flow(gasBus_CHPpowerplantGas_1) <= 100000000000.0 + 0.0 <= flow(gasBus_CHPpowerplantGas_2) <= 100000000000.0 + 0 <= flow(CHPpowerplantGas_electricityBus_0) <= +inf + 0 <= flow(CHPpowerplantGas_electricityBus_1) <= +inf + 0 <= flow(CHPpowerplantGas_electricityBus_2) <= +inf + 0 <= flow(CHPpowerplantGas_heatBus_0) <= +inf + 0 <= flow(CHPpowerplantGas_heatBus_1) <= +inf + 0 <= flow(CHPpowerplantGas_heatBus_2) <= +inf end diff --git a/tests/lp_files/linear_converter_chp_invest.lp b/tests/lp_files/linear_converter_chp_invest.lp index 5043bc0be..c2815a08d 100644 --- a/tests/lp_files/linear_converter_chp_invest.lp +++ b/tests/lp_files/linear_converter_chp_invest.lp @@ -3,76 +3,76 @@ min objective: +20 InvestmentFlowBlock_invest(gasBus_chp_powerplant_gas_0) -+50 flow(gasBus_chp_powerplant_gas_0_0) -+50 flow(gasBus_chp_powerplant_gas_0_1) -+50 flow(gasBus_chp_powerplant_gas_0_2) ++50 flow(gasBus_chp_powerplant_gas_0) ++50 flow(gasBus_chp_powerplant_gas_1) ++50 flow(gasBus_chp_powerplant_gas_2) s.t. -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_chp_powerplant_gas_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(chp_powerplant_gas_electricityBus_0) = 0 -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_chp_powerplant_gas_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(chp_powerplant_gas_electricityBus_1) = 0 -c_e_BusBlock_balance(gasBus_0_2)_: -+1 flow(gasBus_chp_powerplant_gas_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(chp_powerplant_gas_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(chp_powerplant_gas_electricityBus_0_0) +c_e_BusBlock_balance(gasBus_0)_: ++1 flow(gasBus_chp_powerplant_gas_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(chp_powerplant_gas_electricityBus_0_1) +c_e_BusBlock_balance(gasBus_1)_: ++1 flow(gasBus_chp_powerplant_gas_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(chp_powerplant_gas_electricityBus_0_2) +c_e_BusBlock_balance(gasBus_2)_: ++1 flow(gasBus_chp_powerplant_gas_2) = 0 -c_e_BusBlock_balance(heatBus_0_0)_: -+1 flow(chp_powerplant_gas_heatBus_0_0) +c_e_BusBlock_balance(heatBus_0)_: ++1 flow(chp_powerplant_gas_heatBus_0) = 0 -c_e_BusBlock_balance(heatBus_0_1)_: -+1 flow(chp_powerplant_gas_heatBus_0_1) +c_e_BusBlock_balance(heatBus_1)_: ++1 flow(chp_powerplant_gas_heatBus_1) = 0 -c_e_BusBlock_balance(heatBus_0_2)_: -+1 flow(chp_powerplant_gas_heatBus_0_2) +c_e_BusBlock_balance(heatBus_2)_: ++1 flow(chp_powerplant_gas_heatBus_2) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_0_0)_: -+0.4 flow(gasBus_chp_powerplant_gas_0_0) --1 flow(chp_powerplant_gas_electricityBus_0_0) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_0)_: ++0.4 flow(gasBus_chp_powerplant_gas_0) +-1 flow(chp_powerplant_gas_electricityBus_0) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_0_0)_: -+0.5 flow(gasBus_chp_powerplant_gas_0_0) --1 flow(chp_powerplant_gas_heatBus_0_0) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_0)_: ++0.5 flow(gasBus_chp_powerplant_gas_0) +-1 flow(chp_powerplant_gas_heatBus_0) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_0_1)_: -+0.4 flow(gasBus_chp_powerplant_gas_0_1) --1 flow(chp_powerplant_gas_electricityBus_0_1) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_1)_: ++0.4 flow(gasBus_chp_powerplant_gas_1) +-1 flow(chp_powerplant_gas_electricityBus_1) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_0_1)_: -+0.5 flow(gasBus_chp_powerplant_gas_0_1) --1 flow(chp_powerplant_gas_heatBus_0_1) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_1)_: ++0.5 flow(gasBus_chp_powerplant_gas_1) +-1 flow(chp_powerplant_gas_heatBus_1) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_0_2)_: -+0.4 flow(gasBus_chp_powerplant_gas_0_2) --1 flow(chp_powerplant_gas_electricityBus_0_2) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_2)_: ++0.4 flow(gasBus_chp_powerplant_gas_2) +-1 flow(chp_powerplant_gas_electricityBus_2) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_0_2)_: -+0.5 flow(gasBus_chp_powerplant_gas_0_2) --1 flow(chp_powerplant_gas_heatBus_0_2) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_2)_: ++0.5 flow(gasBus_chp_powerplant_gas_2) +-1 flow(chp_powerplant_gas_heatBus_2) = 0 c_e_InvestmentFlowBlock_total_rule(gasBus_chp_powerplant_gas_0)_: @@ -81,30 +81,30 @@ c_e_InvestmentFlowBlock_total_rule(gasBus_chp_powerplant_gas_0)_: = 0 c_u_InvestmentFlowBlock_max(gasBus_chp_powerplant_gas_0_0)_: -+1 flow(gasBus_chp_powerplant_gas_0_0) ++1 flow(gasBus_chp_powerplant_gas_0) -1 InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_0) <= 0 c_u_InvestmentFlowBlock_max(gasBus_chp_powerplant_gas_0_1)_: -+1 flow(gasBus_chp_powerplant_gas_0_1) ++1 flow(gasBus_chp_powerplant_gas_1) -1 InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_0) <= 0 c_u_InvestmentFlowBlock_max(gasBus_chp_powerplant_gas_0_2)_: -+1 flow(gasBus_chp_powerplant_gas_0_2) ++1 flow(gasBus_chp_powerplant_gas_2) -1 InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_0) <= 0 bounds 0 <= InvestmentFlowBlock_invest(gasBus_chp_powerplant_gas_0) <= 1000 - 0 <= flow(gasBus_chp_powerplant_gas_0_0) <= +inf - 0 <= flow(gasBus_chp_powerplant_gas_0_1) <= +inf - 0 <= flow(gasBus_chp_powerplant_gas_0_2) <= +inf - 0 <= flow(chp_powerplant_gas_electricityBus_0_0) <= +inf - 0 <= flow(chp_powerplant_gas_electricityBus_0_1) <= +inf - 0 <= flow(chp_powerplant_gas_electricityBus_0_2) <= +inf - 0 <= flow(chp_powerplant_gas_heatBus_0_0) <= +inf - 0 <= flow(chp_powerplant_gas_heatBus_0_1) <= +inf - 0 <= flow(chp_powerplant_gas_heatBus_0_2) <= +inf + 0 <= flow(gasBus_chp_powerplant_gas_0) <= +inf + 0 <= flow(gasBus_chp_powerplant_gas_1) <= +inf + 0 <= flow(gasBus_chp_powerplant_gas_2) <= +inf + 0 <= flow(chp_powerplant_gas_electricityBus_0) <= +inf + 0 <= flow(chp_powerplant_gas_electricityBus_1) <= +inf + 0 <= flow(chp_powerplant_gas_electricityBus_2) <= +inf + 0 <= flow(chp_powerplant_gas_heatBus_0) <= +inf + 0 <= flow(chp_powerplant_gas_heatBus_1) <= +inf + 0 <= flow(chp_powerplant_gas_heatBus_2) <= +inf 0 <= InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_0) <= +inf end diff --git a/tests/lp_files/linear_converter_chp_invest_multi_period.lp b/tests/lp_files/linear_converter_chp_invest_multi_period.lp index 9a52152a5..6b77d3ba5 100644 --- a/tests/lp_files/linear_converter_chp_invest_multi_period.lp +++ b/tests/lp_files/linear_converter_chp_invest_multi_period.lp @@ -5,145 +5,145 @@ objective: +1.8354884429290608 InvestmentFlowBlock_invest(gasBus_chp_powerplant_gas_0) +1.2115039389350062 InvestmentFlowBlock_invest(gasBus_chp_powerplant_gas_1) +0.5997544252153503 InvestmentFlowBlock_invest(gasBus_chp_powerplant_gas_2) -+50 flow(gasBus_chp_powerplant_gas_0_0) -+50 flow(gasBus_chp_powerplant_gas_0_1) -+49.01960784313725 flow(gasBus_chp_powerplant_gas_1_2) -+49.01960784313725 flow(gasBus_chp_powerplant_gas_1_3) -+48.058439061899264 flow(gasBus_chp_powerplant_gas_2_4) -+48.058439061899264 flow(gasBus_chp_powerplant_gas_2_5) ++50 flow(gasBus_chp_powerplant_gas_0) ++50 flow(gasBus_chp_powerplant_gas_1) ++49.01960784313725 flow(gasBus_chp_powerplant_gas_2) ++49.01960784313725 flow(gasBus_chp_powerplant_gas_3) ++48.058439061899264 flow(gasBus_chp_powerplant_gas_4) ++48.058439061899264 flow(gasBus_chp_powerplant_gas_5) s.t. -c_e_BusBlock_balance(heatBus_0_0)_: -+1 flow(chp_powerplant_gas_heatBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(chp_powerplant_gas_electricityBus_0) = 0 -c_e_BusBlock_balance(heatBus_0_1)_: -+1 flow(chp_powerplant_gas_heatBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(chp_powerplant_gas_electricityBus_1) = 0 -c_e_BusBlock_balance(heatBus_1_2)_: -+1 flow(chp_powerplant_gas_heatBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(chp_powerplant_gas_electricityBus_2) = 0 -c_e_BusBlock_balance(heatBus_1_3)_: -+1 flow(chp_powerplant_gas_heatBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(chp_powerplant_gas_electricityBus_3) = 0 -c_e_BusBlock_balance(heatBus_2_4)_: -+1 flow(chp_powerplant_gas_heatBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(chp_powerplant_gas_electricityBus_4) = 0 -c_e_BusBlock_balance(heatBus_2_5)_: -+1 flow(chp_powerplant_gas_heatBus_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(chp_powerplant_gas_electricityBus_5) = 0 -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_chp_powerplant_gas_0_0) +c_e_BusBlock_balance(gasBus_0)_: ++1 flow(gasBus_chp_powerplant_gas_0) = 0 -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_chp_powerplant_gas_0_1) +c_e_BusBlock_balance(gasBus_1)_: ++1 flow(gasBus_chp_powerplant_gas_1) = 0 -c_e_BusBlock_balance(gasBus_1_2)_: -+1 flow(gasBus_chp_powerplant_gas_1_2) +c_e_BusBlock_balance(gasBus_2)_: ++1 flow(gasBus_chp_powerplant_gas_2) = 0 -c_e_BusBlock_balance(gasBus_1_3)_: -+1 flow(gasBus_chp_powerplant_gas_1_3) +c_e_BusBlock_balance(gasBus_3)_: ++1 flow(gasBus_chp_powerplant_gas_3) = 0 -c_e_BusBlock_balance(gasBus_2_4)_: -+1 flow(gasBus_chp_powerplant_gas_2_4) +c_e_BusBlock_balance(gasBus_4)_: ++1 flow(gasBus_chp_powerplant_gas_4) = 0 -c_e_BusBlock_balance(gasBus_2_5)_: -+1 flow(gasBus_chp_powerplant_gas_2_5) +c_e_BusBlock_balance(gasBus_5)_: ++1 flow(gasBus_chp_powerplant_gas_5) = 0 -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(chp_powerplant_gas_electricityBus_0_0) +c_e_BusBlock_balance(heatBus_0)_: ++1 flow(chp_powerplant_gas_heatBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(chp_powerplant_gas_electricityBus_0_1) +c_e_BusBlock_balance(heatBus_1)_: ++1 flow(chp_powerplant_gas_heatBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(chp_powerplant_gas_electricityBus_1_2) +c_e_BusBlock_balance(heatBus_2)_: ++1 flow(chp_powerplant_gas_heatBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(chp_powerplant_gas_electricityBus_1_3) +c_e_BusBlock_balance(heatBus_3)_: ++1 flow(chp_powerplant_gas_heatBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(chp_powerplant_gas_electricityBus_2_4) +c_e_BusBlock_balance(heatBus_4)_: ++1 flow(chp_powerplant_gas_heatBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(chp_powerplant_gas_electricityBus_2_5) +c_e_BusBlock_balance(heatBus_5)_: ++1 flow(chp_powerplant_gas_heatBus_5) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_0_0)_: -+0.4 flow(gasBus_chp_powerplant_gas_0_0) --1 flow(chp_powerplant_gas_electricityBus_0_0) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_0)_: ++0.4 flow(gasBus_chp_powerplant_gas_0) +-1 flow(chp_powerplant_gas_electricityBus_0) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_0_0)_: -+0.5 flow(gasBus_chp_powerplant_gas_0_0) --1 flow(chp_powerplant_gas_heatBus_0_0) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_0)_: ++0.5 flow(gasBus_chp_powerplant_gas_0) +-1 flow(chp_powerplant_gas_heatBus_0) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_0_1)_: -+0.4 flow(gasBus_chp_powerplant_gas_0_1) --1 flow(chp_powerplant_gas_electricityBus_0_1) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_1)_: ++0.4 flow(gasBus_chp_powerplant_gas_1) +-1 flow(chp_powerplant_gas_electricityBus_1) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_0_1)_: -+0.5 flow(gasBus_chp_powerplant_gas_0_1) --1 flow(chp_powerplant_gas_heatBus_0_1) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_1)_: ++0.5 flow(gasBus_chp_powerplant_gas_1) +-1 flow(chp_powerplant_gas_heatBus_1) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_1_2)_: -+0.4 flow(gasBus_chp_powerplant_gas_1_2) --1 flow(chp_powerplant_gas_electricityBus_1_2) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_2)_: ++0.4 flow(gasBus_chp_powerplant_gas_2) +-1 flow(chp_powerplant_gas_electricityBus_2) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_1_2)_: -+0.5 flow(gasBus_chp_powerplant_gas_1_2) --1 flow(chp_powerplant_gas_heatBus_1_2) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_2)_: ++0.5 flow(gasBus_chp_powerplant_gas_2) +-1 flow(chp_powerplant_gas_heatBus_2) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_1_3)_: -+0.4 flow(gasBus_chp_powerplant_gas_1_3) --1 flow(chp_powerplant_gas_electricityBus_1_3) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_3)_: ++0.4 flow(gasBus_chp_powerplant_gas_3) +-1 flow(chp_powerplant_gas_electricityBus_3) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_1_3)_: -+0.5 flow(gasBus_chp_powerplant_gas_1_3) --1 flow(chp_powerplant_gas_heatBus_1_3) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_3)_: ++0.5 flow(gasBus_chp_powerplant_gas_3) +-1 flow(chp_powerplant_gas_heatBus_3) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_2_4)_: -+0.4 flow(gasBus_chp_powerplant_gas_2_4) --1 flow(chp_powerplant_gas_electricityBus_2_4) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_4)_: ++0.4 flow(gasBus_chp_powerplant_gas_4) +-1 flow(chp_powerplant_gas_electricityBus_4) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_2_4)_: -+0.5 flow(gasBus_chp_powerplant_gas_2_4) --1 flow(chp_powerplant_gas_heatBus_2_4) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_4)_: ++0.5 flow(gasBus_chp_powerplant_gas_4) +-1 flow(chp_powerplant_gas_heatBus_4) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_2_5)_: -+0.4 flow(gasBus_chp_powerplant_gas_2_5) --1 flow(chp_powerplant_gas_electricityBus_2_5) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_electricityBus_5)_: ++0.4 flow(gasBus_chp_powerplant_gas_5) +-1 flow(chp_powerplant_gas_electricityBus_5) = 0 -c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_2_5)_: -+0.5 flow(gasBus_chp_powerplant_gas_2_5) --1 flow(chp_powerplant_gas_heatBus_2_5) +c_e_ConverterBlock_relation(chp_powerplant_gas_gasBus_heatBus_5)_: ++0.5 flow(gasBus_chp_powerplant_gas_5) +-1 flow(chp_powerplant_gas_heatBus_5) = 0 c_e_InvestmentFlowBlock_total_rule(gasBus_chp_powerplant_gas_0)_: @@ -190,9 +190,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(gasBus_chp_powerplant_gas_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(gasBus_chp_powerplant_gas_0)_: ++1 InvestmentFlowBlock_old(gasBus_chp_powerplant_gas_0) -1 InvestmentFlowBlock_old_end(gasBus_chp_powerplant_gas_0) -1 InvestmentFlowBlock_old_exo(gasBus_chp_powerplant_gas_0) -+1 InvestmentFlowBlock_old(gasBus_chp_powerplant_gas_0) = 0 c_e_InvestmentFlowBlock_old_rule(gasBus_chp_powerplant_gas_1)_: @@ -208,32 +208,32 @@ c_e_InvestmentFlowBlock_old_rule(gasBus_chp_powerplant_gas_2)_: = 0 c_u_InvestmentFlowBlock_max(gasBus_chp_powerplant_gas_0_0)_: -+1 flow(gasBus_chp_powerplant_gas_0_0) ++1 flow(gasBus_chp_powerplant_gas_0) -1 InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_0) <= 0 c_u_InvestmentFlowBlock_max(gasBus_chp_powerplant_gas_0_1)_: -+1 flow(gasBus_chp_powerplant_gas_0_1) ++1 flow(gasBus_chp_powerplant_gas_1) -1 InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_0) <= 0 c_u_InvestmentFlowBlock_max(gasBus_chp_powerplant_gas_1_2)_: -+1 flow(gasBus_chp_powerplant_gas_1_2) ++1 flow(gasBus_chp_powerplant_gas_2) -1 InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_1) <= 0 c_u_InvestmentFlowBlock_max(gasBus_chp_powerplant_gas_1_3)_: -+1 flow(gasBus_chp_powerplant_gas_1_3) ++1 flow(gasBus_chp_powerplant_gas_3) -1 InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_1) <= 0 c_u_InvestmentFlowBlock_max(gasBus_chp_powerplant_gas_2_4)_: -+1 flow(gasBus_chp_powerplant_gas_2_4) ++1 flow(gasBus_chp_powerplant_gas_4) -1 InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_2) <= 0 c_u_InvestmentFlowBlock_max(gasBus_chp_powerplant_gas_2_5)_: -+1 flow(gasBus_chp_powerplant_gas_2_5) ++1 flow(gasBus_chp_powerplant_gas_5) -1 InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_2) <= 0 @@ -241,28 +241,29 @@ bounds 0 <= InvestmentFlowBlock_invest(gasBus_chp_powerplant_gas_0) <= 1000 0 <= InvestmentFlowBlock_invest(gasBus_chp_powerplant_gas_1) <= 1000 0 <= InvestmentFlowBlock_invest(gasBus_chp_powerplant_gas_2) <= 1000 - 0 <= flow(gasBus_chp_powerplant_gas_0_0) <= +inf - 0 <= flow(gasBus_chp_powerplant_gas_0_1) <= +inf - 0 <= flow(gasBus_chp_powerplant_gas_1_2) <= +inf - 0 <= flow(gasBus_chp_powerplant_gas_1_3) <= +inf - 0 <= flow(gasBus_chp_powerplant_gas_2_4) <= +inf - 0 <= flow(gasBus_chp_powerplant_gas_2_5) <= +inf - 0 <= flow(chp_powerplant_gas_heatBus_0_0) <= +inf - 0 <= flow(chp_powerplant_gas_heatBus_0_1) <= +inf - 0 <= flow(chp_powerplant_gas_heatBus_1_2) <= +inf - 0 <= flow(chp_powerplant_gas_heatBus_1_3) <= +inf - 0 <= flow(chp_powerplant_gas_heatBus_2_4) <= +inf - 0 <= flow(chp_powerplant_gas_heatBus_2_5) <= +inf - 0 <= flow(chp_powerplant_gas_electricityBus_0_0) <= +inf - 0 <= flow(chp_powerplant_gas_electricityBus_0_1) <= +inf - 0 <= flow(chp_powerplant_gas_electricityBus_1_2) <= +inf - 0 <= flow(chp_powerplant_gas_electricityBus_1_3) <= +inf - 0 <= flow(chp_powerplant_gas_electricityBus_2_4) <= +inf - 0 <= flow(chp_powerplant_gas_electricityBus_2_5) <= +inf + 0 <= flow(gasBus_chp_powerplant_gas_0) <= +inf + 0 <= flow(gasBus_chp_powerplant_gas_1) <= +inf + 0 <= flow(gasBus_chp_powerplant_gas_2) <= +inf + 0 <= flow(gasBus_chp_powerplant_gas_3) <= +inf + 0 <= flow(gasBus_chp_powerplant_gas_4) <= +inf + 0 <= flow(gasBus_chp_powerplant_gas_5) <= +inf + 0 <= flow(chp_powerplant_gas_electricityBus_0) <= +inf + 0 <= flow(chp_powerplant_gas_electricityBus_1) <= +inf + 0 <= flow(chp_powerplant_gas_electricityBus_2) <= +inf + 0 <= flow(chp_powerplant_gas_electricityBus_3) <= +inf + 0 <= flow(chp_powerplant_gas_electricityBus_4) <= +inf + 0 <= flow(chp_powerplant_gas_electricityBus_5) <= +inf + 0 <= flow(chp_powerplant_gas_heatBus_0) <= +inf + 0 <= flow(chp_powerplant_gas_heatBus_1) <= +inf + 0 <= flow(chp_powerplant_gas_heatBus_2) <= +inf + 0 <= flow(chp_powerplant_gas_heatBus_3) <= +inf + 0 <= flow(chp_powerplant_gas_heatBus_4) <= +inf + 0 <= flow(chp_powerplant_gas_heatBus_5) <= +inf 0 <= InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_0) <= +inf 0 <= InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_1) <= +inf - 0 <= InvestmentFlowBlock_old(gasBus_chp_powerplant_gas_1) <= +inf 0 <= InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_2) <= +inf + 0 <= InvestmentFlowBlock_old(gasBus_chp_powerplant_gas_0) <= +inf + 0 <= InvestmentFlowBlock_old(gasBus_chp_powerplant_gas_1) <= +inf 0 <= InvestmentFlowBlock_old(gasBus_chp_powerplant_gas_2) <= +inf 0 <= InvestmentFlowBlock_old_end(gasBus_chp_powerplant_gas_0) <= +inf 0 <= InvestmentFlowBlock_old_end(gasBus_chp_powerplant_gas_1) <= +inf @@ -270,5 +271,4 @@ bounds 0 <= InvestmentFlowBlock_old_exo(gasBus_chp_powerplant_gas_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(gasBus_chp_powerplant_gas_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(gasBus_chp_powerplant_gas_2) <= +inf - 0 <= InvestmentFlowBlock_old(gasBus_chp_powerplant_gas_0) <= +inf end diff --git a/tests/lp_files/linear_converter_chp_multi_period.lp b/tests/lp_files/linear_converter_chp_multi_period.lp index a79705ef9..4c5dd87f5 100644 --- a/tests/lp_files/linear_converter_chp_multi_period.lp +++ b/tests/lp_files/linear_converter_chp_multi_period.lp @@ -2,164 +2,164 @@ min objective: -+50 flow(gasBus_CHPpowerplantGas_0_0) -+50 flow(gasBus_CHPpowerplantGas_0_1) -+49.01960784313725 flow(gasBus_CHPpowerplantGas_1_2) -+49.01960784313725 flow(gasBus_CHPpowerplantGas_1_3) -+48.058439061899264 flow(gasBus_CHPpowerplantGas_2_4) -+48.058439061899264 flow(gasBus_CHPpowerplantGas_2_5) ++50 flow(gasBus_CHPpowerplantGas_0) ++50 flow(gasBus_CHPpowerplantGas_1) ++49.01960784313725 flow(gasBus_CHPpowerplantGas_2) ++49.01960784313725 flow(gasBus_CHPpowerplantGas_3) ++48.058439061899264 flow(gasBus_CHPpowerplantGas_4) ++48.058439061899264 flow(gasBus_CHPpowerplantGas_5) s.t. -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_CHPpowerplantGas_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(CHPpowerplantGas_electricityBus_0) = 0 -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_CHPpowerplantGas_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(CHPpowerplantGas_electricityBus_1) = 0 -c_e_BusBlock_balance(gasBus_1_2)_: -+1 flow(gasBus_CHPpowerplantGas_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(CHPpowerplantGas_electricityBus_2) = 0 -c_e_BusBlock_balance(gasBus_1_3)_: -+1 flow(gasBus_CHPpowerplantGas_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(CHPpowerplantGas_electricityBus_3) = 0 -c_e_BusBlock_balance(gasBus_2_4)_: -+1 flow(gasBus_CHPpowerplantGas_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(CHPpowerplantGas_electricityBus_4) = 0 -c_e_BusBlock_balance(gasBus_2_5)_: -+1 flow(gasBus_CHPpowerplantGas_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(CHPpowerplantGas_electricityBus_5) = 0 -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(CHPpowerplantGas_electricityBus_0_0) +c_e_BusBlock_balance(gasBus_0)_: ++1 flow(gasBus_CHPpowerplantGas_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(CHPpowerplantGas_electricityBus_0_1) +c_e_BusBlock_balance(gasBus_1)_: ++1 flow(gasBus_CHPpowerplantGas_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(CHPpowerplantGas_electricityBus_1_2) +c_e_BusBlock_balance(gasBus_2)_: ++1 flow(gasBus_CHPpowerplantGas_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(CHPpowerplantGas_electricityBus_1_3) +c_e_BusBlock_balance(gasBus_3)_: ++1 flow(gasBus_CHPpowerplantGas_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(CHPpowerplantGas_electricityBus_2_4) +c_e_BusBlock_balance(gasBus_4)_: ++1 flow(gasBus_CHPpowerplantGas_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(CHPpowerplantGas_electricityBus_2_5) +c_e_BusBlock_balance(gasBus_5)_: ++1 flow(gasBus_CHPpowerplantGas_5) = 0 -c_e_BusBlock_balance(heatBus_0_0)_: -+1 flow(CHPpowerplantGas_heatBus_0_0) +c_e_BusBlock_balance(heatBus_0)_: ++1 flow(CHPpowerplantGas_heatBus_0) = 0 -c_e_BusBlock_balance(heatBus_0_1)_: -+1 flow(CHPpowerplantGas_heatBus_0_1) +c_e_BusBlock_balance(heatBus_1)_: ++1 flow(CHPpowerplantGas_heatBus_1) = 0 -c_e_BusBlock_balance(heatBus_1_2)_: -+1 flow(CHPpowerplantGas_heatBus_1_2) +c_e_BusBlock_balance(heatBus_2)_: ++1 flow(CHPpowerplantGas_heatBus_2) = 0 -c_e_BusBlock_balance(heatBus_1_3)_: -+1 flow(CHPpowerplantGas_heatBus_1_3) +c_e_BusBlock_balance(heatBus_3)_: ++1 flow(CHPpowerplantGas_heatBus_3) = 0 -c_e_BusBlock_balance(heatBus_2_4)_: -+1 flow(CHPpowerplantGas_heatBus_2_4) +c_e_BusBlock_balance(heatBus_4)_: ++1 flow(CHPpowerplantGas_heatBus_4) = 0 -c_e_BusBlock_balance(heatBus_2_5)_: -+1 flow(CHPpowerplantGas_heatBus_2_5) +c_e_BusBlock_balance(heatBus_5)_: ++1 flow(CHPpowerplantGas_heatBus_5) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_0_0)_: -+0.4 flow(gasBus_CHPpowerplantGas_0_0) --1 flow(CHPpowerplantGas_electricityBus_0_0) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_0)_: ++0.4 flow(gasBus_CHPpowerplantGas_0) +-1 flow(CHPpowerplantGas_electricityBus_0) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_0_0)_: -+0.5 flow(gasBus_CHPpowerplantGas_0_0) --1 flow(CHPpowerplantGas_heatBus_0_0) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_0)_: ++0.5 flow(gasBus_CHPpowerplantGas_0) +-1 flow(CHPpowerplantGas_heatBus_0) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_0_1)_: -+0.4 flow(gasBus_CHPpowerplantGas_0_1) --1 flow(CHPpowerplantGas_electricityBus_0_1) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_1)_: ++0.4 flow(gasBus_CHPpowerplantGas_1) +-1 flow(CHPpowerplantGas_electricityBus_1) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_0_1)_: -+0.5 flow(gasBus_CHPpowerplantGas_0_1) --1 flow(CHPpowerplantGas_heatBus_0_1) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_1)_: ++0.5 flow(gasBus_CHPpowerplantGas_1) +-1 flow(CHPpowerplantGas_heatBus_1) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_1_2)_: -+0.4 flow(gasBus_CHPpowerplantGas_1_2) --1 flow(CHPpowerplantGas_electricityBus_1_2) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_2)_: ++0.4 flow(gasBus_CHPpowerplantGas_2) +-1 flow(CHPpowerplantGas_electricityBus_2) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_1_2)_: -+0.5 flow(gasBus_CHPpowerplantGas_1_2) --1 flow(CHPpowerplantGas_heatBus_1_2) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_2)_: ++0.5 flow(gasBus_CHPpowerplantGas_2) +-1 flow(CHPpowerplantGas_heatBus_2) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_1_3)_: -+0.4 flow(gasBus_CHPpowerplantGas_1_3) --1 flow(CHPpowerplantGas_electricityBus_1_3) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_3)_: ++0.4 flow(gasBus_CHPpowerplantGas_3) +-1 flow(CHPpowerplantGas_electricityBus_3) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_1_3)_: -+0.5 flow(gasBus_CHPpowerplantGas_1_3) --1 flow(CHPpowerplantGas_heatBus_1_3) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_3)_: ++0.5 flow(gasBus_CHPpowerplantGas_3) +-1 flow(CHPpowerplantGas_heatBus_3) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_2_4)_: -+0.4 flow(gasBus_CHPpowerplantGas_2_4) --1 flow(CHPpowerplantGas_electricityBus_2_4) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_4)_: ++0.4 flow(gasBus_CHPpowerplantGas_4) +-1 flow(CHPpowerplantGas_electricityBus_4) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_2_4)_: -+0.5 flow(gasBus_CHPpowerplantGas_2_4) --1 flow(CHPpowerplantGas_heatBus_2_4) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_4)_: ++0.5 flow(gasBus_CHPpowerplantGas_4) +-1 flow(CHPpowerplantGas_heatBus_4) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_2_5)_: -+0.4 flow(gasBus_CHPpowerplantGas_2_5) --1 flow(CHPpowerplantGas_electricityBus_2_5) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_5)_: ++0.4 flow(gasBus_CHPpowerplantGas_5) +-1 flow(CHPpowerplantGas_electricityBus_5) = 0 -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_2_5)_: -+0.5 flow(gasBus_CHPpowerplantGas_2_5) --1 flow(CHPpowerplantGas_heatBus_2_5) +c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_5)_: ++0.5 flow(gasBus_CHPpowerplantGas_5) +-1 flow(CHPpowerplantGas_heatBus_5) = 0 bounds - 0.0 <= flow(gasBus_CHPpowerplantGas_0_0) <= 100000000000.0 - 0.0 <= flow(gasBus_CHPpowerplantGas_0_1) <= 100000000000.0 - 0.0 <= flow(gasBus_CHPpowerplantGas_1_2) <= 100000000000.0 - 0.0 <= flow(gasBus_CHPpowerplantGas_1_3) <= 100000000000.0 - 0.0 <= flow(gasBus_CHPpowerplantGas_2_4) <= 100000000000.0 - 0.0 <= flow(gasBus_CHPpowerplantGas_2_5) <= 100000000000.0 - 0 <= flow(CHPpowerplantGas_electricityBus_0_0) <= +inf - 0 <= flow(CHPpowerplantGas_electricityBus_0_1) <= +inf - 0 <= flow(CHPpowerplantGas_electricityBus_1_2) <= +inf - 0 <= flow(CHPpowerplantGas_electricityBus_1_3) <= +inf - 0 <= flow(CHPpowerplantGas_electricityBus_2_4) <= +inf - 0 <= flow(CHPpowerplantGas_electricityBus_2_5) <= +inf - 0 <= flow(CHPpowerplantGas_heatBus_0_0) <= +inf - 0 <= flow(CHPpowerplantGas_heatBus_0_1) <= +inf - 0 <= flow(CHPpowerplantGas_heatBus_1_2) <= +inf - 0 <= flow(CHPpowerplantGas_heatBus_1_3) <= +inf - 0 <= flow(CHPpowerplantGas_heatBus_2_4) <= +inf - 0 <= flow(CHPpowerplantGas_heatBus_2_5) <= +inf + 0.0 <= flow(gasBus_CHPpowerplantGas_0) <= 100000000000.0 + 0.0 <= flow(gasBus_CHPpowerplantGas_1) <= 100000000000.0 + 0.0 <= flow(gasBus_CHPpowerplantGas_2) <= 100000000000.0 + 0.0 <= flow(gasBus_CHPpowerplantGas_3) <= 100000000000.0 + 0.0 <= flow(gasBus_CHPpowerplantGas_4) <= 100000000000.0 + 0.0 <= flow(gasBus_CHPpowerplantGas_5) <= 100000000000.0 + 0 <= flow(CHPpowerplantGas_electricityBus_0) <= +inf + 0 <= flow(CHPpowerplantGas_electricityBus_1) <= +inf + 0 <= flow(CHPpowerplantGas_electricityBus_2) <= +inf + 0 <= flow(CHPpowerplantGas_electricityBus_3) <= +inf + 0 <= flow(CHPpowerplantGas_electricityBus_4) <= +inf + 0 <= flow(CHPpowerplantGas_electricityBus_5) <= +inf + 0 <= flow(CHPpowerplantGas_heatBus_0) <= +inf + 0 <= flow(CHPpowerplantGas_heatBus_1) <= +inf + 0 <= flow(CHPpowerplantGas_heatBus_2) <= +inf + 0 <= flow(CHPpowerplantGas_heatBus_3) <= +inf + 0 <= flow(CHPpowerplantGas_heatBus_4) <= +inf + 0 <= flow(CHPpowerplantGas_heatBus_5) <= +inf end diff --git a/tests/lp_files/linear_converter_invest.lp b/tests/lp_files/linear_converter_invest.lp index f8eee0a23..c3d16e484 100644 --- a/tests/lp_files/linear_converter_invest.lp +++ b/tests/lp_files/linear_converter_invest.lp @@ -3,49 +3,49 @@ min objective: +20 InvestmentFlowBlock_invest(powerplant_gas_electricity_0) -+50 flow(powerplant_gas_electricity_0_0) -+50 flow(powerplant_gas_electricity_0_1) -+50 flow(powerplant_gas_electricity_0_2) ++50 flow(powerplant_gas_electricity_0) ++50 flow(powerplant_gas_electricity_1) ++50 flow(powerplant_gas_electricity_2) s.t. -c_e_BusBlock_balance(gas_0_0)_: -+1 flow(gas_powerplant_gas_0_0) +c_e_BusBlock_balance(electricity_0)_: ++1 flow(powerplant_gas_electricity_0) = 0 -c_e_BusBlock_balance(gas_0_1)_: -+1 flow(gas_powerplant_gas_0_1) +c_e_BusBlock_balance(electricity_1)_: ++1 flow(powerplant_gas_electricity_1) = 0 -c_e_BusBlock_balance(gas_0_2)_: -+1 flow(gas_powerplant_gas_0_2) +c_e_BusBlock_balance(electricity_2)_: ++1 flow(powerplant_gas_electricity_2) = 0 -c_e_BusBlock_balance(electricity_0_0)_: -+1 flow(powerplant_gas_electricity_0_0) +c_e_BusBlock_balance(gas_0)_: ++1 flow(gas_powerplant_gas_0) = 0 -c_e_BusBlock_balance(electricity_0_1)_: -+1 flow(powerplant_gas_electricity_0_1) +c_e_BusBlock_balance(gas_1)_: ++1 flow(gas_powerplant_gas_1) = 0 -c_e_BusBlock_balance(electricity_0_2)_: -+1 flow(powerplant_gas_electricity_0_2) +c_e_BusBlock_balance(gas_2)_: ++1 flow(gas_powerplant_gas_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_0_0)_: --1 flow(powerplant_gas_electricity_0_0) -+0.58 flow(gas_powerplant_gas_0_0) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_0)_: ++0.58 flow(gas_powerplant_gas_0) +-1 flow(powerplant_gas_electricity_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_0_1)_: --1 flow(powerplant_gas_electricity_0_1) -+0.58 flow(gas_powerplant_gas_0_1) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_1)_: ++0.58 flow(gas_powerplant_gas_1) +-1 flow(powerplant_gas_electricity_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_0_2)_: --1 flow(powerplant_gas_electricity_0_2) -+0.58 flow(gas_powerplant_gas_0_2) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_2)_: ++0.58 flow(gas_powerplant_gas_2) +-1 flow(powerplant_gas_electricity_2) = 0 c_e_InvestmentFlowBlock_total_rule(powerplant_gas_electricity_0)_: @@ -54,27 +54,27 @@ c_e_InvestmentFlowBlock_total_rule(powerplant_gas_electricity_0)_: = 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_0_0)_: -+1 flow(powerplant_gas_electricity_0_0) ++1 flow(powerplant_gas_electricity_0) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_0_1)_: -+1 flow(powerplant_gas_electricity_0_1) ++1 flow(powerplant_gas_electricity_1) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_0_2)_: -+1 flow(powerplant_gas_electricity_0_2) ++1 flow(powerplant_gas_electricity_2) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) <= 0 bounds 0 <= InvestmentFlowBlock_invest(powerplant_gas_electricity_0) <= 1000 - 0 <= flow(powerplant_gas_electricity_0_0) <= +inf - 0 <= flow(powerplant_gas_electricity_0_1) <= +inf - 0 <= flow(powerplant_gas_electricity_0_2) <= +inf - 0 <= flow(gas_powerplant_gas_0_0) <= +inf - 0 <= flow(gas_powerplant_gas_0_1) <= +inf - 0 <= flow(gas_powerplant_gas_0_2) <= +inf + 0 <= flow(gas_powerplant_gas_0) <= +inf + 0 <= flow(gas_powerplant_gas_1) <= +inf + 0 <= flow(gas_powerplant_gas_2) <= +inf + 0 <= flow(powerplant_gas_electricity_0) <= +inf + 0 <= flow(powerplant_gas_electricity_1) <= +inf + 0 <= flow(powerplant_gas_electricity_2) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_electricity_0) <= +inf end diff --git a/tests/lp_files/linear_converter_invest_multi_period.lp b/tests/lp_files/linear_converter_invest_multi_period.lp index 325b7b0a1..334a7f5dd 100644 --- a/tests/lp_files/linear_converter_invest_multi_period.lp +++ b/tests/lp_files/linear_converter_invest_multi_period.lp @@ -5,91 +5,91 @@ objective: +2.1084501918380276 InvestmentFlowBlock_invest(powerplant_gas_electricity_0) +1.3916708232625816 InvestmentFlowBlock_invest(powerplant_gas_electricity_1) +0.6889459521101896 InvestmentFlowBlock_invest(powerplant_gas_electricity_2) -+50 flow(powerplant_gas_electricity_0_0) -+50 flow(powerplant_gas_electricity_0_1) -+49.01960784313725 flow(powerplant_gas_electricity_1_2) -+49.01960784313725 flow(powerplant_gas_electricity_1_3) -+48.058439061899264 flow(powerplant_gas_electricity_2_4) -+48.058439061899264 flow(powerplant_gas_electricity_2_5) ++50 flow(powerplant_gas_electricity_0) ++50 flow(powerplant_gas_electricity_1) ++49.01960784313725 flow(powerplant_gas_electricity_2) ++49.01960784313725 flow(powerplant_gas_electricity_3) ++48.058439061899264 flow(powerplant_gas_electricity_4) ++48.058439061899264 flow(powerplant_gas_electricity_5) s.t. -c_e_BusBlock_balance(electricity_0_0)_: -+1 flow(powerplant_gas_electricity_0_0) +c_e_BusBlock_balance(electricity_0)_: ++1 flow(powerplant_gas_electricity_0) = 0 -c_e_BusBlock_balance(electricity_0_1)_: -+1 flow(powerplant_gas_electricity_0_1) +c_e_BusBlock_balance(electricity_1)_: ++1 flow(powerplant_gas_electricity_1) = 0 -c_e_BusBlock_balance(electricity_1_2)_: -+1 flow(powerplant_gas_electricity_1_2) +c_e_BusBlock_balance(electricity_2)_: ++1 flow(powerplant_gas_electricity_2) = 0 -c_e_BusBlock_balance(electricity_1_3)_: -+1 flow(powerplant_gas_electricity_1_3) +c_e_BusBlock_balance(electricity_3)_: ++1 flow(powerplant_gas_electricity_3) = 0 -c_e_BusBlock_balance(electricity_2_4)_: -+1 flow(powerplant_gas_electricity_2_4) +c_e_BusBlock_balance(electricity_4)_: ++1 flow(powerplant_gas_electricity_4) = 0 -c_e_BusBlock_balance(electricity_2_5)_: -+1 flow(powerplant_gas_electricity_2_5) +c_e_BusBlock_balance(electricity_5)_: ++1 flow(powerplant_gas_electricity_5) = 0 -c_e_BusBlock_balance(gas_0_0)_: -+1 flow(gas_powerplant_gas_0_0) +c_e_BusBlock_balance(gas_0)_: ++1 flow(gas_powerplant_gas_0) = 0 -c_e_BusBlock_balance(gas_0_1)_: -+1 flow(gas_powerplant_gas_0_1) +c_e_BusBlock_balance(gas_1)_: ++1 flow(gas_powerplant_gas_1) = 0 -c_e_BusBlock_balance(gas_1_2)_: -+1 flow(gas_powerplant_gas_1_2) +c_e_BusBlock_balance(gas_2)_: ++1 flow(gas_powerplant_gas_2) = 0 -c_e_BusBlock_balance(gas_1_3)_: -+1 flow(gas_powerplant_gas_1_3) +c_e_BusBlock_balance(gas_3)_: ++1 flow(gas_powerplant_gas_3) = 0 -c_e_BusBlock_balance(gas_2_4)_: -+1 flow(gas_powerplant_gas_2_4) +c_e_BusBlock_balance(gas_4)_: ++1 flow(gas_powerplant_gas_4) = 0 -c_e_BusBlock_balance(gas_2_5)_: -+1 flow(gas_powerplant_gas_2_5) +c_e_BusBlock_balance(gas_5)_: ++1 flow(gas_powerplant_gas_5) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_0_0)_: --1 flow(powerplant_gas_electricity_0_0) -+0.58 flow(gas_powerplant_gas_0_0) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_0)_: ++0.58 flow(gas_powerplant_gas_0) +-1 flow(powerplant_gas_electricity_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_0_1)_: --1 flow(powerplant_gas_electricity_0_1) -+0.58 flow(gas_powerplant_gas_0_1) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_1)_: ++0.58 flow(gas_powerplant_gas_1) +-1 flow(powerplant_gas_electricity_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_1_2)_: --1 flow(powerplant_gas_electricity_1_2) -+0.58 flow(gas_powerplant_gas_1_2) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_2)_: ++0.58 flow(gas_powerplant_gas_2) +-1 flow(powerplant_gas_electricity_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_1_3)_: --1 flow(powerplant_gas_electricity_1_3) -+0.58 flow(gas_powerplant_gas_1_3) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_3)_: ++0.58 flow(gas_powerplant_gas_3) +-1 flow(powerplant_gas_electricity_3) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_2_4)_: --1 flow(powerplant_gas_electricity_2_4) -+0.58 flow(gas_powerplant_gas_2_4) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_4)_: ++0.58 flow(gas_powerplant_gas_4) +-1 flow(powerplant_gas_electricity_4) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_2_5)_: --1 flow(powerplant_gas_electricity_2_5) -+0.58 flow(gas_powerplant_gas_2_5) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_5)_: ++0.58 flow(gas_powerplant_gas_5) +-1 flow(powerplant_gas_electricity_5) = 0 c_e_InvestmentFlowBlock_total_rule(powerplant_gas_electricity_0)_: @@ -136,9 +136,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_electricity_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(powerplant_gas_electricity_0)_: ++1 InvestmentFlowBlock_old(powerplant_gas_electricity_0) -1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_0) -1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_0) -+1 InvestmentFlowBlock_old(powerplant_gas_electricity_0) = 0 c_e_InvestmentFlowBlock_old_rule(powerplant_gas_electricity_1)_: @@ -154,32 +154,32 @@ c_e_InvestmentFlowBlock_old_rule(powerplant_gas_electricity_2)_: = 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_0_0)_: -+1 flow(powerplant_gas_electricity_0_0) ++1 flow(powerplant_gas_electricity_0) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_0_1)_: -+1 flow(powerplant_gas_electricity_0_1) ++1 flow(powerplant_gas_electricity_1) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_1_2)_: -+1 flow(powerplant_gas_electricity_1_2) ++1 flow(powerplant_gas_electricity_2) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_1) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_1_3)_: -+1 flow(powerplant_gas_electricity_1_3) ++1 flow(powerplant_gas_electricity_3) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_1) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_2_4)_: -+1 flow(powerplant_gas_electricity_2_4) ++1 flow(powerplant_gas_electricity_4) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_2) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_2_5)_: -+1 flow(powerplant_gas_electricity_2_5) ++1 flow(powerplant_gas_electricity_5) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_2) <= 0 @@ -203,22 +203,23 @@ bounds 0 <= InvestmentFlowBlock_invest(powerplant_gas_electricity_0) <= 1000 0 <= InvestmentFlowBlock_invest(powerplant_gas_electricity_1) <= 1000 0 <= InvestmentFlowBlock_invest(powerplant_gas_electricity_2) <= 1000 - 0 <= flow(powerplant_gas_electricity_0_0) <= +inf - 0 <= flow(powerplant_gas_electricity_0_1) <= +inf - 0 <= flow(powerplant_gas_electricity_1_2) <= +inf - 0 <= flow(powerplant_gas_electricity_1_3) <= +inf - 0 <= flow(powerplant_gas_electricity_2_4) <= +inf - 0 <= flow(powerplant_gas_electricity_2_5) <= +inf - 0 <= flow(gas_powerplant_gas_0_0) <= +inf - 0 <= flow(gas_powerplant_gas_0_1) <= +inf - 0 <= flow(gas_powerplant_gas_1_2) <= +inf - 0 <= flow(gas_powerplant_gas_1_3) <= +inf - 0 <= flow(gas_powerplant_gas_2_4) <= +inf - 0 <= flow(gas_powerplant_gas_2_5) <= +inf + 0 <= flow(gas_powerplant_gas_0) <= +inf + 0 <= flow(gas_powerplant_gas_1) <= +inf + 0 <= flow(gas_powerplant_gas_2) <= +inf + 0 <= flow(gas_powerplant_gas_3) <= +inf + 0 <= flow(gas_powerplant_gas_4) <= +inf + 0 <= flow(gas_powerplant_gas_5) <= +inf + 0 <= flow(powerplant_gas_electricity_0) <= +inf + 0 <= flow(powerplant_gas_electricity_1) <= +inf + 0 <= flow(powerplant_gas_electricity_2) <= +inf + 0 <= flow(powerplant_gas_electricity_3) <= +inf + 0 <= flow(powerplant_gas_electricity_4) <= +inf + 0 <= flow(powerplant_gas_electricity_5) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_electricity_0) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_electricity_1) <= +inf - 0 <= InvestmentFlowBlock_old(powerplant_gas_electricity_1) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_electricity_2) <= +inf + 0 <= InvestmentFlowBlock_old(powerplant_gas_electricity_0) <= +inf + 0 <= InvestmentFlowBlock_old(powerplant_gas_electricity_1) <= +inf 0 <= InvestmentFlowBlock_old(powerplant_gas_electricity_2) <= +inf 0 <= InvestmentFlowBlock_old_end(powerplant_gas_electricity_0) <= +inf 0 <= InvestmentFlowBlock_old_end(powerplant_gas_electricity_1) <= +inf @@ -226,5 +227,4 @@ bounds 0 <= InvestmentFlowBlock_old_exo(powerplant_gas_electricity_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(powerplant_gas_electricity_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(powerplant_gas_electricity_2) <= +inf - 0 <= InvestmentFlowBlock_old(powerplant_gas_electricity_0) <= +inf end diff --git a/tests/lp_files/linear_converter_invest_multi_period_old.lp b/tests/lp_files/linear_converter_invest_multi_period_old.lp index 5ddc28a1f..5d1d5b398 100644 --- a/tests/lp_files/linear_converter_invest_multi_period_old.lp +++ b/tests/lp_files/linear_converter_invest_multi_period_old.lp @@ -5,91 +5,91 @@ objective: +20.0 InvestmentFlowBlock_invest(powerplant_gas_electricity_0) +19.6078431372549 InvestmentFlowBlock_invest(powerplant_gas_electricity_1) +9.706853038245011 InvestmentFlowBlock_invest(powerplant_gas_electricity_2) -+50 flow(powerplant_gas_electricity_0_0) -+50 flow(powerplant_gas_electricity_0_1) -+49.01960784313725 flow(powerplant_gas_electricity_1_2) -+49.01960784313725 flow(powerplant_gas_electricity_1_3) -+48.058439061899264 flow(powerplant_gas_electricity_2_4) -+48.058439061899264 flow(powerplant_gas_electricity_2_5) ++50 flow(powerplant_gas_electricity_0) ++50 flow(powerplant_gas_electricity_1) ++49.01960784313725 flow(powerplant_gas_electricity_2) ++49.01960784313725 flow(powerplant_gas_electricity_3) ++48.058439061899264 flow(powerplant_gas_electricity_4) ++48.058439061899264 flow(powerplant_gas_electricity_5) s.t. -c_e_BusBlock_balance(electricity_0_0)_: -+1 flow(powerplant_gas_electricity_0_0) +c_e_BusBlock_balance(electricity_0)_: ++1 flow(powerplant_gas_electricity_0) = 0 -c_e_BusBlock_balance(electricity_0_1)_: -+1 flow(powerplant_gas_electricity_0_1) +c_e_BusBlock_balance(electricity_1)_: ++1 flow(powerplant_gas_electricity_1) = 0 -c_e_BusBlock_balance(electricity_1_2)_: -+1 flow(powerplant_gas_electricity_1_2) +c_e_BusBlock_balance(electricity_2)_: ++1 flow(powerplant_gas_electricity_2) = 0 -c_e_BusBlock_balance(electricity_1_3)_: -+1 flow(powerplant_gas_electricity_1_3) +c_e_BusBlock_balance(electricity_3)_: ++1 flow(powerplant_gas_electricity_3) = 0 -c_e_BusBlock_balance(electricity_2_4)_: -+1 flow(powerplant_gas_electricity_2_4) +c_e_BusBlock_balance(electricity_4)_: ++1 flow(powerplant_gas_electricity_4) = 0 -c_e_BusBlock_balance(electricity_2_5)_: -+1 flow(powerplant_gas_electricity_2_5) +c_e_BusBlock_balance(electricity_5)_: ++1 flow(powerplant_gas_electricity_5) = 0 -c_e_BusBlock_balance(gas_0_0)_: -+1 flow(gas_powerplant_gas_0_0) +c_e_BusBlock_balance(gas_0)_: ++1 flow(gas_powerplant_gas_0) = 0 -c_e_BusBlock_balance(gas_0_1)_: -+1 flow(gas_powerplant_gas_0_1) +c_e_BusBlock_balance(gas_1)_: ++1 flow(gas_powerplant_gas_1) = 0 -c_e_BusBlock_balance(gas_1_2)_: -+1 flow(gas_powerplant_gas_1_2) +c_e_BusBlock_balance(gas_2)_: ++1 flow(gas_powerplant_gas_2) = 0 -c_e_BusBlock_balance(gas_1_3)_: -+1 flow(gas_powerplant_gas_1_3) +c_e_BusBlock_balance(gas_3)_: ++1 flow(gas_powerplant_gas_3) = 0 -c_e_BusBlock_balance(gas_2_4)_: -+1 flow(gas_powerplant_gas_2_4) +c_e_BusBlock_balance(gas_4)_: ++1 flow(gas_powerplant_gas_4) = 0 -c_e_BusBlock_balance(gas_2_5)_: -+1 flow(gas_powerplant_gas_2_5) +c_e_BusBlock_balance(gas_5)_: ++1 flow(gas_powerplant_gas_5) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_0_0)_: --1 flow(powerplant_gas_electricity_0_0) -+0.58 flow(gas_powerplant_gas_0_0) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_0)_: ++0.58 flow(gas_powerplant_gas_0) +-1 flow(powerplant_gas_electricity_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_0_1)_: --1 flow(powerplant_gas_electricity_0_1) -+0.58 flow(gas_powerplant_gas_0_1) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_1)_: ++0.58 flow(gas_powerplant_gas_1) +-1 flow(powerplant_gas_electricity_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_1_2)_: --1 flow(powerplant_gas_electricity_1_2) -+0.58 flow(gas_powerplant_gas_1_2) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_2)_: ++0.58 flow(gas_powerplant_gas_2) +-1 flow(powerplant_gas_electricity_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_1_3)_: --1 flow(powerplant_gas_electricity_1_3) -+0.58 flow(gas_powerplant_gas_1_3) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_3)_: ++0.58 flow(gas_powerplant_gas_3) +-1 flow(powerplant_gas_electricity_3) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_2_4)_: --1 flow(powerplant_gas_electricity_2_4) -+0.58 flow(gas_powerplant_gas_2_4) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_4)_: ++0.58 flow(gas_powerplant_gas_4) +-1 flow(powerplant_gas_electricity_4) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_2_5)_: --1 flow(powerplant_gas_electricity_2_5) -+0.58 flow(gas_powerplant_gas_2_5) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_5)_: ++0.58 flow(gas_powerplant_gas_5) +-1 flow(powerplant_gas_electricity_5) = 0 c_e_InvestmentFlowBlock_total_rule(powerplant_gas_electricity_0)_: @@ -137,9 +137,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_electricity_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(powerplant_gas_electricity_0)_: ++1 InvestmentFlowBlock_old(powerplant_gas_electricity_0) -1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_0) -1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_0) -+1 InvestmentFlowBlock_old(powerplant_gas_electricity_0) = 0 c_e_InvestmentFlowBlock_old_rule(powerplant_gas_electricity_1)_: @@ -155,32 +155,32 @@ c_e_InvestmentFlowBlock_old_rule(powerplant_gas_electricity_2)_: = 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_0_0)_: -+1 flow(powerplant_gas_electricity_0_0) ++1 flow(powerplant_gas_electricity_0) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_0_1)_: -+1 flow(powerplant_gas_electricity_0_1) ++1 flow(powerplant_gas_electricity_1) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_1_2)_: -+1 flow(powerplant_gas_electricity_1_2) ++1 flow(powerplant_gas_electricity_2) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_1) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_1_3)_: -+1 flow(powerplant_gas_electricity_1_3) ++1 flow(powerplant_gas_electricity_3) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_1) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_2_4)_: -+1 flow(powerplant_gas_electricity_2_4) ++1 flow(powerplant_gas_electricity_4) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_2) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_2_5)_: -+1 flow(powerplant_gas_electricity_2_5) ++1 flow(powerplant_gas_electricity_5) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_2) <= 0 @@ -204,22 +204,23 @@ bounds 0 <= InvestmentFlowBlock_invest(powerplant_gas_electricity_0) <= 1000 0 <= InvestmentFlowBlock_invest(powerplant_gas_electricity_1) <= 1000 0 <= InvestmentFlowBlock_invest(powerplant_gas_electricity_2) <= 1000 - 0 <= flow(powerplant_gas_electricity_0_0) <= +inf - 0 <= flow(powerplant_gas_electricity_0_1) <= +inf - 0 <= flow(powerplant_gas_electricity_1_2) <= +inf - 0 <= flow(powerplant_gas_electricity_1_3) <= +inf - 0 <= flow(powerplant_gas_electricity_2_4) <= +inf - 0 <= flow(powerplant_gas_electricity_2_5) <= +inf - 0 <= flow(gas_powerplant_gas_0_0) <= +inf - 0 <= flow(gas_powerplant_gas_0_1) <= +inf - 0 <= flow(gas_powerplant_gas_1_2) <= +inf - 0 <= flow(gas_powerplant_gas_1_3) <= +inf - 0 <= flow(gas_powerplant_gas_2_4) <= +inf - 0 <= flow(gas_powerplant_gas_2_5) <= +inf + 0 <= flow(gas_powerplant_gas_0) <= +inf + 0 <= flow(gas_powerplant_gas_1) <= +inf + 0 <= flow(gas_powerplant_gas_2) <= +inf + 0 <= flow(gas_powerplant_gas_3) <= +inf + 0 <= flow(gas_powerplant_gas_4) <= +inf + 0 <= flow(gas_powerplant_gas_5) <= +inf + 0 <= flow(powerplant_gas_electricity_0) <= +inf + 0 <= flow(powerplant_gas_electricity_1) <= +inf + 0 <= flow(powerplant_gas_electricity_2) <= +inf + 0 <= flow(powerplant_gas_electricity_3) <= +inf + 0 <= flow(powerplant_gas_electricity_4) <= +inf + 0 <= flow(powerplant_gas_electricity_5) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_electricity_0) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_electricity_1) <= +inf - 0 <= InvestmentFlowBlock_old(powerplant_gas_electricity_1) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_electricity_2) <= +inf + 0 <= InvestmentFlowBlock_old(powerplant_gas_electricity_0) <= +inf + 0 <= InvestmentFlowBlock_old(powerplant_gas_electricity_1) <= +inf 0 <= InvestmentFlowBlock_old(powerplant_gas_electricity_2) <= +inf 0 <= InvestmentFlowBlock_old_end(powerplant_gas_electricity_0) <= +inf 0 <= InvestmentFlowBlock_old_end(powerplant_gas_electricity_1) <= +inf @@ -227,5 +228,4 @@ bounds 0 <= InvestmentFlowBlock_old_exo(powerplant_gas_electricity_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(powerplant_gas_electricity_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(powerplant_gas_electricity_2) <= +inf - 0 <= InvestmentFlowBlock_old(powerplant_gas_electricity_0) <= +inf end diff --git a/tests/lp_files/linear_converter_invest_multi_period_remaining_value.lp b/tests/lp_files/linear_converter_invest_multi_period_remaining_value.lp index 87890c538..459a82634 100644 --- a/tests/lp_files/linear_converter_invest_multi_period_remaining_value.lp +++ b/tests/lp_files/linear_converter_invest_multi_period_remaining_value.lp @@ -5,91 +5,91 @@ objective: +0.22380552274393728 InvestmentFlowBlock_invest(powerplant_gas_electricity_0) +0.37976494755240464 InvestmentFlowBlock_invest(powerplant_gas_electricity_1) +0.6200513568991706 InvestmentFlowBlock_invest(powerplant_gas_electricity_2) -+50 flow(powerplant_gas_electricity_0_0) -+50 flow(powerplant_gas_electricity_0_1) -+49.01960784313725 flow(powerplant_gas_electricity_1_2) -+49.01960784313725 flow(powerplant_gas_electricity_1_3) -+48.058439061899264 flow(powerplant_gas_electricity_2_4) -+48.058439061899264 flow(powerplant_gas_electricity_2_5) ++50 flow(powerplant_gas_electricity_0) ++50 flow(powerplant_gas_electricity_1) ++49.01960784313725 flow(powerplant_gas_electricity_2) ++49.01960784313725 flow(powerplant_gas_electricity_3) ++48.058439061899264 flow(powerplant_gas_electricity_4) ++48.058439061899264 flow(powerplant_gas_electricity_5) s.t. -c_e_BusBlock_balance(gas_0_0)_: -+1 flow(gas_powerplant_gas_0_0) +c_e_BusBlock_balance(electricity_0)_: ++1 flow(powerplant_gas_electricity_0) = 0 -c_e_BusBlock_balance(gas_0_1)_: -+1 flow(gas_powerplant_gas_0_1) +c_e_BusBlock_balance(electricity_1)_: ++1 flow(powerplant_gas_electricity_1) = 0 -c_e_BusBlock_balance(gas_1_2)_: -+1 flow(gas_powerplant_gas_1_2) +c_e_BusBlock_balance(electricity_2)_: ++1 flow(powerplant_gas_electricity_2) = 0 -c_e_BusBlock_balance(gas_1_3)_: -+1 flow(gas_powerplant_gas_1_3) +c_e_BusBlock_balance(electricity_3)_: ++1 flow(powerplant_gas_electricity_3) = 0 -c_e_BusBlock_balance(gas_2_4)_: -+1 flow(gas_powerplant_gas_2_4) +c_e_BusBlock_balance(electricity_4)_: ++1 flow(powerplant_gas_electricity_4) = 0 -c_e_BusBlock_balance(gas_2_5)_: -+1 flow(gas_powerplant_gas_2_5) +c_e_BusBlock_balance(electricity_5)_: ++1 flow(powerplant_gas_electricity_5) = 0 -c_e_BusBlock_balance(electricity_0_0)_: -+1 flow(powerplant_gas_electricity_0_0) +c_e_BusBlock_balance(gas_0)_: ++1 flow(gas_powerplant_gas_0) = 0 -c_e_BusBlock_balance(electricity_0_1)_: -+1 flow(powerplant_gas_electricity_0_1) +c_e_BusBlock_balance(gas_1)_: ++1 flow(gas_powerplant_gas_1) = 0 -c_e_BusBlock_balance(electricity_1_2)_: -+1 flow(powerplant_gas_electricity_1_2) +c_e_BusBlock_balance(gas_2)_: ++1 flow(gas_powerplant_gas_2) = 0 -c_e_BusBlock_balance(electricity_1_3)_: -+1 flow(powerplant_gas_electricity_1_3) +c_e_BusBlock_balance(gas_3)_: ++1 flow(gas_powerplant_gas_3) = 0 -c_e_BusBlock_balance(electricity_2_4)_: -+1 flow(powerplant_gas_electricity_2_4) +c_e_BusBlock_balance(gas_4)_: ++1 flow(gas_powerplant_gas_4) = 0 -c_e_BusBlock_balance(electricity_2_5)_: -+1 flow(powerplant_gas_electricity_2_5) +c_e_BusBlock_balance(gas_5)_: ++1 flow(gas_powerplant_gas_5) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_0_0)_: --1 flow(powerplant_gas_electricity_0_0) -+0.58 flow(gas_powerplant_gas_0_0) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_0)_: ++0.58 flow(gas_powerplant_gas_0) +-1 flow(powerplant_gas_electricity_0) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_0_1)_: --1 flow(powerplant_gas_electricity_0_1) -+0.58 flow(gas_powerplant_gas_0_1) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_1)_: ++0.58 flow(gas_powerplant_gas_1) +-1 flow(powerplant_gas_electricity_1) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_1_2)_: --1 flow(powerplant_gas_electricity_1_2) -+0.58 flow(gas_powerplant_gas_1_2) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_2)_: ++0.58 flow(gas_powerplant_gas_2) +-1 flow(powerplant_gas_electricity_2) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_1_3)_: --1 flow(powerplant_gas_electricity_1_3) -+0.58 flow(gas_powerplant_gas_1_3) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_3)_: ++0.58 flow(gas_powerplant_gas_3) +-1 flow(powerplant_gas_electricity_3) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_2_4)_: --1 flow(powerplant_gas_electricity_2_4) -+0.58 flow(gas_powerplant_gas_2_4) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_4)_: ++0.58 flow(gas_powerplant_gas_4) +-1 flow(powerplant_gas_electricity_4) = 0 -c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_2_5)_: --1 flow(powerplant_gas_electricity_2_5) -+0.58 flow(gas_powerplant_gas_2_5) +c_e_ConverterBlock_relation(powerplant_gas_gas_electricity_5)_: ++0.58 flow(gas_powerplant_gas_5) +-1 flow(powerplant_gas_electricity_5) = 0 c_e_InvestmentFlowBlock_total_rule(powerplant_gas_electricity_0)_: @@ -136,9 +136,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_electricity_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(powerplant_gas_electricity_0)_: ++1 InvestmentFlowBlock_old(powerplant_gas_electricity_0) -1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_0) -1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_0) -+1 InvestmentFlowBlock_old(powerplant_gas_electricity_0) = 0 c_e_InvestmentFlowBlock_old_rule(powerplant_gas_electricity_1)_: @@ -154,32 +154,32 @@ c_e_InvestmentFlowBlock_old_rule(powerplant_gas_electricity_2)_: = 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_0_0)_: -+1 flow(powerplant_gas_electricity_0_0) ++1 flow(powerplant_gas_electricity_0) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_0_1)_: -+1 flow(powerplant_gas_electricity_0_1) ++1 flow(powerplant_gas_electricity_1) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_1_2)_: -+1 flow(powerplant_gas_electricity_1_2) ++1 flow(powerplant_gas_electricity_2) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_1) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_1_3)_: -+1 flow(powerplant_gas_electricity_1_3) ++1 flow(powerplant_gas_electricity_3) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_1) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_2_4)_: -+1 flow(powerplant_gas_electricity_2_4) ++1 flow(powerplant_gas_electricity_4) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_2) <= 0 c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_2_5)_: -+1 flow(powerplant_gas_electricity_2_5) ++1 flow(powerplant_gas_electricity_5) -1 InvestmentFlowBlock_total(powerplant_gas_electricity_2) <= 0 @@ -203,22 +203,23 @@ bounds 0 <= InvestmentFlowBlock_invest(powerplant_gas_electricity_0) <= 1000 0 <= InvestmentFlowBlock_invest(powerplant_gas_electricity_1) <= 1000 0 <= InvestmentFlowBlock_invest(powerplant_gas_electricity_2) <= 1000 - 0 <= flow(powerplant_gas_electricity_0_0) <= +inf - 0 <= flow(powerplant_gas_electricity_0_1) <= +inf - 0 <= flow(powerplant_gas_electricity_1_2) <= +inf - 0 <= flow(powerplant_gas_electricity_1_3) <= +inf - 0 <= flow(powerplant_gas_electricity_2_4) <= +inf - 0 <= flow(powerplant_gas_electricity_2_5) <= +inf - 0 <= flow(gas_powerplant_gas_0_0) <= +inf - 0 <= flow(gas_powerplant_gas_0_1) <= +inf - 0 <= flow(gas_powerplant_gas_1_2) <= +inf - 0 <= flow(gas_powerplant_gas_1_3) <= +inf - 0 <= flow(gas_powerplant_gas_2_4) <= +inf - 0 <= flow(gas_powerplant_gas_2_5) <= +inf + 0 <= flow(gas_powerplant_gas_0) <= +inf + 0 <= flow(gas_powerplant_gas_1) <= +inf + 0 <= flow(gas_powerplant_gas_2) <= +inf + 0 <= flow(gas_powerplant_gas_3) <= +inf + 0 <= flow(gas_powerplant_gas_4) <= +inf + 0 <= flow(gas_powerplant_gas_5) <= +inf + 0 <= flow(powerplant_gas_electricity_0) <= +inf + 0 <= flow(powerplant_gas_electricity_1) <= +inf + 0 <= flow(powerplant_gas_electricity_2) <= +inf + 0 <= flow(powerplant_gas_electricity_3) <= +inf + 0 <= flow(powerplant_gas_electricity_4) <= +inf + 0 <= flow(powerplant_gas_electricity_5) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_electricity_0) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_electricity_1) <= +inf - 0 <= InvestmentFlowBlock_old(powerplant_gas_electricity_1) <= +inf 0 <= InvestmentFlowBlock_total(powerplant_gas_electricity_2) <= +inf + 0 <= InvestmentFlowBlock_old(powerplant_gas_electricity_0) <= +inf + 0 <= InvestmentFlowBlock_old(powerplant_gas_electricity_1) <= +inf 0 <= InvestmentFlowBlock_old(powerplant_gas_electricity_2) <= +inf 0 <= InvestmentFlowBlock_old_end(powerplant_gas_electricity_0) <= +inf 0 <= InvestmentFlowBlock_old_end(powerplant_gas_electricity_1) <= +inf @@ -226,5 +227,4 @@ bounds 0 <= InvestmentFlowBlock_old_exo(powerplant_gas_electricity_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(powerplant_gas_electricity_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(powerplant_gas_electricity_2) <= +inf - 0 <= InvestmentFlowBlock_old(powerplant_gas_electricity_0) <= +inf end diff --git a/tests/lp_files/linear_converter_multi_period.lp b/tests/lp_files/linear_converter_multi_period.lp index 0f7933422..31957b90a 100644 --- a/tests/lp_files/linear_converter_multi_period.lp +++ b/tests/lp_files/linear_converter_multi_period.lp @@ -2,104 +2,104 @@ min objective: -+50 flow(powerplantGas_electricity_0_0) -+50 flow(powerplantGas_electricity_0_1) -+49.01960784313725 flow(powerplantGas_electricity_1_2) -+49.01960784313725 flow(powerplantGas_electricity_1_3) -+48.058439061899264 flow(powerplantGas_electricity_2_4) -+48.058439061899264 flow(powerplantGas_electricity_2_5) ++50 flow(powerplantGas_electricity_0) ++50 flow(powerplantGas_electricity_1) ++49.01960784313725 flow(powerplantGas_electricity_2) ++49.01960784313725 flow(powerplantGas_electricity_3) ++48.058439061899264 flow(powerplantGas_electricity_4) ++48.058439061899264 flow(powerplantGas_electricity_5) s.t. -c_e_BusBlock_balance(gas_0_0)_: -+1 flow(gas_powerplantGas_0_0) +c_e_BusBlock_balance(electricity_0)_: ++1 flow(powerplantGas_electricity_0) = 0 -c_e_BusBlock_balance(gas_0_1)_: -+1 flow(gas_powerplantGas_0_1) +c_e_BusBlock_balance(electricity_1)_: ++1 flow(powerplantGas_electricity_1) = 0 -c_e_BusBlock_balance(gas_1_2)_: -+1 flow(gas_powerplantGas_1_2) +c_e_BusBlock_balance(electricity_2)_: ++1 flow(powerplantGas_electricity_2) = 0 -c_e_BusBlock_balance(gas_1_3)_: -+1 flow(gas_powerplantGas_1_3) +c_e_BusBlock_balance(electricity_3)_: ++1 flow(powerplantGas_electricity_3) = 0 -c_e_BusBlock_balance(gas_2_4)_: -+1 flow(gas_powerplantGas_2_4) +c_e_BusBlock_balance(electricity_4)_: ++1 flow(powerplantGas_electricity_4) = 0 -c_e_BusBlock_balance(gas_2_5)_: -+1 flow(gas_powerplantGas_2_5) +c_e_BusBlock_balance(electricity_5)_: ++1 flow(powerplantGas_electricity_5) = 0 -c_e_BusBlock_balance(electricity_0_0)_: -+1 flow(powerplantGas_electricity_0_0) +c_e_BusBlock_balance(gas_0)_: ++1 flow(gas_powerplantGas_0) = 0 -c_e_BusBlock_balance(electricity_0_1)_: -+1 flow(powerplantGas_electricity_0_1) +c_e_BusBlock_balance(gas_1)_: ++1 flow(gas_powerplantGas_1) = 0 -c_e_BusBlock_balance(electricity_1_2)_: -+1 flow(powerplantGas_electricity_1_2) +c_e_BusBlock_balance(gas_2)_: ++1 flow(gas_powerplantGas_2) = 0 -c_e_BusBlock_balance(electricity_1_3)_: -+1 flow(powerplantGas_electricity_1_3) +c_e_BusBlock_balance(gas_3)_: ++1 flow(gas_powerplantGas_3) = 0 -c_e_BusBlock_balance(electricity_2_4)_: -+1 flow(powerplantGas_electricity_2_4) +c_e_BusBlock_balance(gas_4)_: ++1 flow(gas_powerplantGas_4) = 0 -c_e_BusBlock_balance(electricity_2_5)_: -+1 flow(powerplantGas_electricity_2_5) +c_e_BusBlock_balance(gas_5)_: ++1 flow(gas_powerplantGas_5) = 0 -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_0_0)_: --1 flow(powerplantGas_electricity_0_0) -+0.58 flow(gas_powerplantGas_0_0) +c_e_ConverterBlock_relation(powerplantGas_gas_electricity_0)_: ++0.58 flow(gas_powerplantGas_0) +-1 flow(powerplantGas_electricity_0) = 0 -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_0_1)_: --1 flow(powerplantGas_electricity_0_1) -+0.58 flow(gas_powerplantGas_0_1) +c_e_ConverterBlock_relation(powerplantGas_gas_electricity_1)_: ++0.58 flow(gas_powerplantGas_1) +-1 flow(powerplantGas_electricity_1) = 0 -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_1_2)_: --1 flow(powerplantGas_electricity_1_2) -+0.58 flow(gas_powerplantGas_1_2) +c_e_ConverterBlock_relation(powerplantGas_gas_electricity_2)_: ++0.58 flow(gas_powerplantGas_2) +-1 flow(powerplantGas_electricity_2) = 0 -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_1_3)_: --1 flow(powerplantGas_electricity_1_3) -+0.58 flow(gas_powerplantGas_1_3) +c_e_ConverterBlock_relation(powerplantGas_gas_electricity_3)_: ++0.58 flow(gas_powerplantGas_3) +-1 flow(powerplantGas_electricity_3) = 0 -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_2_4)_: --1 flow(powerplantGas_electricity_2_4) -+0.58 flow(gas_powerplantGas_2_4) +c_e_ConverterBlock_relation(powerplantGas_gas_electricity_4)_: ++0.58 flow(gas_powerplantGas_4) +-1 flow(powerplantGas_electricity_4) = 0 -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_2_5)_: --1 flow(powerplantGas_electricity_2_5) -+0.58 flow(gas_powerplantGas_2_5) +c_e_ConverterBlock_relation(powerplantGas_gas_electricity_5)_: ++0.58 flow(gas_powerplantGas_5) +-1 flow(powerplantGas_electricity_5) = 0 bounds - 0.0 <= flow(powerplantGas_electricity_0_0) <= 100000000000.0 - 0.0 <= flow(powerplantGas_electricity_0_1) <= 100000000000.0 - 0.0 <= flow(powerplantGas_electricity_1_2) <= 100000000000.0 - 0.0 <= flow(powerplantGas_electricity_1_3) <= 100000000000.0 - 0.0 <= flow(powerplantGas_electricity_2_4) <= 100000000000.0 - 0.0 <= flow(powerplantGas_electricity_2_5) <= 100000000000.0 - 0 <= flow(gas_powerplantGas_0_0) <= +inf - 0 <= flow(gas_powerplantGas_0_1) <= +inf - 0 <= flow(gas_powerplantGas_1_2) <= +inf - 0 <= flow(gas_powerplantGas_1_3) <= +inf - 0 <= flow(gas_powerplantGas_2_4) <= +inf - 0 <= flow(gas_powerplantGas_2_5) <= +inf + 0 <= flow(gas_powerplantGas_0) <= +inf + 0 <= flow(gas_powerplantGas_1) <= +inf + 0 <= flow(gas_powerplantGas_2) <= +inf + 0 <= flow(gas_powerplantGas_3) <= +inf + 0 <= flow(gas_powerplantGas_4) <= +inf + 0 <= flow(gas_powerplantGas_5) <= +inf + 0.0 <= flow(powerplantGas_electricity_0) <= 100000000000.0 + 0.0 <= flow(powerplantGas_electricity_1) <= 100000000000.0 + 0.0 <= flow(powerplantGas_electricity_2) <= 100000000000.0 + 0.0 <= flow(powerplantGas_electricity_3) <= 100000000000.0 + 0.0 <= flow(powerplantGas_electricity_4) <= 100000000000.0 + 0.0 <= flow(powerplantGas_electricity_5) <= 100000000000.0 end diff --git a/tests/lp_files/link.lp b/tests/lp_files/link.lp index 7abe6bd3e..9a156077e 100644 --- a/tests/lp_files/link.lp +++ b/tests/lp_files/link.lp @@ -1,83 +1,83 @@ \* Source Pyomo model name=Model *\ -min +min objective: +0 ONE_VAR_CONSTANT s.t. -c_e_BusBlock_balance(el1_0_0)_: --1 flow(el1_link_0_0) -+1 flow(link_el1_0_0) +c_e_BusBlock_balance(el1_0)_: +-1 flow(el1_link_0) ++1 flow(link_el1_0) = 0 -c_e_BusBlock_balance(el1_0_1)_: --1 flow(el1_link_0_1) -+1 flow(link_el1_0_1) +c_e_BusBlock_balance(el1_1)_: +-1 flow(el1_link_1) ++1 flow(link_el1_1) = 0 -c_e_BusBlock_balance(el1_0_2)_: --1 flow(el1_link_0_2) -+1 flow(link_el1_0_2) +c_e_BusBlock_balance(el1_2)_: +-1 flow(el1_link_2) ++1 flow(link_el1_2) = 0 -c_e_BusBlock_balance(el2_0_0)_: --1 flow(el2_link_0_0) -+1 flow(link_el2_0_0) +c_e_BusBlock_balance(el2_0)_: +-1 flow(el2_link_0) ++1 flow(link_el2_0) = 0 -c_e_BusBlock_balance(el2_0_1)_: --1 flow(el2_link_0_1) -+1 flow(link_el2_0_1) +c_e_BusBlock_balance(el2_1)_: +-1 flow(el2_link_1) ++1 flow(link_el2_1) = 0 -c_e_BusBlock_balance(el2_0_2)_: --1 flow(el2_link_0_2) -+1 flow(link_el2_0_2) +c_e_BusBlock_balance(el2_2)_: +-1 flow(el2_link_2) ++1 flow(link_el2_2) = 0 -c_e_LinkBlock_relation(link_el1_el2_0_0)_: --0.75 flow(el1_link_0_0) -+1 flow(link_el2_0_0) +c_e_LinkBlock_relation(link_el1_el2_0)_: +-0.75 flow(el1_link_0) ++1 flow(link_el2_0) = 0 -c_e_LinkBlock_relation(link_el1_el2_0_1)_: --0.75 flow(el1_link_0_1) -+1 flow(link_el2_0_1) +c_e_LinkBlock_relation(link_el2_el1_0)_: +-0.5 flow(el2_link_0) ++1 flow(link_el1_0) = 0 -c_e_LinkBlock_relation(link_el1_el2_0_2)_: --0.75 flow(el1_link_0_2) -+1 flow(link_el2_0_2) +c_e_LinkBlock_relation(link_el1_el2_1)_: +-0.75 flow(el1_link_1) ++1 flow(link_el2_1) = 0 -c_e_LinkBlock_relation(link_el2_el1_0_0)_: --0.5 flow(el2_link_0_0) -+1 flow(link_el1_0_0) +c_e_LinkBlock_relation(link_el2_el1_1)_: +-0.5 flow(el2_link_1) ++1 flow(link_el1_1) = 0 -c_e_LinkBlock_relation(link_el2_el1_0_1)_: --0.5 flow(el2_link_0_1) -+1 flow(link_el1_0_1) +c_e_LinkBlock_relation(link_el1_el2_2)_: +-0.75 flow(el1_link_2) ++1 flow(link_el2_2) = 0 -c_e_LinkBlock_relation(link_el2_el1_0_2)_: --0.5 flow(el2_link_0_2) -+1 flow(link_el1_0_2) +c_e_LinkBlock_relation(link_el2_el1_2)_: +-0.5 flow(el2_link_2) ++1 flow(link_el1_2) = 0 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(el1_link_0_0) <= 4 - 0 <= flow(el1_link_0_1) <= 4 - 0 <= flow(el1_link_0_2) <= 4 - 0 <= flow(el2_link_0_0) <= 2 - 0 <= flow(el2_link_0_1) <= 2 - 0 <= flow(el2_link_0_2) <= 2 - 0 <= flow(link_el1_0_0) <= +inf - 0 <= flow(link_el1_0_1) <= +inf - 0 <= flow(link_el1_0_2) <= +inf - 0 <= flow(link_el2_0_0) <= +inf - 0 <= flow(link_el2_0_1) <= +inf - 0 <= flow(link_el2_0_2) <= +inf + 0 <= flow(el1_link_0) <= 4 + 0 <= flow(el1_link_1) <= 4 + 0 <= flow(el1_link_2) <= 4 + 0 <= flow(el2_link_0) <= 2 + 0 <= flow(el2_link_1) <= 2 + 0 <= flow(el2_link_2) <= 2 + 0 <= flow(link_el1_0) <= +inf + 0 <= flow(link_el1_1) <= +inf + 0 <= flow(link_el1_2) <= +inf + 0 <= flow(link_el2_0) <= +inf + 0 <= flow(link_el2_1) <= +inf + 0 <= flow(link_el2_2) <= +inf end diff --git a/tests/lp_files/max_source_min_sink.lp b/tests/lp_files/max_source_min_sink.lp index 21c940c64..f1af87a78 100644 --- a/tests/lp_files/max_source_min_sink.lp +++ b/tests/lp_files/max_source_min_sink.lp @@ -2,32 +2,32 @@ min objective: -+14 flow(electricityBus_minDemand_0_0) -+14 flow(electricityBus_minDemand_0_1) -+14 flow(electricityBus_minDemand_0_2) ++14 flow(electricityBus_minDemand_0) ++14 flow(electricityBus_minDemand_1) ++14 flow(electricityBus_minDemand_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_minDemand_0_0) -+1 flow(wind_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_minDemand_0) ++1 flow(wind_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_minDemand_0_1) -+1 flow(wind_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_minDemand_1) ++1 flow(wind_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: --1 flow(electricityBus_minDemand_0_2) -+1 flow(wind_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_minDemand_2) ++1 flow(wind_electricityBus_2) = 0 bounds - 45.36 <= flow(electricityBus_minDemand_0_0) <= 54 - 50.76 <= flow(electricityBus_minDemand_0_1) <= 54 - 31.86 <= flow(electricityBus_minDemand_0_2) <= 54 - 0 <= flow(wind_electricityBus_0_0) <= 45.9 - 0 <= flow(wind_electricityBus_0_1) <= 51.3 - 0 <= flow(wind_electricityBus_0_2) <= 32.94 + 45.36 <= flow(electricityBus_minDemand_0) <= 54 + 50.76 <= flow(electricityBus_minDemand_1) <= 54 + 31.86 <= flow(electricityBus_minDemand_2) <= 54 + 0 <= flow(wind_electricityBus_0) <= 45.9 + 0 <= flow(wind_electricityBus_1) <= 51.3 + 0 <= flow(wind_electricityBus_2) <= 32.94 end diff --git a/tests/lp_files/max_source_min_sink_multi_period.lp b/tests/lp_files/max_source_min_sink_multi_period.lp index db3e1ab0e..16a2c50ed 100644 --- a/tests/lp_files/max_source_min_sink_multi_period.lp +++ b/tests/lp_files/max_source_min_sink_multi_period.lp @@ -2,56 +2,56 @@ min objective: -+14 flow(electricityBus_minDemand_0_0) -+14 flow(electricityBus_minDemand_0_1) -+13.72549019607843 flow(electricityBus_minDemand_1_2) -+13.72549019607843 flow(electricityBus_minDemand_1_3) -+13.456362937331795 flow(electricityBus_minDemand_2_4) -+13.456362937331795 flow(electricityBus_minDemand_2_5) ++14 flow(electricityBus_minDemand_0) ++14 flow(electricityBus_minDemand_1) ++13.72549019607843 flow(electricityBus_minDemand_2) ++13.72549019607843 flow(electricityBus_minDemand_3) ++13.456362937331795 flow(electricityBus_minDemand_4) ++13.456362937331795 flow(electricityBus_minDemand_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_minDemand_0_0) -+1 flow(wind_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_minDemand_0) ++1 flow(wind_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_minDemand_0_1) -+1 flow(wind_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_minDemand_1) ++1 flow(wind_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_minDemand_1_2) -+1 flow(wind_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_minDemand_2) ++1 flow(wind_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_minDemand_1_3) -+1 flow(wind_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_minDemand_3) ++1 flow(wind_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_minDemand_2_4) -+1 flow(wind_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_minDemand_4) ++1 flow(wind_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: --1 flow(electricityBus_minDemand_2_5) -+1 flow(wind_electricityBus_2_5) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_minDemand_5) ++1 flow(wind_electricityBus_5) = 0 bounds - 45.36 <= flow(electricityBus_minDemand_0_0) <= 54 - 50.76 <= flow(electricityBus_minDemand_0_1) <= 54 - 31.86 <= flow(electricityBus_minDemand_1_2) <= 54 - 37.8 <= flow(electricityBus_minDemand_1_3) <= 54 - 52.379999999999995 <= flow(electricityBus_minDemand_2_4) <= 54 - 4.859999999999999 <= flow(electricityBus_minDemand_2_5) <= 54 - 0 <= flow(wind_electricityBus_0_0) <= 45.9 - 0 <= flow(wind_electricityBus_0_1) <= 51.3 - 0 <= flow(wind_electricityBus_1_2) <= 32.94 - 0 <= flow(wind_electricityBus_1_3) <= 38.879999999999995 - 0 <= flow(wind_electricityBus_2_4) <= 53.46 - 0 <= flow(wind_electricityBus_2_5) <= 5.4 + 45.36 <= flow(electricityBus_minDemand_0) <= 54 + 50.76 <= flow(electricityBus_minDemand_1) <= 54 + 31.86 <= flow(electricityBus_minDemand_2) <= 54 + 37.8 <= flow(electricityBus_minDemand_3) <= 54 + 52.379999999999995 <= flow(electricityBus_minDemand_4) <= 54 + 4.859999999999999 <= flow(electricityBus_minDemand_5) <= 54 + 0 <= flow(wind_electricityBus_0) <= 45.9 + 0 <= flow(wind_electricityBus_1) <= 51.3 + 0 <= flow(wind_electricityBus_2) <= 32.94 + 0 <= flow(wind_electricityBus_3) <= 38.879999999999995 + 0 <= flow(wind_electricityBus_4) <= 53.46 + 0 <= flow(wind_electricityBus_5) <= 5.4 end diff --git a/tests/lp_files/maximum_shutdowns.lp b/tests/lp_files/maximum_shutdowns.lp index 6887f17d0..193f6e699 100644 --- a/tests/lp_files/maximum_shutdowns.lp +++ b/tests/lp_files/maximum_shutdowns.lp @@ -2,22 +2,22 @@ min objective: -+10 flow(cheap_plant_maximum_shutdowns_Bus_C_0_0) -+10 flow(cheap_plant_maximum_shutdowns_Bus_C_0_1) -+10 flow(cheap_plant_maximum_shutdowns_Bus_C_0_2) ++10 flow(cheap_plant_maximum_shutdowns_Bus_C_0) ++10 flow(cheap_plant_maximum_shutdowns_Bus_C_1) ++10 flow(cheap_plant_maximum_shutdowns_Bus_C_2) s.t. -c_e_BusBlock_balance(Bus_C_0_0)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_0) +c_e_BusBlock_balance(Bus_C_0)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_0) = 0 -c_e_BusBlock_balance(Bus_C_0_1)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_1) +c_e_BusBlock_balance(Bus_C_1)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_1) = 0 -c_e_BusBlock_balance(Bus_C_0_2)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_2) +c_e_BusBlock_balance(Bus_C_2)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_2) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_shutdowns_Bus_C_0)_: @@ -35,33 +35,33 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_shutdowns_B -10 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_2) = 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_0_0)_: --1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_0) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_0)_: +-1 flow(cheap_plant_maximum_shutdowns_Bus_C_0) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_0) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_0_1)_: --1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_1) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_1)_: +-1 flow(cheap_plant_maximum_shutdowns_Bus_C_1) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_1) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_0_2)_: --1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_2) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_2)_: +-1 flow(cheap_plant_maximum_shutdowns_Bus_C_2) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_2) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_0_0)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_0) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_0)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_0) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_0) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_0_1)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_1) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_1)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_1) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_1) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_0_2)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_2) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_2)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_2) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_2) <= 0 @@ -89,14 +89,14 @@ c_u_NonConvexFlowBlock_max_shutdown_constr(cheap_plant_maximum_shutdowns_Bus_C)_ <= 2 bounds - 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_0_0) <= 10.0 - 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_0_1) <= 10.0 - 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_0_2) <= 10.0 + 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_0) <= 10.0 + 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_1) <= 10.0 + 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_2) <= 10.0 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_0) <= +inf - 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_0) <= 1 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_1) <= +inf - 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_1) <= 1 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_2) <= +inf + 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_0) <= 1 + 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_1) <= 1 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_2) <= 1 0 <= NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_0) <= 1 0 <= NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_1) <= 1 diff --git a/tests/lp_files/maximum_shutdowns_multi_period.lp b/tests/lp_files/maximum_shutdowns_multi_period.lp index f7f280121..d84592df6 100644 --- a/tests/lp_files/maximum_shutdowns_multi_period.lp +++ b/tests/lp_files/maximum_shutdowns_multi_period.lp @@ -2,37 +2,37 @@ min objective: -+10 flow(cheap_plant_maximum_shutdowns_Bus_C_0_0) -+10 flow(cheap_plant_maximum_shutdowns_Bus_C_0_1) -+9.80392156862745 flow(cheap_plant_maximum_shutdowns_Bus_C_1_2) -+9.80392156862745 flow(cheap_plant_maximum_shutdowns_Bus_C_1_3) -+9.611687812379854 flow(cheap_plant_maximum_shutdowns_Bus_C_2_4) -+9.611687812379854 flow(cheap_plant_maximum_shutdowns_Bus_C_2_5) ++10 flow(cheap_plant_maximum_shutdowns_Bus_C_0) ++10 flow(cheap_plant_maximum_shutdowns_Bus_C_1) ++9.80392156862745 flow(cheap_plant_maximum_shutdowns_Bus_C_2) ++9.80392156862745 flow(cheap_plant_maximum_shutdowns_Bus_C_3) ++9.611687812379854 flow(cheap_plant_maximum_shutdowns_Bus_C_4) ++9.611687812379854 flow(cheap_plant_maximum_shutdowns_Bus_C_5) s.t. -c_e_BusBlock_balance(Bus_C_0_0)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_0) +c_e_BusBlock_balance(Bus_C_0)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_0) = 0 -c_e_BusBlock_balance(Bus_C_0_1)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_1) +c_e_BusBlock_balance(Bus_C_1)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_1) = 0 -c_e_BusBlock_balance(Bus_C_1_2)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_1_2) +c_e_BusBlock_balance(Bus_C_2)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_2) = 0 -c_e_BusBlock_balance(Bus_C_1_3)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_1_3) +c_e_BusBlock_balance(Bus_C_3)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_3) = 0 -c_e_BusBlock_balance(Bus_C_2_4)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_2_4) +c_e_BusBlock_balance(Bus_C_4)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_4) = 0 -c_e_BusBlock_balance(Bus_C_2_5)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_2_5) +c_e_BusBlock_balance(Bus_C_5)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_5) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_shutdowns_Bus_C_0)_: @@ -65,63 +65,63 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_shutdowns_B -10 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_5) = 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_0_0)_: --1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_0) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_0)_: +-1 flow(cheap_plant_maximum_shutdowns_Bus_C_0) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_0) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_0_1)_: --1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_1) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_1)_: +-1 flow(cheap_plant_maximum_shutdowns_Bus_C_1) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_1) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_1_2)_: --1 flow(cheap_plant_maximum_shutdowns_Bus_C_1_2) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_2)_: +-1 flow(cheap_plant_maximum_shutdowns_Bus_C_2) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_2) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_1_3)_: --1 flow(cheap_plant_maximum_shutdowns_Bus_C_1_3) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_3)_: +-1 flow(cheap_plant_maximum_shutdowns_Bus_C_3) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_3) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_2_4)_: --1 flow(cheap_plant_maximum_shutdowns_Bus_C_2_4) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_4)_: +-1 flow(cheap_plant_maximum_shutdowns_Bus_C_4) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_4) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_2_5)_: --1 flow(cheap_plant_maximum_shutdowns_Bus_C_2_5) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_shutdowns_Bus_C_5)_: +-1 flow(cheap_plant_maximum_shutdowns_Bus_C_5) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_5) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_0_0)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_0) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_0)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_0) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_0) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_0_1)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_1) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_1)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_1) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_1) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_1_2)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_1_2) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_2)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_2) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_2) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_1_3)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_1_3) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_3)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_3) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_3) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_2_4)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_2_4) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_4)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_4) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_4) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_2_5)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_2_5) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_shutdowns_Bus_C_5)_: ++1 flow(cheap_plant_maximum_shutdowns_Bus_C_5) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_5) <= 0 @@ -170,23 +170,23 @@ c_u_NonConvexFlowBlock_max_shutdown_constr(cheap_plant_maximum_shutdowns_Bus_C)_ <= 2 bounds - 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_0_0) <= 10.0 - 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_0_1) <= 10.0 - 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_1_2) <= 10.0 - 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_1_3) <= 10.0 - 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_2_4) <= 10.0 - 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_2_5) <= 10.0 + 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_0) <= 10.0 + 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_1) <= 10.0 + 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_2) <= 10.0 + 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_3) <= 10.0 + 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_4) <= 10.0 + 0 <= flow(cheap_plant_maximum_shutdowns_Bus_C_5) <= 10.0 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_0) <= +inf - 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_0) <= 1 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_1) <= +inf - 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_1) <= 1 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_2) <= +inf - 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_2) <= 1 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_3) <= +inf - 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_3) <= 1 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_4) <= +inf - 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_4) <= 1 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_5) <= +inf + 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_0) <= 1 + 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_1) <= 1 + 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_2) <= 1 + 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_3) <= 1 + 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_4) <= 1 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_5) <= 1 0 <= NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_0) <= 1 0 <= NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_1) <= 1 diff --git a/tests/lp_files/maximum_startups.lp b/tests/lp_files/maximum_startups.lp index 984e780c8..c13a2252d 100644 --- a/tests/lp_files/maximum_startups.lp +++ b/tests/lp_files/maximum_startups.lp @@ -2,22 +2,22 @@ min objective: -+10 flow(cheap_plant_maximum_startups_Bus_C_0_0) -+10 flow(cheap_plant_maximum_startups_Bus_C_0_1) -+10 flow(cheap_plant_maximum_startups_Bus_C_0_2) ++10 flow(cheap_plant_maximum_startups_Bus_C_0) ++10 flow(cheap_plant_maximum_startups_Bus_C_1) ++10 flow(cheap_plant_maximum_startups_Bus_C_2) s.t. -c_e_BusBlock_balance(Bus_C_0_0)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_0_0) +c_e_BusBlock_balance(Bus_C_0)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_0) = 0 -c_e_BusBlock_balance(Bus_C_0_1)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_0_1) +c_e_BusBlock_balance(Bus_C_1)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_1) = 0 -c_e_BusBlock_balance(Bus_C_0_2)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_0_2) +c_e_BusBlock_balance(Bus_C_2)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_2) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_startups_Bus_C_0)_: @@ -35,33 +35,33 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_startups_Bu -10 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_2) = 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_0_0)_: --1 flow(cheap_plant_maximum_startups_Bus_C_0_0) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_0)_: +-1 flow(cheap_plant_maximum_startups_Bus_C_0) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_0) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_0_1)_: --1 flow(cheap_plant_maximum_startups_Bus_C_0_1) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_1)_: +-1 flow(cheap_plant_maximum_startups_Bus_C_1) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_1) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_0_2)_: --1 flow(cheap_plant_maximum_startups_Bus_C_0_2) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_2)_: +-1 flow(cheap_plant_maximum_startups_Bus_C_2) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_2) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_0_0)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_0_0) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_0)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_0) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_0) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_0_1)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_0_1) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_1)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_1) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_1) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_0_2)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_0_2) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_2)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_2) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_2) <= 0 @@ -89,14 +89,14 @@ c_u_NonConvexFlowBlock_max_startup_constr(cheap_plant_maximum_startups_Bus_C)_: <= 2 bounds - 0 <= flow(cheap_plant_maximum_startups_Bus_C_0_0) <= 10.0 - 0 <= flow(cheap_plant_maximum_startups_Bus_C_0_1) <= 10.0 - 0 <= flow(cheap_plant_maximum_startups_Bus_C_0_2) <= 10.0 + 0 <= flow(cheap_plant_maximum_startups_Bus_C_0) <= 10.0 + 0 <= flow(cheap_plant_maximum_startups_Bus_C_1) <= 10.0 + 0 <= flow(cheap_plant_maximum_startups_Bus_C_2) <= 10.0 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_0) <= +inf - 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_0) <= 1 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_1) <= +inf - 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_1) <= 1 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_2) <= +inf + 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_0) <= 1 + 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_1) <= 1 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_2) <= 1 0 <= NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_0) <= 1 0 <= NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_1) <= 1 diff --git a/tests/lp_files/maximum_startups_multi_period.lp b/tests/lp_files/maximum_startups_multi_period.lp index c51cf0d79..84e4d439c 100644 --- a/tests/lp_files/maximum_startups_multi_period.lp +++ b/tests/lp_files/maximum_startups_multi_period.lp @@ -2,37 +2,37 @@ min objective: -+10 flow(cheap_plant_maximum_startups_Bus_C_0_0) -+10 flow(cheap_plant_maximum_startups_Bus_C_0_1) -+9.80392156862745 flow(cheap_plant_maximum_startups_Bus_C_1_2) -+9.80392156862745 flow(cheap_plant_maximum_startups_Bus_C_1_3) -+9.611687812379854 flow(cheap_plant_maximum_startups_Bus_C_2_4) -+9.611687812379854 flow(cheap_plant_maximum_startups_Bus_C_2_5) ++10 flow(cheap_plant_maximum_startups_Bus_C_0) ++10 flow(cheap_plant_maximum_startups_Bus_C_1) ++9.80392156862745 flow(cheap_plant_maximum_startups_Bus_C_2) ++9.80392156862745 flow(cheap_plant_maximum_startups_Bus_C_3) ++9.611687812379854 flow(cheap_plant_maximum_startups_Bus_C_4) ++9.611687812379854 flow(cheap_plant_maximum_startups_Bus_C_5) s.t. -c_e_BusBlock_balance(Bus_C_0_0)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_0_0) +c_e_BusBlock_balance(Bus_C_0)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_0) = 0 -c_e_BusBlock_balance(Bus_C_0_1)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_0_1) +c_e_BusBlock_balance(Bus_C_1)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_1) = 0 -c_e_BusBlock_balance(Bus_C_1_2)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_1_2) +c_e_BusBlock_balance(Bus_C_2)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_2) = 0 -c_e_BusBlock_balance(Bus_C_1_3)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_1_3) +c_e_BusBlock_balance(Bus_C_3)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_3) = 0 -c_e_BusBlock_balance(Bus_C_2_4)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_2_4) +c_e_BusBlock_balance(Bus_C_4)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_4) = 0 -c_e_BusBlock_balance(Bus_C_2_5)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_2_5) +c_e_BusBlock_balance(Bus_C_5)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_5) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_startups_Bus_C_0)_: @@ -65,63 +65,63 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_startups_Bu -10 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_5) = 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_0_0)_: --1 flow(cheap_plant_maximum_startups_Bus_C_0_0) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_0)_: +-1 flow(cheap_plant_maximum_startups_Bus_C_0) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_0) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_0_1)_: --1 flow(cheap_plant_maximum_startups_Bus_C_0_1) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_1)_: +-1 flow(cheap_plant_maximum_startups_Bus_C_1) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_1) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_1_2)_: --1 flow(cheap_plant_maximum_startups_Bus_C_1_2) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_2)_: +-1 flow(cheap_plant_maximum_startups_Bus_C_2) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_2) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_1_3)_: --1 flow(cheap_plant_maximum_startups_Bus_C_1_3) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_3)_: +-1 flow(cheap_plant_maximum_startups_Bus_C_3) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_3) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_2_4)_: --1 flow(cheap_plant_maximum_startups_Bus_C_2_4) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_4)_: +-1 flow(cheap_plant_maximum_startups_Bus_C_4) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_4) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_2_5)_: --1 flow(cheap_plant_maximum_startups_Bus_C_2_5) +c_u_NonConvexFlowBlock_min(cheap_plant_maximum_startups_Bus_C_5)_: +-1 flow(cheap_plant_maximum_startups_Bus_C_5) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_5) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_0_0)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_0_0) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_0)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_0) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_0) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_0_1)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_0_1) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_1)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_1) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_1) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_1_2)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_1_2) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_2)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_2) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_2) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_1_3)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_1_3) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_3)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_3) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_3) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_2_4)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_2_4) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_4)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_4) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_4) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_2_5)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_2_5) +c_u_NonConvexFlowBlock_max(cheap_plant_maximum_startups_Bus_C_5)_: ++1 flow(cheap_plant_maximum_startups_Bus_C_5) -1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_5) <= 0 @@ -170,23 +170,23 @@ c_u_NonConvexFlowBlock_max_startup_constr(cheap_plant_maximum_startups_Bus_C)_: <= 2 bounds - 0 <= flow(cheap_plant_maximum_startups_Bus_C_0_0) <= 10.0 - 0 <= flow(cheap_plant_maximum_startups_Bus_C_0_1) <= 10.0 - 0 <= flow(cheap_plant_maximum_startups_Bus_C_1_2) <= 10.0 - 0 <= flow(cheap_plant_maximum_startups_Bus_C_1_3) <= 10.0 - 0 <= flow(cheap_plant_maximum_startups_Bus_C_2_4) <= 10.0 - 0 <= flow(cheap_plant_maximum_startups_Bus_C_2_5) <= 10.0 + 0 <= flow(cheap_plant_maximum_startups_Bus_C_0) <= 10.0 + 0 <= flow(cheap_plant_maximum_startups_Bus_C_1) <= 10.0 + 0 <= flow(cheap_plant_maximum_startups_Bus_C_2) <= 10.0 + 0 <= flow(cheap_plant_maximum_startups_Bus_C_3) <= 10.0 + 0 <= flow(cheap_plant_maximum_startups_Bus_C_4) <= 10.0 + 0 <= flow(cheap_plant_maximum_startups_Bus_C_5) <= 10.0 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_0) <= +inf - 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_0) <= 1 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_1) <= +inf - 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_1) <= 1 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_2) <= +inf - 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_2) <= 1 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_3) <= +inf - 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_3) <= 1 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_4) <= +inf - 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_4) <= 1 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_5) <= +inf + 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_0) <= 1 + 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_1) <= 1 + 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_2) <= 1 + 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_3) <= 1 + 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_4) <= 1 0 <= NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_5) <= 1 0 <= NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_0) <= 1 0 <= NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_1) <= 1 diff --git a/tests/lp_files/min_max_runtime.lp b/tests/lp_files/min_max_runtime.lp index cde473813..9e3d5ea79 100644 --- a/tests/lp_files/min_max_runtime.lp +++ b/tests/lp_files/min_max_runtime.lp @@ -2,9 +2,9 @@ min objective: -+10 flow(cheap_plant_min_down_constraints_Bus_T_0_0) -+10 flow(cheap_plant_min_down_constraints_Bus_T_0_1) -+10 flow(cheap_plant_min_down_constraints_Bus_T_0_2) ++10 flow(cheap_plant_min_down_constraints_Bus_T_0) ++10 flow(cheap_plant_min_down_constraints_Bus_T_1) ++10 flow(cheap_plant_min_down_constraints_Bus_T_2) +5 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_0) +5 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_1) +5 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_2) @@ -14,16 +14,16 @@ objective: s.t. -c_e_BusBlock_balance(Bus_T_0_0)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_0_0) +c_e_BusBlock_balance(Bus_T_0)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_0) = 0 -c_e_BusBlock_balance(Bus_T_0_1)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_0_1) +c_e_BusBlock_balance(Bus_T_1)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_1) = 0 -c_e_BusBlock_balance(Bus_T_0_2)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_0_2) +c_e_BusBlock_balance(Bus_T_2)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_2) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraints_Bus_T_0)_: @@ -39,33 +39,33 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraint -10 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) = 0 -c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_0_0)_: --1 flow(cheap_plant_min_down_constraints_Bus_T_0_0) +c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_0)_: +-1 flow(cheap_plant_min_down_constraints_Bus_T_0) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_0) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_0_1)_: --1 flow(cheap_plant_min_down_constraints_Bus_T_0_1) +c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_1)_: +-1 flow(cheap_plant_min_down_constraints_Bus_T_1) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_1) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_0_2)_: --1 flow(cheap_plant_min_down_constraints_Bus_T_0_2) +c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_2)_: +-1 flow(cheap_plant_min_down_constraints_Bus_T_2) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_2) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_0_0)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_0_0) +c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_0)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_0) -1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_0) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_0_1)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_0_1) +c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_1)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_1) -1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_1) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_0_2)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_0_2) +c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_2)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_2) -1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_2) <= 0 @@ -96,9 +96,9 @@ c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_min_down_constraints_Bus_T_2) <= -1 bounds - 0 <= flow(cheap_plant_min_down_constraints_Bus_T_0_0) <= 10.0 - 0 <= flow(cheap_plant_min_down_constraints_Bus_T_0_1) <= 10.0 - 0 <= flow(cheap_plant_min_down_constraints_Bus_T_0_2) <= 10.0 + 0 <= flow(cheap_plant_min_down_constraints_Bus_T_0) <= 10.0 + 0 <= flow(cheap_plant_min_down_constraints_Bus_T_1) <= 10.0 + 0 <= flow(cheap_plant_min_down_constraints_Bus_T_2) <= 10.0 0 <= NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_0) <= 1 0 <= NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_1) <= 1 0 <= NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_2) <= 1 diff --git a/tests/lp_files/min_max_runtime_multi_period.lp b/tests/lp_files/min_max_runtime_multi_period.lp index 6155a7938..61be72293 100644 --- a/tests/lp_files/min_max_runtime_multi_period.lp +++ b/tests/lp_files/min_max_runtime_multi_period.lp @@ -2,12 +2,12 @@ min objective: -+10 flow(cheap_plant_min_down_constraints_Bus_T_0_0) -+10 flow(cheap_plant_min_down_constraints_Bus_T_0_1) -+9.80392156862745 flow(cheap_plant_min_down_constraints_Bus_T_1_2) -+9.80392156862745 flow(cheap_plant_min_down_constraints_Bus_T_1_3) -+9.611687812379854 flow(cheap_plant_min_down_constraints_Bus_T_2_4) -+9.611687812379854 flow(cheap_plant_min_down_constraints_Bus_T_2_5) ++10 flow(cheap_plant_min_down_constraints_Bus_T_0) ++10 flow(cheap_plant_min_down_constraints_Bus_T_1) ++9.80392156862745 flow(cheap_plant_min_down_constraints_Bus_T_2) ++9.80392156862745 flow(cheap_plant_min_down_constraints_Bus_T_3) ++9.611687812379854 flow(cheap_plant_min_down_constraints_Bus_T_4) ++9.611687812379854 flow(cheap_plant_min_down_constraints_Bus_T_5) +5 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_0) +5 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_1) +4.901960784313725 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_2) @@ -23,28 +23,28 @@ objective: s.t. -c_e_BusBlock_balance(Bus_T_0_0)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_0_0) +c_e_BusBlock_balance(Bus_T_0)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_0) = 0 -c_e_BusBlock_balance(Bus_T_0_1)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_0_1) +c_e_BusBlock_balance(Bus_T_1)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_1) = 0 -c_e_BusBlock_balance(Bus_T_1_2)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_1_2) +c_e_BusBlock_balance(Bus_T_2)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_2) = 0 -c_e_BusBlock_balance(Bus_T_1_3)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_1_3) +c_e_BusBlock_balance(Bus_T_3)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_3) = 0 -c_e_BusBlock_balance(Bus_T_2_4)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_2_4) +c_e_BusBlock_balance(Bus_T_4)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_4) = 0 -c_e_BusBlock_balance(Bus_T_2_5)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_2_5) +c_e_BusBlock_balance(Bus_T_5)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_5) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraints_Bus_T_0)_: @@ -75,63 +75,63 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraint -10 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_5) = 0 -c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_0_0)_: --1 flow(cheap_plant_min_down_constraints_Bus_T_0_0) +c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_0)_: +-1 flow(cheap_plant_min_down_constraints_Bus_T_0) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_0) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_0_1)_: --1 flow(cheap_plant_min_down_constraints_Bus_T_0_1) +c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_1)_: +-1 flow(cheap_plant_min_down_constraints_Bus_T_1) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_1) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_1_2)_: --1 flow(cheap_plant_min_down_constraints_Bus_T_1_2) +c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_2)_: +-1 flow(cheap_plant_min_down_constraints_Bus_T_2) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_2) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_1_3)_: --1 flow(cheap_plant_min_down_constraints_Bus_T_1_3) +c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_3)_: +-1 flow(cheap_plant_min_down_constraints_Bus_T_3) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_3) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_2_4)_: --1 flow(cheap_plant_min_down_constraints_Bus_T_2_4) +c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_4)_: +-1 flow(cheap_plant_min_down_constraints_Bus_T_4) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_4) <= 0 -c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_2_5)_: --1 flow(cheap_plant_min_down_constraints_Bus_T_2_5) +c_u_NonConvexFlowBlock_min(cheap_plant_min_down_constraints_Bus_T_5)_: +-1 flow(cheap_plant_min_down_constraints_Bus_T_5) +0.5 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_5) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_0_0)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_0_0) +c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_0)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_0) -1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_0) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_0_1)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_0_1) +c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_1)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_1) -1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_1) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_1_2)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_1_2) +c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_2)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_2) -1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_2) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_1_3)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_1_3) +c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_3)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_3) -1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_3) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_2_4)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_2_4) +c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_4)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_4) -1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_4) <= 0 -c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_2_5)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_2_5) +c_u_NonConvexFlowBlock_max(cheap_plant_min_down_constraints_Bus_T_5)_: ++1 flow(cheap_plant_min_down_constraints_Bus_T_5) -1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_5) <= 0 @@ -223,12 +223,12 @@ c_u_NonConvexFlowBlock_min_downtime_constr(cheap_plant_min_down_constraints_Bus_ <= 4 bounds - 0 <= flow(cheap_plant_min_down_constraints_Bus_T_0_0) <= 10.0 - 0 <= flow(cheap_plant_min_down_constraints_Bus_T_0_1) <= 10.0 - 0 <= flow(cheap_plant_min_down_constraints_Bus_T_1_2) <= 10.0 - 0 <= flow(cheap_plant_min_down_constraints_Bus_T_1_3) <= 10.0 - 0 <= flow(cheap_plant_min_down_constraints_Bus_T_2_4) <= 10.0 - 0 <= flow(cheap_plant_min_down_constraints_Bus_T_2_5) <= 10.0 + 0 <= flow(cheap_plant_min_down_constraints_Bus_T_0) <= 10.0 + 0 <= flow(cheap_plant_min_down_constraints_Bus_T_1) <= 10.0 + 0 <= flow(cheap_plant_min_down_constraints_Bus_T_2) <= 10.0 + 0 <= flow(cheap_plant_min_down_constraints_Bus_T_3) <= 10.0 + 0 <= flow(cheap_plant_min_down_constraints_Bus_T_4) <= 10.0 + 0 <= flow(cheap_plant_min_down_constraints_Bus_T_5) <= 10.0 0 <= NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_0) <= 1 0 <= NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_1) <= 1 0 <= NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_2) <= 1 @@ -244,12 +244,12 @@ bounds 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_0) <= +inf 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_1) <= +inf 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_2) <= +inf - 0 <= NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) <= 1 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_3) <= +inf - 0 <= NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) <= 1 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_4) <= +inf - 0 <= NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) <= 1 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_5) <= +inf + 0 <= NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) <= 1 + 0 <= NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) <= 1 + 0 <= NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) <= 1 0 <= NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_5) <= 1 binary NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_0) diff --git a/tests/lp_files/multi_period_period_length.lp b/tests/lp_files/multi_period_period_length.lp index 58dd7db26..5aa3ac792 100644 --- a/tests/lp_files/multi_period_period_length.lp +++ b/tests/lp_files/multi_period_period_length.lp @@ -3,14 +3,6 @@ min objective: +15992.031251718836 ONE_VAR_CONSTANT -+9.999999999999998 InvestmentFlowBlock_invest(electricity_storage_0) -+6.729713331080573 InvestmentFlowBlock_invest(electricity_storage_1) -+5.000276133592968 InvestmentFlowBlock_invest(electricity_storage_2) -+4.101968025099305 InvestmentFlowBlock_invest(electricity_storage_3) -+3.7152788212696146 InvestmentFlowBlock_invest(electricity_storage_4) -+3.0478226645906985 InvestmentFlowBlock_invest(electricity_storage_5) -+2.264577134183746 InvestmentFlowBlock_invest(electricity_storage_6) -+0.09137506155350818 InvestmentFlowBlock_invest(electricity_storage_7) +9.999999999999998 InvestmentFlowBlock_invest(storage_electricity_0) +6.729713331080573 InvestmentFlowBlock_invest(storage_electricity_1) +5.000276133592968 InvestmentFlowBlock_invest(storage_electricity_2) @@ -19,6 +11,14 @@ objective: +3.0478226645906985 InvestmentFlowBlock_invest(storage_electricity_5) +2.264577134183746 InvestmentFlowBlock_invest(storage_electricity_6) +0.09137506155350818 InvestmentFlowBlock_invest(storage_electricity_7) ++9.999999999999998 InvestmentFlowBlock_invest(electricity_storage_0) ++6.729713331080573 InvestmentFlowBlock_invest(electricity_storage_1) ++5.000276133592968 InvestmentFlowBlock_invest(electricity_storage_2) ++4.101968025099305 InvestmentFlowBlock_invest(electricity_storage_3) ++3.7152788212696146 InvestmentFlowBlock_invest(electricity_storage_4) ++3.0478226645906985 InvestmentFlowBlock_invest(electricity_storage_5) ++2.264577134183746 InvestmentFlowBlock_invest(electricity_storage_6) ++0.09137506155350818 InvestmentFlowBlock_invest(electricity_storage_7) +9.999999999999998 GenericInvestmentStorageBlock_invest(storage_0) +6.729713331080573 GenericInvestmentStorageBlock_invest(storage_1) +5.000276133592968 GenericInvestmentStorageBlock_invest(storage_2) @@ -28,629 +28,629 @@ objective: +2.264577134183746 GenericInvestmentStorageBlock_invest(storage_6) +0.09137506155350818 GenericInvestmentStorageBlock_invest(storage_7) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_0) -+100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_0) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_0) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_1) -+100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_1) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_2) -+100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_2) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_3) +0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_3) -+67.29713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_3) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_4) +0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_5) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_6) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_3) +0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_5) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_6) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_3) +0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_5) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_6) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_3) +0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_5) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_6) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_3) +0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_5) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_6) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_3) +0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_5) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_6) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_3) +0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_4) -+67.29713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_5) +0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_5) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_5) -+67.29713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_5) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_6) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_6) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_5) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_6) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_5) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_6) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_5) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_6) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_5) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_6) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_5) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_6) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_5) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_6) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_5) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_6) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_5) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_6) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_5) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_6) -+50.00276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_7) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_5) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_6) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_5) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_6) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_5) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_6) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_5) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_6) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_5) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_6) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_5) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_6) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_5) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_6) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_23) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_1) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_5) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_6) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_7) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_8) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_9) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_10) ++0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_11) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_12) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_13) ++0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_14) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_15) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_16) ++0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_17) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_18) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_19) ++0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_20) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_21) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_22) ++0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_23) ++100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_0) ++100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_1) ++100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_2) ++67.29713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_3) ++67.29713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_4) ++67.29713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_5) ++50.00276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_6) +50.00276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_7) ++50.00276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_8) ++41.01968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_9) ++41.01968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_10) ++41.01968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_11) ++37.15278821269615 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_12) ++37.15278821269615 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_13) ++37.15278821269615 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_14) ++30.478226645906993 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_15) ++30.478226645906993 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_16) ++30.478226645906993 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_17) ++22.645771341837463 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_18) ++22.645771341837463 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_19) ++22.645771341837463 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_20) ++15.239954929176601 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_21) ++15.239954929176601 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_22) ++15.239954929176601 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_23) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_0) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_1) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_2) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_3) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_4) ++0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_5) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_6) ++0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_7) +0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_8) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_8) -+50.00276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_8) +0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_9) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_9) -+41.01968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_9) +0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_10) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_10) -+41.01968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_10) +0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_11) -+0.4101968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_11) -+41.01968025099306 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_11) +0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_12) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_12) -+37.15278821269615 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_12) +0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_13) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_13) -+37.15278821269615 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_13) +0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_14) -+0.37152788212696153 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_14) -+37.15278821269615 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_14) +0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_15) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_15) -+30.478226645906993 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_15) +0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_16) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_16) -+30.478226645906993 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_16) +0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_17) -+0.3047822664590699 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_17) -+30.478226645906993 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_17) +0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_18) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_18) -+22.645771341837463 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_18) +0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_19) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_19) -+22.645771341837463 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_19) +0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_20) -+0.22645771341837465 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_20) -+22.645771341837463 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_20) +0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_21) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_21) -+15.239954929176601 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_21) +0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_22) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_22) -+15.239954929176601 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_22) +0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_23) -+0.15239954929176602 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_23) -+15.239954929176601 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_23) +433.5692402297811 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_0) +291.77966959208334 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_1) +216.7965924181011 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_2) @@ -660,301 +660,301 @@ objective: +98.1850987509782 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_6) +3.9617416013704023 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_7) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_0) -+100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_0) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_1) -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_1) -+100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_1) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_2) -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_2) -+100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_2) +0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_3) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_3) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_3) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_3) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_3) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_3) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_3) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_3) -+67.29713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_3) +0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_4) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_4) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_4) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_4) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_4) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_4) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_4) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_4) -+67.29713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_4) +0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_5) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_5) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_5) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_5) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_5) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_5) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_5) -+0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_5) -+67.29713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_5) +0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_6) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_6) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_6) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_6) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_6) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_6) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_6) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_6) -+50.00276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_6) +0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_7) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_7) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_7) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_7) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_7) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_7) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_7) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_7) -+50.00276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_7) +0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_8) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_8) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_8) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_8) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_8) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_8) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_8) -+0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_8) -+50.00276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_8) +0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_9) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_9) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_9) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_9) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_9) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_9) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_9) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_9) -+41.01968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_9) +0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_10) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_10) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_10) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_10) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_10) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_10) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_10) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_10) -+41.01968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_10) +0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_11) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_11) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_11) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_11) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_11) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_11) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_11) -+0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_11) -+41.01968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_11) +0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_12) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_12) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_12) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_12) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_12) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_12) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_12) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_12) -+37.15278821269615 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_12) +0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_13) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_13) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_13) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_13) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_13) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_13) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_13) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_13) -+37.15278821269615 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_13) +0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_14) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_14) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_14) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_14) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_14) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_14) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_14) -+0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_14) -+37.15278821269615 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_14) +0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_15) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_15) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_15) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_15) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_15) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_15) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_15) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_15) -+30.478226645906993 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_15) +0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_16) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_16) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_16) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_16) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_16) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_16) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_16) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_16) -+30.478226645906993 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_16) +0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_17) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_17) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_17) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_17) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_17) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_17) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_17) -+0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_17) -+30.478226645906993 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_17) +0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_18) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_18) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_18) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_18) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_18) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_18) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_18) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_18) -+22.645771341837463 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_18) +0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_19) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_19) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_19) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_19) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_19) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_19) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_19) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_19) -+22.645771341837463 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_19) +0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_20) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_20) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_20) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_20) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_20) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_20) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_20) -+0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_20) -+22.645771341837463 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_20) +0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_21) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_21) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_21) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_21) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_21) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_21) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_21) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_21) -+15.239954929176601 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_21) +0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_22) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_22) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_22) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_22) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_22) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_22) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_22) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_22) -+15.239954929176601 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_22) +0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_23) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_23) ++1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_0) ++1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_1) ++1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_2) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_3) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_4) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_5) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_6) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_7) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_8) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_9) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_10) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_11) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_12) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_13) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_14) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_15) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_16) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_17) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_18) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_19) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_20) ++0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_21) ++0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_22) +0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_23) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_2) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_3) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_4) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_5) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_6) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_7) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_8) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_9) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_10) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_11) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_12) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_13) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_14) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_15) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_16) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_17) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_18) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_19) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_20) ++0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_21) ++0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_22) ++0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_23) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_2) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_3) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_4) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_5) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_6) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_7) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_8) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_9) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_10) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_11) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_12) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_13) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_14) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_15) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_16) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_17) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_18) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_19) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_20) ++0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_21) ++0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_22) +0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_23) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_0) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_1) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_2) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_3) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_4) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_5) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_6) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_7) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_8) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_9) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_10) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_11) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_12) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_13) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_14) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_15) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_16) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_17) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_18) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_19) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_20) ++0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_21) ++0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_22) +0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_23) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_23) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_0) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_1) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_2) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_3) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_4) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_5) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_6) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_7) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_8) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_9) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_10) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_11) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_12) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_13) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_14) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_15) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_16) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_17) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_18) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_19) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_20) ++0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_21) ++0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_22) +0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_23) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_2) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_3) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_4) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_5) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_6) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_7) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_8) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_9) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_10) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_11) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_12) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_13) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_14) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_15) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_16) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_17) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_18) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_19) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_20) ++0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_21) ++0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_22) ++0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_23) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_2) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_3) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_4) ++0.6729713331080575 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_5) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_6) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_7) ++0.5000276133592969 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_8) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_9) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_10) ++0.4101968025099306 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_11) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_12) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_13) ++0.37152788212696153 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_14) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_15) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_16) ++0.3047822664590699 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_17) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_18) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_19) ++0.22645771341837465 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_20) ++0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_21) ++0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_22) +0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_23) -+15.239954929176601 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_23) -+433.5692402297811 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_0) -+291.77966959208334 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_1) -+216.7965924181011 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_2) -+177.8487160089162 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_3) -+161.08306157796636 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_4) -+132.1442157041696 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_5) -+98.1850987509782 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_6) -+3.9617416013704023 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_7) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_0) -+100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_0) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_0) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_1) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_1) -+100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_1) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_2) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_2) -+100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_2) -+0.6729713331080575 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_3) ++100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_0) ++100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_1) ++100 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_2) ++67.29713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_3) ++67.29713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_4) ++67.29713331080575 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_5) ++50.00276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_6) ++50.00276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_7) ++50.00276133592969 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_8) ++41.01968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_9) ++41.01968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_10) ++41.01968025099306 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_11) ++37.15278821269615 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_12) ++37.15278821269615 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_13) ++37.15278821269615 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_14) ++30.478226645906993 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_15) ++30.478226645906993 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_16) ++30.478226645906993 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_17) ++22.645771341837463 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_18) ++22.645771341837463 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_19) ++22.645771341837463 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_20) ++15.239954929176601 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_21) ++15.239954929176601 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_22) ++15.239954929176601 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_23) ++433.5692402297811 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_0) ++291.77966959208334 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_1) ++216.7965924181011 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_2) ++177.8487160089162 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_3) ++161.08306157796636 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_4) ++132.1442157041696 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_5) ++98.1850987509782 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_6) ++3.9617416013704023 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_7) ++1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_0) ++1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_1) ++1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_2) +0.6729713331080575 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_3) -+67.29713331080575 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_3) -+0.6729713331080575 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_4) +0.6729713331080575 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_4) -+67.29713331080575 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_4) -+0.6729713331080575 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_5) +0.6729713331080575 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_5) -+67.29713331080575 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_5) -+0.5000276133592969 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_6) +0.5000276133592969 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_6) -+50.00276133592969 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_6) -+0.5000276133592969 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_7) +0.5000276133592969 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_7) -+50.00276133592969 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_7) -+0.5000276133592969 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_8) +0.5000276133592969 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_8) -+50.00276133592969 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_8) -+0.4101968025099306 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_9) +0.4101968025099306 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_9) -+41.01968025099306 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_9) -+0.4101968025099306 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_10) +0.4101968025099306 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_10) -+41.01968025099306 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_10) -+0.4101968025099306 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_11) +0.4101968025099306 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_11) -+41.01968025099306 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_11) -+0.37152788212696153 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_12) +0.37152788212696153 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_12) -+37.15278821269615 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_12) -+0.37152788212696153 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_13) +0.37152788212696153 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_13) -+37.15278821269615 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_13) -+0.37152788212696153 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_14) +0.37152788212696153 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_14) -+37.15278821269615 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_14) -+0.3047822664590699 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_15) +0.3047822664590699 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_15) -+30.478226645906993 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_15) -+0.3047822664590699 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_16) +0.3047822664590699 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_16) -+30.478226645906993 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_16) -+0.3047822664590699 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_17) +0.3047822664590699 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_17) -+30.478226645906993 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_17) -+0.22645771341837465 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_18) +0.22645771341837465 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_18) -+22.645771341837463 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_18) -+0.22645771341837465 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_19) +0.22645771341837465 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_19) -+22.645771341837463 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_19) -+0.22645771341837465 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_20) +0.22645771341837465 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_20) -+22.645771341837463 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_20) -+0.15239954929176602 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_21) +0.15239954929176602 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_21) -+15.239954929176601 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_21) -+0.15239954929176602 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_22) +0.15239954929176602 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_22) -+15.239954929176601 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_22) -+0.15239954929176602 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_23) +0.15239954929176602 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_23) ++100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_0) ++100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_1) ++100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_2) ++67.29713331080575 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_3) ++67.29713331080575 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_4) ++67.29713331080575 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_5) ++50.00276133592969 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_6) ++50.00276133592969 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_7) ++50.00276133592969 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_8) ++41.01968025099306 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_9) ++41.01968025099306 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_10) ++41.01968025099306 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_11) ++37.15278821269615 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_12) ++37.15278821269615 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_13) ++37.15278821269615 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_14) ++30.478226645906993 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_15) ++30.478226645906993 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_16) ++30.478226645906993 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_17) ++22.645771341837463 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_18) ++22.645771341837463 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_19) ++22.645771341837463 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_20) ++15.239954929176601 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_21) ++15.239954929176601 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_22) +15.239954929176601 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_23) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_0) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_1) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_2) ++0.6729713331080575 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_3) ++0.6729713331080575 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_4) ++0.6729713331080575 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_5) ++0.5000276133592969 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_6) ++0.5000276133592969 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_7) ++0.5000276133592969 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_8) ++0.4101968025099306 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_9) ++0.4101968025099306 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_10) ++0.4101968025099306 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_11) ++0.37152788212696153 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_12) ++0.37152788212696153 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_13) ++0.37152788212696153 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_14) ++0.3047822664590699 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_15) ++0.3047822664590699 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_16) ++0.3047822664590699 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_17) ++0.22645771341837465 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_18) ++0.22645771341837465 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_19) ++0.22645771341837465 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_20) ++0.15239954929176602 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_21) ++0.15239954929176602 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_22) ++0.15239954929176602 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_23) +433.5692402297811 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_0) +291.77966959208334 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_1) +216.7965924181011 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_2) @@ -966,250 +966,196 @@ objective: s.t. -c_e_BusBlock_balance(electricity_0_0)_: -+1 flow(storage_electricity_0_0) --1 flow(electricity_storage_0_0) --1 flow(electricity_demand_dsm_diw_0_0) --1 flow(electricity_demand_dsm_dlr_0_0) --1 flow(electricity_demand_dsm_oemof_0_0) -= 0 - -c_e_BusBlock_balance(electricity_0_1)_: -+1 flow(storage_electricity_0_1) --1 flow(electricity_storage_0_1) --1 flow(electricity_demand_dsm_diw_0_1) --1 flow(electricity_demand_dsm_dlr_0_1) --1 flow(electricity_demand_dsm_oemof_0_1) -= 0 - -c_e_BusBlock_balance(electricity_0_2)_: -+1 flow(storage_electricity_0_2) --1 flow(electricity_storage_0_2) --1 flow(electricity_demand_dsm_diw_0_2) --1 flow(electricity_demand_dsm_dlr_0_2) --1 flow(electricity_demand_dsm_oemof_0_2) -= 0 - -c_e_BusBlock_balance(electricity_1_3)_: -+1 flow(storage_electricity_1_3) --1 flow(electricity_storage_1_3) --1 flow(electricity_demand_dsm_diw_1_3) --1 flow(electricity_demand_dsm_dlr_1_3) --1 flow(electricity_demand_dsm_oemof_1_3) +c_e_BusBlock_balance(electricity_0)_: +-1 flow(electricity_storage_0) +-1 flow(electricity_demand_dsm_diw_0) +-1 flow(electricity_demand_dsm_dlr_0) +-1 flow(electricity_demand_dsm_oemof_0) ++1 flow(storage_electricity_0) = 0 -c_e_BusBlock_balance(electricity_1_4)_: -+1 flow(storage_electricity_1_4) --1 flow(electricity_storage_1_4) --1 flow(electricity_demand_dsm_diw_1_4) --1 flow(electricity_demand_dsm_dlr_1_4) --1 flow(electricity_demand_dsm_oemof_1_4) +c_e_BusBlock_balance(electricity_1)_: +-1 flow(electricity_storage_1) +-1 flow(electricity_demand_dsm_diw_1) +-1 flow(electricity_demand_dsm_dlr_1) +-1 flow(electricity_demand_dsm_oemof_1) ++1 flow(storage_electricity_1) = 0 -c_e_BusBlock_balance(electricity_1_5)_: -+1 flow(storage_electricity_1_5) --1 flow(electricity_storage_1_5) --1 flow(electricity_demand_dsm_diw_1_5) --1 flow(electricity_demand_dsm_dlr_1_5) --1 flow(electricity_demand_dsm_oemof_1_5) +c_e_BusBlock_balance(electricity_2)_: +-1 flow(electricity_storage_2) +-1 flow(electricity_demand_dsm_diw_2) +-1 flow(electricity_demand_dsm_dlr_2) +-1 flow(electricity_demand_dsm_oemof_2) ++1 flow(storage_electricity_2) = 0 -c_e_BusBlock_balance(electricity_2_6)_: -+1 flow(storage_electricity_2_6) --1 flow(electricity_storage_2_6) --1 flow(electricity_demand_dsm_diw_2_6) --1 flow(electricity_demand_dsm_dlr_2_6) --1 flow(electricity_demand_dsm_oemof_2_6) +c_e_BusBlock_balance(electricity_3)_: +-1 flow(electricity_storage_3) +-1 flow(electricity_demand_dsm_diw_3) +-1 flow(electricity_demand_dsm_dlr_3) +-1 flow(electricity_demand_dsm_oemof_3) ++1 flow(storage_electricity_3) = 0 -c_e_BusBlock_balance(electricity_2_7)_: -+1 flow(storage_electricity_2_7) --1 flow(electricity_storage_2_7) --1 flow(electricity_demand_dsm_diw_2_7) --1 flow(electricity_demand_dsm_dlr_2_7) --1 flow(electricity_demand_dsm_oemof_2_7) +c_e_BusBlock_balance(electricity_4)_: +-1 flow(electricity_storage_4) +-1 flow(electricity_demand_dsm_diw_4) +-1 flow(electricity_demand_dsm_dlr_4) +-1 flow(electricity_demand_dsm_oemof_4) ++1 flow(storage_electricity_4) = 0 -c_e_BusBlock_balance(electricity_2_8)_: -+1 flow(storage_electricity_2_8) --1 flow(electricity_storage_2_8) --1 flow(electricity_demand_dsm_diw_2_8) --1 flow(electricity_demand_dsm_dlr_2_8) --1 flow(electricity_demand_dsm_oemof_2_8) +c_e_BusBlock_balance(electricity_5)_: +-1 flow(electricity_storage_5) +-1 flow(electricity_demand_dsm_diw_5) +-1 flow(electricity_demand_dsm_dlr_5) +-1 flow(electricity_demand_dsm_oemof_5) ++1 flow(storage_electricity_5) = 0 -c_e_BusBlock_balance(electricity_3_9)_: -+1 flow(storage_electricity_3_9) --1 flow(electricity_storage_3_9) --1 flow(electricity_demand_dsm_diw_3_9) --1 flow(electricity_demand_dsm_dlr_3_9) --1 flow(electricity_demand_dsm_oemof_3_9) +c_e_BusBlock_balance(electricity_6)_: +-1 flow(electricity_storage_6) +-1 flow(electricity_demand_dsm_diw_6) +-1 flow(electricity_demand_dsm_dlr_6) +-1 flow(electricity_demand_dsm_oemof_6) ++1 flow(storage_electricity_6) = 0 -c_e_BusBlock_balance(electricity_3_10)_: -+1 flow(storage_electricity_3_10) --1 flow(electricity_storage_3_10) --1 flow(electricity_demand_dsm_diw_3_10) --1 flow(electricity_demand_dsm_dlr_3_10) --1 flow(electricity_demand_dsm_oemof_3_10) +c_e_BusBlock_balance(electricity_7)_: +-1 flow(electricity_storage_7) +-1 flow(electricity_demand_dsm_diw_7) +-1 flow(electricity_demand_dsm_dlr_7) +-1 flow(electricity_demand_dsm_oemof_7) ++1 flow(storage_electricity_7) = 0 -c_e_BusBlock_balance(electricity_3_11)_: -+1 flow(storage_electricity_3_11) --1 flow(electricity_storage_3_11) --1 flow(electricity_demand_dsm_diw_3_11) --1 flow(electricity_demand_dsm_dlr_3_11) --1 flow(electricity_demand_dsm_oemof_3_11) +c_e_BusBlock_balance(electricity_8)_: +-1 flow(electricity_storage_8) +-1 flow(electricity_demand_dsm_diw_8) +-1 flow(electricity_demand_dsm_dlr_8) +-1 flow(electricity_demand_dsm_oemof_8) ++1 flow(storage_electricity_8) = 0 -c_e_BusBlock_balance(electricity_4_12)_: -+1 flow(storage_electricity_4_12) --1 flow(electricity_storage_4_12) --1 flow(electricity_demand_dsm_diw_4_12) --1 flow(electricity_demand_dsm_dlr_4_12) --1 flow(electricity_demand_dsm_oemof_4_12) +c_e_BusBlock_balance(electricity_9)_: +-1 flow(electricity_storage_9) +-1 flow(electricity_demand_dsm_diw_9) +-1 flow(electricity_demand_dsm_dlr_9) +-1 flow(electricity_demand_dsm_oemof_9) ++1 flow(storage_electricity_9) = 0 -c_e_BusBlock_balance(electricity_4_13)_: -+1 flow(storage_electricity_4_13) --1 flow(electricity_storage_4_13) --1 flow(electricity_demand_dsm_diw_4_13) --1 flow(electricity_demand_dsm_dlr_4_13) --1 flow(electricity_demand_dsm_oemof_4_13) +c_e_BusBlock_balance(electricity_10)_: +-1 flow(electricity_storage_10) +-1 flow(electricity_demand_dsm_diw_10) +-1 flow(electricity_demand_dsm_dlr_10) +-1 flow(electricity_demand_dsm_oemof_10) ++1 flow(storage_electricity_10) = 0 -c_e_BusBlock_balance(electricity_4_14)_: -+1 flow(storage_electricity_4_14) --1 flow(electricity_storage_4_14) --1 flow(electricity_demand_dsm_diw_4_14) --1 flow(electricity_demand_dsm_dlr_4_14) --1 flow(electricity_demand_dsm_oemof_4_14) +c_e_BusBlock_balance(electricity_11)_: +-1 flow(electricity_storage_11) +-1 flow(electricity_demand_dsm_diw_11) +-1 flow(electricity_demand_dsm_dlr_11) +-1 flow(electricity_demand_dsm_oemof_11) ++1 flow(storage_electricity_11) = 0 -c_e_BusBlock_balance(electricity_5_15)_: -+1 flow(storage_electricity_5_15) --1 flow(electricity_storage_5_15) --1 flow(electricity_demand_dsm_diw_5_15) --1 flow(electricity_demand_dsm_dlr_5_15) --1 flow(electricity_demand_dsm_oemof_5_15) +c_e_BusBlock_balance(electricity_12)_: +-1 flow(electricity_storage_12) +-1 flow(electricity_demand_dsm_diw_12) +-1 flow(electricity_demand_dsm_dlr_12) +-1 flow(electricity_demand_dsm_oemof_12) ++1 flow(storage_electricity_12) = 0 -c_e_BusBlock_balance(electricity_5_16)_: -+1 flow(storage_electricity_5_16) --1 flow(electricity_storage_5_16) --1 flow(electricity_demand_dsm_diw_5_16) --1 flow(electricity_demand_dsm_dlr_5_16) --1 flow(electricity_demand_dsm_oemof_5_16) +c_e_BusBlock_balance(electricity_13)_: +-1 flow(electricity_storage_13) +-1 flow(electricity_demand_dsm_diw_13) +-1 flow(electricity_demand_dsm_dlr_13) +-1 flow(electricity_demand_dsm_oemof_13) ++1 flow(storage_electricity_13) = 0 -c_e_BusBlock_balance(electricity_5_17)_: -+1 flow(storage_electricity_5_17) --1 flow(electricity_storage_5_17) --1 flow(electricity_demand_dsm_diw_5_17) --1 flow(electricity_demand_dsm_dlr_5_17) --1 flow(electricity_demand_dsm_oemof_5_17) +c_e_BusBlock_balance(electricity_14)_: +-1 flow(electricity_storage_14) +-1 flow(electricity_demand_dsm_diw_14) +-1 flow(electricity_demand_dsm_dlr_14) +-1 flow(electricity_demand_dsm_oemof_14) ++1 flow(storage_electricity_14) = 0 -c_e_BusBlock_balance(electricity_6_18)_: -+1 flow(storage_electricity_6_18) --1 flow(electricity_storage_6_18) --1 flow(electricity_demand_dsm_diw_6_18) --1 flow(electricity_demand_dsm_dlr_6_18) --1 flow(electricity_demand_dsm_oemof_6_18) +c_e_BusBlock_balance(electricity_15)_: +-1 flow(electricity_storage_15) +-1 flow(electricity_demand_dsm_diw_15) +-1 flow(electricity_demand_dsm_dlr_15) +-1 flow(electricity_demand_dsm_oemof_15) ++1 flow(storage_electricity_15) = 0 -c_e_BusBlock_balance(electricity_6_19)_: -+1 flow(storage_electricity_6_19) --1 flow(electricity_storage_6_19) --1 flow(electricity_demand_dsm_diw_6_19) --1 flow(electricity_demand_dsm_dlr_6_19) --1 flow(electricity_demand_dsm_oemof_6_19) +c_e_BusBlock_balance(electricity_16)_: +-1 flow(electricity_storage_16) +-1 flow(electricity_demand_dsm_diw_16) +-1 flow(electricity_demand_dsm_dlr_16) +-1 flow(electricity_demand_dsm_oemof_16) ++1 flow(storage_electricity_16) = 0 -c_e_BusBlock_balance(electricity_6_20)_: -+1 flow(storage_electricity_6_20) --1 flow(electricity_storage_6_20) --1 flow(electricity_demand_dsm_diw_6_20) --1 flow(electricity_demand_dsm_dlr_6_20) --1 flow(electricity_demand_dsm_oemof_6_20) +c_e_BusBlock_balance(electricity_17)_: +-1 flow(electricity_storage_17) +-1 flow(electricity_demand_dsm_diw_17) +-1 flow(electricity_demand_dsm_dlr_17) +-1 flow(electricity_demand_dsm_oemof_17) ++1 flow(storage_electricity_17) = 0 -c_e_BusBlock_balance(electricity_7_21)_: -+1 flow(storage_electricity_7_21) --1 flow(electricity_storage_7_21) --1 flow(electricity_demand_dsm_diw_7_21) --1 flow(electricity_demand_dsm_dlr_7_21) --1 flow(electricity_demand_dsm_oemof_7_21) +c_e_BusBlock_balance(electricity_18)_: +-1 flow(electricity_storage_18) +-1 flow(electricity_demand_dsm_diw_18) +-1 flow(electricity_demand_dsm_dlr_18) +-1 flow(electricity_demand_dsm_oemof_18) ++1 flow(storage_electricity_18) = 0 -c_e_BusBlock_balance(electricity_7_22)_: -+1 flow(storage_electricity_7_22) --1 flow(electricity_storage_7_22) --1 flow(electricity_demand_dsm_diw_7_22) --1 flow(electricity_demand_dsm_dlr_7_22) --1 flow(electricity_demand_dsm_oemof_7_22) +c_e_BusBlock_balance(electricity_19)_: +-1 flow(electricity_storage_19) +-1 flow(electricity_demand_dsm_diw_19) +-1 flow(electricity_demand_dsm_dlr_19) +-1 flow(electricity_demand_dsm_oemof_19) ++1 flow(storage_electricity_19) = 0 -c_e_BusBlock_balance(electricity_7_23)_: -+1 flow(storage_electricity_7_23) --1 flow(electricity_storage_7_23) --1 flow(electricity_demand_dsm_diw_7_23) --1 flow(electricity_demand_dsm_dlr_7_23) --1 flow(electricity_demand_dsm_oemof_7_23) +c_e_BusBlock_balance(electricity_20)_: +-1 flow(electricity_storage_20) +-1 flow(electricity_demand_dsm_diw_20) +-1 flow(electricity_demand_dsm_dlr_20) +-1 flow(electricity_demand_dsm_oemof_20) ++1 flow(storage_electricity_20) = 0 -c_e_InvestmentFlowBlock_total_rule(electricity_storage_0)_: --1 InvestmentFlowBlock_invest(electricity_storage_0) -+1 InvestmentFlowBlock_total(electricity_storage_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricity_storage_1)_: --1 InvestmentFlowBlock_invest(electricity_storage_1) --1 InvestmentFlowBlock_total(electricity_storage_0) -+1 InvestmentFlowBlock_total(electricity_storage_1) -+1 InvestmentFlowBlock_old(electricity_storage_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricity_storage_2)_: --1 InvestmentFlowBlock_invest(electricity_storage_2) --1 InvestmentFlowBlock_total(electricity_storage_1) -+1 InvestmentFlowBlock_total(electricity_storage_2) -+1 InvestmentFlowBlock_old(electricity_storage_2) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricity_storage_3)_: --1 InvestmentFlowBlock_invest(electricity_storage_3) --1 InvestmentFlowBlock_total(electricity_storage_2) -+1 InvestmentFlowBlock_total(electricity_storage_3) -+1 InvestmentFlowBlock_old(electricity_storage_3) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricity_storage_4)_: --1 InvestmentFlowBlock_invest(electricity_storage_4) --1 InvestmentFlowBlock_total(electricity_storage_3) -+1 InvestmentFlowBlock_total(electricity_storage_4) -+1 InvestmentFlowBlock_old(electricity_storage_4) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricity_storage_5)_: --1 InvestmentFlowBlock_invest(electricity_storage_5) --1 InvestmentFlowBlock_total(electricity_storage_4) -+1 InvestmentFlowBlock_total(electricity_storage_5) -+1 InvestmentFlowBlock_old(electricity_storage_5) +c_e_BusBlock_balance(electricity_21)_: +-1 flow(electricity_storage_21) +-1 flow(electricity_demand_dsm_diw_21) +-1 flow(electricity_demand_dsm_dlr_21) +-1 flow(electricity_demand_dsm_oemof_21) ++1 flow(storage_electricity_21) = 0 -c_e_InvestmentFlowBlock_total_rule(electricity_storage_6)_: --1 InvestmentFlowBlock_invest(electricity_storage_6) --1 InvestmentFlowBlock_total(electricity_storage_5) -+1 InvestmentFlowBlock_total(electricity_storage_6) -+1 InvestmentFlowBlock_old(electricity_storage_6) +c_e_BusBlock_balance(electricity_22)_: +-1 flow(electricity_storage_22) +-1 flow(electricity_demand_dsm_diw_22) +-1 flow(electricity_demand_dsm_dlr_22) +-1 flow(electricity_demand_dsm_oemof_22) ++1 flow(storage_electricity_22) = 0 -c_e_InvestmentFlowBlock_total_rule(electricity_storage_7)_: --1 InvestmentFlowBlock_invest(electricity_storage_7) --1 InvestmentFlowBlock_total(electricity_storage_6) -+1 InvestmentFlowBlock_total(electricity_storage_7) -+1 InvestmentFlowBlock_old(electricity_storage_7) +c_e_BusBlock_balance(electricity_23)_: +-1 flow(electricity_storage_23) +-1 flow(electricity_demand_dsm_diw_23) +-1 flow(electricity_demand_dsm_dlr_23) +-1 flow(electricity_demand_dsm_oemof_23) ++1 flow(storage_electricity_23) = 0 c_e_InvestmentFlowBlock_total_rule(storage_electricity_0)_: @@ -1266,43 +1212,58 @@ c_e_InvestmentFlowBlock_total_rule(storage_electricity_7)_: +1 InvestmentFlowBlock_old(storage_electricity_7) = 0 -c_e_InvestmentFlowBlock_old_rule_end(electricity_storage_0)_: -+1 InvestmentFlowBlock_old_end(electricity_storage_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricity_storage_1)_: +c_e_InvestmentFlowBlock_total_rule(electricity_storage_0)_: -1 InvestmentFlowBlock_invest(electricity_storage_0) -+1 InvestmentFlowBlock_old_end(electricity_storage_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricity_storage_2)_: -+1 InvestmentFlowBlock_old_end(electricity_storage_2) ++1 InvestmentFlowBlock_total(electricity_storage_0) = 0 -c_e_InvestmentFlowBlock_old_rule_end(electricity_storage_3)_: +c_e_InvestmentFlowBlock_total_rule(electricity_storage_1)_: -1 InvestmentFlowBlock_invest(electricity_storage_1) -+1 InvestmentFlowBlock_old_end(electricity_storage_3) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricity_storage_4)_: -+1 InvestmentFlowBlock_old_end(electricity_storage_4) +-1 InvestmentFlowBlock_total(electricity_storage_0) ++1 InvestmentFlowBlock_total(electricity_storage_1) ++1 InvestmentFlowBlock_old(electricity_storage_1) = 0 -c_e_InvestmentFlowBlock_old_rule_end(electricity_storage_5)_: +c_e_InvestmentFlowBlock_total_rule(electricity_storage_2)_: -1 InvestmentFlowBlock_invest(electricity_storage_2) -+1 InvestmentFlowBlock_old_end(electricity_storage_5) +-1 InvestmentFlowBlock_total(electricity_storage_1) ++1 InvestmentFlowBlock_total(electricity_storage_2) ++1 InvestmentFlowBlock_old(electricity_storage_2) = 0 -c_e_InvestmentFlowBlock_old_rule_end(electricity_storage_6)_: +c_e_InvestmentFlowBlock_total_rule(electricity_storage_3)_: -1 InvestmentFlowBlock_invest(electricity_storage_3) +-1 InvestmentFlowBlock_total(electricity_storage_2) ++1 InvestmentFlowBlock_total(electricity_storage_3) ++1 InvestmentFlowBlock_old(electricity_storage_3) += 0 + +c_e_InvestmentFlowBlock_total_rule(electricity_storage_4)_: -1 InvestmentFlowBlock_invest(electricity_storage_4) -+1 InvestmentFlowBlock_old_end(electricity_storage_6) +-1 InvestmentFlowBlock_total(electricity_storage_3) ++1 InvestmentFlowBlock_total(electricity_storage_4) ++1 InvestmentFlowBlock_old(electricity_storage_4) = 0 -c_e_InvestmentFlowBlock_old_rule_end(electricity_storage_7)_: +c_e_InvestmentFlowBlock_total_rule(electricity_storage_5)_: -1 InvestmentFlowBlock_invest(electricity_storage_5) +-1 InvestmentFlowBlock_total(electricity_storage_4) ++1 InvestmentFlowBlock_total(electricity_storage_5) ++1 InvestmentFlowBlock_old(electricity_storage_5) += 0 + +c_e_InvestmentFlowBlock_total_rule(electricity_storage_6)_: -1 InvestmentFlowBlock_invest(electricity_storage_6) -+1 InvestmentFlowBlock_old_end(electricity_storage_7) +-1 InvestmentFlowBlock_total(electricity_storage_5) ++1 InvestmentFlowBlock_total(electricity_storage_6) ++1 InvestmentFlowBlock_old(electricity_storage_6) += 0 + +c_e_InvestmentFlowBlock_total_rule(electricity_storage_7)_: +-1 InvestmentFlowBlock_invest(electricity_storage_7) +-1 InvestmentFlowBlock_total(electricity_storage_6) ++1 InvestmentFlowBlock_total(electricity_storage_7) ++1 InvestmentFlowBlock_old(electricity_storage_7) = 0 c_e_InvestmentFlowBlock_old_rule_end(storage_electricity_0)_: @@ -1344,36 +1305,43 @@ c_e_InvestmentFlowBlock_old_rule_end(storage_electricity_7)_: +1 InvestmentFlowBlock_old_end(storage_electricity_7) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_0)_: -+1 InvestmentFlowBlock_old_exo(electricity_storage_0) +c_e_InvestmentFlowBlock_old_rule_end(electricity_storage_0)_: ++1 InvestmentFlowBlock_old_end(electricity_storage_0) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_1)_: -+1 InvestmentFlowBlock_old_exo(electricity_storage_1) +c_e_InvestmentFlowBlock_old_rule_end(electricity_storage_1)_: +-1 InvestmentFlowBlock_invest(electricity_storage_0) ++1 InvestmentFlowBlock_old_end(electricity_storage_1) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_2)_: -+1 InvestmentFlowBlock_old_exo(electricity_storage_2) +c_e_InvestmentFlowBlock_old_rule_end(electricity_storage_2)_: ++1 InvestmentFlowBlock_old_end(electricity_storage_2) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_3)_: -+1 InvestmentFlowBlock_old_exo(electricity_storage_3) +c_e_InvestmentFlowBlock_old_rule_end(electricity_storage_3)_: +-1 InvestmentFlowBlock_invest(electricity_storage_1) ++1 InvestmentFlowBlock_old_end(electricity_storage_3) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_4)_: -+1 InvestmentFlowBlock_old_exo(electricity_storage_4) -= 0 +c_e_InvestmentFlowBlock_old_rule_end(electricity_storage_4)_: ++1 InvestmentFlowBlock_old_end(electricity_storage_4) += 0 -c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_5)_: -+1 InvestmentFlowBlock_old_exo(electricity_storage_5) +c_e_InvestmentFlowBlock_old_rule_end(electricity_storage_5)_: +-1 InvestmentFlowBlock_invest(electricity_storage_2) ++1 InvestmentFlowBlock_old_end(electricity_storage_5) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_6)_: -+1 InvestmentFlowBlock_old_exo(electricity_storage_6) +c_e_InvestmentFlowBlock_old_rule_end(electricity_storage_6)_: +-1 InvestmentFlowBlock_invest(electricity_storage_3) +-1 InvestmentFlowBlock_invest(electricity_storage_4) ++1 InvestmentFlowBlock_old_end(electricity_storage_6) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_7)_: -+1 InvestmentFlowBlock_old_exo(electricity_storage_7) +c_e_InvestmentFlowBlock_old_rule_end(electricity_storage_7)_: +-1 InvestmentFlowBlock_invest(electricity_storage_5) +-1 InvestmentFlowBlock_invest(electricity_storage_6) ++1 InvestmentFlowBlock_old_end(electricity_storage_7) = 0 c_e_InvestmentFlowBlock_old_rule_exo(storage_electricity_0)_: @@ -1408,58 +1376,42 @@ c_e_InvestmentFlowBlock_old_rule_exo(storage_electricity_7)_: +1 InvestmentFlowBlock_old_exo(storage_electricity_7) = 0 -c_e_InvestmentFlowBlock_old_rule(electricity_storage_0)_: --1 InvestmentFlowBlock_old_end(electricity_storage_0) --1 InvestmentFlowBlock_old_exo(electricity_storage_0) -+1 InvestmentFlowBlock_old(electricity_storage_0) +c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_0)_: ++1 InvestmentFlowBlock_old_exo(electricity_storage_0) = 0 -c_e_InvestmentFlowBlock_old_rule(electricity_storage_1)_: -+1 InvestmentFlowBlock_old(electricity_storage_1) --1 InvestmentFlowBlock_old_end(electricity_storage_1) --1 InvestmentFlowBlock_old_exo(electricity_storage_1) +c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_1)_: ++1 InvestmentFlowBlock_old_exo(electricity_storage_1) = 0 -c_e_InvestmentFlowBlock_old_rule(electricity_storage_2)_: -+1 InvestmentFlowBlock_old(electricity_storage_2) --1 InvestmentFlowBlock_old_end(electricity_storage_2) --1 InvestmentFlowBlock_old_exo(electricity_storage_2) +c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_2)_: ++1 InvestmentFlowBlock_old_exo(electricity_storage_2) = 0 -c_e_InvestmentFlowBlock_old_rule(electricity_storage_3)_: -+1 InvestmentFlowBlock_old(electricity_storage_3) --1 InvestmentFlowBlock_old_end(electricity_storage_3) --1 InvestmentFlowBlock_old_exo(electricity_storage_3) +c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_3)_: ++1 InvestmentFlowBlock_old_exo(electricity_storage_3) = 0 -c_e_InvestmentFlowBlock_old_rule(electricity_storage_4)_: -+1 InvestmentFlowBlock_old(electricity_storage_4) --1 InvestmentFlowBlock_old_end(electricity_storage_4) --1 InvestmentFlowBlock_old_exo(electricity_storage_4) +c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_4)_: ++1 InvestmentFlowBlock_old_exo(electricity_storage_4) = 0 -c_e_InvestmentFlowBlock_old_rule(electricity_storage_5)_: -+1 InvestmentFlowBlock_old(electricity_storage_5) --1 InvestmentFlowBlock_old_end(electricity_storage_5) --1 InvestmentFlowBlock_old_exo(electricity_storage_5) +c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_5)_: ++1 InvestmentFlowBlock_old_exo(electricity_storage_5) = 0 -c_e_InvestmentFlowBlock_old_rule(electricity_storage_6)_: -+1 InvestmentFlowBlock_old(electricity_storage_6) --1 InvestmentFlowBlock_old_end(electricity_storage_6) --1 InvestmentFlowBlock_old_exo(electricity_storage_6) +c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_6)_: ++1 InvestmentFlowBlock_old_exo(electricity_storage_6) = 0 -c_e_InvestmentFlowBlock_old_rule(electricity_storage_7)_: -+1 InvestmentFlowBlock_old(electricity_storage_7) --1 InvestmentFlowBlock_old_end(electricity_storage_7) --1 InvestmentFlowBlock_old_exo(electricity_storage_7) +c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_7)_: ++1 InvestmentFlowBlock_old_exo(electricity_storage_7) = 0 c_e_InvestmentFlowBlock_old_rule(storage_electricity_0)_: ++1 InvestmentFlowBlock_old(storage_electricity_0) -1 InvestmentFlowBlock_old_end(storage_electricity_0) -1 InvestmentFlowBlock_old_exo(storage_electricity_0) -+1 InvestmentFlowBlock_old(storage_electricity_0) = 0 c_e_InvestmentFlowBlock_old_rule(storage_electricity_1)_: @@ -1504,292 +1456,340 @@ c_e_InvestmentFlowBlock_old_rule(storage_electricity_7)_: -1 InvestmentFlowBlock_old_exo(storage_electricity_7) = 0 -c_u_InvestmentFlowBlock_max(electricity_storage_0_0)_: -+1 flow(electricity_storage_0_0) --1 InvestmentFlowBlock_total(electricity_storage_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_0_1)_: -+1 flow(electricity_storage_0_1) --1 InvestmentFlowBlock_total(electricity_storage_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_0_2)_: -+1 flow(electricity_storage_0_2) --1 InvestmentFlowBlock_total(electricity_storage_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_1_3)_: -+1 flow(electricity_storage_1_3) --1 InvestmentFlowBlock_total(electricity_storage_1) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_1_4)_: -+1 flow(electricity_storage_1_4) --1 InvestmentFlowBlock_total(electricity_storage_1) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_1_5)_: -+1 flow(electricity_storage_1_5) --1 InvestmentFlowBlock_total(electricity_storage_1) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_2_6)_: -+1 flow(electricity_storage_2_6) --1 InvestmentFlowBlock_total(electricity_storage_2) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_2_7)_: -+1 flow(electricity_storage_2_7) --1 InvestmentFlowBlock_total(electricity_storage_2) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_2_8)_: -+1 flow(electricity_storage_2_8) --1 InvestmentFlowBlock_total(electricity_storage_2) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_3_9)_: -+1 flow(electricity_storage_3_9) --1 InvestmentFlowBlock_total(electricity_storage_3) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_3_10)_: -+1 flow(electricity_storage_3_10) --1 InvestmentFlowBlock_total(electricity_storage_3) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_3_11)_: -+1 flow(electricity_storage_3_11) --1 InvestmentFlowBlock_total(electricity_storage_3) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_4_12)_: -+1 flow(electricity_storage_4_12) --1 InvestmentFlowBlock_total(electricity_storage_4) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_4_13)_: -+1 flow(electricity_storage_4_13) --1 InvestmentFlowBlock_total(electricity_storage_4) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_4_14)_: -+1 flow(electricity_storage_4_14) --1 InvestmentFlowBlock_total(electricity_storage_4) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_5_15)_: -+1 flow(electricity_storage_5_15) --1 InvestmentFlowBlock_total(electricity_storage_5) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_5_16)_: -+1 flow(electricity_storage_5_16) --1 InvestmentFlowBlock_total(electricity_storage_5) -<= 0 +c_e_InvestmentFlowBlock_old_rule(electricity_storage_0)_: ++1 InvestmentFlowBlock_old(electricity_storage_0) +-1 InvestmentFlowBlock_old_end(electricity_storage_0) +-1 InvestmentFlowBlock_old_exo(electricity_storage_0) += 0 -c_u_InvestmentFlowBlock_max(electricity_storage_5_17)_: -+1 flow(electricity_storage_5_17) --1 InvestmentFlowBlock_total(electricity_storage_5) -<= 0 +c_e_InvestmentFlowBlock_old_rule(electricity_storage_1)_: ++1 InvestmentFlowBlock_old(electricity_storage_1) +-1 InvestmentFlowBlock_old_end(electricity_storage_1) +-1 InvestmentFlowBlock_old_exo(electricity_storage_1) += 0 -c_u_InvestmentFlowBlock_max(electricity_storage_6_18)_: -+1 flow(electricity_storage_6_18) --1 InvestmentFlowBlock_total(electricity_storage_6) -<= 0 +c_e_InvestmentFlowBlock_old_rule(electricity_storage_2)_: ++1 InvestmentFlowBlock_old(electricity_storage_2) +-1 InvestmentFlowBlock_old_end(electricity_storage_2) +-1 InvestmentFlowBlock_old_exo(electricity_storage_2) += 0 -c_u_InvestmentFlowBlock_max(electricity_storage_6_19)_: -+1 flow(electricity_storage_6_19) --1 InvestmentFlowBlock_total(electricity_storage_6) -<= 0 +c_e_InvestmentFlowBlock_old_rule(electricity_storage_3)_: ++1 InvestmentFlowBlock_old(electricity_storage_3) +-1 InvestmentFlowBlock_old_end(electricity_storage_3) +-1 InvestmentFlowBlock_old_exo(electricity_storage_3) += 0 -c_u_InvestmentFlowBlock_max(electricity_storage_6_20)_: -+1 flow(electricity_storage_6_20) --1 InvestmentFlowBlock_total(electricity_storage_6) -<= 0 +c_e_InvestmentFlowBlock_old_rule(electricity_storage_4)_: ++1 InvestmentFlowBlock_old(electricity_storage_4) +-1 InvestmentFlowBlock_old_end(electricity_storage_4) +-1 InvestmentFlowBlock_old_exo(electricity_storage_4) += 0 -c_u_InvestmentFlowBlock_max(electricity_storage_7_21)_: -+1 flow(electricity_storage_7_21) --1 InvestmentFlowBlock_total(electricity_storage_7) -<= 0 +c_e_InvestmentFlowBlock_old_rule(electricity_storage_5)_: ++1 InvestmentFlowBlock_old(electricity_storage_5) +-1 InvestmentFlowBlock_old_end(electricity_storage_5) +-1 InvestmentFlowBlock_old_exo(electricity_storage_5) += 0 -c_u_InvestmentFlowBlock_max(electricity_storage_7_22)_: -+1 flow(electricity_storage_7_22) --1 InvestmentFlowBlock_total(electricity_storage_7) -<= 0 +c_e_InvestmentFlowBlock_old_rule(electricity_storage_6)_: ++1 InvestmentFlowBlock_old(electricity_storage_6) +-1 InvestmentFlowBlock_old_end(electricity_storage_6) +-1 InvestmentFlowBlock_old_exo(electricity_storage_6) += 0 -c_u_InvestmentFlowBlock_max(electricity_storage_7_23)_: -+1 flow(electricity_storage_7_23) --1 InvestmentFlowBlock_total(electricity_storage_7) -<= 0 +c_e_InvestmentFlowBlock_old_rule(electricity_storage_7)_: ++1 InvestmentFlowBlock_old(electricity_storage_7) +-1 InvestmentFlowBlock_old_end(electricity_storage_7) +-1 InvestmentFlowBlock_old_exo(electricity_storage_7) += 0 c_u_InvestmentFlowBlock_max(storage_electricity_0_0)_: -+1 flow(storage_electricity_0_0) ++1 flow(storage_electricity_0) -1 InvestmentFlowBlock_total(storage_electricity_0) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_0_1)_: -+1 flow(storage_electricity_0_1) ++1 flow(storage_electricity_1) -1 InvestmentFlowBlock_total(storage_electricity_0) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_0_2)_: -+1 flow(storage_electricity_0_2) ++1 flow(storage_electricity_2) -1 InvestmentFlowBlock_total(storage_electricity_0) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_1_3)_: -+1 flow(storage_electricity_1_3) ++1 flow(storage_electricity_3) -1 InvestmentFlowBlock_total(storage_electricity_1) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_1_4)_: -+1 flow(storage_electricity_1_4) ++1 flow(storage_electricity_4) -1 InvestmentFlowBlock_total(storage_electricity_1) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_1_5)_: -+1 flow(storage_electricity_1_5) ++1 flow(storage_electricity_5) -1 InvestmentFlowBlock_total(storage_electricity_1) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_2_6)_: -+1 flow(storage_electricity_2_6) ++1 flow(storage_electricity_6) -1 InvestmentFlowBlock_total(storage_electricity_2) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_2_7)_: -+1 flow(storage_electricity_2_7) ++1 flow(storage_electricity_7) -1 InvestmentFlowBlock_total(storage_electricity_2) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_2_8)_: -+1 flow(storage_electricity_2_8) ++1 flow(storage_electricity_8) -1 InvestmentFlowBlock_total(storage_electricity_2) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_3_9)_: -+1 flow(storage_electricity_3_9) ++1 flow(storage_electricity_9) -1 InvestmentFlowBlock_total(storage_electricity_3) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_3_10)_: -+1 flow(storage_electricity_3_10) ++1 flow(storage_electricity_10) -1 InvestmentFlowBlock_total(storage_electricity_3) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_3_11)_: -+1 flow(storage_electricity_3_11) ++1 flow(storage_electricity_11) -1 InvestmentFlowBlock_total(storage_electricity_3) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_4_12)_: -+1 flow(storage_electricity_4_12) ++1 flow(storage_electricity_12) -1 InvestmentFlowBlock_total(storage_electricity_4) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_4_13)_: -+1 flow(storage_electricity_4_13) ++1 flow(storage_electricity_13) -1 InvestmentFlowBlock_total(storage_electricity_4) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_4_14)_: -+1 flow(storage_electricity_4_14) ++1 flow(storage_electricity_14) -1 InvestmentFlowBlock_total(storage_electricity_4) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_5_15)_: -+1 flow(storage_electricity_5_15) ++1 flow(storage_electricity_15) -1 InvestmentFlowBlock_total(storage_electricity_5) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_5_16)_: -+1 flow(storage_electricity_5_16) ++1 flow(storage_electricity_16) -1 InvestmentFlowBlock_total(storage_electricity_5) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_5_17)_: -+1 flow(storage_electricity_5_17) ++1 flow(storage_electricity_17) -1 InvestmentFlowBlock_total(storage_electricity_5) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_6_18)_: -+1 flow(storage_electricity_6_18) ++1 flow(storage_electricity_18) -1 InvestmentFlowBlock_total(storage_electricity_6) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_6_19)_: -+1 flow(storage_electricity_6_19) ++1 flow(storage_electricity_19) -1 InvestmentFlowBlock_total(storage_electricity_6) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_6_20)_: -+1 flow(storage_electricity_6_20) ++1 flow(storage_electricity_20) -1 InvestmentFlowBlock_total(storage_electricity_6) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_7_21)_: -+1 flow(storage_electricity_7_21) ++1 flow(storage_electricity_21) -1 InvestmentFlowBlock_total(storage_electricity_7) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_7_22)_: -+1 flow(storage_electricity_7_22) ++1 flow(storage_electricity_22) -1 InvestmentFlowBlock_total(storage_electricity_7) <= 0 c_u_InvestmentFlowBlock_max(storage_electricity_7_23)_: -+1 flow(storage_electricity_7_23) ++1 flow(storage_electricity_23) -1 InvestmentFlowBlock_total(storage_electricity_7) <= 0 -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_0)_: --1 GenericInvestmentStorageBlock_invest(storage_0) -+1 GenericInvestmentStorageBlock_total(storage_0) -= 0 +c_u_InvestmentFlowBlock_max(electricity_storage_0_0)_: ++1 flow(electricity_storage_0) +-1 InvestmentFlowBlock_total(electricity_storage_0) +<= 0 -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_1)_: --1 GenericInvestmentStorageBlock_invest(storage_1) --1 GenericInvestmentStorageBlock_total(storage_0) -+1 GenericInvestmentStorageBlock_total(storage_1) -+1 GenericInvestmentStorageBlock_old(storage_1) -= 0 +c_u_InvestmentFlowBlock_max(electricity_storage_0_1)_: ++1 flow(electricity_storage_1) +-1 InvestmentFlowBlock_total(electricity_storage_0) +<= 0 -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_2)_: --1 GenericInvestmentStorageBlock_invest(storage_2) --1 GenericInvestmentStorageBlock_total(storage_1) -+1 GenericInvestmentStorageBlock_total(storage_2) -+1 GenericInvestmentStorageBlock_old(storage_2) -= 0 +c_u_InvestmentFlowBlock_max(electricity_storage_0_2)_: ++1 flow(electricity_storage_2) +-1 InvestmentFlowBlock_total(electricity_storage_0) +<= 0 -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_3)_: --1 GenericInvestmentStorageBlock_invest(storage_3) --1 GenericInvestmentStorageBlock_total(storage_2) -+1 GenericInvestmentStorageBlock_total(storage_3) -+1 GenericInvestmentStorageBlock_old(storage_3) -= 0 +c_u_InvestmentFlowBlock_max(electricity_storage_1_3)_: ++1 flow(electricity_storage_3) +-1 InvestmentFlowBlock_total(electricity_storage_1) +<= 0 -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_4)_: --1 GenericInvestmentStorageBlock_invest(storage_4) --1 GenericInvestmentStorageBlock_total(storage_3) -+1 GenericInvestmentStorageBlock_total(storage_4) -+1 GenericInvestmentStorageBlock_old(storage_4) -= 0 +c_u_InvestmentFlowBlock_max(electricity_storage_1_4)_: ++1 flow(electricity_storage_4) +-1 InvestmentFlowBlock_total(electricity_storage_1) +<= 0 -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_5)_: --1 GenericInvestmentStorageBlock_invest(storage_5) --1 GenericInvestmentStorageBlock_total(storage_4) -+1 GenericInvestmentStorageBlock_total(storage_5) -+1 GenericInvestmentStorageBlock_old(storage_5) -= 0 +c_u_InvestmentFlowBlock_max(electricity_storage_1_5)_: ++1 flow(electricity_storage_5) +-1 InvestmentFlowBlock_total(electricity_storage_1) +<= 0 -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_6)_: --1 GenericInvestmentStorageBlock_invest(storage_6) --1 GenericInvestmentStorageBlock_total(storage_5) -+1 GenericInvestmentStorageBlock_total(storage_6) -+1 GenericInvestmentStorageBlock_old(storage_6) -= 0 +c_u_InvestmentFlowBlock_max(electricity_storage_2_6)_: ++1 flow(electricity_storage_6) +-1 InvestmentFlowBlock_total(electricity_storage_2) +<= 0 + +c_u_InvestmentFlowBlock_max(electricity_storage_2_7)_: ++1 flow(electricity_storage_7) +-1 InvestmentFlowBlock_total(electricity_storage_2) +<= 0 + +c_u_InvestmentFlowBlock_max(electricity_storage_2_8)_: ++1 flow(electricity_storage_8) +-1 InvestmentFlowBlock_total(electricity_storage_2) +<= 0 + +c_u_InvestmentFlowBlock_max(electricity_storage_3_9)_: ++1 flow(electricity_storage_9) +-1 InvestmentFlowBlock_total(electricity_storage_3) +<= 0 + +c_u_InvestmentFlowBlock_max(electricity_storage_3_10)_: ++1 flow(electricity_storage_10) +-1 InvestmentFlowBlock_total(electricity_storage_3) +<= 0 + +c_u_InvestmentFlowBlock_max(electricity_storage_3_11)_: ++1 flow(electricity_storage_11) +-1 InvestmentFlowBlock_total(electricity_storage_3) +<= 0 + +c_u_InvestmentFlowBlock_max(electricity_storage_4_12)_: ++1 flow(electricity_storage_12) +-1 InvestmentFlowBlock_total(electricity_storage_4) +<= 0 + +c_u_InvestmentFlowBlock_max(electricity_storage_4_13)_: ++1 flow(electricity_storage_13) +-1 InvestmentFlowBlock_total(electricity_storage_4) +<= 0 + +c_u_InvestmentFlowBlock_max(electricity_storage_4_14)_: ++1 flow(electricity_storage_14) +-1 InvestmentFlowBlock_total(electricity_storage_4) +<= 0 + +c_u_InvestmentFlowBlock_max(electricity_storage_5_15)_: ++1 flow(electricity_storage_15) +-1 InvestmentFlowBlock_total(electricity_storage_5) +<= 0 + +c_u_InvestmentFlowBlock_max(electricity_storage_5_16)_: ++1 flow(electricity_storage_16) +-1 InvestmentFlowBlock_total(electricity_storage_5) +<= 0 + +c_u_InvestmentFlowBlock_max(electricity_storage_5_17)_: ++1 flow(electricity_storage_17) +-1 InvestmentFlowBlock_total(electricity_storage_5) +<= 0 + +c_u_InvestmentFlowBlock_max(electricity_storage_6_18)_: ++1 flow(electricity_storage_18) +-1 InvestmentFlowBlock_total(electricity_storage_6) +<= 0 + +c_u_InvestmentFlowBlock_max(electricity_storage_6_19)_: ++1 flow(electricity_storage_19) +-1 InvestmentFlowBlock_total(electricity_storage_6) +<= 0 + +c_u_InvestmentFlowBlock_max(electricity_storage_6_20)_: ++1 flow(electricity_storage_20) +-1 InvestmentFlowBlock_total(electricity_storage_6) +<= 0 + +c_u_InvestmentFlowBlock_max(electricity_storage_7_21)_: ++1 flow(electricity_storage_21) +-1 InvestmentFlowBlock_total(electricity_storage_7) +<= 0 + +c_u_InvestmentFlowBlock_max(electricity_storage_7_22)_: ++1 flow(electricity_storage_22) +-1 InvestmentFlowBlock_total(electricity_storage_7) +<= 0 + +c_u_InvestmentFlowBlock_max(electricity_storage_7_23)_: ++1 flow(electricity_storage_23) +-1 InvestmentFlowBlock_total(electricity_storage_7) +<= 0 + +c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_0)_: +-1 GenericInvestmentStorageBlock_invest(storage_0) ++1 GenericInvestmentStorageBlock_total(storage_0) += 0 + +c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_1)_: +-1 GenericInvestmentStorageBlock_invest(storage_1) +-1 GenericInvestmentStorageBlock_total(storage_0) ++1 GenericInvestmentStorageBlock_total(storage_1) ++1 GenericInvestmentStorageBlock_old(storage_1) += 0 + +c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_2)_: +-1 GenericInvestmentStorageBlock_invest(storage_2) +-1 GenericInvestmentStorageBlock_total(storage_1) ++1 GenericInvestmentStorageBlock_total(storage_2) ++1 GenericInvestmentStorageBlock_old(storage_2) += 0 + +c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_3)_: +-1 GenericInvestmentStorageBlock_invest(storage_3) +-1 GenericInvestmentStorageBlock_total(storage_2) ++1 GenericInvestmentStorageBlock_total(storage_3) ++1 GenericInvestmentStorageBlock_old(storage_3) += 0 + +c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_4)_: +-1 GenericInvestmentStorageBlock_invest(storage_4) +-1 GenericInvestmentStorageBlock_total(storage_3) ++1 GenericInvestmentStorageBlock_total(storage_4) ++1 GenericInvestmentStorageBlock_old(storage_4) += 0 + +c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_5)_: +-1 GenericInvestmentStorageBlock_invest(storage_5) +-1 GenericInvestmentStorageBlock_total(storage_4) ++1 GenericInvestmentStorageBlock_total(storage_5) ++1 GenericInvestmentStorageBlock_old(storage_5) += 0 + +c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_6)_: +-1 GenericInvestmentStorageBlock_invest(storage_6) +-1 GenericInvestmentStorageBlock_total(storage_5) ++1 GenericInvestmentStorageBlock_total(storage_6) ++1 GenericInvestmentStorageBlock_old(storage_6) += 0 c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_7)_: -1 GenericInvestmentStorageBlock_invest(storage_7) @@ -1870,9 +1870,9 @@ c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_7)_: = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage_0)_: ++1 GenericInvestmentStorageBlock_old(storage_0) -1 GenericInvestmentStorageBlock_old_end(storage_0) -1 GenericInvestmentStorageBlock_old_exo(storage_0) -+1 GenericInvestmentStorageBlock_old(storage_0) = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage_1)_: @@ -1922,204 +1922,204 @@ c_e_GenericInvestmentStorageBlock_initially_empty(storage_0)_: = 0 c_e_GenericInvestmentStorageBlock_balance(storage_0_1)_: -+1 flow(storage_electricity_0_1) --1 flow(electricity_storage_0_1) +-1 flow(electricity_storage_1) ++1 flow(storage_electricity_1) -1 GenericInvestmentStorageBlock_storage_content(storage_0) +1 GenericInvestmentStorageBlock_storage_content(storage_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_0_2)_: -+1 flow(storage_electricity_0_2) --1 flow(electricity_storage_0_2) +-1 flow(electricity_storage_2) ++1 flow(storage_electricity_2) -1 GenericInvestmentStorageBlock_storage_content(storage_1) +1 GenericInvestmentStorageBlock_storage_content(storage_2) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_1_3)_: -+1 flow(storage_electricity_1_3) --1 flow(electricity_storage_1_3) +-1 flow(electricity_storage_3) ++1 flow(storage_electricity_3) -1 GenericInvestmentStorageBlock_storage_content(storage_2) +1 GenericInvestmentStorageBlock_storage_content(storage_3) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_1_4)_: -+1 flow(storage_electricity_1_4) --1 flow(electricity_storage_1_4) +-1 flow(electricity_storage_4) ++1 flow(storage_electricity_4) -1 GenericInvestmentStorageBlock_storage_content(storage_3) +1 GenericInvestmentStorageBlock_storage_content(storage_4) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_1_5)_: -+1 flow(storage_electricity_1_5) --1 flow(electricity_storage_1_5) +-1 flow(electricity_storage_5) ++1 flow(storage_electricity_5) -1 GenericInvestmentStorageBlock_storage_content(storage_4) +1 GenericInvestmentStorageBlock_storage_content(storage_5) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_2_6)_: -+1 flow(storage_electricity_2_6) --1 flow(electricity_storage_2_6) +-1 flow(electricity_storage_6) ++1 flow(storage_electricity_6) -1 GenericInvestmentStorageBlock_storage_content(storage_5) +1 GenericInvestmentStorageBlock_storage_content(storage_6) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_2_7)_: -+1 flow(storage_electricity_2_7) --1 flow(electricity_storage_2_7) +-1 flow(electricity_storage_7) ++1 flow(storage_electricity_7) -1 GenericInvestmentStorageBlock_storage_content(storage_6) +1 GenericInvestmentStorageBlock_storage_content(storage_7) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_2_8)_: -+1 flow(storage_electricity_2_8) --1 flow(electricity_storage_2_8) +-1 flow(electricity_storage_8) ++1 flow(storage_electricity_8) -1 GenericInvestmentStorageBlock_storage_content(storage_7) +1 GenericInvestmentStorageBlock_storage_content(storage_8) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_3_9)_: -+1 flow(storage_electricity_3_9) --1 flow(electricity_storage_3_9) +-1 flow(electricity_storage_9) ++1 flow(storage_electricity_9) -1 GenericInvestmentStorageBlock_storage_content(storage_8) +1 GenericInvestmentStorageBlock_storage_content(storage_9) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_3_10)_: -+1 flow(storage_electricity_3_10) --1 flow(electricity_storage_3_10) +-1 flow(electricity_storage_10) ++1 flow(storage_electricity_10) -1 GenericInvestmentStorageBlock_storage_content(storage_9) +1 GenericInvestmentStorageBlock_storage_content(storage_10) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_3_11)_: -+1 flow(storage_electricity_3_11) --1 flow(electricity_storage_3_11) +-1 flow(electricity_storage_11) ++1 flow(storage_electricity_11) -1 GenericInvestmentStorageBlock_storage_content(storage_10) +1 GenericInvestmentStorageBlock_storage_content(storage_11) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_4_12)_: -+1 flow(storage_electricity_4_12) --1 flow(electricity_storage_4_12) +-1 flow(electricity_storage_12) ++1 flow(storage_electricity_12) -1 GenericInvestmentStorageBlock_storage_content(storage_11) +1 GenericInvestmentStorageBlock_storage_content(storage_12) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_4_13)_: -+1 flow(storage_electricity_4_13) --1 flow(electricity_storage_4_13) +-1 flow(electricity_storage_13) ++1 flow(storage_electricity_13) -1 GenericInvestmentStorageBlock_storage_content(storage_12) +1 GenericInvestmentStorageBlock_storage_content(storage_13) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_4_14)_: -+1 flow(storage_electricity_4_14) --1 flow(electricity_storage_4_14) +-1 flow(electricity_storage_14) ++1 flow(storage_electricity_14) -1 GenericInvestmentStorageBlock_storage_content(storage_13) +1 GenericInvestmentStorageBlock_storage_content(storage_14) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_5_15)_: -+1 flow(storage_electricity_5_15) --1 flow(electricity_storage_5_15) +-1 flow(electricity_storage_15) ++1 flow(storage_electricity_15) -1 GenericInvestmentStorageBlock_storage_content(storage_14) +1 GenericInvestmentStorageBlock_storage_content(storage_15) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_5_16)_: -+1 flow(storage_electricity_5_16) --1 flow(electricity_storage_5_16) +-1 flow(electricity_storage_16) ++1 flow(storage_electricity_16) -1 GenericInvestmentStorageBlock_storage_content(storage_15) +1 GenericInvestmentStorageBlock_storage_content(storage_16) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_5_17)_: -+1 flow(storage_electricity_5_17) --1 flow(electricity_storage_5_17) +-1 flow(electricity_storage_17) ++1 flow(storage_electricity_17) -1 GenericInvestmentStorageBlock_storage_content(storage_16) +1 GenericInvestmentStorageBlock_storage_content(storage_17) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_6_18)_: -+1 flow(storage_electricity_6_18) --1 flow(electricity_storage_6_18) +-1 flow(electricity_storage_18) ++1 flow(storage_electricity_18) -1 GenericInvestmentStorageBlock_storage_content(storage_17) +1 GenericInvestmentStorageBlock_storage_content(storage_18) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_6_19)_: -+1 flow(storage_electricity_6_19) --1 flow(electricity_storage_6_19) +-1 flow(electricity_storage_19) ++1 flow(storage_electricity_19) -1 GenericInvestmentStorageBlock_storage_content(storage_18) +1 GenericInvestmentStorageBlock_storage_content(storage_19) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_6_20)_: -+1 flow(storage_electricity_6_20) --1 flow(electricity_storage_6_20) +-1 flow(electricity_storage_20) ++1 flow(storage_electricity_20) -1 GenericInvestmentStorageBlock_storage_content(storage_19) +1 GenericInvestmentStorageBlock_storage_content(storage_20) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_7_21)_: -+1 flow(storage_electricity_7_21) --1 flow(electricity_storage_7_21) +-1 flow(electricity_storage_21) ++1 flow(storage_electricity_21) -1 GenericInvestmentStorageBlock_storage_content(storage_20) +1 GenericInvestmentStorageBlock_storage_content(storage_21) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_7_22)_: -+1 flow(storage_electricity_7_22) --1 flow(electricity_storage_7_22) +-1 flow(electricity_storage_22) ++1 flow(storage_electricity_22) -1 GenericInvestmentStorageBlock_storage_content(storage_21) +1 GenericInvestmentStorageBlock_storage_content(storage_22) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_7_23)_: -+1 flow(storage_electricity_7_23) --1 flow(electricity_storage_7_23) +-1 flow(electricity_storage_23) ++1 flow(storage_electricity_23) -1 GenericInvestmentStorageBlock_storage_content(storage_22) +1 GenericInvestmentStorageBlock_storage_content(storage_23) = 0 c_e_GenericInvestmentStorageBlock_power_coupled(storage_0)_: --1 InvestmentFlowBlock_total(electricity_storage_0) +1 InvestmentFlowBlock_total(storage_electricity_0) +-1 InvestmentFlowBlock_total(electricity_storage_0) = 0 c_e_GenericInvestmentStorageBlock_power_coupled(storage_1)_: --1 InvestmentFlowBlock_total(electricity_storage_1) +1 InvestmentFlowBlock_total(storage_electricity_1) +-1 InvestmentFlowBlock_total(electricity_storage_1) = 0 c_e_GenericInvestmentStorageBlock_power_coupled(storage_2)_: --1 InvestmentFlowBlock_total(electricity_storage_2) +1 InvestmentFlowBlock_total(storage_electricity_2) +-1 InvestmentFlowBlock_total(electricity_storage_2) = 0 c_e_GenericInvestmentStorageBlock_power_coupled(storage_3)_: --1 InvestmentFlowBlock_total(electricity_storage_3) +1 InvestmentFlowBlock_total(storage_electricity_3) +-1 InvestmentFlowBlock_total(electricity_storage_3) = 0 c_e_GenericInvestmentStorageBlock_power_coupled(storage_4)_: --1 InvestmentFlowBlock_total(electricity_storage_4) +1 InvestmentFlowBlock_total(storage_electricity_4) +-1 InvestmentFlowBlock_total(electricity_storage_4) = 0 c_e_GenericInvestmentStorageBlock_power_coupled(storage_5)_: --1 InvestmentFlowBlock_total(electricity_storage_5) +1 InvestmentFlowBlock_total(storage_electricity_5) +-1 InvestmentFlowBlock_total(electricity_storage_5) = 0 c_e_GenericInvestmentStorageBlock_power_coupled(storage_6)_: --1 InvestmentFlowBlock_total(electricity_storage_6) +1 InvestmentFlowBlock_total(storage_electricity_6) +-1 InvestmentFlowBlock_total(electricity_storage_6) = 0 c_e_GenericInvestmentStorageBlock_power_coupled(storage_7)_: --1 InvestmentFlowBlock_total(electricity_storage_7) +1 InvestmentFlowBlock_total(storage_electricity_7) +-1 InvestmentFlowBlock_total(electricity_storage_7) = 0 c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_0)_: @@ -2408,9 +2408,9 @@ c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(demand_dsm_diw_7)_: = 0 c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(demand_dsm_diw_0)_: ++1 SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_0) -1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_0) -1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_0) -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_0) = 0 c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(demand_dsm_diw_1)_: @@ -2460,379 +2460,379 @@ c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_0_0)_: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_0) -1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_0) -+1 flow(electricity_demand_dsm_diw_0_0) ++1 flow(electricity_demand_dsm_diw_0) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_0_1)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_1) -+1 flow(electricity_demand_dsm_diw_0_1) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_1) ++1 flow(electricity_demand_dsm_diw_1) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_0_2)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_2) -+1 flow(electricity_demand_dsm_diw_0_2) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_2) ++1 flow(electricity_demand_dsm_diw_2) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_1_3)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_3) -+1 flow(electricity_demand_dsm_diw_1_3) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_3) ++1 flow(electricity_demand_dsm_diw_3) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_1_4)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_4) -+1 flow(electricity_demand_dsm_diw_1_4) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_4) ++1 flow(electricity_demand_dsm_diw_4) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_1_5)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_5) -+1 flow(electricity_demand_dsm_diw_1_5) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_5) ++1 flow(electricity_demand_dsm_diw_5) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_2_6)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_6) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_6) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_6) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_6) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_6) -+1 flow(electricity_demand_dsm_diw_2_6) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_6) ++1 flow(electricity_demand_dsm_diw_6) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_2_7)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_7) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_7) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_7) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_7) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_7) -+1 flow(electricity_demand_dsm_diw_2_7) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_7) ++1 flow(electricity_demand_dsm_diw_7) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_2_8)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_8) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_8) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_8) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_8) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_8) -+1 flow(electricity_demand_dsm_diw_2_8) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_8) ++1 flow(electricity_demand_dsm_diw_8) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_3_9)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_9) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_9) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_9) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_9) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_9) -+1 flow(electricity_demand_dsm_diw_3_9) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_9) ++1 flow(electricity_demand_dsm_diw_9) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_3_10)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_10) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_10) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_10) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_10) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_10) -+1 flow(electricity_demand_dsm_diw_3_10) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_10) ++1 flow(electricity_demand_dsm_diw_10) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_3_11)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_11) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_11) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_11) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_11) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_11) -+1 flow(electricity_demand_dsm_diw_3_11) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_11) ++1 flow(electricity_demand_dsm_diw_11) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_4_12)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_12) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_12) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_12) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_12) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_12) -+1 flow(electricity_demand_dsm_diw_4_12) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_12) ++1 flow(electricity_demand_dsm_diw_12) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_4_13)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_13) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_13) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_13) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_13) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_13) -+1 flow(electricity_demand_dsm_diw_4_13) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_13) ++1 flow(electricity_demand_dsm_diw_13) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_4_14)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_14) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_14) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_14) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_14) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_14) -+1 flow(electricity_demand_dsm_diw_4_14) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_14) ++1 flow(electricity_demand_dsm_diw_14) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_5_15)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_15) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_15) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_15) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_15) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_15) -+1 flow(electricity_demand_dsm_diw_5_15) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_15) ++1 flow(electricity_demand_dsm_diw_15) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_5_16)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_16) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_16) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_16) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_16) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_16) -+1 flow(electricity_demand_dsm_diw_5_16) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_16) ++1 flow(electricity_demand_dsm_diw_16) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_5_17)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_17) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_17) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_17) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_17) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_17) -+1 flow(electricity_demand_dsm_diw_5_17) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_17) ++1 flow(electricity_demand_dsm_diw_17) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_6_18)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_18) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_18) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_18) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_18) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_18) -+1 flow(electricity_demand_dsm_diw_6_18) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_18) ++1 flow(electricity_demand_dsm_diw_18) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_6_19)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_19) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_19) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_19) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_19) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_19) -+1 flow(electricity_demand_dsm_diw_6_19) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_19) ++1 flow(electricity_demand_dsm_diw_19) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_6_20)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_20) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_20) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_20) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_20) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_20) -+1 flow(electricity_demand_dsm_diw_6_20) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_20) ++1 flow(electricity_demand_dsm_diw_20) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_7_21)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_21) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_21) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_21) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_21) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_21) -+1 flow(electricity_demand_dsm_diw_7_21) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_21) ++1 flow(electricity_demand_dsm_diw_21) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_7_22)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_22) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_22) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_22) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_22) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_22) -+1 flow(electricity_demand_dsm_diw_7_22) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_22) ++1 flow(electricity_demand_dsm_diw_22) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_7_23)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_23) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_23) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_23) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_23) -+1 flow(electricity_demand_dsm_diw_7_23) +-1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_23) ++1 flow(electricity_demand_dsm_diw_23) = 1 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_0)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_0) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_0) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_1) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_0) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_1)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_0) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_1) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_1) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_2) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_1) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_2)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_1) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_2) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_2) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_3) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_2) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_3)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_2) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_3) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_3) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_4) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_3) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_4)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_3) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_4) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_4) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_5) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_4) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_5)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_4) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_5) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_5) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_6) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_5) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_6)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_5) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_6) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_6) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_7) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_6) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_7)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_6) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_7) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_7) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_8) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_7) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_8)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_7) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_8) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_8) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_9) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_8) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_9)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_8) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_9) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_9) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_10) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_9) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_10)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_9) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_10) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_10) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_11) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_10) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_11)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_10) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_11) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_11) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_12) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_11) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_12)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_11) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_12) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_12) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_13) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_12) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_13)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_12) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_13) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_13) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_14) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_13) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_14)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_13) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_14) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_14) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_15) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_14) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_15)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_14) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_15) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_15) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_16) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_15) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_16)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_15) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_16) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_16) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_17) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_16) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_17)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_16) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_17) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_17) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_18) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_17) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_18)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_17) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_18) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_18) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_19) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_18) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_19)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_18) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_19) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_19) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_20) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_19) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_20)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_19) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_20) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_20) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_21) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_20) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_21)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_20) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_21) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_21) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_22) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_21) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_22)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_21) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_22) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_22) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_23) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_22) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(demand_dsm_diw_23)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_22) -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_23) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_23) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_23) = 0 c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_0_0)_: @@ -3154,208 +3154,208 @@ c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_0_0)_: <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_0_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_1) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_1) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_0) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_0_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_2) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_2) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_0) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_1_3)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_3) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_3) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_1) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_1_4)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_4) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_4) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_1) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_1_5)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_5) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_5) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_1) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_2_6)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_6) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_6) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_6) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_6) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_6) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_6) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_2) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_2_7)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_7) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_7) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_7) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_7) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_7) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_7) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_2) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_2_8)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_8) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_8) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_8) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_8) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_8) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_8) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_2) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_3_9)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_9) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_9) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_9) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_9) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_9) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_9) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_3) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_3_10)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_10) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_10) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_10) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_10) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_10) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_10) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_3) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_3_11)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_11) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_11) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_11) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_11) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_11) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_11) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_3) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_4_12)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_12) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_12) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_12) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_12) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_12) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_12) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_4) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_4_13)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_13) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_13) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_13) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_13) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_13) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_13) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_4) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_4_14)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_14) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_14) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_14) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_14) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_14) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_14) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_4) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_5_15)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_15) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_15) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_15) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_15) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_15) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_15) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_5) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_5_16)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_16) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_16) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_16) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_16) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_16) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_16) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_5) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_5_17)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_17) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_17) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_17) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_17) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_17) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_17) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_5) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_6_18)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_18) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_18) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_18) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_18) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_18) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_18) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_6) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_6_19)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_19) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_19) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_19) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_19) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_19) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_19) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_6) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_6_20)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_20) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_20) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_20) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_20) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_20) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_20) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_6) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_7_21)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_21) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_21) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_21) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_21) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_21) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_21) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_7) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_7_22)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_22) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_22) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_22) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_22) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_22) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_22) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_7) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_7_23)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_23) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_23) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_23) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_23) ++1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_23) -0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_7) <= 0 @@ -3664,9 +3664,9 @@ c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(demand_dsm_dlr_7)_: = 0 c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(demand_dsm_dlr_0)_: ++1 SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_0) -1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_0) -1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_0) -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_0) = 0 c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(demand_dsm_dlr_1)_: @@ -3713,314 +3713,314 @@ c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(demand_dsm_dlr_7)_: c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_0_0)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_0) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_0) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_0) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_0) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_0) -+1 flow(electricity_demand_dsm_dlr_0_0) ++1 flow(electricity_demand_dsm_dlr_0) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_0_1)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_1) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_1) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_1) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_1) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_1) -+1 flow(electricity_demand_dsm_dlr_0_1) ++1 flow(electricity_demand_dsm_dlr_1) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_0_2)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_2) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_2) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_2) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_2) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_2) -+1 flow(electricity_demand_dsm_dlr_0_2) ++1 flow(electricity_demand_dsm_dlr_2) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_1_3)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_3) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_3) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_3) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_3) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_3) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_3) -+1 flow(electricity_demand_dsm_dlr_1_3) ++1 flow(electricity_demand_dsm_dlr_3) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_1_4)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_4) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_4) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_4) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_4) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_4) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_4) -+1 flow(electricity_demand_dsm_dlr_1_4) ++1 flow(electricity_demand_dsm_dlr_4) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_1_5)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_5) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_5) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_5) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_5) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_5) -+1 flow(electricity_demand_dsm_dlr_1_5) ++1 flow(electricity_demand_dsm_dlr_5) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_2_6)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_6) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_6) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_6) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_6) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_6) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_6) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_6) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_6) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_6) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_6) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_6) -+1 flow(electricity_demand_dsm_dlr_2_6) ++1 flow(electricity_demand_dsm_dlr_6) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_2_7)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_7) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_7) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_7) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_7) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_7) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_7) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_7) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_7) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_7) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_7) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_7) -+1 flow(electricity_demand_dsm_dlr_2_7) ++1 flow(electricity_demand_dsm_dlr_7) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_2_8)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_8) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_8) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_8) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_8) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_8) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_8) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_8) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_8) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_8) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_8) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_8) -+1 flow(electricity_demand_dsm_dlr_2_8) ++1 flow(electricity_demand_dsm_dlr_8) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_3_9)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_9) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_9) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_9) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_9) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_9) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_9) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_9) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_9) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_9) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_9) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_9) -+1 flow(electricity_demand_dsm_dlr_3_9) ++1 flow(electricity_demand_dsm_dlr_9) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_3_10)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_10) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_10) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_10) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_10) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_10) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_10) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_10) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_10) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_10) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_10) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_10) -+1 flow(electricity_demand_dsm_dlr_3_10) ++1 flow(electricity_demand_dsm_dlr_10) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_3_11)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_11) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_11) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_11) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_11) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_11) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_11) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_11) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_11) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_11) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_11) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_11) -+1 flow(electricity_demand_dsm_dlr_3_11) ++1 flow(electricity_demand_dsm_dlr_11) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_4_12)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_12) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_12) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_12) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_12) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_12) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_12) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_12) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_12) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_12) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_12) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_12) -+1 flow(electricity_demand_dsm_dlr_4_12) ++1 flow(electricity_demand_dsm_dlr_12) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_4_13)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_13) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_13) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_13) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_13) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_13) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_13) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_13) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_13) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_13) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_13) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_13) -+1 flow(electricity_demand_dsm_dlr_4_13) ++1 flow(electricity_demand_dsm_dlr_13) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_4_14)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_14) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_14) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_14) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_14) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_14) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_14) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_14) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_14) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_14) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_14) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_14) -+1 flow(electricity_demand_dsm_dlr_4_14) ++1 flow(electricity_demand_dsm_dlr_14) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_5_15)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_15) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_15) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_15) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_15) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_15) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_15) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_15) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_15) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_15) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_15) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_15) -+1 flow(electricity_demand_dsm_dlr_5_15) ++1 flow(electricity_demand_dsm_dlr_15) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_5_16)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_16) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_16) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_16) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_16) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_16) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_16) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_16) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_16) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_16) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_16) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_16) -+1 flow(electricity_demand_dsm_dlr_5_16) ++1 flow(electricity_demand_dsm_dlr_16) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_5_17)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_17) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_17) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_17) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_17) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_17) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_17) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_17) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_17) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_17) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_17) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_17) -+1 flow(electricity_demand_dsm_dlr_5_17) ++1 flow(electricity_demand_dsm_dlr_17) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_6_18)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_18) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_18) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_18) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_18) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_18) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_18) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_18) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_18) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_18) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_18) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_18) -+1 flow(electricity_demand_dsm_dlr_6_18) ++1 flow(electricity_demand_dsm_dlr_18) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_6_19)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_19) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_19) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_19) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_19) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_19) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_19) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_19) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_19) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_19) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_19) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_19) -+1 flow(electricity_demand_dsm_dlr_6_19) ++1 flow(electricity_demand_dsm_dlr_19) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_6_20)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_20) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_20) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_20) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_20) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_20) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_20) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_20) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_20) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_20) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_20) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_20) -+1 flow(electricity_demand_dsm_dlr_6_20) ++1 flow(electricity_demand_dsm_dlr_20) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_7_21)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_21) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_21) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_21) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_21) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_21) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_21) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_21) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_21) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_21) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_21) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_21) -+1 flow(electricity_demand_dsm_dlr_7_21) ++1 flow(electricity_demand_dsm_dlr_21) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_7_22)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_22) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_22) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_22) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_22) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_22) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_22) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_22) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_22) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_22) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_22) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_22) -+1 flow(electricity_demand_dsm_dlr_7_22) ++1 flow(electricity_demand_dsm_dlr_22) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(demand_dsm_dlr_7_23)_: -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_23) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_23) -1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_23) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_23) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_23) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_23) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_23) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_23) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_23) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_23) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_23) -+1 flow(electricity_demand_dsm_dlr_7_23) ++1 flow(electricity_demand_dsm_dlr_23) = 1 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_0)_: @@ -4028,118 +4028,118 @@ c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_0)_: = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_1)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_1) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_0) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_2) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_1) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_3)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_3) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_2) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_4)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_4) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_3) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_5)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_5) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_4) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_6)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_6) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_5) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_7)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_6) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_7) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_6) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_8)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_7) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_8) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_7) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_9)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_8) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_9) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_8) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_10)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_9) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_10) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_9) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_11)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_10) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_11) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_10) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_12)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_11) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_12) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_11) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_13)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_12) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_13) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_12) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_14)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_13) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_14) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_13) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_15)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_14) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_15) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_14) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_16)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_15) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_16) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_15) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_17)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_16) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_17) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_16) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_18)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_17) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_18) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_17) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_19)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_18) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_19) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_18) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_20)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_19) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_20) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_19) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_21)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_20) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_21) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_20) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_22)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_21) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_22) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_21) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_23)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_22) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_23) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_22) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_0)_: @@ -4147,113 +4147,113 @@ c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_0)_: = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_2) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_0) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_3)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_3) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_1) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_4)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_4) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_2) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_5)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_5) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_3) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_6)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_6) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_4) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_7)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_7) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_5) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_8)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_6) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_8) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_6) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_9)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_7) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_9) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_7) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_10)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_8) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_10) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_8) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_11)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_9) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_11) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_9) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_12)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_10) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_12) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_10) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_13)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_11) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_13) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_11) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_14)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_12) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_14) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_12) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_15)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_13) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_15) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_13) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_16)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_14) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_16) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_14) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_17)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_15) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_17) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_15) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_18)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_16) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_18) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_16) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_19)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_17) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_19) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_17) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_20)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_18) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_20) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_18) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_21)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_19) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_21) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_19) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_22)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_20) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_22) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_20) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_23)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_21) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_23) +-1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_21) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_0)_: @@ -4515,8 +4515,8 @@ c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(demand_dsm_dlr_2_23)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_0) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) @@ -4524,8 +4524,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_0_0)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_0_1)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_1) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) @@ -4533,8 +4533,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_0_1)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_0_2)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_2) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) @@ -4542,8 +4542,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_0_2)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_1_3)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_3) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_3) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) @@ -4551,8 +4551,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_1_3)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_1_4)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_4) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_4) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) @@ -4560,8 +4560,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_1_4)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_1_5)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_5) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) @@ -4569,8 +4569,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_1_5)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_2_6)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_6) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_6) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_6) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_6) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_6) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_6) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) @@ -4578,8 +4578,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_2_6)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_2_7)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_7) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_7) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_7) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_7) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_7) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_7) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) @@ -4587,8 +4587,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_2_7)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_2_8)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_8) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_8) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_8) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_8) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_8) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_8) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) @@ -4596,8 +4596,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_2_8)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_3_9)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_9) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_9) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_9) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_9) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_9) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_9) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) @@ -4605,8 +4605,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_3_9)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_3_10)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_10) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_10) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_10) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_10) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_10) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_10) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) @@ -4614,8 +4614,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_3_10)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_3_11)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_11) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_11) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_11) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_11) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_11) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_11) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) @@ -4623,8 +4623,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_3_11)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_4_12)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_12) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_12) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_12) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_12) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_12) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_12) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) @@ -4632,8 +4632,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_4_12)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_4_13)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_13) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_13) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_13) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_13) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_13) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_13) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) @@ -4641,8 +4641,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_4_13)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_4_14)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_14) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_14) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_14) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_14) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_14) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_14) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) @@ -4650,8 +4650,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_4_14)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_5_15)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_15) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_15) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_15) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_15) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_15) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_15) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) @@ -4659,8 +4659,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_5_15)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_5_16)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_16) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_16) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_16) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_16) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_16) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_16) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) @@ -4668,8 +4668,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_5_16)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_5_17)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_17) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_17) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_17) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_17) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_17) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_17) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) @@ -4677,8 +4677,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_5_17)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_6_18)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_18) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_18) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_18) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_18) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_18) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_18) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) @@ -4686,8 +4686,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_6_18)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_6_19)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_19) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_19) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_19) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_19) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_19) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_19) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) @@ -4695,8 +4695,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_6_19)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_6_20)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_20) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_20) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_20) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_20) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_20) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_20) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) @@ -4704,8 +4704,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_6_20)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_7_21)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_21) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_21) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_21) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_21) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_21) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_21) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) @@ -4713,8 +4713,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_7_21)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_7_22)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_22) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_22) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_22) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_22) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_22) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_22) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) @@ -4722,8 +4722,8 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_7_22)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_7_23)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_23) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_23) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_23) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_23) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_23) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_23) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) @@ -4731,192 +4731,192 @@ c_u_SinkDSMDLRInvestmentBlock_availability_red(demand_dsm_dlr_7_23)_: c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_0) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_0_1)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_1) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_0_2)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_2) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_1_3)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_3) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_3) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_1_4)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_4) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_4) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_1_5)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_5) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_2_6)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_6) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_6) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_6) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_6) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_6) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_2_7)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_7) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_7) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_7) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_7) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_7) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_2_8)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_8) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_8) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_8) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_8) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_8) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_3_9)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_9) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_9) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_9) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_9) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_9) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_3_10)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_10) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_10) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_10) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_10) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_10) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_3_11)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_11) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_11) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_11) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_11) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_11) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_4_12)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_12) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_12) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_12) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_12) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_12) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_4_13)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_13) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_13) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_13) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_13) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_13) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_4_14)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_14) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_14) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_14) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_14) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_14) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_5_15)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_15) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_15) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_15) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_15) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_15) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_5_16)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_16) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_16) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_16) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_16) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_16) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_5_17)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_17) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_17) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_17) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_17) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_17) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_6_18)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_18) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_18) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_18) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_18) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_18) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_6_19)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_19) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_19) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_19) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_19) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_19) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_6_20)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_20) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_20) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_20) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_20) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_20) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_7_21)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_21) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_21) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_21) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_21) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_21) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_7_22)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_22) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_22) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_22) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_22) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_22) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(demand_dsm_dlr_7_23)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_23) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_23) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_23) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_23) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_23) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) <= 0 @@ -5645,12 +5645,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_dlr_7)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_0) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_0) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) @@ -5658,12 +5658,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_0_0)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_0_1)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_1) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) @@ -5671,12 +5671,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_0_1)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_0_2)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_2) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) @@ -5684,12 +5684,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_0_2)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_1_3)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_3) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_3) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_3) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) @@ -5697,12 +5697,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_1_3)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_1_4)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_4) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_4) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_4) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) @@ -5710,12 +5710,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_1_4)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_1_5)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_5) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) @@ -5723,12 +5723,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_1_5)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_2_6)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_6) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_6) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_6) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_6) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_6) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_6) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_6) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_6) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_6) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_6) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_6) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) @@ -5736,12 +5736,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_2_6)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_2_7)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_7) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_7) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_7) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_7) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_7) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_7) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_7) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_7) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_7) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_7) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_7) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) @@ -5749,12 +5749,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_2_7)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_2_8)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_8) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_8) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_8) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_8) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_8) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_8) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_8) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_8) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_8) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_8) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_8) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) @@ -5762,12 +5762,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_2_8)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_3_9)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_9) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_9) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_9) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_9) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_9) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_9) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_9) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_9) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_9) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_9) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_9) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) @@ -5775,12 +5775,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_3_9)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_3_10)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_10) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_10) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_10) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_10) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_10) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_10) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_10) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_10) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_10) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_10) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_10) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) @@ -5788,12 +5788,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_3_10)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_3_11)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_11) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_11) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_11) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_11) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_11) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_11) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_11) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_11) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_11) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_11) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_11) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) @@ -5801,12 +5801,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_3_11)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_4_12)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_12) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_12) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_12) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_12) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_12) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_12) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_12) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_12) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_12) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_12) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_12) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) @@ -5814,12 +5814,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_4_12)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_4_13)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_13) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_13) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_13) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_13) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_13) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_13) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_13) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_13) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_13) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_13) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_13) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) @@ -5827,12 +5827,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_4_13)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_4_14)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_14) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_14) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_14) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_14) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_14) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_14) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_14) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_14) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_14) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_14) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_14) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) @@ -5840,12 +5840,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_4_14)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_5_15)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_15) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_15) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_15) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_15) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_15) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_15) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_15) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_15) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_15) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_15) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_15) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) @@ -5853,12 +5853,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_5_15)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_5_16)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_16) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_16) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_16) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_16) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_16) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_16) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_16) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_16) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_16) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_16) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_16) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) @@ -5866,12 +5866,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_5_16)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_5_17)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_17) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_17) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_17) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_17) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_17) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_17) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_17) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_17) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_17) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_17) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_17) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) @@ -5879,12 +5879,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_5_17)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_6_18)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_18) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_18) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_18) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_18) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_18) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_18) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_18) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_18) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_18) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_18) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_18) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) @@ -5892,12 +5892,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_6_18)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_6_19)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_19) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_19) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_19) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_19) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_19) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_19) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_19) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_19) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_19) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_19) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_19) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) @@ -5905,12 +5905,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_6_19)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_6_20)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_20) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_20) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_20) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_20) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_20) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_20) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_20) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_20) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_20) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_20) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_20) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) @@ -5918,12 +5918,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_6_20)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_7_21)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_21) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_21) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_21) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_21) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_21) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_21) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_21) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_21) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_21) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_21) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_21) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) @@ -5931,12 +5931,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_7_21)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_7_22)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_22) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_22) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_22) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_22) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_22) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_22) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_22) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_22) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_22) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_22) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_22) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) @@ -5944,12 +5944,12 @@ c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_7_22)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(demand_dsm_dlr_7_23)_: +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_23) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_23) +1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_23) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_23) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_23) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_23) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_23) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_23) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_23) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_23) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_23) -0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) @@ -6117,9 +6117,9 @@ c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(demand_dsm_oemof_7)_: = 0 c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(demand_dsm_oemof_0)_: ++1 SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_0) -1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_0) -1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_0) -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_0) = 0 c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(demand_dsm_oemof_1)_: @@ -6168,168 +6168,168 @@ c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_0_0)_: +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_0) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_0) -1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_0) -+1 flow(electricity_demand_dsm_oemof_0_0) ++1 flow(electricity_demand_dsm_oemof_0) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_0_1)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_1) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_1) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_1) -+1 flow(electricity_demand_dsm_oemof_0_1) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_1) ++1 flow(electricity_demand_dsm_oemof_1) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_0_2)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_2) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_2) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_2) -+1 flow(electricity_demand_dsm_oemof_0_2) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_2) ++1 flow(electricity_demand_dsm_oemof_2) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_1_3)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_3) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_3) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_3) -+1 flow(electricity_demand_dsm_oemof_1_3) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_3) ++1 flow(electricity_demand_dsm_oemof_3) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_1_4)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_4) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_4) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_4) -+1 flow(electricity_demand_dsm_oemof_1_4) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_4) ++1 flow(electricity_demand_dsm_oemof_4) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_1_5)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_5) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_5) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_5) -+1 flow(electricity_demand_dsm_oemof_1_5) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_5) ++1 flow(electricity_demand_dsm_oemof_5) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_2_6)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_6) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_6) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_6) -+1 flow(electricity_demand_dsm_oemof_2_6) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_6) ++1 flow(electricity_demand_dsm_oemof_6) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_2_7)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_7) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_7) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_7) -+1 flow(electricity_demand_dsm_oemof_2_7) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_7) ++1 flow(electricity_demand_dsm_oemof_7) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_2_8)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_8) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_8) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_8) -+1 flow(electricity_demand_dsm_oemof_2_8) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_8) ++1 flow(electricity_demand_dsm_oemof_8) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_3_9)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_9) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_9) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_9) -+1 flow(electricity_demand_dsm_oemof_3_9) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_9) ++1 flow(electricity_demand_dsm_oemof_9) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_3_10)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_10) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_10) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_10) -+1 flow(electricity_demand_dsm_oemof_3_10) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_10) ++1 flow(electricity_demand_dsm_oemof_10) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_3_11)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_11) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_11) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_11) -+1 flow(electricity_demand_dsm_oemof_3_11) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_11) ++1 flow(electricity_demand_dsm_oemof_11) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_4_12)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_12) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_12) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_12) -+1 flow(electricity_demand_dsm_oemof_4_12) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_12) ++1 flow(electricity_demand_dsm_oemof_12) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_4_13)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_13) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_13) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_13) -+1 flow(electricity_demand_dsm_oemof_4_13) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_13) ++1 flow(electricity_demand_dsm_oemof_13) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_4_14)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_14) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_14) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_14) -+1 flow(electricity_demand_dsm_oemof_4_14) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_14) ++1 flow(electricity_demand_dsm_oemof_14) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_5_15)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_15) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_15) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_15) -+1 flow(electricity_demand_dsm_oemof_5_15) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_15) ++1 flow(electricity_demand_dsm_oemof_15) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_5_16)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_16) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_16) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_16) -+1 flow(electricity_demand_dsm_oemof_5_16) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_16) ++1 flow(electricity_demand_dsm_oemof_16) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_5_17)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_17) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_17) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_17) -+1 flow(electricity_demand_dsm_oemof_5_17) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_17) ++1 flow(electricity_demand_dsm_oemof_17) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_6_18)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_18) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_18) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_18) -+1 flow(electricity_demand_dsm_oemof_6_18) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_18) ++1 flow(electricity_demand_dsm_oemof_18) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_6_19)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_19) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_19) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_19) -+1 flow(electricity_demand_dsm_oemof_6_19) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_19) ++1 flow(electricity_demand_dsm_oemof_19) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_6_20)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_20) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_20) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_20) -+1 flow(electricity_demand_dsm_oemof_6_20) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_20) ++1 flow(electricity_demand_dsm_oemof_20) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_7_21)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_21) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_21) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_21) -+1 flow(electricity_demand_dsm_oemof_7_21) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_21) ++1 flow(electricity_demand_dsm_oemof_21) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_7_22)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_22) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_22) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_22) -+1 flow(electricity_demand_dsm_oemof_7_22) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_22) ++1 flow(electricity_demand_dsm_oemof_22) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(demand_dsm_oemof_7_23)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_23) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_23) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_23) -+1 flow(electricity_demand_dsm_oemof_7_23) +-1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_23) ++1 flow(electricity_demand_dsm_oemof_23) = 1 c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_0_0)_: @@ -6598,86 +6598,86 @@ c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_7_23)_: c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_oemof_0)_: -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_0) +-1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_1) +1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_0) +1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_1) --1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_1) = 0 c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_oemof_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_2) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_2) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_3) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_3) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_2) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_3) = 0 c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_oemof_4)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_4) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_4) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_5) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_5) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_4) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_5) = 0 c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_oemof_6)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_6) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_6) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_7) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_7) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_6) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_7) = 0 c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_oemof_8)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_8) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_8) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_9) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_9) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_8) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_9) = 0 c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_oemof_10)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_10) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_10) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_11) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_11) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_10) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_11) = 0 c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_oemof_12)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_12) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_12) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_13) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_13) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_12) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_13) = 0 c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_oemof_14)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_14) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_14) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_15) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_15) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_14) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_15) = 0 c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_oemof_16)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_16) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_16) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_17) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_17) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_16) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_17) = 0 c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_oemof_18)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_18) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_18) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_19) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_19) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_18) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_19) = 0 c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_oemof_20)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_20) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_20) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_21) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_21) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_20) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_21) = 0 c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_oemof_22)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_22) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_22) -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_23) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_23) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_22) ++1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_23) = 0 c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(demand_dsm_oemof_0)_: @@ -6718,14 +6718,6 @@ c_l_SinkDSMOemofInvestmentBlock_overall_minimum(demand_dsm_oemof)_: bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= InvestmentFlowBlock_invest(electricity_storage_0) <= +inf - 0 <= InvestmentFlowBlock_invest(electricity_storage_1) <= +inf - 0 <= InvestmentFlowBlock_invest(electricity_storage_2) <= +inf - 0 <= InvestmentFlowBlock_invest(electricity_storage_3) <= +inf - 0 <= InvestmentFlowBlock_invest(electricity_storage_4) <= +inf - 0 <= InvestmentFlowBlock_invest(electricity_storage_5) <= +inf - 0 <= InvestmentFlowBlock_invest(electricity_storage_6) <= +inf - 0 <= InvestmentFlowBlock_invest(electricity_storage_7) <= +inf 0 <= InvestmentFlowBlock_invest(storage_electricity_0) <= +inf 0 <= InvestmentFlowBlock_invest(storage_electricity_1) <= +inf 0 <= InvestmentFlowBlock_invest(storage_electricity_2) <= +inf @@ -6734,6 +6726,14 @@ bounds 0 <= InvestmentFlowBlock_invest(storage_electricity_5) <= +inf 0 <= InvestmentFlowBlock_invest(storage_electricity_6) <= +inf 0 <= InvestmentFlowBlock_invest(storage_electricity_7) <= +inf + 0 <= InvestmentFlowBlock_invest(electricity_storage_0) <= +inf + 0 <= InvestmentFlowBlock_invest(electricity_storage_1) <= +inf + 0 <= InvestmentFlowBlock_invest(electricity_storage_2) <= +inf + 0 <= InvestmentFlowBlock_invest(electricity_storage_3) <= +inf + 0 <= InvestmentFlowBlock_invest(electricity_storage_4) <= +inf + 0 <= InvestmentFlowBlock_invest(electricity_storage_5) <= +inf + 0 <= InvestmentFlowBlock_invest(electricity_storage_6) <= +inf + 0 <= InvestmentFlowBlock_invest(electricity_storage_7) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage_0) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage_1) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage_2) <= +inf @@ -6743,629 +6743,629 @@ bounds 0 <= GenericInvestmentStorageBlock_invest(storage_6) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage_7) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_8) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_9) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_10) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_11) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_12) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_13) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_14) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_15) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_16) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_17) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_18) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_18) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_19) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_20) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_20) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_21) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_21) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_22) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_23) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_22) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_23) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_6) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_8) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_9) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_10) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_11) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_12) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_13) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_14) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_15) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_16) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_17) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_18) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_19) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_20) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_21) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_22) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_23) <= +inf 33 <= SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_0) <= 100 33 <= SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_1) <= 100 33 <= SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_2) <= 100 @@ -7375,220 +7375,220 @@ bounds 33 <= SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_6) <= 100 33 <= SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_7) <= 100 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_4) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_6) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_7) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_8) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_9) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_10) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_11) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_12) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_13) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_14) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_15) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_16) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_17) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_18) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_19) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_20) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_21) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_22) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_23) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_4) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_6) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_7) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_8) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_9) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_10) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_11) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_12) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_13) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_14) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_15) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_16) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_17) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_18) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_19) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_20) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_21) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_22) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_23) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_4) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_6) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_7) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_8) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_9) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_10) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_11) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_12) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_13) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_14) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_15) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_16) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_17) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_18) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_19) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_20) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_21) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_22) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_23) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_2) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_3) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_5) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_6) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_6) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_6) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_6) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_6) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_6) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_6) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_6) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_6) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_7) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_7) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_7) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_7) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_7) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_7) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_7) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_7) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_7) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_8) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_8) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_8) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_8) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_8) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_8) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_8) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_8) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_8) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_9) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_9) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_9) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_9) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_9) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_9) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_9) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_9) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_9) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_10) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_10) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_10) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_10) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_10) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_10) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_10) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_10) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_10) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_11) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_11) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_11) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_11) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_11) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_11) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_11) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_11) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_11) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_12) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_12) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_12) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_12) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_12) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_12) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_12) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_12) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_12) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_13) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_13) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_13) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_13) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_13) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_13) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_13) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_13) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_13) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_14) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_14) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_14) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_14) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_14) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_14) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_14) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_14) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_14) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_15) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_15) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_15) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_15) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_15) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_15) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_15) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_15) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_15) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_16) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_16) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_16) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_16) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_16) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_16) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_16) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_16) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_16) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_17) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_17) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_17) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_17) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_17) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_17) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_17) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_17) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_17) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_18) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_18) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_18) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_18) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_19) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_20) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_21) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_22) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_23) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_4) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_6) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_7) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_8) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_9) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_10) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_11) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_12) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_13) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_14) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_15) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_16) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_17) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_18) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_18) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_19) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_20) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_21) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_22) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_23) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_4) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_6) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_7) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_8) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_9) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_10) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_11) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_12) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_13) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_14) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_15) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_16) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_17) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_18) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_19) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_20) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_21) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_22) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_23) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_4) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_6) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_7) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_8) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_9) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_10) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_11) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_12) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_13) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_14) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_15) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_16) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_17) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_18) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_19) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_20) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_21) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_22) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_23) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_4) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_6) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_7) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_8) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_9) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_10) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_11) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_12) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_13) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_14) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_15) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_16) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_17) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_18) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_19) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_20) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_21) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_22) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_23) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_4) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_6) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_7) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_8) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_9) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_10) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_11) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_12) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_13) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_14) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_15) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_16) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_17) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_18) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_19) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_19) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_19) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_19) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_19) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_19) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_19) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_19) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_19) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_20) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_20) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_20) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_20) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_20) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_20) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_20) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_20) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_20) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_21) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_21) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_21) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_21) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_21) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_21) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_21) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_21) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_21) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_22) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_22) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_22) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_22) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_22) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_22) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_22) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_22) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_22) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_23) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_1_23) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_23) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_23) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_23) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_23) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_23) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_23) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_23) <= +inf 33 <= SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_0) <= 100 33 <= SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_1) <= 100 @@ -7599,77 +7599,77 @@ bounds 33 <= SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_6) <= 100 33 <= SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_7) <= 100 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_0) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_1) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_2) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_3) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_4) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_5) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_6) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_7) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_8) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_9) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_10) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_11) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_12) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_13) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_14) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_15) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_16) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_17) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_18) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_19) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_20) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_21) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_22) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_23) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_0) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_1) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_2) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_3) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_4) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_5) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_6) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_7) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_8) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_9) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_10) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_11) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_12) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_13) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_14) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_15) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_16) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_17) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_18) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_19) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_20) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_21) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_22) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_23) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_1) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_2) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_3) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_3) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_3) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_4) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_4) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_4) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_5) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_5) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_5) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_6) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_6) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_6) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_7) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_7) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_7) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_8) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_8) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_8) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_9) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_9) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_9) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_10) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_10) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_10) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_11) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_11) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_11) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_12) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_12) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_12) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_13) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_13) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_13) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_14) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_14) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_14) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_15) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_15) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_15) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_16) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_16) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_16) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_17) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_17) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_17) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_18) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_18) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_18) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_19) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_19) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_19) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_20) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_20) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_20) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_21) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_21) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_21) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_22) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_22) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_22) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_23) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_23) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_23) <= +inf 33 <= SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_0) <= 100 33 <= SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_1) <= 100 33 <= SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_2) <= 100 @@ -7678,164 +7678,158 @@ bounds 33 <= SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_5) <= 100 33 <= SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_6) <= 100 33 <= SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_7) <= 100 - 0 <= flow(storage_electricity_0_0) <= +inf - 0 <= flow(electricity_storage_0_0) <= +inf - 0 <= flow(electricity_demand_dsm_diw_0_0) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_0_0) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_0_0) <= +inf - 0 <= flow(storage_electricity_0_1) <= +inf - 0 <= flow(electricity_storage_0_1) <= +inf - 0 <= flow(electricity_demand_dsm_diw_0_1) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_0_1) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_0_1) <= +inf - 0 <= flow(storage_electricity_0_2) <= +inf - 0 <= flow(electricity_storage_0_2) <= +inf - 0 <= flow(electricity_demand_dsm_diw_0_2) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_0_2) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_0_2) <= +inf - 0 <= flow(storage_electricity_1_3) <= +inf - 0 <= flow(electricity_storage_1_3) <= +inf - 0 <= flow(electricity_demand_dsm_diw_1_3) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_1_3) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_1_3) <= +inf - 0 <= flow(storage_electricity_1_4) <= +inf - 0 <= flow(electricity_storage_1_4) <= +inf - 0 <= flow(electricity_demand_dsm_diw_1_4) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_1_4) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_1_4) <= +inf - 0 <= flow(storage_electricity_1_5) <= +inf - 0 <= flow(electricity_storage_1_5) <= +inf - 0 <= flow(electricity_demand_dsm_diw_1_5) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_1_5) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_1_5) <= +inf - 0 <= flow(storage_electricity_2_6) <= +inf - 0 <= flow(electricity_storage_2_6) <= +inf - 0 <= flow(electricity_demand_dsm_diw_2_6) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_2_6) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_2_6) <= +inf - 0 <= flow(storage_electricity_2_7) <= +inf - 0 <= flow(electricity_storage_2_7) <= +inf - 0 <= flow(electricity_demand_dsm_diw_2_7) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_2_7) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_2_7) <= +inf - 0 <= flow(storage_electricity_2_8) <= +inf - 0 <= flow(electricity_storage_2_8) <= +inf - 0 <= flow(electricity_demand_dsm_diw_2_8) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_2_8) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_2_8) <= +inf - 0 <= flow(storage_electricity_3_9) <= +inf - 0 <= flow(electricity_storage_3_9) <= +inf - 0 <= flow(electricity_demand_dsm_diw_3_9) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_3_9) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_3_9) <= +inf - 0 <= flow(storage_electricity_3_10) <= +inf - 0 <= flow(electricity_storage_3_10) <= +inf - 0 <= flow(electricity_demand_dsm_diw_3_10) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_3_10) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_3_10) <= +inf - 0 <= flow(storage_electricity_3_11) <= +inf - 0 <= flow(electricity_storage_3_11) <= +inf - 0 <= flow(electricity_demand_dsm_diw_3_11) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_3_11) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_3_11) <= +inf - 0 <= flow(storage_electricity_4_12) <= +inf - 0 <= flow(electricity_storage_4_12) <= +inf - 0 <= flow(electricity_demand_dsm_diw_4_12) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_4_12) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_4_12) <= +inf - 0 <= flow(storage_electricity_4_13) <= +inf - 0 <= flow(electricity_storage_4_13) <= +inf - 0 <= flow(electricity_demand_dsm_diw_4_13) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_4_13) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_4_13) <= +inf - 0 <= flow(storage_electricity_4_14) <= +inf - 0 <= flow(electricity_storage_4_14) <= +inf - 0 <= flow(electricity_demand_dsm_diw_4_14) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_4_14) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_4_14) <= +inf - 0 <= flow(storage_electricity_5_15) <= +inf - 0 <= flow(electricity_storage_5_15) <= +inf - 0 <= flow(electricity_demand_dsm_diw_5_15) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_5_15) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_5_15) <= +inf - 0 <= flow(storage_electricity_5_16) <= +inf - 0 <= flow(electricity_storage_5_16) <= +inf - 0 <= flow(electricity_demand_dsm_diw_5_16) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_5_16) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_5_16) <= +inf - 0 <= flow(storage_electricity_5_17) <= +inf - 0 <= flow(electricity_storage_5_17) <= +inf - 0 <= flow(electricity_demand_dsm_diw_5_17) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_5_17) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_5_17) <= +inf - 0 <= flow(storage_electricity_6_18) <= +inf - 0 <= flow(electricity_storage_6_18) <= +inf - 0 <= flow(electricity_demand_dsm_diw_6_18) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_6_18) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_6_18) <= +inf - 0 <= flow(storage_electricity_6_19) <= +inf - 0 <= flow(electricity_storage_6_19) <= +inf - 0 <= flow(electricity_demand_dsm_diw_6_19) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_6_19) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_6_19) <= +inf - 0 <= flow(storage_electricity_6_20) <= +inf - 0 <= flow(electricity_storage_6_20) <= +inf - 0 <= flow(electricity_demand_dsm_diw_6_20) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_6_20) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_6_20) <= +inf - 0 <= flow(storage_electricity_7_21) <= +inf - 0 <= flow(electricity_storage_7_21) <= +inf - 0 <= flow(electricity_demand_dsm_diw_7_21) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_7_21) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_7_21) <= +inf - 0 <= flow(storage_electricity_7_22) <= +inf - 0 <= flow(electricity_storage_7_22) <= +inf - 0 <= flow(electricity_demand_dsm_diw_7_22) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_7_22) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_7_22) <= +inf - 0 <= flow(storage_electricity_7_23) <= +inf - 0 <= flow(electricity_storage_7_23) <= +inf - 0 <= flow(electricity_demand_dsm_diw_7_23) <= +inf - 0 <= flow(electricity_demand_dsm_dlr_7_23) <= +inf - 0 <= flow(electricity_demand_dsm_oemof_7_23) <= +inf + 0 <= flow(electricity_storage_0) <= +inf + 0 <= flow(electricity_storage_1) <= +inf + 0 <= flow(electricity_storage_2) <= +inf + 0 <= flow(electricity_storage_3) <= +inf + 0 <= flow(electricity_storage_4) <= +inf + 0 <= flow(electricity_storage_5) <= +inf + 0 <= flow(electricity_storage_6) <= +inf + 0 <= flow(electricity_storage_7) <= +inf + 0 <= flow(electricity_storage_8) <= +inf + 0 <= flow(electricity_storage_9) <= +inf + 0 <= flow(electricity_storage_10) <= +inf + 0 <= flow(electricity_storage_11) <= +inf + 0 <= flow(electricity_storage_12) <= +inf + 0 <= flow(electricity_storage_13) <= +inf + 0 <= flow(electricity_storage_14) <= +inf + 0 <= flow(electricity_storage_15) <= +inf + 0 <= flow(electricity_storage_16) <= +inf + 0 <= flow(electricity_storage_17) <= +inf + 0 <= flow(electricity_storage_18) <= +inf + 0 <= flow(electricity_storage_19) <= +inf + 0 <= flow(electricity_storage_20) <= +inf + 0 <= flow(electricity_storage_21) <= +inf + 0 <= flow(electricity_storage_22) <= +inf + 0 <= flow(electricity_storage_23) <= +inf + 0 <= flow(electricity_demand_dsm_diw_0) <= +inf + 0 <= flow(electricity_demand_dsm_diw_1) <= +inf + 0 <= flow(electricity_demand_dsm_diw_2) <= +inf + 0 <= flow(electricity_demand_dsm_diw_3) <= +inf + 0 <= flow(electricity_demand_dsm_diw_4) <= +inf + 0 <= flow(electricity_demand_dsm_diw_5) <= +inf + 0 <= flow(electricity_demand_dsm_diw_6) <= +inf + 0 <= flow(electricity_demand_dsm_diw_7) <= +inf + 0 <= flow(electricity_demand_dsm_diw_8) <= +inf + 0 <= flow(electricity_demand_dsm_diw_9) <= +inf + 0 <= flow(electricity_demand_dsm_diw_10) <= +inf + 0 <= flow(electricity_demand_dsm_diw_11) <= +inf + 0 <= flow(electricity_demand_dsm_diw_12) <= +inf + 0 <= flow(electricity_demand_dsm_diw_13) <= +inf + 0 <= flow(electricity_demand_dsm_diw_14) <= +inf + 0 <= flow(electricity_demand_dsm_diw_15) <= +inf + 0 <= flow(electricity_demand_dsm_diw_16) <= +inf + 0 <= flow(electricity_demand_dsm_diw_17) <= +inf + 0 <= flow(electricity_demand_dsm_diw_18) <= +inf + 0 <= flow(electricity_demand_dsm_diw_19) <= +inf + 0 <= flow(electricity_demand_dsm_diw_20) <= +inf + 0 <= flow(electricity_demand_dsm_diw_21) <= +inf + 0 <= flow(electricity_demand_dsm_diw_22) <= +inf + 0 <= flow(electricity_demand_dsm_diw_23) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_0) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_1) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_2) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_3) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_4) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_5) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_6) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_7) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_8) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_9) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_10) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_11) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_12) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_13) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_14) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_15) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_16) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_17) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_18) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_19) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_20) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_21) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_22) <= +inf + 0 <= flow(electricity_demand_dsm_dlr_23) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_0) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_1) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_2) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_3) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_4) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_5) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_6) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_7) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_8) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_9) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_10) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_11) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_12) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_13) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_14) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_15) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_16) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_17) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_18) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_19) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_20) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_21) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_22) <= +inf + 0 <= flow(electricity_demand_dsm_oemof_23) <= +inf + 0 <= flow(storage_electricity_0) <= +inf + 0 <= flow(storage_electricity_1) <= +inf + 0 <= flow(storage_electricity_2) <= +inf + 0 <= flow(storage_electricity_3) <= +inf + 0 <= flow(storage_electricity_4) <= +inf + 0 <= flow(storage_electricity_5) <= +inf + 0 <= flow(storage_electricity_6) <= +inf + 0 <= flow(storage_electricity_7) <= +inf + 0 <= flow(storage_electricity_8) <= +inf + 0 <= flow(storage_electricity_9) <= +inf + 0 <= flow(storage_electricity_10) <= +inf + 0 <= flow(storage_electricity_11) <= +inf + 0 <= flow(storage_electricity_12) <= +inf + 0 <= flow(storage_electricity_13) <= +inf + 0 <= flow(storage_electricity_14) <= +inf + 0 <= flow(storage_electricity_15) <= +inf + 0 <= flow(storage_electricity_16) <= +inf + 0 <= flow(storage_electricity_17) <= +inf + 0 <= flow(storage_electricity_18) <= +inf + 0 <= flow(storage_electricity_19) <= +inf + 0 <= flow(storage_electricity_20) <= +inf + 0 <= flow(storage_electricity_21) <= +inf + 0 <= flow(storage_electricity_22) <= +inf + 0 <= flow(storage_electricity_23) <= +inf + 0 <= InvestmentFlowBlock_total(storage_electricity_0) <= +inf + 0 <= InvestmentFlowBlock_total(storage_electricity_1) <= +inf + 0 <= InvestmentFlowBlock_total(storage_electricity_2) <= +inf + 0 <= InvestmentFlowBlock_total(storage_electricity_3) <= +inf + 0 <= InvestmentFlowBlock_total(storage_electricity_4) <= +inf + 0 <= InvestmentFlowBlock_total(storage_electricity_5) <= +inf + 0 <= InvestmentFlowBlock_total(storage_electricity_6) <= +inf + 0 <= InvestmentFlowBlock_total(storage_electricity_7) <= +inf 0 <= InvestmentFlowBlock_total(electricity_storage_0) <= +inf 0 <= InvestmentFlowBlock_total(electricity_storage_1) <= +inf - 0 <= InvestmentFlowBlock_old(electricity_storage_1) <= +inf 0 <= InvestmentFlowBlock_total(electricity_storage_2) <= +inf - 0 <= InvestmentFlowBlock_old(electricity_storage_2) <= +inf 0 <= InvestmentFlowBlock_total(electricity_storage_3) <= +inf - 0 <= InvestmentFlowBlock_old(electricity_storage_3) <= +inf 0 <= InvestmentFlowBlock_total(electricity_storage_4) <= +inf - 0 <= InvestmentFlowBlock_old(electricity_storage_4) <= +inf 0 <= InvestmentFlowBlock_total(electricity_storage_5) <= +inf - 0 <= InvestmentFlowBlock_old(electricity_storage_5) <= +inf 0 <= InvestmentFlowBlock_total(electricity_storage_6) <= +inf - 0 <= InvestmentFlowBlock_old(electricity_storage_6) <= +inf 0 <= InvestmentFlowBlock_total(electricity_storage_7) <= +inf - 0 <= InvestmentFlowBlock_old(electricity_storage_7) <= +inf - 0 <= InvestmentFlowBlock_total(storage_electricity_0) <= +inf - 0 <= InvestmentFlowBlock_total(storage_electricity_1) <= +inf + 0 <= InvestmentFlowBlock_old(storage_electricity_0) <= +inf 0 <= InvestmentFlowBlock_old(storage_electricity_1) <= +inf - 0 <= InvestmentFlowBlock_total(storage_electricity_2) <= +inf 0 <= InvestmentFlowBlock_old(storage_electricity_2) <= +inf - 0 <= InvestmentFlowBlock_total(storage_electricity_3) <= +inf 0 <= InvestmentFlowBlock_old(storage_electricity_3) <= +inf - 0 <= InvestmentFlowBlock_total(storage_electricity_4) <= +inf 0 <= InvestmentFlowBlock_old(storage_electricity_4) <= +inf - 0 <= InvestmentFlowBlock_total(storage_electricity_5) <= +inf 0 <= InvestmentFlowBlock_old(storage_electricity_5) <= +inf - 0 <= InvestmentFlowBlock_total(storage_electricity_6) <= +inf 0 <= InvestmentFlowBlock_old(storage_electricity_6) <= +inf - 0 <= InvestmentFlowBlock_total(storage_electricity_7) <= +inf 0 <= InvestmentFlowBlock_old(storage_electricity_7) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricity_storage_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricity_storage_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricity_storage_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricity_storage_3) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricity_storage_4) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricity_storage_5) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricity_storage_6) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricity_storage_7) <= +inf + 0 <= InvestmentFlowBlock_old(electricity_storage_0) <= +inf + 0 <= InvestmentFlowBlock_old(electricity_storage_1) <= +inf + 0 <= InvestmentFlowBlock_old(electricity_storage_2) <= +inf + 0 <= InvestmentFlowBlock_old(electricity_storage_3) <= +inf + 0 <= InvestmentFlowBlock_old(electricity_storage_4) <= +inf + 0 <= InvestmentFlowBlock_old(electricity_storage_5) <= +inf + 0 <= InvestmentFlowBlock_old(electricity_storage_6) <= +inf + 0 <= InvestmentFlowBlock_old(electricity_storage_7) <= +inf 0 <= InvestmentFlowBlock_old_end(storage_electricity_0) <= +inf 0 <= InvestmentFlowBlock_old_end(storage_electricity_1) <= +inf 0 <= InvestmentFlowBlock_old_end(storage_electricity_2) <= +inf @@ -7844,14 +7838,14 @@ bounds 0 <= InvestmentFlowBlock_old_end(storage_electricity_5) <= +inf 0 <= InvestmentFlowBlock_old_end(storage_electricity_6) <= +inf 0 <= InvestmentFlowBlock_old_end(storage_electricity_7) <= +inf - 0 <= InvestmentFlowBlock_old_exo(electricity_storage_0) <= +inf - 0 <= InvestmentFlowBlock_old_exo(electricity_storage_1) <= +inf - 0 <= InvestmentFlowBlock_old_exo(electricity_storage_2) <= +inf - 0 <= InvestmentFlowBlock_old_exo(electricity_storage_3) <= +inf - 0 <= InvestmentFlowBlock_old_exo(electricity_storage_4) <= +inf - 0 <= InvestmentFlowBlock_old_exo(electricity_storage_5) <= +inf - 0 <= InvestmentFlowBlock_old_exo(electricity_storage_6) <= +inf - 0 <= InvestmentFlowBlock_old_exo(electricity_storage_7) <= +inf + 0 <= InvestmentFlowBlock_old_end(electricity_storage_0) <= +inf + 0 <= InvestmentFlowBlock_old_end(electricity_storage_1) <= +inf + 0 <= InvestmentFlowBlock_old_end(electricity_storage_2) <= +inf + 0 <= InvestmentFlowBlock_old_end(electricity_storage_3) <= +inf + 0 <= InvestmentFlowBlock_old_end(electricity_storage_4) <= +inf + 0 <= InvestmentFlowBlock_old_end(electricity_storage_5) <= +inf + 0 <= InvestmentFlowBlock_old_end(electricity_storage_6) <= +inf + 0 <= InvestmentFlowBlock_old_end(electricity_storage_7) <= +inf 0 <= InvestmentFlowBlock_old_exo(storage_electricity_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(storage_electricity_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(storage_electricity_2) <= +inf @@ -7860,22 +7854,29 @@ bounds 0 <= InvestmentFlowBlock_old_exo(storage_electricity_5) <= +inf 0 <= InvestmentFlowBlock_old_exo(storage_electricity_6) <= +inf 0 <= InvestmentFlowBlock_old_exo(storage_electricity_7) <= +inf - 0 <= InvestmentFlowBlock_old(electricity_storage_0) <= +inf - 0 <= InvestmentFlowBlock_old(storage_electricity_0) <= +inf + 0 <= InvestmentFlowBlock_old_exo(electricity_storage_0) <= +inf + 0 <= InvestmentFlowBlock_old_exo(electricity_storage_1) <= +inf + 0 <= InvestmentFlowBlock_old_exo(electricity_storage_2) <= +inf + 0 <= InvestmentFlowBlock_old_exo(electricity_storage_3) <= +inf + 0 <= InvestmentFlowBlock_old_exo(electricity_storage_4) <= +inf + 0 <= InvestmentFlowBlock_old_exo(electricity_storage_5) <= +inf + 0 <= InvestmentFlowBlock_old_exo(electricity_storage_6) <= +inf + 0 <= InvestmentFlowBlock_old_exo(electricity_storage_7) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_1) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_2) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_3) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_3) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_4) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_4) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_5) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_5) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_6) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_6) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_7) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_0) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_1) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_2) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_3) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_4) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_5) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_6) <= +inf 0 <= GenericInvestmentStorageBlock_old(storage_7) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage_1) <= +inf @@ -7893,7 +7894,6 @@ bounds 0 <= GenericInvestmentStorageBlock_old_exo(storage_5) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage_6) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage_7) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_1) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_2) <= +inf @@ -7920,18 +7920,19 @@ bounds 0 <= GenericInvestmentStorageBlock_storage_content(storage_23) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_1) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_2) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_3) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_4) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_6) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_7) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_6) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_7) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_1) <= +inf @@ -7949,21 +7950,21 @@ bounds 0 <= SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_6) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_2) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_3) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_5) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_6) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_4) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_6) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_7) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_1) <= +inf @@ -7981,7 +7982,6 @@ bounds 0 <= SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_5) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_6) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_7) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_2) <= +inf @@ -8032,18 +8032,19 @@ bounds 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_23) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_1) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_2) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_3) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_3) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_4) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_4) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_5) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_5) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_6) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_6) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_7) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_0) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_1) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_2) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_3) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_4) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_5) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_6) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_7) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_1) <= +inf @@ -8061,5 +8062,4 @@ bounds 0 <= SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_5) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_6) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_7) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_0) <= +inf end diff --git a/tests/lp_files/nominal_value_to_zero.lp b/tests/lp_files/nominal_value_to_zero.lp index 82cf4daeb..1c7a5ce7f 100644 --- a/tests/lp_files/nominal_value_to_zero.lp +++ b/tests/lp_files/nominal_value_to_zero.lp @@ -6,21 +6,21 @@ objective: s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(s1_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(s1_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(s1_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(s1_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(s1_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(s1_electricityBus_2) = 0 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(s1_electricityBus_0_0) <= 0 - 0 <= flow(s1_electricityBus_0_1) <= 0 - 0 <= flow(s1_electricityBus_0_2) <= 0 + 0 <= flow(s1_electricityBus_0) <= 0 + 0 <= flow(s1_electricityBus_1) <= 0 + 0 <= flow(s1_electricityBus_2) <= 0 end diff --git a/tests/lp_files/nominal_value_to_zero_multi_period.lp b/tests/lp_files/nominal_value_to_zero_multi_period.lp index 11db58e67..820c79734 100644 --- a/tests/lp_files/nominal_value_to_zero_multi_period.lp +++ b/tests/lp_files/nominal_value_to_zero_multi_period.lp @@ -6,36 +6,36 @@ objective: s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(s1_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(s1_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(s1_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(s1_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(s1_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(s1_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(s1_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(s1_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(s1_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(s1_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(s1_electricityBus_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(s1_electricityBus_5) = 0 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(s1_electricityBus_0_0) <= 0 - 0 <= flow(s1_electricityBus_0_1) <= 0 - 0 <= flow(s1_electricityBus_1_2) <= 0 - 0 <= flow(s1_electricityBus_1_3) <= 0 - 0 <= flow(s1_electricityBus_2_4) <= 0 - 0 <= flow(s1_electricityBus_2_5) <= 0 + 0 <= flow(s1_electricityBus_0) <= 0 + 0 <= flow(s1_electricityBus_1) <= 0 + 0 <= flow(s1_electricityBus_2) <= 0 + 0 <= flow(s1_electricityBus_3) <= 0 + 0 <= flow(s1_electricityBus_4) <= 0 + 0 <= flow(s1_electricityBus_5) <= 0 end diff --git a/tests/lp_files/nonequidistant_timeindex.lp b/tests/lp_files/nonequidistant_timeindex.lp index 9fd54c5bf..5f18977cc 100644 --- a/tests/lp_files/nonequidistant_timeindex.lp +++ b/tests/lp_files/nonequidistant_timeindex.lp @@ -2,204 +2,204 @@ min objective: -+100 flow(gas_boiler_0_0) -+100 flow(gas_boiler_0_1) -+100 flow(gas_boiler_0_2) -+200.0 flow(gas_boiler_0_3) -+200.0 flow(gas_boiler_0_4) -+50.0 flow(gas_boiler_0_5) -+50.0 flow(gas_boiler_0_6) -+50.0 flow(gas_boiler_0_7) -+56 flow(heat_storage_0_0) -+56 flow(heat_storage_0_1) -+56 flow(heat_storage_0_2) -+112.0 flow(heat_storage_0_3) -+112.0 flow(heat_storage_0_4) -+28.0 flow(heat_storage_0_5) -+28.0 flow(heat_storage_0_6) -+28.0 flow(heat_storage_0_7) -+24 flow(storage_heat_0_0) -+24 flow(storage_heat_0_1) -+24 flow(storage_heat_0_2) -+48.0 flow(storage_heat_0_3) -+48.0 flow(storage_heat_0_4) -+12.0 flow(storage_heat_0_5) -+12.0 flow(storage_heat_0_6) -+12.0 flow(storage_heat_0_7) ++100 flow(gas_boiler_0) ++100 flow(gas_boiler_1) ++100 flow(gas_boiler_2) ++200.0 flow(gas_boiler_3) ++200.0 flow(gas_boiler_4) ++50.0 flow(gas_boiler_5) ++50.0 flow(gas_boiler_6) ++50.0 flow(gas_boiler_7) ++56 flow(heat_storage_0) ++56 flow(heat_storage_1) ++56 flow(heat_storage_2) ++112.0 flow(heat_storage_3) ++112.0 flow(heat_storage_4) ++28.0 flow(heat_storage_5) ++28.0 flow(heat_storage_6) ++28.0 flow(heat_storage_7) ++24 flow(storage_heat_0) ++24 flow(storage_heat_1) ++24 flow(storage_heat_2) ++48.0 flow(storage_heat_3) ++48.0 flow(storage_heat_4) ++12.0 flow(storage_heat_5) ++12.0 flow(storage_heat_6) ++12.0 flow(storage_heat_7) s.t. -c_e_BusBlock_balance(heat_0_0)_: --1 flow(heat_storage_0_0) -+1 flow(storage_heat_0_0) -+1 flow(boiler_heat_0_0) +c_e_BusBlock_balance(gas_0)_: ++1 flow(gas_boiler_0) = 0 -c_e_BusBlock_balance(heat_0_1)_: --1 flow(heat_storage_0_1) -+1 flow(storage_heat_0_1) -+1 flow(boiler_heat_0_1) +c_e_BusBlock_balance(gas_1)_: ++1 flow(gas_boiler_1) = 0 -c_e_BusBlock_balance(heat_0_2)_: --1 flow(heat_storage_0_2) -+1 flow(storage_heat_0_2) -+1 flow(boiler_heat_0_2) +c_e_BusBlock_balance(gas_2)_: ++1 flow(gas_boiler_2) = 0 -c_e_BusBlock_balance(heat_0_3)_: --1 flow(heat_storage_0_3) -+1 flow(storage_heat_0_3) -+1 flow(boiler_heat_0_3) +c_e_BusBlock_balance(gas_3)_: ++1 flow(gas_boiler_3) = 0 -c_e_BusBlock_balance(heat_0_4)_: --1 flow(heat_storage_0_4) -+1 flow(storage_heat_0_4) -+1 flow(boiler_heat_0_4) +c_e_BusBlock_balance(gas_4)_: ++1 flow(gas_boiler_4) = 0 -c_e_BusBlock_balance(heat_0_5)_: --1 flow(heat_storage_0_5) -+1 flow(storage_heat_0_5) -+1 flow(boiler_heat_0_5) +c_e_BusBlock_balance(gas_5)_: ++1 flow(gas_boiler_5) = 0 -c_e_BusBlock_balance(heat_0_6)_: --1 flow(heat_storage_0_6) -+1 flow(storage_heat_0_6) -+1 flow(boiler_heat_0_6) +c_e_BusBlock_balance(gas_6)_: ++1 flow(gas_boiler_6) = 0 -c_e_BusBlock_balance(heat_0_7)_: --1 flow(heat_storage_0_7) -+1 flow(storage_heat_0_7) -+1 flow(boiler_heat_0_7) +c_e_BusBlock_balance(gas_7)_: ++1 flow(gas_boiler_7) = 0 -c_e_BusBlock_balance(gas_0_0)_: -+1 flow(gas_boiler_0_0) +c_e_BusBlock_balance(heat_0)_: +-1 flow(heat_storage_0) ++1 flow(boiler_heat_0) ++1 flow(storage_heat_0) = 0 -c_e_BusBlock_balance(gas_0_1)_: -+1 flow(gas_boiler_0_1) +c_e_BusBlock_balance(heat_1)_: +-1 flow(heat_storage_1) ++1 flow(boiler_heat_1) ++1 flow(storage_heat_1) = 0 -c_e_BusBlock_balance(gas_0_2)_: -+1 flow(gas_boiler_0_2) +c_e_BusBlock_balance(heat_2)_: +-1 flow(heat_storage_2) ++1 flow(boiler_heat_2) ++1 flow(storage_heat_2) = 0 -c_e_BusBlock_balance(gas_0_3)_: -+1 flow(gas_boiler_0_3) +c_e_BusBlock_balance(heat_3)_: +-1 flow(heat_storage_3) ++1 flow(boiler_heat_3) ++1 flow(storage_heat_3) = 0 -c_e_BusBlock_balance(gas_0_4)_: -+1 flow(gas_boiler_0_4) +c_e_BusBlock_balance(heat_4)_: +-1 flow(heat_storage_4) ++1 flow(boiler_heat_4) ++1 flow(storage_heat_4) = 0 -c_e_BusBlock_balance(gas_0_5)_: -+1 flow(gas_boiler_0_5) +c_e_BusBlock_balance(heat_5)_: +-1 flow(heat_storage_5) ++1 flow(boiler_heat_5) ++1 flow(storage_heat_5) = 0 -c_e_BusBlock_balance(gas_0_6)_: -+1 flow(gas_boiler_0_6) +c_e_BusBlock_balance(heat_6)_: +-1 flow(heat_storage_6) ++1 flow(boiler_heat_6) ++1 flow(storage_heat_6) = 0 -c_e_BusBlock_balance(gas_0_7)_: -+1 flow(gas_boiler_0_7) +c_e_BusBlock_balance(heat_7)_: +-1 flow(heat_storage_7) ++1 flow(boiler_heat_7) ++1 flow(storage_heat_7) = 0 -c_e_ConverterBlock_relation(boiler_gas_heat_0_0)_: -+1 flow(gas_boiler_0_0) --1 flow(boiler_heat_0_0) +c_e_ConverterBlock_relation(boiler_gas_heat_0)_: ++1 flow(gas_boiler_0) +-1 flow(boiler_heat_0) = 0 -c_e_ConverterBlock_relation(boiler_gas_heat_0_1)_: -+1 flow(gas_boiler_0_1) --1 flow(boiler_heat_0_1) +c_e_ConverterBlock_relation(boiler_gas_heat_1)_: ++1 flow(gas_boiler_1) +-1 flow(boiler_heat_1) = 0 -c_e_ConverterBlock_relation(boiler_gas_heat_0_2)_: -+1 flow(gas_boiler_0_2) --1 flow(boiler_heat_0_2) +c_e_ConverterBlock_relation(boiler_gas_heat_2)_: ++1 flow(gas_boiler_2) +-1 flow(boiler_heat_2) = 0 -c_e_ConverterBlock_relation(boiler_gas_heat_0_3)_: -+1 flow(gas_boiler_0_3) --1 flow(boiler_heat_0_3) +c_e_ConverterBlock_relation(boiler_gas_heat_3)_: ++1 flow(gas_boiler_3) +-1 flow(boiler_heat_3) = 0 -c_e_ConverterBlock_relation(boiler_gas_heat_0_4)_: -+1 flow(gas_boiler_0_4) --1 flow(boiler_heat_0_4) +c_e_ConverterBlock_relation(boiler_gas_heat_4)_: ++1 flow(gas_boiler_4) +-1 flow(boiler_heat_4) = 0 -c_e_ConverterBlock_relation(boiler_gas_heat_0_5)_: -+1 flow(gas_boiler_0_5) --1 flow(boiler_heat_0_5) +c_e_ConverterBlock_relation(boiler_gas_heat_5)_: ++1 flow(gas_boiler_5) +-1 flow(boiler_heat_5) = 0 -c_e_ConverterBlock_relation(boiler_gas_heat_0_6)_: -+1 flow(gas_boiler_0_6) --1 flow(boiler_heat_0_6) +c_e_ConverterBlock_relation(boiler_gas_heat_6)_: ++1 flow(gas_boiler_6) +-1 flow(boiler_heat_6) = 0 -c_e_ConverterBlock_relation(boiler_gas_heat_0_7)_: -+1 flow(gas_boiler_0_7) --1 flow(boiler_heat_0_7) +c_e_ConverterBlock_relation(boiler_gas_heat_7)_: ++1 flow(gas_boiler_7) +-1 flow(boiler_heat_7) = 0 -c_e_GenericStorageBlock_balance(storage_0_0)_: --1 flow(heat_storage_0_0) -+1 flow(storage_heat_0_0) +c_e_GenericStorageBlock_balance(storage_0)_: +-1 flow(heat_storage_0) ++1 flow(storage_heat_0) +1 GenericStorageBlock_storage_content(storage_1) = 270.0 -c_e_GenericStorageBlock_balance(storage_0_1)_: --1 flow(heat_storage_0_1) -+1 flow(storage_heat_0_1) +c_e_GenericStorageBlock_balance(storage_1)_: +-1 flow(heat_storage_1) ++1 flow(storage_heat_1) -0.9 GenericStorageBlock_storage_content(storage_1) +1 GenericStorageBlock_storage_content(storage_2) = 0 -c_e_GenericStorageBlock_balance(storage_0_2)_: --1 flow(heat_storage_0_2) -+1 flow(storage_heat_0_2) +c_e_GenericStorageBlock_balance(storage_2)_: +-1 flow(heat_storage_2) ++1 flow(storage_heat_2) -0.9 GenericStorageBlock_storage_content(storage_2) +1 GenericStorageBlock_storage_content(storage_3) = 0 -c_e_GenericStorageBlock_balance(storage_0_3)_: --2.0 flow(heat_storage_0_3) -+2.0 flow(storage_heat_0_3) +c_e_GenericStorageBlock_balance(storage_3)_: +-2.0 flow(heat_storage_3) ++2.0 flow(storage_heat_3) -0.81 GenericStorageBlock_storage_content(storage_3) +1 GenericStorageBlock_storage_content(storage_4) = 0 -c_e_GenericStorageBlock_balance(storage_0_4)_: --2.0 flow(heat_storage_0_4) -+2.0 flow(storage_heat_0_4) +c_e_GenericStorageBlock_balance(storage_4)_: +-2.0 flow(heat_storage_4) ++2.0 flow(storage_heat_4) -0.81 GenericStorageBlock_storage_content(storage_4) +1 GenericStorageBlock_storage_content(storage_5) = 0 -c_e_GenericStorageBlock_balance(storage_0_5)_: --0.5 flow(heat_storage_0_5) -+0.5 flow(storage_heat_0_5) +c_e_GenericStorageBlock_balance(storage_5)_: +-0.5 flow(heat_storage_5) ++0.5 flow(storage_heat_5) -0.9486832980505138 GenericStorageBlock_storage_content(storage_5) +1 GenericStorageBlock_storage_content(storage_6) = 0 -c_e_GenericStorageBlock_balance(storage_0_6)_: --0.5 flow(heat_storage_0_6) -+0.5 flow(storage_heat_0_6) +c_e_GenericStorageBlock_balance(storage_6)_: +-0.5 flow(heat_storage_6) ++0.5 flow(storage_heat_6) -0.9486832980505138 GenericStorageBlock_storage_content(storage_6) +1 GenericStorageBlock_storage_content(storage_7) = 0 -c_e_GenericStorageBlock_balance(storage_0_7)_: --0.5 flow(heat_storage_0_7) -+0.5 flow(storage_heat_0_7) +c_e_GenericStorageBlock_balance(storage_7)_: +-0.5 flow(heat_storage_7) ++0.5 flow(storage_heat_7) -0.9486832980505138 GenericStorageBlock_storage_content(storage_7) +1 GenericStorageBlock_storage_content(storage_8) = 0 @@ -209,38 +209,38 @@ c_e_GenericStorageBlock_balanced_cstr(storage)_: = 300 bounds - 0 <= flow(gas_boiler_0_0) <= +inf - 0 <= flow(gas_boiler_0_1) <= +inf - 0 <= flow(gas_boiler_0_2) <= +inf - 0 <= flow(gas_boiler_0_3) <= +inf - 0 <= flow(gas_boiler_0_4) <= +inf - 0 <= flow(gas_boiler_0_5) <= +inf - 0 <= flow(gas_boiler_0_6) <= +inf - 0 <= flow(gas_boiler_0_7) <= +inf - 0 <= flow(heat_storage_0_0) <= 100 - 0 <= flow(heat_storage_0_1) <= 100 - 0 <= flow(heat_storage_0_2) <= 100 - 0 <= flow(heat_storage_0_3) <= 100 - 0 <= flow(heat_storage_0_4) <= 100 - 0 <= flow(heat_storage_0_5) <= 100 - 0 <= flow(heat_storage_0_6) <= 100 - 0 <= flow(heat_storage_0_7) <= 100 - 0 <= flow(storage_heat_0_0) <= 100 - 0 <= flow(storage_heat_0_1) <= 100 - 0 <= flow(storage_heat_0_2) <= 100 - 0 <= flow(storage_heat_0_3) <= 100 - 0 <= flow(storage_heat_0_4) <= 100 - 0 <= flow(storage_heat_0_5) <= 100 - 0 <= flow(storage_heat_0_6) <= 100 - 0 <= flow(storage_heat_0_7) <= 100 - 0 <= flow(boiler_heat_0_0) <= 200 - 0 <= flow(boiler_heat_0_1) <= 200 - 0 <= flow(boiler_heat_0_2) <= 200 - 0 <= flow(boiler_heat_0_3) <= 200 - 0 <= flow(boiler_heat_0_4) <= 200 - 0 <= flow(boiler_heat_0_5) <= 200 - 0 <= flow(boiler_heat_0_6) <= 200 - 0 <= flow(boiler_heat_0_7) <= 200 + 0 <= flow(gas_boiler_0) <= +inf + 0 <= flow(gas_boiler_1) <= +inf + 0 <= flow(gas_boiler_2) <= +inf + 0 <= flow(gas_boiler_3) <= +inf + 0 <= flow(gas_boiler_4) <= +inf + 0 <= flow(gas_boiler_5) <= +inf + 0 <= flow(gas_boiler_6) <= +inf + 0 <= flow(gas_boiler_7) <= +inf + 0 <= flow(heat_storage_0) <= 100 + 0 <= flow(heat_storage_1) <= 100 + 0 <= flow(heat_storage_2) <= 100 + 0 <= flow(heat_storage_3) <= 100 + 0 <= flow(heat_storage_4) <= 100 + 0 <= flow(heat_storage_5) <= 100 + 0 <= flow(heat_storage_6) <= 100 + 0 <= flow(heat_storage_7) <= 100 + 0 <= flow(boiler_heat_0) <= 200 + 0 <= flow(boiler_heat_1) <= 200 + 0 <= flow(boiler_heat_2) <= 200 + 0 <= flow(boiler_heat_3) <= 200 + 0 <= flow(boiler_heat_4) <= 200 + 0 <= flow(boiler_heat_5) <= 200 + 0 <= flow(boiler_heat_6) <= 200 + 0 <= flow(boiler_heat_7) <= 200 + 0 <= flow(storage_heat_0) <= 100 + 0 <= flow(storage_heat_1) <= 100 + 0 <= flow(storage_heat_2) <= 100 + 0 <= flow(storage_heat_3) <= 100 + 0 <= flow(storage_heat_4) <= 100 + 0 <= flow(storage_heat_5) <= 100 + 0 <= flow(storage_heat_6) <= 100 + 0 <= flow(storage_heat_7) <= 100 0 <= GenericStorageBlock_storage_content(storage_1) <= 300 0 <= GenericStorageBlock_storage_content(storage_2) <= 300 0 <= GenericStorageBlock_storage_content(storage_3) <= 300 diff --git a/tests/lp_files/offsetconverter_multi_period.lp b/tests/lp_files/offsetconverter_multi_period.lp index 2f29944f2..0725237b4 100644 --- a/tests/lp_files/offsetconverter_multi_period.lp +++ b/tests/lp_files/offsetconverter_multi_period.lp @@ -1,86 +1,86 @@ \* Source Pyomo model name=Model *\ -min +min objective: -0 ONE_VAR_CONSTANT ++0 ONE_VAR_CONSTANT s.t. -c_e_BusBlock_balance(thermalBus_0_0)_: -1 flow(gasboiler_thermalBus_0_0) +c_e_BusBlock_balance(gasBus_0_0)_: ++1 flow(gasBus_gasboiler_0_0) = 0 -c_e_BusBlock_balance(thermalBus_0_1)_: -1 flow(gasboiler_thermalBus_0_1) +c_e_BusBlock_balance(gasBus_0_1)_: ++1 flow(gasBus_gasboiler_0_1) = 0 -c_e_BusBlock_balance(thermalBus_1_2)_: -1 flow(gasboiler_thermalBus_1_2) +c_e_BusBlock_balance(gasBus_1_2)_: ++1 flow(gasBus_gasboiler_1_2) = 0 -c_e_BusBlock_balance(thermalBus_1_3)_: -1 flow(gasboiler_thermalBus_1_3) +c_e_BusBlock_balance(gasBus_1_3)_: ++1 flow(gasBus_gasboiler_1_3) = 0 -c_e_BusBlock_balance(thermalBus_2_4)_: -1 flow(gasboiler_thermalBus_2_4) +c_e_BusBlock_balance(gasBus_2_4)_: ++1 flow(gasBus_gasboiler_2_4) = 0 -c_e_BusBlock_balance(thermalBus_2_5)_: -1 flow(gasboiler_thermalBus_2_5) +c_e_BusBlock_balance(gasBus_2_5)_: ++1 flow(gasBus_gasboiler_2_5) = 0 -c_e_BusBlock_balance(gasBus_0_0)_: -1 flow(gasBus_gasboiler_0_0) +c_e_BusBlock_balance(thermalBus_0_0)_: ++1 flow(gasboiler_thermalBus_0_0) = 0 -c_e_BusBlock_balance(gasBus_0_1)_: -1 flow(gasBus_gasboiler_0_1) +c_e_BusBlock_balance(thermalBus_0_1)_: ++1 flow(gasboiler_thermalBus_0_1) = 0 -c_e_BusBlock_balance(gasBus_1_2)_: -1 flow(gasBus_gasboiler_1_2) +c_e_BusBlock_balance(thermalBus_1_2)_: ++1 flow(gasboiler_thermalBus_1_2) = 0 -c_e_BusBlock_balance(gasBus_1_3)_: -1 flow(gasBus_gasboiler_1_3) +c_e_BusBlock_balance(thermalBus_1_3)_: ++1 flow(gasboiler_thermalBus_1_3) = 0 -c_e_BusBlock_balance(gasBus_2_4)_: -1 flow(gasBus_gasboiler_2_4) +c_e_BusBlock_balance(thermalBus_2_4)_: ++1 flow(gasboiler_thermalBus_2_4) = 0 -c_e_BusBlock_balance(gasBus_2_5)_: -1 flow(gasBus_gasboiler_2_5) +c_e_BusBlock_balance(thermalBus_2_5)_: ++1 flow(gasboiler_thermalBus_2_5) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(gasboiler_thermalBus_0)_: -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_0) ++1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_0) -100 NonConvexFlowBlock_status(gasboiler_thermalBus_0) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(gasboiler_thermalBus_1)_: -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_1) ++1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_1) -100 NonConvexFlowBlock_status(gasboiler_thermalBus_1) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(gasboiler_thermalBus_2)_: -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_2) ++1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_2) -100 NonConvexFlowBlock_status(gasboiler_thermalBus_2) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(gasboiler_thermalBus_3)_: -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_3) ++1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_3) -100 NonConvexFlowBlock_status(gasboiler_thermalBus_3) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(gasboiler_thermalBus_4)_: -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_4) ++1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_4) -100 NonConvexFlowBlock_status(gasboiler_thermalBus_4) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(gasboiler_thermalBus_5)_: -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_5) ++1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_5) -100 NonConvexFlowBlock_status(gasboiler_thermalBus_5) = 0 @@ -115,32 +115,32 @@ c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_2_5)_: <= 0 c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_0_0)_: -1 flow(gasboiler_thermalBus_0_0) ++1 flow(gasboiler_thermalBus_0_0) -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_0) <= 0 c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_0_1)_: -1 flow(gasboiler_thermalBus_0_1) ++1 flow(gasboiler_thermalBus_0_1) -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_1) <= 0 c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_1_2)_: -1 flow(gasboiler_thermalBus_1_2) ++1 flow(gasboiler_thermalBus_1_2) -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_2) <= 0 c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_1_3)_: -1 flow(gasboiler_thermalBus_1_3) ++1 flow(gasboiler_thermalBus_1_3) -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_3) <= 0 c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_2_4)_: -1 flow(gasboiler_thermalBus_2_4) ++1 flow(gasboiler_thermalBus_2_4) -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_4) <= 0 c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_2_5)_: -1 flow(gasboiler_thermalBus_2_5) ++1 flow(gasboiler_thermalBus_2_5) -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_5) <= 0 @@ -181,36 +181,36 @@ c_e_OffsetConverterBlock_relation(gasboiler_gasBus_thermalBus_2_5)_: = 0 bounds -1 <= ONE_VAR_CONSTANT <= 1 -0 <= flow(gasboiler_thermalBus_0_0) <= 100 -0 <= flow(gasboiler_thermalBus_0_1) <= 100 -0 <= flow(gasboiler_thermalBus_1_2) <= 100 -0 <= flow(gasboiler_thermalBus_1_3) <= 100 -0 <= flow(gasboiler_thermalBus_2_4) <= 100 -0 <= flow(gasboiler_thermalBus_2_5) <= 100 -0 <= flow(gasBus_gasboiler_0_0) <= +inf -0 <= flow(gasBus_gasboiler_0_1) <= +inf -0 <= flow(gasBus_gasboiler_1_2) <= +inf -0 <= flow(gasBus_gasboiler_1_3) <= +inf -0 <= flow(gasBus_gasboiler_2_4) <= +inf -0 <= flow(gasBus_gasboiler_2_5) <= +inf -0 <= NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_0) <= +inf -0 <= NonConvexFlowBlock_status(gasboiler_thermalBus_0) <= 1 -0 <= NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_1) <= +inf -0 <= NonConvexFlowBlock_status(gasboiler_thermalBus_1) <= 1 -0 <= NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_2) <= +inf -0 <= NonConvexFlowBlock_status(gasboiler_thermalBus_2) <= 1 -0 <= NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_3) <= +inf -0 <= NonConvexFlowBlock_status(gasboiler_thermalBus_3) <= 1 -0 <= NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_4) <= +inf -0 <= NonConvexFlowBlock_status(gasboiler_thermalBus_4) <= 1 -0 <= NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_5) <= +inf -0 <= NonConvexFlowBlock_status(gasboiler_thermalBus_5) <= 1 + 1 <= ONE_VAR_CONSTANT <= 1 + 0 <= flow(gasBus_gasboiler_0_0) <= +inf + 0 <= flow(gasBus_gasboiler_0_1) <= +inf + 0 <= flow(gasBus_gasboiler_1_2) <= +inf + 0 <= flow(gasBus_gasboiler_1_3) <= +inf + 0 <= flow(gasBus_gasboiler_2_4) <= +inf + 0 <= flow(gasBus_gasboiler_2_5) <= +inf + 0 <= flow(gasboiler_thermalBus_0_0) <= 100 + 0 <= flow(gasboiler_thermalBus_0_1) <= 100 + 0 <= flow(gasboiler_thermalBus_1_2) <= 100 + 0 <= flow(gasboiler_thermalBus_1_3) <= 100 + 0 <= flow(gasboiler_thermalBus_2_4) <= 100 + 0 <= flow(gasboiler_thermalBus_2_5) <= 100 + 0 <= NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_0) <= +inf + 0 <= NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_1) <= +inf + 0 <= NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_2) <= +inf + 0 <= NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_3) <= +inf + 0 <= NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_4) <= +inf + 0 <= NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_5) <= +inf + 0 <= NonConvexFlowBlock_status(gasboiler_thermalBus_0) <= 1 + 0 <= NonConvexFlowBlock_status(gasboiler_thermalBus_1) <= 1 + 0 <= NonConvexFlowBlock_status(gasboiler_thermalBus_2) <= 1 + 0 <= NonConvexFlowBlock_status(gasboiler_thermalBus_3) <= 1 + 0 <= NonConvexFlowBlock_status(gasboiler_thermalBus_4) <= 1 + 0 <= NonConvexFlowBlock_status(gasboiler_thermalBus_5) <= 1 binary -NonConvexFlowBlock_status(gasboiler_thermalBus_0) -NonConvexFlowBlock_status(gasboiler_thermalBus_1) -NonConvexFlowBlock_status(gasboiler_thermalBus_2) -NonConvexFlowBlock_status(gasboiler_thermalBus_3) -NonConvexFlowBlock_status(gasboiler_thermalBus_4) -NonConvexFlowBlock_status(gasboiler_thermalBus_5) + NonConvexFlowBlock_status(gasboiler_thermalBus_0) + NonConvexFlowBlock_status(gasboiler_thermalBus_1) + NonConvexFlowBlock_status(gasboiler_thermalBus_2) + NonConvexFlowBlock_status(gasboiler_thermalBus_3) + NonConvexFlowBlock_status(gasboiler_thermalBus_4) + NonConvexFlowBlock_status(gasboiler_thermalBus_5) end diff --git a/tests/lp_files/offsetconverter_nonconvex.lp b/tests/lp_files/offsetconverter_nonconvex.lp index 98ff1f1c0..7a4352f4a 100644 --- a/tests/lp_files/offsetconverter_nonconvex.lp +++ b/tests/lp_files/offsetconverter_nonconvex.lp @@ -1,47 +1,47 @@ \* Source Pyomo model name=Model *\ -min +min objective: -0 ONE_VAR_CONSTANT ++0 ONE_VAR_CONSTANT s.t. -c_e_BusBlock_balance(bus_electricity_0_0)_: -1 flow(diesel_genset_bus_electricity_0_0) +c_e_BusBlock_balance(bus_diesel_0_0)_: ++1 flow(bus_diesel_diesel_genset_0_0) = 0 -c_e_BusBlock_balance(bus_electricity_0_1)_: -1 flow(diesel_genset_bus_electricity_0_1) +c_e_BusBlock_balance(bus_diesel_0_1)_: ++1 flow(bus_diesel_diesel_genset_0_1) = 0 -c_e_BusBlock_balance(bus_electricity_0_2)_: -1 flow(diesel_genset_bus_electricity_0_2) +c_e_BusBlock_balance(bus_diesel_0_2)_: ++1 flow(bus_diesel_diesel_genset_0_2) = 0 -c_e_BusBlock_balance(bus_diesel_0_0)_: -1 flow(bus_diesel_diesel_genset_0_0) +c_e_BusBlock_balance(bus_electricity_0_0)_: ++1 flow(diesel_genset_bus_electricity_0_0) = 0 -c_e_BusBlock_balance(bus_diesel_0_1)_: -1 flow(bus_diesel_diesel_genset_0_1) +c_e_BusBlock_balance(bus_electricity_0_1)_: ++1 flow(diesel_genset_bus_electricity_0_1) = 0 -c_e_BusBlock_balance(bus_diesel_0_2)_: -1 flow(bus_diesel_diesel_genset_0_2) +c_e_BusBlock_balance(bus_electricity_0_2)_: ++1 flow(diesel_genset_bus_electricity_0_2) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(diesel_genset_bus_electricity_0)_: -1 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) ++1 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) -100 NonConvexFlowBlock_status(diesel_genset_bus_electricity_0) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(diesel_genset_bus_electricity_1)_: -1 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) ++1 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) -100 NonConvexFlowBlock_status(diesel_genset_bus_electricity_1) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(diesel_genset_bus_electricity_2)_: -1 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) ++1 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) -100 NonConvexFlowBlock_status(diesel_genset_bus_electricity_2) = 0 @@ -61,17 +61,17 @@ c_u_NonConvexFlowBlock_min(diesel_genset_bus_electricity_0_2)_: <= 0 c_u_NonConvexFlowBlock_max(diesel_genset_bus_electricity_0_0)_: -1 flow(diesel_genset_bus_electricity_0_0) ++1 flow(diesel_genset_bus_electricity_0_0) -1 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) <= 0 c_u_NonConvexFlowBlock_max(diesel_genset_bus_electricity_0_1)_: -1 flow(diesel_genset_bus_electricity_0_1) ++1 flow(diesel_genset_bus_electricity_0_1) -1 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) <= 0 c_u_NonConvexFlowBlock_max(diesel_genset_bus_electricity_0_2)_: -1 flow(diesel_genset_bus_electricity_0_2) ++1 flow(diesel_genset_bus_electricity_0_2) -1 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) <= 0 @@ -94,21 +94,21 @@ c_e_OffsetConverterBlock_relation(diesel_genset_bus_diesel_bus_electricity_0_2)_ = 0 bounds -1 <= ONE_VAR_CONSTANT <= 1 -0 <= flow(diesel_genset_bus_electricity_0_0) <= 100 -0 <= flow(diesel_genset_bus_electricity_0_1) <= 100 -0 <= flow(diesel_genset_bus_electricity_0_2) <= 100 -0 <= flow(bus_diesel_diesel_genset_0_0) <= +inf -0 <= flow(bus_diesel_diesel_genset_0_1) <= +inf -0 <= flow(bus_diesel_diesel_genset_0_2) <= +inf -0 <= NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) <= +inf -0 <= NonConvexFlowBlock_status(diesel_genset_bus_electricity_0) <= 1 -0 <= NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) <= +inf -0 <= NonConvexFlowBlock_status(diesel_genset_bus_electricity_1) <= 1 -0 <= NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) <= +inf -0 <= NonConvexFlowBlock_status(diesel_genset_bus_electricity_2) <= 1 + 1 <= ONE_VAR_CONSTANT <= 1 + 0 <= flow(bus_diesel_diesel_genset_0_0) <= +inf + 0 <= flow(bus_diesel_diesel_genset_0_1) <= +inf + 0 <= flow(bus_diesel_diesel_genset_0_2) <= +inf + 0 <= flow(diesel_genset_bus_electricity_0_0) <= 100 + 0 <= flow(diesel_genset_bus_electricity_0_1) <= 100 + 0 <= flow(diesel_genset_bus_electricity_0_2) <= 100 + 0 <= NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) <= +inf + 0 <= NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) <= +inf + 0 <= NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) <= +inf + 0 <= NonConvexFlowBlock_status(diesel_genset_bus_electricity_0) <= 1 + 0 <= NonConvexFlowBlock_status(diesel_genset_bus_electricity_1) <= 1 + 0 <= NonConvexFlowBlock_status(diesel_genset_bus_electricity_2) <= 1 binary -NonConvexFlowBlock_status(diesel_genset_bus_electricity_0) -NonConvexFlowBlock_status(diesel_genset_bus_electricity_1) -NonConvexFlowBlock_status(diesel_genset_bus_electricity_2) + NonConvexFlowBlock_status(diesel_genset_bus_electricity_0) + NonConvexFlowBlock_status(diesel_genset_bus_electricity_1) + NonConvexFlowBlock_status(diesel_genset_bus_electricity_2) end diff --git a/tests/lp_files/offsetconverter_nonconvex_investment.lp b/tests/lp_files/offsetconverter_nonconvex_investment.lp index 4b9755dd5..0e48b77af 100644 --- a/tests/lp_files/offsetconverter_nonconvex_investment.lp +++ b/tests/lp_files/offsetconverter_nonconvex_investment.lp @@ -1,41 +1,41 @@ \* Source Pyomo model name=Model *\ -min +min objective: -100 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) ++100 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) s.t. c_e_BusBlock_balance(bus_diesel_0_0)_: -1 flow(bus_diesel_diesel_genset_0_0) ++1 flow(bus_diesel_diesel_genset_0_0) = 0 c_e_BusBlock_balance(bus_diesel_0_1)_: -1 flow(bus_diesel_diesel_genset_0_1) ++1 flow(bus_diesel_diesel_genset_0_1) = 0 c_e_BusBlock_balance(bus_diesel_0_2)_: -1 flow(bus_diesel_diesel_genset_0_2) ++1 flow(bus_diesel_diesel_genset_0_2) = 0 c_e_BusBlock_balance(bus_electricity_0_0)_: -1 flow(diesel_genset_bus_electricity_0_0) ++1 flow(diesel_genset_bus_electricity_0_0) = 0 c_e_BusBlock_balance(bus_electricity_0_1)_: -1 flow(diesel_genset_bus_electricity_0_1) ++1 flow(diesel_genset_bus_electricity_0_1) = 0 c_e_BusBlock_balance(bus_electricity_0_2)_: -1 flow(diesel_genset_bus_electricity_0_2) ++1 flow(diesel_genset_bus_electricity_0_2) = 0 c_l_InvestNonConvexFlowBlock_minimum_investment(diesel_genset_bus_electricity_0)_: -1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) ++1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) >= 0 c_u_InvestNonConvexFlowBlock_maximum_investment(diesel_genset_bus_electricity_0)_: -1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) ++1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) <= 1234 c_u_InvestNonConvexFlowBlock_min(diesel_genset_bus_electricity_0_0)_: @@ -54,66 +54,66 @@ c_u_InvestNonConvexFlowBlock_min(diesel_genset_bus_electricity_0_2)_: <= 0 c_u_InvestNonConvexFlowBlock_max(diesel_genset_bus_electricity_0_0)_: -1 flow(diesel_genset_bus_electricity_0_0) ++1 flow(diesel_genset_bus_electricity_0_0) -1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) <= 0 c_u_InvestNonConvexFlowBlock_max(diesel_genset_bus_electricity_0_1)_: -1 flow(diesel_genset_bus_electricity_0_1) ++1 flow(diesel_genset_bus_electricity_0_1) -1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) <= 0 c_u_InvestNonConvexFlowBlock_max(diesel_genset_bus_electricity_0_2)_: -1 flow(diesel_genset_bus_electricity_0_2) ++1 flow(diesel_genset_bus_electricity_0_2) -1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) <= 0 c_u_InvestNonConvexFlowBlock_invest_nc_one(diesel_genset_bus_electricity_0_0)_: -1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) ++1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) -1234 InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_0) <= 0 c_u_InvestNonConvexFlowBlock_invest_nc_one(diesel_genset_bus_electricity_0_1)_: -1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) ++1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) -1234 InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_1) <= 0 c_u_InvestNonConvexFlowBlock_invest_nc_one(diesel_genset_bus_electricity_0_2)_: -1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) ++1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) -1234 InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_2) <= 0 c_u_InvestNonConvexFlowBlock_invest_nc_two(diesel_genset_bus_electricity_0_0)_: -1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) -1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) ++1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) <= 0 c_u_InvestNonConvexFlowBlock_invest_nc_two(diesel_genset_bus_electricity_0_1)_: -1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) -1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) ++1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) <= 0 c_u_InvestNonConvexFlowBlock_invest_nc_two(diesel_genset_bus_electricity_0_2)_: -1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) -1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) ++1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) <= 0 c_u_InvestNonConvexFlowBlock_invest_nc_three(diesel_genset_bus_electricity_0_0)_: -1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) ++1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) -1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) -1234 InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_0) ++1234 InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_0) <= 1234 c_u_InvestNonConvexFlowBlock_invest_nc_three(diesel_genset_bus_electricity_0_1)_: -1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) ++1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) -1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) -1234 InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_1) ++1234 InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_1) <= 1234 c_u_InvestNonConvexFlowBlock_invest_nc_three(diesel_genset_bus_electricity_0_2)_: -1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) ++1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) -1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) -1234 InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_2) ++1234 InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_2) <= 1234 c_e_OffsetConverterBlock_relation(diesel_genset_bus_diesel_bus_electricity_0_0)_: @@ -135,21 +135,21 @@ c_e_OffsetConverterBlock_relation(diesel_genset_bus_diesel_bus_electricity_0_2)_ = 0 bounds -0 <= InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) <= 1234 -0 <= flow(bus_diesel_diesel_genset_0_0) <= +inf -0 <= flow(bus_diesel_diesel_genset_0_1) <= +inf -0 <= flow(bus_diesel_diesel_genset_0_2) <= +inf -0 <= flow(diesel_genset_bus_electricity_0_0) <= +inf -0 <= flow(diesel_genset_bus_electricity_0_1) <= +inf -0 <= flow(diesel_genset_bus_electricity_0_2) <= +inf -0 <= InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) <= +inf -0 <= InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) <= +inf -0 <= InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) <= +inf -0 <= InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_0) <= 1 -0 <= InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_1) <= 1 -0 <= InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_2) <= 1 + 0 <= InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) <= 1234 + 0 <= flow(bus_diesel_diesel_genset_0_0) <= +inf + 0 <= flow(bus_diesel_diesel_genset_0_1) <= +inf + 0 <= flow(bus_diesel_diesel_genset_0_2) <= +inf + 0 <= flow(diesel_genset_bus_electricity_0_0) <= +inf + 0 <= flow(diesel_genset_bus_electricity_0_1) <= +inf + 0 <= flow(diesel_genset_bus_electricity_0_2) <= +inf + 0 <= InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) <= +inf + 0 <= InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) <= +inf + 0 <= InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) <= +inf + 0 <= InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_0) <= 1 + 0 <= InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_1) <= 1 + 0 <= InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_2) <= 1 binary -InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_0) -InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_1) -InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_2) + InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_0) + InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_1) + InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_2) end diff --git a/tests/lp_files/periodical_emission_limit.lp b/tests/lp_files/periodical_emission_limit.lp index a4ff0ee68..0a9d52220 100644 --- a/tests/lp_files/periodical_emission_limit.lp +++ b/tests/lp_files/periodical_emission_limit.lp @@ -7,38 +7,38 @@ objective: s.t. c_u_periodical_integral_limit(0)_: -+0.5 flow(source1_electricityBus_0_0) --1.0 flow(source1_electricityBus_0_1) -+3.5 flow(source2_electricityBus_0_0) -+3.5 flow(source2_electricityBus_0_1) ++0.5 flow(source1_electricityBus_0) +-1.0 flow(source1_electricityBus_1) ++3.5 flow(source2_electricityBus_0) ++3.5 flow(source2_electricityBus_1) <= 300 c_u_periodical_integral_limit(1)_: -+2.0 flow(source1_electricityBus_1_2) -+1 flow(source1_electricityBus_1_3) -+3.5 flow(source2_electricityBus_1_2) -+3.5 flow(source2_electricityBus_1_3) ++2.0 flow(source1_electricityBus_2) ++1 flow(source1_electricityBus_3) ++3.5 flow(source2_electricityBus_2) ++3.5 flow(source2_electricityBus_3) <= 200 c_u_periodical_integral_limit(2)_: -+0.5 flow(source1_electricityBus_2_4) -+0.5 flow(source1_electricityBus_2_5) -+3.5 flow(source2_electricityBus_2_4) -+3.5 flow(source2_electricityBus_2_5) ++0.5 flow(source1_electricityBus_4) ++0.5 flow(source1_electricityBus_5) ++3.5 flow(source2_electricityBus_4) ++3.5 flow(source2_electricityBus_5) <= 100 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(source1_electricityBus_0_0) <= 100 - 0 <= flow(source1_electricityBus_0_1) <= 100 - 0 <= flow(source2_electricityBus_0_0) <= 100 - 0 <= flow(source2_electricityBus_0_1) <= 100 - 0 <= flow(source1_electricityBus_1_2) <= 100 - 0 <= flow(source1_electricityBus_1_3) <= 100 - 0 <= flow(source2_electricityBus_1_2) <= 100 - 0 <= flow(source2_electricityBus_1_3) <= 100 - 0 <= flow(source1_electricityBus_2_4) <= 100 - 0 <= flow(source1_electricityBus_2_5) <= 100 - 0 <= flow(source2_electricityBus_2_4) <= 100 - 0 <= flow(source2_electricityBus_2_5) <= 100 + 0 <= flow(source1_electricityBus_0) <= 100 + 0 <= flow(source1_electricityBus_1) <= 100 + 0 <= flow(source1_electricityBus_2) <= 100 + 0 <= flow(source1_electricityBus_3) <= 100 + 0 <= flow(source1_electricityBus_4) <= 100 + 0 <= flow(source1_electricityBus_5) <= 100 + 0 <= flow(source2_electricityBus_0) <= 100 + 0 <= flow(source2_electricityBus_1) <= 100 + 0 <= flow(source2_electricityBus_2) <= 100 + 0 <= flow(source2_electricityBus_3) <= 100 + 0 <= flow(source2_electricityBus_4) <= 100 + 0 <= flow(source2_electricityBus_5) <= 100 end diff --git a/tests/lp_files/periodical_investment_limit.lp b/tests/lp_files/periodical_investment_limit.lp index 1a01bf380..59996067f 100644 --- a/tests/lp_files/periodical_investment_limit.lp +++ b/tests/lp_files/periodical_investment_limit.lp @@ -26,97 +26,109 @@ c_u_investment_limit_per_period(2)_: +6.1008197568652225 GenericInvestmentStorageBlock_invest(storage_invest_limit_2) <= 300 -c_e_BusBlock_balance(Bus1_0_0)_: -+1 flow(storage_invest_limit_Bus1_0_0) -+1 flow(Source_Bus1_0_0) --1 flow(Bus1_storage_invest_limit_0_0) +c_e_BusBlock_balance(Bus1_0)_: +-1 flow(Bus1_storage_invest_limit_0) ++1 flow(storage_invest_limit_Bus1_0) ++1 flow(Source_Bus1_0) = 0 -c_e_BusBlock_balance(Bus1_0_1)_: -+1 flow(storage_invest_limit_Bus1_0_1) -+1 flow(Source_Bus1_0_1) --1 flow(Bus1_storage_invest_limit_0_1) +c_e_BusBlock_balance(Bus1_1)_: +-1 flow(Bus1_storage_invest_limit_1) ++1 flow(storage_invest_limit_Bus1_1) ++1 flow(Source_Bus1_1) = 0 -c_e_BusBlock_balance(Bus1_1_2)_: -+1 flow(storage_invest_limit_Bus1_1_2) -+1 flow(Source_Bus1_1_2) --1 flow(Bus1_storage_invest_limit_1_2) +c_e_BusBlock_balance(Bus1_2)_: +-1 flow(Bus1_storage_invest_limit_2) ++1 flow(storage_invest_limit_Bus1_2) ++1 flow(Source_Bus1_2) = 0 -c_e_BusBlock_balance(Bus1_1_3)_: -+1 flow(storage_invest_limit_Bus1_1_3) -+1 flow(Source_Bus1_1_3) --1 flow(Bus1_storage_invest_limit_1_3) +c_e_BusBlock_balance(Bus1_3)_: +-1 flow(Bus1_storage_invest_limit_3) ++1 flow(storage_invest_limit_Bus1_3) ++1 flow(Source_Bus1_3) = 0 -c_e_BusBlock_balance(Bus1_2_4)_: -+1 flow(storage_invest_limit_Bus1_2_4) -+1 flow(Source_Bus1_2_4) --1 flow(Bus1_storage_invest_limit_2_4) +c_e_BusBlock_balance(Bus1_4)_: +-1 flow(Bus1_storage_invest_limit_4) ++1 flow(storage_invest_limit_Bus1_4) ++1 flow(Source_Bus1_4) = 0 -c_e_BusBlock_balance(Bus1_2_5)_: -+1 flow(storage_invest_limit_Bus1_2_5) -+1 flow(Source_Bus1_2_5) --1 flow(Bus1_storage_invest_limit_2_5) +c_e_BusBlock_balance(Bus1_5)_: +-1 flow(Bus1_storage_invest_limit_5) ++1 flow(storage_invest_limit_Bus1_5) ++1 flow(Source_Bus1_5) += 0 + +c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: +-1 InvestmentFlowBlock_invest(Source_Bus1_0) ++1 InvestmentFlowBlock_total(Source_Bus1_0) += 0 + +c_e_InvestmentFlowBlock_total_rule(Source_Bus1_1)_: +-1 InvestmentFlowBlock_invest(Source_Bus1_1) +-1 InvestmentFlowBlock_total(Source_Bus1_0) ++1 InvestmentFlowBlock_total(Source_Bus1_1) ++1 InvestmentFlowBlock_old(Source_Bus1_1) += 0 + +c_e_InvestmentFlowBlock_total_rule(Source_Bus1_2)_: +-1 InvestmentFlowBlock_invest(Source_Bus1_2) +-1 InvestmentFlowBlock_total(Source_Bus1_1) ++1 InvestmentFlowBlock_total(Source_Bus1_2) ++1 InvestmentFlowBlock_old(Source_Bus1_2) = 0 c_e_InvestmentFlowBlock_total_rule(storage_invest_limit_Bus1_0)_: -+1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_0) -1 InvestmentFlowBlock_invest(storage_invest_limit_Bus1_0) ++1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_0) = 0 c_e_InvestmentFlowBlock_total_rule(storage_invest_limit_Bus1_1)_: +-1 InvestmentFlowBlock_invest(storage_invest_limit_Bus1_1) -1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_0) +1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_1) --1 InvestmentFlowBlock_invest(storage_invest_limit_Bus1_1) +1 InvestmentFlowBlock_old(storage_invest_limit_Bus1_1) = 0 c_e_InvestmentFlowBlock_total_rule(storage_invest_limit_Bus1_2)_: +-1 InvestmentFlowBlock_invest(storage_invest_limit_Bus1_2) -1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_1) +1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_2) --1 InvestmentFlowBlock_invest(storage_invest_limit_Bus1_2) +1 InvestmentFlowBlock_old(storage_invest_limit_Bus1_2) = 0 c_e_InvestmentFlowBlock_total_rule(Bus1_storage_invest_limit_0)_: -+1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) -1 InvestmentFlowBlock_invest(Bus1_storage_invest_limit_0) ++1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) = 0 c_e_InvestmentFlowBlock_total_rule(Bus1_storage_invest_limit_1)_: +-1 InvestmentFlowBlock_invest(Bus1_storage_invest_limit_1) -1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) +1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_1) --1 InvestmentFlowBlock_invest(Bus1_storage_invest_limit_1) +1 InvestmentFlowBlock_old(Bus1_storage_invest_limit_1) = 0 c_e_InvestmentFlowBlock_total_rule(Bus1_storage_invest_limit_2)_: +-1 InvestmentFlowBlock_invest(Bus1_storage_invest_limit_2) -1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_1) +1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_2) --1 InvestmentFlowBlock_invest(Bus1_storage_invest_limit_2) +1 InvestmentFlowBlock_old(Bus1_storage_invest_limit_2) = 0 -c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: --1 InvestmentFlowBlock_invest(Source_Bus1_0) -+1 InvestmentFlowBlock_total(Source_Bus1_0) +c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_0)_: ++1 InvestmentFlowBlock_old_end(Source_Bus1_0) = 0 -c_e_InvestmentFlowBlock_total_rule(Source_Bus1_1)_: --1 InvestmentFlowBlock_invest(Source_Bus1_1) --1 InvestmentFlowBlock_total(Source_Bus1_0) -+1 InvestmentFlowBlock_total(Source_Bus1_1) -+1 InvestmentFlowBlock_old(Source_Bus1_1) +c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_1)_: ++1 InvestmentFlowBlock_old_end(Source_Bus1_1) = 0 -c_e_InvestmentFlowBlock_total_rule(Source_Bus1_2)_: --1 InvestmentFlowBlock_invest(Source_Bus1_2) --1 InvestmentFlowBlock_total(Source_Bus1_1) -+1 InvestmentFlowBlock_total(Source_Bus1_2) -+1 InvestmentFlowBlock_old(Source_Bus1_2) +c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_2)_: ++1 InvestmentFlowBlock_old_end(Source_Bus1_2) = 0 c_e_InvestmentFlowBlock_old_rule_end(storage_invest_limit_Bus1_0)_: @@ -143,16 +155,16 @@ c_e_InvestmentFlowBlock_old_rule_end(Bus1_storage_invest_limit_2)_: +1 InvestmentFlowBlock_old_end(Bus1_storage_invest_limit_2) = 0 -c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_0)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_0) +c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_0)_: ++1 InvestmentFlowBlock_old_exo(Source_Bus1_0) = 0 -c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_1)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_1) +c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_1)_: ++1 InvestmentFlowBlock_old_exo(Source_Bus1_1) = 0 -c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_2)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_2) +c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_2)_: ++1 InvestmentFlowBlock_old_exo(Source_Bus1_2) = 0 c_e_InvestmentFlowBlock_old_rule_exo(storage_invest_limit_Bus1_0)_: @@ -179,22 +191,28 @@ c_e_InvestmentFlowBlock_old_rule_exo(Bus1_storage_invest_limit_2)_: +1 InvestmentFlowBlock_old_exo(Bus1_storage_invest_limit_2) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_0)_: -+1 InvestmentFlowBlock_old_exo(Source_Bus1_0) +c_e_InvestmentFlowBlock_old_rule(Source_Bus1_0)_: ++1 InvestmentFlowBlock_old(Source_Bus1_0) +-1 InvestmentFlowBlock_old_end(Source_Bus1_0) +-1 InvestmentFlowBlock_old_exo(Source_Bus1_0) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_1)_: -+1 InvestmentFlowBlock_old_exo(Source_Bus1_1) +c_e_InvestmentFlowBlock_old_rule(Source_Bus1_1)_: ++1 InvestmentFlowBlock_old(Source_Bus1_1) +-1 InvestmentFlowBlock_old_end(Source_Bus1_1) +-1 InvestmentFlowBlock_old_exo(Source_Bus1_1) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_2)_: -+1 InvestmentFlowBlock_old_exo(Source_Bus1_2) +c_e_InvestmentFlowBlock_old_rule(Source_Bus1_2)_: ++1 InvestmentFlowBlock_old(Source_Bus1_2) +-1 InvestmentFlowBlock_old_end(Source_Bus1_2) +-1 InvestmentFlowBlock_old_exo(Source_Bus1_2) = 0 c_e_InvestmentFlowBlock_old_rule(storage_invest_limit_Bus1_0)_: ++1 InvestmentFlowBlock_old(storage_invest_limit_Bus1_0) -1 InvestmentFlowBlock_old_end(storage_invest_limit_Bus1_0) -1 InvestmentFlowBlock_old_exo(storage_invest_limit_Bus1_0) -+1 InvestmentFlowBlock_old(storage_invest_limit_Bus1_0) = 0 c_e_InvestmentFlowBlock_old_rule(storage_invest_limit_Bus1_1)_: @@ -210,9 +228,9 @@ c_e_InvestmentFlowBlock_old_rule(storage_invest_limit_Bus1_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(Bus1_storage_invest_limit_0)_: ++1 InvestmentFlowBlock_old(Bus1_storage_invest_limit_0) -1 InvestmentFlowBlock_old_end(Bus1_storage_invest_limit_0) -1 InvestmentFlowBlock_old_exo(Bus1_storage_invest_limit_0) -+1 InvestmentFlowBlock_old(Bus1_storage_invest_limit_0) = 0 c_e_InvestmentFlowBlock_old_rule(Bus1_storage_invest_limit_1)_: @@ -227,114 +245,96 @@ c_e_InvestmentFlowBlock_old_rule(Bus1_storage_invest_limit_2)_: -1 InvestmentFlowBlock_old_exo(Bus1_storage_invest_limit_2) = 0 -c_e_InvestmentFlowBlock_old_rule(Source_Bus1_0)_: --1 InvestmentFlowBlock_old_end(Source_Bus1_0) --1 InvestmentFlowBlock_old_exo(Source_Bus1_0) -+1 InvestmentFlowBlock_old(Source_Bus1_0) -= 0 +c_u_InvestmentFlowBlock_max(Source_Bus1_0_0)_: ++1 flow(Source_Bus1_0) +-1 InvestmentFlowBlock_total(Source_Bus1_0) +<= 0 -c_e_InvestmentFlowBlock_old_rule(Source_Bus1_1)_: -+1 InvestmentFlowBlock_old(Source_Bus1_1) --1 InvestmentFlowBlock_old_end(Source_Bus1_1) --1 InvestmentFlowBlock_old_exo(Source_Bus1_1) -= 0 +c_u_InvestmentFlowBlock_max(Source_Bus1_0_1)_: ++1 flow(Source_Bus1_1) +-1 InvestmentFlowBlock_total(Source_Bus1_0) +<= 0 -c_e_InvestmentFlowBlock_old_rule(Source_Bus1_2)_: -+1 InvestmentFlowBlock_old(Source_Bus1_2) --1 InvestmentFlowBlock_old_end(Source_Bus1_2) --1 InvestmentFlowBlock_old_exo(Source_Bus1_2) -= 0 +c_u_InvestmentFlowBlock_max(Source_Bus1_1_2)_: ++1 flow(Source_Bus1_2) +-1 InvestmentFlowBlock_total(Source_Bus1_1) +<= 0 + +c_u_InvestmentFlowBlock_max(Source_Bus1_1_3)_: ++1 flow(Source_Bus1_3) +-1 InvestmentFlowBlock_total(Source_Bus1_1) +<= 0 + +c_u_InvestmentFlowBlock_max(Source_Bus1_2_4)_: ++1 flow(Source_Bus1_4) +-1 InvestmentFlowBlock_total(Source_Bus1_2) +<= 0 + +c_u_InvestmentFlowBlock_max(Source_Bus1_2_5)_: ++1 flow(Source_Bus1_5) +-1 InvestmentFlowBlock_total(Source_Bus1_2) +<= 0 c_u_InvestmentFlowBlock_max(storage_invest_limit_Bus1_0_0)_: -+1 flow(storage_invest_limit_Bus1_0_0) ++1 flow(storage_invest_limit_Bus1_0) -1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(storage_invest_limit_Bus1_0_1)_: -+1 flow(storage_invest_limit_Bus1_0_1) ++1 flow(storage_invest_limit_Bus1_1) -1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(storage_invest_limit_Bus1_1_2)_: -+1 flow(storage_invest_limit_Bus1_1_2) ++1 flow(storage_invest_limit_Bus1_2) -1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_1) <= 0 c_u_InvestmentFlowBlock_max(storage_invest_limit_Bus1_1_3)_: -+1 flow(storage_invest_limit_Bus1_1_3) ++1 flow(storage_invest_limit_Bus1_3) -1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_1) <= 0 c_u_InvestmentFlowBlock_max(storage_invest_limit_Bus1_2_4)_: -+1 flow(storage_invest_limit_Bus1_2_4) ++1 flow(storage_invest_limit_Bus1_4) -1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_2) <= 0 c_u_InvestmentFlowBlock_max(storage_invest_limit_Bus1_2_5)_: -+1 flow(storage_invest_limit_Bus1_2_5) ++1 flow(storage_invest_limit_Bus1_5) -1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_2) <= 0 c_u_InvestmentFlowBlock_max(Bus1_storage_invest_limit_0_0)_: -+1 flow(Bus1_storage_invest_limit_0_0) ++1 flow(Bus1_storage_invest_limit_0) -1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) <= 0 c_u_InvestmentFlowBlock_max(Bus1_storage_invest_limit_0_1)_: -+1 flow(Bus1_storage_invest_limit_0_1) ++1 flow(Bus1_storage_invest_limit_1) -1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) <= 0 c_u_InvestmentFlowBlock_max(Bus1_storage_invest_limit_1_2)_: -+1 flow(Bus1_storage_invest_limit_1_2) ++1 flow(Bus1_storage_invest_limit_2) -1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_1) <= 0 c_u_InvestmentFlowBlock_max(Bus1_storage_invest_limit_1_3)_: -+1 flow(Bus1_storage_invest_limit_1_3) ++1 flow(Bus1_storage_invest_limit_3) -1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_1) <= 0 c_u_InvestmentFlowBlock_max(Bus1_storage_invest_limit_2_4)_: -+1 flow(Bus1_storage_invest_limit_2_4) ++1 flow(Bus1_storage_invest_limit_4) -1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_2) <= 0 c_u_InvestmentFlowBlock_max(Bus1_storage_invest_limit_2_5)_: -+1 flow(Bus1_storage_invest_limit_2_5) ++1 flow(Bus1_storage_invest_limit_5) -1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_2) <= 0 -c_u_InvestmentFlowBlock_max(Source_Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) --1 InvestmentFlowBlock_total(Source_Bus1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(Source_Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) --1 InvestmentFlowBlock_total(Source_Bus1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(Source_Bus1_1_2)_: -+1 flow(Source_Bus1_1_2) --1 InvestmentFlowBlock_total(Source_Bus1_1) -<= 0 - -c_u_InvestmentFlowBlock_max(Source_Bus1_1_3)_: -+1 flow(Source_Bus1_1_3) --1 InvestmentFlowBlock_total(Source_Bus1_1) -<= 0 - -c_u_InvestmentFlowBlock_max(Source_Bus1_2_4)_: -+1 flow(Source_Bus1_2_4) --1 InvestmentFlowBlock_total(Source_Bus1_2) -<= 0 - -c_u_InvestmentFlowBlock_max(Source_Bus1_2_5)_: -+1 flow(Source_Bus1_2_5) --1 InvestmentFlowBlock_total(Source_Bus1_2) -<= 0 - c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_invest_limit_0)_: -1 GenericInvestmentStorageBlock_invest(storage_invest_limit_0) +1 GenericInvestmentStorageBlock_total(storage_invest_limit_0) @@ -379,9 +379,9 @@ c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_invest_limit_2)_: = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage_invest_limit_0)_: ++1 GenericInvestmentStorageBlock_old(storage_invest_limit_0) -1 GenericInvestmentStorageBlock_old_end(storage_invest_limit_0) -1 GenericInvestmentStorageBlock_old_exo(storage_invest_limit_0) -+1 GenericInvestmentStorageBlock_old(storage_invest_limit_0) = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage_invest_limit_1)_: @@ -401,36 +401,36 @@ c_e_GenericInvestmentStorageBlock_initially_empty(storage_invest_limit_0)_: = 0 c_e_GenericInvestmentStorageBlock_balance(storage_invest_limit_0_1)_: -+1 flow(storage_invest_limit_Bus1_0_1) --1 flow(Bus1_storage_invest_limit_0_1) +-1 flow(Bus1_storage_invest_limit_1) ++1 flow(storage_invest_limit_Bus1_1) -1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_0) +1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_invest_limit_1_2)_: -+1 flow(storage_invest_limit_Bus1_1_2) --1 flow(Bus1_storage_invest_limit_1_2) +-1 flow(Bus1_storage_invest_limit_2) ++1 flow(storage_invest_limit_Bus1_2) -1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_1) +1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_2) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_invest_limit_1_3)_: -+1 flow(storage_invest_limit_Bus1_1_3) --1 flow(Bus1_storage_invest_limit_1_3) +-1 flow(Bus1_storage_invest_limit_3) ++1 flow(storage_invest_limit_Bus1_3) -1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_2) +1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_3) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_invest_limit_2_4)_: -+1 flow(storage_invest_limit_Bus1_2_4) --1 flow(Bus1_storage_invest_limit_2_4) +-1 flow(Bus1_storage_invest_limit_4) ++1 flow(storage_invest_limit_Bus1_4) -1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_3) +1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_4) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_invest_limit_2_5)_: -+1 flow(storage_invest_limit_Bus1_2_5) --1 flow(Bus1_storage_invest_limit_2_5) +-1 flow(Bus1_storage_invest_limit_5) ++1 flow(storage_invest_limit_Bus1_5) -1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_4) +1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_5) = 0 @@ -499,73 +499,74 @@ bounds 0 <= InvestmentFlowBlock_invest(Source_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_invest(Source_Bus1_1) <= +inf 0 <= InvestmentFlowBlock_invest(Source_Bus1_2) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_invest_limit_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_invest_limit_Bus1_1) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_invest_limit_Bus1_2) <= +inf + 0 <= InvestmentFlowBlock_invest(Bus1_storage_invest_limit_0) <= +inf + 0 <= InvestmentFlowBlock_invest(Bus1_storage_invest_limit_1) <= +inf + 0 <= InvestmentFlowBlock_invest(Bus1_storage_invest_limit_2) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage_invest_limit_0) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage_invest_limit_1) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage_invest_limit_2) <= +inf - 0 <= flow(storage_invest_limit_Bus1_0_0) <= +inf - 0 <= flow(Source_Bus1_0_0) <= +inf - 0 <= flow(Bus1_storage_invest_limit_0_0) <= +inf - 0 <= flow(storage_invest_limit_Bus1_0_1) <= +inf - 0 <= flow(Source_Bus1_0_1) <= +inf - 0 <= flow(Bus1_storage_invest_limit_0_1) <= +inf - 0 <= flow(storage_invest_limit_Bus1_1_2) <= +inf - 0 <= flow(Source_Bus1_1_2) <= +inf - 0 <= flow(Bus1_storage_invest_limit_1_2) <= +inf - 0 <= flow(storage_invest_limit_Bus1_1_3) <= +inf - 0 <= flow(Source_Bus1_1_3) <= +inf - 0 <= flow(Bus1_storage_invest_limit_1_3) <= +inf - 0 <= flow(storage_invest_limit_Bus1_2_4) <= +inf - 0 <= flow(Source_Bus1_2_4) <= +inf - 0 <= flow(Bus1_storage_invest_limit_2_4) <= +inf - 0 <= flow(storage_invest_limit_Bus1_2_5) <= +inf - 0 <= flow(Source_Bus1_2_5) <= +inf - 0 <= flow(Bus1_storage_invest_limit_2_5) <= +inf + 0 <= flow(Bus1_storage_invest_limit_0) <= +inf + 0 <= flow(Bus1_storage_invest_limit_1) <= +inf + 0 <= flow(Bus1_storage_invest_limit_2) <= +inf + 0 <= flow(Bus1_storage_invest_limit_3) <= +inf + 0 <= flow(Bus1_storage_invest_limit_4) <= +inf + 0 <= flow(Bus1_storage_invest_limit_5) <= +inf + 0 <= flow(storage_invest_limit_Bus1_0) <= +inf + 0 <= flow(storage_invest_limit_Bus1_1) <= +inf + 0 <= flow(storage_invest_limit_Bus1_2) <= +inf + 0 <= flow(storage_invest_limit_Bus1_3) <= +inf + 0 <= flow(storage_invest_limit_Bus1_4) <= +inf + 0 <= flow(storage_invest_limit_Bus1_5) <= +inf + 0 <= flow(Source_Bus1_0) <= +inf + 0 <= flow(Source_Bus1_1) <= +inf + 0 <= flow(Source_Bus1_2) <= +inf + 0 <= flow(Source_Bus1_3) <= +inf + 0 <= flow(Source_Bus1_4) <= +inf + 0 <= flow(Source_Bus1_5) <= +inf + 0 <= InvestmentFlowBlock_total(Source_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_total(Source_Bus1_1) <= +inf + 0 <= InvestmentFlowBlock_total(Source_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_total(storage_invest_limit_Bus1_0) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_invest_limit_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_total(storage_invest_limit_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_invest_limit_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_old(storage_invest_limit_Bus1_1) <= +inf 0 <= InvestmentFlowBlock_total(storage_invest_limit_Bus1_2) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_invest_limit_Bus1_2) <= +inf - 0 <= InvestmentFlowBlock_old(storage_invest_limit_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) <= +inf - 0 <= InvestmentFlowBlock_invest(Bus1_storage_invest_limit_0) <= +inf 0 <= InvestmentFlowBlock_total(Bus1_storage_invest_limit_1) <= +inf - 0 <= InvestmentFlowBlock_invest(Bus1_storage_invest_limit_1) <= +inf - 0 <= InvestmentFlowBlock_old(Bus1_storage_invest_limit_1) <= +inf 0 <= InvestmentFlowBlock_total(Bus1_storage_invest_limit_2) <= +inf - 0 <= InvestmentFlowBlock_invest(Bus1_storage_invest_limit_2) <= +inf - 0 <= InvestmentFlowBlock_old(Bus1_storage_invest_limit_2) <= +inf - 0 <= InvestmentFlowBlock_total(Source_Bus1_0) <= +inf - 0 <= InvestmentFlowBlock_total(Source_Bus1_1) <= +inf + 0 <= InvestmentFlowBlock_old(Source_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_old(Source_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_total(Source_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_old(Source_Bus1_2) <= +inf + 0 <= InvestmentFlowBlock_old(storage_invest_limit_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_old(storage_invest_limit_Bus1_1) <= +inf + 0 <= InvestmentFlowBlock_old(storage_invest_limit_Bus1_2) <= +inf + 0 <= InvestmentFlowBlock_old(Bus1_storage_invest_limit_0) <= +inf + 0 <= InvestmentFlowBlock_old(Bus1_storage_invest_limit_1) <= +inf + 0 <= InvestmentFlowBlock_old(Bus1_storage_invest_limit_2) <= +inf + 0 <= InvestmentFlowBlock_old_end(Source_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_old_end(Source_Bus1_1) <= +inf + 0 <= InvestmentFlowBlock_old_end(Source_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_old_end(storage_invest_limit_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_old_end(storage_invest_limit_Bus1_1) <= +inf 0 <= InvestmentFlowBlock_old_end(storage_invest_limit_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_old_end(Bus1_storage_invest_limit_0) <= +inf 0 <= InvestmentFlowBlock_old_end(Bus1_storage_invest_limit_1) <= +inf 0 <= InvestmentFlowBlock_old_end(Bus1_storage_invest_limit_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(Source_Bus1_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(Source_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(Source_Bus1_2) <= +inf + 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_1) <= +inf + 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_old_exo(storage_invest_limit_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(storage_invest_limit_Bus1_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(storage_invest_limit_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_old_exo(Bus1_storage_invest_limit_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(Bus1_storage_invest_limit_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(Bus1_storage_invest_limit_2) <= +inf - 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_0) <= +inf - 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_2) <= +inf - 0 <= InvestmentFlowBlock_old(storage_invest_limit_Bus1_0) <= +inf - 0 <= InvestmentFlowBlock_old(Bus1_storage_invest_limit_0) <= +inf - 0 <= InvestmentFlowBlock_old(Source_Bus1_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_invest_limit_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_invest_limit_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_invest_limit_1) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_invest_limit_2) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_invest_limit_0) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_invest_limit_1) <= +inf 0 <= GenericInvestmentStorageBlock_old(storage_invest_limit_2) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage_invest_limit_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage_invest_limit_1) <= +inf @@ -573,7 +574,6 @@ bounds 0 <= GenericInvestmentStorageBlock_old_exo(storage_invest_limit_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage_invest_limit_1) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage_invest_limit_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_invest_limit_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_invest_limit_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_invest_limit_1) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_invest_limit_2) <= +inf diff --git a/tests/lp_files/periodical_investment_limit_with_dsm_DIW.lp b/tests/lp_files/periodical_investment_limit_with_dsm_DIW.lp index 1fe4aaa5c..d54ad5394 100644 --- a/tests/lp_files/periodical_investment_limit_with_dsm_DIW.lp +++ b/tests/lp_files/periodical_investment_limit_with_dsm_DIW.lp @@ -6,47 +6,47 @@ objective: +5.432444590842506 InvestmentFlowBlock_invest(Source_Bus1_1) +2.6893290053675805 InvestmentFlowBlock_invest(Source_Bus1_2) +0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_0) ++0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_1) ++0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_2) ++0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_3) ++0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_4) ++0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_5) +0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_0) ++0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_1) ++0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_2) ++0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_3) ++0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_4) ++0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_5) +0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_0) ++0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_1) ++0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_2) ++0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_3) ++0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_4) ++0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_5) +0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_0) ++0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_1) ++0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_2) ++0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_3) ++0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_4) ++0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_5) +0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_0) ++0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_1) ++0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_2) ++0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_3) ++0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_4) ++0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_5) +0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_0) ++0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_1) ++0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_2) ++0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_3) ++0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_4) ++0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_5) +0.5 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_0) +0.5 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) -+0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_1) -+0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_1) -+0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_1) -+0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_1) -+0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_1) -+0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_1) +0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) -+0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_2) -+0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_2) -+0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_2) -+0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_2) -+0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_2) -+0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_2) +0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_3) -+0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_3) -+0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_3) -+0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_3) -+0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_3) -+0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_3) -+0.49019607843137253 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_3) +0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_4) -+0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_4) -+0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_4) -+0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_4) -+0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_4) -+0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_4) -+0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_4) +0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_5) -+0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_5) -+0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_5) -+0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_5) -+0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_5) -+0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_5) -+0.48058439061899266 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_5) +99.99999999999999 SinkDSMDIWInvestmentBlock_invest(sink_dsm_DIW_0) +98.03921568627449 SinkDSMDIWInvestmentBlock_invest(sink_dsm_DIW_1) +48.534265191225046 SinkDSMDIWInvestmentBlock_invest(sink_dsm_DIW_2) @@ -68,34 +68,34 @@ c_u_investment_limit_per_period(2)_: +48.534265191225046 SinkDSMDIWInvestmentBlock_invest(sink_dsm_DIW_2) <= 200 -c_e_BusBlock_balance(Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) --1 flow(Bus1_sink_dsm_DIW_0_0) +c_e_BusBlock_balance(Bus1_0)_: +-1 flow(Bus1_sink_dsm_DIW_0) ++1 flow(Source_Bus1_0) = 0 -c_e_BusBlock_balance(Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) --1 flow(Bus1_sink_dsm_DIW_0_1) +c_e_BusBlock_balance(Bus1_1)_: +-1 flow(Bus1_sink_dsm_DIW_1) ++1 flow(Source_Bus1_1) = 0 -c_e_BusBlock_balance(Bus1_1_2)_: -+1 flow(Source_Bus1_1_2) --1 flow(Bus1_sink_dsm_DIW_1_2) +c_e_BusBlock_balance(Bus1_2)_: +-1 flow(Bus1_sink_dsm_DIW_2) ++1 flow(Source_Bus1_2) = 0 -c_e_BusBlock_balance(Bus1_1_3)_: -+1 flow(Source_Bus1_1_3) --1 flow(Bus1_sink_dsm_DIW_1_3) +c_e_BusBlock_balance(Bus1_3)_: +-1 flow(Bus1_sink_dsm_DIW_3) ++1 flow(Source_Bus1_3) = 0 -c_e_BusBlock_balance(Bus1_2_4)_: -+1 flow(Source_Bus1_2_4) --1 flow(Bus1_sink_dsm_DIW_2_4) +c_e_BusBlock_balance(Bus1_4)_: +-1 flow(Bus1_sink_dsm_DIW_4) ++1 flow(Source_Bus1_4) = 0 -c_e_BusBlock_balance(Bus1_2_5)_: -+1 flow(Source_Bus1_2_5) --1 flow(Bus1_sink_dsm_DIW_2_5) +c_e_BusBlock_balance(Bus1_5)_: +-1 flow(Bus1_sink_dsm_DIW_5) ++1 flow(Source_Bus1_5) = 0 c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: @@ -142,9 +142,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(Source_Bus1_0)_: ++1 InvestmentFlowBlock_old(Source_Bus1_0) -1 InvestmentFlowBlock_old_end(Source_Bus1_0) -1 InvestmentFlowBlock_old_exo(Source_Bus1_0) -+1 InvestmentFlowBlock_old(Source_Bus1_0) = 0 c_e_InvestmentFlowBlock_old_rule(Source_Bus1_1)_: @@ -160,32 +160,32 @@ c_e_InvestmentFlowBlock_old_rule(Source_Bus1_2)_: = 0 c_u_InvestmentFlowBlock_max(Source_Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) ++1 flow(Source_Bus1_0) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) ++1 flow(Source_Bus1_1) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_1_2)_: -+1 flow(Source_Bus1_1_2) ++1 flow(Source_Bus1_2) -1 InvestmentFlowBlock_total(Source_Bus1_1) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_1_3)_: -+1 flow(Source_Bus1_1_3) ++1 flow(Source_Bus1_3) -1 InvestmentFlowBlock_total(Source_Bus1_1) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_2_4)_: -+1 flow(Source_Bus1_2_4) ++1 flow(Source_Bus1_4) -1 InvestmentFlowBlock_total(Source_Bus1_2) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_2_5)_: -+1 flow(Source_Bus1_2_5) ++1 flow(Source_Bus1_5) -1 InvestmentFlowBlock_total(Source_Bus1_2) <= 0 @@ -234,9 +234,9 @@ c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(sink_dsm_DIW_2)_: = 0 c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(sink_dsm_DIW_0)_: ++1 SinkDSMDIWInvestmentBlock_old(sink_dsm_DIW_0) -1 SinkDSMDIWInvestmentBlock_old_end(sink_dsm_DIW_0) -1 SinkDSMDIWInvestmentBlock_old_exo(sink_dsm_DIW_0) -+1 SinkDSMDIWInvestmentBlock_old(sink_dsm_DIW_0) = 0 c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(sink_dsm_DIW_1)_: @@ -278,93 +278,93 @@ c_e_SinkDSMDIWInvestmentBlock_shift_shed_vars(sink_dsm_DIW_5)_: c_e_SinkDSMDIWInvestmentBlock_input_output_relation(sink_dsm_DIW_0_0)_: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_0) --1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_0) -+1 flow(Bus1_sink_dsm_DIW_0_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_0) +-1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_0) ++1 flow(Bus1_sink_dsm_DIW_0) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(sink_dsm_DIW_0_1)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_1) -+1 flow(Bus1_sink_dsm_DIW_0_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_1) +-1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) ++1 flow(Bus1_sink_dsm_DIW_1) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(sink_dsm_DIW_1_2)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_2) -+1 flow(Bus1_sink_dsm_DIW_1_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_2) +-1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) ++1 flow(Bus1_sink_dsm_DIW_2) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(sink_dsm_DIW_1_3)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_3) -+1 flow(Bus1_sink_dsm_DIW_1_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_3) +-1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_3) ++1 flow(Bus1_sink_dsm_DIW_3) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(sink_dsm_DIW_2_4)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_4) -+1 flow(Bus1_sink_dsm_DIW_2_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_4) +-1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_4) ++1 flow(Bus1_sink_dsm_DIW_4) = 1 c_e_SinkDSMDIWInvestmentBlock_input_output_relation(sink_dsm_DIW_2_5)_: --1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_5) -+1 flow(Bus1_sink_dsm_DIW_2_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_5) +-1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_5) ++1 flow(Bus1_sink_dsm_DIW_5) = 1 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(sink_dsm_DIW_0)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_0) -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_0) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_1) ++1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_0) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(sink_dsm_DIW_1)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_0) -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_1) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_2) ++1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(sink_dsm_DIW_2)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_1) -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_2) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_3) ++1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(sink_dsm_DIW_3)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_2) -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_3) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_3) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_4) ++1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_3) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(sink_dsm_DIW_4)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_3) -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_4) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_4) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_5) ++1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_4) = 0 c_e_SinkDSMDIWInvestmentBlock_dsm_updo_constraint(sink_dsm_DIW_5)_: -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_4) -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_5) -1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_5) ++1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_5) = 0 c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(sink_dsm_DIW_0_0)_: @@ -400,99 +400,99 @@ c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(sink_dsm_DIW_2_5)_: c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(sink_dsm_DIW_0_0)_: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_0) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_0) +-0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) <= 0 c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(sink_dsm_DIW_0_1)_: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_1) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_1) +-0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) <= 0 c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(sink_dsm_DIW_1_2)_: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_2) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_2) +-0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_1) <= 0 c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(sink_dsm_DIW_1_3)_: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_3) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_3) +-0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_1) <= 0 c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(sink_dsm_DIW_2_4)_: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_4) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_4) +-0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_2) <= 0 c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(sink_dsm_DIW_2_5)_: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_5) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_5) +-0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_2) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(sink_dsm_DIW_0_0)_: +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_0) ++1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_0) +1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_0) -0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_0) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(sink_dsm_DIW_0_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_1) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_1) ++1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) +-0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(sink_dsm_DIW_1_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_2) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_2) ++1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) +-0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_1) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(sink_dsm_DIW_1_3)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_3) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_3) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_1) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_3) ++1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_3) +-0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_1) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(sink_dsm_DIW_2_4)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_4) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_4) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_4) ++1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_4) +-0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_2) <= 0 c_u_SinkDSMDIWInvestmentBlock_C2_constraint(sink_dsm_DIW_2_5)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_5) +1 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_5) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_2) +1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_5) ++1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_5) +-0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_2) <= 0 c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(sink_dsm_DIW_0)_: @@ -516,66 +516,73 @@ bounds 0 <= InvestmentFlowBlock_invest(Source_Bus1_1) <= +inf 0 <= InvestmentFlowBlock_invest(Source_Bus1_2) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_5) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_1) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_3) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_4) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_5) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_1) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_2) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_3) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_4) <= +inf 0 <= SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_0_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_1_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_5) <= +inf 33 <= SinkDSMDIWInvestmentBlock_invest(sink_dsm_DIW_0) <= 100 33 <= SinkDSMDIWInvestmentBlock_invest(sink_dsm_DIW_1) <= 100 33 <= SinkDSMDIWInvestmentBlock_invest(sink_dsm_DIW_2) <= 100 - 0 <= flow(Source_Bus1_0_0) <= +inf - 0 <= flow(Bus1_sink_dsm_DIW_0_0) <= +inf - 0 <= flow(Source_Bus1_0_1) <= +inf - 0 <= flow(Bus1_sink_dsm_DIW_0_1) <= +inf - 0 <= flow(Source_Bus1_1_2) <= +inf - 0 <= flow(Bus1_sink_dsm_DIW_1_2) <= +inf - 0 <= flow(Source_Bus1_1_3) <= +inf - 0 <= flow(Bus1_sink_dsm_DIW_1_3) <= +inf - 0 <= flow(Source_Bus1_2_4) <= +inf - 0 <= flow(Bus1_sink_dsm_DIW_2_4) <= +inf - 0 <= flow(Source_Bus1_2_5) <= +inf - 0 <= flow(Bus1_sink_dsm_DIW_2_5) <= +inf + 0 <= flow(Bus1_sink_dsm_DIW_0) <= +inf + 0 <= flow(Bus1_sink_dsm_DIW_1) <= +inf + 0 <= flow(Bus1_sink_dsm_DIW_2) <= +inf + 0 <= flow(Bus1_sink_dsm_DIW_3) <= +inf + 0 <= flow(Bus1_sink_dsm_DIW_4) <= +inf + 0 <= flow(Bus1_sink_dsm_DIW_5) <= +inf + 0 <= flow(Source_Bus1_0) <= +inf + 0 <= flow(Source_Bus1_1) <= +inf + 0 <= flow(Source_Bus1_2) <= +inf + 0 <= flow(Source_Bus1_3) <= +inf + 0 <= flow(Source_Bus1_4) <= +inf + 0 <= flow(Source_Bus1_5) <= +inf 0 <= InvestmentFlowBlock_total(Source_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_total(Source_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_old(Source_Bus1_1) <= +inf 0 <= InvestmentFlowBlock_total(Source_Bus1_2) <= +inf + 0 <= InvestmentFlowBlock_old(Source_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_old(Source_Bus1_1) <= +inf 0 <= InvestmentFlowBlock_old(Source_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_old_end(Source_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_old_end(Source_Bus1_1) <= +inf @@ -583,11 +590,11 @@ bounds 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_2) <= +inf - 0 <= InvestmentFlowBlock_old(Source_Bus1_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old(sink_dsm_DIW_1) <= +inf 0 <= SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_2) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_old(sink_dsm_DIW_0) <= +inf + 0 <= SinkDSMDIWInvestmentBlock_old(sink_dsm_DIW_1) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old(sink_dsm_DIW_2) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old_end(sink_dsm_DIW_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old_end(sink_dsm_DIW_1) <= +inf @@ -595,11 +602,4 @@ bounds 0 <= SinkDSMDIWInvestmentBlock_old_exo(sink_dsm_DIW_0) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old_exo(sink_dsm_DIW_1) <= +inf 0 <= SinkDSMDIWInvestmentBlock_old_exo(sink_dsm_DIW_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old(sink_dsm_DIW_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_5) <= +inf end diff --git a/tests/lp_files/periodical_investment_limit_with_dsm_DLR.lp b/tests/lp_files/periodical_investment_limit_with_dsm_DLR.lp index 3d3d8a7d3..b71066c82 100644 --- a/tests/lp_files/periodical_investment_limit_with_dsm_DLR.lp +++ b/tests/lp_files/periodical_investment_limit_with_dsm_DLR.lp @@ -6,29 +6,29 @@ objective: +5.432444590842506 InvestmentFlowBlock_invest(Source_Bus1_1) +2.6893290053675805 InvestmentFlowBlock_invest(Source_Bus1_2) +0.5 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_0) ++0.5 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) ++0.49019607843137253 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) ++0.49019607843137253 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_3) ++0.48058439061899266 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_4) ++0.48058439061899266 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_5) +0.5 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_0) ++0.5 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) ++0.49019607843137253 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) ++0.49019607843137253 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_3) ++0.48058439061899266 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_4) ++0.48058439061899266 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_5) +0.5 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_0) -+0.5 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_0) +0.5 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) -+0.5 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) -+0.5 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) -+0.5 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) +0.49019607843137253 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) -+0.49019607843137253 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) -+0.49019607843137253 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) -+0.49019607843137253 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) +0.49019607843137253 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_3) -+0.49019607843137253 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_3) -+0.49019607843137253 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_3) -+0.49019607843137253 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_3) +0.48058439061899266 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_4) -+0.48058439061899266 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_4) -+0.48058439061899266 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_4) -+0.48058439061899266 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_4) +0.48058439061899266 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_5) ++0.5 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_0) ++0.5 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) ++0.49019607843137253 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) ++0.49019607843137253 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_3) ++0.48058439061899266 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_4) +0.48058439061899266 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_5) -+0.48058439061899266 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_5) -+0.48058439061899266 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_5) +99.99999999999999 SinkDSMDLRInvestmentBlock_invest(sink_dsm_DLR_0) +98.03921568627449 SinkDSMDLRInvestmentBlock_invest(sink_dsm_DLR_1) +48.534265191225046 SinkDSMDLRInvestmentBlock_invest(sink_dsm_DLR_2) @@ -50,34 +50,34 @@ c_u_investment_limit_per_period(2)_: +48.534265191225046 SinkDSMDLRInvestmentBlock_invest(sink_dsm_DLR_2) <= 200 -c_e_BusBlock_balance(Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) --1 flow(Bus1_sink_dsm_DLR_0_0) +c_e_BusBlock_balance(Bus1_0)_: +-1 flow(Bus1_sink_dsm_DLR_0) ++1 flow(Source_Bus1_0) = 0 -c_e_BusBlock_balance(Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) --1 flow(Bus1_sink_dsm_DLR_0_1) +c_e_BusBlock_balance(Bus1_1)_: +-1 flow(Bus1_sink_dsm_DLR_1) ++1 flow(Source_Bus1_1) = 0 -c_e_BusBlock_balance(Bus1_1_2)_: -+1 flow(Source_Bus1_1_2) --1 flow(Bus1_sink_dsm_DLR_1_2) +c_e_BusBlock_balance(Bus1_2)_: +-1 flow(Bus1_sink_dsm_DLR_2) ++1 flow(Source_Bus1_2) = 0 -c_e_BusBlock_balance(Bus1_1_3)_: -+1 flow(Source_Bus1_1_3) --1 flow(Bus1_sink_dsm_DLR_1_3) +c_e_BusBlock_balance(Bus1_3)_: +-1 flow(Bus1_sink_dsm_DLR_3) ++1 flow(Source_Bus1_3) = 0 -c_e_BusBlock_balance(Bus1_2_4)_: -+1 flow(Source_Bus1_2_4) --1 flow(Bus1_sink_dsm_DLR_2_4) +c_e_BusBlock_balance(Bus1_4)_: +-1 flow(Bus1_sink_dsm_DLR_4) ++1 flow(Source_Bus1_4) = 0 -c_e_BusBlock_balance(Bus1_2_5)_: -+1 flow(Source_Bus1_2_5) --1 flow(Bus1_sink_dsm_DLR_2_5) +c_e_BusBlock_balance(Bus1_5)_: +-1 flow(Bus1_sink_dsm_DLR_5) ++1 flow(Source_Bus1_5) = 0 c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: @@ -124,9 +124,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(Source_Bus1_0)_: ++1 InvestmentFlowBlock_old(Source_Bus1_0) -1 InvestmentFlowBlock_old_end(Source_Bus1_0) -1 InvestmentFlowBlock_old_exo(Source_Bus1_0) -+1 InvestmentFlowBlock_old(Source_Bus1_0) = 0 c_e_InvestmentFlowBlock_old_rule(Source_Bus1_1)_: @@ -142,32 +142,32 @@ c_e_InvestmentFlowBlock_old_rule(Source_Bus1_2)_: = 0 c_u_InvestmentFlowBlock_max(Source_Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) ++1 flow(Source_Bus1_0) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) ++1 flow(Source_Bus1_1) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_1_2)_: -+1 flow(Source_Bus1_1_2) ++1 flow(Source_Bus1_2) -1 InvestmentFlowBlock_total(Source_Bus1_1) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_1_3)_: -+1 flow(Source_Bus1_1_3) ++1 flow(Source_Bus1_3) -1 InvestmentFlowBlock_total(Source_Bus1_1) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_2_4)_: -+1 flow(Source_Bus1_2_4) ++1 flow(Source_Bus1_4) -1 InvestmentFlowBlock_total(Source_Bus1_2) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_2_5)_: -+1 flow(Source_Bus1_2_5) ++1 flow(Source_Bus1_5) -1 InvestmentFlowBlock_total(Source_Bus1_2) <= 0 @@ -216,9 +216,9 @@ c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(sink_dsm_DLR_2)_: = 0 c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(sink_dsm_DLR_0)_: ++1 SinkDSMDLRInvestmentBlock_old(sink_dsm_DLR_0) -1 SinkDSMDLRInvestmentBlock_old_end(sink_dsm_DLR_0) -1 SinkDSMDLRInvestmentBlock_old_exo(sink_dsm_DLR_0) -+1 SinkDSMDLRInvestmentBlock_old(sink_dsm_DLR_0) = 0 c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(sink_dsm_DLR_1)_: @@ -260,55 +260,55 @@ c_e_SinkDSMDLRInvestmentBlock_shift_shed_vars(sink_dsm_DLR_1_5)_: c_e_SinkDSMDLRInvestmentBlock_input_output_relation(sink_dsm_DLR_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_0) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_0) -1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_0) -1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_0) -+1 flow(Bus1_sink_dsm_DLR_0_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_0) ++1 flow(Bus1_sink_dsm_DLR_0) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(sink_dsm_DLR_0_1)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) -+1 flow(Bus1_sink_dsm_DLR_0_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_1) +-1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) ++1 flow(Bus1_sink_dsm_DLR_1) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(sink_dsm_DLR_1_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) -+1 flow(Bus1_sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_2) +-1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) ++1 flow(Bus1_sink_dsm_DLR_2) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(sink_dsm_DLR_1_3)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_3) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_3) -+1 flow(Bus1_sink_dsm_DLR_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_3) +-1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_3) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_3) ++1 flow(Bus1_sink_dsm_DLR_3) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(sink_dsm_DLR_2_4)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_4) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_4) -+1 flow(Bus1_sink_dsm_DLR_2_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_4) +-1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_4) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_4) ++1 flow(Bus1_sink_dsm_DLR_4) = 1 c_e_SinkDSMDLRInvestmentBlock_input_output_relation(sink_dsm_DLR_2_5)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_5) --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_5) -+1 flow(Bus1_sink_dsm_DLR_2_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_5) +-1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_5) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_5) ++1 flow(Bus1_sink_dsm_DLR_5) = 1 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(sink_dsm_DLR_1_0)_: @@ -345,28 +345,28 @@ c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(sink_dsm_DLR_1_0)_: = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(sink_dsm_DLR_1_1)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) +-1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_0) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(sink_dsm_DLR_1_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) +-1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(sink_dsm_DLR_1_3)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_3) +-1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(sink_dsm_DLR_1_4)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_4) +-1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_3) = 0 c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(sink_dsm_DLR_1_5)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_5) +-1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_4) = 0 c_e_SinkDSMDLRInvestmentBlock_no_comp_red(sink_dsm_DLR_1_5)_: @@ -380,43 +380,43 @@ c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(sink_dsm_DLR_1_5)_: c_u_SinkDSMDLRInvestmentBlock_availability_red(sink_dsm_DLR_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_0) --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_0) +-0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_red(sink_dsm_DLR_0_1)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_1) +-0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_red(sink_dsm_DLR_1_2)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_2) +-0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_1) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_red(sink_dsm_DLR_1_3)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_3) --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_3) +-0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_1) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_red(sink_dsm_DLR_2_4)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_4) --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_4) +-0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_2) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_red(sink_dsm_DLR_2_5)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_5) --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_5) +-0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_2) <= 0 c_u_SinkDSMDLRInvestmentBlock_availability_inc(sink_dsm_DLR_0_0)_: @@ -461,36 +461,36 @@ c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(sink_dsm_DLR_0)_: = 0 c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(sink_dsm_DLR_1)_: --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_0) -1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_1) = 0 c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(sink_dsm_DLR_2)_: --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_1) -1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_2) = 0 c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(sink_dsm_DLR_3)_: --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_3) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_2) -1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_3) = 0 c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(sink_dsm_DLR_4)_: --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_4) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_3) -1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_4) = 0 c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(sink_dsm_DLR_5)_: --1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_5) +-1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_4) -1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_5) = 0 @@ -501,36 +501,36 @@ c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(sink_dsm_DLR_0)_: = 0 c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(sink_dsm_DLR_1)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) -1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) ++1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_0) -1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_1) = 0 c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(sink_dsm_DLR_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) -1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) ++1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_1) -1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_2) = 0 c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(sink_dsm_DLR_3)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_3) -1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_3) ++1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_2) -1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_3) = 0 c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(sink_dsm_DLR_4)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_4) -1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_4) ++1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_3) -1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_4) = 0 c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(sink_dsm_DLR_5)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_5) -1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_5) ++1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_4) -1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_5) = 0 @@ -598,55 +598,55 @@ c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(sink_dsm_DLR_2_5)_: c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(sink_dsm_DLR_0_0)_: +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_0) ++1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_0) +1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_0) +1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_0) -0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(sink_dsm_DLR_0_1)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_1) ++1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) +-0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) <= 0 c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(sink_dsm_DLR_1_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_2) ++1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) +-0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_1) <= 0 c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(sink_dsm_DLR_1_3)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_3) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_3) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_3) --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_1) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_3) ++1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_3) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_3) +-0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_1) <= 0 c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(sink_dsm_DLR_2_4)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_4) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_4) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_4) --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_4) ++1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_4) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_4) +-0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_2) <= 0 c_u_SinkDSMDLRInvestmentBlock_dr_logical_constraint(sink_dsm_DLR_2_5)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_5) +1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_5) +1 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_5) --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_2) +1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_5) ++1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_5) ++1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_5) +-0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_2) <= 0 c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(sink_dsm_DLR_0)_: @@ -670,48 +670,55 @@ bounds 0 <= InvestmentFlowBlock_invest(Source_Bus1_1) <= +inf 0 <= InvestmentFlowBlock_invest(Source_Bus1_2) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_4) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_5) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_4) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_4) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_5) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_2) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_3) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_5) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_3) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_4) <= +inf 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_5) <= +inf 33 <= SinkDSMDLRInvestmentBlock_invest(sink_dsm_DLR_0) <= 100 33 <= SinkDSMDLRInvestmentBlock_invest(sink_dsm_DLR_1) <= 100 33 <= SinkDSMDLRInvestmentBlock_invest(sink_dsm_DLR_2) <= 100 - 0 <= flow(Source_Bus1_0_0) <= +inf - 0 <= flow(Bus1_sink_dsm_DLR_0_0) <= +inf - 0 <= flow(Source_Bus1_0_1) <= +inf - 0 <= flow(Bus1_sink_dsm_DLR_0_1) <= +inf - 0 <= flow(Source_Bus1_1_2) <= +inf - 0 <= flow(Bus1_sink_dsm_DLR_1_2) <= +inf - 0 <= flow(Source_Bus1_1_3) <= +inf - 0 <= flow(Bus1_sink_dsm_DLR_1_3) <= +inf - 0 <= flow(Source_Bus1_2_4) <= +inf - 0 <= flow(Bus1_sink_dsm_DLR_2_4) <= +inf - 0 <= flow(Source_Bus1_2_5) <= +inf - 0 <= flow(Bus1_sink_dsm_DLR_2_5) <= +inf + 0 <= flow(Bus1_sink_dsm_DLR_0) <= +inf + 0 <= flow(Bus1_sink_dsm_DLR_1) <= +inf + 0 <= flow(Bus1_sink_dsm_DLR_2) <= +inf + 0 <= flow(Bus1_sink_dsm_DLR_3) <= +inf + 0 <= flow(Bus1_sink_dsm_DLR_4) <= +inf + 0 <= flow(Bus1_sink_dsm_DLR_5) <= +inf + 0 <= flow(Source_Bus1_0) <= +inf + 0 <= flow(Source_Bus1_1) <= +inf + 0 <= flow(Source_Bus1_2) <= +inf + 0 <= flow(Source_Bus1_3) <= +inf + 0 <= flow(Source_Bus1_4) <= +inf + 0 <= flow(Source_Bus1_5) <= +inf 0 <= InvestmentFlowBlock_total(Source_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_total(Source_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_old(Source_Bus1_1) <= +inf 0 <= InvestmentFlowBlock_total(Source_Bus1_2) <= +inf + 0 <= InvestmentFlowBlock_old(Source_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_old(Source_Bus1_1) <= +inf 0 <= InvestmentFlowBlock_old(Source_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_old_end(Source_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_old_end(Source_Bus1_1) <= +inf @@ -719,11 +726,11 @@ bounds 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_2) <= +inf - 0 <= InvestmentFlowBlock_old(Source_Bus1_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old(sink_dsm_DLR_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_2) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_old(sink_dsm_DLR_0) <= +inf + 0 <= SinkDSMDLRInvestmentBlock_old(sink_dsm_DLR_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old(sink_dsm_DLR_2) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old_end(sink_dsm_DLR_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old_end(sink_dsm_DLR_1) <= +inf @@ -731,13 +738,6 @@ bounds 0 <= SinkDSMDLRInvestmentBlock_old_exo(sink_dsm_DLR_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old_exo(sink_dsm_DLR_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_old_exo(sink_dsm_DLR_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old(sink_dsm_DLR_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_5) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_0) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_1) <= +inf 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_2) <= +inf diff --git a/tests/lp_files/periodical_investment_limit_with_dsm_oemof.lp b/tests/lp_files/periodical_investment_limit_with_dsm_oemof.lp index 342026442..1d75b870a 100644 --- a/tests/lp_files/periodical_investment_limit_with_dsm_oemof.lp +++ b/tests/lp_files/periodical_investment_limit_with_dsm_oemof.lp @@ -6,17 +6,17 @@ objective: +5.432444590842506 InvestmentFlowBlock_invest(Source_Bus1_1) +2.6893290053675805 InvestmentFlowBlock_invest(Source_Bus1_2) +0.5 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_0) ++0.5 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_1) ++0.49019607843137253 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_2) ++0.49019607843137253 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_3) ++0.48058439061899266 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_4) ++0.48058439061899266 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_5) +0.5 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_0) +0.5 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_1) -+0.5 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_1) +0.49019607843137253 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_2) -+0.49019607843137253 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_2) +0.49019607843137253 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_3) -+0.49019607843137253 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_3) +0.48058439061899266 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_4) -+0.48058439061899266 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_4) +0.48058439061899266 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_5) -+0.48058439061899266 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_5) +99.99999999999999 SinkDSMOemofInvestmentBlock_invest(sink_dsm_oemof_0) +98.03921568627449 SinkDSMOemofInvestmentBlock_invest(sink_dsm_oemof_1) +48.534265191225046 SinkDSMOemofInvestmentBlock_invest(sink_dsm_oemof_2) @@ -38,34 +38,34 @@ c_u_investment_limit_per_period(2)_: +48.534265191225046 SinkDSMOemofInvestmentBlock_invest(sink_dsm_oemof_2) <= 200 -c_e_BusBlock_balance(Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) --1 flow(Bus1_sink_dsm_oemof_0_0) +c_e_BusBlock_balance(Bus1_0)_: +-1 flow(Bus1_sink_dsm_oemof_0) ++1 flow(Source_Bus1_0) = 0 -c_e_BusBlock_balance(Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) --1 flow(Bus1_sink_dsm_oemof_0_1) +c_e_BusBlock_balance(Bus1_1)_: +-1 flow(Bus1_sink_dsm_oemof_1) ++1 flow(Source_Bus1_1) = 0 -c_e_BusBlock_balance(Bus1_1_2)_: -+1 flow(Source_Bus1_1_2) --1 flow(Bus1_sink_dsm_oemof_1_2) +c_e_BusBlock_balance(Bus1_2)_: +-1 flow(Bus1_sink_dsm_oemof_2) ++1 flow(Source_Bus1_2) = 0 -c_e_BusBlock_balance(Bus1_1_3)_: -+1 flow(Source_Bus1_1_3) --1 flow(Bus1_sink_dsm_oemof_1_3) +c_e_BusBlock_balance(Bus1_3)_: +-1 flow(Bus1_sink_dsm_oemof_3) ++1 flow(Source_Bus1_3) = 0 -c_e_BusBlock_balance(Bus1_2_4)_: -+1 flow(Source_Bus1_2_4) --1 flow(Bus1_sink_dsm_oemof_2_4) +c_e_BusBlock_balance(Bus1_4)_: +-1 flow(Bus1_sink_dsm_oemof_4) ++1 flow(Source_Bus1_4) = 0 -c_e_BusBlock_balance(Bus1_2_5)_: -+1 flow(Source_Bus1_2_5) --1 flow(Bus1_sink_dsm_oemof_2_5) +c_e_BusBlock_balance(Bus1_5)_: +-1 flow(Bus1_sink_dsm_oemof_5) ++1 flow(Source_Bus1_5) = 0 c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: @@ -112,9 +112,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(Source_Bus1_0)_: ++1 InvestmentFlowBlock_old(Source_Bus1_0) -1 InvestmentFlowBlock_old_end(Source_Bus1_0) -1 InvestmentFlowBlock_old_exo(Source_Bus1_0) -+1 InvestmentFlowBlock_old(Source_Bus1_0) = 0 c_e_InvestmentFlowBlock_old_rule(Source_Bus1_1)_: @@ -130,32 +130,32 @@ c_e_InvestmentFlowBlock_old_rule(Source_Bus1_2)_: = 0 c_u_InvestmentFlowBlock_max(Source_Bus1_0_0)_: -+1 flow(Source_Bus1_0_0) ++1 flow(Source_Bus1_0) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) ++1 flow(Source_Bus1_1) -1 InvestmentFlowBlock_total(Source_Bus1_0) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_1_2)_: -+1 flow(Source_Bus1_1_2) ++1 flow(Source_Bus1_2) -1 InvestmentFlowBlock_total(Source_Bus1_1) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_1_3)_: -+1 flow(Source_Bus1_1_3) ++1 flow(Source_Bus1_3) -1 InvestmentFlowBlock_total(Source_Bus1_1) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_2_4)_: -+1 flow(Source_Bus1_2_4) ++1 flow(Source_Bus1_4) -1 InvestmentFlowBlock_total(Source_Bus1_2) <= 0 c_u_InvestmentFlowBlock_max(Source_Bus1_2_5)_: -+1 flow(Source_Bus1_2_5) ++1 flow(Source_Bus1_5) -1 InvestmentFlowBlock_total(Source_Bus1_2) <= 0 @@ -204,9 +204,9 @@ c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(sink_dsm_oemof_2)_: = 0 c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(sink_dsm_oemof_0)_: ++1 SinkDSMOemofInvestmentBlock_old(sink_dsm_oemof_0) -1 SinkDSMOemofInvestmentBlock_old_end(sink_dsm_oemof_0) -1 SinkDSMOemofInvestmentBlock_old_exo(sink_dsm_oemof_0) -+1 SinkDSMOemofInvestmentBlock_old(sink_dsm_oemof_0) = 0 c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(sink_dsm_oemof_1)_: @@ -248,42 +248,42 @@ c_e_SinkDSMOemofInvestmentBlock_shift_shed_vars(sink_dsm_oemof_5)_: c_e_SinkDSMOemofInvestmentBlock_input_output_relation(sink_dsm_oemof_0_0)_: +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_0) -1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_0) -+1 flow(Bus1_sink_dsm_oemof_0_0) ++1 flow(Bus1_sink_dsm_oemof_0) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_0) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(sink_dsm_oemof_0_1)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_1) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_1) -+1 flow(Bus1_sink_dsm_oemof_0_1) +-1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_1) ++1 flow(Bus1_sink_dsm_oemof_1) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_1) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(sink_dsm_oemof_1_2)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_2) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_2) -+1 flow(Bus1_sink_dsm_oemof_1_2) +-1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_2) ++1 flow(Bus1_sink_dsm_oemof_2) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_2) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(sink_dsm_oemof_1_3)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_3) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_3) -+1 flow(Bus1_sink_dsm_oemof_1_3) +-1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_3) ++1 flow(Bus1_sink_dsm_oemof_3) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_3) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(sink_dsm_oemof_2_4)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_4) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_4) -+1 flow(Bus1_sink_dsm_oemof_2_4) +-1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_4) ++1 flow(Bus1_sink_dsm_oemof_4) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_4) = 1 c_e_SinkDSMOemofInvestmentBlock_input_output_relation(sink_dsm_oemof_2_5)_: --1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_5) +1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_5) -+1 flow(Bus1_sink_dsm_oemof_2_5) +-1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_5) ++1 flow(Bus1_sink_dsm_oemof_5) +1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_5) = 1 @@ -355,23 +355,23 @@ c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(sink_dsm_oemof_2_5)_: c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(sink_dsm_oemof_0)_: -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_0) +-1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_1) +1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_0) +1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_1) --1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_1) = 0 c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(sink_dsm_oemof_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_2) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_2) -+1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_3) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_3) ++1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_2) ++1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_3) = 0 c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(sink_dsm_oemof_4)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_4) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_4) -+1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_5) -1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_5) ++1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_4) ++1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_5) = 0 c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(sink_dsm_oemof_0)_: @@ -395,36 +395,37 @@ bounds 0 <= InvestmentFlowBlock_invest(Source_Bus1_1) <= +inf 0 <= InvestmentFlowBlock_invest(Source_Bus1_2) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_0) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_1) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_2) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_3) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_4) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_5) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_1) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_2) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_3) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_3) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_4) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_4) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_5) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_5) <= +inf 33 <= SinkDSMOemofInvestmentBlock_invest(sink_dsm_oemof_0) <= 100 33 <= SinkDSMOemofInvestmentBlock_invest(sink_dsm_oemof_1) <= 100 33 <= SinkDSMOemofInvestmentBlock_invest(sink_dsm_oemof_2) <= 100 - 0 <= flow(Source_Bus1_0_0) <= +inf - 0 <= flow(Bus1_sink_dsm_oemof_0_0) <= +inf - 0 <= flow(Source_Bus1_0_1) <= +inf - 0 <= flow(Bus1_sink_dsm_oemof_0_1) <= +inf - 0 <= flow(Source_Bus1_1_2) <= +inf - 0 <= flow(Bus1_sink_dsm_oemof_1_2) <= +inf - 0 <= flow(Source_Bus1_1_3) <= +inf - 0 <= flow(Bus1_sink_dsm_oemof_1_3) <= +inf - 0 <= flow(Source_Bus1_2_4) <= +inf - 0 <= flow(Bus1_sink_dsm_oemof_2_4) <= +inf - 0 <= flow(Source_Bus1_2_5) <= +inf - 0 <= flow(Bus1_sink_dsm_oemof_2_5) <= +inf + 0 <= flow(Bus1_sink_dsm_oemof_0) <= +inf + 0 <= flow(Bus1_sink_dsm_oemof_1) <= +inf + 0 <= flow(Bus1_sink_dsm_oemof_2) <= +inf + 0 <= flow(Bus1_sink_dsm_oemof_3) <= +inf + 0 <= flow(Bus1_sink_dsm_oemof_4) <= +inf + 0 <= flow(Bus1_sink_dsm_oemof_5) <= +inf + 0 <= flow(Source_Bus1_0) <= +inf + 0 <= flow(Source_Bus1_1) <= +inf + 0 <= flow(Source_Bus1_2) <= +inf + 0 <= flow(Source_Bus1_3) <= +inf + 0 <= flow(Source_Bus1_4) <= +inf + 0 <= flow(Source_Bus1_5) <= +inf 0 <= InvestmentFlowBlock_total(Source_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_total(Source_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_old(Source_Bus1_1) <= +inf 0 <= InvestmentFlowBlock_total(Source_Bus1_2) <= +inf + 0 <= InvestmentFlowBlock_old(Source_Bus1_0) <= +inf + 0 <= InvestmentFlowBlock_old(Source_Bus1_1) <= +inf 0 <= InvestmentFlowBlock_old(Source_Bus1_2) <= +inf 0 <= InvestmentFlowBlock_old_end(Source_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_old_end(Source_Bus1_1) <= +inf @@ -432,11 +433,11 @@ bounds 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(Source_Bus1_2) <= +inf - 0 <= InvestmentFlowBlock_old(Source_Bus1_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old(sink_dsm_oemof_1) <= +inf 0 <= SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_2) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_old(sink_dsm_oemof_0) <= +inf + 0 <= SinkDSMOemofInvestmentBlock_old(sink_dsm_oemof_1) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old(sink_dsm_oemof_2) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old_end(sink_dsm_oemof_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old_end(sink_dsm_oemof_1) <= +inf @@ -444,7 +445,6 @@ bounds 0 <= SinkDSMOemofInvestmentBlock_old_exo(sink_dsm_oemof_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old_exo(sink_dsm_oemof_1) <= +inf 0 <= SinkDSMOemofInvestmentBlock_old_exo(sink_dsm_oemof_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old(sink_dsm_oemof_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_0) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_1) <= +inf 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_2) <= +inf diff --git a/tests/lp_files/piecewise_linear_converter_cc.lp b/tests/lp_files/piecewise_linear_converter_cc.lp index 22fbcc463..edb6d51b2 100644 --- a/tests/lp_files/piecewise_linear_converter_cc.lp +++ b/tests/lp_files/piecewise_linear_converter_cc.lp @@ -1,69 +1,69 @@ \* Source Pyomo model name=Model *\ -min +min objective: -1 flow(gasBus_pwltf_0_0) -1 flow(gasBus_pwltf_0_1) -1 flow(gasBus_pwltf_0_2) ++1 flow(gasBus_pwltf_0) ++1 flow(gasBus_pwltf_1) ++1 flow(gasBus_pwltf_2) s.t. -c_e_BusBlock_balance(gasBus_0_0)_: -1 flow(gasBus_pwltf_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(pwltf_electricityBus_0) = 0 -c_e_BusBlock_balance(gasBus_0_1)_: -1 flow(gasBus_pwltf_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(pwltf_electricityBus_1) = 0 -c_e_BusBlock_balance(gasBus_0_2)_: -1 flow(gasBus_pwltf_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(pwltf_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_0_0)_: -1 flow(pwltf_electricityBus_0_0) +c_e_BusBlock_balance(gasBus_0)_: ++1 flow(gasBus_pwltf_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -1 flow(pwltf_electricityBus_0_1) +c_e_BusBlock_balance(gasBus_1)_: ++1 flow(gasBus_pwltf_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -1 flow(pwltf_electricityBus_0_2) +c_e_BusBlock_balance(gasBus_2)_: ++1 flow(gasBus_pwltf_2) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0_0)_: --1 flow(gasBus_pwltf_0_0) -1 PiecewiseLinearConverterBlock_inflow(pwltf_0) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0)_: +-1 flow(gasBus_pwltf_0) ++1 PiecewiseLinearConverterBlock_inflow(pwltf_0) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0_1)_: --1 flow(gasBus_pwltf_0_1) -1 PiecewiseLinearConverterBlock_inflow(pwltf_1) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_1)_: +-1 flow(gasBus_pwltf_1) ++1 PiecewiseLinearConverterBlock_inflow(pwltf_1) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0_2)_: --1 flow(gasBus_pwltf_0_2) -1 PiecewiseLinearConverterBlock_inflow(pwltf_2) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_2)_: +-1 flow(gasBus_pwltf_2) ++1 PiecewiseLinearConverterBlock_inflow(pwltf_2) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0_0)_: --1 flow(pwltf_electricityBus_0_0) -1 PiecewiseLinearConverterBlock_outflow(pwltf_0) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0)_: +-1 flow(pwltf_electricityBus_0) ++1 PiecewiseLinearConverterBlock_outflow(pwltf_0) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0_1)_: --1 flow(pwltf_electricityBus_0_1) -1 PiecewiseLinearConverterBlock_outflow(pwltf_1) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_1)_: +-1 flow(pwltf_electricityBus_1) ++1 PiecewiseLinearConverterBlock_outflow(pwltf_1) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0_2)_: --1 flow(pwltf_electricityBus_0_2) -1 PiecewiseLinearConverterBlock_outflow(pwltf_2) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_2)_: +-1 flow(pwltf_electricityBus_2) ++1 PiecewiseLinearConverterBlock_outflow(pwltf_2) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint1_: -1 PiecewiseLinearConverterBlock_inflow(pwltf_0) ++1 PiecewiseLinearConverterBlock_inflow(pwltf_0) -25 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(2) -50 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(3) -75 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(4) @@ -71,7 +71,7 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint1_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint2_: -1 PiecewiseLinearConverterBlock_outflow(pwltf_0) ++1 PiecewiseLinearConverterBlock_outflow(pwltf_0) -625 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(2) -2500 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(3) -5625 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(4) @@ -79,50 +79,50 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint3_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(4) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(5) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(1) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(1) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(3) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(4) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(5) = 1 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint4(1)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(1) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(1) <= 0 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint4(2)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(2) <= 0 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint4(3)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(3) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(3) <= 0 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint4(4)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(4) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(4) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(4) <= 0 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint4(5)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(5) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(5) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(4) <= 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint5_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(4) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(1) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(3) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(4) = 1 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint1_: -1 PiecewiseLinearConverterBlock_inflow(pwltf_1) ++1 PiecewiseLinearConverterBlock_inflow(pwltf_1) -25 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(2) -50 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(3) -75 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(4) @@ -130,7 +130,7 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint1_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint2_: -1 PiecewiseLinearConverterBlock_outflow(pwltf_1) ++1 PiecewiseLinearConverterBlock_outflow(pwltf_1) -625 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(2) -2500 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(3) -5625 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(4) @@ -138,50 +138,50 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint3_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(4) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(5) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(1) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(1) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(3) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(4) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(5) = 1 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint4(1)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(1) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(1) <= 0 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint4(2)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(2) <= 0 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint4(3)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(3) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(3) <= 0 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint4(4)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(4) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(4) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(4) <= 0 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint4(5)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(5) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(5) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(4) <= 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint5_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(4) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(1) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(3) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(4) = 1 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint1_: -1 PiecewiseLinearConverterBlock_inflow(pwltf_2) ++1 PiecewiseLinearConverterBlock_inflow(pwltf_2) -25 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(2) -50 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(3) -75 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(4) @@ -189,7 +189,7 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint1_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint2_: -1 PiecewiseLinearConverterBlock_outflow(pwltf_2) ++1 PiecewiseLinearConverterBlock_outflow(pwltf_2) -625 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(2) -2500 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(3) -5625 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(4) @@ -197,99 +197,99 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint3_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(4) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(5) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(1) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(1) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(3) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(4) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(5) = 1 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint4(1)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(1) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(1) <= 0 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint4(2)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(2) <= 0 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint4(3)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(3) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(3) <= 0 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint4(4)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(4) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(4) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(4) <= 0 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint4(5)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(5) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(5) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(4) <= 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint5_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(4) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(1) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(3) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(4) = 1 bounds -0 <= flow(gasBus_pwltf_0_0) <= 100 -0 <= flow(gasBus_pwltf_0_1) <= 100 -0 <= flow(gasBus_pwltf_0_2) <= 100 -0 <= flow(pwltf_electricityBus_0_0) <= +inf -0 <= flow(pwltf_electricityBus_0_1) <= +inf -0 <= flow(pwltf_electricityBus_0_2) <= +inf -0 <= PiecewiseLinearConverterBlock_inflow(pwltf_0) <= 100 -0 <= PiecewiseLinearConverterBlock_inflow(pwltf_1) <= 100 -0 <= PiecewiseLinearConverterBlock_inflow(pwltf_2) <= 100 -0 <= PiecewiseLinearConverterBlock_outflow(pwltf_0) <= 10000 -0 <= PiecewiseLinearConverterBlock_outflow(pwltf_1) <= 10000 -0 <= PiecewiseLinearConverterBlock_outflow(pwltf_2) <= 10000 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(2) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(3) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(4) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(5) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(1) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(1) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(2) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(3) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(4) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(2) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(3) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(4) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(5) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(1) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(1) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(2) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(3) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(4) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(2) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(3) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(4) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(5) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(1) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(1) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(2) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(3) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(4) <= 1 + 0 <= flow(gasBus_pwltf_0) <= 100 + 0 <= flow(gasBus_pwltf_1) <= 100 + 0 <= flow(gasBus_pwltf_2) <= 100 + 0 <= flow(pwltf_electricityBus_0) <= +inf + 0 <= flow(pwltf_electricityBus_1) <= +inf + 0 <= flow(pwltf_electricityBus_2) <= +inf + 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_0) <= 100 + 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_1) <= 100 + 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_2) <= 100 + 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_0) <= 10000 + 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_1) <= 10000 + 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_2) <= 10000 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(1) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(2) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(3) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(4) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(5) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(1) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(2) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(3) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(4) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(1) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(2) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(3) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(4) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(5) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(1) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(2) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(3) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(4) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(1) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(2) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(3) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(4) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(5) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(1) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(2) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(3) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(4) <= 1 binary -PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(1) -PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(2) -PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(3) -PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(4) -PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(1) -PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(2) -PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(3) -PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(4) -PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(1) -PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(2) -PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(3) -PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(4) + PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(1) + PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(2) + PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(3) + PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(4) + PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(1) + PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(2) + PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(3) + PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(4) + PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(1) + PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(2) + PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(3) + PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(4) end diff --git a/tests/lp_files/piecewise_linear_converter_cc_multi_period.lp b/tests/lp_files/piecewise_linear_converter_cc_multi_period.lp index 7a0acc0bc..b9860f475 100644 --- a/tests/lp_files/piecewise_linear_converter_cc_multi_period.lp +++ b/tests/lp_files/piecewise_linear_converter_cc_multi_period.lp @@ -2,120 +2,120 @@ min objective: -+1 flow(gasBus_pwltf_0_0) -+1 flow(gasBus_pwltf_0_1) -+0.9803921568627451 flow(gasBus_pwltf_1_2) -+0.9803921568627451 flow(gasBus_pwltf_1_3) -+0.9611687812379853 flow(gasBus_pwltf_2_4) -+0.9611687812379853 flow(gasBus_pwltf_2_5) ++1 flow(gasBus_pwltf_0) ++1 flow(gasBus_pwltf_1) ++0.9803921568627451 flow(gasBus_pwltf_2) ++0.9803921568627451 flow(gasBus_pwltf_3) ++0.9611687812379853 flow(gasBus_pwltf_4) ++0.9611687812379853 flow(gasBus_pwltf_5) s.t. -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_pwltf_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(pwltf_electricityBus_0) = 0 -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_pwltf_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(pwltf_electricityBus_1) = 0 -c_e_BusBlock_balance(gasBus_1_2)_: -+1 flow(gasBus_pwltf_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(pwltf_electricityBus_2) = 0 -c_e_BusBlock_balance(gasBus_1_3)_: -+1 flow(gasBus_pwltf_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(pwltf_electricityBus_3) = 0 -c_e_BusBlock_balance(gasBus_2_4)_: -+1 flow(gasBus_pwltf_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(pwltf_electricityBus_4) = 0 -c_e_BusBlock_balance(gasBus_2_5)_: -+1 flow(gasBus_pwltf_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(pwltf_electricityBus_5) = 0 -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(pwltf_electricityBus_0_0) +c_e_BusBlock_balance(gasBus_0)_: ++1 flow(gasBus_pwltf_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(pwltf_electricityBus_0_1) +c_e_BusBlock_balance(gasBus_1)_: ++1 flow(gasBus_pwltf_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(pwltf_electricityBus_1_2) +c_e_BusBlock_balance(gasBus_2)_: ++1 flow(gasBus_pwltf_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(pwltf_electricityBus_1_3) +c_e_BusBlock_balance(gasBus_3)_: ++1 flow(gasBus_pwltf_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(pwltf_electricityBus_2_4) +c_e_BusBlock_balance(gasBus_4)_: ++1 flow(gasBus_pwltf_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(pwltf_electricityBus_2_5) +c_e_BusBlock_balance(gasBus_5)_: ++1 flow(gasBus_pwltf_5) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0_0)_: --1 flow(gasBus_pwltf_0_0) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0)_: +-1 flow(gasBus_pwltf_0) +1 PiecewiseLinearConverterBlock_inflow(pwltf_0) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0_1)_: --1 flow(gasBus_pwltf_0_1) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_1)_: +-1 flow(gasBus_pwltf_1) +1 PiecewiseLinearConverterBlock_inflow(pwltf_1) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_1_2)_: --1 flow(gasBus_pwltf_1_2) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_2)_: +-1 flow(gasBus_pwltf_2) +1 PiecewiseLinearConverterBlock_inflow(pwltf_2) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_1_3)_: --1 flow(gasBus_pwltf_1_3) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_3)_: +-1 flow(gasBus_pwltf_3) +1 PiecewiseLinearConverterBlock_inflow(pwltf_3) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_2_4)_: --1 flow(gasBus_pwltf_2_4) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_4)_: +-1 flow(gasBus_pwltf_4) +1 PiecewiseLinearConverterBlock_inflow(pwltf_4) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_2_5)_: --1 flow(gasBus_pwltf_2_5) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_5)_: +-1 flow(gasBus_pwltf_5) +1 PiecewiseLinearConverterBlock_inflow(pwltf_5) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0_0)_: --1 flow(pwltf_electricityBus_0_0) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0)_: +-1 flow(pwltf_electricityBus_0) +1 PiecewiseLinearConverterBlock_outflow(pwltf_0) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0_1)_: --1 flow(pwltf_electricityBus_0_1) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_1)_: +-1 flow(pwltf_electricityBus_1) +1 PiecewiseLinearConverterBlock_outflow(pwltf_1) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_1_2)_: --1 flow(pwltf_electricityBus_1_2) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_2)_: +-1 flow(pwltf_electricityBus_2) +1 PiecewiseLinearConverterBlock_outflow(pwltf_2) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_1_3)_: --1 flow(pwltf_electricityBus_1_3) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_3)_: +-1 flow(pwltf_electricityBus_3) +1 PiecewiseLinearConverterBlock_outflow(pwltf_3) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_2_4)_: --1 flow(pwltf_electricityBus_2_4) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_4)_: +-1 flow(pwltf_electricityBus_4) +1 PiecewiseLinearConverterBlock_outflow(pwltf_4) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_2_5)_: --1 flow(pwltf_electricityBus_2_5) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_5)_: +-1 flow(pwltf_electricityBus_5) +1 PiecewiseLinearConverterBlock_outflow(pwltf_5) = 0 @@ -136,11 +136,11 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint3_: ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(1) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(2) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(3) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(4) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(5) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(1) = 1 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint4(1)_: @@ -195,11 +195,11 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint3_: ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(1) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(2) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(3) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(4) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(5) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(1) = 1 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint4(1)_: @@ -254,11 +254,11 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint3_: ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(1) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(2) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(3) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(4) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(5) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(1) = 1 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint4(1)_: @@ -313,11 +313,11 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_constraint3_: ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(1) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(2) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(3) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(4) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(5) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(1) = 1 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_constraint4(1)_: @@ -372,11 +372,11 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_constraint3_: ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(1) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(2) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(3) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(4) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(5) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(1) = 1 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_constraint4(1)_: @@ -431,11 +431,11 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_constraint3_: ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(1) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(2) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(3) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(4) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(5) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(1) = 1 c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_constraint4(1)_: @@ -474,18 +474,18 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_constraint5_: = 1 bounds - 0 <= flow(gasBus_pwltf_0_0) <= 100 - 0 <= flow(gasBus_pwltf_0_1) <= 100 - 0 <= flow(gasBus_pwltf_1_2) <= 100 - 0 <= flow(gasBus_pwltf_1_3) <= 100 - 0 <= flow(gasBus_pwltf_2_4) <= 100 - 0 <= flow(gasBus_pwltf_2_5) <= 100 - 0 <= flow(pwltf_electricityBus_0_0) <= +inf - 0 <= flow(pwltf_electricityBus_0_1) <= +inf - 0 <= flow(pwltf_electricityBus_1_2) <= +inf - 0 <= flow(pwltf_electricityBus_1_3) <= +inf - 0 <= flow(pwltf_electricityBus_2_4) <= +inf - 0 <= flow(pwltf_electricityBus_2_5) <= +inf + 0 <= flow(gasBus_pwltf_0) <= 100 + 0 <= flow(gasBus_pwltf_1) <= 100 + 0 <= flow(gasBus_pwltf_2) <= 100 + 0 <= flow(gasBus_pwltf_3) <= 100 + 0 <= flow(gasBus_pwltf_4) <= 100 + 0 <= flow(gasBus_pwltf_5) <= 100 + 0 <= flow(pwltf_electricityBus_0) <= +inf + 0 <= flow(pwltf_electricityBus_1) <= +inf + 0 <= flow(pwltf_electricityBus_2) <= +inf + 0 <= flow(pwltf_electricityBus_3) <= +inf + 0 <= flow(pwltf_electricityBus_4) <= +inf + 0 <= flow(pwltf_electricityBus_5) <= +inf 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_0) <= 100 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_1) <= 100 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_2) <= 100 @@ -498,56 +498,56 @@ bounds 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_3) <= 10000 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_4) <= 10000 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_5) <= 10000 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(3) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(4) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(5) <= +inf - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(1) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(2) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(3) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_bin_y(4) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(3) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(4) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(5) <= +inf - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(1) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(2) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(3) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_bin_y(4) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(3) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(4) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(5) <= +inf - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(1) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(2) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(3) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_bin_y(4) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(3) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(4) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(5) <= +inf - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(1) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(2) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(3) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(4) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(3) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(4) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(5) <= +inf - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(1) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(2) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(3) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(4) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(3) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(4) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(5) <= +inf - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(1) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(2) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(3) <= 1 diff --git a/tests/lp_files/piecewise_linear_converter_dcc.lp b/tests/lp_files/piecewise_linear_converter_dcc.lp index 70ece2d09..2c96215e0 100644 --- a/tests/lp_files/piecewise_linear_converter_dcc.lp +++ b/tests/lp_files/piecewise_linear_converter_dcc.lp @@ -1,69 +1,69 @@ \* Source Pyomo model name=Model *\ -min +min objective: -1 flow(gasBus_pwltf_0_0) -1 flow(gasBus_pwltf_0_1) -1 flow(gasBus_pwltf_0_2) ++1 flow(gasBus_pwltf_0) ++1 flow(gasBus_pwltf_1) ++1 flow(gasBus_pwltf_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -1 flow(pwltf_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(pwltf_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -1 flow(pwltf_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(pwltf_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -1 flow(pwltf_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(pwltf_electricityBus_2) = 0 -c_e_BusBlock_balance(gasBus_0_0)_: -1 flow(gasBus_pwltf_0_0) +c_e_BusBlock_balance(gasBus_0)_: ++1 flow(gasBus_pwltf_0) = 0 -c_e_BusBlock_balance(gasBus_0_1)_: -1 flow(gasBus_pwltf_0_1) +c_e_BusBlock_balance(gasBus_1)_: ++1 flow(gasBus_pwltf_1) = 0 -c_e_BusBlock_balance(gasBus_0_2)_: -1 flow(gasBus_pwltf_0_2) +c_e_BusBlock_balance(gasBus_2)_: ++1 flow(gasBus_pwltf_2) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0_0)_: --1 flow(gasBus_pwltf_0_0) -1 PiecewiseLinearConverterBlock_inflow(pwltf_0) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0)_: +-1 flow(gasBus_pwltf_0) ++1 PiecewiseLinearConverterBlock_inflow(pwltf_0) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0_1)_: --1 flow(gasBus_pwltf_0_1) -1 PiecewiseLinearConverterBlock_inflow(pwltf_1) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_1)_: +-1 flow(gasBus_pwltf_1) ++1 PiecewiseLinearConverterBlock_inflow(pwltf_1) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0_2)_: --1 flow(gasBus_pwltf_0_2) -1 PiecewiseLinearConverterBlock_inflow(pwltf_2) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_2)_: +-1 flow(gasBus_pwltf_2) ++1 PiecewiseLinearConverterBlock_inflow(pwltf_2) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0_0)_: --1 flow(pwltf_electricityBus_0_0) -1 PiecewiseLinearConverterBlock_outflow(pwltf_0) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0)_: +-1 flow(pwltf_electricityBus_0) ++1 PiecewiseLinearConverterBlock_outflow(pwltf_0) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0_1)_: --1 flow(pwltf_electricityBus_0_1) -1 PiecewiseLinearConverterBlock_outflow(pwltf_1) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_1)_: +-1 flow(pwltf_electricityBus_1) ++1 PiecewiseLinearConverterBlock_outflow(pwltf_1) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0_2)_: --1 flow(pwltf_electricityBus_0_2) -1 PiecewiseLinearConverterBlock_outflow(pwltf_2) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_2)_: +-1 flow(pwltf_electricityBus_2) ++1 PiecewiseLinearConverterBlock_outflow(pwltf_2) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_constraint1_: -1 PiecewiseLinearConverterBlock_inflow(pwltf_0) ++1 PiecewiseLinearConverterBlock_inflow(pwltf_0) -25 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(1_2) -25 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(2_2) -50 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(2_3) @@ -74,7 +74,7 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_constraint1_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_constraint2_: -1 PiecewiseLinearConverterBlock_outflow(pwltf_0) ++1 PiecewiseLinearConverterBlock_outflow(pwltf_0) -625 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(1_2) -625 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(2_2) -2500 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(2_3) @@ -85,38 +85,38 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_constraint3(1)_: --1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(1_2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(1_1) +-1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(1_2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(1) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_constraint3(2)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(2_2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(2_3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(2) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_constraint3(3)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(3_3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(3_4) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(3) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(3) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_constraint3(4)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(4_4) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(4_5) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(4) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(4) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_constraint4_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(4) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(1) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(3) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(4) = 1 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_constraint1_: -1 PiecewiseLinearConverterBlock_inflow(pwltf_1) ++1 PiecewiseLinearConverterBlock_inflow(pwltf_1) -25 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(1_2) -25 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(2_2) -50 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(2_3) @@ -127,7 +127,7 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_constraint1_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_constraint2_: -1 PiecewiseLinearConverterBlock_outflow(pwltf_1) ++1 PiecewiseLinearConverterBlock_outflow(pwltf_1) -625 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(1_2) -625 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(2_2) -2500 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(2_3) @@ -138,38 +138,38 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_constraint3(1)_: --1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(1_2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(1_1) +-1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(1_2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(1) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_constraint3(2)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(2_2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(2_3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(2) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_constraint3(3)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(3_3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(3_4) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(3) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(3) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_constraint3(4)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(4_4) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(4_5) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(4) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(4) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_constraint4_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(4) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(1) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(3) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(4) = 1 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_constraint1_: -1 PiecewiseLinearConverterBlock_inflow(pwltf_2) ++1 PiecewiseLinearConverterBlock_inflow(pwltf_2) -25 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(1_2) -25 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(2_2) -50 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(2_3) @@ -180,7 +180,7 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_constraint1_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_constraint2_: -1 PiecewiseLinearConverterBlock_outflow(pwltf_2) ++1 PiecewiseLinearConverterBlock_outflow(pwltf_2) -625 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(1_2) -625 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(2_2) -2500 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(2_3) @@ -191,96 +191,96 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_constraint3(1)_: --1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(1_2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(1_1) +-1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(1_2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(1) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_constraint3(2)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(2_2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(2_3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(2) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_constraint3(3)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(3_3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(3_4) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(3) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(3) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_constraint3(4)_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(4_4) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(4_5) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(4) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(4) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_constraint4_: -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(2) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(3) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(4) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(1) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(2) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(3) ++1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(4) = 1 bounds -0 <= flow(gasBus_pwltf_0_0) <= 100 -0 <= flow(gasBus_pwltf_0_1) <= 100 -0 <= flow(gasBus_pwltf_0_2) <= 100 -0 <= flow(pwltf_electricityBus_0_0) <= +inf -0 <= flow(pwltf_electricityBus_0_1) <= +inf -0 <= flow(pwltf_electricityBus_0_2) <= +inf -0 <= PiecewiseLinearConverterBlock_inflow(pwltf_0) <= 100 -0 <= PiecewiseLinearConverterBlock_inflow(pwltf_1) <= 100 -0 <= PiecewiseLinearConverterBlock_inflow(pwltf_2) <= 100 -0 <= PiecewiseLinearConverterBlock_outflow(pwltf_0) <= 10000 -0 <= PiecewiseLinearConverterBlock_outflow(pwltf_1) <= 10000 -0 <= PiecewiseLinearConverterBlock_outflow(pwltf_2) <= 10000 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(1_2) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(2_2) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(2_3) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(3_3) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(3_4) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(4_4) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(4_5) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(1) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(1_1) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(2) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(3) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(4) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(1_2) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(2_2) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(2_3) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(3_3) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(3_4) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(4_4) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(4_5) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(1) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(1_1) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(2) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(3) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(4) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(1_2) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(2_2) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(2_3) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(3_3) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(3_4) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(4_4) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(4_5) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(1) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(1_1) <= +inf -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(2) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(3) <= 1 -0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(4) <= 1 + 0 <= flow(gasBus_pwltf_0) <= 100 + 0 <= flow(gasBus_pwltf_1) <= 100 + 0 <= flow(gasBus_pwltf_2) <= 100 + 0 <= flow(pwltf_electricityBus_0) <= +inf + 0 <= flow(pwltf_electricityBus_1) <= +inf + 0 <= flow(pwltf_electricityBus_2) <= +inf + 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_0) <= 100 + 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_1) <= 100 + 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_2) <= 100 + 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_0) <= 10000 + 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_1) <= 10000 + 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_2) <= 10000 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(1_1) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(1_2) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(2_2) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(2_3) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(3_3) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(3_4) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(4_4) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(4_5) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(1) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(2) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(3) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(4) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(1_1) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(1_2) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(2_2) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(2_3) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(3_3) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(3_4) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(4_4) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(4_5) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(1) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(2) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(3) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(4) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(1_1) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(1_2) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(2_2) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(2_3) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(3_3) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(3_4) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(4_4) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(4_5) <= +inf + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(1) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(2) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(3) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(4) <= 1 binary -PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(1) -PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(2) -PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(3) -PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(4) -PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(1) -PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(2) -PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(3) -PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(4) -PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(1) -PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(2) -PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(3) -PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(4) + PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(1) + PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(2) + PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(3) + PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(4) + PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(1) + PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(2) + PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(3) + PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(4) + PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(1) + PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(2) + PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(3) + PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(4) end diff --git a/tests/lp_files/piecewise_linear_converter_dcc_multi_period.lp b/tests/lp_files/piecewise_linear_converter_dcc_multi_period.lp index b724b869c..eb6a87193 100644 --- a/tests/lp_files/piecewise_linear_converter_dcc_multi_period.lp +++ b/tests/lp_files/piecewise_linear_converter_dcc_multi_period.lp @@ -2,120 +2,120 @@ min objective: -+1 flow(gasBus_pwltf_0_0) -+1 flow(gasBus_pwltf_0_1) -+0.9803921568627451 flow(gasBus_pwltf_1_2) -+0.9803921568627451 flow(gasBus_pwltf_1_3) -+0.9611687812379853 flow(gasBus_pwltf_2_4) -+0.9611687812379853 flow(gasBus_pwltf_2_5) ++1 flow(gasBus_pwltf_0) ++1 flow(gasBus_pwltf_1) ++0.9803921568627451 flow(gasBus_pwltf_2) ++0.9803921568627451 flow(gasBus_pwltf_3) ++0.9611687812379853 flow(gasBus_pwltf_4) ++0.9611687812379853 flow(gasBus_pwltf_5) s.t. -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_pwltf_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(pwltf_electricityBus_0) = 0 -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_pwltf_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(pwltf_electricityBus_1) = 0 -c_e_BusBlock_balance(gasBus_1_2)_: -+1 flow(gasBus_pwltf_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(pwltf_electricityBus_2) = 0 -c_e_BusBlock_balance(gasBus_1_3)_: -+1 flow(gasBus_pwltf_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(pwltf_electricityBus_3) = 0 -c_e_BusBlock_balance(gasBus_2_4)_: -+1 flow(gasBus_pwltf_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(pwltf_electricityBus_4) = 0 -c_e_BusBlock_balance(gasBus_2_5)_: -+1 flow(gasBus_pwltf_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(pwltf_electricityBus_5) = 0 -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(pwltf_electricityBus_0_0) +c_e_BusBlock_balance(gasBus_0)_: ++1 flow(gasBus_pwltf_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(pwltf_electricityBus_0_1) +c_e_BusBlock_balance(gasBus_1)_: ++1 flow(gasBus_pwltf_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(pwltf_electricityBus_1_2) +c_e_BusBlock_balance(gasBus_2)_: ++1 flow(gasBus_pwltf_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(pwltf_electricityBus_1_3) +c_e_BusBlock_balance(gasBus_3)_: ++1 flow(gasBus_pwltf_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(pwltf_electricityBus_2_4) +c_e_BusBlock_balance(gasBus_4)_: ++1 flow(gasBus_pwltf_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(pwltf_electricityBus_2_5) +c_e_BusBlock_balance(gasBus_5)_: ++1 flow(gasBus_pwltf_5) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0_0)_: --1 flow(gasBus_pwltf_0_0) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0)_: +-1 flow(gasBus_pwltf_0) +1 PiecewiseLinearConverterBlock_inflow(pwltf_0) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0_1)_: --1 flow(gasBus_pwltf_0_1) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_1)_: +-1 flow(gasBus_pwltf_1) +1 PiecewiseLinearConverterBlock_inflow(pwltf_1) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_1_2)_: --1 flow(gasBus_pwltf_1_2) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_2)_: +-1 flow(gasBus_pwltf_2) +1 PiecewiseLinearConverterBlock_inflow(pwltf_2) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_1_3)_: --1 flow(gasBus_pwltf_1_3) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_3)_: +-1 flow(gasBus_pwltf_3) +1 PiecewiseLinearConverterBlock_inflow(pwltf_3) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_2_4)_: --1 flow(gasBus_pwltf_2_4) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_4)_: +-1 flow(gasBus_pwltf_4) +1 PiecewiseLinearConverterBlock_inflow(pwltf_4) = 0 -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_2_5)_: --1 flow(gasBus_pwltf_2_5) +c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_5)_: +-1 flow(gasBus_pwltf_5) +1 PiecewiseLinearConverterBlock_inflow(pwltf_5) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0_0)_: --1 flow(pwltf_electricityBus_0_0) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0)_: +-1 flow(pwltf_electricityBus_0) +1 PiecewiseLinearConverterBlock_outflow(pwltf_0) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0_1)_: --1 flow(pwltf_electricityBus_0_1) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_1)_: +-1 flow(pwltf_electricityBus_1) +1 PiecewiseLinearConverterBlock_outflow(pwltf_1) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_1_2)_: --1 flow(pwltf_electricityBus_1_2) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_2)_: +-1 flow(pwltf_electricityBus_2) +1 PiecewiseLinearConverterBlock_outflow(pwltf_2) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_1_3)_: --1 flow(pwltf_electricityBus_1_3) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_3)_: +-1 flow(pwltf_electricityBus_3) +1 PiecewiseLinearConverterBlock_outflow(pwltf_3) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_2_4)_: --1 flow(pwltf_electricityBus_2_4) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_4)_: +-1 flow(pwltf_electricityBus_4) +1 PiecewiseLinearConverterBlock_outflow(pwltf_4) = 0 -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_2_5)_: --1 flow(pwltf_electricityBus_2_5) +c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_5)_: +-1 flow(pwltf_electricityBus_5) +1 PiecewiseLinearConverterBlock_outflow(pwltf_5) = 0 @@ -142,9 +142,9 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_constraint3(1)_: +-1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(1_1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(1_2) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(1) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(1_1) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_constraint3(2)_: @@ -195,9 +195,9 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_constraint3(1)_: +-1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(1_1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(1_2) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(1) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(1_1) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_constraint3(2)_: @@ -248,9 +248,9 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_constraint3(1)_: +-1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(1_1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(1_2) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(1) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(1_1) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_constraint3(2)_: @@ -301,9 +301,9 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_constraint3(1)_: +-1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(1_1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(1_2) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_bin_y(1) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(1_1) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_constraint3(2)_: @@ -354,9 +354,9 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_constraint3(1)_: +-1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(1_1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(1_2) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_bin_y(1) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(1_1) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_constraint3(2)_: @@ -407,9 +407,9 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_constraint2_: = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_constraint3(1)_: +-1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(1_1) -1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(1_2) +1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_bin_y(1) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(1_1) = 0 c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_constraint3(2)_: @@ -438,18 +438,18 @@ c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_constraint4_: = 1 bounds - 0 <= flow(gasBus_pwltf_0_0) <= 100 - 0 <= flow(gasBus_pwltf_0_1) <= 100 - 0 <= flow(gasBus_pwltf_1_2) <= 100 - 0 <= flow(gasBus_pwltf_1_3) <= 100 - 0 <= flow(gasBus_pwltf_2_4) <= 100 - 0 <= flow(gasBus_pwltf_2_5) <= 100 - 0 <= flow(pwltf_electricityBus_0_0) <= +inf - 0 <= flow(pwltf_electricityBus_0_1) <= +inf - 0 <= flow(pwltf_electricityBus_1_2) <= +inf - 0 <= flow(pwltf_electricityBus_1_3) <= +inf - 0 <= flow(pwltf_electricityBus_2_4) <= +inf - 0 <= flow(pwltf_electricityBus_2_5) <= +inf + 0 <= flow(gasBus_pwltf_0) <= 100 + 0 <= flow(gasBus_pwltf_1) <= 100 + 0 <= flow(gasBus_pwltf_2) <= 100 + 0 <= flow(gasBus_pwltf_3) <= 100 + 0 <= flow(gasBus_pwltf_4) <= 100 + 0 <= flow(gasBus_pwltf_5) <= 100 + 0 <= flow(pwltf_electricityBus_0) <= +inf + 0 <= flow(pwltf_electricityBus_1) <= +inf + 0 <= flow(pwltf_electricityBus_2) <= +inf + 0 <= flow(pwltf_electricityBus_3) <= +inf + 0 <= flow(pwltf_electricityBus_4) <= +inf + 0 <= flow(pwltf_electricityBus_5) <= +inf 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_0) <= 100 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_1) <= 100 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_2) <= 100 @@ -462,6 +462,7 @@ bounds 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_3) <= 10000 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_4) <= 10000 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_5) <= 10000 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(1_1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(1_2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(2_2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(2_3) <= +inf @@ -470,10 +471,10 @@ bounds 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(4_4) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(4_5) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(1) <= 1 - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(1_1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(2) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(3) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_bin_y(4) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(1_1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(1_2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(2_2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(2_3) <= +inf @@ -482,10 +483,10 @@ bounds 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(4_4) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(4_5) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(1) <= 1 - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(1_1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(2) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(3) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_bin_y(4) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(1_1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(1_2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(2_2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(2_3) <= +inf @@ -494,10 +495,10 @@ bounds 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(4_4) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(4_5) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(1) <= 1 - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(1_1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(2) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(3) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_bin_y(4) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(1_1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(1_2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(2_2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(2_3) <= +inf @@ -506,10 +507,10 @@ bounds 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(4_4) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(4_5) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_bin_y(1) <= 1 - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(1_1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_bin_y(2) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_bin_y(3) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_bin_y(4) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(1_1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(1_2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(2_2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(2_3) <= +inf @@ -518,10 +519,10 @@ bounds 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(4_4) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(4_5) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_bin_y(1) <= 1 - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(1_1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_bin_y(2) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_bin_y(3) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_bin_y(4) <= 1 + 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(1_1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(1_2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(2_2) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(2_3) <= +inf @@ -530,7 +531,6 @@ bounds 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(4_4) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(4_5) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_bin_y(1) <= 1 - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(1_1) <= +inf 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_bin_y(2) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_bin_y(3) <= 1 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_bin_y(4) <= 1 diff --git a/tests/lp_files/shared_limit.lp b/tests/lp_files/shared_limit.lp index 0ff745a60..e170decf6 100644 --- a/tests/lp_files/shared_limit.lp +++ b/tests/lp_files/shared_limit.lp @@ -24,67 +24,67 @@ c_e_limit_storage_constraint(2)_: -1 limit_storage(2) = 0 -c_e_BusBlock_balance(bus_0_0)_: -+1 flow(storage1_bus_0_0) -+1 flow(storage2_bus_0_0) --1 flow(bus_storage1_0_0) --1 flow(bus_storage2_0_0) +c_e_BusBlock_balance(bus_0)_: +-1 flow(bus_storage1_0) +-1 flow(bus_storage2_0) ++1 flow(storage1_bus_0) ++1 flow(storage2_bus_0) = 0 -c_e_BusBlock_balance(bus_0_1)_: -+1 flow(storage1_bus_0_1) -+1 flow(storage2_bus_0_1) --1 flow(bus_storage1_0_1) --1 flow(bus_storage2_0_1) +c_e_BusBlock_balance(bus_1)_: +-1 flow(bus_storage1_1) +-1 flow(bus_storage2_1) ++1 flow(storage1_bus_1) ++1 flow(storage2_bus_1) = 0 -c_e_BusBlock_balance(bus_0_2)_: -+1 flow(storage1_bus_0_2) -+1 flow(storage2_bus_0_2) --1 flow(bus_storage1_0_2) --1 flow(bus_storage2_0_2) +c_e_BusBlock_balance(bus_2)_: +-1 flow(bus_storage1_2) +-1 flow(bus_storage2_2) ++1 flow(storage1_bus_2) ++1 flow(storage2_bus_2) = 0 -c_e_GenericStorageBlock_balance(storage1_0_0)_: +c_e_GenericStorageBlock_balance(storage1_0)_: -1 GenericStorageBlock_storage_content(storage1_0) +1 GenericStorageBlock_storage_content(storage1_1) -+1 flow(storage1_bus_0_0) --1 flow(bus_storage1_0_0) +-1 flow(bus_storage1_0) ++1 flow(storage1_bus_0) = 0 -c_e_GenericStorageBlock_balance(storage1_0_1)_: +c_e_GenericStorageBlock_balance(storage1_1)_: -1 GenericStorageBlock_storage_content(storage1_1) +1 GenericStorageBlock_storage_content(storage1_2) -+1 flow(storage1_bus_0_1) --1 flow(bus_storage1_0_1) +-1 flow(bus_storage1_1) ++1 flow(storage1_bus_1) = 0 -c_e_GenericStorageBlock_balance(storage1_0_2)_: +c_e_GenericStorageBlock_balance(storage1_2)_: -1 GenericStorageBlock_storage_content(storage1_2) -+1 flow(storage1_bus_0_2) --1 flow(bus_storage1_0_2) +1 GenericStorageBlock_storage_content(storage1_3) +-1 flow(bus_storage1_2) ++1 flow(storage1_bus_2) = 0 -c_e_GenericStorageBlock_balance(storage2_0_0)_: +c_e_GenericStorageBlock_balance(storage2_0)_: -1 GenericStorageBlock_storage_content(storage2_0) +1 GenericStorageBlock_storage_content(storage2_1) -+1 flow(storage2_bus_0_0) --1 flow(bus_storage2_0_0) +-1 flow(bus_storage2_0) ++1 flow(storage2_bus_0) = 0 -c_e_GenericStorageBlock_balance(storage2_0_1)_: +c_e_GenericStorageBlock_balance(storage2_1)_: -1 GenericStorageBlock_storage_content(storage2_1) +1 GenericStorageBlock_storage_content(storage2_2) -+1 flow(storage2_bus_0_1) --1 flow(bus_storage2_0_1) +-1 flow(bus_storage2_1) ++1 flow(storage2_bus_1) = 0 -c_e_GenericStorageBlock_balance(storage2_0_2)_: +c_e_GenericStorageBlock_balance(storage2_2)_: -1 GenericStorageBlock_storage_content(storage2_2) -+1 flow(storage2_bus_0_2) --1 flow(bus_storage2_0_2) +1 GenericStorageBlock_storage_content(storage2_3) +-1 flow(bus_storage2_2) ++1 flow(storage2_bus_2) = 0 c_e_GenericStorageBlock_balanced_cstr(storage1)_: @@ -100,26 +100,26 @@ c_e_GenericStorageBlock_balanced_cstr(storage2)_: bounds 1 <= ONE_VAR_CONSTANT <= 1 0 <= GenericStorageBlock_storage_content(storage1_0) <= 5 - 0 <= GenericStorageBlock_storage_content(storage2_0) <= 5 - 0 <= limit_storage(0) <= 7 0 <= GenericStorageBlock_storage_content(storage1_1) <= 5 - 0 <= GenericStorageBlock_storage_content(storage2_1) <= 5 - 0 <= limit_storage(1) <= 7 0 <= GenericStorageBlock_storage_content(storage1_2) <= 5 - 0 <= GenericStorageBlock_storage_content(storage2_2) <= 5 - 0 <= limit_storage(2) <= 7 - 0 <= flow(storage1_bus_0_0) <= +inf - 0 <= flow(storage2_bus_0_0) <= +inf - 0 <= flow(bus_storage1_0_0) <= +inf - 0 <= flow(bus_storage2_0_0) <= +inf - 0 <= flow(storage1_bus_0_1) <= +inf - 0 <= flow(storage2_bus_0_1) <= +inf - 0 <= flow(bus_storage1_0_1) <= +inf - 0 <= flow(bus_storage2_0_1) <= +inf - 0 <= flow(storage1_bus_0_2) <= +inf - 0 <= flow(storage2_bus_0_2) <= +inf - 0 <= flow(bus_storage1_0_2) <= +inf - 0 <= flow(bus_storage2_0_2) <= +inf 0 <= GenericStorageBlock_storage_content(storage1_3) <= 5 + 0 <= GenericStorageBlock_storage_content(storage2_0) <= 5 + 0 <= GenericStorageBlock_storage_content(storage2_1) <= 5 + 0 <= GenericStorageBlock_storage_content(storage2_2) <= 5 0 <= GenericStorageBlock_storage_content(storage2_3) <= 5 + 0 <= limit_storage(0) <= 7 + 0 <= limit_storage(1) <= 7 + 0 <= limit_storage(2) <= 7 + 0 <= flow(bus_storage1_0) <= +inf + 0 <= flow(bus_storage1_1) <= +inf + 0 <= flow(bus_storage1_2) <= +inf + 0 <= flow(bus_storage2_0) <= +inf + 0 <= flow(bus_storage2_1) <= +inf + 0 <= flow(bus_storage2_2) <= +inf + 0 <= flow(storage1_bus_0) <= +inf + 0 <= flow(storage1_bus_1) <= +inf + 0 <= flow(storage1_bus_2) <= +inf + 0 <= flow(storage2_bus_0) <= +inf + 0 <= flow(storage2_bus_1) <= +inf + 0 <= flow(storage2_bus_2) <= +inf end diff --git a/tests/lp_files/shared_limit_multi_period.lp b/tests/lp_files/shared_limit_multi_period.lp index 6bdd7fa17..5d427e15a 100644 --- a/tests/lp_files/shared_limit_multi_period.lp +++ b/tests/lp_files/shared_limit_multi_period.lp @@ -42,130 +42,130 @@ c_e_limit_storage_constraint(5)_: -1 limit_storage(5) = 0 -c_e_BusBlock_balance(bus_0_0)_: -+1 flow(storage1_bus_0_0) -+1 flow(storage2_bus_0_0) --1 flow(bus_storage1_0_0) --1 flow(bus_storage2_0_0) +c_e_BusBlock_balance(bus_0)_: +-1 flow(bus_storage1_0) +-1 flow(bus_storage2_0) ++1 flow(storage1_bus_0) ++1 flow(storage2_bus_0) = 0 -c_e_BusBlock_balance(bus_0_1)_: -+1 flow(storage1_bus_0_1) -+1 flow(storage2_bus_0_1) --1 flow(bus_storage1_0_1) --1 flow(bus_storage2_0_1) +c_e_BusBlock_balance(bus_1)_: +-1 flow(bus_storage1_1) +-1 flow(bus_storage2_1) ++1 flow(storage1_bus_1) ++1 flow(storage2_bus_1) = 0 -c_e_BusBlock_balance(bus_1_2)_: -+1 flow(storage1_bus_1_2) -+1 flow(storage2_bus_1_2) --1 flow(bus_storage1_1_2) --1 flow(bus_storage2_1_2) +c_e_BusBlock_balance(bus_2)_: +-1 flow(bus_storage1_2) +-1 flow(bus_storage2_2) ++1 flow(storage1_bus_2) ++1 flow(storage2_bus_2) = 0 -c_e_BusBlock_balance(bus_1_3)_: -+1 flow(storage1_bus_1_3) -+1 flow(storage2_bus_1_3) --1 flow(bus_storage1_1_3) --1 flow(bus_storage2_1_3) +c_e_BusBlock_balance(bus_3)_: +-1 flow(bus_storage1_3) +-1 flow(bus_storage2_3) ++1 flow(storage1_bus_3) ++1 flow(storage2_bus_3) = 0 -c_e_BusBlock_balance(bus_2_4)_: -+1 flow(storage1_bus_2_4) -+1 flow(storage2_bus_2_4) --1 flow(bus_storage1_2_4) --1 flow(bus_storage2_2_4) +c_e_BusBlock_balance(bus_4)_: +-1 flow(bus_storage1_4) +-1 flow(bus_storage2_4) ++1 flow(storage1_bus_4) ++1 flow(storage2_bus_4) = 0 -c_e_BusBlock_balance(bus_2_5)_: -+1 flow(storage1_bus_2_5) -+1 flow(storage2_bus_2_5) --1 flow(bus_storage1_2_5) --1 flow(bus_storage2_2_5) +c_e_BusBlock_balance(bus_5)_: +-1 flow(bus_storage1_5) +-1 flow(bus_storage2_5) ++1 flow(storage1_bus_5) ++1 flow(storage2_bus_5) = 0 -c_e_GenericStorageBlock_balance(storage1_0_0)_: +c_e_GenericStorageBlock_balance(storage1_0)_: -1 GenericStorageBlock_storage_content(storage1_0) +1 GenericStorageBlock_storage_content(storage1_1) -+1 flow(storage1_bus_0_0) --1 flow(bus_storage1_0_0) +-1 flow(bus_storage1_0) ++1 flow(storage1_bus_0) = 0 -c_e_GenericStorageBlock_balance(storage1_0_1)_: +c_e_GenericStorageBlock_balance(storage1_1)_: -1 GenericStorageBlock_storage_content(storage1_1) +1 GenericStorageBlock_storage_content(storage1_2) -+1 flow(storage1_bus_0_1) --1 flow(bus_storage1_0_1) +-1 flow(bus_storage1_1) ++1 flow(storage1_bus_1) = 0 -c_e_GenericStorageBlock_balance(storage1_1_2)_: +c_e_GenericStorageBlock_balance(storage1_2)_: -1 GenericStorageBlock_storage_content(storage1_2) +1 GenericStorageBlock_storage_content(storage1_3) -+1 flow(storage1_bus_1_2) --1 flow(bus_storage1_1_2) +-1 flow(bus_storage1_2) ++1 flow(storage1_bus_2) = 0 -c_e_GenericStorageBlock_balance(storage1_1_3)_: +c_e_GenericStorageBlock_balance(storage1_3)_: -1 GenericStorageBlock_storage_content(storage1_3) +1 GenericStorageBlock_storage_content(storage1_4) -+1 flow(storage1_bus_1_3) --1 flow(bus_storage1_1_3) +-1 flow(bus_storage1_3) ++1 flow(storage1_bus_3) = 0 -c_e_GenericStorageBlock_balance(storage1_2_4)_: +c_e_GenericStorageBlock_balance(storage1_4)_: -1 GenericStorageBlock_storage_content(storage1_4) +1 GenericStorageBlock_storage_content(storage1_5) -+1 flow(storage1_bus_2_4) --1 flow(bus_storage1_2_4) +-1 flow(bus_storage1_4) ++1 flow(storage1_bus_4) = 0 -c_e_GenericStorageBlock_balance(storage1_2_5)_: +c_e_GenericStorageBlock_balance(storage1_5)_: -1 GenericStorageBlock_storage_content(storage1_5) -+1 flow(storage1_bus_2_5) --1 flow(bus_storage1_2_5) +1 GenericStorageBlock_storage_content(storage1_6) +-1 flow(bus_storage1_5) ++1 flow(storage1_bus_5) = 0 -c_e_GenericStorageBlock_balance(storage2_0_0)_: +c_e_GenericStorageBlock_balance(storage2_0)_: -1 GenericStorageBlock_storage_content(storage2_0) +1 GenericStorageBlock_storage_content(storage2_1) -+1 flow(storage2_bus_0_0) --1 flow(bus_storage2_0_0) +-1 flow(bus_storage2_0) ++1 flow(storage2_bus_0) = 0 -c_e_GenericStorageBlock_balance(storage2_0_1)_: +c_e_GenericStorageBlock_balance(storage2_1)_: -1 GenericStorageBlock_storage_content(storage2_1) +1 GenericStorageBlock_storage_content(storage2_2) -+1 flow(storage2_bus_0_1) --1 flow(bus_storage2_0_1) +-1 flow(bus_storage2_1) ++1 flow(storage2_bus_1) = 0 -c_e_GenericStorageBlock_balance(storage2_1_2)_: +c_e_GenericStorageBlock_balance(storage2_2)_: -1 GenericStorageBlock_storage_content(storage2_2) +1 GenericStorageBlock_storage_content(storage2_3) -+1 flow(storage2_bus_1_2) --1 flow(bus_storage2_1_2) +-1 flow(bus_storage2_2) ++1 flow(storage2_bus_2) = 0 -c_e_GenericStorageBlock_balance(storage2_1_3)_: +c_e_GenericStorageBlock_balance(storage2_3)_: -1 GenericStorageBlock_storage_content(storage2_3) +1 GenericStorageBlock_storage_content(storage2_4) -+1 flow(storage2_bus_1_3) --1 flow(bus_storage2_1_3) +-1 flow(bus_storage2_3) ++1 flow(storage2_bus_3) = 0 -c_e_GenericStorageBlock_balance(storage2_2_4)_: +c_e_GenericStorageBlock_balance(storage2_4)_: -1 GenericStorageBlock_storage_content(storage2_4) +1 GenericStorageBlock_storage_content(storage2_5) -+1 flow(storage2_bus_2_4) --1 flow(bus_storage2_2_4) +-1 flow(bus_storage2_4) ++1 flow(storage2_bus_4) = 0 -c_e_GenericStorageBlock_balance(storage2_2_5)_: +c_e_GenericStorageBlock_balance(storage2_5)_: -1 GenericStorageBlock_storage_content(storage2_5) -+1 flow(storage2_bus_2_5) --1 flow(bus_storage2_2_5) +1 GenericStorageBlock_storage_content(storage2_6) +-1 flow(bus_storage2_5) ++1 flow(storage2_bus_5) = 0 c_e_GenericStorageBlock_balanced_cstr(storage1)_: @@ -181,47 +181,47 @@ c_e_GenericStorageBlock_balanced_cstr(storage2)_: bounds 1 <= ONE_VAR_CONSTANT <= 1 0 <= GenericStorageBlock_storage_content(storage1_0) <= 5 - 0 <= GenericStorageBlock_storage_content(storage2_0) <= 5 - 0 <= limit_storage(0) <= 7 0 <= GenericStorageBlock_storage_content(storage1_1) <= 5 - 0 <= GenericStorageBlock_storage_content(storage2_1) <= 5 - 0 <= limit_storage(1) <= 7 0 <= GenericStorageBlock_storage_content(storage1_2) <= 5 - 0 <= GenericStorageBlock_storage_content(storage2_2) <= 5 - 0 <= limit_storage(2) <= 7 0 <= GenericStorageBlock_storage_content(storage1_3) <= 5 - 0 <= GenericStorageBlock_storage_content(storage2_3) <= 5 - 0 <= limit_storage(3) <= 7 0 <= GenericStorageBlock_storage_content(storage1_4) <= 5 - 0 <= GenericStorageBlock_storage_content(storage2_4) <= 5 - 0 <= limit_storage(4) <= 7 0 <= GenericStorageBlock_storage_content(storage1_5) <= 5 - 0 <= GenericStorageBlock_storage_content(storage2_5) <= 5 - 0 <= limit_storage(5) <= 7 - 0 <= flow(storage1_bus_0_0) <= +inf - 0 <= flow(storage2_bus_0_0) <= +inf - 0 <= flow(bus_storage1_0_0) <= +inf - 0 <= flow(bus_storage2_0_0) <= +inf - 0 <= flow(storage1_bus_0_1) <= +inf - 0 <= flow(storage2_bus_0_1) <= +inf - 0 <= flow(bus_storage1_0_1) <= +inf - 0 <= flow(bus_storage2_0_1) <= +inf - 0 <= flow(storage1_bus_1_2) <= +inf - 0 <= flow(storage2_bus_1_2) <= +inf - 0 <= flow(bus_storage1_1_2) <= +inf - 0 <= flow(bus_storage2_1_2) <= +inf - 0 <= flow(storage1_bus_1_3) <= +inf - 0 <= flow(storage2_bus_1_3) <= +inf - 0 <= flow(bus_storage1_1_3) <= +inf - 0 <= flow(bus_storage2_1_3) <= +inf - 0 <= flow(storage1_bus_2_4) <= +inf - 0 <= flow(storage2_bus_2_4) <= +inf - 0 <= flow(bus_storage1_2_4) <= +inf - 0 <= flow(bus_storage2_2_4) <= +inf - 0 <= flow(storage1_bus_2_5) <= +inf - 0 <= flow(storage2_bus_2_5) <= +inf - 0 <= flow(bus_storage1_2_5) <= +inf - 0 <= flow(bus_storage2_2_5) <= +inf 0 <= GenericStorageBlock_storage_content(storage1_6) <= 5 + 0 <= GenericStorageBlock_storage_content(storage2_0) <= 5 + 0 <= GenericStorageBlock_storage_content(storage2_1) <= 5 + 0 <= GenericStorageBlock_storage_content(storage2_2) <= 5 + 0 <= GenericStorageBlock_storage_content(storage2_3) <= 5 + 0 <= GenericStorageBlock_storage_content(storage2_4) <= 5 + 0 <= GenericStorageBlock_storage_content(storage2_5) <= 5 0 <= GenericStorageBlock_storage_content(storage2_6) <= 5 + 0 <= limit_storage(0) <= 7 + 0 <= limit_storage(1) <= 7 + 0 <= limit_storage(2) <= 7 + 0 <= limit_storage(3) <= 7 + 0 <= limit_storage(4) <= 7 + 0 <= limit_storage(5) <= 7 + 0 <= flow(bus_storage1_0) <= +inf + 0 <= flow(bus_storage1_1) <= +inf + 0 <= flow(bus_storage1_2) <= +inf + 0 <= flow(bus_storage1_3) <= +inf + 0 <= flow(bus_storage1_4) <= +inf + 0 <= flow(bus_storage1_5) <= +inf + 0 <= flow(bus_storage2_0) <= +inf + 0 <= flow(bus_storage2_1) <= +inf + 0 <= flow(bus_storage2_2) <= +inf + 0 <= flow(bus_storage2_3) <= +inf + 0 <= flow(bus_storage2_4) <= +inf + 0 <= flow(bus_storage2_5) <= +inf + 0 <= flow(storage1_bus_0) <= +inf + 0 <= flow(storage1_bus_1) <= +inf + 0 <= flow(storage1_bus_2) <= +inf + 0 <= flow(storage1_bus_3) <= +inf + 0 <= flow(storage1_bus_4) <= +inf + 0 <= flow(storage1_bus_5) <= +inf + 0 <= flow(storage2_bus_0) <= +inf + 0 <= flow(storage2_bus_1) <= +inf + 0 <= flow(storage2_bus_2) <= +inf + 0 <= flow(storage2_bus_3) <= +inf + 0 <= flow(storage2_bus_4) <= +inf + 0 <= flow(storage2_bus_5) <= +inf end diff --git a/tests/lp_files/source_with_nonconvex_gradient.lp b/tests/lp_files/source_with_nonconvex_gradient.lp index 5e38b5ed7..83c4223da 100644 --- a/tests/lp_files/source_with_nonconvex_gradient.lp +++ b/tests/lp_files/source_with_nonconvex_gradient.lp @@ -2,22 +2,22 @@ min objective: -+23 flow(powerplant_electricityBus_0_0) -+23 flow(powerplant_electricityBus_0_1) -+23 flow(powerplant_electricityBus_0_2) ++23 flow(powerplant_electricityBus_0) ++23 flow(powerplant_electricityBus_1) ++23 flow(powerplant_electricityBus_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplant_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(powerplant_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplant_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(powerplant_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(powerplant_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(powerplant_electricityBus_2) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(powerplant_electricityBus_0)_: @@ -35,82 +35,82 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(powerplant_electricityBus_2)_: -999 NonConvexFlowBlock_status(powerplant_electricityBus_2) = 0 -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_0_0)_: --1 flow(powerplant_electricityBus_0_0) +c_u_NonConvexFlowBlock_min(powerplant_electricityBus_0)_: +-1 flow(powerplant_electricityBus_0) <= 0 -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_0_1)_: --1 flow(powerplant_electricityBus_0_1) +c_u_NonConvexFlowBlock_min(powerplant_electricityBus_1)_: +-1 flow(powerplant_electricityBus_1) <= 0 -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_0_2)_: --1 flow(powerplant_electricityBus_0_2) +c_u_NonConvexFlowBlock_min(powerplant_electricityBus_2)_: +-1 flow(powerplant_electricityBus_2) <= 0 -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_0_0)_: -+1 flow(powerplant_electricityBus_0_0) +c_u_NonConvexFlowBlock_max(powerplant_electricityBus_0)_: ++1 flow(powerplant_electricityBus_0) -1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_0) <= 0 -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_0_1)_: -+1 flow(powerplant_electricityBus_0_1) +c_u_NonConvexFlowBlock_max(powerplant_electricityBus_1)_: ++1 flow(powerplant_electricityBus_1) -1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_1) <= 0 -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_0_2)_: -+1 flow(powerplant_electricityBus_0_2) +c_u_NonConvexFlowBlock_max(powerplant_electricityBus_2)_: ++1 flow(powerplant_electricityBus_2) -1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_2) <= 0 -c_e_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_0_0)_: +c_e_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_0)_: +1 NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_0) = 0 -c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_0_1)_: +c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_1)_: -1 NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_1) + [ --1 flow(powerplant_electricityBus_0_0) * NonConvexFlowBlock_status(powerplant_electricityBus_0) -+1 flow(powerplant_electricityBus_0_1) * NonConvexFlowBlock_status(powerplant_electricityBus_1) +-1 flow(powerplant_electricityBus_0) * NonConvexFlowBlock_status(powerplant_electricityBus_0) ++1 flow(powerplant_electricityBus_1) * NonConvexFlowBlock_status(powerplant_electricityBus_1) ] <= 0 -c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_0_2)_: +c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_2)_: -1 NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_2) + [ --1 flow(powerplant_electricityBus_0_1) * NonConvexFlowBlock_status(powerplant_electricityBus_1) -+1 flow(powerplant_electricityBus_0_2) * NonConvexFlowBlock_status(powerplant_electricityBus_2) +-1 flow(powerplant_electricityBus_1) * NonConvexFlowBlock_status(powerplant_electricityBus_1) ++1 flow(powerplant_electricityBus_2) * NonConvexFlowBlock_status(powerplant_electricityBus_2) ] <= 0 -c_e_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_0_0)_: +c_e_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_0)_: +1 NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_0) = 0 -c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_0_1)_: +c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_1)_: -1 NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_1) + [ -+1 flow(powerplant_electricityBus_0_0) * NonConvexFlowBlock_status(powerplant_electricityBus_0) --1 flow(powerplant_electricityBus_0_1) * NonConvexFlowBlock_status(powerplant_electricityBus_1) ++1 flow(powerplant_electricityBus_0) * NonConvexFlowBlock_status(powerplant_electricityBus_0) +-1 flow(powerplant_electricityBus_1) * NonConvexFlowBlock_status(powerplant_electricityBus_1) ] <= 0 -c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_0_2)_: +c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_2)_: -1 NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_2) + [ -+1 flow(powerplant_electricityBus_0_1) * NonConvexFlowBlock_status(powerplant_electricityBus_1) --1 flow(powerplant_electricityBus_0_2) * NonConvexFlowBlock_status(powerplant_electricityBus_2) ++1 flow(powerplant_electricityBus_1) * NonConvexFlowBlock_status(powerplant_electricityBus_1) +-1 flow(powerplant_electricityBus_2) * NonConvexFlowBlock_status(powerplant_electricityBus_2) ] <= 0 bounds - 0 <= flow(powerplant_electricityBus_0_0) <= 999 - 0 <= flow(powerplant_electricityBus_0_1) <= 999 - 0 <= flow(powerplant_electricityBus_0_2) <= 999 + 0 <= flow(powerplant_electricityBus_0) <= 999 + 0 <= flow(powerplant_electricityBus_1) <= 999 + 0 <= flow(powerplant_electricityBus_2) <= 999 0 <= NonConvexFlowBlock_status_nominal(powerplant_electricityBus_0) <= +inf - 0 <= NonConvexFlowBlock_status(powerplant_electricityBus_0) <= 1 0 <= NonConvexFlowBlock_status_nominal(powerplant_electricityBus_1) <= +inf - 0 <= NonConvexFlowBlock_status(powerplant_electricityBus_1) <= 1 0 <= NonConvexFlowBlock_status_nominal(powerplant_electricityBus_2) <= +inf + 0 <= NonConvexFlowBlock_status(powerplant_electricityBus_0) <= 1 + 0 <= NonConvexFlowBlock_status(powerplant_electricityBus_1) <= 1 0 <= NonConvexFlowBlock_status(powerplant_electricityBus_2) <= 1 0 <= NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_0) <= +inf 0 <= NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_1) <= +inf diff --git a/tests/lp_files/source_with_nonconvex_gradient_multi_period.lp b/tests/lp_files/source_with_nonconvex_gradient_multi_period.lp index 68eac0154..2085f666b 100644 --- a/tests/lp_files/source_with_nonconvex_gradient_multi_period.lp +++ b/tests/lp_files/source_with_nonconvex_gradient_multi_period.lp @@ -2,37 +2,37 @@ min objective: -+23 flow(powerplant_electricityBus_0_0) -+23 flow(powerplant_electricityBus_0_1) -+22.549019607843135 flow(powerplant_electricityBus_1_2) -+22.549019607843135 flow(powerplant_electricityBus_1_3) -+22.10688196847366 flow(powerplant_electricityBus_2_4) -+22.10688196847366 flow(powerplant_electricityBus_2_5) ++23 flow(powerplant_electricityBus_0) ++23 flow(powerplant_electricityBus_1) ++22.549019607843135 flow(powerplant_electricityBus_2) ++22.549019607843135 flow(powerplant_electricityBus_3) ++22.10688196847366 flow(powerplant_electricityBus_4) ++22.10688196847366 flow(powerplant_electricityBus_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplant_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(powerplant_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplant_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(powerplant_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(powerplant_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(powerplant_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(powerplant_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(powerplant_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(powerplant_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(powerplant_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(powerplant_electricityBus_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(powerplant_electricityBus_5) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(powerplant_electricityBus_0)_: @@ -65,166 +65,166 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(powerplant_electricityBus_5)_: -999 NonConvexFlowBlock_status(powerplant_electricityBus_5) = 0 -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_0_0)_: --1 flow(powerplant_electricityBus_0_0) +c_u_NonConvexFlowBlock_min(powerplant_electricityBus_0)_: +-1 flow(powerplant_electricityBus_0) <= 0 -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_0_1)_: --1 flow(powerplant_electricityBus_0_1) +c_u_NonConvexFlowBlock_min(powerplant_electricityBus_1)_: +-1 flow(powerplant_electricityBus_1) <= 0 -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_1_2)_: --1 flow(powerplant_electricityBus_1_2) +c_u_NonConvexFlowBlock_min(powerplant_electricityBus_2)_: +-1 flow(powerplant_electricityBus_2) <= 0 -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_1_3)_: --1 flow(powerplant_electricityBus_1_3) +c_u_NonConvexFlowBlock_min(powerplant_electricityBus_3)_: +-1 flow(powerplant_electricityBus_3) <= 0 -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_2_4)_: --1 flow(powerplant_electricityBus_2_4) +c_u_NonConvexFlowBlock_min(powerplant_electricityBus_4)_: +-1 flow(powerplant_electricityBus_4) <= 0 -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_2_5)_: --1 flow(powerplant_electricityBus_2_5) +c_u_NonConvexFlowBlock_min(powerplant_electricityBus_5)_: +-1 flow(powerplant_electricityBus_5) <= 0 -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_0_0)_: -+1 flow(powerplant_electricityBus_0_0) +c_u_NonConvexFlowBlock_max(powerplant_electricityBus_0)_: ++1 flow(powerplant_electricityBus_0) -1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_0) <= 0 -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_0_1)_: -+1 flow(powerplant_electricityBus_0_1) +c_u_NonConvexFlowBlock_max(powerplant_electricityBus_1)_: ++1 flow(powerplant_electricityBus_1) -1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_1) <= 0 -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_1_2)_: -+1 flow(powerplant_electricityBus_1_2) +c_u_NonConvexFlowBlock_max(powerplant_electricityBus_2)_: ++1 flow(powerplant_electricityBus_2) -1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_2) <= 0 -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_1_3)_: -+1 flow(powerplant_electricityBus_1_3) +c_u_NonConvexFlowBlock_max(powerplant_electricityBus_3)_: ++1 flow(powerplant_electricityBus_3) -1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_3) <= 0 -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_2_4)_: -+1 flow(powerplant_electricityBus_2_4) +c_u_NonConvexFlowBlock_max(powerplant_electricityBus_4)_: ++1 flow(powerplant_electricityBus_4) -1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_4) <= 0 -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_2_5)_: -+1 flow(powerplant_electricityBus_2_5) +c_u_NonConvexFlowBlock_max(powerplant_electricityBus_5)_: ++1 flow(powerplant_electricityBus_5) -1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_5) <= 0 -c_e_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_0_0)_: +c_e_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_0)_: +1 NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_0) = 0 -c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_0_1)_: +c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_1)_: -1 NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_1) + [ --1 flow(powerplant_electricityBus_0_0) * NonConvexFlowBlock_status(powerplant_electricityBus_0) -+1 flow(powerplant_electricityBus_0_1) * NonConvexFlowBlock_status(powerplant_electricityBus_1) +-1 flow(powerplant_electricityBus_0) * NonConvexFlowBlock_status(powerplant_electricityBus_0) ++1 flow(powerplant_electricityBus_1) * NonConvexFlowBlock_status(powerplant_electricityBus_1) ] <= 0 -c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_1_2)_: +c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_2)_: -1 NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_2) + [ --1 flow(powerplant_electricityBus_0_1) * NonConvexFlowBlock_status(powerplant_electricityBus_1) -+1 flow(powerplant_electricityBus_1_2) * NonConvexFlowBlock_status(powerplant_electricityBus_2) +-1 flow(powerplant_electricityBus_1) * NonConvexFlowBlock_status(powerplant_electricityBus_1) ++1 flow(powerplant_electricityBus_2) * NonConvexFlowBlock_status(powerplant_electricityBus_2) ] <= 0 -c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_1_3)_: +c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_3)_: -1 NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_3) + [ --1 flow(powerplant_electricityBus_1_2) * NonConvexFlowBlock_status(powerplant_electricityBus_2) -+1 flow(powerplant_electricityBus_1_3) * NonConvexFlowBlock_status(powerplant_electricityBus_3) +-1 flow(powerplant_electricityBus_2) * NonConvexFlowBlock_status(powerplant_electricityBus_2) ++1 flow(powerplant_electricityBus_3) * NonConvexFlowBlock_status(powerplant_electricityBus_3) ] <= 0 -c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_2_4)_: +c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_4)_: -1 NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_4) + [ --1 flow(powerplant_electricityBus_1_3) * NonConvexFlowBlock_status(powerplant_electricityBus_3) -+1 flow(powerplant_electricityBus_2_4) * NonConvexFlowBlock_status(powerplant_electricityBus_4) +-1 flow(powerplant_electricityBus_3) * NonConvexFlowBlock_status(powerplant_electricityBus_3) ++1 flow(powerplant_electricityBus_4) * NonConvexFlowBlock_status(powerplant_electricityBus_4) ] <= 0 -c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_2_5)_: +c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_5)_: -1 NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_5) + [ --1 flow(powerplant_electricityBus_2_4) * NonConvexFlowBlock_status(powerplant_electricityBus_4) -+1 flow(powerplant_electricityBus_2_5) * NonConvexFlowBlock_status(powerplant_electricityBus_5) +-1 flow(powerplant_electricityBus_4) * NonConvexFlowBlock_status(powerplant_electricityBus_4) ++1 flow(powerplant_electricityBus_5) * NonConvexFlowBlock_status(powerplant_electricityBus_5) ] <= 0 -c_e_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_0_0)_: +c_e_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_0)_: +1 NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_0) = 0 -c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_0_1)_: +c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_1)_: -1 NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_1) + [ -+1 flow(powerplant_electricityBus_0_0) * NonConvexFlowBlock_status(powerplant_electricityBus_0) --1 flow(powerplant_electricityBus_0_1) * NonConvexFlowBlock_status(powerplant_electricityBus_1) ++1 flow(powerplant_electricityBus_0) * NonConvexFlowBlock_status(powerplant_electricityBus_0) +-1 flow(powerplant_electricityBus_1) * NonConvexFlowBlock_status(powerplant_electricityBus_1) ] <= 0 -c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_1_2)_: +c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_2)_: -1 NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_2) + [ -+1 flow(powerplant_electricityBus_0_1) * NonConvexFlowBlock_status(powerplant_electricityBus_1) --1 flow(powerplant_electricityBus_1_2) * NonConvexFlowBlock_status(powerplant_electricityBus_2) ++1 flow(powerplant_electricityBus_1) * NonConvexFlowBlock_status(powerplant_electricityBus_1) +-1 flow(powerplant_electricityBus_2) * NonConvexFlowBlock_status(powerplant_electricityBus_2) ] <= 0 -c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_1_3)_: +c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_3)_: -1 NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_3) + [ -+1 flow(powerplant_electricityBus_1_2) * NonConvexFlowBlock_status(powerplant_electricityBus_2) --1 flow(powerplant_electricityBus_1_3) * NonConvexFlowBlock_status(powerplant_electricityBus_3) ++1 flow(powerplant_electricityBus_2) * NonConvexFlowBlock_status(powerplant_electricityBus_2) +-1 flow(powerplant_electricityBus_3) * NonConvexFlowBlock_status(powerplant_electricityBus_3) ] <= 0 -c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_2_4)_: +c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_4)_: -1 NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_4) + [ -+1 flow(powerplant_electricityBus_1_3) * NonConvexFlowBlock_status(powerplant_electricityBus_3) --1 flow(powerplant_electricityBus_2_4) * NonConvexFlowBlock_status(powerplant_electricityBus_4) ++1 flow(powerplant_electricityBus_3) * NonConvexFlowBlock_status(powerplant_electricityBus_3) +-1 flow(powerplant_electricityBus_4) * NonConvexFlowBlock_status(powerplant_electricityBus_4) ] <= 0 -c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_2_5)_: +c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_5)_: -1 NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_5) + [ -+1 flow(powerplant_electricityBus_2_4) * NonConvexFlowBlock_status(powerplant_electricityBus_4) --1 flow(powerplant_electricityBus_2_5) * NonConvexFlowBlock_status(powerplant_electricityBus_5) ++1 flow(powerplant_electricityBus_4) * NonConvexFlowBlock_status(powerplant_electricityBus_4) +-1 flow(powerplant_electricityBus_5) * NonConvexFlowBlock_status(powerplant_electricityBus_5) ] <= 0 bounds - 0 <= flow(powerplant_electricityBus_0_0) <= 999 - 0 <= flow(powerplant_electricityBus_0_1) <= 999 - 0 <= flow(powerplant_electricityBus_1_2) <= 999 - 0 <= flow(powerplant_electricityBus_1_3) <= 999 - 0 <= flow(powerplant_electricityBus_2_4) <= 999 - 0 <= flow(powerplant_electricityBus_2_5) <= 999 + 0 <= flow(powerplant_electricityBus_0) <= 999 + 0 <= flow(powerplant_electricityBus_1) <= 999 + 0 <= flow(powerplant_electricityBus_2) <= 999 + 0 <= flow(powerplant_electricityBus_3) <= 999 + 0 <= flow(powerplant_electricityBus_4) <= 999 + 0 <= flow(powerplant_electricityBus_5) <= 999 0 <= NonConvexFlowBlock_status_nominal(powerplant_electricityBus_0) <= +inf - 0 <= NonConvexFlowBlock_status(powerplant_electricityBus_0) <= 1 0 <= NonConvexFlowBlock_status_nominal(powerplant_electricityBus_1) <= +inf - 0 <= NonConvexFlowBlock_status(powerplant_electricityBus_1) <= 1 0 <= NonConvexFlowBlock_status_nominal(powerplant_electricityBus_2) <= +inf - 0 <= NonConvexFlowBlock_status(powerplant_electricityBus_2) <= 1 0 <= NonConvexFlowBlock_status_nominal(powerplant_electricityBus_3) <= +inf - 0 <= NonConvexFlowBlock_status(powerplant_electricityBus_3) <= 1 0 <= NonConvexFlowBlock_status_nominal(powerplant_electricityBus_4) <= +inf - 0 <= NonConvexFlowBlock_status(powerplant_electricityBus_4) <= 1 0 <= NonConvexFlowBlock_status_nominal(powerplant_electricityBus_5) <= +inf + 0 <= NonConvexFlowBlock_status(powerplant_electricityBus_0) <= 1 + 0 <= NonConvexFlowBlock_status(powerplant_electricityBus_1) <= 1 + 0 <= NonConvexFlowBlock_status(powerplant_electricityBus_2) <= 1 + 0 <= NonConvexFlowBlock_status(powerplant_electricityBus_3) <= 1 + 0 <= NonConvexFlowBlock_status(powerplant_electricityBus_4) <= 1 0 <= NonConvexFlowBlock_status(powerplant_electricityBus_5) <= 1 0 <= NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_0) <= +inf 0 <= NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_1) <= +inf diff --git a/tests/lp_files/storage.lp b/tests/lp_files/storage.lp index 073f266b7..811bd427b 100644 --- a/tests/lp_files/storage.lp +++ b/tests/lp_files/storage.lp @@ -3,49 +3,49 @@ min objective: +4000.0 ONE_VAR_CONSTANT ++56 flow(electricityBus_storage_no_invest_0) ++56 flow(electricityBus_storage_no_invest_1) ++56 flow(electricityBus_storage_no_invest_2) ++24 flow(storage_no_invest_electricityBus_0) ++24 flow(storage_no_invest_electricityBus_1) ++24 flow(storage_no_invest_electricityBus_2) +0.1 GenericStorageBlock_storage_content(storage_no_invest_1) +0.1 GenericStorageBlock_storage_content(storage_no_invest_2) +0.1 GenericStorageBlock_storage_content(storage_no_invest_3) -+56 flow(electricityBus_storage_no_invest_0_0) -+56 flow(electricityBus_storage_no_invest_0_1) -+56 flow(electricityBus_storage_no_invest_0_2) -+24 flow(storage_no_invest_electricityBus_0_0) -+24 flow(storage_no_invest_electricityBus_0_1) -+24 flow(storage_no_invest_electricityBus_0_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_storage_no_invest_0_0) -+1 flow(storage_no_invest_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage_no_invest_0) ++1 flow(storage_no_invest_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_no_invest_0_1) -+1 flow(storage_no_invest_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage_no_invest_1) ++1 flow(storage_no_invest_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: --1 flow(electricityBus_storage_no_invest_0_2) -+1 flow(storage_no_invest_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage_no_invest_2) ++1 flow(storage_no_invest_electricityBus_2) = 0 -c_e_GenericStorageBlock_balance(storage_no_invest_0_0)_: --0.97 flow(electricityBus_storage_no_invest_0_0) -+1.1627906976744187 flow(storage_no_invest_electricityBus_0_0) +c_e_GenericStorageBlock_balance(storage_no_invest_0)_: +-0.97 flow(electricityBus_storage_no_invest_0) ++1.1627906976744187 flow(storage_no_invest_electricityBus_0) +1 GenericStorageBlock_storage_content(storage_no_invest_1) = 34800.0 -c_e_GenericStorageBlock_balance(storage_no_invest_0_1)_: --0.97 flow(electricityBus_storage_no_invest_0_1) -+1.1627906976744187 flow(storage_no_invest_electricityBus_0_1) +c_e_GenericStorageBlock_balance(storage_no_invest_1)_: +-0.97 flow(electricityBus_storage_no_invest_1) ++1.1627906976744187 flow(storage_no_invest_electricityBus_1) -0.87 GenericStorageBlock_storage_content(storage_no_invest_1) +1 GenericStorageBlock_storage_content(storage_no_invest_2) = 0 -c_e_GenericStorageBlock_balance(storage_no_invest_0_2)_: --0.97 flow(electricityBus_storage_no_invest_0_2) -+1.1627906976744187 flow(storage_no_invest_electricityBus_0_2) +c_e_GenericStorageBlock_balance(storage_no_invest_2)_: +-0.97 flow(electricityBus_storage_no_invest_2) ++1.1627906976744187 flow(storage_no_invest_electricityBus_2) -0.87 GenericStorageBlock_storage_content(storage_no_invest_2) +1 GenericStorageBlock_storage_content(storage_no_invest_3) = 0 @@ -55,13 +55,13 @@ c_e_GenericStorageBlock_balanced_cstr(storage_no_invest)_: = 40000.0 bounds - +1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(electricityBus_storage_no_invest_0_0) <= 16667 - 0 <= flow(electricityBus_storage_no_invest_0_1) <= 16667 - 0 <= flow(electricityBus_storage_no_invest_0_2) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_0_0) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_0_1) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_0_2) <= 16667 + 1 <= ONE_VAR_CONSTANT <= 1 + 0 <= flow(electricityBus_storage_no_invest_0) <= 16667 + 0 <= flow(electricityBus_storage_no_invest_1) <= 16667 + 0 <= flow(electricityBus_storage_no_invest_2) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_0) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_1) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_2) <= 16667 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_1) <= 100000.0 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_2) <= 100000.0 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_3) <= 100000.0 diff --git a/tests/lp_files/storage_fixed_losses.lp b/tests/lp_files/storage_fixed_losses.lp index ca4def3ee..9e0e1036d 100644 --- a/tests/lp_files/storage_fixed_losses.lp +++ b/tests/lp_files/storage_fixed_losses.lp @@ -2,46 +2,46 @@ min objective: -+56 flow(electricityBus_storage_no_invest_0_0) -+56 flow(electricityBus_storage_no_invest_0_1) -+56 flow(electricityBus_storage_no_invest_0_2) -+24 flow(storage_no_invest_electricityBus_0_0) -+24 flow(storage_no_invest_electricityBus_0_1) -+24 flow(storage_no_invest_electricityBus_0_2) ++56 flow(electricityBus_storage_no_invest_0) ++56 flow(electricityBus_storage_no_invest_1) ++56 flow(electricityBus_storage_no_invest_2) ++24 flow(storage_no_invest_electricityBus_0) ++24 flow(storage_no_invest_electricityBus_1) ++24 flow(storage_no_invest_electricityBus_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_storage_no_invest_0_0) -+1 flow(storage_no_invest_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage_no_invest_0) ++1 flow(storage_no_invest_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_no_invest_0_1) -+1 flow(storage_no_invest_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage_no_invest_1) ++1 flow(storage_no_invest_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: --1 flow(electricityBus_storage_no_invest_0_2) -+1 flow(storage_no_invest_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage_no_invest_2) ++1 flow(storage_no_invest_electricityBus_2) = 0 -c_e_GenericStorageBlock_balance(storage_no_invest_0_0)_: --0.97 flow(electricityBus_storage_no_invest_0_0) -+1.1627906976744187 flow(storage_no_invest_electricityBus_0_0) +c_e_GenericStorageBlock_balance(storage_no_invest_0)_: +-0.97 flow(electricityBus_storage_no_invest_0) ++1.1627906976744187 flow(storage_no_invest_electricityBus_0) +1 GenericStorageBlock_storage_content(storage_no_invest_1) = 33797.0 -c_e_GenericStorageBlock_balance(storage_no_invest_0_1)_: --0.97 flow(electricityBus_storage_no_invest_0_1) -+1.1627906976744187 flow(storage_no_invest_electricityBus_0_1) +c_e_GenericStorageBlock_balance(storage_no_invest_1)_: +-0.97 flow(electricityBus_storage_no_invest_1) ++1.1627906976744187 flow(storage_no_invest_electricityBus_1) -0.87 GenericStorageBlock_storage_content(storage_no_invest_1) +1 GenericStorageBlock_storage_content(storage_no_invest_2) = -1003.0 -c_e_GenericStorageBlock_balance(storage_no_invest_0_2)_: --0.97 flow(electricityBus_storage_no_invest_0_2) -+1.1627906976744187 flow(storage_no_invest_electricityBus_0_2) +c_e_GenericStorageBlock_balance(storage_no_invest_2)_: +-0.97 flow(electricityBus_storage_no_invest_2) ++1.1627906976744187 flow(storage_no_invest_electricityBus_2) -0.87 GenericStorageBlock_storage_content(storage_no_invest_2) +1 GenericStorageBlock_storage_content(storage_no_invest_3) = -1003.0 @@ -51,12 +51,12 @@ c_e_GenericStorageBlock_balanced_cstr(storage_no_invest)_: = 40000.0 bounds - 0 <= flow(electricityBus_storage_no_invest_0_0) <= 16667 - 0 <= flow(electricityBus_storage_no_invest_0_1) <= 16667 - 0 <= flow(electricityBus_storage_no_invest_0_2) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_0_0) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_0_1) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_0_2) <= 16667 + 0 <= flow(electricityBus_storage_no_invest_0) <= 16667 + 0 <= flow(electricityBus_storage_no_invest_1) <= 16667 + 0 <= flow(electricityBus_storage_no_invest_2) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_0) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_1) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_2) <= 16667 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_1) <= 100000.0 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_2) <= 100000.0 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_3) <= 100000.0 diff --git a/tests/lp_files/storage_fixed_losses_multi_period.lp b/tests/lp_files/storage_fixed_losses_multi_period.lp index 04ed25c3c..ceef58ad9 100644 --- a/tests/lp_files/storage_fixed_losses_multi_period.lp +++ b/tests/lp_files/storage_fixed_losses_multi_period.lp @@ -2,88 +2,88 @@ min objective: -+56 flow(electricityBus_storage_no_invest_0_0) -+56 flow(electricityBus_storage_no_invest_0_1) -+54.90196078431372 flow(electricityBus_storage_no_invest_1_2) -+54.90196078431372 flow(electricityBus_storage_no_invest_1_3) -+53.82545174932718 flow(electricityBus_storage_no_invest_2_4) -+53.82545174932718 flow(electricityBus_storage_no_invest_2_5) -+24 flow(storage_no_invest_electricityBus_0_0) -+24 flow(storage_no_invest_electricityBus_0_1) -+23.52941176470588 flow(storage_no_invest_electricityBus_1_2) -+23.52941176470588 flow(storage_no_invest_electricityBus_1_3) -+23.06805074971165 flow(storage_no_invest_electricityBus_2_4) -+23.06805074971165 flow(storage_no_invest_electricityBus_2_5) ++56 flow(electricityBus_storage_no_invest_0) ++56 flow(electricityBus_storage_no_invest_1) ++54.90196078431372 flow(electricityBus_storage_no_invest_2) ++54.90196078431372 flow(electricityBus_storage_no_invest_3) ++53.82545174932718 flow(electricityBus_storage_no_invest_4) ++53.82545174932718 flow(electricityBus_storage_no_invest_5) ++24 flow(storage_no_invest_electricityBus_0) ++24 flow(storage_no_invest_electricityBus_1) ++23.52941176470588 flow(storage_no_invest_electricityBus_2) ++23.52941176470588 flow(storage_no_invest_electricityBus_3) ++23.06805074971165 flow(storage_no_invest_electricityBus_4) ++23.06805074971165 flow(storage_no_invest_electricityBus_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_storage_no_invest_0_0) -+1 flow(storage_no_invest_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage_no_invest_0) ++1 flow(storage_no_invest_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_no_invest_0_1) -+1 flow(storage_no_invest_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage_no_invest_1) ++1 flow(storage_no_invest_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_storage_no_invest_1_2) -+1 flow(storage_no_invest_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage_no_invest_2) ++1 flow(storage_no_invest_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_storage_no_invest_1_3) -+1 flow(storage_no_invest_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_storage_no_invest_3) ++1 flow(storage_no_invest_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_storage_no_invest_2_4) -+1 flow(storage_no_invest_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_storage_no_invest_4) ++1 flow(storage_no_invest_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: --1 flow(electricityBus_storage_no_invest_2_5) -+1 flow(storage_no_invest_electricityBus_2_5) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_storage_no_invest_5) ++1 flow(storage_no_invest_electricityBus_5) = 0 -c_e_GenericStorageBlock_balance(storage_no_invest_0_0)_: --0.97 flow(electricityBus_storage_no_invest_0_0) -+1.1627906976744187 flow(storage_no_invest_electricityBus_0_0) +c_e_GenericStorageBlock_balance(storage_no_invest_0)_: +-0.97 flow(electricityBus_storage_no_invest_0) ++1.1627906976744187 flow(storage_no_invest_electricityBus_0) +1 GenericStorageBlock_storage_content(storage_no_invest_1) = 33797.0 -c_e_GenericStorageBlock_balance(storage_no_invest_0_1)_: --0.97 flow(electricityBus_storage_no_invest_0_1) -+1.1627906976744187 flow(storage_no_invest_electricityBus_0_1) +c_e_GenericStorageBlock_balance(storage_no_invest_1)_: +-0.97 flow(electricityBus_storage_no_invest_1) ++1.1627906976744187 flow(storage_no_invest_electricityBus_1) -0.87 GenericStorageBlock_storage_content(storage_no_invest_1) +1 GenericStorageBlock_storage_content(storage_no_invest_2) = -1003.0 -c_e_GenericStorageBlock_balance(storage_no_invest_1_2)_: --0.97 flow(electricityBus_storage_no_invest_1_2) -+1.1627906976744187 flow(storage_no_invest_electricityBus_1_2) +c_e_GenericStorageBlock_balance(storage_no_invest_2)_: +-0.97 flow(electricityBus_storage_no_invest_2) ++1.1627906976744187 flow(storage_no_invest_electricityBus_2) -0.87 GenericStorageBlock_storage_content(storage_no_invest_2) +1 GenericStorageBlock_storage_content(storage_no_invest_3) = -1003.0 -c_e_GenericStorageBlock_balance(storage_no_invest_1_3)_: --0.97 flow(electricityBus_storage_no_invest_1_3) -+1.1627906976744187 flow(storage_no_invest_electricityBus_1_3) +c_e_GenericStorageBlock_balance(storage_no_invest_3)_: +-0.97 flow(electricityBus_storage_no_invest_3) ++1.1627906976744187 flow(storage_no_invest_electricityBus_3) -0.87 GenericStorageBlock_storage_content(storage_no_invest_3) +1 GenericStorageBlock_storage_content(storage_no_invest_4) = -1003.0 -c_e_GenericStorageBlock_balance(storage_no_invest_2_4)_: --0.97 flow(electricityBus_storage_no_invest_2_4) -+1.1627906976744187 flow(storage_no_invest_electricityBus_2_4) +c_e_GenericStorageBlock_balance(storage_no_invest_4)_: +-0.97 flow(electricityBus_storage_no_invest_4) ++1.1627906976744187 flow(storage_no_invest_electricityBus_4) -0.87 GenericStorageBlock_storage_content(storage_no_invest_4) +1 GenericStorageBlock_storage_content(storage_no_invest_5) = -1003.0 -c_e_GenericStorageBlock_balance(storage_no_invest_2_5)_: --0.97 flow(electricityBus_storage_no_invest_2_5) -+1.1627906976744187 flow(storage_no_invest_electricityBus_2_5) +c_e_GenericStorageBlock_balance(storage_no_invest_5)_: +-0.97 flow(electricityBus_storage_no_invest_5) ++1.1627906976744187 flow(storage_no_invest_electricityBus_5) -0.87 GenericStorageBlock_storage_content(storage_no_invest_5) +1 GenericStorageBlock_storage_content(storage_no_invest_6) = -1003.0 @@ -93,18 +93,18 @@ c_e_GenericStorageBlock_balanced_cstr(storage_no_invest)_: = 40000.0 bounds - 0 <= flow(electricityBus_storage_no_invest_0_0) <= 16667 - 0 <= flow(electricityBus_storage_no_invest_0_1) <= 16667 - 0 <= flow(electricityBus_storage_no_invest_1_2) <= 16667 - 0 <= flow(electricityBus_storage_no_invest_1_3) <= 16667 - 0 <= flow(electricityBus_storage_no_invest_2_4) <= 16667 - 0 <= flow(electricityBus_storage_no_invest_2_5) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_0_0) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_0_1) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_1_2) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_1_3) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_2_4) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_2_5) <= 16667 + 0 <= flow(electricityBus_storage_no_invest_0) <= 16667 + 0 <= flow(electricityBus_storage_no_invest_1) <= 16667 + 0 <= flow(electricityBus_storage_no_invest_2) <= 16667 + 0 <= flow(electricityBus_storage_no_invest_3) <= 16667 + 0 <= flow(electricityBus_storage_no_invest_4) <= 16667 + 0 <= flow(electricityBus_storage_no_invest_5) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_0) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_1) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_2) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_3) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_4) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_5) <= 16667 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_1) <= 100000.0 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_2) <= 100000.0 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_3) <= 100000.0 diff --git a/tests/lp_files/storage_invest_1.lp b/tests/lp_files/storage_invest_1.lp index d40a61114..c6f8a4183 100644 --- a/tests/lp_files/storage_invest_1.lp +++ b/tests/lp_files/storage_invest_1.lp @@ -2,29 +2,29 @@ min objective: -+56 flow(electricityBus_storage1_0_0) -+56 flow(electricityBus_storage1_0_1) -+56 flow(electricityBus_storage1_0_2) -+24 flow(storage1_electricityBus_0_0) -+24 flow(storage1_electricityBus_0_1) -+24 flow(storage1_electricityBus_0_2) ++56 flow(electricityBus_storage1_0) ++56 flow(electricityBus_storage1_1) ++56 flow(electricityBus_storage1_2) ++24 flow(storage1_electricityBus_0) ++24 flow(storage1_electricityBus_1) ++24 flow(storage1_electricityBus_2) +145 GenericInvestmentStorageBlock_invest(storage1_0) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_storage1_0_0) -+1 flow(storage1_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage1_0) ++1 flow(storage1_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage1_0_1) -+1 flow(storage1_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage1_1) ++1 flow(storage1_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: --1 flow(electricityBus_storage1_0_2) -+1 flow(storage1_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage1_2) ++1 flow(storage1_electricityBus_2) = 0 c_e_InvestmentFlowBlock_total_rule(electricityBus_storage1_0)_: @@ -38,32 +38,32 @@ c_e_InvestmentFlowBlock_total_rule(storage1_electricityBus_0)_: = 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_0)_: -+1 flow(electricityBus_storage1_0_0) ++1 flow(electricityBus_storage1_0) -1 InvestmentFlowBlock_total(electricityBus_storage1_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_1)_: -+1 flow(electricityBus_storage1_0_1) ++1 flow(electricityBus_storage1_1) -1 InvestmentFlowBlock_total(electricityBus_storage1_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_2)_: -+1 flow(electricityBus_storage1_0_2) ++1 flow(electricityBus_storage1_2) -1 InvestmentFlowBlock_total(electricityBus_storage1_0) <= 0 c_u_InvestmentFlowBlock_max(storage1_electricityBus_0_0)_: -+1 flow(storage1_electricityBus_0_0) ++1 flow(storage1_electricityBus_0) -1 InvestmentFlowBlock_total(storage1_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage1_electricityBus_0_1)_: -+1 flow(storage1_electricityBus_0_1) ++1 flow(storage1_electricityBus_1) -1 InvestmentFlowBlock_total(storage1_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage1_electricityBus_0_2)_: -+1 flow(storage1_electricityBus_0_2) ++1 flow(storage1_electricityBus_2) -1 InvestmentFlowBlock_total(storage1_electricityBus_0) <= 0 @@ -78,22 +78,22 @@ c_u_GenericInvestmentStorageBlock_init_content_limit(storage1)_: <= 0 c_e_GenericInvestmentStorageBlock_balance_first(storage1)_: --0.97 flow(electricityBus_storage1_0_0) -+1.1627906976744187 flow(storage1_electricityBus_0_0) +-0.97 flow(electricityBus_storage1_0) ++1.1627906976744187 flow(storage1_electricityBus_0) -0.87 GenericInvestmentStorageBlock_init_content(storage1) +1 GenericInvestmentStorageBlock_storage_content(storage1_0) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_0_1)_: --0.97 flow(electricityBus_storage1_0_1) -+1.1627906976744187 flow(storage1_electricityBus_0_1) +-0.97 flow(electricityBus_storage1_1) ++1.1627906976744187 flow(storage1_electricityBus_1) -0.87 GenericInvestmentStorageBlock_storage_content(storage1_0) +1 GenericInvestmentStorageBlock_storage_content(storage1_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_0_2)_: --0.97 flow(electricityBus_storage1_0_2) -+1.1627906976744187 flow(storage1_electricityBus_0_2) +-0.97 flow(electricityBus_storage1_2) ++1.1627906976744187 flow(storage1_electricityBus_2) -0.87 GenericInvestmentStorageBlock_storage_content(storage1_1) +1 GenericInvestmentStorageBlock_storage_content(storage1_2) = 0 @@ -144,16 +144,16 @@ c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_0_2)_: <= 0 bounds - 0 <= flow(electricityBus_storage1_0_0) <= +inf - 0 <= flow(electricityBus_storage1_0_1) <= +inf - 0 <= flow(electricityBus_storage1_0_2) <= +inf - 0 <= flow(storage1_electricityBus_0_0) <= +inf - 0 <= flow(storage1_electricityBus_0_1) <= +inf - 0 <= flow(storage1_electricityBus_0_2) <= +inf + 0 <= flow(electricityBus_storage1_0) <= +inf + 0 <= flow(electricityBus_storage1_1) <= +inf + 0 <= flow(electricityBus_storage1_2) <= +inf + 0 <= flow(storage1_electricityBus_0) <= +inf + 0 <= flow(storage1_electricityBus_1) <= +inf + 0 <= flow(storage1_electricityBus_2) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage1_0) <= 234 0 <= InvestmentFlowBlock_total(electricityBus_storage1_0) <= +inf - 0 <= InvestmentFlowBlock_invest(electricityBus_storage1_0) <= +inf 0 <= InvestmentFlowBlock_total(storage1_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_invest(electricityBus_storage1_0) <= +inf 0 <= InvestmentFlowBlock_invest(storage1_electricityBus_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_init_content(storage1) <= +inf diff --git a/tests/lp_files/storage_invest_1_fixed_losses.lp b/tests/lp_files/storage_invest_1_fixed_losses.lp index 2ab9c0173..7675fad1e 100644 --- a/tests/lp_files/storage_invest_1_fixed_losses.lp +++ b/tests/lp_files/storage_invest_1_fixed_losses.lp @@ -2,29 +2,29 @@ min objective: -+56 flow(electricityBus_storage1_0_0) -+56 flow(electricityBus_storage1_0_1) -+56 flow(electricityBus_storage1_0_2) -+24 flow(storage1_electricityBus_0_0) -+24 flow(storage1_electricityBus_0_1) -+24 flow(storage1_electricityBus_0_2) ++56 flow(electricityBus_storage1_0) ++56 flow(electricityBus_storage1_1) ++56 flow(electricityBus_storage1_2) ++24 flow(storage1_electricityBus_0) ++24 flow(storage1_electricityBus_1) ++24 flow(storage1_electricityBus_2) +145 GenericInvestmentStorageBlock_invest(storage1_0) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_storage1_0_0) -+1 flow(storage1_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage1_0) ++1 flow(storage1_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage1_0_1) -+1 flow(storage1_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage1_1) ++1 flow(storage1_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: --1 flow(electricityBus_storage1_0_2) -+1 flow(storage1_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage1_2) ++1 flow(storage1_electricityBus_2) = 0 c_e_InvestmentFlowBlock_total_rule(electricityBus_storage1_0)_: @@ -38,32 +38,32 @@ c_e_InvestmentFlowBlock_total_rule(storage1_electricityBus_0)_: = 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_0)_: -+1 flow(electricityBus_storage1_0_0) ++1 flow(electricityBus_storage1_0) -1 InvestmentFlowBlock_total(electricityBus_storage1_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_1)_: -+1 flow(electricityBus_storage1_0_1) ++1 flow(electricityBus_storage1_1) -1 InvestmentFlowBlock_total(electricityBus_storage1_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_2)_: -+1 flow(electricityBus_storage1_0_2) ++1 flow(electricityBus_storage1_2) -1 InvestmentFlowBlock_total(electricityBus_storage1_0) <= 0 c_u_InvestmentFlowBlock_max(storage1_electricityBus_0_0)_: -+1 flow(storage1_electricityBus_0_0) ++1 flow(storage1_electricityBus_0) -1 InvestmentFlowBlock_total(storage1_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage1_electricityBus_0_1)_: -+1 flow(storage1_electricityBus_0_1) ++1 flow(storage1_electricityBus_1) -1 InvestmentFlowBlock_total(storage1_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage1_electricityBus_0_2)_: -+1 flow(storage1_electricityBus_0_2) ++1 flow(storage1_electricityBus_2) -1 InvestmentFlowBlock_total(storage1_electricityBus_0) <= 0 @@ -78,24 +78,24 @@ c_u_GenericInvestmentStorageBlock_init_content_limit(storage1)_: <= 0 c_e_GenericInvestmentStorageBlock_balance_first(storage1)_: --0.97 flow(electricityBus_storage1_0_0) -+1.1627906976744187 flow(storage1_electricityBus_0_0) +-0.97 flow(electricityBus_storage1_0) ++1.1627906976744187 flow(storage1_electricityBus_0) +0.01 GenericInvestmentStorageBlock_invest(storage1_0) -0.87 GenericInvestmentStorageBlock_init_content(storage1) +1 GenericInvestmentStorageBlock_storage_content(storage1_0) = -3.0 c_e_GenericInvestmentStorageBlock_balance(storage1_0_1)_: --0.97 flow(electricityBus_storage1_0_1) -+1.1627906976744187 flow(storage1_electricityBus_0_1) +-0.97 flow(electricityBus_storage1_1) ++1.1627906976744187 flow(storage1_electricityBus_1) +0.01 GenericInvestmentStorageBlock_total(storage1_0) -0.87 GenericInvestmentStorageBlock_storage_content(storage1_0) +1 GenericInvestmentStorageBlock_storage_content(storage1_1) = -3.0 c_e_GenericInvestmentStorageBlock_balance(storage1_0_2)_: --0.97 flow(electricityBus_storage1_0_2) -+1.1627906976744187 flow(storage1_electricityBus_0_2) +-0.97 flow(electricityBus_storage1_2) ++1.1627906976744187 flow(storage1_electricityBus_2) +0.01 GenericInvestmentStorageBlock_total(storage1_0) -0.87 GenericInvestmentStorageBlock_storage_content(storage1_1) +1 GenericInvestmentStorageBlock_storage_content(storage1_2) @@ -147,16 +147,16 @@ c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_0_2)_: <= 0 bounds - 0 <= flow(electricityBus_storage1_0_0) <= +inf - 0 <= flow(electricityBus_storage1_0_1) <= +inf - 0 <= flow(electricityBus_storage1_0_2) <= +inf - 0 <= flow(storage1_electricityBus_0_0) <= +inf - 0 <= flow(storage1_electricityBus_0_1) <= +inf - 0 <= flow(storage1_electricityBus_0_2) <= +inf + 0 <= flow(electricityBus_storage1_0) <= +inf + 0 <= flow(electricityBus_storage1_1) <= +inf + 0 <= flow(electricityBus_storage1_2) <= +inf + 0 <= flow(storage1_electricityBus_0) <= +inf + 0 <= flow(storage1_electricityBus_1) <= +inf + 0 <= flow(storage1_electricityBus_2) <= +inf 1 <= GenericInvestmentStorageBlock_invest(storage1_0) <= 234 0 <= InvestmentFlowBlock_total(electricityBus_storage1_0) <= +inf - 0 <= InvestmentFlowBlock_invest(electricityBus_storage1_0) <= +inf 0 <= InvestmentFlowBlock_total(storage1_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_invest(electricityBus_storage1_0) <= +inf 0 <= InvestmentFlowBlock_invest(storage1_electricityBus_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_init_content(storage1) <= +inf diff --git a/tests/lp_files/storage_invest_1_multi_period.lp b/tests/lp_files/storage_invest_1_multi_period.lp index bd64f44ed..09a4b975e 100644 --- a/tests/lp_files/storage_invest_1_multi_period.lp +++ b/tests/lp_files/storage_invest_1_multi_period.lp @@ -2,52 +2,52 @@ min objective: -+56 flow(electricityBus_storage1_0_0) -+56 flow(electricityBus_storage1_0_1) -+54.90196078431372 flow(electricityBus_storage1_1_2) -+54.90196078431372 flow(electricityBus_storage1_1_3) -+53.82545174932718 flow(electricityBus_storage1_2_4) -+53.82545174932718 flow(electricityBus_storage1_2_5) -+24 flow(storage1_electricityBus_0_0) -+24 flow(storage1_electricityBus_0_1) -+23.52941176470588 flow(storage1_electricityBus_1_2) -+23.52941176470588 flow(storage1_electricityBus_1_3) -+23.06805074971165 flow(storage1_electricityBus_2_4) -+23.06805074971165 flow(storage1_electricityBus_2_5) ++56 flow(electricityBus_storage1_0) ++56 flow(electricityBus_storage1_1) ++54.90196078431372 flow(electricityBus_storage1_2) ++54.90196078431372 flow(electricityBus_storage1_3) ++53.82545174932718 flow(electricityBus_storage1_4) ++53.82545174932718 flow(electricityBus_storage1_5) ++24 flow(storage1_electricityBus_0) ++24 flow(storage1_electricityBus_1) ++23.52941176470588 flow(storage1_electricityBus_2) ++23.52941176470588 flow(storage1_electricityBus_3) ++23.06805074971165 flow(storage1_electricityBus_4) ++23.06805074971165 flow(storage1_electricityBus_5) +31.685467778602654 GenericInvestmentStorageBlock_invest(storage1_0) +21.210358847924045 GenericInvestmentStorageBlock_invest(storage1_1) +10.650825820334894 GenericInvestmentStorageBlock_invest(storage1_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_storage1_0_0) -+1 flow(storage1_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage1_0) ++1 flow(storage1_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage1_0_1) -+1 flow(storage1_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage1_1) ++1 flow(storage1_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_storage1_1_2) -+1 flow(storage1_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage1_2) ++1 flow(storage1_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_storage1_1_3) -+1 flow(storage1_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_storage1_3) ++1 flow(storage1_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_storage1_2_4) -+1 flow(storage1_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_storage1_4) ++1 flow(storage1_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: --1 flow(electricityBus_storage1_2_5) -+1 flow(storage1_electricityBus_2_5) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_storage1_5) ++1 flow(storage1_electricityBus_5) = 0 c_e_InvestmentFlowBlock_total_rule(electricityBus_storage1_0)_: @@ -137,9 +137,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(storage1_electricityBus_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage1_0)_: ++1 InvestmentFlowBlock_old(electricityBus_storage1_0) -1 InvestmentFlowBlock_old_end(electricityBus_storage1_0) -1 InvestmentFlowBlock_old_exo(electricityBus_storage1_0) -+1 InvestmentFlowBlock_old(electricityBus_storage1_0) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage1_1)_: @@ -155,9 +155,9 @@ c_e_InvestmentFlowBlock_old_rule(electricityBus_storage1_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(storage1_electricityBus_0)_: ++1 InvestmentFlowBlock_old(storage1_electricityBus_0) -1 InvestmentFlowBlock_old_end(storage1_electricityBus_0) -1 InvestmentFlowBlock_old_exo(storage1_electricityBus_0) -+1 InvestmentFlowBlock_old(storage1_electricityBus_0) = 0 c_e_InvestmentFlowBlock_old_rule(storage1_electricityBus_1)_: @@ -173,62 +173,62 @@ c_e_InvestmentFlowBlock_old_rule(storage1_electricityBus_2)_: = 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_0)_: -+1 flow(electricityBus_storage1_0_0) ++1 flow(electricityBus_storage1_0) -1 InvestmentFlowBlock_total(electricityBus_storage1_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_1)_: -+1 flow(electricityBus_storage1_0_1) ++1 flow(electricityBus_storage1_1) -1 InvestmentFlowBlock_total(electricityBus_storage1_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_1_2)_: -+1 flow(electricityBus_storage1_1_2) ++1 flow(electricityBus_storage1_2) -1 InvestmentFlowBlock_total(electricityBus_storage1_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_1_3)_: -+1 flow(electricityBus_storage1_1_3) ++1 flow(electricityBus_storage1_3) -1 InvestmentFlowBlock_total(electricityBus_storage1_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_2_4)_: -+1 flow(electricityBus_storage1_2_4) ++1 flow(electricityBus_storage1_4) -1 InvestmentFlowBlock_total(electricityBus_storage1_2) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_2_5)_: -+1 flow(electricityBus_storage1_2_5) ++1 flow(electricityBus_storage1_5) -1 InvestmentFlowBlock_total(electricityBus_storage1_2) <= 0 c_u_InvestmentFlowBlock_max(storage1_electricityBus_0_0)_: -+1 flow(storage1_electricityBus_0_0) ++1 flow(storage1_electricityBus_0) -1 InvestmentFlowBlock_total(storage1_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage1_electricityBus_0_1)_: -+1 flow(storage1_electricityBus_0_1) ++1 flow(storage1_electricityBus_1) -1 InvestmentFlowBlock_total(storage1_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage1_electricityBus_1_2)_: -+1 flow(storage1_electricityBus_1_2) ++1 flow(storage1_electricityBus_2) -1 InvestmentFlowBlock_total(storage1_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(storage1_electricityBus_1_3)_: -+1 flow(storage1_electricityBus_1_3) ++1 flow(storage1_electricityBus_3) -1 InvestmentFlowBlock_total(storage1_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(storage1_electricityBus_2_4)_: -+1 flow(storage1_electricityBus_2_4) ++1 flow(storage1_electricityBus_4) -1 InvestmentFlowBlock_total(storage1_electricityBus_2) <= 0 c_u_InvestmentFlowBlock_max(storage1_electricityBus_2_5)_: -+1 flow(storage1_electricityBus_2_5) ++1 flow(storage1_electricityBus_5) -1 InvestmentFlowBlock_total(storage1_electricityBus_2) <= 0 @@ -276,9 +276,9 @@ c_e_GenericInvestmentStorageBlock_old_rule_exo(storage1_2)_: = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage1_0)_: ++1 GenericInvestmentStorageBlock_old(storage1_0) -1 GenericInvestmentStorageBlock_old_end(storage1_0) -1 GenericInvestmentStorageBlock_old_exo(storage1_0) -+1 GenericInvestmentStorageBlock_old(storage1_0) = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage1_1)_: @@ -298,36 +298,36 @@ c_e_GenericInvestmentStorageBlock_initially_empty(storage1_0)_: = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_0_1)_: --0.97 flow(electricityBus_storage1_0_1) -+1.1627906976744187 flow(storage1_electricityBus_0_1) +-0.97 flow(electricityBus_storage1_1) ++1.1627906976744187 flow(storage1_electricityBus_1) -0.87 GenericInvestmentStorageBlock_storage_content(storage1_0) +1 GenericInvestmentStorageBlock_storage_content(storage1_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_1_2)_: --0.97 flow(electricityBus_storage1_1_2) -+1.1627906976744187 flow(storage1_electricityBus_1_2) +-0.97 flow(electricityBus_storage1_2) ++1.1627906976744187 flow(storage1_electricityBus_2) -0.87 GenericInvestmentStorageBlock_storage_content(storage1_1) +1 GenericInvestmentStorageBlock_storage_content(storage1_2) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_1_3)_: --0.97 flow(electricityBus_storage1_1_3) -+1.1627906976744187 flow(storage1_electricityBus_1_3) +-0.97 flow(electricityBus_storage1_3) ++1.1627906976744187 flow(storage1_electricityBus_3) -0.87 GenericInvestmentStorageBlock_storage_content(storage1_2) +1 GenericInvestmentStorageBlock_storage_content(storage1_3) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_2_4)_: --0.97 flow(electricityBus_storage1_2_4) -+1.1627906976744187 flow(storage1_electricityBus_2_4) +-0.97 flow(electricityBus_storage1_4) ++1.1627906976744187 flow(storage1_electricityBus_4) -0.87 GenericInvestmentStorageBlock_storage_content(storage1_3) +1 GenericInvestmentStorageBlock_storage_content(storage1_4) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_2_5)_: --0.97 flow(electricityBus_storage1_2_5) -+1.1627906976744187 flow(storage1_electricityBus_2_5) +-0.97 flow(electricityBus_storage1_5) ++1.1627906976744187 flow(storage1_electricityBus_5) -0.87 GenericInvestmentStorageBlock_storage_content(storage1_4) +1 GenericInvestmentStorageBlock_storage_content(storage1_5) = 0 @@ -439,36 +439,38 @@ c_l_GenericInvestmentStorageBlock_overall_minimum(storage1)_: >= 2 bounds - 0 <= flow(electricityBus_storage1_0_0) <= +inf - 0 <= flow(electricityBus_storage1_0_1) <= +inf - 0 <= flow(electricityBus_storage1_1_2) <= +inf - 0 <= flow(electricityBus_storage1_1_3) <= +inf - 0 <= flow(electricityBus_storage1_2_4) <= +inf - 0 <= flow(electricityBus_storage1_2_5) <= +inf - 0 <= flow(storage1_electricityBus_0_0) <= +inf - 0 <= flow(storage1_electricityBus_0_1) <= +inf - 0 <= flow(storage1_electricityBus_1_2) <= +inf - 0 <= flow(storage1_electricityBus_1_3) <= +inf - 0 <= flow(storage1_electricityBus_2_4) <= +inf - 0 <= flow(storage1_electricityBus_2_5) <= +inf + 0 <= flow(electricityBus_storage1_0) <= +inf + 0 <= flow(electricityBus_storage1_1) <= +inf + 0 <= flow(electricityBus_storage1_2) <= +inf + 0 <= flow(electricityBus_storage1_3) <= +inf + 0 <= flow(electricityBus_storage1_4) <= +inf + 0 <= flow(electricityBus_storage1_5) <= +inf + 0 <= flow(storage1_electricityBus_0) <= +inf + 0 <= flow(storage1_electricityBus_1) <= +inf + 0 <= flow(storage1_electricityBus_2) <= +inf + 0 <= flow(storage1_electricityBus_3) <= +inf + 0 <= flow(storage1_electricityBus_4) <= +inf + 0 <= flow(storage1_electricityBus_5) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage1_0) <= 234 0 <= GenericInvestmentStorageBlock_invest(storage1_1) <= 234 0 <= GenericInvestmentStorageBlock_invest(storage1_2) <= 234 0 <= InvestmentFlowBlock_total(electricityBus_storage1_0) <= +inf - 0 <= InvestmentFlowBlock_invest(electricityBus_storage1_0) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage1_1) <= +inf - 0 <= InvestmentFlowBlock_invest(electricityBus_storage1_1) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage1_1) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage1_2) <= +inf - 0 <= InvestmentFlowBlock_invest(electricityBus_storage1_2) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage1_2) <= +inf 0 <= InvestmentFlowBlock_total(storage1_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_invest(storage1_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(storage1_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_invest(storage1_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old(storage1_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_total(storage1_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_invest(electricityBus_storage1_0) <= +inf + 0 <= InvestmentFlowBlock_invest(electricityBus_storage1_1) <= +inf + 0 <= InvestmentFlowBlock_invest(electricityBus_storage1_2) <= +inf + 0 <= InvestmentFlowBlock_invest(storage1_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_invest(storage1_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_invest(storage1_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage1_0) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage1_1) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage1_2) <= +inf + 0 <= InvestmentFlowBlock_old(storage1_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old(storage1_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old(storage1_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage1_0) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage1_1) <= +inf @@ -482,12 +484,11 @@ bounds 0 <= InvestmentFlowBlock_old_exo(storage1_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(storage1_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(storage1_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage1_0) <= +inf - 0 <= InvestmentFlowBlock_old(storage1_electricityBus_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage1_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage1_1) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage1_2) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage1_0) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage1_1) <= +inf 0 <= GenericInvestmentStorageBlock_old(storage1_2) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage1_1) <= +inf @@ -495,7 +496,6 @@ bounds 0 <= GenericInvestmentStorageBlock_old_exo(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage1_1) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage1_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage1_1) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage1_2) <= +inf diff --git a/tests/lp_files/storage_invest_1_multi_period_remaining_value.lp b/tests/lp_files/storage_invest_1_multi_period_remaining_value.lp index 674580183..ec26ba614 100644 --- a/tests/lp_files/storage_invest_1_multi_period_remaining_value.lp +++ b/tests/lp_files/storage_invest_1_multi_period_remaining_value.lp @@ -2,71 +2,52 @@ min objective: -+56 flow(electricityBus_storage1_0_0) -+56 flow(electricityBus_storage1_0_1) -+54.90196078431372 flow(electricityBus_storage1_1_2) -+54.90196078431372 flow(electricityBus_storage1_1_3) -+53.82545174932718 flow(electricityBus_storage1_2_4) -+53.82545174932718 flow(electricityBus_storage1_2_5) -+24 flow(storage1_electricityBus_0_0) -+24 flow(storage1_electricityBus_0_1) -+23.52941176470588 flow(storage1_electricityBus_1_2) -+23.52941176470588 flow(storage1_electricityBus_1_3) -+23.06805074971165 flow(storage1_electricityBus_2_4) -+23.06805074971165 flow(storage1_electricityBus_2_5) ++56 flow(electricityBus_storage1_0) ++56 flow(electricityBus_storage1_1) ++54.90196078431372 flow(electricityBus_storage1_2) ++54.90196078431372 flow(electricityBus_storage1_3) ++53.82545174932718 flow(electricityBus_storage1_4) ++53.82545174932718 flow(electricityBus_storage1_5) ++24 flow(storage1_electricityBus_0) ++24 flow(storage1_electricityBus_1) ++23.52941176470588 flow(storage1_electricityBus_2) ++23.52941176470588 flow(storage1_electricityBus_3) ++23.06805074971165 flow(storage1_electricityBus_4) ++23.06805074971165 flow(storage1_electricityBus_5) +3.415797742191323 GenericInvestmentStorageBlock_invest(storage1_0) +4.881348776484851 GenericInvestmentStorageBlock_invest(storage1_1) +8.44720668509319 GenericInvestmentStorageBlock_invest(storage1_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_storage1_0_0) -+1 flow(storage1_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage1_0) ++1 flow(storage1_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage1_0_1) -+1 flow(storage1_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage1_1) ++1 flow(storage1_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_storage1_1_2) -+1 flow(storage1_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage1_2) ++1 flow(storage1_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_storage1_1_3) -+1 flow(storage1_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_storage1_3) ++1 flow(storage1_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_storage1_2_4) -+1 flow(storage1_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_storage1_4) ++1 flow(storage1_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: --1 flow(electricityBus_storage1_2_5) -+1 flow(storage1_electricityBus_2_5) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage1_electricityBus_0)_: -+1 InvestmentFlowBlock_total(storage1_electricityBus_0) --1 InvestmentFlowBlock_invest(storage1_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage1_electricityBus_1)_: --1 InvestmentFlowBlock_total(storage1_electricityBus_0) -+1 InvestmentFlowBlock_total(storage1_electricityBus_1) --1 InvestmentFlowBlock_invest(storage1_electricityBus_1) -+1 InvestmentFlowBlock_old(storage1_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage1_electricityBus_2)_: --1 InvestmentFlowBlock_total(storage1_electricityBus_1) -+1 InvestmentFlowBlock_total(storage1_electricityBus_2) --1 InvestmentFlowBlock_invest(storage1_electricityBus_2) -+1 InvestmentFlowBlock_old(storage1_electricityBus_2) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_storage1_5) ++1 flow(storage1_electricityBus_5) = 0 c_e_InvestmentFlowBlock_total_rule(electricityBus_storage1_0)_: @@ -88,16 +69,23 @@ c_e_InvestmentFlowBlock_total_rule(electricityBus_storage1_2)_: +1 InvestmentFlowBlock_old(electricityBus_storage1_2) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage1_electricityBus_0)_: -+1 InvestmentFlowBlock_old_end(storage1_electricityBus_0) +c_e_InvestmentFlowBlock_total_rule(storage1_electricityBus_0)_: ++1 InvestmentFlowBlock_total(storage1_electricityBus_0) +-1 InvestmentFlowBlock_invest(storage1_electricityBus_0) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage1_electricityBus_1)_: -+1 InvestmentFlowBlock_old_end(storage1_electricityBus_1) +c_e_InvestmentFlowBlock_total_rule(storage1_electricityBus_1)_: +-1 InvestmentFlowBlock_total(storage1_electricityBus_0) ++1 InvestmentFlowBlock_total(storage1_electricityBus_1) +-1 InvestmentFlowBlock_invest(storage1_electricityBus_1) ++1 InvestmentFlowBlock_old(storage1_electricityBus_1) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage1_electricityBus_2)_: -+1 InvestmentFlowBlock_old_end(storage1_electricityBus_2) +c_e_InvestmentFlowBlock_total_rule(storage1_electricityBus_2)_: +-1 InvestmentFlowBlock_total(storage1_electricityBus_1) ++1 InvestmentFlowBlock_total(storage1_electricityBus_2) +-1 InvestmentFlowBlock_invest(storage1_electricityBus_2) ++1 InvestmentFlowBlock_old(storage1_electricityBus_2) = 0 c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage1_0)_: @@ -112,16 +100,16 @@ c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage1_2)_: +1 InvestmentFlowBlock_old_end(electricityBus_storage1_2) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage1_electricityBus_0)_: -+1 InvestmentFlowBlock_old_exo(storage1_electricityBus_0) +c_e_InvestmentFlowBlock_old_rule_end(storage1_electricityBus_0)_: ++1 InvestmentFlowBlock_old_end(storage1_electricityBus_0) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage1_electricityBus_1)_: -+1 InvestmentFlowBlock_old_exo(storage1_electricityBus_1) +c_e_InvestmentFlowBlock_old_rule_end(storage1_electricityBus_1)_: ++1 InvestmentFlowBlock_old_end(storage1_electricityBus_1) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage1_electricityBus_2)_: -+1 InvestmentFlowBlock_old_exo(storage1_electricityBus_2) +c_e_InvestmentFlowBlock_old_rule_end(storage1_electricityBus_2)_: ++1 InvestmentFlowBlock_old_end(storage1_electricityBus_2) = 0 c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage1_0)_: @@ -136,28 +124,22 @@ c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage1_2)_: +1 InvestmentFlowBlock_old_exo(electricityBus_storage1_2) = 0 -c_e_InvestmentFlowBlock_old_rule(storage1_electricityBus_0)_: --1 InvestmentFlowBlock_old_end(storage1_electricityBus_0) --1 InvestmentFlowBlock_old_exo(storage1_electricityBus_0) -+1 InvestmentFlowBlock_old(storage1_electricityBus_0) +c_e_InvestmentFlowBlock_old_rule_exo(storage1_electricityBus_0)_: ++1 InvestmentFlowBlock_old_exo(storage1_electricityBus_0) = 0 -c_e_InvestmentFlowBlock_old_rule(storage1_electricityBus_1)_: -+1 InvestmentFlowBlock_old(storage1_electricityBus_1) --1 InvestmentFlowBlock_old_end(storage1_electricityBus_1) --1 InvestmentFlowBlock_old_exo(storage1_electricityBus_1) +c_e_InvestmentFlowBlock_old_rule_exo(storage1_electricityBus_1)_: ++1 InvestmentFlowBlock_old_exo(storage1_electricityBus_1) = 0 -c_e_InvestmentFlowBlock_old_rule(storage1_electricityBus_2)_: -+1 InvestmentFlowBlock_old(storage1_electricityBus_2) --1 InvestmentFlowBlock_old_end(storage1_electricityBus_2) --1 InvestmentFlowBlock_old_exo(storage1_electricityBus_2) +c_e_InvestmentFlowBlock_old_rule_exo(storage1_electricityBus_2)_: ++1 InvestmentFlowBlock_old_exo(storage1_electricityBus_2) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage1_0)_: ++1 InvestmentFlowBlock_old(electricityBus_storage1_0) -1 InvestmentFlowBlock_old_end(electricityBus_storage1_0) -1 InvestmentFlowBlock_old_exo(electricityBus_storage1_0) -+1 InvestmentFlowBlock_old(electricityBus_storage1_0) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage1_1)_: @@ -172,66 +154,84 @@ c_e_InvestmentFlowBlock_old_rule(electricityBus_storage1_2)_: -1 InvestmentFlowBlock_old_exo(electricityBus_storage1_2) = 0 -c_u_InvestmentFlowBlock_max(storage1_electricityBus_0_0)_: -+1 flow(storage1_electricityBus_0_0) --1 InvestmentFlowBlock_total(storage1_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage1_electricityBus_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 InvestmentFlowBlock_total(storage1_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage1_electricityBus_1_2)_: -+1 flow(storage1_electricityBus_1_2) --1 InvestmentFlowBlock_total(storage1_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_max(storage1_electricityBus_1_3)_: -+1 flow(storage1_electricityBus_1_3) --1 InvestmentFlowBlock_total(storage1_electricityBus_1) -<= 0 +c_e_InvestmentFlowBlock_old_rule(storage1_electricityBus_0)_: ++1 InvestmentFlowBlock_old(storage1_electricityBus_0) +-1 InvestmentFlowBlock_old_end(storage1_electricityBus_0) +-1 InvestmentFlowBlock_old_exo(storage1_electricityBus_0) += 0 -c_u_InvestmentFlowBlock_max(storage1_electricityBus_2_4)_: -+1 flow(storage1_electricityBus_2_4) --1 InvestmentFlowBlock_total(storage1_electricityBus_2) -<= 0 +c_e_InvestmentFlowBlock_old_rule(storage1_electricityBus_1)_: ++1 InvestmentFlowBlock_old(storage1_electricityBus_1) +-1 InvestmentFlowBlock_old_end(storage1_electricityBus_1) +-1 InvestmentFlowBlock_old_exo(storage1_electricityBus_1) += 0 -c_u_InvestmentFlowBlock_max(storage1_electricityBus_2_5)_: -+1 flow(storage1_electricityBus_2_5) --1 InvestmentFlowBlock_total(storage1_electricityBus_2) -<= 0 +c_e_InvestmentFlowBlock_old_rule(storage1_electricityBus_2)_: ++1 InvestmentFlowBlock_old(storage1_electricityBus_2) +-1 InvestmentFlowBlock_old_end(storage1_electricityBus_2) +-1 InvestmentFlowBlock_old_exo(storage1_electricityBus_2) += 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_0)_: -+1 flow(electricityBus_storage1_0_0) ++1 flow(electricityBus_storage1_0) -1 InvestmentFlowBlock_total(electricityBus_storage1_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_1)_: -+1 flow(electricityBus_storage1_0_1) ++1 flow(electricityBus_storage1_1) -1 InvestmentFlowBlock_total(electricityBus_storage1_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_1_2)_: -+1 flow(electricityBus_storage1_1_2) ++1 flow(electricityBus_storage1_2) -1 InvestmentFlowBlock_total(electricityBus_storage1_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_1_3)_: -+1 flow(electricityBus_storage1_1_3) ++1 flow(electricityBus_storage1_3) -1 InvestmentFlowBlock_total(electricityBus_storage1_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_2_4)_: -+1 flow(electricityBus_storage1_2_4) ++1 flow(electricityBus_storage1_4) -1 InvestmentFlowBlock_total(electricityBus_storage1_2) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_2_5)_: -+1 flow(electricityBus_storage1_2_5) ++1 flow(electricityBus_storage1_5) -1 InvestmentFlowBlock_total(electricityBus_storage1_2) <= 0 +c_u_InvestmentFlowBlock_max(storage1_electricityBus_0_0)_: ++1 flow(storage1_electricityBus_0) +-1 InvestmentFlowBlock_total(storage1_electricityBus_0) +<= 0 + +c_u_InvestmentFlowBlock_max(storage1_electricityBus_0_1)_: ++1 flow(storage1_electricityBus_1) +-1 InvestmentFlowBlock_total(storage1_electricityBus_0) +<= 0 + +c_u_InvestmentFlowBlock_max(storage1_electricityBus_1_2)_: ++1 flow(storage1_electricityBus_2) +-1 InvestmentFlowBlock_total(storage1_electricityBus_1) +<= 0 + +c_u_InvestmentFlowBlock_max(storage1_electricityBus_1_3)_: ++1 flow(storage1_electricityBus_3) +-1 InvestmentFlowBlock_total(storage1_electricityBus_1) +<= 0 + +c_u_InvestmentFlowBlock_max(storage1_electricityBus_2_4)_: ++1 flow(storage1_electricityBus_4) +-1 InvestmentFlowBlock_total(storage1_electricityBus_2) +<= 0 + +c_u_InvestmentFlowBlock_max(storage1_electricityBus_2_5)_: ++1 flow(storage1_electricityBus_5) +-1 InvestmentFlowBlock_total(storage1_electricityBus_2) +<= 0 + c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_0)_: -1 GenericInvestmentStorageBlock_invest(storage1_0) +1 GenericInvestmentStorageBlock_total(storage1_0) @@ -276,9 +276,9 @@ c_e_GenericInvestmentStorageBlock_old_rule_exo(storage1_2)_: = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage1_0)_: ++1 GenericInvestmentStorageBlock_old(storage1_0) -1 GenericInvestmentStorageBlock_old_end(storage1_0) -1 GenericInvestmentStorageBlock_old_exo(storage1_0) -+1 GenericInvestmentStorageBlock_old(storage1_0) = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage1_1)_: @@ -298,36 +298,36 @@ c_e_GenericInvestmentStorageBlock_initially_empty(storage1_0)_: = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_0_1)_: --0.97 flow(electricityBus_storage1_0_1) -+1.1627906976744187 flow(storage1_electricityBus_0_1) +-0.97 flow(electricityBus_storage1_1) ++1.1627906976744187 flow(storage1_electricityBus_1) -0.87 GenericInvestmentStorageBlock_storage_content(storage1_0) +1 GenericInvestmentStorageBlock_storage_content(storage1_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_1_2)_: --0.97 flow(electricityBus_storage1_1_2) -+1.1627906976744187 flow(storage1_electricityBus_1_2) +-0.97 flow(electricityBus_storage1_2) ++1.1627906976744187 flow(storage1_electricityBus_2) -0.87 GenericInvestmentStorageBlock_storage_content(storage1_1) +1 GenericInvestmentStorageBlock_storage_content(storage1_2) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_1_3)_: --0.97 flow(electricityBus_storage1_1_3) -+1.1627906976744187 flow(storage1_electricityBus_1_3) +-0.97 flow(electricityBus_storage1_3) ++1.1627906976744187 flow(storage1_electricityBus_3) -0.87 GenericInvestmentStorageBlock_storage_content(storage1_2) +1 GenericInvestmentStorageBlock_storage_content(storage1_3) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_2_4)_: --0.97 flow(electricityBus_storage1_2_4) -+1.1627906976744187 flow(storage1_electricityBus_2_4) +-0.97 flow(electricityBus_storage1_4) ++1.1627906976744187 flow(storage1_electricityBus_4) -0.87 GenericInvestmentStorageBlock_storage_content(storage1_3) +1 GenericInvestmentStorageBlock_storage_content(storage1_4) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_2_5)_: --0.97 flow(electricityBus_storage1_2_5) -+1.1627906976744187 flow(storage1_electricityBus_2_5) +-0.97 flow(electricityBus_storage1_5) ++1.1627906976744187 flow(storage1_electricityBus_5) -0.87 GenericInvestmentStorageBlock_storage_content(storage1_4) +1 GenericInvestmentStorageBlock_storage_content(storage1_5) = 0 @@ -439,55 +439,56 @@ c_l_GenericInvestmentStorageBlock_overall_minimum(storage1)_: >= 2 bounds - 0 <= flow(electricityBus_storage1_0_0) <= +inf - 0 <= flow(electricityBus_storage1_0_1) <= +inf - 0 <= flow(electricityBus_storage1_1_2) <= +inf - 0 <= flow(electricityBus_storage1_1_3) <= +inf - 0 <= flow(electricityBus_storage1_2_4) <= +inf - 0 <= flow(electricityBus_storage1_2_5) <= +inf - 0 <= flow(storage1_electricityBus_0_0) <= +inf - 0 <= flow(storage1_electricityBus_0_1) <= +inf - 0 <= flow(storage1_electricityBus_1_2) <= +inf - 0 <= flow(storage1_electricityBus_1_3) <= +inf - 0 <= flow(storage1_electricityBus_2_4) <= +inf - 0 <= flow(storage1_electricityBus_2_5) <= +inf + 0 <= flow(electricityBus_storage1_0) <= +inf + 0 <= flow(electricityBus_storage1_1) <= +inf + 0 <= flow(electricityBus_storage1_2) <= +inf + 0 <= flow(electricityBus_storage1_3) <= +inf + 0 <= flow(electricityBus_storage1_4) <= +inf + 0 <= flow(electricityBus_storage1_5) <= +inf + 0 <= flow(storage1_electricityBus_0) <= +inf + 0 <= flow(storage1_electricityBus_1) <= +inf + 0 <= flow(storage1_electricityBus_2) <= +inf + 0 <= flow(storage1_electricityBus_3) <= +inf + 0 <= flow(storage1_electricityBus_4) <= +inf + 0 <= flow(storage1_electricityBus_5) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage1_0) <= 234 0 <= GenericInvestmentStorageBlock_invest(storage1_1) <= 234 0 <= GenericInvestmentStorageBlock_invest(storage1_2) <= 234 + 0 <= InvestmentFlowBlock_total(electricityBus_storage1_0) <= +inf + 0 <= InvestmentFlowBlock_total(electricityBus_storage1_1) <= +inf + 0 <= InvestmentFlowBlock_total(electricityBus_storage1_2) <= +inf 0 <= InvestmentFlowBlock_total(storage1_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_invest(storage1_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(storage1_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_invest(storage1_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old(storage1_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_total(storage1_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_invest(storage1_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old(storage1_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_total(electricityBus_storage1_0) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage1_0) <= +inf - 0 <= InvestmentFlowBlock_total(electricityBus_storage1_1) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage1_1) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage1_1) <= +inf - 0 <= InvestmentFlowBlock_total(electricityBus_storage1_2) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage1_2) <= +inf + 0 <= InvestmentFlowBlock_invest(storage1_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_invest(storage1_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_invest(storage1_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage1_0) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage1_1) <= +inf 0 <= InvestmentFlowBlock_old(electricityBus_storage1_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage1_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage1_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage1_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(storage1_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old(storage1_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_old(storage1_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage1_0) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage1_1) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage1_2) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage1_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage1_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage1_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage1_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage1_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage1_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage1_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage1_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage1_2) <= +inf - 0 <= InvestmentFlowBlock_old(storage1_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage1_0) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage1_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage1_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage1_electricityBus_2) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage1_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage1_1) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage1_2) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage1_0) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage1_1) <= +inf 0 <= GenericInvestmentStorageBlock_old(storage1_2) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage1_1) <= +inf @@ -495,7 +496,6 @@ bounds 0 <= GenericInvestmentStorageBlock_old_exo(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage1_1) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage1_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage1_1) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage1_2) <= +inf diff --git a/tests/lp_files/storage_invest_2.lp b/tests/lp_files/storage_invest_2.lp index 27a460ba8..3f62ef36b 100644 --- a/tests/lp_files/storage_invest_2.lp +++ b/tests/lp_files/storage_invest_2.lp @@ -8,19 +8,19 @@ objective: s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage2_electricityBus_0_0) --1 flow(electricityBus_storage2_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage2_0) ++1 flow(storage2_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage2_electricityBus_0_1) --1 flow(electricityBus_storage2_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage2_1) ++1 flow(storage2_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(storage2_electricityBus_0_2) --1 flow(electricityBus_storage2_0_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage2_2) ++1 flow(storage2_electricityBus_2) = 0 c_e_InvestmentFlowBlock_total_rule(electricityBus_storage2_0)_: @@ -34,32 +34,32 @@ c_e_InvestmentFlowBlock_total_rule(storage2_electricityBus_0)_: = 0 c_u_InvestmentFlowBlock_max(electricityBus_storage2_0_0)_: -+1 flow(electricityBus_storage2_0_0) ++1 flow(electricityBus_storage2_0) -1 InvestmentFlowBlock_total(electricityBus_storage2_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage2_0_1)_: -+1 flow(electricityBus_storage2_0_1) ++1 flow(electricityBus_storage2_1) -1 InvestmentFlowBlock_total(electricityBus_storage2_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage2_0_2)_: -+1 flow(electricityBus_storage2_0_2) ++1 flow(electricityBus_storage2_2) -1 InvestmentFlowBlock_total(electricityBus_storage2_0) <= 0 c_u_InvestmentFlowBlock_max(storage2_electricityBus_0_0)_: -+1 flow(storage2_electricityBus_0_0) ++1 flow(storage2_electricityBus_0) -1 InvestmentFlowBlock_total(storage2_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage2_electricityBus_0_1)_: -+1 flow(storage2_electricityBus_0_1) ++1 flow(storage2_electricityBus_1) -1 InvestmentFlowBlock_total(storage2_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage2_electricityBus_0_2)_: -+1 flow(storage2_electricityBus_0_2) ++1 flow(storage2_electricityBus_2) -1 InvestmentFlowBlock_total(storage2_electricityBus_0) <= 0 @@ -74,22 +74,22 @@ c_e_GenericInvestmentStorageBlock_init_content_fix(storage2)_: = 0 c_e_GenericInvestmentStorageBlock_balance_first(storage2)_: -+1 flow(storage2_electricityBus_0_0) --1 flow(electricityBus_storage2_0_0) +-1 flow(electricityBus_storage2_0) ++1 flow(storage2_electricityBus_0) -1 GenericInvestmentStorageBlock_init_content(storage2) +1 GenericInvestmentStorageBlock_storage_content(storage2_0) = 0 c_e_GenericInvestmentStorageBlock_balance(storage2_0_1)_: -+1 flow(storage2_electricityBus_0_1) --1 flow(electricityBus_storage2_0_1) +-1 flow(electricityBus_storage2_1) ++1 flow(storage2_electricityBus_1) -1 GenericInvestmentStorageBlock_storage_content(storage2_0) +1 GenericInvestmentStorageBlock_storage_content(storage2_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage2_0_2)_: -+1 flow(storage2_electricityBus_0_2) --1 flow(electricityBus_storage2_0_2) +-1 flow(electricityBus_storage2_2) ++1 flow(storage2_electricityBus_2) -1 GenericInvestmentStorageBlock_storage_content(storage2_1) +1 GenericInvestmentStorageBlock_storage_content(storage2_2) = 0 @@ -118,12 +118,12 @@ bounds 0 <= InvestmentFlowBlock_invest(electricityBus_storage2_0) <= +inf 0 <= InvestmentFlowBlock_invest(storage2_electricityBus_0) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage2_0) <= +inf - 0 <= flow(storage2_electricityBus_0_0) <= +inf - 0 <= flow(electricityBus_storage2_0_0) <= +inf - 0 <= flow(storage2_electricityBus_0_1) <= +inf - 0 <= flow(electricityBus_storage2_0_1) <= +inf - 0 <= flow(storage2_electricityBus_0_2) <= +inf - 0 <= flow(electricityBus_storage2_0_2) <= +inf + 0 <= flow(electricityBus_storage2_0) <= +inf + 0 <= flow(electricityBus_storage2_1) <= +inf + 0 <= flow(electricityBus_storage2_2) <= +inf + 0 <= flow(storage2_electricityBus_0) <= +inf + 0 <= flow(storage2_electricityBus_1) <= +inf + 0 <= flow(storage2_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage2_0) <= +inf 0 <= InvestmentFlowBlock_total(storage2_electricityBus_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage2_0) <= +inf diff --git a/tests/lp_files/storage_invest_2_multi_period.lp b/tests/lp_files/storage_invest_2_multi_period.lp index 816985cb6..e21fc5743 100644 --- a/tests/lp_files/storage_invest_2_multi_period.lp +++ b/tests/lp_files/storage_invest_2_multi_period.lp @@ -2,65 +2,46 @@ min objective: -+1.5873195277040417 InvestmentFlowBlock_invest(storage2_electricityBus_0) -+1.0477014265985347 InvestmentFlowBlock_invest(storage2_electricityBus_1) -+0.5186640725735326 InvestmentFlowBlock_invest(storage2_electricityBus_2) +17.46051480474446 InvestmentFlowBlock_invest(electricityBus_storage2_0) +11.524715692583884 InvestmentFlowBlock_invest(electricityBus_storage2_1) +5.705304798308859 InvestmentFlowBlock_invest(electricityBus_storage2_2) ++1.5873195277040417 InvestmentFlowBlock_invest(storage2_electricityBus_0) ++1.0477014265985347 InvestmentFlowBlock_invest(storage2_electricityBus_1) ++0.5186640725735326 InvestmentFlowBlock_invest(storage2_electricityBus_2) +25.57348127967623 GenericInvestmentStorageBlock_invest(storage2_0) +16.879634095198618 GenericInvestmentStorageBlock_invest(storage2_1) +8.35625450257358 GenericInvestmentStorageBlock_invest(storage2_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage2_electricityBus_0_0) --1 flow(electricityBus_storage2_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage2_electricityBus_0_1) --1 flow(electricityBus_storage2_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(storage2_electricityBus_1_2) --1 flow(electricityBus_storage2_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(storage2_electricityBus_1_3) --1 flow(electricityBus_storage2_1_3) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage2_0) ++1 flow(storage2_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(storage2_electricityBus_2_4) --1 flow(electricityBus_storage2_2_4) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage2_1) ++1 flow(storage2_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(storage2_electricityBus_2_5) --1 flow(electricityBus_storage2_2_5) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage2_2) ++1 flow(storage2_electricityBus_2) = 0 -c_e_InvestmentFlowBlock_total_rule(storage2_electricityBus_0)_: --1 InvestmentFlowBlock_invest(storage2_electricityBus_0) -+1 InvestmentFlowBlock_total(storage2_electricityBus_0) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_storage2_3) ++1 flow(storage2_electricityBus_3) = 0 -c_e_InvestmentFlowBlock_total_rule(storage2_electricityBus_1)_: --1 InvestmentFlowBlock_invest(storage2_electricityBus_1) --1 InvestmentFlowBlock_total(storage2_electricityBus_0) -+1 InvestmentFlowBlock_total(storage2_electricityBus_1) -+1 InvestmentFlowBlock_old(storage2_electricityBus_1) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_storage2_4) ++1 flow(storage2_electricityBus_4) = 0 -c_e_InvestmentFlowBlock_total_rule(storage2_electricityBus_2)_: --1 InvestmentFlowBlock_invest(storage2_electricityBus_2) --1 InvestmentFlowBlock_total(storage2_electricityBus_1) -+1 InvestmentFlowBlock_total(storage2_electricityBus_2) -+1 InvestmentFlowBlock_old(storage2_electricityBus_2) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_storage2_5) ++1 flow(storage2_electricityBus_5) = 0 c_e_InvestmentFlowBlock_total_rule(electricityBus_storage2_0)_: @@ -82,16 +63,23 @@ c_e_InvestmentFlowBlock_total_rule(electricityBus_storage2_2)_: +1 InvestmentFlowBlock_old(electricityBus_storage2_2) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage2_electricityBus_0)_: -+1 InvestmentFlowBlock_old_end(storage2_electricityBus_0) +c_e_InvestmentFlowBlock_total_rule(storage2_electricityBus_0)_: +-1 InvestmentFlowBlock_invest(storage2_electricityBus_0) ++1 InvestmentFlowBlock_total(storage2_electricityBus_0) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage2_electricityBus_1)_: -+1 InvestmentFlowBlock_old_end(storage2_electricityBus_1) +c_e_InvestmentFlowBlock_total_rule(storage2_electricityBus_1)_: +-1 InvestmentFlowBlock_invest(storage2_electricityBus_1) +-1 InvestmentFlowBlock_total(storage2_electricityBus_0) ++1 InvestmentFlowBlock_total(storage2_electricityBus_1) ++1 InvestmentFlowBlock_old(storage2_electricityBus_1) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage2_electricityBus_2)_: -+1 InvestmentFlowBlock_old_end(storage2_electricityBus_2) +c_e_InvestmentFlowBlock_total_rule(storage2_electricityBus_2)_: +-1 InvestmentFlowBlock_invest(storage2_electricityBus_2) +-1 InvestmentFlowBlock_total(storage2_electricityBus_1) ++1 InvestmentFlowBlock_total(storage2_electricityBus_2) ++1 InvestmentFlowBlock_old(storage2_electricityBus_2) = 0 c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage2_0)_: @@ -106,16 +94,16 @@ c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage2_2)_: +1 InvestmentFlowBlock_old_end(electricityBus_storage2_2) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage2_electricityBus_0)_: -+1 InvestmentFlowBlock_old_exo(storage2_electricityBus_0) +c_e_InvestmentFlowBlock_old_rule_end(storage2_electricityBus_0)_: ++1 InvestmentFlowBlock_old_end(storage2_electricityBus_0) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage2_electricityBus_1)_: -+1 InvestmentFlowBlock_old_exo(storage2_electricityBus_1) +c_e_InvestmentFlowBlock_old_rule_end(storage2_electricityBus_1)_: ++1 InvestmentFlowBlock_old_end(storage2_electricityBus_1) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage2_electricityBus_2)_: -+1 InvestmentFlowBlock_old_exo(storage2_electricityBus_2) +c_e_InvestmentFlowBlock_old_rule_end(storage2_electricityBus_2)_: ++1 InvestmentFlowBlock_old_end(storage2_electricityBus_2) = 0 c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage2_0)_: @@ -130,28 +118,22 @@ c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage2_2)_: +1 InvestmentFlowBlock_old_exo(electricityBus_storage2_2) = 0 -c_e_InvestmentFlowBlock_old_rule(storage2_electricityBus_0)_: --1 InvestmentFlowBlock_old_end(storage2_electricityBus_0) --1 InvestmentFlowBlock_old_exo(storage2_electricityBus_0) -+1 InvestmentFlowBlock_old(storage2_electricityBus_0) +c_e_InvestmentFlowBlock_old_rule_exo(storage2_electricityBus_0)_: ++1 InvestmentFlowBlock_old_exo(storage2_electricityBus_0) = 0 -c_e_InvestmentFlowBlock_old_rule(storage2_electricityBus_1)_: -+1 InvestmentFlowBlock_old(storage2_electricityBus_1) --1 InvestmentFlowBlock_old_end(storage2_electricityBus_1) --1 InvestmentFlowBlock_old_exo(storage2_electricityBus_1) +c_e_InvestmentFlowBlock_old_rule_exo(storage2_electricityBus_1)_: ++1 InvestmentFlowBlock_old_exo(storage2_electricityBus_1) = 0 -c_e_InvestmentFlowBlock_old_rule(storage2_electricityBus_2)_: -+1 InvestmentFlowBlock_old(storage2_electricityBus_2) --1 InvestmentFlowBlock_old_end(storage2_electricityBus_2) --1 InvestmentFlowBlock_old_exo(storage2_electricityBus_2) +c_e_InvestmentFlowBlock_old_rule_exo(storage2_electricityBus_2)_: ++1 InvestmentFlowBlock_old_exo(storage2_electricityBus_2) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage2_0)_: ++1 InvestmentFlowBlock_old(electricityBus_storage2_0) -1 InvestmentFlowBlock_old_end(electricityBus_storage2_0) -1 InvestmentFlowBlock_old_exo(electricityBus_storage2_0) -+1 InvestmentFlowBlock_old(electricityBus_storage2_0) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage2_1)_: @@ -166,66 +148,84 @@ c_e_InvestmentFlowBlock_old_rule(electricityBus_storage2_2)_: -1 InvestmentFlowBlock_old_exo(electricityBus_storage2_2) = 0 -c_u_InvestmentFlowBlock_max(storage2_electricityBus_0_0)_: -+1 flow(storage2_electricityBus_0_0) --1 InvestmentFlowBlock_total(storage2_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage2_electricityBus_0_1)_: -+1 flow(storage2_electricityBus_0_1) --1 InvestmentFlowBlock_total(storage2_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage2_electricityBus_1_2)_: -+1 flow(storage2_electricityBus_1_2) --1 InvestmentFlowBlock_total(storage2_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_max(storage2_electricityBus_1_3)_: -+1 flow(storage2_electricityBus_1_3) --1 InvestmentFlowBlock_total(storage2_electricityBus_1) -<= 0 +c_e_InvestmentFlowBlock_old_rule(storage2_electricityBus_0)_: ++1 InvestmentFlowBlock_old(storage2_electricityBus_0) +-1 InvestmentFlowBlock_old_end(storage2_electricityBus_0) +-1 InvestmentFlowBlock_old_exo(storage2_electricityBus_0) += 0 -c_u_InvestmentFlowBlock_max(storage2_electricityBus_2_4)_: -+1 flow(storage2_electricityBus_2_4) --1 InvestmentFlowBlock_total(storage2_electricityBus_2) -<= 0 +c_e_InvestmentFlowBlock_old_rule(storage2_electricityBus_1)_: ++1 InvestmentFlowBlock_old(storage2_electricityBus_1) +-1 InvestmentFlowBlock_old_end(storage2_electricityBus_1) +-1 InvestmentFlowBlock_old_exo(storage2_electricityBus_1) += 0 -c_u_InvestmentFlowBlock_max(storage2_electricityBus_2_5)_: -+1 flow(storage2_electricityBus_2_5) --1 InvestmentFlowBlock_total(storage2_electricityBus_2) -<= 0 +c_e_InvestmentFlowBlock_old_rule(storage2_electricityBus_2)_: ++1 InvestmentFlowBlock_old(storage2_electricityBus_2) +-1 InvestmentFlowBlock_old_end(storage2_electricityBus_2) +-1 InvestmentFlowBlock_old_exo(storage2_electricityBus_2) += 0 c_u_InvestmentFlowBlock_max(electricityBus_storage2_0_0)_: -+1 flow(electricityBus_storage2_0_0) ++1 flow(electricityBus_storage2_0) -1 InvestmentFlowBlock_total(electricityBus_storage2_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage2_0_1)_: -+1 flow(electricityBus_storage2_0_1) ++1 flow(electricityBus_storage2_1) -1 InvestmentFlowBlock_total(electricityBus_storage2_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage2_1_2)_: -+1 flow(electricityBus_storage2_1_2) ++1 flow(electricityBus_storage2_2) -1 InvestmentFlowBlock_total(electricityBus_storage2_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage2_1_3)_: -+1 flow(electricityBus_storage2_1_3) ++1 flow(electricityBus_storage2_3) -1 InvestmentFlowBlock_total(electricityBus_storage2_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage2_2_4)_: -+1 flow(electricityBus_storage2_2_4) ++1 flow(electricityBus_storage2_4) -1 InvestmentFlowBlock_total(electricityBus_storage2_2) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage2_2_5)_: -+1 flow(electricityBus_storage2_2_5) ++1 flow(electricityBus_storage2_5) -1 InvestmentFlowBlock_total(electricityBus_storage2_2) <= 0 +c_u_InvestmentFlowBlock_max(storage2_electricityBus_0_0)_: ++1 flow(storage2_electricityBus_0) +-1 InvestmentFlowBlock_total(storage2_electricityBus_0) +<= 0 + +c_u_InvestmentFlowBlock_max(storage2_electricityBus_0_1)_: ++1 flow(storage2_electricityBus_1) +-1 InvestmentFlowBlock_total(storage2_electricityBus_0) +<= 0 + +c_u_InvestmentFlowBlock_max(storage2_electricityBus_1_2)_: ++1 flow(storage2_electricityBus_2) +-1 InvestmentFlowBlock_total(storage2_electricityBus_1) +<= 0 + +c_u_InvestmentFlowBlock_max(storage2_electricityBus_1_3)_: ++1 flow(storage2_electricityBus_3) +-1 InvestmentFlowBlock_total(storage2_electricityBus_1) +<= 0 + +c_u_InvestmentFlowBlock_max(storage2_electricityBus_2_4)_: ++1 flow(storage2_electricityBus_4) +-1 InvestmentFlowBlock_total(storage2_electricityBus_2) +<= 0 + +c_u_InvestmentFlowBlock_max(storage2_electricityBus_2_5)_: ++1 flow(storage2_electricityBus_5) +-1 InvestmentFlowBlock_total(storage2_electricityBus_2) +<= 0 + c_e_GenericInvestmentStorageBlock_total_storage_rule(storage2_0)_: -1 GenericInvestmentStorageBlock_invest(storage2_0) +1 GenericInvestmentStorageBlock_total(storage2_0) @@ -270,9 +270,9 @@ c_e_GenericInvestmentStorageBlock_old_rule_exo(storage2_2)_: = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage2_0)_: ++1 GenericInvestmentStorageBlock_old(storage2_0) -1 GenericInvestmentStorageBlock_old_end(storage2_0) -1 GenericInvestmentStorageBlock_old_exo(storage2_0) -+1 GenericInvestmentStorageBlock_old(storage2_0) = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage2_1)_: @@ -292,36 +292,36 @@ c_e_GenericInvestmentStorageBlock_initially_empty(storage2_0)_: = 0 c_e_GenericInvestmentStorageBlock_balance(storage2_0_1)_: -+1 flow(storage2_electricityBus_0_1) --1 flow(electricityBus_storage2_0_1) +-1 flow(electricityBus_storage2_1) ++1 flow(storage2_electricityBus_1) -1 GenericInvestmentStorageBlock_storage_content(storage2_0) +1 GenericInvestmentStorageBlock_storage_content(storage2_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage2_1_2)_: -+1 flow(storage2_electricityBus_1_2) --1 flow(electricityBus_storage2_1_2) +-1 flow(electricityBus_storage2_2) ++1 flow(storage2_electricityBus_2) -1 GenericInvestmentStorageBlock_storage_content(storage2_1) +1 GenericInvestmentStorageBlock_storage_content(storage2_2) = 0 c_e_GenericInvestmentStorageBlock_balance(storage2_1_3)_: -+1 flow(storage2_electricityBus_1_3) --1 flow(electricityBus_storage2_1_3) +-1 flow(electricityBus_storage2_3) ++1 flow(storage2_electricityBus_3) -1 GenericInvestmentStorageBlock_storage_content(storage2_2) +1 GenericInvestmentStorageBlock_storage_content(storage2_3) = 0 c_e_GenericInvestmentStorageBlock_balance(storage2_2_4)_: -+1 flow(storage2_electricityBus_2_4) --1 flow(electricityBus_storage2_2_4) +-1 flow(electricityBus_storage2_4) ++1 flow(storage2_electricityBus_4) -1 GenericInvestmentStorageBlock_storage_content(storage2_3) +1 GenericInvestmentStorageBlock_storage_content(storage2_4) = 0 c_e_GenericInvestmentStorageBlock_balance(storage2_2_5)_: -+1 flow(storage2_electricityBus_2_5) --1 flow(electricityBus_storage2_2_5) +-1 flow(electricityBus_storage2_5) ++1 flow(storage2_electricityBus_5) -1 GenericInvestmentStorageBlock_storage_content(storage2_4) +1 GenericInvestmentStorageBlock_storage_content(storage2_5) = 0 @@ -357,55 +357,56 @@ c_u_GenericInvestmentStorageBlock_max_storage_content(storage2_2_5)_: <= 0 bounds - 0 <= InvestmentFlowBlock_invest(storage2_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_invest(storage2_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_invest(storage2_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage2_0) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage2_1) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage2_2) <= +inf + 0 <= InvestmentFlowBlock_invest(storage2_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_invest(storage2_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_invest(storage2_electricityBus_2) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage2_0) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage2_1) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage2_2) <= +inf - 0 <= flow(storage2_electricityBus_0_0) <= +inf - 0 <= flow(electricityBus_storage2_0_0) <= +inf - 0 <= flow(storage2_electricityBus_0_1) <= +inf - 0 <= flow(electricityBus_storage2_0_1) <= +inf - 0 <= flow(storage2_electricityBus_1_2) <= +inf - 0 <= flow(electricityBus_storage2_1_2) <= +inf - 0 <= flow(storage2_electricityBus_1_3) <= +inf - 0 <= flow(electricityBus_storage2_1_3) <= +inf - 0 <= flow(storage2_electricityBus_2_4) <= +inf - 0 <= flow(electricityBus_storage2_2_4) <= +inf - 0 <= flow(storage2_electricityBus_2_5) <= +inf - 0 <= flow(electricityBus_storage2_2_5) <= +inf + 0 <= flow(electricityBus_storage2_0) <= +inf + 0 <= flow(electricityBus_storage2_1) <= +inf + 0 <= flow(electricityBus_storage2_2) <= +inf + 0 <= flow(electricityBus_storage2_3) <= +inf + 0 <= flow(electricityBus_storage2_4) <= +inf + 0 <= flow(electricityBus_storage2_5) <= +inf + 0 <= flow(storage2_electricityBus_0) <= +inf + 0 <= flow(storage2_electricityBus_1) <= +inf + 0 <= flow(storage2_electricityBus_2) <= +inf + 0 <= flow(storage2_electricityBus_3) <= +inf + 0 <= flow(storage2_electricityBus_4) <= +inf + 0 <= flow(storage2_electricityBus_5) <= +inf + 0 <= InvestmentFlowBlock_total(electricityBus_storage2_0) <= +inf + 0 <= InvestmentFlowBlock_total(electricityBus_storage2_1) <= +inf + 0 <= InvestmentFlowBlock_total(electricityBus_storage2_2) <= +inf 0 <= InvestmentFlowBlock_total(storage2_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(storage2_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old(storage2_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_total(storage2_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old(storage2_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_total(electricityBus_storage2_0) <= +inf - 0 <= InvestmentFlowBlock_total(electricityBus_storage2_1) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage2_0) <= +inf 0 <= InvestmentFlowBlock_old(electricityBus_storage2_1) <= +inf - 0 <= InvestmentFlowBlock_total(electricityBus_storage2_2) <= +inf 0 <= InvestmentFlowBlock_old(electricityBus_storage2_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage2_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage2_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage2_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(storage2_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old(storage2_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_old(storage2_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage2_0) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage2_1) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage2_2) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage2_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage2_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage2_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage2_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage2_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage2_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage2_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage2_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage2_2) <= +inf - 0 <= InvestmentFlowBlock_old(storage2_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage2_0) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage2_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage2_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage2_electricityBus_2) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage2_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage2_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage2_1) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage2_2) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage2_0) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage2_1) <= +inf 0 <= GenericInvestmentStorageBlock_old(storage2_2) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage2_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage2_1) <= +inf @@ -413,7 +414,6 @@ bounds 0 <= GenericInvestmentStorageBlock_old_exo(storage2_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage2_1) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage2_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage2_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage2_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage2_1) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage2_2) <= +inf diff --git a/tests/lp_files/storage_invest_3.lp b/tests/lp_files/storage_invest_3.lp index 589d7e814..6c32145c1 100644 --- a/tests/lp_files/storage_invest_3.lp +++ b/tests/lp_files/storage_invest_3.lp @@ -7,19 +7,19 @@ objective: s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage3_electricityBus_0_0) --1 flow(electricityBus_storage3_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage3_0) ++1 flow(storage3_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage3_electricityBus_0_1) --1 flow(electricityBus_storage3_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage3_1) ++1 flow(storage3_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(storage3_electricityBus_0_2) --1 flow(electricityBus_storage3_0_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage3_2) ++1 flow(storage3_electricityBus_2) = 0 c_e_InvestmentFlowBlock_total_rule(storage3_electricityBus_0)_: @@ -33,52 +33,52 @@ c_e_InvestmentFlowBlock_total_rule(electricityBus_storage3_0)_: = 0 c_u_InvestmentFlowBlock_max(storage3_electricityBus_0_0)_: -+1 flow(storage3_electricityBus_0_0) ++1 flow(storage3_electricityBus_0) -1 InvestmentFlowBlock_total(storage3_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage3_electricityBus_0_1)_: -+1 flow(storage3_electricityBus_0_1) ++1 flow(storage3_electricityBus_1) -1 InvestmentFlowBlock_total(storage3_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage3_electricityBus_0_2)_: -+1 flow(storage3_electricityBus_0_2) ++1 flow(storage3_electricityBus_2) -1 InvestmentFlowBlock_total(storage3_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage3_0_0)_: -+1 flow(electricityBus_storage3_0_0) ++1 flow(electricityBus_storage3_0) -1 InvestmentFlowBlock_total(electricityBus_storage3_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage3_0_1)_: -+1 flow(electricityBus_storage3_0_1) ++1 flow(electricityBus_storage3_1) -1 InvestmentFlowBlock_total(electricityBus_storage3_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage3_0_2)_: -+1 flow(electricityBus_storage3_0_2) ++1 flow(electricityBus_storage3_2) -1 InvestmentFlowBlock_total(electricityBus_storage3_0) <= 0 -c_e_GenericStorageBlock_balance(storage3_0_0)_: -+1 flow(storage3_electricityBus_0_0) --1 flow(electricityBus_storage3_0_0) -+1 GenericStorageBlock_storage_content(storage3_1) +c_e_GenericStorageBlock_balance(storage3_0)_: +-1 flow(electricityBus_storage3_0) ++1 flow(storage3_electricityBus_0) -1 GenericStorageBlock_storage_content(storage3_0) ++1 GenericStorageBlock_storage_content(storage3_1) = 0 -c_e_GenericStorageBlock_balance(storage3_0_1)_: -+1 flow(storage3_electricityBus_0_1) --1 flow(electricityBus_storage3_0_1) +c_e_GenericStorageBlock_balance(storage3_1)_: +-1 flow(electricityBus_storage3_1) ++1 flow(storage3_electricityBus_1) -1 GenericStorageBlock_storage_content(storage3_1) +1 GenericStorageBlock_storage_content(storage3_2) = 0 -c_e_GenericStorageBlock_balance(storage3_0_2)_: -+1 flow(storage3_electricityBus_0_2) --1 flow(electricityBus_storage3_0_2) +c_e_GenericStorageBlock_balance(storage3_2)_: +-1 flow(electricityBus_storage3_2) ++1 flow(storage3_electricityBus_2) -1 GenericStorageBlock_storage_content(storage3_2) +1 GenericStorageBlock_storage_content(storage3_3) = 0 @@ -91,16 +91,16 @@ c_e_GenericStorageBlock_balanced_cstr(storage3)_: bounds 0 <= InvestmentFlowBlock_invest(storage3_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage3_0) <= +inf - 0 <= flow(storage3_electricityBus_0_0) <= +inf - 0 <= flow(electricityBus_storage3_0_0) <= +inf - 0 <= flow(storage3_electricityBus_0_1) <= +inf - 0 <= flow(electricityBus_storage3_0_1) <= +inf - 0 <= flow(storage3_electricityBus_0_2) <= +inf - 0 <= flow(electricityBus_storage3_0_2) <= +inf + 0 <= flow(electricityBus_storage3_0) <= +inf + 0 <= flow(electricityBus_storage3_1) <= +inf + 0 <= flow(electricityBus_storage3_2) <= +inf + 0 <= flow(storage3_electricityBus_0) <= +inf + 0 <= flow(storage3_electricityBus_1) <= +inf + 0 <= flow(storage3_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_total(storage3_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage3_0) <= +inf - 0 <= GenericStorageBlock_storage_content(storage3_1) <= 5000 0 <= GenericStorageBlock_storage_content(storage3_0) <= 5000 + 0 <= GenericStorageBlock_storage_content(storage3_1) <= 5000 0 <= GenericStorageBlock_storage_content(storage3_2) <= 5000 0 <= GenericStorageBlock_storage_content(storage3_3) <= 5000 end diff --git a/tests/lp_files/storage_invest_3_multi_period.lp b/tests/lp_files/storage_invest_3_multi_period.lp index f5646972e..a5f1d0f8c 100644 --- a/tests/lp_files/storage_invest_3_multi_period.lp +++ b/tests/lp_files/storage_invest_3_multi_period.lp @@ -2,43 +2,62 @@ min objective: -+98.99999999999999 InvestmentFlowBlock_invest(electricityBus_storage3_0) -+97.05882352941174 InvestmentFlowBlock_invest(electricityBus_storage3_1) -+48.0489225393128 InvestmentFlowBlock_invest(electricityBus_storage3_2) +1.5873195277040417 InvestmentFlowBlock_invest(storage3_electricityBus_0) +1.0477014265985347 InvestmentFlowBlock_invest(storage3_electricityBus_1) +0.5186640725735326 InvestmentFlowBlock_invest(storage3_electricityBus_2) ++98.99999999999999 InvestmentFlowBlock_invest(electricityBus_storage3_0) ++97.05882352941174 InvestmentFlowBlock_invest(electricityBus_storage3_1) ++48.0489225393128 InvestmentFlowBlock_invest(electricityBus_storage3_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage3_electricityBus_0_0) --1 flow(electricityBus_storage3_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage3_0) ++1 flow(storage3_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage3_electricityBus_0_1) --1 flow(electricityBus_storage3_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage3_1) ++1 flow(storage3_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(storage3_electricityBus_1_2) --1 flow(electricityBus_storage3_1_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage3_2) ++1 flow(storage3_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(storage3_electricityBus_1_3) --1 flow(electricityBus_storage3_1_3) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_storage3_3) ++1 flow(storage3_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(storage3_electricityBus_2_4) --1 flow(electricityBus_storage3_2_4) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_storage3_4) ++1 flow(storage3_electricityBus_4) += 0 + +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_storage3_5) ++1 flow(storage3_electricityBus_5) += 0 + +c_e_InvestmentFlowBlock_total_rule(storage3_electricityBus_0)_: +-1 InvestmentFlowBlock_invest(storage3_electricityBus_0) ++1 InvestmentFlowBlock_total(storage3_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(storage3_electricityBus_2_5) --1 flow(electricityBus_storage3_2_5) +c_e_InvestmentFlowBlock_total_rule(storage3_electricityBus_1)_: +-1 InvestmentFlowBlock_invest(storage3_electricityBus_1) +-1 InvestmentFlowBlock_total(storage3_electricityBus_0) ++1 InvestmentFlowBlock_total(storage3_electricityBus_1) ++1 InvestmentFlowBlock_old(storage3_electricityBus_1) += 0 + +c_e_InvestmentFlowBlock_total_rule(storage3_electricityBus_2)_: +-1 InvestmentFlowBlock_invest(storage3_electricityBus_2) +-1 InvestmentFlowBlock_total(storage3_electricityBus_1) ++1 InvestmentFlowBlock_total(storage3_electricityBus_2) ++1 InvestmentFlowBlock_old(storage3_electricityBus_2) = 0 c_e_InvestmentFlowBlock_total_rule(electricityBus_storage3_0)_: @@ -60,23 +79,16 @@ c_e_InvestmentFlowBlock_total_rule(electricityBus_storage3_2)_: +1 InvestmentFlowBlock_old(electricityBus_storage3_2) = 0 -c_e_InvestmentFlowBlock_total_rule(storage3_electricityBus_0)_: --1 InvestmentFlowBlock_invest(storage3_electricityBus_0) -+1 InvestmentFlowBlock_total(storage3_electricityBus_0) +c_e_InvestmentFlowBlock_old_rule_end(storage3_electricityBus_0)_: ++1 InvestmentFlowBlock_old_end(storage3_electricityBus_0) = 0 -c_e_InvestmentFlowBlock_total_rule(storage3_electricityBus_1)_: --1 InvestmentFlowBlock_invest(storage3_electricityBus_1) --1 InvestmentFlowBlock_total(storage3_electricityBus_0) -+1 InvestmentFlowBlock_total(storage3_electricityBus_1) -+1 InvestmentFlowBlock_old(storage3_electricityBus_1) +c_e_InvestmentFlowBlock_old_rule_end(storage3_electricityBus_1)_: ++1 InvestmentFlowBlock_old_end(storage3_electricityBus_1) = 0 -c_e_InvestmentFlowBlock_total_rule(storage3_electricityBus_2)_: --1 InvestmentFlowBlock_invest(storage3_electricityBus_2) --1 InvestmentFlowBlock_total(storage3_electricityBus_1) -+1 InvestmentFlowBlock_total(storage3_electricityBus_2) -+1 InvestmentFlowBlock_old(storage3_electricityBus_2) +c_e_InvestmentFlowBlock_old_rule_end(storage3_electricityBus_2)_: ++1 InvestmentFlowBlock_old_end(storage3_electricityBus_2) = 0 c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage3_0)_: @@ -92,16 +104,16 @@ c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage3_2)_: +1 InvestmentFlowBlock_old_end(electricityBus_storage3_2) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage3_electricityBus_0)_: -+1 InvestmentFlowBlock_old_end(storage3_electricityBus_0) +c_e_InvestmentFlowBlock_old_rule_exo(storage3_electricityBus_0)_: ++1 InvestmentFlowBlock_old_exo(storage3_electricityBus_0) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage3_electricityBus_1)_: -+1 InvestmentFlowBlock_old_end(storage3_electricityBus_1) +c_e_InvestmentFlowBlock_old_rule_exo(storage3_electricityBus_1)_: ++1 InvestmentFlowBlock_old_exo(storage3_electricityBus_1) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage3_electricityBus_2)_: -+1 InvestmentFlowBlock_old_end(storage3_electricityBus_2) +c_e_InvestmentFlowBlock_old_rule_exo(storage3_electricityBus_2)_: ++1 InvestmentFlowBlock_old_exo(storage3_electricityBus_2) = 0 c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage3_0)_: @@ -116,22 +128,28 @@ c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage3_2)_: +1 InvestmentFlowBlock_old_exo(electricityBus_storage3_2) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage3_electricityBus_0)_: -+1 InvestmentFlowBlock_old_exo(storage3_electricityBus_0) +c_e_InvestmentFlowBlock_old_rule(storage3_electricityBus_0)_: ++1 InvestmentFlowBlock_old(storage3_electricityBus_0) +-1 InvestmentFlowBlock_old_end(storage3_electricityBus_0) +-1 InvestmentFlowBlock_old_exo(storage3_electricityBus_0) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage3_electricityBus_1)_: -+1 InvestmentFlowBlock_old_exo(storage3_electricityBus_1) +c_e_InvestmentFlowBlock_old_rule(storage3_electricityBus_1)_: ++1 InvestmentFlowBlock_old(storage3_electricityBus_1) +-1 InvestmentFlowBlock_old_end(storage3_electricityBus_1) +-1 InvestmentFlowBlock_old_exo(storage3_electricityBus_1) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage3_electricityBus_2)_: -+1 InvestmentFlowBlock_old_exo(storage3_electricityBus_2) +c_e_InvestmentFlowBlock_old_rule(storage3_electricityBus_2)_: ++1 InvestmentFlowBlock_old(storage3_electricityBus_2) +-1 InvestmentFlowBlock_old_end(storage3_electricityBus_2) +-1 InvestmentFlowBlock_old_exo(storage3_electricityBus_2) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage3_0)_: ++1 InvestmentFlowBlock_old(electricityBus_storage3_0) -1 InvestmentFlowBlock_old_end(electricityBus_storage3_0) -1 InvestmentFlowBlock_old_exo(electricityBus_storage3_0) -+1 InvestmentFlowBlock_old(electricityBus_storage3_0) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage3_1)_: @@ -146,122 +164,104 @@ c_e_InvestmentFlowBlock_old_rule(electricityBus_storage3_2)_: -1 InvestmentFlowBlock_old_exo(electricityBus_storage3_2) = 0 -c_e_InvestmentFlowBlock_old_rule(storage3_electricityBus_0)_: --1 InvestmentFlowBlock_old_end(storage3_electricityBus_0) --1 InvestmentFlowBlock_old_exo(storage3_electricityBus_0) -+1 InvestmentFlowBlock_old(storage3_electricityBus_0) -= 0 +c_u_InvestmentFlowBlock_max(storage3_electricityBus_0_0)_: ++1 flow(storage3_electricityBus_0) +-1 InvestmentFlowBlock_total(storage3_electricityBus_0) +<= 0 -c_e_InvestmentFlowBlock_old_rule(storage3_electricityBus_1)_: -+1 InvestmentFlowBlock_old(storage3_electricityBus_1) --1 InvestmentFlowBlock_old_end(storage3_electricityBus_1) --1 InvestmentFlowBlock_old_exo(storage3_electricityBus_1) -= 0 +c_u_InvestmentFlowBlock_max(storage3_electricityBus_0_1)_: ++1 flow(storage3_electricityBus_1) +-1 InvestmentFlowBlock_total(storage3_electricityBus_0) +<= 0 -c_e_InvestmentFlowBlock_old_rule(storage3_electricityBus_2)_: -+1 InvestmentFlowBlock_old(storage3_electricityBus_2) --1 InvestmentFlowBlock_old_end(storage3_electricityBus_2) --1 InvestmentFlowBlock_old_exo(storage3_electricityBus_2) -= 0 +c_u_InvestmentFlowBlock_max(storage3_electricityBus_1_2)_: ++1 flow(storage3_electricityBus_2) +-1 InvestmentFlowBlock_total(storage3_electricityBus_1) +<= 0 + +c_u_InvestmentFlowBlock_max(storage3_electricityBus_1_3)_: ++1 flow(storage3_electricityBus_3) +-1 InvestmentFlowBlock_total(storage3_electricityBus_1) +<= 0 + +c_u_InvestmentFlowBlock_max(storage3_electricityBus_2_4)_: ++1 flow(storage3_electricityBus_4) +-1 InvestmentFlowBlock_total(storage3_electricityBus_2) +<= 0 + +c_u_InvestmentFlowBlock_max(storage3_electricityBus_2_5)_: ++1 flow(storage3_electricityBus_5) +-1 InvestmentFlowBlock_total(storage3_electricityBus_2) +<= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage3_0_0)_: -+1 flow(electricityBus_storage3_0_0) ++1 flow(electricityBus_storage3_0) -1 InvestmentFlowBlock_total(electricityBus_storage3_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage3_0_1)_: -+1 flow(electricityBus_storage3_0_1) ++1 flow(electricityBus_storage3_1) -1 InvestmentFlowBlock_total(electricityBus_storage3_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage3_1_2)_: -+1 flow(electricityBus_storage3_1_2) ++1 flow(electricityBus_storage3_2) -1 InvestmentFlowBlock_total(electricityBus_storage3_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage3_1_3)_: -+1 flow(electricityBus_storage3_1_3) ++1 flow(electricityBus_storage3_3) -1 InvestmentFlowBlock_total(electricityBus_storage3_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage3_2_4)_: -+1 flow(electricityBus_storage3_2_4) ++1 flow(electricityBus_storage3_4) -1 InvestmentFlowBlock_total(electricityBus_storage3_2) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage3_2_5)_: -+1 flow(electricityBus_storage3_2_5) ++1 flow(electricityBus_storage3_5) -1 InvestmentFlowBlock_total(electricityBus_storage3_2) <= 0 -c_u_InvestmentFlowBlock_max(storage3_electricityBus_0_0)_: -+1 flow(storage3_electricityBus_0_0) --1 InvestmentFlowBlock_total(storage3_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage3_electricityBus_0_1)_: -+1 flow(storage3_electricityBus_0_1) --1 InvestmentFlowBlock_total(storage3_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage3_electricityBus_1_2)_: -+1 flow(storage3_electricityBus_1_2) --1 InvestmentFlowBlock_total(storage3_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_max(storage3_electricityBus_1_3)_: -+1 flow(storage3_electricityBus_1_3) --1 InvestmentFlowBlock_total(storage3_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_max(storage3_electricityBus_2_4)_: -+1 flow(storage3_electricityBus_2_4) --1 InvestmentFlowBlock_total(storage3_electricityBus_2) -<= 0 - -c_u_InvestmentFlowBlock_max(storage3_electricityBus_2_5)_: -+1 flow(storage3_electricityBus_2_5) --1 InvestmentFlowBlock_total(storage3_electricityBus_2) -<= 0 - -c_e_GenericStorageBlock_balance(storage3_0_0)_: -+1 flow(storage3_electricityBus_0_0) --1 flow(electricityBus_storage3_0_0) -+1 GenericStorageBlock_storage_content(storage3_1) +c_e_GenericStorageBlock_balance(storage3_0)_: +-1 flow(electricityBus_storage3_0) ++1 flow(storage3_electricityBus_0) -1 GenericStorageBlock_storage_content(storage3_0) ++1 GenericStorageBlock_storage_content(storage3_1) = 0 -c_e_GenericStorageBlock_balance(storage3_0_1)_: -+1 flow(storage3_electricityBus_0_1) --1 flow(electricityBus_storage3_0_1) +c_e_GenericStorageBlock_balance(storage3_1)_: +-1 flow(electricityBus_storage3_1) ++1 flow(storage3_electricityBus_1) -1 GenericStorageBlock_storage_content(storage3_1) +1 GenericStorageBlock_storage_content(storage3_2) = 0 -c_e_GenericStorageBlock_balance(storage3_1_2)_: -+1 flow(storage3_electricityBus_1_2) --1 flow(electricityBus_storage3_1_2) +c_e_GenericStorageBlock_balance(storage3_2)_: +-1 flow(electricityBus_storage3_2) ++1 flow(storage3_electricityBus_2) -1 GenericStorageBlock_storage_content(storage3_2) +1 GenericStorageBlock_storage_content(storage3_3) = 0 -c_e_GenericStorageBlock_balance(storage3_1_3)_: -+1 flow(storage3_electricityBus_1_3) --1 flow(electricityBus_storage3_1_3) +c_e_GenericStorageBlock_balance(storage3_3)_: +-1 flow(electricityBus_storage3_3) ++1 flow(storage3_electricityBus_3) -1 GenericStorageBlock_storage_content(storage3_3) +1 GenericStorageBlock_storage_content(storage3_4) = 0 -c_e_GenericStorageBlock_balance(storage3_2_4)_: -+1 flow(storage3_electricityBus_2_4) --1 flow(electricityBus_storage3_2_4) +c_e_GenericStorageBlock_balance(storage3_4)_: +-1 flow(electricityBus_storage3_4) ++1 flow(storage3_electricityBus_4) -1 GenericStorageBlock_storage_content(storage3_4) +1 GenericStorageBlock_storage_content(storage3_5) = 0 -c_e_GenericStorageBlock_balance(storage3_2_5)_: -+1 flow(storage3_electricityBus_2_5) --1 flow(electricityBus_storage3_2_5) +c_e_GenericStorageBlock_balance(storage3_5)_: +-1 flow(electricityBus_storage3_5) ++1 flow(storage3_electricityBus_5) -1 GenericStorageBlock_storage_content(storage3_5) +1 GenericStorageBlock_storage_content(storage3_6) = 0 @@ -272,50 +272,50 @@ c_e_GenericStorageBlock_balanced_cstr(storage3)_: = 0 bounds - 0 <= InvestmentFlowBlock_invest(electricityBus_storage3_0) <= +inf - 0 <= InvestmentFlowBlock_invest(electricityBus_storage3_1) <= +inf - 0 <= InvestmentFlowBlock_invest(electricityBus_storage3_2) <= +inf 0 <= InvestmentFlowBlock_invest(storage3_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_invest(storage3_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_invest(storage3_electricityBus_2) <= +inf - 0 <= flow(storage3_electricityBus_0_0) <= +inf - 0 <= flow(electricityBus_storage3_0_0) <= +inf - 0 <= flow(storage3_electricityBus_0_1) <= +inf - 0 <= flow(electricityBus_storage3_0_1) <= +inf - 0 <= flow(storage3_electricityBus_1_2) <= +inf - 0 <= flow(electricityBus_storage3_1_2) <= +inf - 0 <= flow(storage3_electricityBus_1_3) <= +inf - 0 <= flow(electricityBus_storage3_1_3) <= +inf - 0 <= flow(storage3_electricityBus_2_4) <= +inf - 0 <= flow(electricityBus_storage3_2_4) <= +inf - 0 <= flow(storage3_electricityBus_2_5) <= +inf - 0 <= flow(electricityBus_storage3_2_5) <= +inf + 0 <= InvestmentFlowBlock_invest(electricityBus_storage3_0) <= +inf + 0 <= InvestmentFlowBlock_invest(electricityBus_storage3_1) <= +inf + 0 <= InvestmentFlowBlock_invest(electricityBus_storage3_2) <= +inf + 0 <= flow(electricityBus_storage3_0) <= +inf + 0 <= flow(electricityBus_storage3_1) <= +inf + 0 <= flow(electricityBus_storage3_2) <= +inf + 0 <= flow(electricityBus_storage3_3) <= +inf + 0 <= flow(electricityBus_storage3_4) <= +inf + 0 <= flow(electricityBus_storage3_5) <= +inf + 0 <= flow(storage3_electricityBus_0) <= +inf + 0 <= flow(storage3_electricityBus_1) <= +inf + 0 <= flow(storage3_electricityBus_2) <= +inf + 0 <= flow(storage3_electricityBus_3) <= +inf + 0 <= flow(storage3_electricityBus_4) <= +inf + 0 <= flow(storage3_electricityBus_5) <= +inf + 0 <= InvestmentFlowBlock_total(storage3_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_total(storage3_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_total(storage3_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage3_0) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage3_1) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage3_1) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage3_2) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage3_2) <= +inf - 0 <= InvestmentFlowBlock_total(storage3_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_total(storage3_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_old(storage3_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old(storage3_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_total(storage3_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old(storage3_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_storage3_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_storage3_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_storage3_2) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage3_0) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage3_1) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage3_2) <= +inf 0 <= InvestmentFlowBlock_old_end(storage3_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_end(storage3_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old_end(storage3_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage3_0) <= +inf - 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage3_1) <= +inf - 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage3_2) <= +inf + 0 <= InvestmentFlowBlock_old_end(electricityBus_storage3_0) <= +inf + 0 <= InvestmentFlowBlock_old_end(electricityBus_storage3_1) <= +inf + 0 <= InvestmentFlowBlock_old_end(electricityBus_storage3_2) <= +inf 0 <= InvestmentFlowBlock_old_exo(storage3_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(storage3_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(storage3_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage3_0) <= +inf - 0 <= InvestmentFlowBlock_old(storage3_electricityBus_0) <= +inf - 0 <= GenericStorageBlock_storage_content(storage3_1) <= 5000 + 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage3_0) <= +inf + 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage3_1) <= +inf + 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage3_2) <= +inf 0 <= GenericStorageBlock_storage_content(storage3_0) <= 5000 + 0 <= GenericStorageBlock_storage_content(storage3_1) <= 5000 0 <= GenericStorageBlock_storage_content(storage3_2) <= 5000 0 <= GenericStorageBlock_storage_content(storage3_3) <= 5000 0 <= GenericStorageBlock_storage_content(storage3_4) <= 5000 diff --git a/tests/lp_files/storage_invest_4.lp b/tests/lp_files/storage_invest_4.lp index 66fa233a2..2b90dd479 100644 --- a/tests/lp_files/storage_invest_4.lp +++ b/tests/lp_files/storage_invest_4.lp @@ -6,19 +6,19 @@ objective: s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage4_electricityBus_0_0) --1 flow(electricityBus_storage4_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage4_0) ++1 flow(storage4_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage4_electricityBus_0_1) --1 flow(electricityBus_storage4_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage4_1) ++1 flow(storage4_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(storage4_electricityBus_0_2) --1 flow(electricityBus_storage4_0_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage4_2) ++1 flow(storage4_electricityBus_2) = 0 c_e_GenericInvestmentStorageBlock_total_storage_rule(storage4_0)_: @@ -32,22 +32,22 @@ c_u_GenericInvestmentStorageBlock_init_content_limit(storage4)_: <= 0 c_e_GenericInvestmentStorageBlock_balance_first(storage4)_: -+1 flow(storage4_electricityBus_0_0) --1 flow(electricityBus_storage4_0_0) +-1 flow(electricityBus_storage4_0) ++1 flow(storage4_electricityBus_0) -1 GenericInvestmentStorageBlock_init_content(storage4) +1 GenericInvestmentStorageBlock_storage_content(storage4_0) = 0 c_e_GenericInvestmentStorageBlock_balance(storage4_0_1)_: -+1 flow(storage4_electricityBus_0_1) --1 flow(electricityBus_storage4_0_1) +-1 flow(electricityBus_storage4_1) ++1 flow(storage4_electricityBus_1) -1 GenericInvestmentStorageBlock_storage_content(storage4_0) +1 GenericInvestmentStorageBlock_storage_content(storage4_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage4_0_2)_: -+1 flow(storage4_electricityBus_0_2) --1 flow(electricityBus_storage4_0_2) +-1 flow(electricityBus_storage4_2) ++1 flow(storage4_electricityBus_2) -1 GenericInvestmentStorageBlock_storage_content(storage4_1) +1 GenericInvestmentStorageBlock_storage_content(storage4_2) = 0 @@ -74,12 +74,12 @@ c_u_GenericInvestmentStorageBlock_max_storage_content(storage4_0_2)_: bounds 0 <= GenericInvestmentStorageBlock_invest(storage4_0) <= 500 - 0 <= flow(storage4_electricityBus_0_0) <= 100 - 0 <= flow(electricityBus_storage4_0_0) <= 80 - 0 <= flow(storage4_electricityBus_0_1) <= 100 - 0 <= flow(electricityBus_storage4_0_1) <= 80 - 0 <= flow(storage4_electricityBus_0_2) <= 100 - 0 <= flow(electricityBus_storage4_0_2) <= 80 + 0 <= flow(electricityBus_storage4_0) <= 80 + 0 <= flow(electricityBus_storage4_1) <= 80 + 0 <= flow(electricityBus_storage4_2) <= 80 + 0 <= flow(storage4_electricityBus_0) <= 100 + 0 <= flow(storage4_electricityBus_1) <= 100 + 0 <= flow(storage4_electricityBus_2) <= 100 0 <= GenericInvestmentStorageBlock_total(storage4_0) <= +inf 0 <= GenericInvestmentStorageBlock_init_content(storage4) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage4_0) <= +inf diff --git a/tests/lp_files/storage_invest_4_multi_period.lp b/tests/lp_files/storage_invest_4_multi_period.lp index c08305a40..9d7674d84 100644 --- a/tests/lp_files/storage_invest_4_multi_period.lp +++ b/tests/lp_files/storage_invest_4_multi_period.lp @@ -8,34 +8,34 @@ objective: s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage4_electricityBus_0_0) --1 flow(electricityBus_storage4_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage4_0) ++1 flow(storage4_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage4_electricityBus_0_1) --1 flow(electricityBus_storage4_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage4_1) ++1 flow(storage4_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(storage4_electricityBus_1_2) --1 flow(electricityBus_storage4_1_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage4_2) ++1 flow(storage4_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(storage4_electricityBus_1_3) --1 flow(electricityBus_storage4_1_3) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_storage4_3) ++1 flow(storage4_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(storage4_electricityBus_2_4) --1 flow(electricityBus_storage4_2_4) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_storage4_4) ++1 flow(storage4_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(storage4_electricityBus_2_5) --1 flow(electricityBus_storage4_2_5) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_storage4_5) ++1 flow(storage4_electricityBus_5) = 0 c_e_GenericInvestmentStorageBlock_total_storage_rule(storage4_0)_: @@ -83,9 +83,9 @@ c_e_GenericInvestmentStorageBlock_old_rule_exo(storage4_2)_: = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage4_0)_: ++1 GenericInvestmentStorageBlock_old(storage4_0) -1 GenericInvestmentStorageBlock_old_end(storage4_0) -1 GenericInvestmentStorageBlock_old_exo(storage4_0) -+1 GenericInvestmentStorageBlock_old(storage4_0) = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage4_1)_: @@ -105,36 +105,36 @@ c_e_GenericInvestmentStorageBlock_initially_empty(storage4_0)_: = 0 c_e_GenericInvestmentStorageBlock_balance(storage4_0_1)_: -+1 flow(storage4_electricityBus_0_1) --1 flow(electricityBus_storage4_0_1) +-1 flow(electricityBus_storage4_1) ++1 flow(storage4_electricityBus_1) -1 GenericInvestmentStorageBlock_storage_content(storage4_0) +1 GenericInvestmentStorageBlock_storage_content(storage4_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage4_1_2)_: -+1 flow(storage4_electricityBus_1_2) --1 flow(electricityBus_storage4_1_2) +-1 flow(electricityBus_storage4_2) ++1 flow(storage4_electricityBus_2) -1 GenericInvestmentStorageBlock_storage_content(storage4_1) +1 GenericInvestmentStorageBlock_storage_content(storage4_2) = 0 c_e_GenericInvestmentStorageBlock_balance(storage4_1_3)_: -+1 flow(storage4_electricityBus_1_3) --1 flow(electricityBus_storage4_1_3) +-1 flow(electricityBus_storage4_3) ++1 flow(storage4_electricityBus_3) -1 GenericInvestmentStorageBlock_storage_content(storage4_2) +1 GenericInvestmentStorageBlock_storage_content(storage4_3) = 0 c_e_GenericInvestmentStorageBlock_balance(storage4_2_4)_: -+1 flow(storage4_electricityBus_2_4) --1 flow(electricityBus_storage4_2_4) +-1 flow(electricityBus_storage4_4) ++1 flow(storage4_electricityBus_4) -1 GenericInvestmentStorageBlock_storage_content(storage4_3) +1 GenericInvestmentStorageBlock_storage_content(storage4_4) = 0 c_e_GenericInvestmentStorageBlock_balance(storage4_2_5)_: -+1 flow(storage4_electricityBus_2_5) --1 flow(electricityBus_storage4_2_5) +-1 flow(electricityBus_storage4_5) ++1 flow(storage4_electricityBus_5) -1 GenericInvestmentStorageBlock_storage_content(storage4_4) +1 GenericInvestmentStorageBlock_storage_content(storage4_5) = 0 @@ -173,22 +173,23 @@ bounds 0 <= GenericInvestmentStorageBlock_invest(storage4_0) <= 500 0 <= GenericInvestmentStorageBlock_invest(storage4_1) <= 500 0 <= GenericInvestmentStorageBlock_invest(storage4_2) <= 500 - 0 <= flow(storage4_electricityBus_0_0) <= 100 - 0 <= flow(electricityBus_storage4_0_0) <= 80 - 0 <= flow(storage4_electricityBus_0_1) <= 100 - 0 <= flow(electricityBus_storage4_0_1) <= 80 - 0 <= flow(storage4_electricityBus_1_2) <= 100 - 0 <= flow(electricityBus_storage4_1_2) <= 80 - 0 <= flow(storage4_electricityBus_1_3) <= 100 - 0 <= flow(electricityBus_storage4_1_3) <= 80 - 0 <= flow(storage4_electricityBus_2_4) <= 100 - 0 <= flow(electricityBus_storage4_2_4) <= 80 - 0 <= flow(storage4_electricityBus_2_5) <= 100 - 0 <= flow(electricityBus_storage4_2_5) <= 80 + 0 <= flow(electricityBus_storage4_0) <= 80 + 0 <= flow(electricityBus_storage4_1) <= 80 + 0 <= flow(electricityBus_storage4_2) <= 80 + 0 <= flow(electricityBus_storage4_3) <= 80 + 0 <= flow(electricityBus_storage4_4) <= 80 + 0 <= flow(electricityBus_storage4_5) <= 80 + 0 <= flow(storage4_electricityBus_0) <= 100 + 0 <= flow(storage4_electricityBus_1) <= 100 + 0 <= flow(storage4_electricityBus_2) <= 100 + 0 <= flow(storage4_electricityBus_3) <= 100 + 0 <= flow(storage4_electricityBus_4) <= 100 + 0 <= flow(storage4_electricityBus_5) <= 100 0 <= GenericInvestmentStorageBlock_total(storage4_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage4_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage4_1) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage4_2) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage4_0) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage4_1) <= +inf 0 <= GenericInvestmentStorageBlock_old(storage4_2) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage4_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage4_1) <= +inf @@ -196,7 +197,6 @@ bounds 0 <= GenericInvestmentStorageBlock_old_exo(storage4_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage4_1) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage4_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage4_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage4_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage4_1) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage4_2) <= +inf diff --git a/tests/lp_files/storage_invest_5.lp b/tests/lp_files/storage_invest_5.lp index 853f833c0..d6bd074a8 100644 --- a/tests/lp_files/storage_invest_5.lp +++ b/tests/lp_files/storage_invest_5.lp @@ -6,24 +6,24 @@ objective: s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage5_electricityBus_0_0) --1 flow(electricityBus_storage5_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage5_0) ++1 flow(storage5_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage5_electricityBus_0_1) --1 flow(electricityBus_storage5_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage5_1) ++1 flow(storage5_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(storage5_electricityBus_0_2) --1 flow(electricityBus_storage5_0_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage5_2) ++1 flow(storage5_electricityBus_2) = 0 c_e_InvestmentFlowBlock_total_rule(storage5_electricityBus_0)_: -+1 InvestmentFlowBlock_total(storage5_electricityBus_0) -1 InvestmentFlowBlock_invest(storage5_electricityBus_0) ++1 InvestmentFlowBlock_total(storage5_electricityBus_0) = 100 c_e_InvestmentFlowBlock_total_rule(electricityBus_storage5_0)_: @@ -32,52 +32,52 @@ c_e_InvestmentFlowBlock_total_rule(electricityBus_storage5_0)_: = 110 c_u_InvestmentFlowBlock_max(storage5_electricityBus_0_0)_: -+1 flow(storage5_electricityBus_0_0) ++1 flow(storage5_electricityBus_0) -1 InvestmentFlowBlock_total(storage5_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage5_electricityBus_0_1)_: -+1 flow(storage5_electricityBus_0_1) ++1 flow(storage5_electricityBus_1) -1 InvestmentFlowBlock_total(storage5_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage5_electricityBus_0_2)_: -+1 flow(storage5_electricityBus_0_2) ++1 flow(storage5_electricityBus_2) -1 InvestmentFlowBlock_total(storage5_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage5_0_0)_: -+1 flow(electricityBus_storage5_0_0) ++1 flow(electricityBus_storage5_0) -1 InvestmentFlowBlock_total(electricityBus_storage5_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage5_0_1)_: -+1 flow(electricityBus_storage5_0_1) ++1 flow(electricityBus_storage5_1) -1 InvestmentFlowBlock_total(electricityBus_storage5_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage5_0_2)_: -+1 flow(electricityBus_storage5_0_2) ++1 flow(electricityBus_storage5_2) -1 InvestmentFlowBlock_total(electricityBus_storage5_0) <= 0 -c_e_GenericStorageBlock_balance(storage5_0_0)_: -+1 flow(storage5_electricityBus_0_0) --1 flow(electricityBus_storage5_0_0) -+1 GenericStorageBlock_storage_content(storage5_1) +c_e_GenericStorageBlock_balance(storage5_0)_: +-1 flow(electricityBus_storage5_0) ++1 flow(storage5_electricityBus_0) -1 GenericStorageBlock_storage_content(storage5_0) ++1 GenericStorageBlock_storage_content(storage5_1) = 0 -c_e_GenericStorageBlock_balance(storage5_0_1)_: -+1 flow(storage5_electricityBus_0_1) --1 flow(electricityBus_storage5_0_1) +c_e_GenericStorageBlock_balance(storage5_1)_: +-1 flow(electricityBus_storage5_1) ++1 flow(storage5_electricityBus_1) -1 GenericStorageBlock_storage_content(storage5_1) +1 GenericStorageBlock_storage_content(storage5_2) = 0 -c_e_GenericStorageBlock_balance(storage5_0_2)_: -+1 flow(storage5_electricityBus_0_2) --1 flow(electricityBus_storage5_0_2) +c_e_GenericStorageBlock_balance(storage5_2)_: +-1 flow(electricityBus_storage5_2) ++1 flow(storage5_electricityBus_2) -1 GenericStorageBlock_storage_content(storage5_2) +1 GenericStorageBlock_storage_content(storage5_3) = 0 @@ -93,18 +93,18 @@ c_e_GenericStorageBlock_power_coupled(storage5_0)_: = 0 bounds + 0 <= InvestmentFlowBlock_invest(storage5_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage5_0) <= +inf - 0 <= flow(storage5_electricityBus_0_0) <= +inf - 0 <= flow(electricityBus_storage5_0_0) <= +inf - 0 <= flow(storage5_electricityBus_0_1) <= +inf - 0 <= flow(electricityBus_storage5_0_1) <= +inf - 0 <= flow(storage5_electricityBus_0_2) <= +inf - 0 <= flow(electricityBus_storage5_0_2) <= +inf + 0 <= flow(electricityBus_storage5_0) <= +inf + 0 <= flow(electricityBus_storage5_1) <= +inf + 0 <= flow(electricityBus_storage5_2) <= +inf + 0 <= flow(storage5_electricityBus_0) <= +inf + 0 <= flow(storage5_electricityBus_1) <= +inf + 0 <= flow(storage5_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_total(storage5_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_invest(storage5_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage5_0) <= +inf - 0 <= GenericStorageBlock_storage_content(storage5_1) <= 10000 0 <= GenericStorageBlock_storage_content(storage5_0) <= 10000 + 0 <= GenericStorageBlock_storage_content(storage5_1) <= 10000 0 <= GenericStorageBlock_storage_content(storage5_2) <= 10000 0 <= GenericStorageBlock_storage_content(storage5_3) <= 10000 end diff --git a/tests/lp_files/storage_invest_5_multi_period.lp b/tests/lp_files/storage_invest_5_multi_period.lp index e139e72db..98e3f93de 100644 --- a/tests/lp_files/storage_invest_5_multi_period.lp +++ b/tests/lp_files/storage_invest_5_multi_period.lp @@ -8,52 +8,52 @@ objective: s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage5_electricityBus_0_0) --1 flow(electricityBus_storage5_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage5_0) ++1 flow(storage5_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage5_electricityBus_0_1) --1 flow(electricityBus_storage5_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage5_1) ++1 flow(storage5_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(storage5_electricityBus_1_2) --1 flow(electricityBus_storage5_1_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage5_2) ++1 flow(storage5_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(storage5_electricityBus_1_3) --1 flow(electricityBus_storage5_1_3) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_storage5_3) ++1 flow(storage5_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(storage5_electricityBus_2_4) --1 flow(electricityBus_storage5_2_4) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_storage5_4) ++1 flow(storage5_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(storage5_electricityBus_2_5) --1 flow(electricityBus_storage5_2_5) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_storage5_5) ++1 flow(storage5_electricityBus_5) = 0 c_e_InvestmentFlowBlock_total_rule(storage5_electricityBus_0)_: -+1 InvestmentFlowBlock_total(storage5_electricityBus_0) -1 InvestmentFlowBlock_invest(storage5_electricityBus_0) ++1 InvestmentFlowBlock_total(storage5_electricityBus_0) = 100 c_e_InvestmentFlowBlock_total_rule(storage5_electricityBus_1)_: +-1 InvestmentFlowBlock_invest(storage5_electricityBus_1) -1 InvestmentFlowBlock_total(storage5_electricityBus_0) +1 InvestmentFlowBlock_total(storage5_electricityBus_1) --1 InvestmentFlowBlock_invest(storage5_electricityBus_1) +1 InvestmentFlowBlock_old(storage5_electricityBus_1) = 0 c_e_InvestmentFlowBlock_total_rule(storage5_electricityBus_2)_: +-1 InvestmentFlowBlock_invest(storage5_electricityBus_2) -1 InvestmentFlowBlock_total(storage5_electricityBus_1) +1 InvestmentFlowBlock_total(storage5_electricityBus_2) --1 InvestmentFlowBlock_invest(storage5_electricityBus_2) +1 InvestmentFlowBlock_old(storage5_electricityBus_2) = 0 @@ -125,9 +125,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage5_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(storage5_electricityBus_0)_: ++1 InvestmentFlowBlock_old(storage5_electricityBus_0) -1 InvestmentFlowBlock_old_end(storage5_electricityBus_0) -1 InvestmentFlowBlock_old_exo(storage5_electricityBus_0) -+1 InvestmentFlowBlock_old(storage5_electricityBus_0) = 0 c_e_InvestmentFlowBlock_old_rule(storage5_electricityBus_1)_: @@ -143,9 +143,9 @@ c_e_InvestmentFlowBlock_old_rule(storage5_electricityBus_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage5_0)_: ++1 InvestmentFlowBlock_old(electricityBus_storage5_0) -1 InvestmentFlowBlock_old_end(electricityBus_storage5_0) -1 InvestmentFlowBlock_old_exo(electricityBus_storage5_0) -+1 InvestmentFlowBlock_old(electricityBus_storage5_0) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage5_1)_: @@ -161,103 +161,103 @@ c_e_InvestmentFlowBlock_old_rule(electricityBus_storage5_2)_: = 0 c_u_InvestmentFlowBlock_max(storage5_electricityBus_0_0)_: -+1 flow(storage5_electricityBus_0_0) ++1 flow(storage5_electricityBus_0) -1 InvestmentFlowBlock_total(storage5_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage5_electricityBus_0_1)_: -+1 flow(storage5_electricityBus_0_1) ++1 flow(storage5_electricityBus_1) -1 InvestmentFlowBlock_total(storage5_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage5_electricityBus_1_2)_: -+1 flow(storage5_electricityBus_1_2) ++1 flow(storage5_electricityBus_2) -1 InvestmentFlowBlock_total(storage5_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(storage5_electricityBus_1_3)_: -+1 flow(storage5_electricityBus_1_3) ++1 flow(storage5_electricityBus_3) -1 InvestmentFlowBlock_total(storage5_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(storage5_electricityBus_2_4)_: -+1 flow(storage5_electricityBus_2_4) ++1 flow(storage5_electricityBus_4) -1 InvestmentFlowBlock_total(storage5_electricityBus_2) <= 0 c_u_InvestmentFlowBlock_max(storage5_electricityBus_2_5)_: -+1 flow(storage5_electricityBus_2_5) ++1 flow(storage5_electricityBus_5) -1 InvestmentFlowBlock_total(storage5_electricityBus_2) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage5_0_0)_: -+1 flow(electricityBus_storage5_0_0) ++1 flow(electricityBus_storage5_0) -1 InvestmentFlowBlock_total(electricityBus_storage5_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage5_0_1)_: -+1 flow(electricityBus_storage5_0_1) ++1 flow(electricityBus_storage5_1) -1 InvestmentFlowBlock_total(electricityBus_storage5_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage5_1_2)_: -+1 flow(electricityBus_storage5_1_2) ++1 flow(electricityBus_storage5_2) -1 InvestmentFlowBlock_total(electricityBus_storage5_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage5_1_3)_: -+1 flow(electricityBus_storage5_1_3) ++1 flow(electricityBus_storage5_3) -1 InvestmentFlowBlock_total(electricityBus_storage5_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage5_2_4)_: -+1 flow(electricityBus_storage5_2_4) ++1 flow(electricityBus_storage5_4) -1 InvestmentFlowBlock_total(electricityBus_storage5_2) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage5_2_5)_: -+1 flow(electricityBus_storage5_2_5) ++1 flow(electricityBus_storage5_5) -1 InvestmentFlowBlock_total(electricityBus_storage5_2) <= 0 -c_e_GenericStorageBlock_balance(storage5_0_0)_: -+1 flow(storage5_electricityBus_0_0) --1 flow(electricityBus_storage5_0_0) -+1 GenericStorageBlock_storage_content(storage5_1) +c_e_GenericStorageBlock_balance(storage5_0)_: +-1 flow(electricityBus_storage5_0) ++1 flow(storage5_electricityBus_0) -1 GenericStorageBlock_storage_content(storage5_0) ++1 GenericStorageBlock_storage_content(storage5_1) = 0 -c_e_GenericStorageBlock_balance(storage5_0_1)_: -+1 flow(storage5_electricityBus_0_1) --1 flow(electricityBus_storage5_0_1) +c_e_GenericStorageBlock_balance(storage5_1)_: +-1 flow(electricityBus_storage5_1) ++1 flow(storage5_electricityBus_1) -1 GenericStorageBlock_storage_content(storage5_1) +1 GenericStorageBlock_storage_content(storage5_2) = 0 -c_e_GenericStorageBlock_balance(storage5_1_2)_: -+1 flow(storage5_electricityBus_1_2) --1 flow(electricityBus_storage5_1_2) +c_e_GenericStorageBlock_balance(storage5_2)_: +-1 flow(electricityBus_storage5_2) ++1 flow(storage5_electricityBus_2) -1 GenericStorageBlock_storage_content(storage5_2) +1 GenericStorageBlock_storage_content(storage5_3) = 0 -c_e_GenericStorageBlock_balance(storage5_1_3)_: -+1 flow(storage5_electricityBus_1_3) --1 flow(electricityBus_storage5_1_3) +c_e_GenericStorageBlock_balance(storage5_3)_: +-1 flow(electricityBus_storage5_3) ++1 flow(storage5_electricityBus_3) -1 GenericStorageBlock_storage_content(storage5_3) +1 GenericStorageBlock_storage_content(storage5_4) = 0 -c_e_GenericStorageBlock_balance(storage5_2_4)_: -+1 flow(storage5_electricityBus_2_4) --1 flow(electricityBus_storage5_2_4) +c_e_GenericStorageBlock_balance(storage5_4)_: +-1 flow(electricityBus_storage5_4) ++1 flow(storage5_electricityBus_4) -1 GenericStorageBlock_storage_content(storage5_4) +1 GenericStorageBlock_storage_content(storage5_5) = 0 -c_e_GenericStorageBlock_balance(storage5_2_5)_: -+1 flow(storage5_electricityBus_2_5) --1 flow(electricityBus_storage5_2_5) +c_e_GenericStorageBlock_balance(storage5_5)_: +-1 flow(electricityBus_storage5_5) ++1 flow(storage5_electricityBus_5) -1 GenericStorageBlock_storage_content(storage5_5) +1 GenericStorageBlock_storage_content(storage5_6) = 0 @@ -283,33 +283,35 @@ c_e_GenericStorageBlock_power_coupled(storage5_2)_: = 0 bounds + 0 <= InvestmentFlowBlock_invest(storage5_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_invest(storage5_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_invest(storage5_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage5_0) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage5_1) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage5_2) <= +inf - 0 <= flow(storage5_electricityBus_0_0) <= +inf - 0 <= flow(electricityBus_storage5_0_0) <= +inf - 0 <= flow(storage5_electricityBus_0_1) <= +inf - 0 <= flow(electricityBus_storage5_0_1) <= +inf - 0 <= flow(storage5_electricityBus_1_2) <= +inf - 0 <= flow(electricityBus_storage5_1_2) <= +inf - 0 <= flow(storage5_electricityBus_1_3) <= +inf - 0 <= flow(electricityBus_storage5_1_3) <= +inf - 0 <= flow(storage5_electricityBus_2_4) <= +inf - 0 <= flow(electricityBus_storage5_2_4) <= +inf - 0 <= flow(storage5_electricityBus_2_5) <= +inf - 0 <= flow(electricityBus_storage5_2_5) <= +inf + 0 <= flow(electricityBus_storage5_0) <= +inf + 0 <= flow(electricityBus_storage5_1) <= +inf + 0 <= flow(electricityBus_storage5_2) <= +inf + 0 <= flow(electricityBus_storage5_3) <= +inf + 0 <= flow(electricityBus_storage5_4) <= +inf + 0 <= flow(electricityBus_storage5_5) <= +inf + 0 <= flow(storage5_electricityBus_0) <= +inf + 0 <= flow(storage5_electricityBus_1) <= +inf + 0 <= flow(storage5_electricityBus_2) <= +inf + 0 <= flow(storage5_electricityBus_3) <= +inf + 0 <= flow(storage5_electricityBus_4) <= +inf + 0 <= flow(storage5_electricityBus_5) <= +inf 0 <= InvestmentFlowBlock_total(storage5_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_invest(storage5_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(storage5_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_invest(storage5_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old(storage5_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_total(storage5_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_invest(storage5_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old(storage5_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage5_0) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage5_1) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage5_1) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage5_2) <= +inf + 0 <= InvestmentFlowBlock_old(storage5_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old(storage5_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_old(storage5_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage5_0) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage5_1) <= +inf 0 <= InvestmentFlowBlock_old(electricityBus_storage5_2) <= +inf 0 <= InvestmentFlowBlock_old_end(storage5_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_end(storage5_electricityBus_1) <= +inf @@ -323,10 +325,8 @@ bounds 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage5_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage5_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage5_2) <= +inf - 0 <= InvestmentFlowBlock_old(storage5_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage5_0) <= +inf - 0 <= GenericStorageBlock_storage_content(storage5_1) <= 10000 0 <= GenericStorageBlock_storage_content(storage5_0) <= 10000 + 0 <= GenericStorageBlock_storage_content(storage5_1) <= 10000 0 <= GenericStorageBlock_storage_content(storage5_2) <= 10000 0 <= GenericStorageBlock_storage_content(storage5_3) <= 10000 0 <= GenericStorageBlock_storage_content(storage5_4) <= 10000 diff --git a/tests/lp_files/storage_invest_6.lp b/tests/lp_files/storage_invest_6.lp index 59262db9b..6969982c1 100644 --- a/tests/lp_files/storage_invest_6.lp +++ b/tests/lp_files/storage_invest_6.lp @@ -7,24 +7,24 @@ objective: s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage6_electricityBus_0_0) --1 flow(electricityBus_storage6_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage6_0) ++1 flow(storage6_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage6_electricityBus_0_1) --1 flow(electricityBus_storage6_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage6_1) ++1 flow(storage6_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(storage6_electricityBus_0_2) --1 flow(electricityBus_storage6_0_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage6_2) ++1 flow(storage6_electricityBus_2) = 0 c_e_InvestmentFlowBlock_total_rule(storage6_electricityBus_0)_: -+1 InvestmentFlowBlock_total(storage6_electricityBus_0) -1 InvestmentFlowBlock_invest(storage6_electricityBus_0) ++1 InvestmentFlowBlock_total(storage6_electricityBus_0) = 100 c_e_InvestmentFlowBlock_total_rule(electricityBus_storage6_0)_: @@ -33,32 +33,32 @@ c_e_InvestmentFlowBlock_total_rule(electricityBus_storage6_0)_: = 110 c_u_InvestmentFlowBlock_max(storage6_electricityBus_0_0)_: -+1 flow(storage6_electricityBus_0_0) ++1 flow(storage6_electricityBus_0) -1 InvestmentFlowBlock_total(storage6_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage6_electricityBus_0_1)_: -+1 flow(storage6_electricityBus_0_1) ++1 flow(storage6_electricityBus_1) -1 InvestmentFlowBlock_total(storage6_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage6_electricityBus_0_2)_: -+1 flow(storage6_electricityBus_0_2) ++1 flow(storage6_electricityBus_2) -1 InvestmentFlowBlock_total(storage6_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage6_0_0)_: -+1 flow(electricityBus_storage6_0_0) ++1 flow(electricityBus_storage6_0) -1 InvestmentFlowBlock_total(electricityBus_storage6_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage6_0_1)_: -+1 flow(electricityBus_storage6_0_1) ++1 flow(electricityBus_storage6_1) -1 InvestmentFlowBlock_total(electricityBus_storage6_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage6_0_2)_: -+1 flow(electricityBus_storage6_0_2) ++1 flow(electricityBus_storage6_2) -1 InvestmentFlowBlock_total(electricityBus_storage6_0) <= 0 @@ -73,22 +73,22 @@ c_u_GenericInvestmentStorageBlock_init_content_limit(storage6)_: <= 10000 c_e_GenericInvestmentStorageBlock_balance_first(storage6)_: -+1 flow(storage6_electricityBus_0_0) --1 flow(electricityBus_storage6_0_0) +-1 flow(electricityBus_storage6_0) ++1 flow(storage6_electricityBus_0) -1 GenericInvestmentStorageBlock_init_content(storage6) +1 GenericInvestmentStorageBlock_storage_content(storage6_0) = 0 c_e_GenericInvestmentStorageBlock_balance(storage6_0_1)_: -+1 flow(storage6_electricityBus_0_1) --1 flow(electricityBus_storage6_0_1) +-1 flow(electricityBus_storage6_1) ++1 flow(storage6_electricityBus_1) -1 GenericInvestmentStorageBlock_storage_content(storage6_0) +1 GenericInvestmentStorageBlock_storage_content(storage6_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage6_0_2)_: -+1 flow(storage6_electricityBus_0_2) --1 flow(electricityBus_storage6_0_2) +-1 flow(electricityBus_storage6_2) ++1 flow(storage6_electricityBus_2) -1 GenericInvestmentStorageBlock_storage_content(storage6_1) +1 GenericInvestmentStorageBlock_storage_content(storage6_2) = 0 @@ -119,16 +119,16 @@ c_u_GenericInvestmentStorageBlock_max_storage_content(storage6_0_2)_: <= 0 bounds + 0 <= InvestmentFlowBlock_invest(storage6_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage6_0) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage6_0) <= +inf - 0 <= flow(storage6_electricityBus_0_0) <= +inf - 0 <= flow(electricityBus_storage6_0_0) <= +inf - 0 <= flow(storage6_electricityBus_0_1) <= +inf - 0 <= flow(electricityBus_storage6_0_1) <= +inf - 0 <= flow(storage6_electricityBus_0_2) <= +inf - 0 <= flow(electricityBus_storage6_0_2) <= +inf + 0 <= flow(electricityBus_storage6_0) <= +inf + 0 <= flow(electricityBus_storage6_1) <= +inf + 0 <= flow(electricityBus_storage6_2) <= +inf + 0 <= flow(storage6_electricityBus_0) <= +inf + 0 <= flow(storage6_electricityBus_1) <= +inf + 0 <= flow(storage6_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_total(storage6_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_invest(storage6_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage6_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage6_0) <= +inf 0 <= GenericInvestmentStorageBlock_init_content(storage6) <= +inf diff --git a/tests/lp_files/storage_invest_6_multi_period.lp b/tests/lp_files/storage_invest_6_multi_period.lp index 4fc195eda..fac0a4278 100644 --- a/tests/lp_files/storage_invest_6_multi_period.lp +++ b/tests/lp_files/storage_invest_6_multi_period.lp @@ -11,52 +11,52 @@ objective: s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage6_electricityBus_0_0) --1 flow(electricityBus_storage6_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage6_0) ++1 flow(storage6_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage6_electricityBus_0_1) --1 flow(electricityBus_storage6_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage6_1) ++1 flow(storage6_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(storage6_electricityBus_1_2) --1 flow(electricityBus_storage6_1_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage6_2) ++1 flow(storage6_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(storage6_electricityBus_1_3) --1 flow(electricityBus_storage6_1_3) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_storage6_3) ++1 flow(storage6_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(storage6_electricityBus_2_4) --1 flow(electricityBus_storage6_2_4) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_storage6_4) ++1 flow(storage6_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(storage6_electricityBus_2_5) --1 flow(electricityBus_storage6_2_5) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_storage6_5) ++1 flow(storage6_electricityBus_5) = 0 c_e_InvestmentFlowBlock_total_rule(storage6_electricityBus_0)_: -+1 InvestmentFlowBlock_total(storage6_electricityBus_0) -1 InvestmentFlowBlock_invest(storage6_electricityBus_0) ++1 InvestmentFlowBlock_total(storage6_electricityBus_0) = 100 c_e_InvestmentFlowBlock_total_rule(storage6_electricityBus_1)_: +-1 InvestmentFlowBlock_invest(storage6_electricityBus_1) -1 InvestmentFlowBlock_total(storage6_electricityBus_0) +1 InvestmentFlowBlock_total(storage6_electricityBus_1) --1 InvestmentFlowBlock_invest(storage6_electricityBus_1) +1 InvestmentFlowBlock_old(storage6_electricityBus_1) = 0 c_e_InvestmentFlowBlock_total_rule(storage6_electricityBus_2)_: +-1 InvestmentFlowBlock_invest(storage6_electricityBus_2) -1 InvestmentFlowBlock_total(storage6_electricityBus_1) +1 InvestmentFlowBlock_total(storage6_electricityBus_2) --1 InvestmentFlowBlock_invest(storage6_electricityBus_2) +1 InvestmentFlowBlock_old(storage6_electricityBus_2) = 0 @@ -128,9 +128,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage6_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(storage6_electricityBus_0)_: ++1 InvestmentFlowBlock_old(storage6_electricityBus_0) -1 InvestmentFlowBlock_old_end(storage6_electricityBus_0) -1 InvestmentFlowBlock_old_exo(storage6_electricityBus_0) -+1 InvestmentFlowBlock_old(storage6_electricityBus_0) = 0 c_e_InvestmentFlowBlock_old_rule(storage6_electricityBus_1)_: @@ -146,9 +146,9 @@ c_e_InvestmentFlowBlock_old_rule(storage6_electricityBus_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage6_0)_: ++1 InvestmentFlowBlock_old(electricityBus_storage6_0) -1 InvestmentFlowBlock_old_end(electricityBus_storage6_0) -1 InvestmentFlowBlock_old_exo(electricityBus_storage6_0) -+1 InvestmentFlowBlock_old(electricityBus_storage6_0) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage6_1)_: @@ -164,62 +164,62 @@ c_e_InvestmentFlowBlock_old_rule(electricityBus_storage6_2)_: = 0 c_u_InvestmentFlowBlock_max(storage6_electricityBus_0_0)_: -+1 flow(storage6_electricityBus_0_0) ++1 flow(storage6_electricityBus_0) -1 InvestmentFlowBlock_total(storage6_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage6_electricityBus_0_1)_: -+1 flow(storage6_electricityBus_0_1) ++1 flow(storage6_electricityBus_1) -1 InvestmentFlowBlock_total(storage6_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage6_electricityBus_1_2)_: -+1 flow(storage6_electricityBus_1_2) ++1 flow(storage6_electricityBus_2) -1 InvestmentFlowBlock_total(storage6_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(storage6_electricityBus_1_3)_: -+1 flow(storage6_electricityBus_1_3) ++1 flow(storage6_electricityBus_3) -1 InvestmentFlowBlock_total(storage6_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(storage6_electricityBus_2_4)_: -+1 flow(storage6_electricityBus_2_4) ++1 flow(storage6_electricityBus_4) -1 InvestmentFlowBlock_total(storage6_electricityBus_2) <= 0 c_u_InvestmentFlowBlock_max(storage6_electricityBus_2_5)_: -+1 flow(storage6_electricityBus_2_5) ++1 flow(storage6_electricityBus_5) -1 InvestmentFlowBlock_total(storage6_electricityBus_2) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage6_0_0)_: -+1 flow(electricityBus_storage6_0_0) ++1 flow(electricityBus_storage6_0) -1 InvestmentFlowBlock_total(electricityBus_storage6_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage6_0_1)_: -+1 flow(electricityBus_storage6_0_1) ++1 flow(electricityBus_storage6_1) -1 InvestmentFlowBlock_total(electricityBus_storage6_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage6_1_2)_: -+1 flow(electricityBus_storage6_1_2) ++1 flow(electricityBus_storage6_2) -1 InvestmentFlowBlock_total(electricityBus_storage6_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage6_1_3)_: -+1 flow(electricityBus_storage6_1_3) ++1 flow(electricityBus_storage6_3) -1 InvestmentFlowBlock_total(electricityBus_storage6_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage6_2_4)_: -+1 flow(electricityBus_storage6_2_4) ++1 flow(electricityBus_storage6_4) -1 InvestmentFlowBlock_total(electricityBus_storage6_2) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage6_2_5)_: -+1 flow(electricityBus_storage6_2_5) ++1 flow(electricityBus_storage6_5) -1 InvestmentFlowBlock_total(electricityBus_storage6_2) <= 0 @@ -267,9 +267,9 @@ c_e_GenericInvestmentStorageBlock_old_rule_exo(storage6_2)_: = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage6_0)_: ++1 GenericInvestmentStorageBlock_old(storage6_0) -1 GenericInvestmentStorageBlock_old_end(storage6_0) -1 GenericInvestmentStorageBlock_old_exo(storage6_0) -+1 GenericInvestmentStorageBlock_old(storage6_0) = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage6_1)_: @@ -289,36 +289,36 @@ c_e_GenericInvestmentStorageBlock_initially_empty(storage6_0)_: = 0 c_e_GenericInvestmentStorageBlock_balance(storage6_0_1)_: -+1 flow(storage6_electricityBus_0_1) --1 flow(electricityBus_storage6_0_1) +-1 flow(electricityBus_storage6_1) ++1 flow(storage6_electricityBus_1) -1 GenericInvestmentStorageBlock_storage_content(storage6_0) +1 GenericInvestmentStorageBlock_storage_content(storage6_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage6_1_2)_: -+1 flow(storage6_electricityBus_1_2) --1 flow(electricityBus_storage6_1_2) +-1 flow(electricityBus_storage6_2) ++1 flow(storage6_electricityBus_2) -1 GenericInvestmentStorageBlock_storage_content(storage6_1) +1 GenericInvestmentStorageBlock_storage_content(storage6_2) = 0 c_e_GenericInvestmentStorageBlock_balance(storage6_1_3)_: -+1 flow(storage6_electricityBus_1_3) --1 flow(electricityBus_storage6_1_3) +-1 flow(electricityBus_storage6_3) ++1 flow(storage6_electricityBus_3) -1 GenericInvestmentStorageBlock_storage_content(storage6_2) +1 GenericInvestmentStorageBlock_storage_content(storage6_3) = 0 c_e_GenericInvestmentStorageBlock_balance(storage6_2_4)_: -+1 flow(storage6_electricityBus_2_4) --1 flow(electricityBus_storage6_2_4) +-1 flow(electricityBus_storage6_4) ++1 flow(storage6_electricityBus_4) -1 GenericInvestmentStorageBlock_storage_content(storage6_3) +1 GenericInvestmentStorageBlock_storage_content(storage6_4) = 0 c_e_GenericInvestmentStorageBlock_balance(storage6_2_5)_: -+1 flow(storage6_electricityBus_2_5) --1 flow(electricityBus_storage6_2_5) +-1 flow(electricityBus_storage6_5) ++1 flow(storage6_electricityBus_5) -1 GenericInvestmentStorageBlock_storage_content(storage6_4) +1 GenericInvestmentStorageBlock_storage_content(storage6_5) = 0 @@ -369,36 +369,38 @@ c_u_GenericInvestmentStorageBlock_max_storage_content(storage6_2_5)_: <= 0 bounds + 0 <= InvestmentFlowBlock_invest(storage6_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_invest(storage6_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_invest(storage6_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage6_0) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage6_1) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage6_2) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage6_0) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage6_1) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage6_2) <= +inf - 0 <= flow(storage6_electricityBus_0_0) <= +inf - 0 <= flow(electricityBus_storage6_0_0) <= +inf - 0 <= flow(storage6_electricityBus_0_1) <= +inf - 0 <= flow(electricityBus_storage6_0_1) <= +inf - 0 <= flow(storage6_electricityBus_1_2) <= +inf - 0 <= flow(electricityBus_storage6_1_2) <= +inf - 0 <= flow(storage6_electricityBus_1_3) <= +inf - 0 <= flow(electricityBus_storage6_1_3) <= +inf - 0 <= flow(storage6_electricityBus_2_4) <= +inf - 0 <= flow(electricityBus_storage6_2_4) <= +inf - 0 <= flow(storage6_electricityBus_2_5) <= +inf - 0 <= flow(electricityBus_storage6_2_5) <= +inf + 0 <= flow(electricityBus_storage6_0) <= +inf + 0 <= flow(electricityBus_storage6_1) <= +inf + 0 <= flow(electricityBus_storage6_2) <= +inf + 0 <= flow(electricityBus_storage6_3) <= +inf + 0 <= flow(electricityBus_storage6_4) <= +inf + 0 <= flow(electricityBus_storage6_5) <= +inf + 0 <= flow(storage6_electricityBus_0) <= +inf + 0 <= flow(storage6_electricityBus_1) <= +inf + 0 <= flow(storage6_electricityBus_2) <= +inf + 0 <= flow(storage6_electricityBus_3) <= +inf + 0 <= flow(storage6_electricityBus_4) <= +inf + 0 <= flow(storage6_electricityBus_5) <= +inf 0 <= InvestmentFlowBlock_total(storage6_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_invest(storage6_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(storage6_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_invest(storage6_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old(storage6_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_total(storage6_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_invest(storage6_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old(storage6_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage6_0) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage6_1) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage6_1) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage6_2) <= +inf + 0 <= InvestmentFlowBlock_old(storage6_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old(storage6_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_old(storage6_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage6_0) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage6_1) <= +inf 0 <= InvestmentFlowBlock_old(electricityBus_storage6_2) <= +inf 0 <= InvestmentFlowBlock_old_end(storage6_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_end(storage6_electricityBus_1) <= +inf @@ -412,12 +414,11 @@ bounds 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage6_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage6_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage6_2) <= +inf - 0 <= InvestmentFlowBlock_old(storage6_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage6_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage6_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage6_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage6_1) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage6_2) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage6_0) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage6_1) <= +inf 0 <= GenericInvestmentStorageBlock_old(storage6_2) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage6_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage6_1) <= +inf @@ -425,7 +426,6 @@ bounds 0 <= GenericInvestmentStorageBlock_old_exo(storage6_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage6_1) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage6_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage6_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage6_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage6_1) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage6_2) <= +inf diff --git a/tests/lp_files/storage_invest_all_nonconvex.lp b/tests/lp_files/storage_invest_all_nonconvex.lp index 9711a6c35..9b92cf049 100644 --- a/tests/lp_files/storage_invest_all_nonconvex.lp +++ b/tests/lp_files/storage_invest_all_nonconvex.lp @@ -2,43 +2,38 @@ min objective: -+10 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) -+15 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) +10 InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_0) ++10 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) +10 InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_0) ++15 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) +20 GenericInvestmentStorageBlock_invest(storage_all_nonconvex_0) +30 GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_0) s.t. -c_e_BusBlock_balance(bus1_0_0)_: -+1 flow(storage_all_nonconvex_bus1_0_0) --1 flow(bus1_storage_all_nonconvex_0_0) +c_e_BusBlock_balance(bus1_0)_: +-1 flow(bus1_storage_all_nonconvex_0) ++1 flow(storage_all_nonconvex_bus1_0) = 0 -c_e_BusBlock_balance(bus1_0_1)_: -+1 flow(storage_all_nonconvex_bus1_0_1) --1 flow(bus1_storage_all_nonconvex_0_1) +c_e_BusBlock_balance(bus1_1)_: +-1 flow(bus1_storage_all_nonconvex_1) ++1 flow(storage_all_nonconvex_bus1_1) = 0 -c_e_BusBlock_balance(bus1_0_2)_: -+1 flow(storage_all_nonconvex_bus1_0_2) --1 flow(bus1_storage_all_nonconvex_0_2) +c_e_BusBlock_balance(bus1_2)_: +-1 flow(bus1_storage_all_nonconvex_2) ++1 flow(storage_all_nonconvex_bus1_2) = 0 -c_u_InvestmentFlowBlock_minimum_rule(storage_all_nonconvex_bus1_0)_: --1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) -+8 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) -<= 0 - c_u_InvestmentFlowBlock_minimum_rule(bus1_storage_all_nonconvex_0)_: -1 InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_0) +5 InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_0) <= 0 -c_u_InvestmentFlowBlock_maximum_rule(storage_all_nonconvex_bus1_0)_: -+1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) --20 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) +c_u_InvestmentFlowBlock_minimum_rule(storage_all_nonconvex_bus1_0)_: +-1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) ++8 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) <= 0 c_u_InvestmentFlowBlock_maximum_rule(bus1_storage_all_nonconvex_0)_: @@ -46,46 +41,51 @@ c_u_InvestmentFlowBlock_maximum_rule(bus1_storage_all_nonconvex_0)_: -30 InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_0) <= 0 -c_e_InvestmentFlowBlock_total_rule(storage_all_nonconvex_bus1_0)_: --1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) -+1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) -= 0 +c_u_InvestmentFlowBlock_maximum_rule(storage_all_nonconvex_bus1_0)_: ++1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) +-20 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) +<= 0 c_e_InvestmentFlowBlock_total_rule(bus1_storage_all_nonconvex_0)_: -1 InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_0) +1 InvestmentFlowBlock_total(bus1_storage_all_nonconvex_0) = 0 -c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_0_0)_: -+1 flow(storage_all_nonconvex_bus1_0_0) --1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_0_1)_: -+1 flow(storage_all_nonconvex_bus1_0_1) --1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_0_2)_: -+1 flow(storage_all_nonconvex_bus1_0_2) --1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) -<= 0 +c_e_InvestmentFlowBlock_total_rule(storage_all_nonconvex_bus1_0)_: +-1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) ++1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) += 0 c_u_InvestmentFlowBlock_max(bus1_storage_all_nonconvex_0_0)_: -+1 flow(bus1_storage_all_nonconvex_0_0) ++1 flow(bus1_storage_all_nonconvex_0) -1 InvestmentFlowBlock_total(bus1_storage_all_nonconvex_0) <= 0 c_u_InvestmentFlowBlock_max(bus1_storage_all_nonconvex_0_1)_: -+1 flow(bus1_storage_all_nonconvex_0_1) ++1 flow(bus1_storage_all_nonconvex_1) -1 InvestmentFlowBlock_total(bus1_storage_all_nonconvex_0) <= 0 c_u_InvestmentFlowBlock_max(bus1_storage_all_nonconvex_0_2)_: -+1 flow(bus1_storage_all_nonconvex_0_2) ++1 flow(bus1_storage_all_nonconvex_2) -1 InvestmentFlowBlock_total(bus1_storage_all_nonconvex_0) <= 0 +c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_0_0)_: ++1 flow(storage_all_nonconvex_bus1_0) +-1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_0_1)_: ++1 flow(storage_all_nonconvex_bus1_1) +-1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_0_2)_: ++1 flow(storage_all_nonconvex_bus1_2) +-1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) +<= 0 + c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_all_nonconvex_0)_: -1 GenericInvestmentStorageBlock_invest(storage_all_nonconvex_0) +1 GenericInvestmentStorageBlock_total(storage_all_nonconvex_0) @@ -97,22 +97,22 @@ c_u_GenericInvestmentStorageBlock_init_content_limit(storage_all_nonconvex)_: <= 0 c_e_GenericInvestmentStorageBlock_balance_first(storage_all_nonconvex)_: -+1 flow(storage_all_nonconvex_bus1_0_0) --1 flow(bus1_storage_all_nonconvex_0_0) +-1 flow(bus1_storage_all_nonconvex_0) ++1 flow(storage_all_nonconvex_bus1_0) -1 GenericInvestmentStorageBlock_init_content(storage_all_nonconvex) +1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_0) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_all_nonconvex_0_1)_: -+1 flow(storage_all_nonconvex_bus1_0_1) --1 flow(bus1_storage_all_nonconvex_0_1) +-1 flow(bus1_storage_all_nonconvex_1) ++1 flow(storage_all_nonconvex_bus1_1) -1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_0) +1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_all_nonconvex_0_2)_: -+1 flow(storage_all_nonconvex_bus1_0_2) --1 flow(bus1_storage_all_nonconvex_0_2) +-1 flow(bus1_storage_all_nonconvex_2) ++1 flow(storage_all_nonconvex_bus1_2) -1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_1) +1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_2) = 0 @@ -148,27 +148,27 @@ c_l_GenericInvestmentStorageBlock_limit_min(storage_all_nonconvex_0)_: >= 0 bounds - 0 <= InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) <= 20 - 0 <= InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) <= 1 0 <= InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_0) <= 30 + 0 <= InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) <= 20 0 <= InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_0) <= 1 + 0 <= InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) <= 1 0 <= GenericInvestmentStorageBlock_invest(storage_all_nonconvex_0) <= 100 0 <= GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_0) <= 1 - 0 <= flow(storage_all_nonconvex_bus1_0_0) <= +inf - 0 <= flow(bus1_storage_all_nonconvex_0_0) <= +inf - 0 <= flow(storage_all_nonconvex_bus1_0_1) <= +inf - 0 <= flow(bus1_storage_all_nonconvex_0_1) <= +inf - 0 <= flow(storage_all_nonconvex_bus1_0_2) <= +inf - 0 <= flow(bus1_storage_all_nonconvex_0_2) <= +inf - 0 <= InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) <= +inf + 0 <= flow(bus1_storage_all_nonconvex_0) <= +inf + 0 <= flow(bus1_storage_all_nonconvex_1) <= +inf + 0 <= flow(bus1_storage_all_nonconvex_2) <= +inf + 0 <= flow(storage_all_nonconvex_bus1_0) <= +inf + 0 <= flow(storage_all_nonconvex_bus1_1) <= +inf + 0 <= flow(storage_all_nonconvex_bus1_2) <= +inf 0 <= InvestmentFlowBlock_total(bus1_storage_all_nonconvex_0) <= +inf + 0 <= InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_all_nonconvex_0) <= +inf 0 <= GenericInvestmentStorageBlock_init_content(storage_all_nonconvex) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_1) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_2) <= +inf binary - InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_0) + InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_0) end diff --git a/tests/lp_files/storage_invest_all_nonconvex_multi_period.lp b/tests/lp_files/storage_invest_all_nonconvex_multi_period.lp index b78eca2f7..15fbce66f 100644 --- a/tests/lp_files/storage_invest_all_nonconvex_multi_period.lp +++ b/tests/lp_files/storage_invest_all_nonconvex_multi_period.lp @@ -2,72 +2,57 @@ min objective: ++1.7636883641156018 InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_0) ++1.164112696220594 InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_1) ++0.5762934139705919 InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_2) +1.7636883641156018 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) -+15 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) +1.164112696220594 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_1) -+14.705882352941176 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_1) +0.5762934139705919 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_2) -+14.41753171856978 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_2) -+1.7636883641156018 InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_0) +10 InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_0) -+1.164112696220594 InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_1) +9.80392156862745 InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_1) -+0.5762934139705919 InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_2) +9.611687812379854 InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_2) ++15 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) ++14.705882352941176 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_1) ++14.41753171856978 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_2) +3.5273767282312036 GenericInvestmentStorageBlock_invest(storage_all_nonconvex_0) -+30 GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_0) +2.328225392441188 GenericInvestmentStorageBlock_invest(storage_all_nonconvex_1) -+29.41176470588235 GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_1) +1.1525868279411837 GenericInvestmentStorageBlock_invest(storage_all_nonconvex_2) ++30 GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_0) ++29.41176470588235 GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_1) +28.83506343713956 GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_2) s.t. -c_e_BusBlock_balance(bus1_0_0)_: -+1 flow(storage_all_nonconvex_bus1_0_0) --1 flow(bus1_storage_all_nonconvex_0_0) +c_e_BusBlock_balance(bus1_0)_: +-1 flow(bus1_storage_all_nonconvex_0) ++1 flow(storage_all_nonconvex_bus1_0) = 0 -c_e_BusBlock_balance(bus1_0_1)_: -+1 flow(storage_all_nonconvex_bus1_0_1) --1 flow(bus1_storage_all_nonconvex_0_1) +c_e_BusBlock_balance(bus1_1)_: +-1 flow(bus1_storage_all_nonconvex_1) ++1 flow(storage_all_nonconvex_bus1_1) = 0 -c_e_BusBlock_balance(bus1_1_2)_: -+1 flow(storage_all_nonconvex_bus1_1_2) --1 flow(bus1_storage_all_nonconvex_1_2) +c_e_BusBlock_balance(bus1_2)_: +-1 flow(bus1_storage_all_nonconvex_2) ++1 flow(storage_all_nonconvex_bus1_2) = 0 -c_e_BusBlock_balance(bus1_1_3)_: -+1 flow(storage_all_nonconvex_bus1_1_3) --1 flow(bus1_storage_all_nonconvex_1_3) +c_e_BusBlock_balance(bus1_3)_: +-1 flow(bus1_storage_all_nonconvex_3) ++1 flow(storage_all_nonconvex_bus1_3) = 0 -c_e_BusBlock_balance(bus1_2_4)_: -+1 flow(storage_all_nonconvex_bus1_2_4) --1 flow(bus1_storage_all_nonconvex_2_4) +c_e_BusBlock_balance(bus1_4)_: +-1 flow(bus1_storage_all_nonconvex_4) ++1 flow(storage_all_nonconvex_bus1_4) = 0 -c_e_BusBlock_balance(bus1_2_5)_: -+1 flow(storage_all_nonconvex_bus1_2_5) --1 flow(bus1_storage_all_nonconvex_2_5) +c_e_BusBlock_balance(bus1_5)_: +-1 flow(bus1_storage_all_nonconvex_5) ++1 flow(storage_all_nonconvex_bus1_5) = 0 -c_u_InvestmentFlowBlock_minimum_rule(storage_all_nonconvex_bus1_0)_: --1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) -+8 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) -<= 0 - -c_u_InvestmentFlowBlock_minimum_rule(storage_all_nonconvex_bus1_1)_: --1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_1) -+8 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_1) -<= 0 - -c_u_InvestmentFlowBlock_minimum_rule(storage_all_nonconvex_bus1_2)_: --1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_2) -+8 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_2) -<= 0 - c_u_InvestmentFlowBlock_minimum_rule(bus1_storage_all_nonconvex_0)_: -1 InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_0) +5 InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_0) @@ -83,19 +68,19 @@ c_u_InvestmentFlowBlock_minimum_rule(bus1_storage_all_nonconvex_2)_: +5 InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_2) <= 0 -c_u_InvestmentFlowBlock_maximum_rule(storage_all_nonconvex_bus1_0)_: -+1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) --20 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) +c_u_InvestmentFlowBlock_minimum_rule(storage_all_nonconvex_bus1_0)_: +-1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) ++8 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) <= 0 -c_u_InvestmentFlowBlock_maximum_rule(storage_all_nonconvex_bus1_1)_: -+1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_1) --20 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_1) +c_u_InvestmentFlowBlock_minimum_rule(storage_all_nonconvex_bus1_1)_: +-1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_1) ++8 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_1) <= 0 -c_u_InvestmentFlowBlock_maximum_rule(storage_all_nonconvex_bus1_2)_: -+1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_2) --20 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_2) +c_u_InvestmentFlowBlock_minimum_rule(storage_all_nonconvex_bus1_2)_: +-1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_2) ++8 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_2) <= 0 c_u_InvestmentFlowBlock_maximum_rule(bus1_storage_all_nonconvex_0)_: @@ -113,24 +98,20 @@ c_u_InvestmentFlowBlock_maximum_rule(bus1_storage_all_nonconvex_2)_: -30 InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_2) <= 0 -c_e_InvestmentFlowBlock_total_rule(storage_all_nonconvex_bus1_0)_: --1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) -+1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) -= 0 +c_u_InvestmentFlowBlock_maximum_rule(storage_all_nonconvex_bus1_0)_: ++1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) +-20 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) +<= 0 -c_e_InvestmentFlowBlock_total_rule(storage_all_nonconvex_bus1_1)_: --1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_1) --1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) -+1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_1) -+1 InvestmentFlowBlock_old(storage_all_nonconvex_bus1_1) -= 0 +c_u_InvestmentFlowBlock_maximum_rule(storage_all_nonconvex_bus1_1)_: ++1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_1) +-20 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_1) +<= 0 -c_e_InvestmentFlowBlock_total_rule(storage_all_nonconvex_bus1_2)_: --1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_2) --1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_1) -+1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_2) -+1 InvestmentFlowBlock_old(storage_all_nonconvex_bus1_2) -= 0 +c_u_InvestmentFlowBlock_maximum_rule(storage_all_nonconvex_bus1_2)_: ++1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_2) +-20 InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_2) +<= 0 c_e_InvestmentFlowBlock_total_rule(bus1_storage_all_nonconvex_0)_: -1 InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_0) @@ -151,16 +132,23 @@ c_e_InvestmentFlowBlock_total_rule(bus1_storage_all_nonconvex_2)_: +1 InvestmentFlowBlock_old(bus1_storage_all_nonconvex_2) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage_all_nonconvex_bus1_0)_: -+1 InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_0) +c_e_InvestmentFlowBlock_total_rule(storage_all_nonconvex_bus1_0)_: +-1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) ++1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage_all_nonconvex_bus1_1)_: -+1 InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_1) +c_e_InvestmentFlowBlock_total_rule(storage_all_nonconvex_bus1_1)_: +-1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_1) +-1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) ++1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_1) ++1 InvestmentFlowBlock_old(storage_all_nonconvex_bus1_1) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage_all_nonconvex_bus1_2)_: -+1 InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_2) +c_e_InvestmentFlowBlock_total_rule(storage_all_nonconvex_bus1_2)_: +-1 InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_2) +-1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_1) ++1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_2) ++1 InvestmentFlowBlock_old(storage_all_nonconvex_bus1_2) = 0 c_e_InvestmentFlowBlock_old_rule_end(bus1_storage_all_nonconvex_0)_: @@ -175,16 +163,16 @@ c_e_InvestmentFlowBlock_old_rule_end(bus1_storage_all_nonconvex_2)_: +1 InvestmentFlowBlock_old_end(bus1_storage_all_nonconvex_2) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage_all_nonconvex_bus1_0)_: -+1 InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_0) +c_e_InvestmentFlowBlock_old_rule_end(storage_all_nonconvex_bus1_0)_: ++1 InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_0) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage_all_nonconvex_bus1_1)_: -+1 InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_1) +c_e_InvestmentFlowBlock_old_rule_end(storage_all_nonconvex_bus1_1)_: ++1 InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_1) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage_all_nonconvex_bus1_2)_: -+1 InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_2) +c_e_InvestmentFlowBlock_old_rule_end(storage_all_nonconvex_bus1_2)_: ++1 InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_2) = 0 c_e_InvestmentFlowBlock_old_rule_exo(bus1_storage_all_nonconvex_0)_: @@ -199,28 +187,22 @@ c_e_InvestmentFlowBlock_old_rule_exo(bus1_storage_all_nonconvex_2)_: +1 InvestmentFlowBlock_old_exo(bus1_storage_all_nonconvex_2) = 0 -c_e_InvestmentFlowBlock_old_rule(storage_all_nonconvex_bus1_0)_: --1 InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_0) --1 InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_0) -+1 InvestmentFlowBlock_old(storage_all_nonconvex_bus1_0) +c_e_InvestmentFlowBlock_old_rule_exo(storage_all_nonconvex_bus1_0)_: ++1 InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_0) = 0 -c_e_InvestmentFlowBlock_old_rule(storage_all_nonconvex_bus1_1)_: -+1 InvestmentFlowBlock_old(storage_all_nonconvex_bus1_1) --1 InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_1) --1 InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_1) +c_e_InvestmentFlowBlock_old_rule_exo(storage_all_nonconvex_bus1_1)_: ++1 InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_1) = 0 -c_e_InvestmentFlowBlock_old_rule(storage_all_nonconvex_bus1_2)_: -+1 InvestmentFlowBlock_old(storage_all_nonconvex_bus1_2) --1 InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_2) --1 InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_2) +c_e_InvestmentFlowBlock_old_rule_exo(storage_all_nonconvex_bus1_2)_: ++1 InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_2) = 0 c_e_InvestmentFlowBlock_old_rule(bus1_storage_all_nonconvex_0)_: ++1 InvestmentFlowBlock_old(bus1_storage_all_nonconvex_0) -1 InvestmentFlowBlock_old_end(bus1_storage_all_nonconvex_0) -1 InvestmentFlowBlock_old_exo(bus1_storage_all_nonconvex_0) -+1 InvestmentFlowBlock_old(bus1_storage_all_nonconvex_0) = 0 c_e_InvestmentFlowBlock_old_rule(bus1_storage_all_nonconvex_1)_: @@ -235,66 +217,84 @@ c_e_InvestmentFlowBlock_old_rule(bus1_storage_all_nonconvex_2)_: -1 InvestmentFlowBlock_old_exo(bus1_storage_all_nonconvex_2) = 0 -c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_0_0)_: -+1 flow(storage_all_nonconvex_bus1_0_0) --1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_0_1)_: -+1 flow(storage_all_nonconvex_bus1_0_1) --1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_1_2)_: -+1 flow(storage_all_nonconvex_bus1_1_2) --1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_1) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_1_3)_: -+1 flow(storage_all_nonconvex_bus1_1_3) --1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_1) -<= 0 +c_e_InvestmentFlowBlock_old_rule(storage_all_nonconvex_bus1_0)_: ++1 InvestmentFlowBlock_old(storage_all_nonconvex_bus1_0) +-1 InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_0) +-1 InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_0) += 0 -c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_2_4)_: -+1 flow(storage_all_nonconvex_bus1_2_4) --1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_2) -<= 0 +c_e_InvestmentFlowBlock_old_rule(storage_all_nonconvex_bus1_1)_: ++1 InvestmentFlowBlock_old(storage_all_nonconvex_bus1_1) +-1 InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_1) +-1 InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_1) += 0 -c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_2_5)_: -+1 flow(storage_all_nonconvex_bus1_2_5) --1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_2) -<= 0 +c_e_InvestmentFlowBlock_old_rule(storage_all_nonconvex_bus1_2)_: ++1 InvestmentFlowBlock_old(storage_all_nonconvex_bus1_2) +-1 InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_2) +-1 InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_2) += 0 c_u_InvestmentFlowBlock_max(bus1_storage_all_nonconvex_0_0)_: -+1 flow(bus1_storage_all_nonconvex_0_0) ++1 flow(bus1_storage_all_nonconvex_0) -1 InvestmentFlowBlock_total(bus1_storage_all_nonconvex_0) <= 0 c_u_InvestmentFlowBlock_max(bus1_storage_all_nonconvex_0_1)_: -+1 flow(bus1_storage_all_nonconvex_0_1) ++1 flow(bus1_storage_all_nonconvex_1) -1 InvestmentFlowBlock_total(bus1_storage_all_nonconvex_0) <= 0 c_u_InvestmentFlowBlock_max(bus1_storage_all_nonconvex_1_2)_: -+1 flow(bus1_storage_all_nonconvex_1_2) ++1 flow(bus1_storage_all_nonconvex_2) -1 InvestmentFlowBlock_total(bus1_storage_all_nonconvex_1) <= 0 c_u_InvestmentFlowBlock_max(bus1_storage_all_nonconvex_1_3)_: -+1 flow(bus1_storage_all_nonconvex_1_3) ++1 flow(bus1_storage_all_nonconvex_3) -1 InvestmentFlowBlock_total(bus1_storage_all_nonconvex_1) <= 0 c_u_InvestmentFlowBlock_max(bus1_storage_all_nonconvex_2_4)_: -+1 flow(bus1_storage_all_nonconvex_2_4) ++1 flow(bus1_storage_all_nonconvex_4) -1 InvestmentFlowBlock_total(bus1_storage_all_nonconvex_2) <= 0 c_u_InvestmentFlowBlock_max(bus1_storage_all_nonconvex_2_5)_: -+1 flow(bus1_storage_all_nonconvex_2_5) ++1 flow(bus1_storage_all_nonconvex_5) -1 InvestmentFlowBlock_total(bus1_storage_all_nonconvex_2) <= 0 +c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_0_0)_: ++1 flow(storage_all_nonconvex_bus1_0) +-1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_0_1)_: ++1 flow(storage_all_nonconvex_bus1_1) +-1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_1_2)_: ++1 flow(storage_all_nonconvex_bus1_2) +-1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_1) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_1_3)_: ++1 flow(storage_all_nonconvex_bus1_3) +-1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_1) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_2_4)_: ++1 flow(storage_all_nonconvex_bus1_4) +-1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_2) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_all_nonconvex_bus1_2_5)_: ++1 flow(storage_all_nonconvex_bus1_5) +-1 InvestmentFlowBlock_total(storage_all_nonconvex_bus1_2) +<= 0 + c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_all_nonconvex_0)_: -1 GenericInvestmentStorageBlock_invest(storage_all_nonconvex_0) +1 GenericInvestmentStorageBlock_total(storage_all_nonconvex_0) @@ -339,9 +339,9 @@ c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_all_nonconvex_2)_: = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage_all_nonconvex_0)_: ++1 GenericInvestmentStorageBlock_old(storage_all_nonconvex_0) -1 GenericInvestmentStorageBlock_old_end(storage_all_nonconvex_0) -1 GenericInvestmentStorageBlock_old_exo(storage_all_nonconvex_0) -+1 GenericInvestmentStorageBlock_old(storage_all_nonconvex_0) = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage_all_nonconvex_1)_: @@ -361,36 +361,36 @@ c_e_GenericInvestmentStorageBlock_initially_empty(storage_all_nonconvex_0)_: = 0 c_e_GenericInvestmentStorageBlock_balance(storage_all_nonconvex_0_1)_: -+1 flow(storage_all_nonconvex_bus1_0_1) --1 flow(bus1_storage_all_nonconvex_0_1) +-1 flow(bus1_storage_all_nonconvex_1) ++1 flow(storage_all_nonconvex_bus1_1) -1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_0) +1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_all_nonconvex_1_2)_: -+1 flow(storage_all_nonconvex_bus1_1_2) --1 flow(bus1_storage_all_nonconvex_1_2) +-1 flow(bus1_storage_all_nonconvex_2) ++1 flow(storage_all_nonconvex_bus1_2) -1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_1) +1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_2) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_all_nonconvex_1_3)_: -+1 flow(storage_all_nonconvex_bus1_1_3) --1 flow(bus1_storage_all_nonconvex_1_3) +-1 flow(bus1_storage_all_nonconvex_3) ++1 flow(storage_all_nonconvex_bus1_3) -1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_2) +1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_3) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_all_nonconvex_2_4)_: -+1 flow(storage_all_nonconvex_bus1_2_4) --1 flow(bus1_storage_all_nonconvex_2_4) +-1 flow(bus1_storage_all_nonconvex_4) ++1 flow(storage_all_nonconvex_bus1_4) -1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_3) +1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_4) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_all_nonconvex_2_5)_: -+1 flow(storage_all_nonconvex_bus1_2_5) --1 flow(bus1_storage_all_nonconvex_2_5) +-1 flow(bus1_storage_all_nonconvex_5) ++1 flow(storage_all_nonconvex_bus1_5) -1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_4) +1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_5) = 0 @@ -456,64 +456,65 @@ c_l_GenericInvestmentStorageBlock_limit_min(storage_all_nonconvex_2)_: >= 0 bounds + 0 <= InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_0) <= 30 + 0 <= InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_1) <= 30 + 0 <= InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_2) <= 30 0 <= InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_0) <= 20 - 0 <= InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) <= 1 0 <= InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_1) <= 20 - 0 <= InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_1) <= 1 0 <= InvestmentFlowBlock_invest(storage_all_nonconvex_bus1_2) <= 20 - 0 <= InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_2) <= 1 - 0 <= InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_0) <= 30 0 <= InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_0) <= 1 - 0 <= InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_1) <= 30 0 <= InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_1) <= 1 - 0 <= InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_2) <= 30 0 <= InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_2) <= 1 + 0 <= InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) <= 1 + 0 <= InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_1) <= 1 + 0 <= InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_2) <= 1 0 <= GenericInvestmentStorageBlock_invest(storage_all_nonconvex_0) <= 100 - 0 <= GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_0) <= 1 0 <= GenericInvestmentStorageBlock_invest(storage_all_nonconvex_1) <= 100 - 0 <= GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_1) <= 1 0 <= GenericInvestmentStorageBlock_invest(storage_all_nonconvex_2) <= 100 + 0 <= GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_0) <= 1 + 0 <= GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_1) <= 1 0 <= GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_2) <= 1 - 0 <= flow(storage_all_nonconvex_bus1_0_0) <= +inf - 0 <= flow(bus1_storage_all_nonconvex_0_0) <= +inf - 0 <= flow(storage_all_nonconvex_bus1_0_1) <= +inf - 0 <= flow(bus1_storage_all_nonconvex_0_1) <= +inf - 0 <= flow(storage_all_nonconvex_bus1_1_2) <= +inf - 0 <= flow(bus1_storage_all_nonconvex_1_2) <= +inf - 0 <= flow(storage_all_nonconvex_bus1_1_3) <= +inf - 0 <= flow(bus1_storage_all_nonconvex_1_3) <= +inf - 0 <= flow(storage_all_nonconvex_bus1_2_4) <= +inf - 0 <= flow(bus1_storage_all_nonconvex_2_4) <= +inf - 0 <= flow(storage_all_nonconvex_bus1_2_5) <= +inf - 0 <= flow(bus1_storage_all_nonconvex_2_5) <= +inf + 0 <= flow(bus1_storage_all_nonconvex_0) <= +inf + 0 <= flow(bus1_storage_all_nonconvex_1) <= +inf + 0 <= flow(bus1_storage_all_nonconvex_2) <= +inf + 0 <= flow(bus1_storage_all_nonconvex_3) <= +inf + 0 <= flow(bus1_storage_all_nonconvex_4) <= +inf + 0 <= flow(bus1_storage_all_nonconvex_5) <= +inf + 0 <= flow(storage_all_nonconvex_bus1_0) <= +inf + 0 <= flow(storage_all_nonconvex_bus1_1) <= +inf + 0 <= flow(storage_all_nonconvex_bus1_2) <= +inf + 0 <= flow(storage_all_nonconvex_bus1_3) <= +inf + 0 <= flow(storage_all_nonconvex_bus1_4) <= +inf + 0 <= flow(storage_all_nonconvex_bus1_5) <= +inf + 0 <= InvestmentFlowBlock_total(bus1_storage_all_nonconvex_0) <= +inf + 0 <= InvestmentFlowBlock_total(bus1_storage_all_nonconvex_1) <= +inf + 0 <= InvestmentFlowBlock_total(bus1_storage_all_nonconvex_2) <= +inf 0 <= InvestmentFlowBlock_total(storage_all_nonconvex_bus1_0) <= +inf 0 <= InvestmentFlowBlock_total(storage_all_nonconvex_bus1_1) <= +inf - 0 <= InvestmentFlowBlock_old(storage_all_nonconvex_bus1_1) <= +inf 0 <= InvestmentFlowBlock_total(storage_all_nonconvex_bus1_2) <= +inf - 0 <= InvestmentFlowBlock_old(storage_all_nonconvex_bus1_2) <= +inf - 0 <= InvestmentFlowBlock_total(bus1_storage_all_nonconvex_0) <= +inf - 0 <= InvestmentFlowBlock_total(bus1_storage_all_nonconvex_1) <= +inf + 0 <= InvestmentFlowBlock_old(bus1_storage_all_nonconvex_0) <= +inf 0 <= InvestmentFlowBlock_old(bus1_storage_all_nonconvex_1) <= +inf - 0 <= InvestmentFlowBlock_total(bus1_storage_all_nonconvex_2) <= +inf 0 <= InvestmentFlowBlock_old(bus1_storage_all_nonconvex_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_2) <= +inf + 0 <= InvestmentFlowBlock_old(storage_all_nonconvex_bus1_0) <= +inf + 0 <= InvestmentFlowBlock_old(storage_all_nonconvex_bus1_1) <= +inf + 0 <= InvestmentFlowBlock_old(storage_all_nonconvex_bus1_2) <= +inf 0 <= InvestmentFlowBlock_old_end(bus1_storage_all_nonconvex_0) <= +inf 0 <= InvestmentFlowBlock_old_end(bus1_storage_all_nonconvex_1) <= +inf 0 <= InvestmentFlowBlock_old_end(bus1_storage_all_nonconvex_2) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_0) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_1) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_2) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_0) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_1) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_2) <= +inf 0 <= InvestmentFlowBlock_old_exo(bus1_storage_all_nonconvex_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(bus1_storage_all_nonconvex_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(bus1_storage_all_nonconvex_2) <= +inf - 0 <= InvestmentFlowBlock_old(storage_all_nonconvex_bus1_0) <= +inf - 0 <= InvestmentFlowBlock_old(bus1_storage_all_nonconvex_0) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_0) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_1) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_2) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_all_nonconvex_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_all_nonconvex_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_all_nonconvex_1) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_all_nonconvex_2) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_all_nonconvex_0) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_all_nonconvex_1) <= +inf 0 <= GenericInvestmentStorageBlock_old(storage_all_nonconvex_2) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage_all_nonconvex_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage_all_nonconvex_1) <= +inf @@ -521,7 +522,6 @@ bounds 0 <= GenericInvestmentStorageBlock_old_exo(storage_all_nonconvex_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage_all_nonconvex_1) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage_all_nonconvex_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_all_nonconvex_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_1) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_2) <= +inf @@ -529,12 +529,12 @@ bounds 0 <= GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_4) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_5) <= +inf binary - InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) - InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_1) - InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_2) InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_0) InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_1) InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_2) + InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_0) + InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_1) + InvestmentFlowBlock_invest_status(storage_all_nonconvex_bus1_2) GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_0) GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_1) GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_2) diff --git a/tests/lp_files/storage_invest_minimum.lp b/tests/lp_files/storage_invest_minimum.lp index b20a7966f..be41ebe5e 100644 --- a/tests/lp_files/storage_invest_minimum.lp +++ b/tests/lp_files/storage_invest_minimum.lp @@ -6,19 +6,19 @@ objective: s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage1_0) ++1 flow(storage1_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage1_1) ++1 flow(storage1_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(storage1_electricityBus_0_2) --1 flow(electricityBus_storage1_0_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage1_2) ++1 flow(storage1_electricityBus_2) = 0 c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_0)_: @@ -32,22 +32,22 @@ c_u_GenericInvestmentStorageBlock_init_content_limit(storage1)_: <= 0 c_e_GenericInvestmentStorageBlock_balance_first(storage1)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_0) +-1 flow(electricityBus_storage1_0) ++1 flow(storage1_electricityBus_0) -1 GenericInvestmentStorageBlock_init_content(storage1) +1 GenericInvestmentStorageBlock_storage_content(storage1_0) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) +-1 flow(electricityBus_storage1_1) ++1 flow(storage1_electricityBus_1) -1 GenericInvestmentStorageBlock_storage_content(storage1_0) +1 GenericInvestmentStorageBlock_storage_content(storage1_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_0_2)_: -+1 flow(storage1_electricityBus_0_2) --1 flow(electricityBus_storage1_0_2) +-1 flow(electricityBus_storage1_2) ++1 flow(storage1_electricityBus_2) -1 GenericInvestmentStorageBlock_storage_content(storage1_1) +1 GenericInvestmentStorageBlock_storage_content(storage1_2) = 0 @@ -74,12 +74,12 @@ c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_2)_: bounds 100 <= GenericInvestmentStorageBlock_invest(storage1_0) <= 200 - 0 <= flow(storage1_electricityBus_0_0) <= +inf - 0 <= flow(electricityBus_storage1_0_0) <= +inf - 0 <= flow(storage1_electricityBus_0_1) <= +inf - 0 <= flow(electricityBus_storage1_0_1) <= +inf - 0 <= flow(storage1_electricityBus_0_2) <= +inf - 0 <= flow(electricityBus_storage1_0_2) <= +inf + 0 <= flow(electricityBus_storage1_0) <= +inf + 0 <= flow(electricityBus_storage1_1) <= +inf + 0 <= flow(electricityBus_storage1_2) <= +inf + 0 <= flow(storage1_electricityBus_0) <= +inf + 0 <= flow(storage1_electricityBus_1) <= +inf + 0 <= flow(storage1_electricityBus_2) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_init_content(storage1) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage1_0) <= +inf diff --git a/tests/lp_files/storage_invest_minimum_multi_period.lp b/tests/lp_files/storage_invest_minimum_multi_period.lp index c61a64544..d1854ec25 100644 --- a/tests/lp_files/storage_invest_minimum_multi_period.lp +++ b/tests/lp_files/storage_invest_minimum_multi_period.lp @@ -8,34 +8,34 @@ objective: s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage1_0) ++1 flow(storage1_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage1_1) ++1 flow(storage1_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(storage1_electricityBus_1_2) --1 flow(electricityBus_storage1_1_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage1_2) ++1 flow(storage1_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(storage1_electricityBus_1_3) --1 flow(electricityBus_storage1_1_3) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_storage1_3) ++1 flow(storage1_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(storage1_electricityBus_2_4) --1 flow(electricityBus_storage1_2_4) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_storage1_4) ++1 flow(storage1_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(storage1_electricityBus_2_5) --1 flow(electricityBus_storage1_2_5) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_storage1_5) ++1 flow(storage1_electricityBus_5) = 0 c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_0)_: @@ -82,9 +82,9 @@ c_e_GenericInvestmentStorageBlock_old_rule_exo(storage1_2)_: = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage1_0)_: ++1 GenericInvestmentStorageBlock_old(storage1_0) -1 GenericInvestmentStorageBlock_old_end(storage1_0) -1 GenericInvestmentStorageBlock_old_exo(storage1_0) -+1 GenericInvestmentStorageBlock_old(storage1_0) = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage1_1)_: @@ -104,36 +104,36 @@ c_e_GenericInvestmentStorageBlock_initially_empty(storage1_0)_: = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) +-1 flow(electricityBus_storage1_1) ++1 flow(storage1_electricityBus_1) -1 GenericInvestmentStorageBlock_storage_content(storage1_0) +1 GenericInvestmentStorageBlock_storage_content(storage1_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_1_2)_: -+1 flow(storage1_electricityBus_1_2) --1 flow(electricityBus_storage1_1_2) +-1 flow(electricityBus_storage1_2) ++1 flow(storage1_electricityBus_2) -1 GenericInvestmentStorageBlock_storage_content(storage1_1) +1 GenericInvestmentStorageBlock_storage_content(storage1_2) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_1_3)_: -+1 flow(storage1_electricityBus_1_3) --1 flow(electricityBus_storage1_1_3) +-1 flow(electricityBus_storage1_3) ++1 flow(storage1_electricityBus_3) -1 GenericInvestmentStorageBlock_storage_content(storage1_2) +1 GenericInvestmentStorageBlock_storage_content(storage1_3) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_2_4)_: -+1 flow(storage1_electricityBus_2_4) --1 flow(electricityBus_storage1_2_4) +-1 flow(electricityBus_storage1_4) ++1 flow(storage1_electricityBus_4) -1 GenericInvestmentStorageBlock_storage_content(storage1_3) +1 GenericInvestmentStorageBlock_storage_content(storage1_4) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_2_5)_: -+1 flow(storage1_electricityBus_2_5) --1 flow(electricityBus_storage1_2_5) +-1 flow(electricityBus_storage1_5) ++1 flow(storage1_electricityBus_5) -1 GenericInvestmentStorageBlock_storage_content(storage1_4) +1 GenericInvestmentStorageBlock_storage_content(storage1_5) = 0 @@ -172,22 +172,23 @@ bounds 100 <= GenericInvestmentStorageBlock_invest(storage1_0) <= 200 100 <= GenericInvestmentStorageBlock_invest(storage1_1) <= 200 100 <= GenericInvestmentStorageBlock_invest(storage1_2) <= 200 - 0 <= flow(storage1_electricityBus_0_0) <= +inf - 0 <= flow(electricityBus_storage1_0_0) <= +inf - 0 <= flow(storage1_electricityBus_0_1) <= +inf - 0 <= flow(electricityBus_storage1_0_1) <= +inf - 0 <= flow(storage1_electricityBus_1_2) <= +inf - 0 <= flow(electricityBus_storage1_1_2) <= +inf - 0 <= flow(storage1_electricityBus_1_3) <= +inf - 0 <= flow(electricityBus_storage1_1_3) <= +inf - 0 <= flow(storage1_electricityBus_2_4) <= +inf - 0 <= flow(electricityBus_storage1_2_4) <= +inf - 0 <= flow(storage1_electricityBus_2_5) <= +inf - 0 <= flow(electricityBus_storage1_2_5) <= +inf + 0 <= flow(electricityBus_storage1_0) <= +inf + 0 <= flow(electricityBus_storage1_1) <= +inf + 0 <= flow(electricityBus_storage1_2) <= +inf + 0 <= flow(electricityBus_storage1_3) <= +inf + 0 <= flow(electricityBus_storage1_4) <= +inf + 0 <= flow(electricityBus_storage1_5) <= +inf + 0 <= flow(storage1_electricityBus_0) <= +inf + 0 <= flow(storage1_electricityBus_1) <= +inf + 0 <= flow(storage1_electricityBus_2) <= +inf + 0 <= flow(storage1_electricityBus_3) <= +inf + 0 <= flow(storage1_electricityBus_4) <= +inf + 0 <= flow(storage1_electricityBus_5) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage1_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage1_1) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage1_2) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage1_0) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage1_1) <= +inf 0 <= GenericInvestmentStorageBlock_old(storage1_2) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage1_1) <= +inf @@ -195,7 +196,6 @@ bounds 0 <= GenericInvestmentStorageBlock_old_exo(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage1_1) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage1_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage1_1) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage1_2) <= +inf diff --git a/tests/lp_files/storage_invest_multi_period.lp b/tests/lp_files/storage_invest_multi_period.lp index e8b1246e4..34c877f70 100644 --- a/tests/lp_files/storage_invest_multi_period.lp +++ b/tests/lp_files/storage_invest_multi_period.lp @@ -9,34 +9,34 @@ objective: s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage1_0) ++1 flow(storage1_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage1_1) ++1 flow(storage1_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(storage1_electricityBus_1_2) --1 flow(electricityBus_storage1_1_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage1_2) ++1 flow(storage1_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(storage1_electricityBus_1_3) --1 flow(electricityBus_storage1_1_3) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_storage1_3) ++1 flow(storage1_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(storage1_electricityBus_2_4) --1 flow(electricityBus_storage1_2_4) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_storage1_4) ++1 flow(storage1_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(storage1_electricityBus_2_5) --1 flow(electricityBus_storage1_2_5) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_storage1_5) ++1 flow(storage1_electricityBus_5) = 0 c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_0)_: @@ -83,9 +83,9 @@ c_e_GenericInvestmentStorageBlock_old_rule_exo(storage1_2)_: = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage1_0)_: ++1 GenericInvestmentStorageBlock_old(storage1_0) -1 GenericInvestmentStorageBlock_old_end(storage1_0) -1 GenericInvestmentStorageBlock_old_exo(storage1_0) -+1 GenericInvestmentStorageBlock_old(storage1_0) = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage1_1)_: @@ -105,36 +105,36 @@ c_e_GenericInvestmentStorageBlock_initially_empty(storage1_0)_: = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) +-1 flow(electricityBus_storage1_1) ++1 flow(storage1_electricityBus_1) -1 GenericInvestmentStorageBlock_storage_content(storage1_0) +1 GenericInvestmentStorageBlock_storage_content(storage1_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_1_2)_: -+1 flow(storage1_electricityBus_1_2) --1 flow(electricityBus_storage1_1_2) +-1 flow(electricityBus_storage1_2) ++1 flow(storage1_electricityBus_2) -1 GenericInvestmentStorageBlock_storage_content(storage1_1) +1 GenericInvestmentStorageBlock_storage_content(storage1_2) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_1_3)_: -+1 flow(storage1_electricityBus_1_3) --1 flow(electricityBus_storage1_1_3) +-1 flow(electricityBus_storage1_3) ++1 flow(storage1_electricityBus_3) -1 GenericInvestmentStorageBlock_storage_content(storage1_2) +1 GenericInvestmentStorageBlock_storage_content(storage1_3) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_2_4)_: -+1 flow(storage1_electricityBus_2_4) --1 flow(electricityBus_storage1_2_4) +-1 flow(electricityBus_storage1_4) ++1 flow(storage1_electricityBus_4) -1 GenericInvestmentStorageBlock_storage_content(storage1_3) +1 GenericInvestmentStorageBlock_storage_content(storage1_4) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_2_5)_: -+1 flow(storage1_electricityBus_2_5) --1 flow(electricityBus_storage1_2_5) +-1 flow(electricityBus_storage1_5) ++1 flow(storage1_electricityBus_5) -1 GenericInvestmentStorageBlock_storage_content(storage1_4) +1 GenericInvestmentStorageBlock_storage_content(storage1_5) = 0 @@ -190,22 +190,23 @@ bounds 100 <= GenericInvestmentStorageBlock_invest(storage1_0) <= 200 100 <= GenericInvestmentStorageBlock_invest(storage1_1) <= 200 100 <= GenericInvestmentStorageBlock_invest(storage1_2) <= 200 - 0 <= flow(storage1_electricityBus_0_0) <= +inf - 0 <= flow(electricityBus_storage1_0_0) <= +inf - 0 <= flow(storage1_electricityBus_0_1) <= +inf - 0 <= flow(electricityBus_storage1_0_1) <= +inf - 0 <= flow(storage1_electricityBus_1_2) <= +inf - 0 <= flow(electricityBus_storage1_1_2) <= +inf - 0 <= flow(storage1_electricityBus_1_3) <= +inf - 0 <= flow(electricityBus_storage1_1_3) <= +inf - 0 <= flow(storage1_electricityBus_2_4) <= +inf - 0 <= flow(electricityBus_storage1_2_4) <= +inf - 0 <= flow(storage1_electricityBus_2_5) <= +inf - 0 <= flow(electricityBus_storage1_2_5) <= +inf + 0 <= flow(electricityBus_storage1_0) <= +inf + 0 <= flow(electricityBus_storage1_1) <= +inf + 0 <= flow(electricityBus_storage1_2) <= +inf + 0 <= flow(electricityBus_storage1_3) <= +inf + 0 <= flow(electricityBus_storage1_4) <= +inf + 0 <= flow(electricityBus_storage1_5) <= +inf + 0 <= flow(storage1_electricityBus_0) <= +inf + 0 <= flow(storage1_electricityBus_1) <= +inf + 0 <= flow(storage1_electricityBus_2) <= +inf + 0 <= flow(storage1_electricityBus_3) <= +inf + 0 <= flow(storage1_electricityBus_4) <= +inf + 0 <= flow(storage1_electricityBus_5) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage1_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage1_1) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage1_2) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage1_0) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage1_1) <= +inf 0 <= GenericInvestmentStorageBlock_old(storage1_2) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage1_1) <= +inf @@ -213,7 +214,6 @@ bounds 0 <= GenericInvestmentStorageBlock_old_exo(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage1_1) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage1_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage1_1) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage1_2) <= +inf diff --git a/tests/lp_files/storage_invest_unbalanced.lp b/tests/lp_files/storage_invest_unbalanced.lp index 2dbed4e9b..a26377921 100644 --- a/tests/lp_files/storage_invest_unbalanced.lp +++ b/tests/lp_files/storage_invest_unbalanced.lp @@ -6,19 +6,19 @@ objective: s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage1_0) ++1 flow(storage1_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage1_1) ++1 flow(storage1_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(storage1_electricityBus_0_2) --1 flow(electricityBus_storage1_0_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage1_2) ++1 flow(storage1_electricityBus_2) = 0 c_e_InvestmentFlowBlock_total_rule(electricityBus_storage1_0)_: @@ -32,32 +32,32 @@ c_e_InvestmentFlowBlock_total_rule(storage1_electricityBus_0)_: = 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_0)_: -+1 flow(electricityBus_storage1_0_0) ++1 flow(electricityBus_storage1_0) -1 InvestmentFlowBlock_total(electricityBus_storage1_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_1)_: -+1 flow(electricityBus_storage1_0_1) ++1 flow(electricityBus_storage1_1) -1 InvestmentFlowBlock_total(electricityBus_storage1_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_2)_: -+1 flow(electricityBus_storage1_0_2) ++1 flow(electricityBus_storage1_2) -1 InvestmentFlowBlock_total(electricityBus_storage1_0) <= 0 c_u_InvestmentFlowBlock_max(storage1_electricityBus_0_0)_: -+1 flow(storage1_electricityBus_0_0) ++1 flow(storage1_electricityBus_0) -1 InvestmentFlowBlock_total(storage1_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage1_electricityBus_0_1)_: -+1 flow(storage1_electricityBus_0_1) ++1 flow(storage1_electricityBus_1) -1 InvestmentFlowBlock_total(storage1_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage1_electricityBus_0_2)_: -+1 flow(storage1_electricityBus_0_2) ++1 flow(storage1_electricityBus_2) -1 InvestmentFlowBlock_total(storage1_electricityBus_0) <= 0 @@ -72,22 +72,22 @@ c_e_GenericInvestmentStorageBlock_init_content_fix(storage1)_: = 0 c_e_GenericInvestmentStorageBlock_balance_first(storage1)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_0) +-1 flow(electricityBus_storage1_0) ++1 flow(storage1_electricityBus_0) -1 GenericInvestmentStorageBlock_init_content(storage1) +1 GenericInvestmentStorageBlock_storage_content(storage1_0) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) +-1 flow(electricityBus_storage1_1) ++1 flow(storage1_electricityBus_1) -1 GenericInvestmentStorageBlock_storage_content(storage1_0) +1 GenericInvestmentStorageBlock_storage_content(storage1_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage1_0_2)_: -+1 flow(storage1_electricityBus_0_2) --1 flow(electricityBus_storage1_0_2) +-1 flow(electricityBus_storage1_2) ++1 flow(storage1_electricityBus_2) -1 GenericInvestmentStorageBlock_storage_content(storage1_1) +1 GenericInvestmentStorageBlock_storage_content(storage1_2) = 0 @@ -119,15 +119,15 @@ c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_2)_: bounds 0 <= GenericInvestmentStorageBlock_invest(storage1_0) <= +inf - 0 <= flow(storage1_electricityBus_0_0) <= +inf - 0 <= flow(electricityBus_storage1_0_0) <= +inf - 0 <= flow(storage1_electricityBus_0_1) <= +inf - 0 <= flow(electricityBus_storage1_0_1) <= +inf - 0 <= flow(storage1_electricityBus_0_2) <= +inf - 0 <= flow(electricityBus_storage1_0_2) <= +inf + 0 <= flow(electricityBus_storage1_0) <= +inf + 0 <= flow(electricityBus_storage1_1) <= +inf + 0 <= flow(electricityBus_storage1_2) <= +inf + 0 <= flow(storage1_electricityBus_0) <= +inf + 0 <= flow(storage1_electricityBus_1) <= +inf + 0 <= flow(storage1_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage1_0) <= +inf - 0 <= InvestmentFlowBlock_invest(electricityBus_storage1_0) <= +inf 0 <= InvestmentFlowBlock_total(storage1_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_invest(electricityBus_storage1_0) <= +inf 0 <= InvestmentFlowBlock_invest(storage1_electricityBus_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage1_0) <= +inf 0 <= GenericInvestmentStorageBlock_init_content(storage1) <= +inf diff --git a/tests/lp_files/storage_invest_with_offset.lp b/tests/lp_files/storage_invest_with_offset.lp index 18cc0c966..ccc18b41f 100644 --- a/tests/lp_files/storage_invest_with_offset.lp +++ b/tests/lp_files/storage_invest_with_offset.lp @@ -2,35 +2,30 @@ min objective: -+56 flow(electricityBus_storage_non_convex_0_0) -+56 flow(electricityBus_storage_non_convex_0_1) -+56 flow(electricityBus_storage_non_convex_0_2) -+24 flow(storage_non_convex_electricityBus_0_0) -+24 flow(storage_non_convex_electricityBus_0_1) -+24 flow(storage_non_convex_electricityBus_0_2) ++56 flow(electricityBus_storage_non_convex_0) ++56 flow(electricityBus_storage_non_convex_1) ++56 flow(electricityBus_storage_non_convex_2) ++24 flow(storage_non_convex_electricityBus_0) ++24 flow(storage_non_convex_electricityBus_1) ++24 flow(storage_non_convex_electricityBus_2) +145 GenericInvestmentStorageBlock_invest(storage_non_convex_0) +5 GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_storage_non_convex_0_0) -+1 flow(storage_non_convex_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage_non_convex_0) ++1 flow(storage_non_convex_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_non_convex_0_1) -+1 flow(storage_non_convex_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage_non_convex_1) ++1 flow(storage_non_convex_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: --1 flow(electricityBus_storage_non_convex_0_2) -+1 flow(storage_non_convex_electricityBus_0_2) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage_non_convex_electricityBus_0)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) --1 InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage_non_convex_2) ++1 flow(storage_non_convex_electricityBus_2) = 0 c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_0)_: @@ -38,36 +33,41 @@ c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_0)_: -1 InvestmentFlowBlock_invest(electricityBus_storage_non_convex_0) = 0 -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_0)_: -+1 flow(storage_non_convex_electricityBus_0_0) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_1)_: -+1 flow(storage_non_convex_electricityBus_0_1) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_2)_: -+1 flow(storage_non_convex_electricityBus_0_2) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) -<= 0 +c_e_InvestmentFlowBlock_total_rule(storage_non_convex_electricityBus_0)_: ++1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) +-1 InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) += 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_0)_: -+1 flow(electricityBus_storage_non_convex_0_0) ++1 flow(electricityBus_storage_non_convex_0) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_1)_: -+1 flow(electricityBus_storage_non_convex_0_1) ++1 flow(electricityBus_storage_non_convex_1) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_2)_: -+1 flow(electricityBus_storage_non_convex_0_2) ++1 flow(electricityBus_storage_non_convex_2) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= 0 +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_0)_: ++1 flow(storage_non_convex_electricityBus_0) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_1)_: ++1 flow(storage_non_convex_electricityBus_1) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_2)_: ++1 flow(storage_non_convex_electricityBus_2) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) +<= 0 + c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_non_convex_0)_: -1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) +1 GenericInvestmentStorageBlock_total(storage_non_convex_0) @@ -79,22 +79,22 @@ c_u_GenericInvestmentStorageBlock_init_content_limit(storage_non_convex)_: <= 0 c_e_GenericInvestmentStorageBlock_balance_first(storage_non_convex)_: --0.97 flow(electricityBus_storage_non_convex_0_0) -+1.1627906976744187 flow(storage_non_convex_electricityBus_0_0) +-0.97 flow(electricityBus_storage_non_convex_0) ++1.1627906976744187 flow(storage_non_convex_electricityBus_0) -0.87 GenericInvestmentStorageBlock_init_content(storage_non_convex) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_0_1)_: --0.97 flow(electricityBus_storage_non_convex_0_1) -+1.1627906976744187 flow(storage_non_convex_electricityBus_0_1) +-0.97 flow(electricityBus_storage_non_convex_1) ++1.1627906976744187 flow(storage_non_convex_electricityBus_1) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_0_2)_: --0.97 flow(electricityBus_storage_non_convex_0_2) -+1.1627906976744187 flow(storage_non_convex_electricityBus_0_2) +-0.97 flow(electricityBus_storage_non_convex_2) ++1.1627906976744187 flow(storage_non_convex_electricityBus_2) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) = 0 @@ -155,18 +155,18 @@ c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_0)_: >= 0 bounds - 0 <= flow(electricityBus_storage_non_convex_0_0) <= +inf - 0 <= flow(electricityBus_storage_non_convex_0_1) <= +inf - 0 <= flow(electricityBus_storage_non_convex_0_2) <= +inf - 0 <= flow(storage_non_convex_electricityBus_0_0) <= +inf - 0 <= flow(storage_non_convex_electricityBus_0_1) <= +inf - 0 <= flow(storage_non_convex_electricityBus_0_2) <= +inf + 0 <= flow(electricityBus_storage_non_convex_0) <= +inf + 0 <= flow(electricityBus_storage_non_convex_1) <= +inf + 0 <= flow(electricityBus_storage_non_convex_2) <= +inf + 0 <= flow(storage_non_convex_electricityBus_0) <= +inf + 0 <= flow(storage_non_convex_electricityBus_1) <= +inf + 0 <= flow(storage_non_convex_electricityBus_2) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage_non_convex_0) <= 1454 0 <= GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) <= 1 - 0 <= InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= +inf + 0 <= InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_0) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_init_content(storage_non_convex) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) <= +inf diff --git a/tests/lp_files/storage_invest_with_offset_multi_period.lp b/tests/lp_files/storage_invest_with_offset_multi_period.lp index 0391a3236..71d9e8e07 100644 --- a/tests/lp_files/storage_invest_with_offset_multi_period.lp +++ b/tests/lp_files/storage_invest_with_offset_multi_period.lp @@ -2,55 +2,55 @@ min objective: -+56 flow(electricityBus_storage_non_convex_0_0) -+56 flow(electricityBus_storage_non_convex_0_1) -+54.90196078431372 flow(electricityBus_storage_non_convex_1_2) -+54.90196078431372 flow(electricityBus_storage_non_convex_1_3) -+53.82545174932718 flow(electricityBus_storage_non_convex_2_4) -+53.82545174932718 flow(electricityBus_storage_non_convex_2_5) -+24 flow(storage_non_convex_electricityBus_0_0) -+24 flow(storage_non_convex_electricityBus_0_1) -+23.52941176470588 flow(storage_non_convex_electricityBus_1_2) -+23.52941176470588 flow(storage_non_convex_electricityBus_1_3) -+23.06805074971165 flow(storage_non_convex_electricityBus_2_4) -+23.06805074971165 flow(storage_non_convex_electricityBus_2_5) ++56 flow(electricityBus_storage_non_convex_0) ++56 flow(electricityBus_storage_non_convex_1) ++54.90196078431372 flow(electricityBus_storage_non_convex_2) ++54.90196078431372 flow(electricityBus_storage_non_convex_3) ++53.82545174932718 flow(electricityBus_storage_non_convex_4) ++53.82545174932718 flow(electricityBus_storage_non_convex_5) ++24 flow(storage_non_convex_electricityBus_0) ++24 flow(storage_non_convex_electricityBus_1) ++23.52941176470588 flow(storage_non_convex_electricityBus_2) ++23.52941176470588 flow(storage_non_convex_electricityBus_3) ++23.06805074971165 flow(storage_non_convex_electricityBus_4) ++23.06805074971165 flow(storage_non_convex_electricityBus_5) +25.57348127967623 GenericInvestmentStorageBlock_invest(storage_non_convex_0) -+5 GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) +16.879634095198618 GenericInvestmentStorageBlock_invest(storage_non_convex_1) -+4.901960784313725 GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) +8.35625450257358 GenericInvestmentStorageBlock_invest(storage_non_convex_2) ++5 GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) ++4.901960784313725 GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) +4.805843906189927 GenericInvestmentStorageBlock_invest_status(storage_non_convex_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_storage_non_convex_0_0) -+1 flow(storage_non_convex_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage_non_convex_0) ++1 flow(storage_non_convex_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_non_convex_0_1) -+1 flow(storage_non_convex_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage_non_convex_1) ++1 flow(storage_non_convex_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_storage_non_convex_1_2) -+1 flow(storage_non_convex_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage_non_convex_2) ++1 flow(storage_non_convex_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_storage_non_convex_1_3) -+1 flow(storage_non_convex_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_storage_non_convex_3) ++1 flow(storage_non_convex_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_storage_non_convex_2_4) -+1 flow(storage_non_convex_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_storage_non_convex_4) ++1 flow(storage_non_convex_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: --1 flow(electricityBus_storage_non_convex_2_5) -+1 flow(storage_non_convex_electricityBus_2_5) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_storage_non_convex_5) ++1 flow(storage_non_convex_electricityBus_5) = 0 c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_0)_: @@ -140,9 +140,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(storage_non_convex_electricityBus_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage_non_convex_0)_: ++1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_0) -1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_0) -1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_0) -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_0) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage_non_convex_1)_: @@ -158,9 +158,9 @@ c_e_InvestmentFlowBlock_old_rule(electricityBus_storage_non_convex_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_0)_: ++1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_0) -1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_0) -1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_0) -+1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_0) = 0 c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_1)_: @@ -176,62 +176,62 @@ c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_2)_: = 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_0)_: -+1 flow(electricityBus_storage_non_convex_0_0) ++1 flow(electricityBus_storage_non_convex_0) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_1)_: -+1 flow(electricityBus_storage_non_convex_0_1) ++1 flow(electricityBus_storage_non_convex_1) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_1_2)_: -+1 flow(electricityBus_storage_non_convex_1_2) ++1 flow(electricityBus_storage_non_convex_2) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_1_3)_: -+1 flow(electricityBus_storage_non_convex_1_3) ++1 flow(electricityBus_storage_non_convex_3) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_2_4)_: -+1 flow(electricityBus_storage_non_convex_2_4) ++1 flow(electricityBus_storage_non_convex_4) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_2_5)_: -+1 flow(electricityBus_storage_non_convex_2_5) ++1 flow(electricityBus_storage_non_convex_5) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) <= 0 c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_0)_: -+1 flow(storage_non_convex_electricityBus_0_0) ++1 flow(storage_non_convex_electricityBus_0) -1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_1)_: -+1 flow(storage_non_convex_electricityBus_0_1) ++1 flow(storage_non_convex_electricityBus_1) -1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_1_2)_: -+1 flow(storage_non_convex_electricityBus_1_2) ++1 flow(storage_non_convex_electricityBus_2) -1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_1_3)_: -+1 flow(storage_non_convex_electricityBus_1_3) ++1 flow(storage_non_convex_electricityBus_3) -1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_2_4)_: -+1 flow(storage_non_convex_electricityBus_2_4) ++1 flow(storage_non_convex_electricityBus_4) -1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) <= 0 c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_2_5)_: -+1 flow(storage_non_convex_electricityBus_2_5) ++1 flow(storage_non_convex_electricityBus_5) -1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) <= 0 @@ -279,9 +279,9 @@ c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_non_convex_2)_: = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage_non_convex_0)_: ++1 GenericInvestmentStorageBlock_old(storage_non_convex_0) -1 GenericInvestmentStorageBlock_old_end(storage_non_convex_0) -1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_old(storage_non_convex_0) = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage_non_convex_1)_: @@ -301,36 +301,36 @@ c_e_GenericInvestmentStorageBlock_initially_empty(storage_non_convex_0)_: = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_0_1)_: --0.97 flow(electricityBus_storage_non_convex_0_1) -+1.1627906976744187 flow(storage_non_convex_electricityBus_0_1) +-0.97 flow(electricityBus_storage_non_convex_1) ++1.1627906976744187 flow(storage_non_convex_electricityBus_1) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_1_2)_: --0.97 flow(electricityBus_storage_non_convex_1_2) -+1.1627906976744187 flow(storage_non_convex_electricityBus_1_2) +-0.97 flow(electricityBus_storage_non_convex_2) ++1.1627906976744187 flow(storage_non_convex_electricityBus_2) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_1_3)_: --0.97 flow(electricityBus_storage_non_convex_1_3) -+1.1627906976744187 flow(storage_non_convex_electricityBus_1_3) +-0.97 flow(electricityBus_storage_non_convex_3) ++1.1627906976744187 flow(storage_non_convex_electricityBus_3) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_2_4)_: --0.97 flow(electricityBus_storage_non_convex_2_4) -+1.1627906976744187 flow(storage_non_convex_electricityBus_2_4) +-0.97 flow(electricityBus_storage_non_convex_4) ++1.1627906976744187 flow(storage_non_convex_electricityBus_4) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_2_5)_: --0.97 flow(electricityBus_storage_non_convex_2_5) -+1.1627906976744187 flow(storage_non_convex_electricityBus_2_5) +-0.97 flow(electricityBus_storage_non_convex_5) ++1.1627906976744187 flow(storage_non_convex_electricityBus_5) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) = 0 @@ -456,39 +456,41 @@ c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_2)_: >= 0 bounds - 0 <= flow(electricityBus_storage_non_convex_0_0) <= +inf - 0 <= flow(electricityBus_storage_non_convex_0_1) <= +inf - 0 <= flow(electricityBus_storage_non_convex_1_2) <= +inf - 0 <= flow(electricityBus_storage_non_convex_1_3) <= +inf - 0 <= flow(electricityBus_storage_non_convex_2_4) <= +inf - 0 <= flow(electricityBus_storage_non_convex_2_5) <= +inf - 0 <= flow(storage_non_convex_electricityBus_0_0) <= +inf - 0 <= flow(storage_non_convex_electricityBus_0_1) <= +inf - 0 <= flow(storage_non_convex_electricityBus_1_2) <= +inf - 0 <= flow(storage_non_convex_electricityBus_1_3) <= +inf - 0 <= flow(storage_non_convex_electricityBus_2_4) <= +inf - 0 <= flow(storage_non_convex_electricityBus_2_5) <= +inf + 0 <= flow(electricityBus_storage_non_convex_0) <= +inf + 0 <= flow(electricityBus_storage_non_convex_1) <= +inf + 0 <= flow(electricityBus_storage_non_convex_2) <= +inf + 0 <= flow(electricityBus_storage_non_convex_3) <= +inf + 0 <= flow(electricityBus_storage_non_convex_4) <= +inf + 0 <= flow(electricityBus_storage_non_convex_5) <= +inf + 0 <= flow(storage_non_convex_electricityBus_0) <= +inf + 0 <= flow(storage_non_convex_electricityBus_1) <= +inf + 0 <= flow(storage_non_convex_electricityBus_2) <= +inf + 0 <= flow(storage_non_convex_electricityBus_3) <= +inf + 0 <= flow(storage_non_convex_electricityBus_4) <= +inf + 0 <= flow(storage_non_convex_electricityBus_5) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage_non_convex_0) <= 1454 - 0 <= GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) <= 1 0 <= GenericInvestmentStorageBlock_invest(storage_non_convex_1) <= 1454 - 0 <= GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) <= 1 0 <= GenericInvestmentStorageBlock_invest(storage_non_convex_2) <= 1454 + 0 <= GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) <= 1 + 0 <= GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) <= 1 0 <= GenericInvestmentStorageBlock_invest_status(storage_non_convex_2) <= 1 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= +inf - 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_0) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) <= +inf - 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_1) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_1) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) <= +inf - 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_2) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_2) <= +inf 0 <= InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_0) <= +inf + 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_1) <= +inf + 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_2) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_0) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_1) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_2) <= +inf + 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_0) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_1) <= +inf @@ -502,12 +504,11 @@ bounds 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_0) <= +inf - 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_non_convex_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_1) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_non_convex_2) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_0) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_1) <= +inf 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_2) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_1) <= +inf @@ -515,7 +516,6 @@ bounds 0 <= GenericInvestmentStorageBlock_old_exo(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage_non_convex_1) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage_non_convex_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) <= +inf diff --git a/tests/lp_files/storage_invest_with_offset_multi_period_remaining_value.lp b/tests/lp_files/storage_invest_with_offset_multi_period_remaining_value.lp index 9347789d9..71d9e8e07 100644 --- a/tests/lp_files/storage_invest_with_offset_multi_period_remaining_value.lp +++ b/tests/lp_files/storage_invest_with_offset_multi_period_remaining_value.lp @@ -2,74 +2,55 @@ min objective: -+56 flow(electricityBus_storage_non_convex_0_0) -+56 flow(electricityBus_storage_non_convex_0_1) -+54.90196078431372 flow(electricityBus_storage_non_convex_1_2) -+54.90196078431372 flow(electricityBus_storage_non_convex_1_3) -+53.82545174932718 flow(electricityBus_storage_non_convex_2_4) -+53.82545174932718 flow(electricityBus_storage_non_convex_2_5) -+24 flow(storage_non_convex_electricityBus_0_0) -+24 flow(storage_non_convex_electricityBus_0_1) -+23.52941176470588 flow(storage_non_convex_electricityBus_1_2) -+23.52941176470588 flow(storage_non_convex_electricityBus_1_3) -+23.06805074971165 flow(storage_non_convex_electricityBus_2_4) -+23.06805074971165 flow(storage_non_convex_electricityBus_2_5) ++56 flow(electricityBus_storage_non_convex_0) ++56 flow(electricityBus_storage_non_convex_1) ++54.90196078431372 flow(electricityBus_storage_non_convex_2) ++54.90196078431372 flow(electricityBus_storage_non_convex_3) ++53.82545174932718 flow(electricityBus_storage_non_convex_4) ++53.82545174932718 flow(electricityBus_storage_non_convex_5) ++24 flow(storage_non_convex_electricityBus_0) ++24 flow(storage_non_convex_electricityBus_1) ++23.52941176470588 flow(storage_non_convex_electricityBus_2) ++23.52941176470588 flow(storage_non_convex_electricityBus_3) ++23.06805074971165 flow(storage_non_convex_electricityBus_4) ++23.06805074971165 flow(storage_non_convex_electricityBus_5) +25.57348127967623 GenericInvestmentStorageBlock_invest(storage_non_convex_0) -+5 GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) +16.879634095198618 GenericInvestmentStorageBlock_invest(storage_non_convex_1) -+4.901960784313725 GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) +8.35625450257358 GenericInvestmentStorageBlock_invest(storage_non_convex_2) ++5 GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) ++4.901960784313725 GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) +4.805843906189927 GenericInvestmentStorageBlock_invest_status(storage_non_convex_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_storage_non_convex_0_0) -+1 flow(storage_non_convex_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_non_convex_0_1) -+1 flow(storage_non_convex_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage_non_convex_0) ++1 flow(storage_non_convex_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_storage_non_convex_1_2) -+1 flow(storage_non_convex_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage_non_convex_1) ++1 flow(storage_non_convex_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_storage_non_convex_1_3) -+1 flow(storage_non_convex_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage_non_convex_2) ++1 flow(storage_non_convex_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_storage_non_convex_2_4) -+1 flow(storage_non_convex_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_storage_non_convex_3) ++1 flow(storage_non_convex_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: --1 flow(electricityBus_storage_non_convex_2_5) -+1 flow(storage_non_convex_electricityBus_2_5) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_storage_non_convex_4) ++1 flow(storage_non_convex_electricityBus_4) = 0 -c_e_InvestmentFlowBlock_total_rule(storage_non_convex_electricityBus_0)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) --1 InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage_non_convex_electricityBus_1)_: --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) --1 InvestmentFlowBlock_invest(storage_non_convex_electricityBus_1) -+1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage_non_convex_electricityBus_2)_: --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) --1 InvestmentFlowBlock_invest(storage_non_convex_electricityBus_2) -+1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_2) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_storage_non_convex_5) ++1 flow(storage_non_convex_electricityBus_5) = 0 c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_0)_: @@ -91,16 +72,23 @@ c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_2)_: +1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_2) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage_non_convex_electricityBus_0)_: -+1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_0) +c_e_InvestmentFlowBlock_total_rule(storage_non_convex_electricityBus_0)_: ++1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) +-1 InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage_non_convex_electricityBus_1)_: -+1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_1) +c_e_InvestmentFlowBlock_total_rule(storage_non_convex_electricityBus_1)_: +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) ++1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) +-1 InvestmentFlowBlock_invest(storage_non_convex_electricityBus_1) ++1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_1) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage_non_convex_electricityBus_2)_: -+1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_2) +c_e_InvestmentFlowBlock_total_rule(storage_non_convex_electricityBus_2)_: +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) ++1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) +-1 InvestmentFlowBlock_invest(storage_non_convex_electricityBus_2) ++1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_2) = 0 c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage_non_convex_0)_: @@ -115,16 +103,16 @@ c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage_non_convex_2)_: +1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_2) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage_non_convex_electricityBus_0)_: -+1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_0) +c_e_InvestmentFlowBlock_old_rule_end(storage_non_convex_electricityBus_0)_: ++1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_0) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage_non_convex_electricityBus_1)_: -+1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_1) +c_e_InvestmentFlowBlock_old_rule_end(storage_non_convex_electricityBus_1)_: ++1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_1) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage_non_convex_electricityBus_2)_: -+1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_2) +c_e_InvestmentFlowBlock_old_rule_end(storage_non_convex_electricityBus_2)_: ++1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_2) = 0 c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage_non_convex_0)_: @@ -139,28 +127,22 @@ c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage_non_convex_2)_: +1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_2) = 0 -c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_0)_: --1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_0) --1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_0) -+1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_0) +c_e_InvestmentFlowBlock_old_rule_exo(storage_non_convex_electricityBus_0)_: ++1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_0) = 0 -c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_1)_: -+1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_1) --1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_1) --1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_1) +c_e_InvestmentFlowBlock_old_rule_exo(storage_non_convex_electricityBus_1)_: ++1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_1) = 0 -c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_2)_: -+1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_2) --1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_2) --1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_2) +c_e_InvestmentFlowBlock_old_rule_exo(storage_non_convex_electricityBus_2)_: ++1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_2) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage_non_convex_0)_: ++1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_0) -1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_0) -1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_0) -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_0) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage_non_convex_1)_: @@ -175,66 +157,84 @@ c_e_InvestmentFlowBlock_old_rule(electricityBus_storage_non_convex_2)_: -1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_2) = 0 -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_0)_: -+1 flow(storage_non_convex_electricityBus_0_0) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_1)_: -+1 flow(storage_non_convex_electricityBus_0_1) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_1_2)_: -+1 flow(storage_non_convex_electricityBus_1_2) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_1_3)_: -+1 flow(storage_non_convex_electricityBus_1_3) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) -<= 0 +c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_0)_: ++1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_0) +-1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_0) +-1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_0) += 0 -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_2_4)_: -+1 flow(storage_non_convex_electricityBus_2_4) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) -<= 0 +c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_1)_: ++1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_1) +-1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_1) +-1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_1) += 0 -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_2_5)_: -+1 flow(storage_non_convex_electricityBus_2_5) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) -<= 0 +c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_2)_: ++1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_2) +-1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_2) +-1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_2) += 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_0)_: -+1 flow(electricityBus_storage_non_convex_0_0) ++1 flow(electricityBus_storage_non_convex_0) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_1)_: -+1 flow(electricityBus_storage_non_convex_0_1) ++1 flow(electricityBus_storage_non_convex_1) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_1_2)_: -+1 flow(electricityBus_storage_non_convex_1_2) ++1 flow(electricityBus_storage_non_convex_2) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_1_3)_: -+1 flow(electricityBus_storage_non_convex_1_3) ++1 flow(electricityBus_storage_non_convex_3) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_2_4)_: -+1 flow(electricityBus_storage_non_convex_2_4) ++1 flow(electricityBus_storage_non_convex_4) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_2_5)_: -+1 flow(electricityBus_storage_non_convex_2_5) ++1 flow(electricityBus_storage_non_convex_5) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) <= 0 +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_0)_: ++1 flow(storage_non_convex_electricityBus_0) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_1)_: ++1 flow(storage_non_convex_electricityBus_1) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_1_2)_: ++1 flow(storage_non_convex_electricityBus_2) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_1_3)_: ++1 flow(storage_non_convex_electricityBus_3) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_2_4)_: ++1 flow(storage_non_convex_electricityBus_4) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_2_5)_: ++1 flow(storage_non_convex_electricityBus_5) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) +<= 0 + c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_non_convex_0)_: -1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) +1 GenericInvestmentStorageBlock_total(storage_non_convex_0) @@ -279,9 +279,9 @@ c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_non_convex_2)_: = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage_non_convex_0)_: ++1 GenericInvestmentStorageBlock_old(storage_non_convex_0) -1 GenericInvestmentStorageBlock_old_end(storage_non_convex_0) -1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_old(storage_non_convex_0) = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage_non_convex_1)_: @@ -301,36 +301,36 @@ c_e_GenericInvestmentStorageBlock_initially_empty(storage_non_convex_0)_: = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_0_1)_: --0.97 flow(electricityBus_storage_non_convex_0_1) -+1.1627906976744187 flow(storage_non_convex_electricityBus_0_1) +-0.97 flow(electricityBus_storage_non_convex_1) ++1.1627906976744187 flow(storage_non_convex_electricityBus_1) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_1_2)_: --0.97 flow(electricityBus_storage_non_convex_1_2) -+1.1627906976744187 flow(storage_non_convex_electricityBus_1_2) +-0.97 flow(electricityBus_storage_non_convex_2) ++1.1627906976744187 flow(storage_non_convex_electricityBus_2) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_1_3)_: --0.97 flow(electricityBus_storage_non_convex_1_3) -+1.1627906976744187 flow(storage_non_convex_electricityBus_1_3) +-0.97 flow(electricityBus_storage_non_convex_3) ++1.1627906976744187 flow(storage_non_convex_electricityBus_3) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_2_4)_: --0.97 flow(electricityBus_storage_non_convex_2_4) -+1.1627906976744187 flow(storage_non_convex_electricityBus_2_4) +-0.97 flow(electricityBus_storage_non_convex_4) ++1.1627906976744187 flow(storage_non_convex_electricityBus_4) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_2_5)_: --0.97 flow(electricityBus_storage_non_convex_2_5) -+1.1627906976744187 flow(storage_non_convex_electricityBus_2_5) +-0.97 flow(electricityBus_storage_non_convex_5) ++1.1627906976744187 flow(storage_non_convex_electricityBus_5) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) = 0 @@ -456,58 +456,59 @@ c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_2)_: >= 0 bounds - 0 <= flow(electricityBus_storage_non_convex_0_0) <= +inf - 0 <= flow(electricityBus_storage_non_convex_0_1) <= +inf - 0 <= flow(electricityBus_storage_non_convex_1_2) <= +inf - 0 <= flow(electricityBus_storage_non_convex_1_3) <= +inf - 0 <= flow(electricityBus_storage_non_convex_2_4) <= +inf - 0 <= flow(electricityBus_storage_non_convex_2_5) <= +inf - 0 <= flow(storage_non_convex_electricityBus_0_0) <= +inf - 0 <= flow(storage_non_convex_electricityBus_0_1) <= +inf - 0 <= flow(storage_non_convex_electricityBus_1_2) <= +inf - 0 <= flow(storage_non_convex_electricityBus_1_3) <= +inf - 0 <= flow(storage_non_convex_electricityBus_2_4) <= +inf - 0 <= flow(storage_non_convex_electricityBus_2_5) <= +inf + 0 <= flow(electricityBus_storage_non_convex_0) <= +inf + 0 <= flow(electricityBus_storage_non_convex_1) <= +inf + 0 <= flow(electricityBus_storage_non_convex_2) <= +inf + 0 <= flow(electricityBus_storage_non_convex_3) <= +inf + 0 <= flow(electricityBus_storage_non_convex_4) <= +inf + 0 <= flow(electricityBus_storage_non_convex_5) <= +inf + 0 <= flow(storage_non_convex_electricityBus_0) <= +inf + 0 <= flow(storage_non_convex_electricityBus_1) <= +inf + 0 <= flow(storage_non_convex_electricityBus_2) <= +inf + 0 <= flow(storage_non_convex_electricityBus_3) <= +inf + 0 <= flow(storage_non_convex_electricityBus_4) <= +inf + 0 <= flow(storage_non_convex_electricityBus_5) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage_non_convex_0) <= 1454 - 0 <= GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) <= 1 0 <= GenericInvestmentStorageBlock_invest(storage_non_convex_1) <= 1454 - 0 <= GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) <= 1 0 <= GenericInvestmentStorageBlock_invest(storage_non_convex_2) <= 1454 + 0 <= GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) <= 1 + 0 <= GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) <= 1 0 <= GenericInvestmentStorageBlock_invest_status(storage_non_convex_2) <= 1 + 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= +inf + 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) <= +inf + 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) <= +inf 0 <= InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_0) <= +inf - 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_1) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_1) <= +inf - 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_2) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_0) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_1) <= +inf 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_0) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_1) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_2) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_2) <= +inf - 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_0) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_2) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_non_convex_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_1) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_non_convex_2) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_0) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_1) <= +inf 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_2) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_1) <= +inf @@ -515,7 +516,6 @@ bounds 0 <= GenericInvestmentStorageBlock_old_exo(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage_non_convex_1) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage_non_convex_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) <= +inf diff --git a/tests/lp_files/storage_invest_without_offset.lp b/tests/lp_files/storage_invest_without_offset.lp index 248ce6848..8b7eb5244 100644 --- a/tests/lp_files/storage_invest_without_offset.lp +++ b/tests/lp_files/storage_invest_without_offset.lp @@ -2,34 +2,29 @@ min objective: -+56 flow(electricityBus_storage_non_convex_0_0) -+56 flow(electricityBus_storage_non_convex_0_1) -+56 flow(electricityBus_storage_non_convex_0_2) -+24 flow(storage_non_convex_electricityBus_0_0) -+24 flow(storage_non_convex_electricityBus_0_1) -+24 flow(storage_non_convex_electricityBus_0_2) ++56 flow(electricityBus_storage_non_convex_0) ++56 flow(electricityBus_storage_non_convex_1) ++56 flow(electricityBus_storage_non_convex_2) ++24 flow(storage_non_convex_electricityBus_0) ++24 flow(storage_non_convex_electricityBus_1) ++24 flow(storage_non_convex_electricityBus_2) +141 GenericInvestmentStorageBlock_invest(storage_non_convex_0) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_storage_non_convex_0_0) -+1 flow(storage_non_convex_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage_non_convex_0) ++1 flow(storage_non_convex_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_non_convex_0_1) -+1 flow(storage_non_convex_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage_non_convex_1) ++1 flow(storage_non_convex_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: --1 flow(electricityBus_storage_non_convex_0_2) -+1 flow(storage_non_convex_electricityBus_0_2) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage_non_convex_electricityBus_0)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) --1 InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage_non_convex_2) ++1 flow(storage_non_convex_electricityBus_2) = 0 c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_0)_: @@ -37,36 +32,41 @@ c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_0)_: -1 InvestmentFlowBlock_invest(electricityBus_storage_non_convex_0) = 0 -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_0)_: -+1 flow(storage_non_convex_electricityBus_0_0) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_1)_: -+1 flow(storage_non_convex_electricityBus_0_1) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_2)_: -+1 flow(storage_non_convex_electricityBus_0_2) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) -<= 0 +c_e_InvestmentFlowBlock_total_rule(storage_non_convex_electricityBus_0)_: ++1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) +-1 InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) += 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_0)_: -+1 flow(electricityBus_storage_non_convex_0_0) ++1 flow(electricityBus_storage_non_convex_0) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_1)_: -+1 flow(electricityBus_storage_non_convex_0_1) ++1 flow(electricityBus_storage_non_convex_1) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_2)_: -+1 flow(electricityBus_storage_non_convex_0_2) ++1 flow(electricityBus_storage_non_convex_2) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= 0 +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_0)_: ++1 flow(storage_non_convex_electricityBus_0) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_1)_: ++1 flow(storage_non_convex_electricityBus_1) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_2)_: ++1 flow(storage_non_convex_electricityBus_2) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) +<= 0 + c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_non_convex_0)_: -1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) +1 GenericInvestmentStorageBlock_total(storage_non_convex_0) @@ -78,22 +78,22 @@ c_u_GenericInvestmentStorageBlock_init_content_limit(storage_non_convex)_: <= 0 c_e_GenericInvestmentStorageBlock_balance_first(storage_non_convex)_: --0.97 flow(electricityBus_storage_non_convex_0_0) -+1.1627906976744187 flow(storage_non_convex_electricityBus_0_0) +-0.97 flow(electricityBus_storage_non_convex_0) ++1.1627906976744187 flow(storage_non_convex_electricityBus_0) -0.87 GenericInvestmentStorageBlock_init_content(storage_non_convex) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_0_1)_: --0.97 flow(electricityBus_storage_non_convex_0_1) -+1.1627906976744187 flow(storage_non_convex_electricityBus_0_1) +-0.97 flow(electricityBus_storage_non_convex_1) ++1.1627906976744187 flow(storage_non_convex_electricityBus_1) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_0_2)_: --0.97 flow(electricityBus_storage_non_convex_0_2) -+1.1627906976744187 flow(storage_non_convex_electricityBus_0_2) +-0.97 flow(electricityBus_storage_non_convex_2) ++1.1627906976744187 flow(storage_non_convex_electricityBus_2) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) = 0 @@ -154,17 +154,17 @@ c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_0)_: >= 0 bounds - 0 <= flow(electricityBus_storage_non_convex_0_0) <= +inf - 0 <= flow(electricityBus_storage_non_convex_0_1) <= +inf - 0 <= flow(electricityBus_storage_non_convex_0_2) <= +inf - 0 <= flow(storage_non_convex_electricityBus_0_0) <= +inf - 0 <= flow(storage_non_convex_electricityBus_0_1) <= +inf - 0 <= flow(storage_non_convex_electricityBus_0_2) <= +inf + 0 <= flow(electricityBus_storage_non_convex_0) <= +inf + 0 <= flow(electricityBus_storage_non_convex_1) <= +inf + 0 <= flow(electricityBus_storage_non_convex_2) <= +inf + 0 <= flow(storage_non_convex_electricityBus_0) <= +inf + 0 <= flow(storage_non_convex_electricityBus_1) <= +inf + 0 <= flow(storage_non_convex_electricityBus_2) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage_non_convex_0) <= 244 - 0 <= InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= +inf + 0 <= InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_0) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_init_content(storage_non_convex) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) <= +inf diff --git a/tests/lp_files/storage_invest_without_offset_multi_period.lp b/tests/lp_files/storage_invest_without_offset_multi_period.lp index f4a182548..f102db068 100644 --- a/tests/lp_files/storage_invest_without_offset_multi_period.lp +++ b/tests/lp_files/storage_invest_without_offset_multi_period.lp @@ -2,52 +2,52 @@ min objective: -+56 flow(electricityBus_storage_non_convex_0_0) -+56 flow(electricityBus_storage_non_convex_0_1) -+54.90196078431372 flow(electricityBus_storage_non_convex_1_2) -+54.90196078431372 flow(electricityBus_storage_non_convex_1_3) -+53.82545174932718 flow(electricityBus_storage_non_convex_2_4) -+53.82545174932718 flow(electricityBus_storage_non_convex_2_5) -+24 flow(storage_non_convex_electricityBus_0_0) -+24 flow(storage_non_convex_electricityBus_0_1) -+23.52941176470588 flow(storage_non_convex_electricityBus_1_2) -+23.52941176470588 flow(storage_non_convex_electricityBus_1_3) -+23.06805074971165 flow(storage_non_convex_electricityBus_2_4) -+23.06805074971165 flow(storage_non_convex_electricityBus_2_5) ++56 flow(electricityBus_storage_non_convex_0) ++56 flow(electricityBus_storage_non_convex_1) ++54.90196078431372 flow(electricityBus_storage_non_convex_2) ++54.90196078431372 flow(electricityBus_storage_non_convex_3) ++53.82545174932718 flow(electricityBus_storage_non_convex_4) ++53.82545174932718 flow(electricityBus_storage_non_convex_5) ++24 flow(storage_non_convex_electricityBus_0) ++24 flow(storage_non_convex_electricityBus_1) ++23.52941176470588 flow(storage_non_convex_electricityBus_2) ++23.52941176470588 flow(storage_non_convex_electricityBus_3) ++23.06805074971165 flow(storage_non_convex_electricityBus_4) ++23.06805074971165 flow(storage_non_convex_electricityBus_5) +24.868005934029988 GenericInvestmentStorageBlock_invest(storage_non_convex_0) +16.413989016710378 GenericInvestmentStorageBlock_invest(storage_non_convex_1) +8.125737136985347 GenericInvestmentStorageBlock_invest(storage_non_convex_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_storage_non_convex_0_0) -+1 flow(storage_non_convex_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage_non_convex_0) ++1 flow(storage_non_convex_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_non_convex_0_1) -+1 flow(storage_non_convex_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage_non_convex_1) ++1 flow(storage_non_convex_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_storage_non_convex_1_2) -+1 flow(storage_non_convex_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage_non_convex_2) ++1 flow(storage_non_convex_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_storage_non_convex_1_3) -+1 flow(storage_non_convex_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_storage_non_convex_3) ++1 flow(storage_non_convex_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_storage_non_convex_2_4) -+1 flow(storage_non_convex_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_storage_non_convex_4) ++1 flow(storage_non_convex_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: --1 flow(electricityBus_storage_non_convex_2_5) -+1 flow(storage_non_convex_electricityBus_2_5) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_storage_non_convex_5) ++1 flow(storage_non_convex_electricityBus_5) = 0 c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_0)_: @@ -137,9 +137,9 @@ c_e_InvestmentFlowBlock_old_rule_exo(storage_non_convex_electricityBus_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage_non_convex_0)_: ++1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_0) -1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_0) -1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_0) -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_0) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage_non_convex_1)_: @@ -155,9 +155,9 @@ c_e_InvestmentFlowBlock_old_rule(electricityBus_storage_non_convex_2)_: = 0 c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_0)_: ++1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_0) -1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_0) -1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_0) -+1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_0) = 0 c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_1)_: @@ -173,62 +173,62 @@ c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_2)_: = 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_0)_: -+1 flow(electricityBus_storage_non_convex_0_0) ++1 flow(electricityBus_storage_non_convex_0) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_1)_: -+1 flow(electricityBus_storage_non_convex_0_1) ++1 flow(electricityBus_storage_non_convex_1) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_1_2)_: -+1 flow(electricityBus_storage_non_convex_1_2) ++1 flow(electricityBus_storage_non_convex_2) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_1_3)_: -+1 flow(electricityBus_storage_non_convex_1_3) ++1 flow(electricityBus_storage_non_convex_3) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_2_4)_: -+1 flow(electricityBus_storage_non_convex_2_4) ++1 flow(electricityBus_storage_non_convex_4) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_2_5)_: -+1 flow(electricityBus_storage_non_convex_2_5) ++1 flow(electricityBus_storage_non_convex_5) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) <= 0 c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_0)_: -+1 flow(storage_non_convex_electricityBus_0_0) ++1 flow(storage_non_convex_electricityBus_0) -1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_1)_: -+1 flow(storage_non_convex_electricityBus_0_1) ++1 flow(storage_non_convex_electricityBus_1) -1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) <= 0 c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_1_2)_: -+1 flow(storage_non_convex_electricityBus_1_2) ++1 flow(storage_non_convex_electricityBus_2) -1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_1_3)_: -+1 flow(storage_non_convex_electricityBus_1_3) ++1 flow(storage_non_convex_electricityBus_3) -1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) <= 0 c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_2_4)_: -+1 flow(storage_non_convex_electricityBus_2_4) ++1 flow(storage_non_convex_electricityBus_4) -1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) <= 0 c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_2_5)_: -+1 flow(storage_non_convex_electricityBus_2_5) ++1 flow(storage_non_convex_electricityBus_5) -1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) <= 0 @@ -276,9 +276,9 @@ c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_non_convex_2)_: = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage_non_convex_0)_: ++1 GenericInvestmentStorageBlock_old(storage_non_convex_0) -1 GenericInvestmentStorageBlock_old_end(storage_non_convex_0) -1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_old(storage_non_convex_0) = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage_non_convex_1)_: @@ -298,36 +298,36 @@ c_e_GenericInvestmentStorageBlock_initially_empty(storage_non_convex_0)_: = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_0_1)_: --0.97 flow(electricityBus_storage_non_convex_0_1) -+1.1627906976744187 flow(storage_non_convex_electricityBus_0_1) +-0.97 flow(electricityBus_storage_non_convex_1) ++1.1627906976744187 flow(storage_non_convex_electricityBus_1) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_1_2)_: --0.97 flow(electricityBus_storage_non_convex_1_2) -+1.1627906976744187 flow(storage_non_convex_electricityBus_1_2) +-0.97 flow(electricityBus_storage_non_convex_2) ++1.1627906976744187 flow(storage_non_convex_electricityBus_2) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_1_3)_: --0.97 flow(electricityBus_storage_non_convex_1_3) -+1.1627906976744187 flow(storage_non_convex_electricityBus_1_3) +-0.97 flow(electricityBus_storage_non_convex_3) ++1.1627906976744187 flow(storage_non_convex_electricityBus_3) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_2_4)_: --0.97 flow(electricityBus_storage_non_convex_2_4) -+1.1627906976744187 flow(storage_non_convex_electricityBus_2_4) +-0.97 flow(electricityBus_storage_non_convex_4) ++1.1627906976744187 flow(storage_non_convex_electricityBus_4) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_2_5)_: --0.97 flow(electricityBus_storage_non_convex_2_5) -+1.1627906976744187 flow(storage_non_convex_electricityBus_2_5) +-0.97 flow(electricityBus_storage_non_convex_5) ++1.1627906976744187 flow(storage_non_convex_electricityBus_5) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) = 0 @@ -453,36 +453,38 @@ c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_2)_: >= 0 bounds - 0 <= flow(electricityBus_storage_non_convex_0_0) <= +inf - 0 <= flow(electricityBus_storage_non_convex_0_1) <= +inf - 0 <= flow(electricityBus_storage_non_convex_1_2) <= +inf - 0 <= flow(electricityBus_storage_non_convex_1_3) <= +inf - 0 <= flow(electricityBus_storage_non_convex_2_4) <= +inf - 0 <= flow(electricityBus_storage_non_convex_2_5) <= +inf - 0 <= flow(storage_non_convex_electricityBus_0_0) <= +inf - 0 <= flow(storage_non_convex_electricityBus_0_1) <= +inf - 0 <= flow(storage_non_convex_electricityBus_1_2) <= +inf - 0 <= flow(storage_non_convex_electricityBus_1_3) <= +inf - 0 <= flow(storage_non_convex_electricityBus_2_4) <= +inf - 0 <= flow(storage_non_convex_electricityBus_2_5) <= +inf + 0 <= flow(electricityBus_storage_non_convex_0) <= +inf + 0 <= flow(electricityBus_storage_non_convex_1) <= +inf + 0 <= flow(electricityBus_storage_non_convex_2) <= +inf + 0 <= flow(electricityBus_storage_non_convex_3) <= +inf + 0 <= flow(electricityBus_storage_non_convex_4) <= +inf + 0 <= flow(electricityBus_storage_non_convex_5) <= +inf + 0 <= flow(storage_non_convex_electricityBus_0) <= +inf + 0 <= flow(storage_non_convex_electricityBus_1) <= +inf + 0 <= flow(storage_non_convex_electricityBus_2) <= +inf + 0 <= flow(storage_non_convex_electricityBus_3) <= +inf + 0 <= flow(storage_non_convex_electricityBus_4) <= +inf + 0 <= flow(storage_non_convex_electricityBus_5) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage_non_convex_0) <= 244 0 <= GenericInvestmentStorageBlock_invest(storage_non_convex_1) <= 244 0 <= GenericInvestmentStorageBlock_invest(storage_non_convex_2) <= 244 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= +inf - 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_0) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) <= +inf - 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_1) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_1) <= +inf 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) <= +inf - 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_2) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_2) <= +inf 0 <= InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_0) <= +inf + 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_1) <= +inf + 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_2) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_0) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_1) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_2) <= +inf + 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_0) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_1) <= +inf @@ -496,12 +498,11 @@ bounds 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_0) <= +inf - 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_non_convex_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_1) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_non_convex_2) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_0) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_1) <= +inf 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_2) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_1) <= +inf @@ -509,7 +510,6 @@ bounds 0 <= GenericInvestmentStorageBlock_old_exo(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage_non_convex_1) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage_non_convex_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) <= +inf diff --git a/tests/lp_files/storage_invest_without_offset_multi_period_remaining_value.lp b/tests/lp_files/storage_invest_without_offset_multi_period_remaining_value.lp index 179c59847..f102db068 100644 --- a/tests/lp_files/storage_invest_without_offset_multi_period_remaining_value.lp +++ b/tests/lp_files/storage_invest_without_offset_multi_period_remaining_value.lp @@ -2,71 +2,52 @@ min objective: -+56 flow(electricityBus_storage_non_convex_0_0) -+56 flow(electricityBus_storage_non_convex_0_1) -+54.90196078431372 flow(electricityBus_storage_non_convex_1_2) -+54.90196078431372 flow(electricityBus_storage_non_convex_1_3) -+53.82545174932718 flow(electricityBus_storage_non_convex_2_4) -+53.82545174932718 flow(electricityBus_storage_non_convex_2_5) -+24 flow(storage_non_convex_electricityBus_0_0) -+24 flow(storage_non_convex_electricityBus_0_1) -+23.52941176470588 flow(storage_non_convex_electricityBus_1_2) -+23.52941176470588 flow(storage_non_convex_electricityBus_1_3) -+23.06805074971165 flow(storage_non_convex_electricityBus_2_4) -+23.06805074971165 flow(storage_non_convex_electricityBus_2_5) ++56 flow(electricityBus_storage_non_convex_0) ++56 flow(electricityBus_storage_non_convex_1) ++54.90196078431372 flow(electricityBus_storage_non_convex_2) ++54.90196078431372 flow(electricityBus_storage_non_convex_3) ++53.82545174932718 flow(electricityBus_storage_non_convex_4) ++53.82545174932718 flow(electricityBus_storage_non_convex_5) ++24 flow(storage_non_convex_electricityBus_0) ++24 flow(storage_non_convex_electricityBus_1) ++23.52941176470588 flow(storage_non_convex_electricityBus_2) ++23.52941176470588 flow(storage_non_convex_electricityBus_3) ++23.06805074971165 flow(storage_non_convex_electricityBus_4) ++23.06805074971165 flow(storage_non_convex_electricityBus_5) +24.868005934029988 GenericInvestmentStorageBlock_invest(storage_non_convex_0) +16.413989016710378 GenericInvestmentStorageBlock_invest(storage_non_convex_1) +8.125737136985347 GenericInvestmentStorageBlock_invest(storage_non_convex_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_storage_non_convex_0_0) -+1 flow(storage_non_convex_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage_non_convex_0) ++1 flow(storage_non_convex_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_non_convex_0_1) -+1 flow(storage_non_convex_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage_non_convex_1) ++1 flow(storage_non_convex_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_storage_non_convex_1_2) -+1 flow(storage_non_convex_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage_non_convex_2) ++1 flow(storage_non_convex_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_storage_non_convex_1_3) -+1 flow(storage_non_convex_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_storage_non_convex_3) ++1 flow(storage_non_convex_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_storage_non_convex_2_4) -+1 flow(storage_non_convex_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_storage_non_convex_4) ++1 flow(storage_non_convex_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: --1 flow(electricityBus_storage_non_convex_2_5) -+1 flow(storage_non_convex_electricityBus_2_5) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage_non_convex_electricityBus_0)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) --1 InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage_non_convex_electricityBus_1)_: --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) --1 InvestmentFlowBlock_invest(storage_non_convex_electricityBus_1) -+1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage_non_convex_electricityBus_2)_: --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) --1 InvestmentFlowBlock_invest(storage_non_convex_electricityBus_2) -+1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_2) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_storage_non_convex_5) ++1 flow(storage_non_convex_electricityBus_5) = 0 c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_0)_: @@ -88,16 +69,23 @@ c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_2)_: +1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_2) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage_non_convex_electricityBus_0)_: -+1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_0) +c_e_InvestmentFlowBlock_total_rule(storage_non_convex_electricityBus_0)_: ++1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) +-1 InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage_non_convex_electricityBus_1)_: -+1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_1) +c_e_InvestmentFlowBlock_total_rule(storage_non_convex_electricityBus_1)_: +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) ++1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) +-1 InvestmentFlowBlock_invest(storage_non_convex_electricityBus_1) ++1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_1) = 0 -c_e_InvestmentFlowBlock_old_rule_end(storage_non_convex_electricityBus_2)_: -+1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_2) +c_e_InvestmentFlowBlock_total_rule(storage_non_convex_electricityBus_2)_: +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) ++1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) +-1 InvestmentFlowBlock_invest(storage_non_convex_electricityBus_2) ++1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_2) = 0 c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage_non_convex_0)_: @@ -112,16 +100,16 @@ c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage_non_convex_2)_: +1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_2) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage_non_convex_electricityBus_0)_: -+1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_0) +c_e_InvestmentFlowBlock_old_rule_end(storage_non_convex_electricityBus_0)_: ++1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_0) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage_non_convex_electricityBus_1)_: -+1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_1) +c_e_InvestmentFlowBlock_old_rule_end(storage_non_convex_electricityBus_1)_: ++1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_1) = 0 -c_e_InvestmentFlowBlock_old_rule_exo(storage_non_convex_electricityBus_2)_: -+1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_2) +c_e_InvestmentFlowBlock_old_rule_end(storage_non_convex_electricityBus_2)_: ++1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_2) = 0 c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage_non_convex_0)_: @@ -136,28 +124,22 @@ c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage_non_convex_2)_: +1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_2) = 0 -c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_0)_: --1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_0) --1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_0) -+1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_0) +c_e_InvestmentFlowBlock_old_rule_exo(storage_non_convex_electricityBus_0)_: ++1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_0) = 0 -c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_1)_: -+1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_1) --1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_1) --1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_1) +c_e_InvestmentFlowBlock_old_rule_exo(storage_non_convex_electricityBus_1)_: ++1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_1) = 0 -c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_2)_: -+1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_2) --1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_2) --1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_2) +c_e_InvestmentFlowBlock_old_rule_exo(storage_non_convex_electricityBus_2)_: ++1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_2) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage_non_convex_0)_: ++1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_0) -1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_0) -1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_0) -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_0) = 0 c_e_InvestmentFlowBlock_old_rule(electricityBus_storage_non_convex_1)_: @@ -172,66 +154,84 @@ c_e_InvestmentFlowBlock_old_rule(electricityBus_storage_non_convex_2)_: -1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_2) = 0 -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_0)_: -+1 flow(storage_non_convex_electricityBus_0_0) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_1)_: -+1 flow(storage_non_convex_electricityBus_0_1) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_1_2)_: -+1 flow(storage_non_convex_electricityBus_1_2) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_1_3)_: -+1 flow(storage_non_convex_electricityBus_1_3) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) -<= 0 +c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_0)_: ++1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_0) +-1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_0) +-1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_0) += 0 -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_2_4)_: -+1 flow(storage_non_convex_electricityBus_2_4) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) -<= 0 +c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_1)_: ++1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_1) +-1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_1) +-1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_1) += 0 -c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_2_5)_: -+1 flow(storage_non_convex_electricityBus_2_5) --1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) -<= 0 +c_e_InvestmentFlowBlock_old_rule(storage_non_convex_electricityBus_2)_: ++1 InvestmentFlowBlock_old(storage_non_convex_electricityBus_2) +-1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_2) +-1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_2) += 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_0)_: -+1 flow(electricityBus_storage_non_convex_0_0) ++1 flow(electricityBus_storage_non_convex_0) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_1)_: -+1 flow(electricityBus_storage_non_convex_0_1) ++1 flow(electricityBus_storage_non_convex_1) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_1_2)_: -+1 flow(electricityBus_storage_non_convex_1_2) ++1 flow(electricityBus_storage_non_convex_2) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_1_3)_: -+1 flow(electricityBus_storage_non_convex_1_3) ++1 flow(electricityBus_storage_non_convex_3) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_2_4)_: -+1 flow(electricityBus_storage_non_convex_2_4) ++1 flow(electricityBus_storage_non_convex_4) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) <= 0 c_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_2_5)_: -+1 flow(electricityBus_storage_non_convex_2_5) ++1 flow(electricityBus_storage_non_convex_5) -1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) <= 0 +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_0)_: ++1 flow(storage_non_convex_electricityBus_0) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_0_1)_: ++1 flow(storage_non_convex_electricityBus_1) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_1_2)_: ++1 flow(storage_non_convex_electricityBus_2) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_1_3)_: ++1 flow(storage_non_convex_electricityBus_3) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_2_4)_: ++1 flow(storage_non_convex_electricityBus_4) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) +<= 0 + +c_u_InvestmentFlowBlock_max(storage_non_convex_electricityBus_2_5)_: ++1 flow(storage_non_convex_electricityBus_5) +-1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) +<= 0 + c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_non_convex_0)_: -1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) +1 GenericInvestmentStorageBlock_total(storage_non_convex_0) @@ -276,9 +276,9 @@ c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_non_convex_2)_: = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage_non_convex_0)_: ++1 GenericInvestmentStorageBlock_old(storage_non_convex_0) -1 GenericInvestmentStorageBlock_old_end(storage_non_convex_0) -1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_old(storage_non_convex_0) = 0 c_e_GenericInvestmentStorageBlock_old_rule(storage_non_convex_1)_: @@ -298,36 +298,36 @@ c_e_GenericInvestmentStorageBlock_initially_empty(storage_non_convex_0)_: = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_0_1)_: --0.97 flow(electricityBus_storage_non_convex_0_1) -+1.1627906976744187 flow(storage_non_convex_electricityBus_0_1) +-0.97 flow(electricityBus_storage_non_convex_1) ++1.1627906976744187 flow(storage_non_convex_electricityBus_1) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_1_2)_: --0.97 flow(electricityBus_storage_non_convex_1_2) -+1.1627906976744187 flow(storage_non_convex_electricityBus_1_2) +-0.97 flow(electricityBus_storage_non_convex_2) ++1.1627906976744187 flow(storage_non_convex_electricityBus_2) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_1_3)_: --0.97 flow(electricityBus_storage_non_convex_1_3) -+1.1627906976744187 flow(storage_non_convex_electricityBus_1_3) +-0.97 flow(electricityBus_storage_non_convex_3) ++1.1627906976744187 flow(storage_non_convex_electricityBus_3) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_2_4)_: --0.97 flow(electricityBus_storage_non_convex_2_4) -+1.1627906976744187 flow(storage_non_convex_electricityBus_2_4) +-0.97 flow(electricityBus_storage_non_convex_4) ++1.1627906976744187 flow(storage_non_convex_electricityBus_4) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) = 0 c_e_GenericInvestmentStorageBlock_balance(storage_non_convex_2_5)_: --0.97 flow(electricityBus_storage_non_convex_2_5) -+1.1627906976744187 flow(storage_non_convex_electricityBus_2_5) +-0.97 flow(electricityBus_storage_non_convex_5) ++1.1627906976744187 flow(storage_non_convex_electricityBus_5) -0.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) +1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) = 0 @@ -453,55 +453,56 @@ c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_2)_: >= 0 bounds - 0 <= flow(electricityBus_storage_non_convex_0_0) <= +inf - 0 <= flow(electricityBus_storage_non_convex_0_1) <= +inf - 0 <= flow(electricityBus_storage_non_convex_1_2) <= +inf - 0 <= flow(electricityBus_storage_non_convex_1_3) <= +inf - 0 <= flow(electricityBus_storage_non_convex_2_4) <= +inf - 0 <= flow(electricityBus_storage_non_convex_2_5) <= +inf - 0 <= flow(storage_non_convex_electricityBus_0_0) <= +inf - 0 <= flow(storage_non_convex_electricityBus_0_1) <= +inf - 0 <= flow(storage_non_convex_electricityBus_1_2) <= +inf - 0 <= flow(storage_non_convex_electricityBus_1_3) <= +inf - 0 <= flow(storage_non_convex_electricityBus_2_4) <= +inf - 0 <= flow(storage_non_convex_electricityBus_2_5) <= +inf + 0 <= flow(electricityBus_storage_non_convex_0) <= +inf + 0 <= flow(electricityBus_storage_non_convex_1) <= +inf + 0 <= flow(electricityBus_storage_non_convex_2) <= +inf + 0 <= flow(electricityBus_storage_non_convex_3) <= +inf + 0 <= flow(electricityBus_storage_non_convex_4) <= +inf + 0 <= flow(electricityBus_storage_non_convex_5) <= +inf + 0 <= flow(storage_non_convex_electricityBus_0) <= +inf + 0 <= flow(storage_non_convex_electricityBus_1) <= +inf + 0 <= flow(storage_non_convex_electricityBus_2) <= +inf + 0 <= flow(storage_non_convex_electricityBus_3) <= +inf + 0 <= flow(storage_non_convex_electricityBus_4) <= +inf + 0 <= flow(storage_non_convex_electricityBus_5) <= +inf 0 <= GenericInvestmentStorageBlock_invest(storage_non_convex_0) <= 244 0 <= GenericInvestmentStorageBlock_invest(storage_non_convex_1) <= 244 0 <= GenericInvestmentStorageBlock_invest(storage_non_convex_2) <= 244 + 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= +inf + 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) <= +inf + 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) <= +inf 0 <= InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) <= +inf 0 <= InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_1) <= +inf 0 <= InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_0) <= +inf - 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_1) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_1) <= +inf - 0 <= InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) <= +inf 0 <= InvestmentFlowBlock_invest(electricityBus_storage_non_convex_2) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_invest(storage_non_convex_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_0) <= +inf + 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_1) <= +inf 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_0) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_1) <= +inf 0 <= InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_2) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_2) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_2) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_0) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_1) <= +inf 0 <= InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_2) <= +inf - 0 <= InvestmentFlowBlock_old(storage_non_convex_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old(electricityBus_storage_non_convex_0) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_0) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_1) <= +inf + 0 <= InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_2) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_non_convex_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_1) <= +inf 0 <= GenericInvestmentStorageBlock_total(storage_non_convex_2) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_0) <= +inf + 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_1) <= +inf 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_2) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_1) <= +inf @@ -509,7 +510,6 @@ bounds 0 <= GenericInvestmentStorageBlock_old_exo(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage_non_convex_1) <= +inf 0 <= GenericInvestmentStorageBlock_old_exo(storage_non_convex_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) <= +inf 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) <= +inf diff --git a/tests/lp_files/storage_level_constraint.lp b/tests/lp_files/storage_level_constraint.lp index e64ec8e92..c0b329c20 100644 --- a/tests/lp_files/storage_level_constraint.lp +++ b/tests/lp_files/storage_level_constraint.lp @@ -22,13 +22,13 @@ c_u_multiplexer_output_active_constraint(out_0_1)_: <= 0 c_u_multiplexer_output_active_constraint(out_1_0)_: --0.25 GenericStorageBlock_storage_content(storage_1) +0.5 multiplexer_active_output(out_1_0) +-0.25 GenericStorageBlock_storage_content(storage_1) <= 0 c_u_multiplexer_output_active_constraint(out_1_1)_: --0.25 GenericStorageBlock_storage_content(storage_2) +0.5 multiplexer_active_output(out_1_1) +-0.25 GenericStorageBlock_storage_content(storage_2) <= 0 c_u_multiplexer_output_constraint(out_0_0_0)_: @@ -61,44 +61,44 @@ c_u_multiplexer_input_active_constraint(in_1_1)_: <= 0.25 c_u_multiplexer_input_constraint(in_1_0_0)_: -+1 multiplexer_active_input(in_1_0) +8.0 flow(in_1_multiplexer_0_0) ++1 multiplexer_active_input(in_1_0) <= 1 c_u_multiplexer_input_constraint(in_1_0_1)_: -+1 multiplexer_active_input(in_1_1) +8.0 flow(in_1_multiplexer_0_1) ++1 multiplexer_active_input(in_1_1) <= 1 c_e_BusBlock_balance(multiplexer_0_0)_: +-1 flow(multiplexer_storage_0_0) -1 flow(multiplexer_out_0_0_0) -1 flow(multiplexer_out_1_0_0) ++1 flow(storage_multiplexer_0_0) +1 flow(in_0_multiplexer_0_0) +1 flow(in_1_multiplexer_0_0) -+1 flow(storage_multiplexer_0_0) --1 flow(multiplexer_storage_0_0) = 0 c_e_BusBlock_balance(multiplexer_0_1)_: +-1 flow(multiplexer_storage_0_1) -1 flow(multiplexer_out_0_0_1) -1 flow(multiplexer_out_1_0_1) ++1 flow(storage_multiplexer_0_1) +1 flow(in_0_multiplexer_0_1) +1 flow(in_1_multiplexer_0_1) -+1 flow(storage_multiplexer_0_1) --1 flow(multiplexer_storage_0_1) = 0 c_e_GenericStorageBlock_balance(storage_0_0)_: -+1 GenericStorageBlock_storage_content(storage_1) -+1 flow(storage_multiplexer_0_0) -1 flow(multiplexer_storage_0_0) ++1 flow(storage_multiplexer_0_0) ++1 GenericStorageBlock_storage_content(storage_1) = 3.0 c_e_GenericStorageBlock_balance(storage_0_1)_: +-1 flow(multiplexer_storage_0_1) ++1 flow(storage_multiplexer_0_1) -0.75 GenericStorageBlock_storage_content(storage_1) +1 GenericStorageBlock_storage_content(storage_2) -+1 flow(storage_multiplexer_0_1) --1 flow(multiplexer_storage_0_1) = 0 c_e_GenericStorageBlock_balanced_cstr(storage)_: @@ -106,26 +106,26 @@ c_e_GenericStorageBlock_balanced_cstr(storage)_: = 4 bounds + 0 <= flow(multiplexer_storage_0_0) <= +inf + 0 <= flow(multiplexer_storage_0_1) <= +inf 0.0 <= flow(multiplexer_out_0_0_0) <= 0.25 0.0 <= flow(multiplexer_out_0_0_1) <= 0.25 0.0 <= flow(multiplexer_out_1_0_0) <= 0.125 0.0 <= flow(multiplexer_out_1_0_1) <= 0.125 + 0 <= flow(storage_multiplexer_0_0) <= +inf + 0 <= flow(storage_multiplexer_0_1) <= +inf 0.0 <= flow(in_0_multiplexer_0_0) <= 0.5 0.0 <= flow(in_0_multiplexer_0_1) <= 0.5 + 0.0 <= flow(in_1_multiplexer_0_0) <= 0.125 + 0.0 <= flow(in_1_multiplexer_0_1) <= 0.125 0 <= multiplexer_active_output(out_0_0) <= 1 - 0 <= GenericStorageBlock_storage_content(storage_1) <= 4 0 <= multiplexer_active_output(out_0_1) <= 1 - 0 <= GenericStorageBlock_storage_content(storage_2) <= 4 0 <= multiplexer_active_output(out_1_0) <= 1 0 <= multiplexer_active_output(out_1_1) <= 1 + 0 <= GenericStorageBlock_storage_content(storage_1) <= 4 + 0 <= GenericStorageBlock_storage_content(storage_2) <= 4 0 <= multiplexer_active_input(in_1_0) <= 1 0 <= multiplexer_active_input(in_1_1) <= 1 - 0.0 <= flow(in_1_multiplexer_0_0) <= 0.125 - 0.0 <= flow(in_1_multiplexer_0_1) <= 0.125 - 0 <= flow(storage_multiplexer_0_0) <= +inf - 0 <= flow(multiplexer_storage_0_0) <= +inf - 0 <= flow(storage_multiplexer_0_1) <= +inf - 0 <= flow(multiplexer_storage_0_1) <= +inf binary multiplexer_active_output(out_0_0) multiplexer_active_output(out_0_1) diff --git a/tests/lp_files/storage_multi_period.lp b/tests/lp_files/storage_multi_period.lp index 8fc170517..616934715 100644 --- a/tests/lp_files/storage_multi_period.lp +++ b/tests/lp_files/storage_multi_period.lp @@ -2,88 +2,88 @@ min objective: -+56 flow(electricityBus_storage_no_invest_0_0) -+56 flow(electricityBus_storage_no_invest_0_1) -+54.90196078431372 flow(electricityBus_storage_no_invest_1_2) -+54.90196078431372 flow(electricityBus_storage_no_invest_1_3) -+53.82545174932718 flow(electricityBus_storage_no_invest_2_4) -+53.82545174932718 flow(electricityBus_storage_no_invest_2_5) -+24 flow(storage_no_invest_electricityBus_0_0) -+24 flow(storage_no_invest_electricityBus_0_1) -+23.52941176470588 flow(storage_no_invest_electricityBus_1_2) -+23.52941176470588 flow(storage_no_invest_electricityBus_1_3) -+23.06805074971165 flow(storage_no_invest_electricityBus_2_4) -+23.06805074971165 flow(storage_no_invest_electricityBus_2_5) ++56 flow(electricityBus_storage_no_invest_0) ++56 flow(electricityBus_storage_no_invest_1) ++54.90196078431372 flow(electricityBus_storage_no_invest_2) ++54.90196078431372 flow(electricityBus_storage_no_invest_3) ++53.82545174932718 flow(electricityBus_storage_no_invest_4) ++53.82545174932718 flow(electricityBus_storage_no_invest_5) ++24 flow(storage_no_invest_electricityBus_0) ++24 flow(storage_no_invest_electricityBus_1) ++23.52941176470588 flow(storage_no_invest_electricityBus_2) ++23.52941176470588 flow(storage_no_invest_electricityBus_3) ++23.06805074971165 flow(storage_no_invest_electricityBus_4) ++23.06805074971165 flow(storage_no_invest_electricityBus_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_storage_no_invest_0_0) -+1 flow(storage_no_invest_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage_no_invest_0) ++1 flow(storage_no_invest_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_no_invest_0_1) -+1 flow(storage_no_invest_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage_no_invest_1) ++1 flow(storage_no_invest_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_storage_no_invest_1_2) -+1 flow(storage_no_invest_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage_no_invest_2) ++1 flow(storage_no_invest_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_storage_no_invest_1_3) -+1 flow(storage_no_invest_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_storage_no_invest_3) ++1 flow(storage_no_invest_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_storage_no_invest_2_4) -+1 flow(storage_no_invest_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_storage_no_invest_4) ++1 flow(storage_no_invest_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: --1 flow(electricityBus_storage_no_invest_2_5) -+1 flow(storage_no_invest_electricityBus_2_5) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_storage_no_invest_5) ++1 flow(storage_no_invest_electricityBus_5) = 0 -c_e_GenericStorageBlock_balance(storage_no_invest_0_0)_: --0.97 flow(electricityBus_storage_no_invest_0_0) -+1.1627906976744187 flow(storage_no_invest_electricityBus_0_0) +c_e_GenericStorageBlock_balance(storage_no_invest_0)_: +-0.97 flow(electricityBus_storage_no_invest_0) ++1.1627906976744187 flow(storage_no_invest_electricityBus_0) +1 GenericStorageBlock_storage_content(storage_no_invest_1) = 34800.0 -c_e_GenericStorageBlock_balance(storage_no_invest_0_1)_: --0.97 flow(electricityBus_storage_no_invest_0_1) -+1.1627906976744187 flow(storage_no_invest_electricityBus_0_1) +c_e_GenericStorageBlock_balance(storage_no_invest_1)_: +-0.97 flow(electricityBus_storage_no_invest_1) ++1.1627906976744187 flow(storage_no_invest_electricityBus_1) -0.87 GenericStorageBlock_storage_content(storage_no_invest_1) +1 GenericStorageBlock_storage_content(storage_no_invest_2) = 0 -c_e_GenericStorageBlock_balance(storage_no_invest_1_2)_: --0.97 flow(electricityBus_storage_no_invest_1_2) -+1.1627906976744187 flow(storage_no_invest_electricityBus_1_2) +c_e_GenericStorageBlock_balance(storage_no_invest_2)_: +-0.97 flow(electricityBus_storage_no_invest_2) ++1.1627906976744187 flow(storage_no_invest_electricityBus_2) -0.87 GenericStorageBlock_storage_content(storage_no_invest_2) +1 GenericStorageBlock_storage_content(storage_no_invest_3) = 0 -c_e_GenericStorageBlock_balance(storage_no_invest_1_3)_: --0.97 flow(electricityBus_storage_no_invest_1_3) -+1.1627906976744187 flow(storage_no_invest_electricityBus_1_3) +c_e_GenericStorageBlock_balance(storage_no_invest_3)_: +-0.97 flow(electricityBus_storage_no_invest_3) ++1.1627906976744187 flow(storage_no_invest_electricityBus_3) -0.87 GenericStorageBlock_storage_content(storage_no_invest_3) +1 GenericStorageBlock_storage_content(storage_no_invest_4) = 0 -c_e_GenericStorageBlock_balance(storage_no_invest_2_4)_: --0.97 flow(electricityBus_storage_no_invest_2_4) -+1.1627906976744187 flow(storage_no_invest_electricityBus_2_4) +c_e_GenericStorageBlock_balance(storage_no_invest_4)_: +-0.97 flow(electricityBus_storage_no_invest_4) ++1.1627906976744187 flow(storage_no_invest_electricityBus_4) -0.87 GenericStorageBlock_storage_content(storage_no_invest_4) +1 GenericStorageBlock_storage_content(storage_no_invest_5) = 0 -c_e_GenericStorageBlock_balance(storage_no_invest_2_5)_: --0.97 flow(electricityBus_storage_no_invest_2_5) -+1.1627906976744187 flow(storage_no_invest_electricityBus_2_5) +c_e_GenericStorageBlock_balance(storage_no_invest_5)_: +-0.97 flow(electricityBus_storage_no_invest_5) ++1.1627906976744187 flow(storage_no_invest_electricityBus_5) -0.87 GenericStorageBlock_storage_content(storage_no_invest_5) +1 GenericStorageBlock_storage_content(storage_no_invest_6) = 0 @@ -93,18 +93,18 @@ c_e_GenericStorageBlock_balanced_cstr(storage_no_invest)_: = 40000.0 bounds - 0 <= flow(electricityBus_storage_no_invest_0_0) <= 16667 - 0 <= flow(electricityBus_storage_no_invest_0_1) <= 16667 - 0 <= flow(electricityBus_storage_no_invest_1_2) <= 16667 - 0 <= flow(electricityBus_storage_no_invest_1_3) <= 16667 - 0 <= flow(electricityBus_storage_no_invest_2_4) <= 16667 - 0 <= flow(electricityBus_storage_no_invest_2_5) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_0_0) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_0_1) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_1_2) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_1_3) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_2_4) <= 16667 - 0 <= flow(storage_no_invest_electricityBus_2_5) <= 16667 + 0 <= flow(electricityBus_storage_no_invest_0) <= 16667 + 0 <= flow(electricityBus_storage_no_invest_1) <= 16667 + 0 <= flow(electricityBus_storage_no_invest_2) <= 16667 + 0 <= flow(electricityBus_storage_no_invest_3) <= 16667 + 0 <= flow(electricityBus_storage_no_invest_4) <= 16667 + 0 <= flow(electricityBus_storage_no_invest_5) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_0) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_1) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_2) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_3) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_4) <= 16667 + 0 <= flow(storage_no_invest_electricityBus_5) <= 16667 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_1) <= 100000.0 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_2) <= 100000.0 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_3) <= 100000.0 diff --git a/tests/lp_files/storage_unbalanced.lp b/tests/lp_files/storage_unbalanced.lp index dfe57f128..43db40b09 100644 --- a/tests/lp_files/storage_unbalanced.lp +++ b/tests/lp_files/storage_unbalanced.lp @@ -6,52 +6,52 @@ objective: s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage1_0) ++1 flow(storage1_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage1_1) ++1 flow(storage1_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(storage1_electricityBus_0_2) --1 flow(electricityBus_storage1_0_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage1_2) ++1 flow(storage1_electricityBus_2) = 0 -c_e_GenericStorageBlock_balance(storage1_0_0)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_0) -+1 GenericStorageBlock_storage_content(storage1_1) +c_e_GenericStorageBlock_balance(storage1_0)_: +-1 flow(electricityBus_storage1_0) ++1 flow(storage1_electricityBus_0) -1 GenericStorageBlock_storage_content(storage1_0) ++1 GenericStorageBlock_storage_content(storage1_1) = 0 -c_e_GenericStorageBlock_balance(storage1_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) +c_e_GenericStorageBlock_balance(storage1_1)_: +-1 flow(electricityBus_storage1_1) ++1 flow(storage1_electricityBus_1) -1 GenericStorageBlock_storage_content(storage1_1) +1 GenericStorageBlock_storage_content(storage1_2) = 0 -c_e_GenericStorageBlock_balance(storage1_0_2)_: -+1 flow(storage1_electricityBus_0_2) --1 flow(electricityBus_storage1_0_2) +c_e_GenericStorageBlock_balance(storage1_2)_: +-1 flow(electricityBus_storage1_2) ++1 flow(storage1_electricityBus_2) -1 GenericStorageBlock_storage_content(storage1_2) +1 GenericStorageBlock_storage_content(storage1_3) = 0 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(storage1_electricityBus_0_0) <= +inf - 0 <= flow(electricityBus_storage1_0_0) <= +inf - 0 <= flow(storage1_electricityBus_0_1) <= +inf - 0 <= flow(electricityBus_storage1_0_1) <= +inf - 0 <= flow(storage1_electricityBus_0_2) <= +inf - 0 <= flow(electricityBus_storage1_0_2) <= +inf - 0 <= GenericStorageBlock_storage_content(storage1_1) <= 1111 + 0 <= flow(electricityBus_storage1_0) <= +inf + 0 <= flow(electricityBus_storage1_1) <= +inf + 0 <= flow(electricityBus_storage1_2) <= +inf + 0 <= flow(storage1_electricityBus_0) <= +inf + 0 <= flow(storage1_electricityBus_1) <= +inf + 0 <= flow(storage1_electricityBus_2) <= +inf 0 <= GenericStorageBlock_storage_content(storage1_0) <= 1111 + 0 <= GenericStorageBlock_storage_content(storage1_1) <= 1111 0 <= GenericStorageBlock_storage_content(storage1_2) <= 1111 0 <= GenericStorageBlock_storage_content(storage1_3) <= 1111 end diff --git a/tests/lp_files/storage_unbalanced_multi_period.lp b/tests/lp_files/storage_unbalanced_multi_period.lp index 3cb5b79b8..ff46b5618 100644 --- a/tests/lp_files/storage_unbalanced_multi_period.lp +++ b/tests/lp_files/storage_unbalanced_multi_period.lp @@ -6,94 +6,94 @@ objective: s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_0) +c_e_BusBlock_balance(electricityBus_0)_: +-1 flow(electricityBus_storage1_0) ++1 flow(storage1_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) +c_e_BusBlock_balance(electricityBus_1)_: +-1 flow(electricityBus_storage1_1) ++1 flow(storage1_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(storage1_electricityBus_1_2) --1 flow(electricityBus_storage1_1_2) +c_e_BusBlock_balance(electricityBus_2)_: +-1 flow(electricityBus_storage1_2) ++1 flow(storage1_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(storage1_electricityBus_1_3) --1 flow(electricityBus_storage1_1_3) +c_e_BusBlock_balance(electricityBus_3)_: +-1 flow(electricityBus_storage1_3) ++1 flow(storage1_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(storage1_electricityBus_2_4) --1 flow(electricityBus_storage1_2_4) +c_e_BusBlock_balance(electricityBus_4)_: +-1 flow(electricityBus_storage1_4) ++1 flow(storage1_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(storage1_electricityBus_2_5) --1 flow(electricityBus_storage1_2_5) +c_e_BusBlock_balance(electricityBus_5)_: +-1 flow(electricityBus_storage1_5) ++1 flow(storage1_electricityBus_5) = 0 -c_e_GenericStorageBlock_balance(storage1_0_0)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_0) -+1 GenericStorageBlock_storage_content(storage1_1) +c_e_GenericStorageBlock_balance(storage1_0)_: +-1 flow(electricityBus_storage1_0) ++1 flow(storage1_electricityBus_0) -1 GenericStorageBlock_storage_content(storage1_0) ++1 GenericStorageBlock_storage_content(storage1_1) = 0 -c_e_GenericStorageBlock_balance(storage1_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) +c_e_GenericStorageBlock_balance(storage1_1)_: +-1 flow(electricityBus_storage1_1) ++1 flow(storage1_electricityBus_1) -1 GenericStorageBlock_storage_content(storage1_1) +1 GenericStorageBlock_storage_content(storage1_2) = 0 -c_e_GenericStorageBlock_balance(storage1_1_2)_: -+1 flow(storage1_electricityBus_1_2) --1 flow(electricityBus_storage1_1_2) +c_e_GenericStorageBlock_balance(storage1_2)_: +-1 flow(electricityBus_storage1_2) ++1 flow(storage1_electricityBus_2) -1 GenericStorageBlock_storage_content(storage1_2) +1 GenericStorageBlock_storage_content(storage1_3) = 0 -c_e_GenericStorageBlock_balance(storage1_1_3)_: -+1 flow(storage1_electricityBus_1_3) --1 flow(electricityBus_storage1_1_3) +c_e_GenericStorageBlock_balance(storage1_3)_: +-1 flow(electricityBus_storage1_3) ++1 flow(storage1_electricityBus_3) -1 GenericStorageBlock_storage_content(storage1_3) +1 GenericStorageBlock_storage_content(storage1_4) = 0 -c_e_GenericStorageBlock_balance(storage1_2_4)_: -+1 flow(storage1_electricityBus_2_4) --1 flow(electricityBus_storage1_2_4) +c_e_GenericStorageBlock_balance(storage1_4)_: +-1 flow(electricityBus_storage1_4) ++1 flow(storage1_electricityBus_4) -1 GenericStorageBlock_storage_content(storage1_4) +1 GenericStorageBlock_storage_content(storage1_5) = 0 -c_e_GenericStorageBlock_balance(storage1_2_5)_: -+1 flow(storage1_electricityBus_2_5) --1 flow(electricityBus_storage1_2_5) +c_e_GenericStorageBlock_balance(storage1_5)_: +-1 flow(electricityBus_storage1_5) ++1 flow(storage1_electricityBus_5) -1 GenericStorageBlock_storage_content(storage1_5) +1 GenericStorageBlock_storage_content(storage1_6) = 0 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(storage1_electricityBus_0_0) <= +inf - 0 <= flow(electricityBus_storage1_0_0) <= +inf - 0 <= flow(storage1_electricityBus_0_1) <= +inf - 0 <= flow(electricityBus_storage1_0_1) <= +inf - 0 <= flow(storage1_electricityBus_1_2) <= +inf - 0 <= flow(electricityBus_storage1_1_2) <= +inf - 0 <= flow(storage1_electricityBus_1_3) <= +inf - 0 <= flow(electricityBus_storage1_1_3) <= +inf - 0 <= flow(storage1_electricityBus_2_4) <= +inf - 0 <= flow(electricityBus_storage1_2_4) <= +inf - 0 <= flow(storage1_electricityBus_2_5) <= +inf - 0 <= flow(electricityBus_storage1_2_5) <= +inf - 0 <= GenericStorageBlock_storage_content(storage1_1) <= 1111 + 0 <= flow(electricityBus_storage1_0) <= +inf + 0 <= flow(electricityBus_storage1_1) <= +inf + 0 <= flow(electricityBus_storage1_2) <= +inf + 0 <= flow(electricityBus_storage1_3) <= +inf + 0 <= flow(electricityBus_storage1_4) <= +inf + 0 <= flow(electricityBus_storage1_5) <= +inf + 0 <= flow(storage1_electricityBus_0) <= +inf + 0 <= flow(storage1_electricityBus_1) <= +inf + 0 <= flow(storage1_electricityBus_2) <= +inf + 0 <= flow(storage1_electricityBus_3) <= +inf + 0 <= flow(storage1_electricityBus_4) <= +inf + 0 <= flow(storage1_electricityBus_5) <= +inf 0 <= GenericStorageBlock_storage_content(storage1_0) <= 1111 + 0 <= GenericStorageBlock_storage_content(storage1_1) <= 1111 0 <= GenericStorageBlock_storage_content(storage1_2) <= 1111 0 <= GenericStorageBlock_storage_content(storage1_3) <= 1111 0 <= GenericStorageBlock_storage_content(storage1_4) <= 1111 diff --git a/tests/lp_files/summed_min_source.lp b/tests/lp_files/summed_min_source.lp index f2cf9022b..7b55d77f8 100644 --- a/tests/lp_files/summed_min_source.lp +++ b/tests/lp_files/summed_min_source.lp @@ -2,38 +2,38 @@ min objective: -+25 flow(electricityBus_excess_0_0) -+25 flow(electricityBus_excess_0_1) -+25 flow(electricityBus_excess_0_2) ++25 flow(electricityBus_excess_0) ++25 flow(electricityBus_excess_1) ++25 flow(electricityBus_excess_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(electricityBus_excess_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(electricityBus_excess_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(electricityBus_excess_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(electricityBus_excess_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(electricityBus_excess_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(electricityBus_excess_2) = 0 c_u_SimpleFlowBlock_full_load_time_max_constr(electricityBus_excess)_: -+1 flow(electricityBus_excess_0_0) -+1 flow(electricityBus_excess_0_1) -+1 flow(electricityBus_excess_0_2) ++1 flow(electricityBus_excess_0) ++1 flow(electricityBus_excess_1) ++1 flow(electricityBus_excess_2) <= 1000 c_l_SimpleFlowBlock_full_load_time_min_constr(electricityBus_excess)_: -+1 flow(electricityBus_excess_0_0) -+1 flow(electricityBus_excess_0_1) -+1 flow(electricityBus_excess_0_2) ++1 flow(electricityBus_excess_0) ++1 flow(electricityBus_excess_1) ++1 flow(electricityBus_excess_2) >= 30 bounds - 0 <= flow(electricityBus_excess_0_0) <= 8.0 - 0 <= flow(electricityBus_excess_0_1) <= 8.0 - 0 <= flow(electricityBus_excess_0_2) <= 8.0 + 0 <= flow(electricityBus_excess_0) <= 8.0 + 0 <= flow(electricityBus_excess_1) <= 8.0 + 0 <= flow(electricityBus_excess_2) <= 8.0 end diff --git a/tests/lp_files/summed_min_source_multi_period.lp b/tests/lp_files/summed_min_source_multi_period.lp index ed2085dcf..99929ee41 100644 --- a/tests/lp_files/summed_min_source_multi_period.lp +++ b/tests/lp_files/summed_min_source_multi_period.lp @@ -2,62 +2,62 @@ min objective: -+25 flow(electricityBus_excess_0_0) -+25 flow(electricityBus_excess_0_1) -+24.509803921568626 flow(electricityBus_excess_1_2) -+24.509803921568626 flow(electricityBus_excess_1_3) -+24.029219530949632 flow(electricityBus_excess_2_4) -+24.029219530949632 flow(electricityBus_excess_2_5) ++25 flow(electricityBus_excess_0) ++25 flow(electricityBus_excess_1) ++24.509803921568626 flow(electricityBus_excess_2) ++24.509803921568626 flow(electricityBus_excess_3) ++24.029219530949632 flow(electricityBus_excess_4) ++24.029219530949632 flow(electricityBus_excess_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(electricityBus_excess_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(electricityBus_excess_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(electricityBus_excess_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(electricityBus_excess_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(electricityBus_excess_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(electricityBus_excess_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(electricityBus_excess_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(electricityBus_excess_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(electricityBus_excess_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(electricityBus_excess_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(electricityBus_excess_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(electricityBus_excess_5) = 0 c_u_SimpleFlowBlock_full_load_time_max_constr(electricityBus_excess)_: -+1 flow(electricityBus_excess_0_0) -+1 flow(electricityBus_excess_0_1) -+1 flow(electricityBus_excess_1_2) -+1 flow(electricityBus_excess_1_3) -+1 flow(electricityBus_excess_2_4) -+1 flow(electricityBus_excess_2_5) ++1 flow(electricityBus_excess_0) ++1 flow(electricityBus_excess_1) ++1 flow(electricityBus_excess_2) ++1 flow(electricityBus_excess_3) ++1 flow(electricityBus_excess_4) ++1 flow(electricityBus_excess_5) <= 1000 c_l_SimpleFlowBlock_full_load_time_min_constr(electricityBus_excess)_: -+1 flow(electricityBus_excess_0_0) -+1 flow(electricityBus_excess_0_1) -+1 flow(electricityBus_excess_1_2) -+1 flow(electricityBus_excess_1_3) -+1 flow(electricityBus_excess_2_4) -+1 flow(electricityBus_excess_2_5) ++1 flow(electricityBus_excess_0) ++1 flow(electricityBus_excess_1) ++1 flow(electricityBus_excess_2) ++1 flow(electricityBus_excess_3) ++1 flow(electricityBus_excess_4) ++1 flow(electricityBus_excess_5) >= 30 bounds - 0 <= flow(electricityBus_excess_0_0) <= 8.0 - 0 <= flow(electricityBus_excess_0_1) <= 8.0 - 0 <= flow(electricityBus_excess_1_2) <= 8.0 - 0 <= flow(electricityBus_excess_1_3) <= 8.0 - 0 <= flow(electricityBus_excess_2_4) <= 8.0 - 0 <= flow(electricityBus_excess_2_5) <= 8.0 + 0 <= flow(electricityBus_excess_0) <= 8.0 + 0 <= flow(electricityBus_excess_1) <= 8.0 + 0 <= flow(electricityBus_excess_2) <= 8.0 + 0 <= flow(electricityBus_excess_3) <= 8.0 + 0 <= flow(electricityBus_excess_4) <= 8.0 + 0 <= flow(electricityBus_excess_5) <= 8.0 end diff --git a/tests/lp_files/variable_chp.lp b/tests/lp_files/variable_chp.lp index 9ec030a3e..62189040a 100644 --- a/tests/lp_files/variable_chp.lp +++ b/tests/lp_files/variable_chp.lp @@ -6,135 +6,135 @@ objective: s.t. -c_e_BusBlock_balance(commodityBus_0_0)_: -+1 flow(commodityBus_variable_chp_gas1_0_0) -+1 flow(commodityBus_variable_chp_gas2_0_0) +c_e_BusBlock_balance(commodityBus_0)_: ++1 flow(commodityBus_variable_chp_gas1_0) ++1 flow(commodityBus_variable_chp_gas2_0) = 0 -c_e_BusBlock_balance(commodityBus_0_1)_: -+1 flow(commodityBus_variable_chp_gas1_0_1) -+1 flow(commodityBus_variable_chp_gas2_0_1) +c_e_BusBlock_balance(commodityBus_1)_: ++1 flow(commodityBus_variable_chp_gas1_1) ++1 flow(commodityBus_variable_chp_gas2_1) = 0 -c_e_BusBlock_balance(commodityBus_0_2)_: -+1 flow(commodityBus_variable_chp_gas1_0_2) -+1 flow(commodityBus_variable_chp_gas2_0_2) +c_e_BusBlock_balance(commodityBus_2)_: ++1 flow(commodityBus_variable_chp_gas1_2) ++1 flow(commodityBus_variable_chp_gas2_2) = 0 -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(variable_chp_gas1_electricityBus_0_0) -+1 flow(variable_chp_gas2_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(variable_chp_gas1_electricityBus_0) ++1 flow(variable_chp_gas2_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(variable_chp_gas1_electricityBus_0_1) -+1 flow(variable_chp_gas2_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(variable_chp_gas1_electricityBus_1) ++1 flow(variable_chp_gas2_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(variable_chp_gas1_electricityBus_0_2) -+1 flow(variable_chp_gas2_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(variable_chp_gas1_electricityBus_2) ++1 flow(variable_chp_gas2_electricityBus_2) = 0 -c_e_BusBlock_balance(heatBus_0_0)_: -+1 flow(variable_chp_gas1_heatBus_0_0) -+1 flow(variable_chp_gas2_heatBus_0_0) +c_e_BusBlock_balance(heatBus_0)_: ++1 flow(variable_chp_gas1_heatBus_0) ++1 flow(variable_chp_gas2_heatBus_0) = 0 -c_e_BusBlock_balance(heatBus_0_1)_: -+1 flow(variable_chp_gas1_heatBus_0_1) -+1 flow(variable_chp_gas2_heatBus_0_1) +c_e_BusBlock_balance(heatBus_1)_: ++1 flow(variable_chp_gas1_heatBus_1) ++1 flow(variable_chp_gas2_heatBus_1) = 0 -c_e_BusBlock_balance(heatBus_0_2)_: -+1 flow(variable_chp_gas1_heatBus_0_2) -+1 flow(variable_chp_gas2_heatBus_0_2) +c_e_BusBlock_balance(heatBus_2)_: ++1 flow(variable_chp_gas1_heatBus_2) ++1 flow(variable_chp_gas2_heatBus_2) = 0 -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_0_0)_: -+1 flow(commodityBus_variable_chp_gas1_0_0) --2.0 flow(variable_chp_gas1_electricityBus_0_0) --0.8 flow(variable_chp_gas1_heatBus_0_0) -= 0.0 - -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_0_1)_: -+1 flow(commodityBus_variable_chp_gas1_0_1) --2.0 flow(variable_chp_gas1_electricityBus_0_1) --0.8 flow(variable_chp_gas1_heatBus_0_1) -= 0.0 - -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_0_2)_: -+1 flow(commodityBus_variable_chp_gas1_0_2) --2.0 flow(variable_chp_gas1_electricityBus_0_2) --0.8 flow(variable_chp_gas1_heatBus_0_2) -= 0.0 - -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_0_0)_: -+1 flow(commodityBus_variable_chp_gas2_0_0) --2.0 flow(variable_chp_gas2_electricityBus_0_0) --0.8 flow(variable_chp_gas2_heatBus_0_0) -= 0.0 - -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_0_1)_: -+1 flow(commodityBus_variable_chp_gas2_0_1) --2.0 flow(variable_chp_gas2_electricityBus_0_1) --0.8 flow(variable_chp_gas2_heatBus_0_1) -= 0.0 - -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_0_2)_: -+1 flow(commodityBus_variable_chp_gas2_0_2) --2.0 flow(variable_chp_gas2_electricityBus_0_2) --0.8 flow(variable_chp_gas2_heatBus_0_2) -= 0.0 - -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_0_0)_: --1 flow(variable_chp_gas1_electricityBus_0_0) -+0.6 flow(variable_chp_gas1_heatBus_0_0) +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_0)_: ++1 flow(commodityBus_variable_chp_gas1_0) +-2.0 flow(variable_chp_gas1_electricityBus_0) +-0.8 flow(variable_chp_gas1_heatBus_0) += 0 + +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_1)_: ++1 flow(commodityBus_variable_chp_gas1_1) +-2.0 flow(variable_chp_gas1_electricityBus_1) +-0.8 flow(variable_chp_gas1_heatBus_1) += 0 + +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_2)_: ++1 flow(commodityBus_variable_chp_gas1_2) +-2.0 flow(variable_chp_gas1_electricityBus_2) +-0.8 flow(variable_chp_gas1_heatBus_2) += 0 + +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_0)_: ++1 flow(commodityBus_variable_chp_gas2_0) +-2.0 flow(variable_chp_gas2_electricityBus_0) +-0.8 flow(variable_chp_gas2_heatBus_0) += 0 + +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_1)_: ++1 flow(commodityBus_variable_chp_gas2_1) +-2.0 flow(variable_chp_gas2_electricityBus_1) +-0.8 flow(variable_chp_gas2_heatBus_1) += 0 + +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_2)_: ++1 flow(commodityBus_variable_chp_gas2_2) +-2.0 flow(variable_chp_gas2_electricityBus_2) +-0.8 flow(variable_chp_gas2_heatBus_2) += 0 + +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_0)_: +-1 flow(variable_chp_gas1_electricityBus_0) ++0.6 flow(variable_chp_gas1_heatBus_0) <= 0 -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_0_1)_: --1 flow(variable_chp_gas1_electricityBus_0_1) -+0.6 flow(variable_chp_gas1_heatBus_0_1) +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_1)_: +-1 flow(variable_chp_gas1_electricityBus_1) ++0.6 flow(variable_chp_gas1_heatBus_1) <= 0 -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_0_2)_: --1 flow(variable_chp_gas1_electricityBus_0_2) -+0.6 flow(variable_chp_gas1_heatBus_0_2) +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_2)_: +-1 flow(variable_chp_gas1_electricityBus_2) ++0.6 flow(variable_chp_gas1_heatBus_2) <= 0 -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_0_0)_: --1 flow(variable_chp_gas2_electricityBus_0_0) -+0.6 flow(variable_chp_gas2_heatBus_0_0) +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_0)_: +-1 flow(variable_chp_gas2_electricityBus_0) ++0.6 flow(variable_chp_gas2_heatBus_0) <= 0 -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_0_1)_: --1 flow(variable_chp_gas2_electricityBus_0_1) -+0.6 flow(variable_chp_gas2_heatBus_0_1) +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_1)_: +-1 flow(variable_chp_gas2_electricityBus_1) ++0.6 flow(variable_chp_gas2_heatBus_1) <= 0 -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_0_2)_: --1 flow(variable_chp_gas2_electricityBus_0_2) -+0.6 flow(variable_chp_gas2_heatBus_0_2) +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_2)_: +-1 flow(variable_chp_gas2_electricityBus_2) ++0.6 flow(variable_chp_gas2_heatBus_2) <= 0 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(commodityBus_variable_chp_gas1_0_0) <= 100 - 0 <= flow(commodityBus_variable_chp_gas2_0_0) <= 100 - 0 <= flow(commodityBus_variable_chp_gas1_0_1) <= 100 - 0 <= flow(commodityBus_variable_chp_gas2_0_1) <= 100 - 0 <= flow(commodityBus_variable_chp_gas1_0_2) <= 100 - 0 <= flow(commodityBus_variable_chp_gas2_0_2) <= 100 - 0 <= flow(variable_chp_gas1_electricityBus_0_0) <= +inf - 0 <= flow(variable_chp_gas2_electricityBus_0_0) <= +inf - 0 <= flow(variable_chp_gas1_electricityBus_0_1) <= +inf - 0 <= flow(variable_chp_gas2_electricityBus_0_1) <= +inf - 0 <= flow(variable_chp_gas1_electricityBus_0_2) <= +inf - 0 <= flow(variable_chp_gas2_electricityBus_0_2) <= +inf - 0 <= flow(variable_chp_gas1_heatBus_0_0) <= +inf - 0 <= flow(variable_chp_gas2_heatBus_0_0) <= +inf - 0 <= flow(variable_chp_gas1_heatBus_0_1) <= +inf - 0 <= flow(variable_chp_gas2_heatBus_0_1) <= +inf - 0 <= flow(variable_chp_gas1_heatBus_0_2) <= +inf - 0 <= flow(variable_chp_gas2_heatBus_0_2) <= +inf + 0 <= flow(commodityBus_variable_chp_gas1_0) <= 100 + 0 <= flow(commodityBus_variable_chp_gas1_1) <= 100 + 0 <= flow(commodityBus_variable_chp_gas1_2) <= 100 + 0 <= flow(commodityBus_variable_chp_gas2_0) <= 100 + 0 <= flow(commodityBus_variable_chp_gas2_1) <= 100 + 0 <= flow(commodityBus_variable_chp_gas2_2) <= 100 + 0 <= flow(variable_chp_gas1_electricityBus_0) <= +inf + 0 <= flow(variable_chp_gas1_electricityBus_1) <= +inf + 0 <= flow(variable_chp_gas1_electricityBus_2) <= +inf + 0 <= flow(variable_chp_gas1_heatBus_0) <= +inf + 0 <= flow(variable_chp_gas1_heatBus_1) <= +inf + 0 <= flow(variable_chp_gas1_heatBus_2) <= +inf + 0 <= flow(variable_chp_gas2_electricityBus_0) <= +inf + 0 <= flow(variable_chp_gas2_electricityBus_1) <= +inf + 0 <= flow(variable_chp_gas2_electricityBus_2) <= +inf + 0 <= flow(variable_chp_gas2_heatBus_0) <= +inf + 0 <= flow(variable_chp_gas2_heatBus_1) <= +inf + 0 <= flow(variable_chp_gas2_heatBus_2) <= +inf end diff --git a/tests/lp_files/variable_chp_multi_period.lp b/tests/lp_files/variable_chp_multi_period.lp index dee45b69a..d3c1af4a3 100644 --- a/tests/lp_files/variable_chp_multi_period.lp +++ b/tests/lp_files/variable_chp_multi_period.lp @@ -6,264 +6,264 @@ objective: s.t. -c_e_BusBlock_balance(commodityBus_0_0)_: -+1 flow(commodityBus_variable_chp_gas1_0_0) -+1 flow(commodityBus_variable_chp_gas2_0_0) +c_e_BusBlock_balance(commodityBus_0)_: ++1 flow(commodityBus_variable_chp_gas1_0) ++1 flow(commodityBus_variable_chp_gas2_0) = 0 -c_e_BusBlock_balance(commodityBus_0_1)_: -+1 flow(commodityBus_variable_chp_gas1_0_1) -+1 flow(commodityBus_variable_chp_gas2_0_1) +c_e_BusBlock_balance(commodityBus_1)_: ++1 flow(commodityBus_variable_chp_gas1_1) ++1 flow(commodityBus_variable_chp_gas2_1) = 0 -c_e_BusBlock_balance(commodityBus_1_2)_: -+1 flow(commodityBus_variable_chp_gas1_1_2) -+1 flow(commodityBus_variable_chp_gas2_1_2) +c_e_BusBlock_balance(commodityBus_2)_: ++1 flow(commodityBus_variable_chp_gas1_2) ++1 flow(commodityBus_variable_chp_gas2_2) = 0 -c_e_BusBlock_balance(commodityBus_1_3)_: -+1 flow(commodityBus_variable_chp_gas1_1_3) -+1 flow(commodityBus_variable_chp_gas2_1_3) +c_e_BusBlock_balance(commodityBus_3)_: ++1 flow(commodityBus_variable_chp_gas1_3) ++1 flow(commodityBus_variable_chp_gas2_3) = 0 -c_e_BusBlock_balance(commodityBus_2_4)_: -+1 flow(commodityBus_variable_chp_gas1_2_4) -+1 flow(commodityBus_variable_chp_gas2_2_4) +c_e_BusBlock_balance(commodityBus_4)_: ++1 flow(commodityBus_variable_chp_gas1_4) ++1 flow(commodityBus_variable_chp_gas2_4) = 0 -c_e_BusBlock_balance(commodityBus_2_5)_: -+1 flow(commodityBus_variable_chp_gas1_2_5) -+1 flow(commodityBus_variable_chp_gas2_2_5) +c_e_BusBlock_balance(commodityBus_5)_: ++1 flow(commodityBus_variable_chp_gas1_5) ++1 flow(commodityBus_variable_chp_gas2_5) = 0 -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(variable_chp_gas2_electricityBus_0_0) -+1 flow(variable_chp_gas1_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(variable_chp_gas1_electricityBus_0) ++1 flow(variable_chp_gas2_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(variable_chp_gas2_electricityBus_0_1) -+1 flow(variable_chp_gas1_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(variable_chp_gas1_electricityBus_1) ++1 flow(variable_chp_gas2_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(variable_chp_gas2_electricityBus_1_2) -+1 flow(variable_chp_gas1_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(variable_chp_gas1_electricityBus_2) ++1 flow(variable_chp_gas2_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(variable_chp_gas2_electricityBus_1_3) -+1 flow(variable_chp_gas1_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(variable_chp_gas1_electricityBus_3) ++1 flow(variable_chp_gas2_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(variable_chp_gas2_electricityBus_2_4) -+1 flow(variable_chp_gas1_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(variable_chp_gas1_electricityBus_4) ++1 flow(variable_chp_gas2_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(variable_chp_gas2_electricityBus_2_5) -+1 flow(variable_chp_gas1_electricityBus_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(variable_chp_gas1_electricityBus_5) ++1 flow(variable_chp_gas2_electricityBus_5) = 0 -c_e_BusBlock_balance(heatBus_0_0)_: -+1 flow(variable_chp_gas2_heatBus_0_0) -+1 flow(variable_chp_gas1_heatBus_0_0) +c_e_BusBlock_balance(heatBus_0)_: ++1 flow(variable_chp_gas1_heatBus_0) ++1 flow(variable_chp_gas2_heatBus_0) = 0 -c_e_BusBlock_balance(heatBus_0_1)_: -+1 flow(variable_chp_gas2_heatBus_0_1) -+1 flow(variable_chp_gas1_heatBus_0_1) +c_e_BusBlock_balance(heatBus_1)_: ++1 flow(variable_chp_gas1_heatBus_1) ++1 flow(variable_chp_gas2_heatBus_1) = 0 -c_e_BusBlock_balance(heatBus_1_2)_: -+1 flow(variable_chp_gas2_heatBus_1_2) -+1 flow(variable_chp_gas1_heatBus_1_2) +c_e_BusBlock_balance(heatBus_2)_: ++1 flow(variable_chp_gas1_heatBus_2) ++1 flow(variable_chp_gas2_heatBus_2) = 0 -c_e_BusBlock_balance(heatBus_1_3)_: -+1 flow(variable_chp_gas2_heatBus_1_3) -+1 flow(variable_chp_gas1_heatBus_1_3) +c_e_BusBlock_balance(heatBus_3)_: ++1 flow(variable_chp_gas1_heatBus_3) ++1 flow(variable_chp_gas2_heatBus_3) = 0 -c_e_BusBlock_balance(heatBus_2_4)_: -+1 flow(variable_chp_gas2_heatBus_2_4) -+1 flow(variable_chp_gas1_heatBus_2_4) +c_e_BusBlock_balance(heatBus_4)_: ++1 flow(variable_chp_gas1_heatBus_4) ++1 flow(variable_chp_gas2_heatBus_4) = 0 -c_e_BusBlock_balance(heatBus_2_5)_: -+1 flow(variable_chp_gas2_heatBus_2_5) -+1 flow(variable_chp_gas1_heatBus_2_5) +c_e_BusBlock_balance(heatBus_5)_: ++1 flow(variable_chp_gas1_heatBus_5) ++1 flow(variable_chp_gas2_heatBus_5) = 0 -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_0_0)_: -+1 flow(commodityBus_variable_chp_gas2_0_0) --2.0 flow(variable_chp_gas2_electricityBus_0_0) --0.8 flow(variable_chp_gas2_heatBus_0_0) -= 0.0 - -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_0_1)_: -+1 flow(commodityBus_variable_chp_gas2_0_1) --2.0 flow(variable_chp_gas2_electricityBus_0_1) --0.8 flow(variable_chp_gas2_heatBus_0_1) -= 0.0 - -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_1_2)_: -+1 flow(commodityBus_variable_chp_gas2_1_2) --2.0 flow(variable_chp_gas2_electricityBus_1_2) --0.8 flow(variable_chp_gas2_heatBus_1_2) -= 0.0 - -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_1_3)_: -+1 flow(commodityBus_variable_chp_gas2_1_3) --2.0 flow(variable_chp_gas2_electricityBus_1_3) --0.8 flow(variable_chp_gas2_heatBus_1_3) -= 0.0 - -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_2_4)_: -+1 flow(commodityBus_variable_chp_gas2_2_4) --2.0 flow(variable_chp_gas2_electricityBus_2_4) --0.8 flow(variable_chp_gas2_heatBus_2_4) -= 0.0 - -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_2_5)_: -+1 flow(commodityBus_variable_chp_gas2_2_5) --2.0 flow(variable_chp_gas2_electricityBus_2_5) --0.8 flow(variable_chp_gas2_heatBus_2_5) -= 0.0 - -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_0_0)_: -+1 flow(commodityBus_variable_chp_gas1_0_0) --2.0 flow(variable_chp_gas1_electricityBus_0_0) --0.8 flow(variable_chp_gas1_heatBus_0_0) -= 0.0 - -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_0_1)_: -+1 flow(commodityBus_variable_chp_gas1_0_1) --2.0 flow(variable_chp_gas1_electricityBus_0_1) --0.8 flow(variable_chp_gas1_heatBus_0_1) -= 0.0 - -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_1_2)_: -+1 flow(commodityBus_variable_chp_gas1_1_2) --2.0 flow(variable_chp_gas1_electricityBus_1_2) --0.8 flow(variable_chp_gas1_heatBus_1_2) -= 0.0 - -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_1_3)_: -+1 flow(commodityBus_variable_chp_gas1_1_3) --2.0 flow(variable_chp_gas1_electricityBus_1_3) --0.8 flow(variable_chp_gas1_heatBus_1_3) -= 0.0 - -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_2_4)_: -+1 flow(commodityBus_variable_chp_gas1_2_4) --2.0 flow(variable_chp_gas1_electricityBus_2_4) --0.8 flow(variable_chp_gas1_heatBus_2_4) -= 0.0 - -c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_2_5)_: -+1 flow(commodityBus_variable_chp_gas1_2_5) --2.0 flow(variable_chp_gas1_electricityBus_2_5) --0.8 flow(variable_chp_gas1_heatBus_2_5) -= 0.0 - -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_0_0)_: --1 flow(variable_chp_gas2_electricityBus_0_0) -+0.6 flow(variable_chp_gas2_heatBus_0_0) +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_0)_: ++1 flow(commodityBus_variable_chp_gas1_0) +-2.0 flow(variable_chp_gas1_electricityBus_0) +-0.8 flow(variable_chp_gas1_heatBus_0) += 0 + +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_1)_: ++1 flow(commodityBus_variable_chp_gas1_1) +-2.0 flow(variable_chp_gas1_electricityBus_1) +-0.8 flow(variable_chp_gas1_heatBus_1) += 0 + +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_2)_: ++1 flow(commodityBus_variable_chp_gas1_2) +-2.0 flow(variable_chp_gas1_electricityBus_2) +-0.8 flow(variable_chp_gas1_heatBus_2) += 0 + +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_3)_: ++1 flow(commodityBus_variable_chp_gas1_3) +-2.0 flow(variable_chp_gas1_electricityBus_3) +-0.8 flow(variable_chp_gas1_heatBus_3) += 0 + +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_4)_: ++1 flow(commodityBus_variable_chp_gas1_4) +-2.0 flow(variable_chp_gas1_electricityBus_4) +-0.8 flow(variable_chp_gas1_heatBus_4) += 0 + +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas1_5)_: ++1 flow(commodityBus_variable_chp_gas1_5) +-2.0 flow(variable_chp_gas1_electricityBus_5) +-0.8 flow(variable_chp_gas1_heatBus_5) += 0 + +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_0)_: ++1 flow(commodityBus_variable_chp_gas2_0) +-2.0 flow(variable_chp_gas2_electricityBus_0) +-0.8 flow(variable_chp_gas2_heatBus_0) += 0 + +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_1)_: ++1 flow(commodityBus_variable_chp_gas2_1) +-2.0 flow(variable_chp_gas2_electricityBus_1) +-0.8 flow(variable_chp_gas2_heatBus_1) += 0 + +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_2)_: ++1 flow(commodityBus_variable_chp_gas2_2) +-2.0 flow(variable_chp_gas2_electricityBus_2) +-0.8 flow(variable_chp_gas2_heatBus_2) += 0 + +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_3)_: ++1 flow(commodityBus_variable_chp_gas2_3) +-2.0 flow(variable_chp_gas2_electricityBus_3) +-0.8 flow(variable_chp_gas2_heatBus_3) += 0 + +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_4)_: ++1 flow(commodityBus_variable_chp_gas2_4) +-2.0 flow(variable_chp_gas2_electricityBus_4) +-0.8 flow(variable_chp_gas2_heatBus_4) += 0 + +c_e_ExtractionTurbineCHPBlock_input_output_relation(variable_chp_gas2_5)_: ++1 flow(commodityBus_variable_chp_gas2_5) +-2.0 flow(variable_chp_gas2_electricityBus_5) +-0.8 flow(variable_chp_gas2_heatBus_5) += 0 + +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_0)_: +-1 flow(variable_chp_gas1_electricityBus_0) ++0.6 flow(variable_chp_gas1_heatBus_0) <= 0 -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_0_1)_: --1 flow(variable_chp_gas2_electricityBus_0_1) -+0.6 flow(variable_chp_gas2_heatBus_0_1) +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_1)_: +-1 flow(variable_chp_gas1_electricityBus_1) ++0.6 flow(variable_chp_gas1_heatBus_1) <= 0 -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_1_2)_: --1 flow(variable_chp_gas2_electricityBus_1_2) -+0.6 flow(variable_chp_gas2_heatBus_1_2) +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_2)_: +-1 flow(variable_chp_gas1_electricityBus_2) ++0.6 flow(variable_chp_gas1_heatBus_2) <= 0 -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_1_3)_: --1 flow(variable_chp_gas2_electricityBus_1_3) -+0.6 flow(variable_chp_gas2_heatBus_1_3) +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_3)_: +-1 flow(variable_chp_gas1_electricityBus_3) ++0.6 flow(variable_chp_gas1_heatBus_3) <= 0 -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_2_4)_: --1 flow(variable_chp_gas2_electricityBus_2_4) -+0.6 flow(variable_chp_gas2_heatBus_2_4) +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_4)_: +-1 flow(variable_chp_gas1_electricityBus_4) ++0.6 flow(variable_chp_gas1_heatBus_4) <= 0 -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_2_5)_: --1 flow(variable_chp_gas2_electricityBus_2_5) -+0.6 flow(variable_chp_gas2_heatBus_2_5) +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_5)_: +-1 flow(variable_chp_gas1_electricityBus_5) ++0.6 flow(variable_chp_gas1_heatBus_5) <= 0 -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_0_0)_: --1 flow(variable_chp_gas1_electricityBus_0_0) -+0.6 flow(variable_chp_gas1_heatBus_0_0) +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_0)_: +-1 flow(variable_chp_gas2_electricityBus_0) ++0.6 flow(variable_chp_gas2_heatBus_0) <= 0 -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_0_1)_: --1 flow(variable_chp_gas1_electricityBus_0_1) -+0.6 flow(variable_chp_gas1_heatBus_0_1) +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_1)_: +-1 flow(variable_chp_gas2_electricityBus_1) ++0.6 flow(variable_chp_gas2_heatBus_1) <= 0 -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_1_2)_: --1 flow(variable_chp_gas1_electricityBus_1_2) -+0.6 flow(variable_chp_gas1_heatBus_1_2) +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_2)_: +-1 flow(variable_chp_gas2_electricityBus_2) ++0.6 flow(variable_chp_gas2_heatBus_2) <= 0 -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_1_3)_: --1 flow(variable_chp_gas1_electricityBus_1_3) -+0.6 flow(variable_chp_gas1_heatBus_1_3) +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_3)_: +-1 flow(variable_chp_gas2_electricityBus_3) ++0.6 flow(variable_chp_gas2_heatBus_3) <= 0 -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_2_4)_: --1 flow(variable_chp_gas1_electricityBus_2_4) -+0.6 flow(variable_chp_gas1_heatBus_2_4) +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_4)_: +-1 flow(variable_chp_gas2_electricityBus_4) ++0.6 flow(variable_chp_gas2_heatBus_4) <= 0 -c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas1_2_5)_: --1 flow(variable_chp_gas1_electricityBus_2_5) -+0.6 flow(variable_chp_gas1_heatBus_2_5) +c_u_ExtractionTurbineCHPBlock_out_flow_relation(variable_chp_gas2_5)_: +-1 flow(variable_chp_gas2_electricityBus_5) ++0.6 flow(variable_chp_gas2_heatBus_5) <= 0 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(commodityBus_variable_chp_gas1_0_0) <= 100 - 0 <= flow(commodityBus_variable_chp_gas2_0_0) <= 100 - 0 <= flow(commodityBus_variable_chp_gas1_0_1) <= 100 - 0 <= flow(commodityBus_variable_chp_gas2_0_1) <= 100 - 0 <= flow(commodityBus_variable_chp_gas1_1_2) <= 100 - 0 <= flow(commodityBus_variable_chp_gas2_1_2) <= 100 - 0 <= flow(commodityBus_variable_chp_gas1_1_3) <= 100 - 0 <= flow(commodityBus_variable_chp_gas2_1_3) <= 100 - 0 <= flow(commodityBus_variable_chp_gas1_2_4) <= 100 - 0 <= flow(commodityBus_variable_chp_gas2_2_4) <= 100 - 0 <= flow(commodityBus_variable_chp_gas1_2_5) <= 100 - 0 <= flow(commodityBus_variable_chp_gas2_2_5) <= 100 - 0 <= flow(variable_chp_gas2_electricityBus_0_0) <= +inf - 0 <= flow(variable_chp_gas1_electricityBus_0_0) <= +inf - 0 <= flow(variable_chp_gas2_electricityBus_0_1) <= +inf - 0 <= flow(variable_chp_gas1_electricityBus_0_1) <= +inf - 0 <= flow(variable_chp_gas2_electricityBus_1_2) <= +inf - 0 <= flow(variable_chp_gas1_electricityBus_1_2) <= +inf - 0 <= flow(variable_chp_gas2_electricityBus_1_3) <= +inf - 0 <= flow(variable_chp_gas1_electricityBus_1_3) <= +inf - 0 <= flow(variable_chp_gas2_electricityBus_2_4) <= +inf - 0 <= flow(variable_chp_gas1_electricityBus_2_4) <= +inf - 0 <= flow(variable_chp_gas2_electricityBus_2_5) <= +inf - 0 <= flow(variable_chp_gas1_electricityBus_2_5) <= +inf - 0 <= flow(variable_chp_gas2_heatBus_0_0) <= +inf - 0 <= flow(variable_chp_gas1_heatBus_0_0) <= +inf - 0 <= flow(variable_chp_gas2_heatBus_0_1) <= +inf - 0 <= flow(variable_chp_gas1_heatBus_0_1) <= +inf - 0 <= flow(variable_chp_gas2_heatBus_1_2) <= +inf - 0 <= flow(variable_chp_gas1_heatBus_1_2) <= +inf - 0 <= flow(variable_chp_gas2_heatBus_1_3) <= +inf - 0 <= flow(variable_chp_gas1_heatBus_1_3) <= +inf - 0 <= flow(variable_chp_gas2_heatBus_2_4) <= +inf - 0 <= flow(variable_chp_gas1_heatBus_2_4) <= +inf - 0 <= flow(variable_chp_gas2_heatBus_2_5) <= +inf - 0 <= flow(variable_chp_gas1_heatBus_2_5) <= +inf + 0 <= flow(commodityBus_variable_chp_gas1_0) <= 100 + 0 <= flow(commodityBus_variable_chp_gas1_1) <= 100 + 0 <= flow(commodityBus_variable_chp_gas1_2) <= 100 + 0 <= flow(commodityBus_variable_chp_gas1_3) <= 100 + 0 <= flow(commodityBus_variable_chp_gas1_4) <= 100 + 0 <= flow(commodityBus_variable_chp_gas1_5) <= 100 + 0 <= flow(commodityBus_variable_chp_gas2_0) <= 100 + 0 <= flow(commodityBus_variable_chp_gas2_1) <= 100 + 0 <= flow(commodityBus_variable_chp_gas2_2) <= 100 + 0 <= flow(commodityBus_variable_chp_gas2_3) <= 100 + 0 <= flow(commodityBus_variable_chp_gas2_4) <= 100 + 0 <= flow(commodityBus_variable_chp_gas2_5) <= 100 + 0 <= flow(variable_chp_gas1_electricityBus_0) <= +inf + 0 <= flow(variable_chp_gas1_electricityBus_1) <= +inf + 0 <= flow(variable_chp_gas1_electricityBus_2) <= +inf + 0 <= flow(variable_chp_gas1_electricityBus_3) <= +inf + 0 <= flow(variable_chp_gas1_electricityBus_4) <= +inf + 0 <= flow(variable_chp_gas1_electricityBus_5) <= +inf + 0 <= flow(variable_chp_gas1_heatBus_0) <= +inf + 0 <= flow(variable_chp_gas1_heatBus_1) <= +inf + 0 <= flow(variable_chp_gas1_heatBus_2) <= +inf + 0 <= flow(variable_chp_gas1_heatBus_3) <= +inf + 0 <= flow(variable_chp_gas1_heatBus_4) <= +inf + 0 <= flow(variable_chp_gas1_heatBus_5) <= +inf + 0 <= flow(variable_chp_gas2_electricityBus_0) <= +inf + 0 <= flow(variable_chp_gas2_electricityBus_1) <= +inf + 0 <= flow(variable_chp_gas2_electricityBus_2) <= +inf + 0 <= flow(variable_chp_gas2_electricityBus_3) <= +inf + 0 <= flow(variable_chp_gas2_electricityBus_4) <= +inf + 0 <= flow(variable_chp_gas2_electricityBus_5) <= +inf + 0 <= flow(variable_chp_gas2_heatBus_0) <= +inf + 0 <= flow(variable_chp_gas2_heatBus_1) <= +inf + 0 <= flow(variable_chp_gas2_heatBus_2) <= +inf + 0 <= flow(variable_chp_gas2_heatBus_3) <= +inf + 0 <= flow(variable_chp_gas2_heatBus_4) <= +inf + 0 <= flow(variable_chp_gas2_heatBus_5) <= +inf end From 86e63f8c1b68cc12c962d39823cd9bb950a333c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 12 Jun 2024 08:03:59 +0200 Subject: [PATCH 11/17] Fix gradient test This functionality had no unit test, thus the constreaint test was not fixed in the last commit. --- src/oemof/solph/flows/_simple_flow_block.py | 4 +- tests/lp_files/source_with_gradient.lp | 52 ++++++++++----------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/oemof/solph/flows/_simple_flow_block.py b/src/oemof/solph/flows/_simple_flow_block.py index 7b0e0a148..469ec1311 100644 --- a/src/oemof/solph/flows/_simple_flow_block.py +++ b/src/oemof/solph/flows/_simple_flow_block.py @@ -255,7 +255,7 @@ def _positive_gradient_flow_rule(model): """Rule definition for positive gradient constraint.""" for inp, out in self.POSITIVE_GRADIENT_FLOWS: for index in range(1, len(m.TIMESTEPS) + 1): - if m.TIMESTEPS.at(index)[1] > 0: + if m.TIMESTEPS.at(index) > 0: lhs = ( m.flow[ inp, @@ -269,7 +269,7 @@ def _positive_gradient_flow_rule(model): ] ) rhs = self.positive_gradient[ - inp, out, m.TIMESTEPS.at(index)[1] + inp, out, m.TIMESTEPS.at(index) ] self.positive_gradient_constr.add( (inp, out, m.TIMESTEPS.at(index)), diff --git a/tests/lp_files/source_with_gradient.lp b/tests/lp_files/source_with_gradient.lp index 75f93f31b..c65753b4c 100644 --- a/tests/lp_files/source_with_gradient.lp +++ b/tests/lp_files/source_with_gradient.lp @@ -2,60 +2,60 @@ min objective: -+23 flow(powerplant_electricityBus_0_0) -+23 flow(powerplant_electricityBus_0_1) -+23 flow(powerplant_electricityBus_0_2) ++23 flow(powerplant_electricityBus_0) ++23 flow(powerplant_electricityBus_1) ++23 flow(powerplant_electricityBus_2) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplant_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(powerplant_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplant_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(powerplant_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(powerplant_electricityBus_0_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(powerplant_electricityBus_2) = 0 -c_e_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_0_0)_: +c_e_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_0)_: +1 SimpleFlowBlock_positive_gradient(powerplant_electricityBus_0) = 0 -c_u_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_0_1)_: --1 flow(powerplant_electricityBus_0_0) -+1 flow(powerplant_electricityBus_0_1) +c_u_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_1)_: +-1 flow(powerplant_electricityBus_0) ++1 flow(powerplant_electricityBus_1) -1 SimpleFlowBlock_positive_gradient(powerplant_electricityBus_1) <= 0 -c_u_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_0_2)_: --1 flow(powerplant_electricityBus_0_1) -+1 flow(powerplant_electricityBus_0_2) +c_u_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_2)_: +-1 flow(powerplant_electricityBus_1) ++1 flow(powerplant_electricityBus_2) -1 SimpleFlowBlock_positive_gradient(powerplant_electricityBus_2) <= 0 -c_e_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_0_0)_: +c_e_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_0)_: +1 SimpleFlowBlock_negative_gradient(powerplant_electricityBus_0) = 0 -c_u_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_0_1)_: -+1 flow(powerplant_electricityBus_0_0) --1 flow(powerplant_electricityBus_0_1) +c_u_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_1)_: ++1 flow(powerplant_electricityBus_0) +-1 flow(powerplant_electricityBus_1) -1 SimpleFlowBlock_negative_gradient(powerplant_electricityBus_1) <= 0 -c_u_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_0_2)_: -+1 flow(powerplant_electricityBus_0_1) --1 flow(powerplant_electricityBus_0_2) +c_u_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_2)_: ++1 flow(powerplant_electricityBus_1) +-1 flow(powerplant_electricityBus_2) -1 SimpleFlowBlock_negative_gradient(powerplant_electricityBus_2) <= 0 bounds - 0 <= flow(powerplant_electricityBus_0_0) <= 999 - 0 <= flow(powerplant_electricityBus_0_1) <= 999 - 0 <= flow(powerplant_electricityBus_0_2) <= 999 + 0 <= flow(powerplant_electricityBus_0) <= 999 + 0 <= flow(powerplant_electricityBus_1) <= 999 + 0 <= flow(powerplant_electricityBus_2) <= 999 0 <= SimpleFlowBlock_positive_gradient(powerplant_electricityBus_0) <= 29.97 0 <= SimpleFlowBlock_positive_gradient(powerplant_electricityBus_1) <= 29.97 0 <= SimpleFlowBlock_positive_gradient(powerplant_electricityBus_2) <= 29.97 From f6de18d53abf877d5cb42d14c71a2f1d0db94db8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 12 Jun 2024 15:24:50 +0200 Subject: [PATCH 12/17] Finish single period tests --- .../solph/components/_offset_converter.py | 4 +- src/oemof/solph/constraints/storage_level.py | 6 +- tests/constraint_tests.py | 2 +- tests/lp_files/offsetconverter.lp | 78 +++++++------- tests/lp_files/offsetconverter_nonconvex.lp | 78 +++++++------- .../offsetconverter_nonconvex_investment.lp | 78 +++++++------- tests/lp_files/storage_level_constraint.lp | 100 +++++++++--------- 7 files changed, 173 insertions(+), 173 deletions(-) diff --git a/src/oemof/solph/components/_offset_converter.py b/src/oemof/solph/components/_offset_converter.py index 35e593107..70aa30659 100644 --- a/src/oemof/solph/components/_offset_converter.py +++ b/src/oemof/solph/components/_offset_converter.py @@ -273,8 +273,8 @@ def _create(self, group=None): self.relation = Constraint( [ - (n, i, o, p, t) - for p, t in m.TIMEINDEX + (n, i, o, t) + for t in m.TIMESTEPS for n in group for o in out_flows[n] for i in in_flows[n] diff --git a/src/oemof/solph/constraints/storage_level.py b/src/oemof/solph/constraints/storage_level.py index ca22d1a78..87c892bdf 100644 --- a/src/oemof/solph/constraints/storage_level.py +++ b/src/oemof/solph/constraints/storage_level.py @@ -153,9 +153,9 @@ def _input_active_rule(m): ) # Define constraints on the input flows - def _constraint_input_rule(m, i, p, t): + def _constraint_input_rule(m, i, t): return ( - m.flow[i, multiplexer_bus, p, t] + m.flow[i, multiplexer_bus, t] / m.flows[i, multiplexer_bus].nominal_value <= 1 - inactive_input[i, t] ) @@ -165,7 +165,7 @@ def _constraint_input_rule(m, i, p, t): f"{name}_input_constraint", po.Constraint( INPUTS, - model.TIMEINDEX, + model.TIMESTEPS, rule=_constraint_input_rule, ), ) diff --git a/tests/constraint_tests.py b/tests/constraint_tests.py index 80bfdcaa1..bd55fce8a 100644 --- a/tests/constraint_tests.py +++ b/tests/constraint_tests.py @@ -1932,7 +1932,7 @@ def test_storage_level_constraint(self): with storage_level_constraint """ es = solph.EnergySystem( - timeindex=pd.date_range("2022-01-01", freq="1H", periods=2), + timeindex=pd.date_range("2022-01-01", freq="h", periods=2), infer_last_interval=True, ) diff --git a/tests/lp_files/offsetconverter.lp b/tests/lp_files/offsetconverter.lp index 59b7c425e..077dc1dc0 100644 --- a/tests/lp_files/offsetconverter.lp +++ b/tests/lp_files/offsetconverter.lp @@ -6,28 +6,28 @@ objective: s.t. -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_gasboiler_0_0) +c_e_BusBlock_balance(gasBus_0)_: ++1 flow(gasBus_gasboiler_0) = 0 -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_gasboiler_0_1) +c_e_BusBlock_balance(gasBus_1)_: ++1 flow(gasBus_gasboiler_1) = 0 -c_e_BusBlock_balance(gasBus_0_2)_: -+1 flow(gasBus_gasboiler_0_2) +c_e_BusBlock_balance(gasBus_2)_: ++1 flow(gasBus_gasboiler_2) = 0 -c_e_BusBlock_balance(thermalBus_0_0)_: -+1 flow(gasboiler_thermalBus_0_0) +c_e_BusBlock_balance(thermalBus_0)_: ++1 flow(gasboiler_thermalBus_0) = 0 -c_e_BusBlock_balance(thermalBus_0_1)_: -+1 flow(gasboiler_thermalBus_0_1) +c_e_BusBlock_balance(thermalBus_1)_: ++1 flow(gasboiler_thermalBus_1) = 0 -c_e_BusBlock_balance(thermalBus_0_2)_: -+1 flow(gasboiler_thermalBus_0_2) +c_e_BusBlock_balance(thermalBus_2)_: ++1 flow(gasboiler_thermalBus_2) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(gasBus_gasboiler_0)_: @@ -45,62 +45,62 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(gasBus_gasboiler_2)_: -100 NonConvexFlowBlock_status(gasBus_gasboiler_2) = 0 -c_u_NonConvexFlowBlock_min(gasBus_gasboiler_0_0)_: --1 flow(gasBus_gasboiler_0_0) +c_u_NonConvexFlowBlock_min(gasBus_gasboiler_0)_: +-1 flow(gasBus_gasboiler_0) +0.32 NonConvexFlowBlock_status_nominal(gasBus_gasboiler_0) <= 0 -c_u_NonConvexFlowBlock_min(gasBus_gasboiler_0_1)_: --1 flow(gasBus_gasboiler_0_1) +c_u_NonConvexFlowBlock_min(gasBus_gasboiler_1)_: +-1 flow(gasBus_gasboiler_1) +0.32 NonConvexFlowBlock_status_nominal(gasBus_gasboiler_1) <= 0 -c_u_NonConvexFlowBlock_min(gasBus_gasboiler_0_2)_: --1 flow(gasBus_gasboiler_0_2) +c_u_NonConvexFlowBlock_min(gasBus_gasboiler_2)_: +-1 flow(gasBus_gasboiler_2) +0.32 NonConvexFlowBlock_status_nominal(gasBus_gasboiler_2) <= 0 -c_u_NonConvexFlowBlock_max(gasBus_gasboiler_0_0)_: -+1 flow(gasBus_gasboiler_0_0) +c_u_NonConvexFlowBlock_max(gasBus_gasboiler_0)_: ++1 flow(gasBus_gasboiler_0) -1 NonConvexFlowBlock_status_nominal(gasBus_gasboiler_0) <= 0 -c_u_NonConvexFlowBlock_max(gasBus_gasboiler_0_1)_: -+1 flow(gasBus_gasboiler_0_1) +c_u_NonConvexFlowBlock_max(gasBus_gasboiler_1)_: ++1 flow(gasBus_gasboiler_1) -1 NonConvexFlowBlock_status_nominal(gasBus_gasboiler_1) <= 0 -c_u_NonConvexFlowBlock_max(gasBus_gasboiler_0_2)_: -+1 flow(gasBus_gasboiler_0_2) +c_u_NonConvexFlowBlock_max(gasBus_gasboiler_2)_: ++1 flow(gasBus_gasboiler_2) -1 NonConvexFlowBlock_status_nominal(gasBus_gasboiler_2) <= 0 -c_e_OffsetConverterBlock_relation(gasboiler_0_0)_: -+0.9 flow(gasBus_gasboiler_0_0) --1 flow(gasboiler_thermalBus_0_0) +c_e_OffsetConverterBlock_relation(gasboiler_0)_: ++0.9 flow(gasBus_gasboiler_0) +-1 flow(gasboiler_thermalBus_0) -17 NonConvexFlowBlock_status(gasBus_gasboiler_0) = 0 -c_e_OffsetConverterBlock_relation(gasboiler_0_1)_: -+0.9 flow(gasBus_gasboiler_0_1) --1 flow(gasboiler_thermalBus_0_1) +c_e_OffsetConverterBlock_relation(gasboiler_1)_: ++0.9 flow(gasBus_gasboiler_1) +-1 flow(gasboiler_thermalBus_1) -17 NonConvexFlowBlock_status(gasBus_gasboiler_1) = 0 -c_e_OffsetConverterBlock_relation(gasboiler_0_2)_: -+0.9 flow(gasBus_gasboiler_0_2) --1 flow(gasboiler_thermalBus_0_2) +c_e_OffsetConverterBlock_relation(gasboiler_2)_: ++0.9 flow(gasBus_gasboiler_2) +-1 flow(gasboiler_thermalBus_2) -17 NonConvexFlowBlock_status(gasBus_gasboiler_2) = 0 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(gasBus_gasboiler_0_0) <= 100 - 0 <= flow(gasBus_gasboiler_0_1) <= 100 - 0 <= flow(gasBus_gasboiler_0_2) <= 100 - 0 <= flow(gasboiler_thermalBus_0_0) <= +inf - 0 <= flow(gasboiler_thermalBus_0_1) <= +inf - 0 <= flow(gasboiler_thermalBus_0_2) <= +inf + 0 <= flow(gasBus_gasboiler_0) <= 100 + 0 <= flow(gasBus_gasboiler_1) <= 100 + 0 <= flow(gasBus_gasboiler_2) <= 100 + 0 <= flow(gasboiler_thermalBus_0) <= +inf + 0 <= flow(gasboiler_thermalBus_1) <= +inf + 0 <= flow(gasboiler_thermalBus_2) <= +inf 0 <= NonConvexFlowBlock_status_nominal(gasBus_gasboiler_0) <= +inf 0 <= NonConvexFlowBlock_status(gasBus_gasboiler_0) <= 1 0 <= NonConvexFlowBlock_status_nominal(gasBus_gasboiler_1) <= +inf diff --git a/tests/lp_files/offsetconverter_nonconvex.lp b/tests/lp_files/offsetconverter_nonconvex.lp index 7a4352f4a..3268bcf5c 100644 --- a/tests/lp_files/offsetconverter_nonconvex.lp +++ b/tests/lp_files/offsetconverter_nonconvex.lp @@ -6,28 +6,28 @@ objective: s.t. -c_e_BusBlock_balance(bus_diesel_0_0)_: -+1 flow(bus_diesel_diesel_genset_0_0) +c_e_BusBlock_balance(bus_diesel_0)_: ++1 flow(bus_diesel_diesel_genset_0) = 0 -c_e_BusBlock_balance(bus_diesel_0_1)_: -+1 flow(bus_diesel_diesel_genset_0_1) +c_e_BusBlock_balance(bus_diesel_1)_: ++1 flow(bus_diesel_diesel_genset_1) = 0 -c_e_BusBlock_balance(bus_diesel_0_2)_: -+1 flow(bus_diesel_diesel_genset_0_2) +c_e_BusBlock_balance(bus_diesel_2)_: ++1 flow(bus_diesel_diesel_genset_2) = 0 -c_e_BusBlock_balance(bus_electricity_0_0)_: -+1 flow(diesel_genset_bus_electricity_0_0) +c_e_BusBlock_balance(bus_electricity_0)_: ++1 flow(diesel_genset_bus_electricity_0) = 0 -c_e_BusBlock_balance(bus_electricity_0_1)_: -+1 flow(diesel_genset_bus_electricity_0_1) +c_e_BusBlock_balance(bus_electricity_1)_: ++1 flow(diesel_genset_bus_electricity_1) = 0 -c_e_BusBlock_balance(bus_electricity_0_2)_: -+1 flow(diesel_genset_bus_electricity_0_2) +c_e_BusBlock_balance(bus_electricity_2)_: ++1 flow(diesel_genset_bus_electricity_2) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(diesel_genset_bus_electricity_0)_: @@ -45,62 +45,62 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(diesel_genset_bus_electricity_2 -100 NonConvexFlowBlock_status(diesel_genset_bus_electricity_2) = 0 -c_u_NonConvexFlowBlock_min(diesel_genset_bus_electricity_0_0)_: --1 flow(diesel_genset_bus_electricity_0_0) +c_u_NonConvexFlowBlock_min(diesel_genset_bus_electricity_0)_: +-1 flow(diesel_genset_bus_electricity_0) +0.2 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) <= 0 -c_u_NonConvexFlowBlock_min(diesel_genset_bus_electricity_0_1)_: --1 flow(diesel_genset_bus_electricity_0_1) +c_u_NonConvexFlowBlock_min(diesel_genset_bus_electricity_1)_: +-1 flow(diesel_genset_bus_electricity_1) +0.2 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) <= 0 -c_u_NonConvexFlowBlock_min(diesel_genset_bus_electricity_0_2)_: --1 flow(diesel_genset_bus_electricity_0_2) +c_u_NonConvexFlowBlock_min(diesel_genset_bus_electricity_2)_: +-1 flow(diesel_genset_bus_electricity_2) +0.2 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) <= 0 -c_u_NonConvexFlowBlock_max(diesel_genset_bus_electricity_0_0)_: -+1 flow(diesel_genset_bus_electricity_0_0) +c_u_NonConvexFlowBlock_max(diesel_genset_bus_electricity_0)_: ++1 flow(diesel_genset_bus_electricity_0) -1 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) <= 0 -c_u_NonConvexFlowBlock_max(diesel_genset_bus_electricity_0_1)_: -+1 flow(diesel_genset_bus_electricity_0_1) +c_u_NonConvexFlowBlock_max(diesel_genset_bus_electricity_1)_: ++1 flow(diesel_genset_bus_electricity_1) -1 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) <= 0 -c_u_NonConvexFlowBlock_max(diesel_genset_bus_electricity_0_2)_: -+1 flow(diesel_genset_bus_electricity_0_2) +c_u_NonConvexFlowBlock_max(diesel_genset_bus_electricity_2)_: ++1 flow(diesel_genset_bus_electricity_2) -1 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) <= 0 -c_e_OffsetConverterBlock_relation(diesel_genset_bus_diesel_bus_electricity_0_0)_: -+0.5 flow(bus_diesel_diesel_genset_0_0) --1 flow(diesel_genset_bus_electricity_0_0) +c_e_OffsetConverterBlock_relation(diesel_genset_bus_diesel_bus_electricity_0)_: ++0.5 flow(bus_diesel_diesel_genset_0) +-1 flow(diesel_genset_bus_electricity_0) +2.5 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) = 0 -c_e_OffsetConverterBlock_relation(diesel_genset_bus_diesel_bus_electricity_0_1)_: -+0.5 flow(bus_diesel_diesel_genset_0_1) --1 flow(diesel_genset_bus_electricity_0_1) +c_e_OffsetConverterBlock_relation(diesel_genset_bus_diesel_bus_electricity_1)_: ++0.5 flow(bus_diesel_diesel_genset_1) +-1 flow(diesel_genset_bus_electricity_1) +2.5 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) = 0 -c_e_OffsetConverterBlock_relation(diesel_genset_bus_diesel_bus_electricity_0_2)_: -+0.5 flow(bus_diesel_diesel_genset_0_2) --1 flow(diesel_genset_bus_electricity_0_2) +c_e_OffsetConverterBlock_relation(diesel_genset_bus_diesel_bus_electricity_2)_: ++0.5 flow(bus_diesel_diesel_genset_2) +-1 flow(diesel_genset_bus_electricity_2) +2.5 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) = 0 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(bus_diesel_diesel_genset_0_0) <= +inf - 0 <= flow(bus_diesel_diesel_genset_0_1) <= +inf - 0 <= flow(bus_diesel_diesel_genset_0_2) <= +inf - 0 <= flow(diesel_genset_bus_electricity_0_0) <= 100 - 0 <= flow(diesel_genset_bus_electricity_0_1) <= 100 - 0 <= flow(diesel_genset_bus_electricity_0_2) <= 100 + 0 <= flow(bus_diesel_diesel_genset_0) <= +inf + 0 <= flow(bus_diesel_diesel_genset_1) <= +inf + 0 <= flow(bus_diesel_diesel_genset_2) <= +inf + 0 <= flow(diesel_genset_bus_electricity_0) <= 100 + 0 <= flow(diesel_genset_bus_electricity_1) <= 100 + 0 <= flow(diesel_genset_bus_electricity_2) <= 100 0 <= NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) <= +inf 0 <= NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) <= +inf 0 <= NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) <= +inf diff --git a/tests/lp_files/offsetconverter_nonconvex_investment.lp b/tests/lp_files/offsetconverter_nonconvex_investment.lp index 0e48b77af..22727f19a 100644 --- a/tests/lp_files/offsetconverter_nonconvex_investment.lp +++ b/tests/lp_files/offsetconverter_nonconvex_investment.lp @@ -6,28 +6,28 @@ objective: s.t. -c_e_BusBlock_balance(bus_diesel_0_0)_: -+1 flow(bus_diesel_diesel_genset_0_0) +c_e_BusBlock_balance(bus_diesel_0)_: ++1 flow(bus_diesel_diesel_genset_0) = 0 -c_e_BusBlock_balance(bus_diesel_0_1)_: -+1 flow(bus_diesel_diesel_genset_0_1) +c_e_BusBlock_balance(bus_diesel_1)_: ++1 flow(bus_diesel_diesel_genset_1) = 0 -c_e_BusBlock_balance(bus_diesel_0_2)_: -+1 flow(bus_diesel_diesel_genset_0_2) +c_e_BusBlock_balance(bus_diesel_2)_: ++1 flow(bus_diesel_diesel_genset_2) = 0 -c_e_BusBlock_balance(bus_electricity_0_0)_: -+1 flow(diesel_genset_bus_electricity_0_0) +c_e_BusBlock_balance(bus_electricity_0)_: ++1 flow(diesel_genset_bus_electricity_0) = 0 -c_e_BusBlock_balance(bus_electricity_0_1)_: -+1 flow(diesel_genset_bus_electricity_0_1) +c_e_BusBlock_balance(bus_electricity_1)_: ++1 flow(diesel_genset_bus_electricity_1) = 0 -c_e_BusBlock_balance(bus_electricity_0_2)_: -+1 flow(diesel_genset_bus_electricity_0_2) +c_e_BusBlock_balance(bus_electricity_2)_: ++1 flow(diesel_genset_bus_electricity_2) = 0 c_l_InvestNonConvexFlowBlock_minimum_investment(diesel_genset_bus_electricity_0)_: @@ -38,33 +38,33 @@ c_u_InvestNonConvexFlowBlock_maximum_investment(diesel_genset_bus_electricity_0) +1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) <= 1234 -c_u_InvestNonConvexFlowBlock_min(diesel_genset_bus_electricity_0_0)_: --1 flow(diesel_genset_bus_electricity_0_0) +c_u_InvestNonConvexFlowBlock_min(diesel_genset_bus_electricity_0)_: +-1 flow(diesel_genset_bus_electricity_0) +0.2 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) <= 0 -c_u_InvestNonConvexFlowBlock_min(diesel_genset_bus_electricity_0_1)_: --1 flow(diesel_genset_bus_electricity_0_1) +c_u_InvestNonConvexFlowBlock_min(diesel_genset_bus_electricity_1)_: +-1 flow(diesel_genset_bus_electricity_1) +0.2 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) <= 0 -c_u_InvestNonConvexFlowBlock_min(diesel_genset_bus_electricity_0_2)_: --1 flow(diesel_genset_bus_electricity_0_2) +c_u_InvestNonConvexFlowBlock_min(diesel_genset_bus_electricity_2)_: +-1 flow(diesel_genset_bus_electricity_2) +0.2 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) <= 0 -c_u_InvestNonConvexFlowBlock_max(diesel_genset_bus_electricity_0_0)_: -+1 flow(diesel_genset_bus_electricity_0_0) +c_u_InvestNonConvexFlowBlock_max(diesel_genset_bus_electricity_0)_: ++1 flow(diesel_genset_bus_electricity_0) -1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) <= 0 -c_u_InvestNonConvexFlowBlock_max(diesel_genset_bus_electricity_0_1)_: -+1 flow(diesel_genset_bus_electricity_0_1) +c_u_InvestNonConvexFlowBlock_max(diesel_genset_bus_electricity_1)_: ++1 flow(diesel_genset_bus_electricity_1) -1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) <= 0 -c_u_InvestNonConvexFlowBlock_max(diesel_genset_bus_electricity_0_2)_: -+1 flow(diesel_genset_bus_electricity_0_2) +c_u_InvestNonConvexFlowBlock_max(diesel_genset_bus_electricity_2)_: ++1 flow(diesel_genset_bus_electricity_2) -1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) <= 0 @@ -116,32 +116,32 @@ c_u_InvestNonConvexFlowBlock_invest_nc_three(diesel_genset_bus_electricity_0_2)_ +1234 InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_2) <= 1234 -c_e_OffsetConverterBlock_relation(diesel_genset_bus_diesel_bus_electricity_0_0)_: -+0.5 flow(bus_diesel_diesel_genset_0_0) --1 flow(diesel_genset_bus_electricity_0_0) +c_e_OffsetConverterBlock_relation(diesel_genset_bus_diesel_bus_electricity_0)_: ++0.5 flow(bus_diesel_diesel_genset_0) +-1 flow(diesel_genset_bus_electricity_0) +2.5 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) = 0 -c_e_OffsetConverterBlock_relation(diesel_genset_bus_diesel_bus_electricity_0_1)_: -+0.5 flow(bus_diesel_diesel_genset_0_1) --1 flow(diesel_genset_bus_electricity_0_1) +c_e_OffsetConverterBlock_relation(diesel_genset_bus_diesel_bus_electricity_1)_: ++0.5 flow(bus_diesel_diesel_genset_1) +-1 flow(diesel_genset_bus_electricity_1) +2.5 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) = 0 -c_e_OffsetConverterBlock_relation(diesel_genset_bus_diesel_bus_electricity_0_2)_: -+0.5 flow(bus_diesel_diesel_genset_0_2) --1 flow(diesel_genset_bus_electricity_0_2) +c_e_OffsetConverterBlock_relation(diesel_genset_bus_diesel_bus_electricity_2)_: ++0.5 flow(bus_diesel_diesel_genset_2) +-1 flow(diesel_genset_bus_electricity_2) +2.5 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) = 0 bounds 0 <= InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) <= 1234 - 0 <= flow(bus_diesel_diesel_genset_0_0) <= +inf - 0 <= flow(bus_diesel_diesel_genset_0_1) <= +inf - 0 <= flow(bus_diesel_diesel_genset_0_2) <= +inf - 0 <= flow(diesel_genset_bus_electricity_0_0) <= +inf - 0 <= flow(diesel_genset_bus_electricity_0_1) <= +inf - 0 <= flow(diesel_genset_bus_electricity_0_2) <= +inf + 0 <= flow(bus_diesel_diesel_genset_0) <= +inf + 0 <= flow(bus_diesel_diesel_genset_1) <= +inf + 0 <= flow(bus_diesel_diesel_genset_2) <= +inf + 0 <= flow(diesel_genset_bus_electricity_0) <= +inf + 0 <= flow(diesel_genset_bus_electricity_1) <= +inf + 0 <= flow(diesel_genset_bus_electricity_2) <= +inf 0 <= InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) <= +inf 0 <= InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) <= +inf 0 <= InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) <= +inf diff --git a/tests/lp_files/storage_level_constraint.lp b/tests/lp_files/storage_level_constraint.lp index c0b329c20..884d8ec07 100644 --- a/tests/lp_files/storage_level_constraint.lp +++ b/tests/lp_files/storage_level_constraint.lp @@ -2,12 +2,12 @@ min objective: --0.125 flow(multiplexer_out_0_0_0) --0.125 flow(multiplexer_out_0_0_1) --0.125 flow(multiplexer_out_1_0_0) --0.125 flow(multiplexer_out_1_0_1) -+0.25 flow(in_0_multiplexer_0_0) -+0.25 flow(in_0_multiplexer_0_1) +-0.125 flow(multiplexer_out_0_0) +-0.125 flow(multiplexer_out_0_1) +-0.125 flow(multiplexer_out_1_0) +-0.125 flow(multiplexer_out_1_1) ++0.25 flow(in_0_multiplexer_0) ++0.25 flow(in_0_multiplexer_1) s.t. @@ -31,23 +31,23 @@ c_u_multiplexer_output_active_constraint(out_1_1)_: -0.25 GenericStorageBlock_storage_content(storage_2) <= 0 -c_u_multiplexer_output_constraint(out_0_0_0)_: -+4.0 flow(multiplexer_out_0_0_0) +c_u_multiplexer_output_constraint(out_0_0)_: ++4.0 flow(multiplexer_out_0_0) -1 multiplexer_active_output(out_0_0) <= 0 -c_u_multiplexer_output_constraint(out_0_0_1)_: -+4.0 flow(multiplexer_out_0_0_1) +c_u_multiplexer_output_constraint(out_0_1)_: ++4.0 flow(multiplexer_out_0_1) -1 multiplexer_active_output(out_0_1) <= 0 -c_u_multiplexer_output_constraint(out_1_0_0)_: -+8.0 flow(multiplexer_out_1_0_0) +c_u_multiplexer_output_constraint(out_1_0)_: ++8.0 flow(multiplexer_out_1_0) -1 multiplexer_active_output(out_1_0) <= 0 -c_u_multiplexer_output_constraint(out_1_0_1)_: -+8.0 flow(multiplexer_out_1_0_1) +c_u_multiplexer_output_constraint(out_1_1)_: ++8.0 flow(multiplexer_out_1_1) -1 multiplexer_active_output(out_1_1) <= 0 @@ -60,43 +60,43 @@ c_u_multiplexer_input_active_constraint(in_1_1)_: -1 multiplexer_active_input(in_1_1) <= 0.25 -c_u_multiplexer_input_constraint(in_1_0_0)_: -+8.0 flow(in_1_multiplexer_0_0) +c_u_multiplexer_input_constraint(in_1_0)_: ++8.0 flow(in_1_multiplexer_0) +1 multiplexer_active_input(in_1_0) <= 1 -c_u_multiplexer_input_constraint(in_1_0_1)_: -+8.0 flow(in_1_multiplexer_0_1) +c_u_multiplexer_input_constraint(in_1_1)_: ++8.0 flow(in_1_multiplexer_1) +1 multiplexer_active_input(in_1_1) <= 1 -c_e_BusBlock_balance(multiplexer_0_0)_: --1 flow(multiplexer_storage_0_0) --1 flow(multiplexer_out_0_0_0) --1 flow(multiplexer_out_1_0_0) -+1 flow(storage_multiplexer_0_0) -+1 flow(in_0_multiplexer_0_0) -+1 flow(in_1_multiplexer_0_0) +c_e_BusBlock_balance(multiplexer_0)_: +-1 flow(multiplexer_storage_0) +-1 flow(multiplexer_out_0_0) +-1 flow(multiplexer_out_1_0) ++1 flow(storage_multiplexer_0) ++1 flow(in_0_multiplexer_0) ++1 flow(in_1_multiplexer_0) = 0 -c_e_BusBlock_balance(multiplexer_0_1)_: --1 flow(multiplexer_storage_0_1) --1 flow(multiplexer_out_0_0_1) --1 flow(multiplexer_out_1_0_1) -+1 flow(storage_multiplexer_0_1) -+1 flow(in_0_multiplexer_0_1) -+1 flow(in_1_multiplexer_0_1) +c_e_BusBlock_balance(multiplexer_1)_: +-1 flow(multiplexer_storage_1) +-1 flow(multiplexer_out_0_1) +-1 flow(multiplexer_out_1_1) ++1 flow(storage_multiplexer_1) ++1 flow(in_0_multiplexer_1) ++1 flow(in_1_multiplexer_1) = 0 -c_e_GenericStorageBlock_balance(storage_0_0)_: --1 flow(multiplexer_storage_0_0) -+1 flow(storage_multiplexer_0_0) +c_e_GenericStorageBlock_balance(storage_0)_: +-1 flow(multiplexer_storage_0) ++1 flow(storage_multiplexer_0) +1 GenericStorageBlock_storage_content(storage_1) = 3.0 -c_e_GenericStorageBlock_balance(storage_0_1)_: --1 flow(multiplexer_storage_0_1) -+1 flow(storage_multiplexer_0_1) +c_e_GenericStorageBlock_balance(storage_1)_: +-1 flow(multiplexer_storage_1) ++1 flow(storage_multiplexer_1) -0.75 GenericStorageBlock_storage_content(storage_1) +1 GenericStorageBlock_storage_content(storage_2) = 0 @@ -106,18 +106,18 @@ c_e_GenericStorageBlock_balanced_cstr(storage)_: = 4 bounds - 0 <= flow(multiplexer_storage_0_0) <= +inf - 0 <= flow(multiplexer_storage_0_1) <= +inf - 0.0 <= flow(multiplexer_out_0_0_0) <= 0.25 - 0.0 <= flow(multiplexer_out_0_0_1) <= 0.25 - 0.0 <= flow(multiplexer_out_1_0_0) <= 0.125 - 0.0 <= flow(multiplexer_out_1_0_1) <= 0.125 - 0 <= flow(storage_multiplexer_0_0) <= +inf - 0 <= flow(storage_multiplexer_0_1) <= +inf - 0.0 <= flow(in_0_multiplexer_0_0) <= 0.5 - 0.0 <= flow(in_0_multiplexer_0_1) <= 0.5 - 0.0 <= flow(in_1_multiplexer_0_0) <= 0.125 - 0.0 <= flow(in_1_multiplexer_0_1) <= 0.125 + 0 <= flow(multiplexer_storage_0) <= +inf + 0 <= flow(multiplexer_storage_1) <= +inf + 0.0 <= flow(multiplexer_out_0_0) <= 0.25 + 0.0 <= flow(multiplexer_out_0_1) <= 0.25 + 0.0 <= flow(multiplexer_out_1_0) <= 0.125 + 0.0 <= flow(multiplexer_out_1_1) <= 0.125 + 0 <= flow(storage_multiplexer_0) <= +inf + 0 <= flow(storage_multiplexer_1) <= +inf + 0.0 <= flow(in_0_multiplexer_0) <= 0.5 + 0.0 <= flow(in_0_multiplexer_1) <= 0.5 + 0.0 <= flow(in_1_multiplexer_0) <= 0.125 + 0.0 <= flow(in_1_multiplexer_1) <= 0.125 0 <= multiplexer_active_output(out_0_0) <= 1 0 <= multiplexer_active_output(out_0_1) <= 1 0 <= multiplexer_active_output(out_1_0) <= 1 From 28ae2bc3a9014e027ce86e762058fb2c0a63c5bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 12 Jun 2024 15:33:54 +0200 Subject: [PATCH 13/17] Adjust additional test lp files --- .../lp_files/offsetconverter_multi_period.lp | 156 +++++++++--------- .../source_with_gradient_multi_period.lp | 112 ++++++------- 2 files changed, 134 insertions(+), 134 deletions(-) diff --git a/tests/lp_files/offsetconverter_multi_period.lp b/tests/lp_files/offsetconverter_multi_period.lp index 0725237b4..99a61249a 100644 --- a/tests/lp_files/offsetconverter_multi_period.lp +++ b/tests/lp_files/offsetconverter_multi_period.lp @@ -6,52 +6,52 @@ objective: s.t. -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_gasboiler_0_0) +c_e_BusBlock_balance(gasBus_0)_: ++1 flow(gasBus_gasboiler_0) = 0 -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_gasboiler_0_1) +c_e_BusBlock_balance(gasBus_1)_: ++1 flow(gasBus_gasboiler_1) = 0 -c_e_BusBlock_balance(gasBus_1_2)_: -+1 flow(gasBus_gasboiler_1_2) +c_e_BusBlock_balance(gasBus_2)_: ++1 flow(gasBus_gasboiler_2) = 0 -c_e_BusBlock_balance(gasBus_1_3)_: -+1 flow(gasBus_gasboiler_1_3) +c_e_BusBlock_balance(gasBus_3)_: ++1 flow(gasBus_gasboiler_3) = 0 -c_e_BusBlock_balance(gasBus_2_4)_: -+1 flow(gasBus_gasboiler_2_4) +c_e_BusBlock_balance(gasBus_4)_: ++1 flow(gasBus_gasboiler_4) = 0 -c_e_BusBlock_balance(gasBus_2_5)_: -+1 flow(gasBus_gasboiler_2_5) +c_e_BusBlock_balance(gasBus_5)_: ++1 flow(gasBus_gasboiler_5) = 0 -c_e_BusBlock_balance(thermalBus_0_0)_: -+1 flow(gasboiler_thermalBus_0_0) +c_e_BusBlock_balance(thermalBus_0)_: ++1 flow(gasboiler_thermalBus_0) = 0 -c_e_BusBlock_balance(thermalBus_0_1)_: -+1 flow(gasboiler_thermalBus_0_1) +c_e_BusBlock_balance(thermalBus_1)_: ++1 flow(gasboiler_thermalBus_1) = 0 -c_e_BusBlock_balance(thermalBus_1_2)_: -+1 flow(gasboiler_thermalBus_1_2) +c_e_BusBlock_balance(thermalBus_2)_: ++1 flow(gasboiler_thermalBus_2) = 0 -c_e_BusBlock_balance(thermalBus_1_3)_: -+1 flow(gasboiler_thermalBus_1_3) +c_e_BusBlock_balance(thermalBus_3)_: ++1 flow(gasboiler_thermalBus_3) = 0 -c_e_BusBlock_balance(thermalBus_2_4)_: -+1 flow(gasboiler_thermalBus_2_4) +c_e_BusBlock_balance(thermalBus_4)_: ++1 flow(gasboiler_thermalBus_4) = 0 -c_e_BusBlock_balance(thermalBus_2_5)_: -+1 flow(gasboiler_thermalBus_2_5) +c_e_BusBlock_balance(thermalBus_5)_: ++1 flow(gasboiler_thermalBus_5) = 0 c_e_NonConvexFlowBlock_status_nominal_constraint(gasboiler_thermalBus_0)_: @@ -84,116 +84,116 @@ c_e_NonConvexFlowBlock_status_nominal_constraint(gasboiler_thermalBus_5)_: -100 NonConvexFlowBlock_status(gasboiler_thermalBus_5) = 0 -c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_0_0)_: --1 flow(gasboiler_thermalBus_0_0) +c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_0)_: +-1 flow(gasboiler_thermalBus_0) +0.32 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_0) <= 0 -c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_0_1)_: --1 flow(gasboiler_thermalBus_0_1) +c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_1)_: +-1 flow(gasboiler_thermalBus_1) +0.32 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_1) <= 0 -c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_1_2)_: --1 flow(gasboiler_thermalBus_1_2) +c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_2)_: +-1 flow(gasboiler_thermalBus_2) +0.32 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_2) <= 0 -c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_1_3)_: --1 flow(gasboiler_thermalBus_1_3) +c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_3)_: +-1 flow(gasboiler_thermalBus_3) +0.32 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_3) <= 0 -c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_2_4)_: --1 flow(gasboiler_thermalBus_2_4) +c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_4)_: +-1 flow(gasboiler_thermalBus_4) +0.32 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_4) <= 0 -c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_2_5)_: --1 flow(gasboiler_thermalBus_2_5) +c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_5)_: +-1 flow(gasboiler_thermalBus_5) +0.32 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_5) <= 0 -c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_0_0)_: -+1 flow(gasboiler_thermalBus_0_0) +c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_0)_: ++1 flow(gasboiler_thermalBus_0) -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_0) <= 0 -c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_0_1)_: -+1 flow(gasboiler_thermalBus_0_1) +c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_1)_: ++1 flow(gasboiler_thermalBus_1) -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_1) <= 0 -c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_1_2)_: -+1 flow(gasboiler_thermalBus_1_2) +c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_2)_: ++1 flow(gasboiler_thermalBus_2) -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_2) <= 0 -c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_1_3)_: -+1 flow(gasboiler_thermalBus_1_3) +c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_3)_: ++1 flow(gasboiler_thermalBus_3) -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_3) <= 0 -c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_2_4)_: -+1 flow(gasboiler_thermalBus_2_4) +c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_4)_: ++1 flow(gasboiler_thermalBus_4) -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_4) <= 0 -c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_2_5)_: -+1 flow(gasboiler_thermalBus_2_5) +c_u_NonConvexFlowBlock_max(gasboiler_thermalBus_5)_: ++1 flow(gasboiler_thermalBus_5) -1 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_5) <= 0 -c_e_OffsetConverterBlock_relation(gasboiler_gasBus_thermalBus_0_0)_: -+0.9 flow(gasBus_gasboiler_0_0) --1 flow(gasboiler_thermalBus_0_0) +c_e_OffsetConverterBlock_relation(gasboiler_gasBus_thermalBus_0)_: ++0.9 flow(gasBus_gasboiler_0) +-1 flow(gasboiler_thermalBus_0) -17 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_0) = 0 -c_e_OffsetConverterBlock_relation(gasboiler_gasBus_thermalBus_0_1)_: -+0.9 flow(gasBus_gasboiler_0_1) --1 flow(gasboiler_thermalBus_0_1) +c_e_OffsetConverterBlock_relation(gasboiler_gasBus_thermalBus_1)_: ++0.9 flow(gasBus_gasboiler_1) +-1 flow(gasboiler_thermalBus_1) -17 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_1) = 0 -c_e_OffsetConverterBlock_relation(gasboiler_gasBus_thermalBus_1_2)_: -+0.9 flow(gasBus_gasboiler_1_2) --1 flow(gasboiler_thermalBus_1_2) +c_e_OffsetConverterBlock_relation(gasboiler_gasBus_thermalBus_2)_: ++0.9 flow(gasBus_gasboiler_2) +-1 flow(gasboiler_thermalBus_2) -17 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_2) = 0 -c_e_OffsetConverterBlock_relation(gasboiler_gasBus_thermalBus_1_3)_: -+0.9 flow(gasBus_gasboiler_1_3) --1 flow(gasboiler_thermalBus_1_3) +c_e_OffsetConverterBlock_relation(gasboiler_gasBus_thermalBus_3)_: ++0.9 flow(gasBus_gasboiler_3) +-1 flow(gasboiler_thermalBus_3) -17 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_3) = 0 -c_e_OffsetConverterBlock_relation(gasboiler_gasBus_thermalBus_2_4)_: -+0.9 flow(gasBus_gasboiler_2_4) --1 flow(gasboiler_thermalBus_2_4) +c_e_OffsetConverterBlock_relation(gasboiler_gasBus_thermalBus_4)_: ++0.9 flow(gasBus_gasboiler_4) +-1 flow(gasboiler_thermalBus_4) -17 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_4) = 0 -c_e_OffsetConverterBlock_relation(gasboiler_gasBus_thermalBus_2_5)_: -+0.9 flow(gasBus_gasboiler_2_5) --1 flow(gasboiler_thermalBus_2_5) +c_e_OffsetConverterBlock_relation(gasboiler_gasBus_thermalBus_5)_: ++0.9 flow(gasBus_gasboiler_5) +-1 flow(gasboiler_thermalBus_5) -17 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_5) = 0 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(gasBus_gasboiler_0_0) <= +inf - 0 <= flow(gasBus_gasboiler_0_1) <= +inf - 0 <= flow(gasBus_gasboiler_1_2) <= +inf - 0 <= flow(gasBus_gasboiler_1_3) <= +inf - 0 <= flow(gasBus_gasboiler_2_4) <= +inf - 0 <= flow(gasBus_gasboiler_2_5) <= +inf - 0 <= flow(gasboiler_thermalBus_0_0) <= 100 - 0 <= flow(gasboiler_thermalBus_0_1) <= 100 - 0 <= flow(gasboiler_thermalBus_1_2) <= 100 - 0 <= flow(gasboiler_thermalBus_1_3) <= 100 - 0 <= flow(gasboiler_thermalBus_2_4) <= 100 - 0 <= flow(gasboiler_thermalBus_2_5) <= 100 + 0 <= flow(gasBus_gasboiler_0) <= +inf + 0 <= flow(gasBus_gasboiler_1) <= +inf + 0 <= flow(gasBus_gasboiler_2) <= +inf + 0 <= flow(gasBus_gasboiler_3) <= +inf + 0 <= flow(gasBus_gasboiler_4) <= +inf + 0 <= flow(gasBus_gasboiler_5) <= +inf + 0 <= flow(gasboiler_thermalBus_0) <= 100 + 0 <= flow(gasboiler_thermalBus_1) <= 100 + 0 <= flow(gasboiler_thermalBus_2) <= 100 + 0 <= flow(gasboiler_thermalBus_3) <= 100 + 0 <= flow(gasboiler_thermalBus_4) <= 100 + 0 <= flow(gasboiler_thermalBus_5) <= 100 0 <= NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_0) <= +inf 0 <= NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_1) <= +inf 0 <= NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_2) <= +inf diff --git a/tests/lp_files/source_with_gradient_multi_period.lp b/tests/lp_files/source_with_gradient_multi_period.lp index 5ff719ac8..4775248b3 100644 --- a/tests/lp_files/source_with_gradient_multi_period.lp +++ b/tests/lp_files/source_with_gradient_multi_period.lp @@ -2,114 +2,114 @@ min objective: -+23 flow(powerplant_electricityBus_0_0) -+23 flow(powerplant_electricityBus_0_1) -+22.549019607843135 flow(powerplant_electricityBus_1_2) -+22.549019607843135 flow(powerplant_electricityBus_1_3) -+22.10688196847366 flow(powerplant_electricityBus_2_4) -+22.10688196847366 flow(powerplant_electricityBus_2_5) ++23 flow(powerplant_electricityBus_0) ++23 flow(powerplant_electricityBus_1) ++22.549019607843135 flow(powerplant_electricityBus_2) ++22.549019607843135 flow(powerplant_electricityBus_3) ++22.10688196847366 flow(powerplant_electricityBus_4) ++22.10688196847366 flow(powerplant_electricityBus_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplant_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(powerplant_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplant_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(powerplant_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(powerplant_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(powerplant_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(powerplant_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(powerplant_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(powerplant_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(powerplant_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(powerplant_electricityBus_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(powerplant_electricityBus_5) = 0 -c_e_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_0_0)_: +c_e_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_0)_: +1 SimpleFlowBlock_positive_gradient(powerplant_electricityBus_0) = 0 -c_u_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_0_1)_: --1 flow(powerplant_electricityBus_0_0) -+1 flow(powerplant_electricityBus_0_1) +c_u_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_1)_: +-1 flow(powerplant_electricityBus_0) ++1 flow(powerplant_electricityBus_1) -1 SimpleFlowBlock_positive_gradient(powerplant_electricityBus_1) <= 0 -c_u_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_1_2)_: --1 flow(powerplant_electricityBus_0_1) -+1 flow(powerplant_electricityBus_1_2) +c_u_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_2)_: +-1 flow(powerplant_electricityBus_1) ++1 flow(powerplant_electricityBus_2) -1 SimpleFlowBlock_positive_gradient(powerplant_electricityBus_2) <= 0 -c_u_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_1_3)_: --1 flow(powerplant_electricityBus_1_2) -+1 flow(powerplant_electricityBus_1_3) +c_u_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_3)_: +-1 flow(powerplant_electricityBus_2) ++1 flow(powerplant_electricityBus_3) -1 SimpleFlowBlock_positive_gradient(powerplant_electricityBus_3) <= 0 -c_u_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_2_4)_: --1 flow(powerplant_electricityBus_1_3) -+1 flow(powerplant_electricityBus_2_4) +c_u_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_4)_: +-1 flow(powerplant_electricityBus_3) ++1 flow(powerplant_electricityBus_4) -1 SimpleFlowBlock_positive_gradient(powerplant_electricityBus_4) <= 0 -c_u_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_2_5)_: --1 flow(powerplant_electricityBus_2_4) -+1 flow(powerplant_electricityBus_2_5) +c_u_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_5)_: +-1 flow(powerplant_electricityBus_4) ++1 flow(powerplant_electricityBus_5) -1 SimpleFlowBlock_positive_gradient(powerplant_electricityBus_5) <= 0 -c_e_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_0_0)_: +c_e_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_0)_: +1 SimpleFlowBlock_negative_gradient(powerplant_electricityBus_0) = 0 -c_u_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_0_1)_: -+1 flow(powerplant_electricityBus_0_0) --1 flow(powerplant_electricityBus_0_1) +c_u_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_1)_: ++1 flow(powerplant_electricityBus_0) +-1 flow(powerplant_electricityBus_1) -1 SimpleFlowBlock_negative_gradient(powerplant_electricityBus_1) <= 0 -c_u_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_1_2)_: -+1 flow(powerplant_electricityBus_0_1) --1 flow(powerplant_electricityBus_1_2) +c_u_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_2)_: ++1 flow(powerplant_electricityBus_1) +-1 flow(powerplant_electricityBus_2) -1 SimpleFlowBlock_negative_gradient(powerplant_electricityBus_2) <= 0 -c_u_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_1_3)_: -+1 flow(powerplant_electricityBus_1_2) --1 flow(powerplant_electricityBus_1_3) +c_u_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_3)_: ++1 flow(powerplant_electricityBus_2) +-1 flow(powerplant_electricityBus_3) -1 SimpleFlowBlock_negative_gradient(powerplant_electricityBus_3) <= 0 -c_u_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_2_4)_: -+1 flow(powerplant_electricityBus_1_3) --1 flow(powerplant_electricityBus_2_4) +c_u_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_4)_: ++1 flow(powerplant_electricityBus_3) +-1 flow(powerplant_electricityBus_4) -1 SimpleFlowBlock_negative_gradient(powerplant_electricityBus_4) <= 0 -c_u_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_2_5)_: -+1 flow(powerplant_electricityBus_2_4) --1 flow(powerplant_electricityBus_2_5) +c_u_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_5)_: ++1 flow(powerplant_electricityBus_4) +-1 flow(powerplant_electricityBus_5) -1 SimpleFlowBlock_negative_gradient(powerplant_electricityBus_5) <= 0 bounds - 0 <= flow(powerplant_electricityBus_0_0) <= 999 - 0 <= flow(powerplant_electricityBus_0_1) <= 999 - 0 <= flow(powerplant_electricityBus_1_2) <= 999 - 0 <= flow(powerplant_electricityBus_1_3) <= 999 - 0 <= flow(powerplant_electricityBus_2_4) <= 999 - 0 <= flow(powerplant_electricityBus_2_5) <= 999 + 0 <= flow(powerplant_electricityBus_0) <= 999 + 0 <= flow(powerplant_electricityBus_1) <= 999 + 0 <= flow(powerplant_electricityBus_2) <= 999 + 0 <= flow(powerplant_electricityBus_3) <= 999 + 0 <= flow(powerplant_electricityBus_4) <= 999 + 0 <= flow(powerplant_electricityBus_5) <= 999 0 <= SimpleFlowBlock_positive_gradient(powerplant_electricityBus_0) <= 29.97 0 <= SimpleFlowBlock_positive_gradient(powerplant_electricityBus_1) <= 29.97 0 <= SimpleFlowBlock_positive_gradient(powerplant_electricityBus_2) <= 29.97 From 30fbd8c29867f2398b05c9b4fc6c5ee5873105ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 12 Jun 2024 15:39:16 +0200 Subject: [PATCH 14/17] Finish adjusting multi period tests --- src/oemof/solph/flows/_simple_flow_block.py | 2 +- tests/lp_files/fixed_costs_sources.lp | 126 +++++++++--------- .../flow_reaching_lifetime_initial_age.lp | 56 ++++---- 3 files changed, 92 insertions(+), 92 deletions(-) diff --git a/src/oemof/solph/flows/_simple_flow_block.py b/src/oemof/solph/flows/_simple_flow_block.py index 469ec1311..7cf21bced 100644 --- a/src/oemof/solph/flows/_simple_flow_block.py +++ b/src/oemof/solph/flows/_simple_flow_block.py @@ -359,7 +359,7 @@ def _lifetime_age_output_rule(block): m.flows[inp, out].lifetime - m.flows[inp, out].age <= m.es.periods_years[p] ): - lhs = m.flow[inp, out, p, ts] + lhs = m.flow[inp, out, ts] rhs = 0 self.lifetime_age_output.add( (inp, out, p, ts), (lhs == rhs) diff --git a/tests/lp_files/fixed_costs_sources.lp b/tests/lp_files/fixed_costs_sources.lp index 8629b5295..20fdfeb81 100644 --- a/tests/lp_files/fixed_costs_sources.lp +++ b/tests/lp_files/fixed_costs_sources.lp @@ -2,90 +2,90 @@ min objective: -+235.90542099192618 ONE_VAR_CONSTANT -+25 flow(pv_forever_electricityBus_0_0) -+25 flow(pv_forever_electricityBus_0_1) -+24.509803921568626 flow(pv_forever_electricityBus_1_2) -+24.509803921568626 flow(pv_forever_electricityBus_1_3) -+24.029219530949632 flow(pv_forever_electricityBus_2_4) -+24.029219530949632 flow(pv_forever_electricityBus_2_5) -+25 flow(pv_with_lifetime_electricityBus_0_0) -+25 flow(pv_with_lifetime_electricityBus_0_1) -+24.509803921568626 flow(pv_with_lifetime_electricityBus_1_2) -+24.509803921568626 flow(pv_with_lifetime_electricityBus_1_3) -+24.029219530949632 flow(pv_with_lifetime_electricityBus_2_4) -+24.029219530949632 flow(pv_with_lifetime_electricityBus_2_5) -+25 flow(pv_with_lifetime_and_age_electricityBus_0_0) -+25 flow(pv_with_lifetime_and_age_electricityBus_0_1) -+24.509803921568626 flow(pv_with_lifetime_and_age_electricityBus_1_2) -+24.509803921568626 flow(pv_with_lifetime_and_age_electricityBus_1_3) -+24.029219530949632 flow(pv_with_lifetime_and_age_electricityBus_2_4) -+24.029219530949632 flow(pv_with_lifetime_and_age_electricityBus_2_5) ++235.90542099192615 ONE_VAR_CONSTANT ++25 flow(pv_forever_electricityBus_0) ++25 flow(pv_forever_electricityBus_1) ++24.509803921568626 flow(pv_forever_electricityBus_2) ++24.509803921568626 flow(pv_forever_electricityBus_3) ++24.029219530949632 flow(pv_forever_electricityBus_4) ++24.029219530949632 flow(pv_forever_electricityBus_5) ++25 flow(pv_with_lifetime_electricityBus_0) ++25 flow(pv_with_lifetime_electricityBus_1) ++24.509803921568626 flow(pv_with_lifetime_electricityBus_2) ++24.509803921568626 flow(pv_with_lifetime_electricityBus_3) ++24.029219530949632 flow(pv_with_lifetime_electricityBus_4) ++24.029219530949632 flow(pv_with_lifetime_electricityBus_5) ++25 flow(pv_with_lifetime_and_age_electricityBus_0) ++25 flow(pv_with_lifetime_and_age_electricityBus_1) ++24.509803921568626 flow(pv_with_lifetime_and_age_electricityBus_2) ++24.509803921568626 flow(pv_with_lifetime_and_age_electricityBus_3) ++24.029219530949632 flow(pv_with_lifetime_and_age_electricityBus_4) ++24.029219530949632 flow(pv_with_lifetime_and_age_electricityBus_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(pv_forever_electricityBus_0_0) -+1 flow(pv_with_lifetime_electricityBus_0_0) -+1 flow(pv_with_lifetime_and_age_electricityBus_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(pv_forever_electricityBus_0) ++1 flow(pv_with_lifetime_electricityBus_0) ++1 flow(pv_with_lifetime_and_age_electricityBus_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(pv_forever_electricityBus_0_1) -+1 flow(pv_with_lifetime_electricityBus_0_1) -+1 flow(pv_with_lifetime_and_age_electricityBus_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(pv_forever_electricityBus_1) ++1 flow(pv_with_lifetime_electricityBus_1) ++1 flow(pv_with_lifetime_and_age_electricityBus_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(pv_forever_electricityBus_1_2) -+1 flow(pv_with_lifetime_electricityBus_1_2) -+1 flow(pv_with_lifetime_and_age_electricityBus_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(pv_forever_electricityBus_2) ++1 flow(pv_with_lifetime_electricityBus_2) ++1 flow(pv_with_lifetime_and_age_electricityBus_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(pv_forever_electricityBus_1_3) -+1 flow(pv_with_lifetime_electricityBus_1_3) -+1 flow(pv_with_lifetime_and_age_electricityBus_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(pv_forever_electricityBus_3) ++1 flow(pv_with_lifetime_electricityBus_3) ++1 flow(pv_with_lifetime_and_age_electricityBus_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(pv_forever_electricityBus_2_4) -+1 flow(pv_with_lifetime_electricityBus_2_4) -+1 flow(pv_with_lifetime_and_age_electricityBus_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(pv_forever_electricityBus_4) ++1 flow(pv_with_lifetime_electricityBus_4) ++1 flow(pv_with_lifetime_and_age_electricityBus_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(pv_forever_electricityBus_2_5) -+1 flow(pv_with_lifetime_electricityBus_2_5) -+1 flow(pv_with_lifetime_and_age_electricityBus_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(pv_forever_electricityBus_5) ++1 flow(pv_with_lifetime_electricityBus_5) ++1 flow(pv_with_lifetime_and_age_electricityBus_5) = 0 c_e_SimpleFlowBlock_lifetime_age_output(pv_with_lifetime_and_age_electricityBus_2_4)_: -+1 flow(pv_with_lifetime_and_age_electricityBus_2_4) ++1 flow(pv_with_lifetime_and_age_electricityBus_4) = 0 c_e_SimpleFlowBlock_lifetime_age_output(pv_with_lifetime_and_age_electricityBus_2_5)_: -+1 flow(pv_with_lifetime_and_age_electricityBus_2_5) ++1 flow(pv_with_lifetime_and_age_electricityBus_5) = 0 bounds 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= flow(pv_forever_electricityBus_0_0) <= 8.0 - 0 <= flow(pv_forever_electricityBus_0_1) <= 8.0 - 0 <= flow(pv_forever_electricityBus_1_2) <= 8.0 - 0 <= flow(pv_forever_electricityBus_1_3) <= 8.0 - 0 <= flow(pv_forever_electricityBus_2_4) <= 8.0 - 0 <= flow(pv_forever_electricityBus_2_5) <= 8.0 - 0 <= flow(pv_with_lifetime_electricityBus_0_0) <= 8.0 - 0 <= flow(pv_with_lifetime_electricityBus_0_1) <= 8.0 - 0 <= flow(pv_with_lifetime_electricityBus_1_2) <= 8.0 - 0 <= flow(pv_with_lifetime_electricityBus_1_3) <= 8.0 - 0 <= flow(pv_with_lifetime_electricityBus_2_4) <= 8.0 - 0 <= flow(pv_with_lifetime_electricityBus_2_5) <= 8.0 - 0 <= flow(pv_with_lifetime_and_age_electricityBus_0_0) <= 8.0 - 0 <= flow(pv_with_lifetime_and_age_electricityBus_0_1) <= 8.0 - 0 <= flow(pv_with_lifetime_and_age_electricityBus_1_2) <= 8.0 - 0 <= flow(pv_with_lifetime_and_age_electricityBus_1_3) <= 8.0 - 0 <= flow(pv_with_lifetime_and_age_electricityBus_2_4) <= 8.0 - 0 <= flow(pv_with_lifetime_and_age_electricityBus_2_5) <= 8.0 + 0 <= flow(pv_forever_electricityBus_0) <= 8.0 + 0 <= flow(pv_forever_electricityBus_1) <= 8.0 + 0 <= flow(pv_forever_electricityBus_2) <= 8.0 + 0 <= flow(pv_forever_electricityBus_3) <= 8.0 + 0 <= flow(pv_forever_electricityBus_4) <= 8.0 + 0 <= flow(pv_forever_electricityBus_5) <= 8.0 + 0 <= flow(pv_with_lifetime_electricityBus_0) <= 8.0 + 0 <= flow(pv_with_lifetime_electricityBus_1) <= 8.0 + 0 <= flow(pv_with_lifetime_electricityBus_2) <= 8.0 + 0 <= flow(pv_with_lifetime_electricityBus_3) <= 8.0 + 0 <= flow(pv_with_lifetime_electricityBus_4) <= 8.0 + 0 <= flow(pv_with_lifetime_electricityBus_5) <= 8.0 + 0 <= flow(pv_with_lifetime_and_age_electricityBus_0) <= 8.0 + 0 <= flow(pv_with_lifetime_and_age_electricityBus_1) <= 8.0 + 0 <= flow(pv_with_lifetime_and_age_electricityBus_2) <= 8.0 + 0 <= flow(pv_with_lifetime_and_age_electricityBus_3) <= 8.0 + 0 <= flow(pv_with_lifetime_and_age_electricityBus_4) <= 8.0 + 0 <= flow(pv_with_lifetime_and_age_electricityBus_5) <= 8.0 end diff --git a/tests/lp_files/flow_reaching_lifetime_initial_age.lp b/tests/lp_files/flow_reaching_lifetime_initial_age.lp index 61f0a0a7a..e1f5c8da4 100644 --- a/tests/lp_files/flow_reaching_lifetime_initial_age.lp +++ b/tests/lp_files/flow_reaching_lifetime_initial_age.lp @@ -2,60 +2,60 @@ min objective: -+25 flow(electricityBus_excess_0_0) -+25 flow(electricityBus_excess_0_1) -+24.509803921568626 flow(electricityBus_excess_1_2) -+24.509803921568626 flow(electricityBus_excess_1_3) -+24.029219530949632 flow(electricityBus_excess_2_4) -+24.029219530949632 flow(electricityBus_excess_2_5) ++25 flow(electricityBus_excess_0) ++25 flow(electricityBus_excess_1) ++24.509803921568626 flow(electricityBus_excess_2) ++24.509803921568626 flow(electricityBus_excess_3) ++24.029219530949632 flow(electricityBus_excess_4) ++24.029219530949632 flow(electricityBus_excess_5) s.t. -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(electricityBus_excess_0_0) +c_e_BusBlock_balance(electricityBus_0)_: ++1 flow(electricityBus_excess_0) = 0 -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(electricityBus_excess_0_1) +c_e_BusBlock_balance(electricityBus_1)_: ++1 flow(electricityBus_excess_1) = 0 -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(electricityBus_excess_1_2) +c_e_BusBlock_balance(electricityBus_2)_: ++1 flow(electricityBus_excess_2) = 0 -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(electricityBus_excess_1_3) +c_e_BusBlock_balance(electricityBus_3)_: ++1 flow(electricityBus_excess_3) = 0 -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(electricityBus_excess_2_4) +c_e_BusBlock_balance(electricityBus_4)_: ++1 flow(electricityBus_excess_4) = 0 -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(electricityBus_excess_2_5) +c_e_BusBlock_balance(electricityBus_5)_: ++1 flow(electricityBus_excess_5) = 0 c_e_SimpleFlowBlock_lifetime_age_output(electricityBus_excess_1_2)_: -+1 flow(electricityBus_excess_1_2) ++1 flow(electricityBus_excess_2) = 0 c_e_SimpleFlowBlock_lifetime_age_output(electricityBus_excess_1_3)_: -+1 flow(electricityBus_excess_1_3) ++1 flow(electricityBus_excess_3) = 0 c_e_SimpleFlowBlock_lifetime_age_output(electricityBus_excess_2_4)_: -+1 flow(electricityBus_excess_2_4) ++1 flow(electricityBus_excess_4) = 0 c_e_SimpleFlowBlock_lifetime_age_output(electricityBus_excess_2_5)_: -+1 flow(electricityBus_excess_2_5) ++1 flow(electricityBus_excess_5) = 0 bounds - 0 <= flow(electricityBus_excess_0_0) <= 8.0 - 0 <= flow(electricityBus_excess_0_1) <= 8.0 - 0 <= flow(electricityBus_excess_1_2) <= 8.0 - 0 <= flow(electricityBus_excess_1_3) <= 8.0 - 0 <= flow(electricityBus_excess_2_4) <= 8.0 - 0 <= flow(electricityBus_excess_2_5) <= 8.0 + 0 <= flow(electricityBus_excess_0) <= 8.0 + 0 <= flow(electricityBus_excess_1) <= 8.0 + 0 <= flow(electricityBus_excess_2) <= 8.0 + 0 <= flow(electricityBus_excess_3) <= 8.0 + 0 <= flow(electricityBus_excess_4) <= 8.0 + 0 <= flow(electricityBus_excess_5) <= 8.0 end From a3693b24f3af584e507eba52ab4fcc6b1a97be5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 19 Jun 2024 14:29:20 +0200 Subject: [PATCH 15/17] Add missing lp file --- .../offsetconverter_nonconvex_investment.lp | 155 ++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 tests/lp_files/offsetconverter_nonconvex_investment.lp diff --git a/tests/lp_files/offsetconverter_nonconvex_investment.lp b/tests/lp_files/offsetconverter_nonconvex_investment.lp new file mode 100644 index 000000000..9b91b95ff --- /dev/null +++ b/tests/lp_files/offsetconverter_nonconvex_investment.lp @@ -0,0 +1,155 @@ +\* Source Pyomo model name=Model *\ + +min +objective: ++100 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) + +s.t. + +c_e_BusBlock_balance(bus_diesel_0)_: ++1 flow(bus_diesel_diesel_genset_0) += 0 + +c_e_BusBlock_balance(bus_diesel_1)_: ++1 flow(bus_diesel_diesel_genset_1) += 0 + +c_e_BusBlock_balance(bus_diesel_2)_: ++1 flow(bus_diesel_diesel_genset_2) += 0 + +c_e_BusBlock_balance(bus_electricity_0)_: ++1 flow(diesel_genset_bus_electricity_0) += 0 + +c_e_BusBlock_balance(bus_electricity_1)_: ++1 flow(diesel_genset_bus_electricity_1) += 0 + +c_e_BusBlock_balance(bus_electricity_2)_: ++1 flow(diesel_genset_bus_electricity_2) += 0 + +c_l_InvestNonConvexFlowBlock_minimum_investment(diesel_genset_bus_electricity_0)_: ++1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) +>= 0 + +c_u_InvestNonConvexFlowBlock_maximum_investment(diesel_genset_bus_electricity_0)_: ++1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) +<= 1234 + +c_u_InvestNonConvexFlowBlock_min(diesel_genset_bus_electricity_0)_: +-1 flow(diesel_genset_bus_electricity_0) ++0.2 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) +<= 0 + +c_u_InvestNonConvexFlowBlock_min(diesel_genset_bus_electricity_1)_: +-1 flow(diesel_genset_bus_electricity_1) ++0.2 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) +<= 0 + +c_u_InvestNonConvexFlowBlock_min(diesel_genset_bus_electricity_2)_: +-1 flow(diesel_genset_bus_electricity_2) ++0.2 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) +<= 0 + +c_u_InvestNonConvexFlowBlock_max(diesel_genset_bus_electricity_0)_: ++1 flow(diesel_genset_bus_electricity_0) +-1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) +<= 0 + +c_u_InvestNonConvexFlowBlock_max(diesel_genset_bus_electricity_1)_: ++1 flow(diesel_genset_bus_electricity_1) +-1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) +<= 0 + +c_u_InvestNonConvexFlowBlock_max(diesel_genset_bus_electricity_2)_: ++1 flow(diesel_genset_bus_electricity_2) +-1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) +<= 0 + +c_u_InvestNonConvexFlowBlock_invest_nc_one(diesel_genset_bus_electricity_0_0)_: ++1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) +-1234 InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_0) +<= 0 + +c_u_InvestNonConvexFlowBlock_invest_nc_one(diesel_genset_bus_electricity_0_1)_: ++1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) +-1234 InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_1) +<= 0 + +c_u_InvestNonConvexFlowBlock_invest_nc_one(diesel_genset_bus_electricity_0_2)_: ++1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) +-1234 InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_2) +<= 0 + +c_u_InvestNonConvexFlowBlock_invest_nc_two(diesel_genset_bus_electricity_0_0)_: +-1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) ++1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) +<= 0 + +c_u_InvestNonConvexFlowBlock_invest_nc_two(diesel_genset_bus_electricity_0_1)_: +-1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) ++1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) +<= 0 + +c_u_InvestNonConvexFlowBlock_invest_nc_two(diesel_genset_bus_electricity_0_2)_: +-1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) ++1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) +<= 0 + +c_u_InvestNonConvexFlowBlock_invest_nc_three(diesel_genset_bus_electricity_0_0)_: ++1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) +-1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) ++1234 InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_0) +<= 1234 + +c_u_InvestNonConvexFlowBlock_invest_nc_three(diesel_genset_bus_electricity_0_1)_: ++1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) +-1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) ++1234 InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_1) +<= 1234 + +c_u_InvestNonConvexFlowBlock_invest_nc_three(diesel_genset_bus_electricity_0_2)_: ++1 InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) +-1 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) ++1234 InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_2) +<= 1234 + +c_e_OffsetConverterBlock_relation(diesel_genset_bus_electricity_bus_diesel_0)_: +-1 flow(bus_diesel_diesel_genset_0) ++2.410714285714285 flow(diesel_genset_bus_electricity_0) ++0.08928571428571486 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) += 0 + +c_e_OffsetConverterBlock_relation(diesel_genset_bus_electricity_bus_diesel_1)_: +-1 flow(bus_diesel_diesel_genset_1) ++2.410714285714285 flow(diesel_genset_bus_electricity_1) ++0.08928571428571486 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) += 0 + +c_e_OffsetConverterBlock_relation(diesel_genset_bus_electricity_bus_diesel_2)_: +-1 flow(bus_diesel_diesel_genset_2) ++2.410714285714285 flow(diesel_genset_bus_electricity_2) ++0.08928571428571486 InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) += 0 + +bounds + 0 <= InvestNonConvexFlowBlock_invest(diesel_genset_bus_electricity_0) <= 1234 + 0 <= flow(bus_diesel_diesel_genset_0) <= +inf + 0 <= flow(bus_diesel_diesel_genset_1) <= +inf + 0 <= flow(bus_diesel_diesel_genset_2) <= +inf + 0 <= flow(diesel_genset_bus_electricity_0) <= +inf + 0 <= flow(diesel_genset_bus_electricity_1) <= +inf + 0 <= flow(diesel_genset_bus_electricity_2) <= +inf + 0 <= InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_0) <= +inf + 0 <= InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_1) <= +inf + 0 <= InvestNonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_2) <= +inf + 0 <= InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_0) <= 1 + 0 <= InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_1) <= 1 + 0 <= InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_2) <= 1 +binary + InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_0) + InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_1) + InvestNonConvexFlowBlock_status(diesel_genset_bus_electricity_2) +end From ca095fc1005d8ddd78741bbac85c8cfae21f86ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Fri, 21 Jun 2024 18:40:06 +0200 Subject: [PATCH 16/17] Add refined time index to whatsnew file --- docs/whatsnew/v0-5-3.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/whatsnew/v0-5-3.rst b/docs/whatsnew/v0-5-3.rst index 8c656ac09..e07e71cee 100644 --- a/docs/whatsnew/v0-5-3.rst +++ b/docs/whatsnew/v0-5-3.rst @@ -35,6 +35,7 @@ Other changes * Unified (usage) documentation for `OffsetConverter` * Remove approach to model cellular systems (was more confusing than it helped) +* Refine indexing of flows (period index was not needed). Known issues ############ From 1b26471163422d4a928cc4cee6f018ec76929d48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Mon, 24 Jun 2024 10:29:00 +0200 Subject: [PATCH 17/17] Adapt naming in processing --- src/oemof/solph/processing.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/oemof/solph/processing.py b/src/oemof/solph/processing.py index 1c066a82c..7b97b552a 100644 --- a/src/oemof/solph/processing.py +++ b/src/oemof/solph/processing.py @@ -273,12 +273,12 @@ def results(model, remove_last_time_point=False): # add dual variables for bus constraints if model.dual is not None: grouped = groupby( - sorted(model.BusBlock.balance.iterkeys()), lambda p: p[0] + sorted(model.BusBlock.balance.iterkeys()), lambda t: t[0] ) - for bus, timeindex in grouped: + for bus, timestep in grouped: duals = [ model.dual[model.BusBlock.balance[bus, t]] - for _, t in timeindex + for _, t in timestep ] if model.es.periods is None: df = pd.DataFrame({"duals": duals}, index=result_index[:-1])