From 8caffe73d95c29eedfda94dd6369828f50fe1b62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 18 Jan 2024 14:23:47 +0100 Subject: [PATCH 01/54] Adjust indexing for content of InvestStorageBlock Adjust indexing to be same as for content of storage without investment. --- src/oemof/solph/components/_generic_storage.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/oemof/solph/components/_generic_storage.py b/src/oemof/solph/components/_generic_storage.py index d1731ee1d..6fd6e6cab 100644 --- a/src/oemof/solph/components/_generic_storage.py +++ b/src/oemof/solph/components/_generic_storage.py @@ -1208,7 +1208,7 @@ def _create(self, group=None): # ######################### Variables ################################ self.storage_content = Var( - self.INVESTSTORAGES, m.TIMESTEPS, within=NonNegativeReals + self.INVESTSTORAGES, m.TIMEPOINTS, within=NonNegativeReals ) def _storage_investvar_bound_rule(block, n, p): @@ -1527,13 +1527,13 @@ def _storage_balance_first_rule(block, n): def _storage_balance_rule(block, n, p, t): """ - Rule definition for the storage balance of every storage n - for every time step but the first. + Rule definition for the storage balance of every storage n and + every timestep. """ expr = 0 - expr += block.storage_content[n, t] + expr += block.storage_content[n, t + 1] expr += ( - -block.storage_content[n, t - 1] + -block.storage_content[n, t] * (1 - n.loss_rate[t]) ** m.timeincrement[t] ) expr += ( From 1fcf6ffe3621cdb5ddc10fd4758c535ce8728441 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Tue, 11 Jun 2024 20:51:22 +0200 Subject: [PATCH 02/54] Remove constraint tests --- tests/constraint_tests.py | 1999 ---- tests/lp_files/activity_costs.lp | 85 - tests/lp_files/activity_costs_multi_period.lp | 160 - tests/lp_files/connect_investment.lp | 210 - .../connect_investment_multi_period.lp | 699 -- tests/lp_files/converter.lp | 135 - tests/lp_files/converter_invest.lp | 158 - .../lp_files/converter_invest_multi_period.lp | 370 - .../converter_invest_with_existing.lp | 158 - ...erter_invest_with_existing_multi_period.lp | 371 - tests/lp_files/converter_multi_period.lp | 261 - tests/lp_files/dsm_module_DIW.lp | 157 - tests/lp_files/dsm_module_DIW_extended.lp | 179 - .../dsm_module_DIW_extended_multi_period.lp | 395 - tests/lp_files/dsm_module_DIW_invest.lp | 184 - .../dsm_module_DIW_invest_multi_period.lp | 487 - ...DIW_invest_multi_period_remaining_value.lp | 487 - tests/lp_files/dsm_module_DIW_multi_period.lp | 349 - tests/lp_files/dsm_module_DLR.lp | 355 - tests/lp_files/dsm_module_DLR_delay_time.lp | 353 - tests/lp_files/dsm_module_DLR_extended.lp | 310 - .../dsm_module_DLR_extended_multi_period.lp | 706 -- tests/lp_files/dsm_module_DLR_invest.lp | 375 - .../dsm_module_DLR_invest_multi_period.lp | 824 -- ...DLR_invest_multi_period_remaining_value.lp | 824 -- tests/lp_files/dsm_module_DLR_multi_period.lp | 697 -- tests/lp_files/dsm_module_oemof.lp | 103 - tests/lp_files/dsm_module_oemof_extended.lp | 97 - .../dsm_module_oemof_extended_multi_period.lp | 192 - tests/lp_files/dsm_module_oemof_invest.lp | 110 - .../dsm_module_oemof_invest_multi_period.lp | 301 - ...mof_invest_multi_period_remaining_value.lp | 301 - .../lp_files/dsm_module_oemof_multi_period.lp | 204 - tests/lp_files/emission_budget_limit.lp | 38 - tests/lp_files/emission_limit.lp | 47 - tests/lp_files/emission_limit_no_error.lp | 38 - tests/lp_files/equate_flows.lp | 63 - tests/lp_files/fixed_costs_sources.lp | 91 - tests/lp_files/fixed_source_invest_sink.lp | 57 - .../fixed_source_invest_sink_multi_period.lp | 166 - tests/lp_files/fixed_source_variable_sink.lp | 27 - ...fixed_source_variable_sink_multi_period.lp | 45 - tests/lp_files/flow_count_limit.lp | 219 - .../lp_files/flow_count_limit_multi_period.lp | 378 - tests/lp_files/flow_invest_with_offset.lp | 71 - .../flow_invest_with_offset_multi_period.lp | 206 - ...ith_offset_multi_period_remaining_value.lp | 206 - .../flow_invest_with_offset_no_minimum.lp | 70 - ...est_with_offset_no_minimum_multi_period.lp | 203 - tests/lp_files/flow_invest_without_offset.lp | 70 - ...flow_invest_without_offset_multi_period.lp | 203 - ...out_offset_multi_period_remaining_value.lp | 203 - ...flow_nonconvex_invest_bounded_converter.lp | 155 - tests/lp_files/flow_reaching_lifetime.lp | 53 - .../flow_reaching_lifetime_initial_age.lp | 61 - tests/lp_files/generic_invest_limit.lp | 110 - tests/lp_files/inactivity_costs.lp | 87 - .../lp_files/inactivity_costs_multi_period.lp | 162 - tests/lp_files/integer_source.lp | 49 - tests/lp_files/invest_non_convex_flow.lp | 146 - tests/lp_files/invest_source_fixed_sink.lp | 50 - .../invest_source_fixed_sink_multi_period.lp | 154 - tests/lp_files/investment_limit.lp | 176 - .../lp_files/investment_limit_with_dsm_DIW.lp | 211 - .../lp_files/investment_limit_with_dsm_DLR.lp | 308 - .../investment_limit_with_dsm_oemof.lp | 154 - tests/lp_files/linear_converter.lp | 57 - tests/lp_files/linear_converter_chp.lp | 87 - tests/lp_files/linear_converter_chp_invest.lp | 110 - ...inear_converter_chp_invest_multi_period.lp | 274 - .../linear_converter_chp_multi_period.lp | 165 - tests/lp_files/linear_converter_invest.lp | 80 - .../linear_converter_invest_multi_period.lp | 230 - ...inear_converter_invest_multi_period_old.lp | 231 - ...ter_invest_multi_period_remaining_value.lp | 230 - .../lp_files/linear_converter_multi_period.lp | 105 - tests/lp_files/link.lp | 83 - tests/lp_files/max_source_min_sink.lp | 33 - .../max_source_min_sink_multi_period.lp | 57 - tests/lp_files/maximum_shutdowns.lp | 111 - .../maximum_shutdowns_multi_period.lp | 210 - tests/lp_files/maximum_startups.lp | 111 - .../lp_files/maximum_startups_multi_period.lp | 210 - tests/lp_files/min_max_runtime.lp | 120 - .../lp_files/min_max_runtime_multi_period.lp | 271 - tests/lp_files/multi_period_period_length.lp | 8065 ----------------- tests/lp_files/nominal_value_to_zero.lp | 26 - .../nominal_value_to_zero_multi_period.lp | 41 - tests/lp_files/nonequidistant_timeindex.lp | 252 - tests/lp_files/offsetconverter.lp | 114 - .../lp_files/offsetconverter_multi_period.lp | 216 - tests/lp_files/offsetconverter_nonconvex.lp | 114 - .../offsetconverter_nonconvex_investment.lp | 155 - tests/lp_files/periodical_emission_limit.lp | 44 - tests/lp_files/periodical_investment_limit.lp | 583 -- ...eriodical_investment_limit_with_dsm_DIW.lp | 605 -- ...eriodical_investment_limit_with_dsm_DLR.lp | 753 -- ...iodical_investment_limit_with_dsm_oemof.lp | 454 - .../lp_files/piecewise_linear_converter_cc.lp | 295 - ...cewise_linear_converter_cc_multi_period.lp | 580 -- .../piecewise_linear_converter_dcc.lp | 286 - ...ewise_linear_converter_dcc_multi_period.lp | 562 -- tests/lp_files/shared_limit.lp | 125 - tests/lp_files/shared_limit_multi_period.lp | 227 - tests/lp_files/source_with_gradient.lp | 65 - .../source_with_gradient_multi_period.lp | 125 - .../source_with_nonconvex_gradient.lp | 125 - ...ce_with_nonconvex_gradient_multi_period.lp | 248 - tests/lp_files/storage.lp | 68 - tests/lp_files/storage_fixed_losses.lp | 63 - .../storage_fixed_losses_multi_period.lp | 114 - tests/lp_files/storage_invest_1.lp | 163 - .../lp_files/storage_invest_1_fixed_losses.lp | 166 - .../lp_files/storage_invest_1_multi_period.lp | 505 -- ...e_invest_1_multi_period_remaining_value.lp | 505 -- tests/lp_files/storage_invest_2.lp | 134 - .../lp_files/storage_invest_2_multi_period.lp | 423 - tests/lp_files/storage_invest_3.lp | 106 - .../lp_files/storage_invest_3_multi_period.lp | 324 - tests/lp_files/storage_invest_4.lp | 88 - .../lp_files/storage_invest_4_multi_period.lp | 206 - tests/lp_files/storage_invest_5.lp | 110 - .../lp_files/storage_invest_5_multi_period.lp | 335 - tests/lp_files/storage_invest_6.lp | 138 - .../lp_files/storage_invest_6_multi_period.lp | 435 - .../lp_files/storage_invest_all_nonconvex.lp | 174 - ...orage_invest_all_nonconvex_multi_period.lp | 541 -- tests/lp_files/storage_invest_minimum.lp | 88 - .../storage_invest_minimum_multi_period.lp | 205 - tests/lp_files/storage_invest_multi_period.lp | 223 - tests/lp_files/storage_invest_unbalanced.lp | 137 - tests/lp_files/storage_invest_with_offset.lp | 177 - ...storage_invest_with_offset_multi_period.lp | 529 -- ...ith_offset_multi_period_remaining_value.lp | 529 -- .../lp_files/storage_invest_without_offset.lp | 176 - ...rage_invest_without_offset_multi_period.lp | 526 -- ...out_offset_multi_period_remaining_value.lp | 526 -- tests/lp_files/storage_level_constraint.lp | 136 - tests/lp_files/storage_multi_period.lp | 114 - tests/lp_files/storage_unbalanced.lp | 57 - .../storage_unbalanced_multi_period.lp | 102 - tests/lp_files/summed_min_source.lp | 39 - .../summed_min_source_multi_period.lp | 63 - tests/lp_files/variable_chp.lp | 140 - tests/lp_files/variable_chp_multi_period.lp | 269 - tests/multi_period_constraint_tests.py | 2473 ----- 146 files changed, 44815 deletions(-) delete mode 100644 tests/constraint_tests.py delete mode 100644 tests/lp_files/activity_costs.lp delete mode 100644 tests/lp_files/activity_costs_multi_period.lp delete mode 100644 tests/lp_files/connect_investment.lp delete mode 100644 tests/lp_files/connect_investment_multi_period.lp delete mode 100644 tests/lp_files/converter.lp delete mode 100644 tests/lp_files/converter_invest.lp delete mode 100644 tests/lp_files/converter_invest_multi_period.lp delete mode 100644 tests/lp_files/converter_invest_with_existing.lp delete mode 100644 tests/lp_files/converter_invest_with_existing_multi_period.lp delete mode 100644 tests/lp_files/converter_multi_period.lp delete mode 100644 tests/lp_files/dsm_module_DIW.lp delete mode 100644 tests/lp_files/dsm_module_DIW_extended.lp delete mode 100644 tests/lp_files/dsm_module_DIW_extended_multi_period.lp delete mode 100644 tests/lp_files/dsm_module_DIW_invest.lp delete mode 100644 tests/lp_files/dsm_module_DIW_invest_multi_period.lp delete mode 100644 tests/lp_files/dsm_module_DIW_invest_multi_period_remaining_value.lp delete mode 100644 tests/lp_files/dsm_module_DIW_multi_period.lp delete mode 100644 tests/lp_files/dsm_module_DLR.lp delete mode 100644 tests/lp_files/dsm_module_DLR_delay_time.lp delete mode 100644 tests/lp_files/dsm_module_DLR_extended.lp delete mode 100644 tests/lp_files/dsm_module_DLR_extended_multi_period.lp delete mode 100644 tests/lp_files/dsm_module_DLR_invest.lp delete mode 100644 tests/lp_files/dsm_module_DLR_invest_multi_period.lp delete mode 100644 tests/lp_files/dsm_module_DLR_invest_multi_period_remaining_value.lp delete mode 100644 tests/lp_files/dsm_module_DLR_multi_period.lp delete mode 100644 tests/lp_files/dsm_module_oemof.lp delete mode 100644 tests/lp_files/dsm_module_oemof_extended.lp delete mode 100644 tests/lp_files/dsm_module_oemof_extended_multi_period.lp delete mode 100644 tests/lp_files/dsm_module_oemof_invest.lp delete mode 100644 tests/lp_files/dsm_module_oemof_invest_multi_period.lp delete mode 100644 tests/lp_files/dsm_module_oemof_invest_multi_period_remaining_value.lp delete mode 100644 tests/lp_files/dsm_module_oemof_multi_period.lp delete mode 100644 tests/lp_files/emission_budget_limit.lp delete mode 100644 tests/lp_files/emission_limit.lp delete mode 100644 tests/lp_files/emission_limit_no_error.lp delete mode 100644 tests/lp_files/equate_flows.lp delete mode 100644 tests/lp_files/fixed_costs_sources.lp delete mode 100644 tests/lp_files/fixed_source_invest_sink.lp delete mode 100644 tests/lp_files/fixed_source_invest_sink_multi_period.lp delete mode 100644 tests/lp_files/fixed_source_variable_sink.lp delete mode 100644 tests/lp_files/fixed_source_variable_sink_multi_period.lp delete mode 100644 tests/lp_files/flow_count_limit.lp delete mode 100644 tests/lp_files/flow_count_limit_multi_period.lp delete mode 100644 tests/lp_files/flow_invest_with_offset.lp delete mode 100644 tests/lp_files/flow_invest_with_offset_multi_period.lp delete mode 100644 tests/lp_files/flow_invest_with_offset_multi_period_remaining_value.lp delete mode 100644 tests/lp_files/flow_invest_with_offset_no_minimum.lp delete mode 100644 tests/lp_files/flow_invest_with_offset_no_minimum_multi_period.lp delete mode 100644 tests/lp_files/flow_invest_without_offset.lp delete mode 100644 tests/lp_files/flow_invest_without_offset_multi_period.lp delete mode 100644 tests/lp_files/flow_invest_without_offset_multi_period_remaining_value.lp delete mode 100644 tests/lp_files/flow_nonconvex_invest_bounded_converter.lp delete mode 100644 tests/lp_files/flow_reaching_lifetime.lp delete mode 100644 tests/lp_files/flow_reaching_lifetime_initial_age.lp delete mode 100644 tests/lp_files/generic_invest_limit.lp delete mode 100644 tests/lp_files/inactivity_costs.lp delete mode 100644 tests/lp_files/inactivity_costs_multi_period.lp delete mode 100644 tests/lp_files/integer_source.lp delete mode 100644 tests/lp_files/invest_non_convex_flow.lp delete mode 100644 tests/lp_files/invest_source_fixed_sink.lp delete mode 100644 tests/lp_files/invest_source_fixed_sink_multi_period.lp delete mode 100644 tests/lp_files/investment_limit.lp delete mode 100644 tests/lp_files/investment_limit_with_dsm_DIW.lp delete mode 100644 tests/lp_files/investment_limit_with_dsm_DLR.lp delete mode 100644 tests/lp_files/investment_limit_with_dsm_oemof.lp delete mode 100644 tests/lp_files/linear_converter.lp delete mode 100644 tests/lp_files/linear_converter_chp.lp delete mode 100644 tests/lp_files/linear_converter_chp_invest.lp delete mode 100644 tests/lp_files/linear_converter_chp_invest_multi_period.lp delete mode 100644 tests/lp_files/linear_converter_chp_multi_period.lp delete mode 100644 tests/lp_files/linear_converter_invest.lp delete mode 100644 tests/lp_files/linear_converter_invest_multi_period.lp delete mode 100644 tests/lp_files/linear_converter_invest_multi_period_old.lp delete mode 100644 tests/lp_files/linear_converter_invest_multi_period_remaining_value.lp delete mode 100644 tests/lp_files/linear_converter_multi_period.lp delete mode 100644 tests/lp_files/link.lp delete mode 100644 tests/lp_files/max_source_min_sink.lp delete mode 100644 tests/lp_files/max_source_min_sink_multi_period.lp delete mode 100644 tests/lp_files/maximum_shutdowns.lp delete mode 100644 tests/lp_files/maximum_shutdowns_multi_period.lp delete mode 100644 tests/lp_files/maximum_startups.lp delete mode 100644 tests/lp_files/maximum_startups_multi_period.lp delete mode 100644 tests/lp_files/min_max_runtime.lp delete mode 100644 tests/lp_files/min_max_runtime_multi_period.lp delete mode 100644 tests/lp_files/multi_period_period_length.lp delete mode 100644 tests/lp_files/nominal_value_to_zero.lp delete mode 100644 tests/lp_files/nominal_value_to_zero_multi_period.lp delete mode 100644 tests/lp_files/nonequidistant_timeindex.lp delete mode 100644 tests/lp_files/offsetconverter.lp delete mode 100644 tests/lp_files/offsetconverter_multi_period.lp delete mode 100644 tests/lp_files/offsetconverter_nonconvex.lp delete mode 100644 tests/lp_files/offsetconverter_nonconvex_investment.lp delete mode 100644 tests/lp_files/periodical_emission_limit.lp delete mode 100644 tests/lp_files/periodical_investment_limit.lp delete mode 100644 tests/lp_files/periodical_investment_limit_with_dsm_DIW.lp delete mode 100644 tests/lp_files/periodical_investment_limit_with_dsm_DLR.lp delete mode 100644 tests/lp_files/periodical_investment_limit_with_dsm_oemof.lp delete mode 100644 tests/lp_files/piecewise_linear_converter_cc.lp delete mode 100644 tests/lp_files/piecewise_linear_converter_cc_multi_period.lp delete mode 100644 tests/lp_files/piecewise_linear_converter_dcc.lp delete mode 100644 tests/lp_files/piecewise_linear_converter_dcc_multi_period.lp delete mode 100644 tests/lp_files/shared_limit.lp delete mode 100644 tests/lp_files/shared_limit_multi_period.lp delete mode 100644 tests/lp_files/source_with_gradient.lp delete mode 100644 tests/lp_files/source_with_gradient_multi_period.lp delete mode 100644 tests/lp_files/source_with_nonconvex_gradient.lp delete mode 100644 tests/lp_files/source_with_nonconvex_gradient_multi_period.lp delete mode 100644 tests/lp_files/storage.lp delete mode 100644 tests/lp_files/storage_fixed_losses.lp delete mode 100644 tests/lp_files/storage_fixed_losses_multi_period.lp delete mode 100644 tests/lp_files/storage_invest_1.lp delete mode 100644 tests/lp_files/storage_invest_1_fixed_losses.lp delete mode 100644 tests/lp_files/storage_invest_1_multi_period.lp delete mode 100644 tests/lp_files/storage_invest_1_multi_period_remaining_value.lp delete mode 100644 tests/lp_files/storage_invest_2.lp delete mode 100644 tests/lp_files/storage_invest_2_multi_period.lp delete mode 100644 tests/lp_files/storage_invest_3.lp delete mode 100644 tests/lp_files/storage_invest_3_multi_period.lp delete mode 100644 tests/lp_files/storage_invest_4.lp delete mode 100644 tests/lp_files/storage_invest_4_multi_period.lp delete mode 100644 tests/lp_files/storage_invest_5.lp delete mode 100644 tests/lp_files/storage_invest_5_multi_period.lp delete mode 100644 tests/lp_files/storage_invest_6.lp delete mode 100644 tests/lp_files/storage_invest_6_multi_period.lp delete mode 100644 tests/lp_files/storage_invest_all_nonconvex.lp delete mode 100644 tests/lp_files/storage_invest_all_nonconvex_multi_period.lp delete mode 100644 tests/lp_files/storage_invest_minimum.lp delete mode 100644 tests/lp_files/storage_invest_minimum_multi_period.lp delete mode 100644 tests/lp_files/storage_invest_multi_period.lp delete mode 100644 tests/lp_files/storage_invest_unbalanced.lp delete mode 100644 tests/lp_files/storage_invest_with_offset.lp delete mode 100644 tests/lp_files/storage_invest_with_offset_multi_period.lp delete mode 100644 tests/lp_files/storage_invest_with_offset_multi_period_remaining_value.lp delete mode 100644 tests/lp_files/storage_invest_without_offset.lp delete mode 100644 tests/lp_files/storage_invest_without_offset_multi_period.lp delete mode 100644 tests/lp_files/storage_invest_without_offset_multi_period_remaining_value.lp delete mode 100644 tests/lp_files/storage_level_constraint.lp delete mode 100644 tests/lp_files/storage_multi_period.lp delete mode 100644 tests/lp_files/storage_unbalanced.lp delete mode 100644 tests/lp_files/storage_unbalanced_multi_period.lp delete mode 100644 tests/lp_files/summed_min_source.lp delete mode 100644 tests/lp_files/summed_min_source_multi_period.lp delete mode 100644 tests/lp_files/variable_chp.lp delete mode 100644 tests/lp_files/variable_chp_multi_period.lp delete mode 100644 tests/multi_period_constraint_tests.py diff --git a/tests/constraint_tests.py b/tests/constraint_tests.py deleted file mode 100644 index 80bfdcaa1..000000000 --- a/tests/constraint_tests.py +++ /dev/null @@ -1,1999 +0,0 @@ -# -*- coding: utf-8 - - -"""Test the created constraints against approved constraints. - -This file is part of project oemof (github.com/oemof/oemof). It's copyrighted -by the contributors recorded in the version control history of the file, -available from its original location oemof/tests/constraint_tests.py - -SPDX-License-Identifier: MIT -""" - -import logging -import re -from os import path as ospath - -import pandas as pd -import pytest -from pyomo.repn.tests.lp_diff import lp_diff - -from oemof import solph - -logging.disable(logging.INFO) - - -class TestsConstraint: - @classmethod - def setup_class(cls): - cls.objective_pattern = re.compile( - r"^objective.*(?=s\.t\.)", re.DOTALL | re.MULTILINE - ) - - cls.date_time_index = pd.date_range("1/1/2012", periods=3, freq="h") - - cls.tmppath = solph.helpers.extend_basic_path("tmp") - logging.info(cls.tmppath) - - def setup_method(self): - self.energysystem = solph.EnergySystem( - groupings=solph.GROUPINGS, - timeindex=self.date_time_index, - infer_last_interval=True, - ) - - def get_om(self): - return solph.Model( - self.energysystem, timeindex=self.energysystem.timeindex - ) - - def compare_lp_files(self, filename, ignored=None, my_om=None): - r"""Compare lp-files to check constraints generated within solph. - - An lp-file is being generated automatically when the tests are - executed. Make sure that you create an empty file first and - transfer the content from the one that has been created automatically - into this one afterwards. Please ensure that the content is being - checked carefully. Otherwise, errors are included within the code base. - """ - if my_om is None: - om = self.get_om() - else: - om = my_om - tmp_filename = filename.replace(".lp", "") + "_tmp.lp" - new_filename = ospath.join(self.tmppath, tmp_filename) - om.write(new_filename, io_options={"symbolic_solver_labels": True}) - logging.info("Comparing with file: {0}".format(filename)) - with open(ospath.join(self.tmppath, tmp_filename)) as generated_file: - with open( - ospath.join( - ospath.dirname(ospath.realpath(__file__)), - "lp_files", - filename, - ) - ) as expected_file: - exp = expected_file.read() - gen = generated_file.read() - - # lp_diff returns two arrays of strings with cleaned lp syntax - # It automatically prints the diff - exp_diff, gen_diff = lp_diff(exp, gen) - - # sometimes, 0.0 is printed, sometimes 0, harmonise that - exp_diff = [ - line + " ".replace(" 0.0 ", " 0 ") for line in exp_diff - ] - gen_diff = [ - line + " ".replace(" 0.0 ", " 0 ") for line in gen_diff - ] - - assert len(exp_diff) == len(gen_diff) - - # Created the LP files do not have a reproducible - # order of the lines. Thus, we sort the lines. - for exp, gen in zip(sorted(exp_diff), sorted(gen_diff)): - assert ( - exp == gen - ), "Failed matching expected with generated lp file." - - def test_linear_converter(self): - """Constraint test of a Converter without Investment.""" - bgas = solph.buses.Bus(label="gas") - - bel = solph.buses.Bus(label="electricity") - - converter = solph.components.Converter( - label="powerplantGas", - inputs={bgas: solph.flows.Flow()}, - outputs={ - bel: solph.flows.Flow(nominal_value=10e10, variable_costs=50) - }, - conversion_factors={bel: 0.58}, - ) - self.energysystem.add(bgas, bel, converter) - - self.compare_lp_files("linear_converter.lp") - - def test_linear_converter_invest(self): - """Constraint test of a Converter with Investment.""" - - bgas = solph.buses.Bus(label="gas") - - bel = solph.buses.Bus(label="electricity") - - converter = solph.components.Converter( - label="powerplant_gas", - inputs={bgas: solph.flows.Flow()}, - outputs={ - bel: solph.flows.Flow( - variable_costs=50, - nominal_value=solph.Investment(maximum=1000, ep_costs=20), - ) - }, - conversion_factors={bel: 0.58}, - ) - self.energysystem.add(bgas, bel, converter) - - self.compare_lp_files("linear_converter_invest.lp") - - def test_nonconvex_invest_converter(self): - """Non-convex invest flow with offset, without minimum.""" - bfuel = solph.buses.Bus(label="fuelBus") - bel = solph.buses.Bus(label="electricityBus") - - converter = solph.components.Converter( - label="converter_nonconvex_invest", - inputs={bfuel: solph.flows.Flow()}, - outputs={ - bel: solph.flows.Flow( - variable_costs=25, - min=0.25, - max=0.5, - nominal_value=solph.Investment( - ep_costs=500, - maximum=1234, - ), - nonconvex=solph.NonConvex(), - ) - }, - conversion_factors={bel: 0.5}, - ) - self.energysystem.add(bfuel, bel, converter) - self.compare_lp_files("flow_nonconvex_invest_bounded_converter.lp") - - def test_max_source_min_sink(self): - """ """ - bel = solph.buses.Bus(label="electricityBus") - - wind = solph.components.Source( - label="wind", - outputs={ - bel: solph.flows.Flow(nominal_value=54, max=(0.85, 0.95, 0.61)) - }, - ) - - demand = solph.components.Sink( - label="minDemand", - inputs={ - bel: solph.flows.Flow( - nominal_value=54, min=(0.84, 0.94, 0.59), variable_costs=14 - ) - }, - ) - self.energysystem.add(bel, wind, demand) - self.compare_lp_files("max_source_min_sink.lp") - - def test_fixed_source_variable_sink(self): - """Constraint test with a fixed source and a variable sink.""" - - bel = solph.buses.Bus(label="electricityBus") - - wind = solph.components.Source( - label="wind", - outputs={ - bel: solph.flows.Flow( - fix=[0.43, 0.72, 0.29], nominal_value=1e6 - ) - }, - ) - - excess = solph.components.Sink( - label="excess", inputs={bel: solph.flows.Flow(variable_costs=40)} - ) - - self.energysystem.add(bel, wind, excess) - self.compare_lp_files("fixed_source_variable_sink.lp") - - def test_nominal_value_to_zero(self): - """If the nominal value is set to zero nothing should happen.""" - bel = solph.buses.Bus(label="electricityBus") - - s1 = solph.components.Source( - label="s1", outputs={bel: solph.flows.Flow(nominal_value=0)} - ) - self.energysystem.add(bel, s1) - self.compare_lp_files("nominal_value_to_zero.lp") - - def test_fixed_source_invest_sink(self): - """ - Wrong constraints for fixed source + invest sink w. - `full_load_time_max`. - """ - - bel = solph.buses.Bus(label="electricityBus") - - wind = solph.components.Source( - label="wind", - outputs={ - bel: solph.flows.Flow(fix=[12, 16, 14], nominal_value=1e6) - }, - ) - - excess = solph.components.Sink( - label="excess", - inputs={ - bel: solph.flows.Flow( - full_load_time_max=2.3, - variable_costs=25, - max=0.8, - nominal_value=solph.Investment( - ep_costs=500, maximum=1e6, existing=50 - ), - ) - }, - ) - self.energysystem.add(bel, wind, excess) - self.compare_lp_files("fixed_source_invest_sink.lp") - - def test_invest_source_fixed_sink(self): - """Constraint test with a fixed sink and a dispatch invest source.""" - - bel = solph.buses.Bus(label="electricityBus") - - pv = solph.components.Source( - label="pv", - outputs={ - bel: solph.flows.Flow( - max=[45, 83, 65], - variable_costs=13, - nominal_value=solph.Investment(ep_costs=123), - ) - }, - ) - - excess = solph.components.Sink( - label="excess", - inputs={ - bel: solph.flows.Flow(fix=[0.5, 0.8, 0.3], nominal_value=1e5) - }, - ) - self.energysystem.add(bel, pv, excess) - self.compare_lp_files("invest_source_fixed_sink.lp") - - def test_storage(self): - """ """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage_no_invest", - inputs={ - bel: solph.flows.Flow(nominal_value=16667, variable_costs=56) - }, - outputs={ - bel: solph.flows.Flow(nominal_value=16667, variable_costs=24) - }, - nominal_storage_capacity=1e5, - loss_rate=0.13, - storage_costs=0.1, - inflow_conversion_factor=0.97, - outflow_conversion_factor=0.86, - initial_storage_level=0.4, - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage.lp") - - def test_storage_invest_1(self): - """All invest variables are coupled. The invest variables of the Flows - will be created during the initialisation of the storage e.g. battery - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage1", - inputs={bel: solph.flows.Flow(variable_costs=56)}, - outputs={bel: solph.flows.Flow(variable_costs=24)}, - nominal_storage_capacity=solph.Investment( - ep_costs=145, maximum=234 - ), - loss_rate=0.13, - max_storage_level=0.9, - min_storage_level=0.1, - invest_relation_input_capacity=1 / 6, - invest_relation_output_capacity=1 / 6, - inflow_conversion_factor=0.97, - outflow_conversion_factor=0.86, - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_1.lp") - - def test_storage_invest_2(self): - """All can be free extended to their own cost.""" - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage2", - inputs={ - bel: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=99) - ) - }, - outputs={ - bel: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=9) - ) - }, - nominal_storage_capacity=solph.Investment(ep_costs=145), - initial_storage_level=0.5, - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_2.lp") - - def test_storage_invest_3(self): - """The storage capacity is fixed, but the Flows can be extended. - e.g. PHES with a fixed basin but the pump and the turbine can be - adapted - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage3", - inputs={ - bel: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=99) - ) - }, - outputs={ - bel: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=9) - ) - }, - nominal_storage_capacity=5000, - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_3.lp") - - def test_storage_invest_4(self): - """Only the storage capacity can be extended.""" - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage4", - inputs={bel: solph.flows.Flow(nominal_value=80)}, - outputs={bel: solph.flows.Flow(nominal_value=100)}, - nominal_storage_capacity=solph.Investment( - ep_costs=145, maximum=500 - ), - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_4.lp") - - def test_storage_invest_5(self): - """The storage capacity is fixed, but the Flows can be extended. - e.g. PHES with a fixed basin but the pump and the turbine can be - adapted. The installed capacity of the pump is 10 % bigger than the - the capacity of the turbine due to 'invest_relation_input_output=1.1'. - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage5", - inputs={ - bel: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=99, existing=110) - ) - }, - outputs={ - bel: solph.flows.Flow( - nominal_value=solph.Investment(existing=100) - ) - }, - invest_relation_input_output=1.1, - nominal_storage_capacity=10000, - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_5.lp") - - def test_storage_invest_6(self): - """Like test_storage_invest_5 but there can also be an investment in - the basin. - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage6", - inputs={ - bel: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=99, existing=110) - ) - }, - outputs={ - bel: solph.flows.Flow( - nominal_value=solph.Investment(existing=100) - ) - }, - invest_relation_input_output=1.1, - nominal_storage_capacity=solph.Investment( - ep_costs=145, existing=10000 - ), - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_6.lp") - - def test_storage_minimum_invest(self): - """All invest variables are coupled. The invest variables of the Flows - will be created during the initialisation of the storage e.g. battery - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage1", - inputs={bel: solph.flows.Flow()}, - outputs={bel: solph.flows.Flow()}, - nominal_storage_capacity=solph.Investment( - ep_costs=145, minimum=100, maximum=200 - ), - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_minimum.lp") - - def test_storage_unbalanced(self): - """Testing a unbalanced storage (e.g. battery).""" - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage1", - inputs={bel: solph.flows.Flow()}, - outputs={bel: solph.flows.Flow()}, - nominal_storage_capacity=1111, - initial_storage_level=None, - balanced=False, - invest_relation_input_capacity=1, - invest_relation_output_capacity=1, - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_unbalanced.lp") - - def test_storage_invest_unbalanced(self): - """Testing a unbalanced storage (e.g. battery).""" - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage1", - inputs={bel: solph.flows.Flow()}, - outputs={bel: solph.flows.Flow()}, - initial_storage_level=0.5, - balanced=False, - invest_relation_input_capacity=1, - invest_relation_output_capacity=1, - nominal_storage_capacity=solph.Investment(ep_costs=145), - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_unbalanced.lp") - - def test_storage_fixed_losses(self): - """ """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage_no_invest", - inputs={ - bel: solph.flows.Flow(nominal_value=16667, variable_costs=56) - }, - outputs={ - bel: solph.flows.Flow(nominal_value=16667, variable_costs=24) - }, - nominal_storage_capacity=1e5, - loss_rate=0.13, - fixed_losses_relative=0.01, - fixed_losses_absolute=3, - inflow_conversion_factor=0.97, - outflow_conversion_factor=0.86, - initial_storage_level=0.4, - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_fixed_losses.lp") - - def test_storage_invest_1_fixed_losses(self): - """All invest variables are coupled. The invest variables of the Flows - will be created during the initialisation of the storage e.g. battery - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage1", - inputs={bel: solph.flows.Flow(variable_costs=56)}, - outputs={bel: solph.flows.Flow(variable_costs=24)}, - loss_rate=0.13, - fixed_losses_relative=0.01, - fixed_losses_absolute=3, - max_storage_level=0.9, - min_storage_level=0.1, - invest_relation_input_capacity=1 / 6, - invest_relation_output_capacity=1 / 6, - inflow_conversion_factor=0.97, - outflow_conversion_factor=0.86, - nominal_storage_capacity=solph.Investment( - ep_costs=145, minimum=1, maximum=234 - ), - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_1_fixed_losses.lp") - - def test_converter(self): - """Constraint test of a LinearN1Converter without Investment.""" - bgas = solph.buses.Bus(label="gasBus") - bbms = solph.buses.Bus(label="biomassBus") - bel = solph.buses.Bus(label="electricityBus") - bth = solph.buses.Bus(label="thermalBus") - - converter = solph.components.Converter( - label="powerplantGasBiomass", - inputs={bbms: solph.flows.Flow(), bgas: solph.flows.Flow()}, - outputs={ - bel: solph.flows.Flow(variable_costs=50), - bth: solph.flows.Flow(nominal_value=5e10, variable_costs=20), - }, - conversion_factors={bgas: 0.4, bbms: 0.1, bel: 0.3, bth: 0.5}, - ) - - self.energysystem.add(bgas, bbms, bel, bth, converter) - - self.compare_lp_files("converter.lp") - - def test_converter_invest(self): - """Constraint test of a LinearN1Converter with Investment.""" - - bgas = solph.buses.Bus(label="gasBus") - bcoal = solph.buses.Bus(label="coalBus") - bel = solph.buses.Bus(label="electricityBus") - bth = solph.buses.Bus(label="thermalBus") - - converter = solph.components.Converter( - label="powerplant_gas_coal", - inputs={bgas: solph.flows.Flow(), bcoal: solph.flows.Flow()}, - outputs={ - bel: solph.flows.Flow( - variable_costs=50, - nominal_value=solph.Investment(maximum=1000, ep_costs=20), - ), - bth: solph.flows.Flow(variable_costs=20), - }, - conversion_factors={bgas: 0.58, bcoal: 0.2, bel: 0.3, bth: 0.5}, - ) - self.energysystem.add(bgas, bcoal, bel, bth, converter) - - self.compare_lp_files("converter_invest.lp") - - def test_converter_invest_with_existing(self): - """Constraint test of a LinearN1Converter with Investment.""" - - bgas = solph.buses.Bus(label="gasBus") - bcoal = solph.buses.Bus(label="coalBus") - bel = solph.buses.Bus(label="electricityBus") - bth = solph.buses.Bus(label="thermalBus") - - converter = solph.components.Converter( - label="powerplant_gas_coal", - inputs={bgas: solph.flows.Flow(), bcoal: solph.flows.Flow()}, - outputs={ - bel: solph.flows.Flow( - variable_costs=50, - nominal_value=solph.Investment( - maximum=1000, ep_costs=20, existing=200 - ), - ), - bth: solph.flows.Flow(variable_costs=20), - }, - conversion_factors={bgas: 0.58, bcoal: 0.2, bel: 0.3, bth: 0.5}, - ) - self.energysystem.add(bgas, bcoal, bel, bth, converter) - - self.compare_lp_files("converter_invest_with_existing.lp") - - def test_linear_converter_chp(self): - """ - Constraint test of a Converter without Investment (two outputs). - """ - bgas = solph.buses.Bus(label="gasBus") - bheat = solph.buses.Bus(label="heatBus") - bel = solph.buses.Bus(label="electricityBus") - - converter = solph.components.Converter( - label="CHPpowerplantGas", - inputs={ - bgas: solph.flows.Flow(nominal_value=1e11, variable_costs=50) - }, - outputs={bel: solph.flows.Flow(), bheat: solph.flows.Flow()}, - conversion_factors={bel: 0.4, bheat: 0.5}, - ) - self.energysystem.add(bgas, bheat, bel, converter) - - self.compare_lp_files("linear_converter_chp.lp") - - def test_linear_converter_chp_invest(self): - """Constraint test of a Converter with Investment (two outputs).""" - - bgas = solph.buses.Bus(label="gasBus") - bheat = solph.buses.Bus(label="heatBus") - bel = solph.buses.Bus(label="electricityBus") - - converter = solph.components.Converter( - label="chp_powerplant_gas", - inputs={ - bgas: solph.flows.Flow( - variable_costs=50, - nominal_value=solph.Investment(maximum=1000, ep_costs=20), - ) - }, - outputs={bel: solph.flows.Flow(), bheat: solph.flows.Flow()}, - conversion_factors={bel: 0.4, bheat: 0.5}, - ) - self.energysystem.add(bgas, bheat, bel, converter) - - self.compare_lp_files("linear_converter_chp_invest.lp") - - def test_link(self): - """Constraint test of a Link.""" - bus_el_1 = solph.buses.Bus(label="el1") - bus_el_2 = solph.buses.Bus(label="el2") - - link = solph.components.Link( - label="link", - inputs={ - bus_el_1: solph.flows.Flow(nominal_value=4), - bus_el_2: solph.flows.Flow(nominal_value=2), - }, - outputs={ - bus_el_1: solph.flows.Flow(), - bus_el_2: solph.flows.Flow(), - }, - conversion_factors={ - (bus_el_1, bus_el_2): 0.75, - (bus_el_2, bus_el_1): 0.5, - }, - ) - self.energysystem.add(bus_el_1, bus_el_2, link) - self.compare_lp_files("link.lp") - - def test_variable_chp(self): - """Test ExctractionTurbineCHP basic functionality""" - bel = solph.buses.Bus(label="electricityBus") - bth = solph.buses.Bus(label="heatBus") - bgas = solph.buses.Bus(label="commodityBus") - - chp1 = solph.components.ExtractionTurbineCHP( - label="variable_chp_gas1", - inputs={bgas: solph.flows.Flow(nominal_value=100)}, - outputs={bel: solph.flows.Flow(), bth: solph.flows.Flow()}, - conversion_factors={bel: 0.3, bth: 0.5}, - conversion_factor_full_condensation={bel: 0.5}, - ) - - chp2 = solph.components.ExtractionTurbineCHP( - label="variable_chp_gas2", - inputs={bgas: solph.flows.Flow(nominal_value=100)}, - outputs={bel: solph.flows.Flow(), bth: solph.flows.Flow()}, - conversion_factors={bel: 0.3, bth: 0.5}, - conversion_factor_full_condensation={bel: 0.5}, - ) - self.energysystem.add(bel, bth, bgas, chp1, chp2) - self.compare_lp_files("variable_chp.lp") - - def test_generic_invest_limit(self): - """Test a generic keyword investment limit""" - bus = solph.buses.Bus(label="bus_1") - - source_0 = solph.components.Source( - label="source_0", - outputs={ - bus: solph.flows.Flow( - nominal_value=solph.Investment( - ep_costs=50, - custom_attributes={"space": 4}, - ) - ) - }, - ) - - source_1 = solph.components.Source( - label="source_1", - outputs={ - bus: solph.flows.Flow( - nominal_value=solph.Investment( - ep_costs=100, custom_attributes={"space": 1} - ), - ) - }, - ) - - source_2 = solph.components.Source( - label="source_2", - outputs={ - bus: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=75) - ) - }, - ) - - self.energysystem.add(bus, source_0, source_1, source_2) - - om = self.get_om() - - om = solph.constraints.additional_investment_flow_limit( - om, "space", limit=20 - ) - - self.compare_lp_files("generic_invest_limit.lp", my_om=om) - - def test_emission_constraints(self): - """Test emissions constraint""" - bel = solph.buses.Bus(label="electricityBus") - - source1 = solph.components.Source( - label="source1", - outputs={ - bel: solph.flows.Flow( - nominal_value=100, - custom_attributes={"emission_factor": [0.5, -1.0, 2.0]}, - ) - }, - ) - source2 = solph.components.Source( - label="source2", - outputs={ - bel: solph.flows.Flow( - nominal_value=100, - custom_attributes={"emission_factor": 3.5}, - ) - }, - ) - - # Should be ignored because the emission attribute is not defined. - source3 = solph.components.Source( - label="source3", outputs={bel: solph.flows.Flow(nominal_value=100)} - ) - - self.energysystem.add(bel, source1, source2, source3) - - om = self.get_om() - - solph.constraints.emission_limit(om, limit=777) - - self.compare_lp_files("emission_limit.lp", my_om=om) - - def test_flow_count_limit(self): - """Test limiting the count of nonconvex flows""" - bel = solph.buses.Bus(label="electricityBus") - - source1 = solph.components.Source( - label="source1", - outputs={ - bel: solph.flows.Flow( - nonconvex=solph.NonConvex(), - nominal_value=100, - custom_attributes={"emission_factor": [0.5, -1.0, 2.0]}, - ) - }, - ) - source2 = solph.components.Source( - label="source2", - outputs={ - bel: solph.flows.Flow( - nonconvex=solph.NonConvex(), - nominal_value=100, - custom_attributes={"emission_factor": 3.5}, - ) - }, - ) - - # Should be ignored because emission_factor is not defined. - source3 = solph.components.Source( - label="source3", - outputs={ - bel: solph.flows.Flow( - nonconvex=solph.NonConvex(), nominal_value=100 - ) - }, - ) - - # Should be ignored because it is not NonConvex. - source4 = solph.components.Source( - label="source4", - outputs={ - bel: solph.flows.Flow( - min=0.3, - nominal_value=100, - custom_attributes={"emission_factor": 1.5}, - ) - }, - ) - - self.energysystem.add(bel, source1, source2, source3, source4) - - om = self.get_om() - - # one of the two flows has to be active - solph.constraints.limit_active_flow_count_by_keyword( - om, "emission_factor", lower_limit=1, upper_limit=2 - ) - - self.compare_lp_files("flow_count_limit.lp", my_om=om) - - def test_shared_limit(self): - """Test an overall limit shared among components""" - b1 = solph.buses.Bus(label="bus") - - storage1 = solph.components.GenericStorage( - label="storage1", - nominal_storage_capacity=5, - inputs={b1: solph.flows.Flow()}, - outputs={b1: solph.flows.Flow()}, - ) - storage2 = solph.components.GenericStorage( - label="storage2", - nominal_storage_capacity=5, - inputs={b1: solph.flows.Flow()}, - outputs={b1: solph.flows.Flow()}, - ) - - self.energysystem.add(b1, storage1, storage2) - - model = self.get_om() - - components = [storage1, storage2] - - solph.constraints.shared_limit( - model, - model.GenericStorageBlock.storage_content, - "limit_storage", - components, - [0.5, 1.25], - upper_limit=7, - ) - - self.compare_lp_files("shared_limit.lp", my_om=model) - - def test_flow_without_emission_for_emission_constraint(self): - """Test AttributeError if passed flow misses emission attribute""" - with pytest.raises(AttributeError): - bel = solph.buses.Bus(label="electricityBus") - source1 = solph.components.Source( - label="source1", - outputs={ - bel: solph.flows.Flow( - nominal_value=100, - custom_attributes={"emission_factor": 0.8}, - ) - }, - ) - source2 = solph.components.Source( - label="source2", - outputs={bel: solph.flows.Flow(nominal_value=100)}, - ) - self.energysystem.add(bel, source1, source2) - om = self.get_om() - solph.constraints.emission_limit(om, om.flows, limit=777) - - def test_flow_without_emission_for_emission_constraint_no_error(self): - """Test that no error is thrown if no flows are explicitly passed""" - bel = solph.buses.Bus(label="electricityBus") - source1 = solph.components.Source( - label="source1", - outputs={ - bel: solph.flows.Flow( - nominal_value=100, - custom_attributes={"emission_factor": 0.8}, - ) - }, - ) - source2 = solph.components.Source( - label="source2", outputs={bel: solph.flows.Flow(nominal_value=100)} - ) - self.energysystem.add(bel, source1, source2) - om = self.get_om() - solph.constraints.emission_limit(om, limit=777) - - self.compare_lp_files("emission_limit_no_error.lp", my_om=om) - - def test_equate_variables_constraint(self): - """Testing the equate_variables function in the constraint module.""" - bus1 = solph.buses.Bus(label="Bus1") - storage = solph.components.GenericStorage( - label="storage", - invest_relation_input_capacity=0.2, - invest_relation_output_capacity=0.2, - inputs={bus1: solph.flows.Flow()}, - outputs={bus1: solph.flows.Flow()}, - nominal_storage_capacity=solph.Investment(ep_costs=145), - ) - sink = solph.components.Sink( - label="Sink", - inputs={ - bus1: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=500) - ) - }, - ) - source = solph.components.Source( - label="Source", - outputs={ - bus1: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=123) - ) - }, - ) - self.energysystem.add(bus1, storage, sink, source) - om = self.get_om() - solph.constraints.equate_variables( - om, - om.InvestmentFlowBlock.invest[source, bus1, 0], - om.InvestmentFlowBlock.invest[bus1, sink, 0], - 2, - ) - solph.constraints.equate_variables( - om, - om.InvestmentFlowBlock.invest[source, bus1, 0], - om.GenericInvestmentStorageBlock.invest[storage, 0], - ) - - self.compare_lp_files("connect_investment.lp", my_om=om) - - def test_equate_flows_constraint(self): - """Testing the equate_flows function in the constraint module.""" - bus1 = solph.buses.Bus(label="Bus1") - sink = solph.components.Sink( - label="Sink", - inputs={ - bus1: solph.flows.Flow( - nominal_value=300, - variable_costs=2, - custom_attributes={"outgoing_flow": True}, - ) - }, - ) - source1 = solph.components.Source( - label="Source1", - outputs={ - bus1: solph.flows.Flow( - nominal_value=400, - variable_costs=2, - custom_attributes={"incoming_flow": True}, - ) - }, - ) - source2 = solph.components.Source( - label="Source2", - outputs={ - bus1: solph.flows.Flow( - nominal_value=200, - variable_costs=10, - custom_attributes={"incoming_flow": True}, - ) - }, - ) - self.energysystem.add(bus1, sink, source1, source2) - om = self.get_om() - solph.constraints.equate_flows_by_keyword( - om, - "incoming_flow", - "outgoing_flow", - 2, - ) - self.compare_lp_files("equate_flows.lp", my_om=om) - - def test_gradient(self): - """Testing gradient constraints""" - bel = solph.buses.Bus(label="electricityBus") - - pp = solph.components.Source( - label="powerplant", - outputs={ - bel: solph.flows.Flow( - nominal_value=999, - variable_costs=23, - positive_gradient_limit=0.03, - negative_gradient_limit=0.05, - ) - }, - ) - self.energysystem.add(bel, pp) - self.compare_lp_files("source_with_gradient.lp") - - def test_nonconvex_gradient(self): - """Testing gradient constraints""" - bel = solph.buses.Bus(label="electricityBus") - - pp = solph.components.Source( - label="powerplant", - outputs={ - bel: solph.flows.Flow( - nominal_value=999, - variable_costs=23, - nonconvex=solph.NonConvex( - positive_gradient_limit=0.03, - negative_gradient_limit=0.05, - ), - ) - }, - ) - self.energysystem.add(bel, pp) - self.compare_lp_files("source_with_nonconvex_gradient.lp") - - def test_nonconvex_positive_gradient_error(self): - """Testing nonconvex positive gradient error.""" - msg = ( - "You specified a positive gradient in your nonconvex " - "option. This cannot be combined with a positive or a " - "negative gradient for a standard flow!" - ) - - with pytest.raises(ValueError, match=msg): - solph.flows.Flow( - nonconvex=solph.NonConvex( - positive_gradient_limit=0.03, - ), - positive_gradient_limit=0.03, - ) - - def test_nonconvex_negative_gradient_error(self): - """Testing nonconvex positive gradient error.""" - msg = ( - "You specified a negative gradient in your nonconvex " - "option. This cannot be combined with a positive or a " - "negative gradient for a standard flow!" - ) - - with pytest.raises(ValueError, match=msg): - solph.flows.Flow( - nonconvex=solph.NonConvex( - negative_gradient_limit=0.03, - ), - negative_gradient_limit=0.03, - ) - - def test_investment_limit(self): - """Testing the investment_limit function in the constraint module.""" - bus1 = solph.buses.Bus(label="Bus1") - storage = solph.components.GenericStorage( - label="storage_invest_limit", - invest_relation_input_capacity=0.2, - invest_relation_output_capacity=0.2, - inputs={bus1: solph.flows.Flow()}, - outputs={bus1: solph.flows.Flow()}, - nominal_storage_capacity=solph.Investment(ep_costs=145), - ) - source = solph.components.Source( - label="Source", - outputs={ - bus1: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=123) - ) - }, - ) - self.energysystem.add(bus1, storage, source) - om = self.get_om() - solph.constraints.investment_limit(om, limit=900) - - self.compare_lp_files("investment_limit.lp", my_om=om) - - def test_investment_limit_with_dsm1(self): - """Testing the investment_limit function in the constraint module.""" - bus1 = solph.buses.Bus(label="Bus1") - source = solph.components.Source( - label="Source", - outputs={ - bus1: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=123) - ) - }, - ) - dsm = solph.components.experimental.SinkDSM( - label="sink_dsm_DIW", - approach="DIW", - inputs={bus1: solph.flows.Flow()}, - demand=[1] * 3, - capacity_up=[0.5] * 3, - capacity_down=[0.5] * 3, - max_demand=[1] * 3, - delay_time=1, - cost_dsm_down_shift=0.5, - cost_dsm_up=0.5, - shed_eligibility=False, - investment=solph.Investment( - ep_costs=100, existing=50, minimum=33, maximum=100 - ), - ) - self.energysystem.add(bus1, source, dsm) - om = self.get_om() - solph.constraints.investment_limit(om, limit=900) - - self.compare_lp_files("investment_limit_with_dsm_DIW.lp", my_om=om) - - def test_investment_limit_with_dsm2(self): - """Testing the investment_limit function in the constraint module.""" - bus1 = solph.buses.Bus(label="Bus1") - source = solph.components.Source( - label="Source", - outputs={ - bus1: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=123) - ) - }, - ) - dsm = solph.components.experimental.SinkDSM( - label="sink_dsm_DLR", - approach="DLR", - inputs={bus1: solph.flows.Flow()}, - demand=[1] * 3, - capacity_up=[0.5] * 3, - capacity_down=[0.5] * 3, - max_demand=[1] * 3, - delay_time=1, - shift_time=1, - cost_dsm_down_shift=0.5, - cost_dsm_up=0.5, - shed_eligibility=False, - investment=solph.Investment( - ep_costs=100, existing=50, minimum=33, maximum=100 - ), - ) - self.energysystem.add(bus1, source, dsm) - om = self.get_om() - solph.constraints.investment_limit(om, limit=900) - - self.compare_lp_files("investment_limit_with_dsm_DLR.lp", my_om=om) - - def test_investment_limit_with_dsm3(self): - """Testing the investment_limit function in the constraint module.""" - bus1 = solph.buses.Bus(label="Bus1") - source = solph.components.Source( - label="Source", - outputs={ - bus1: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=123) - ) - }, - ) - dsm = solph.components.experimental.SinkDSM( - label="sink_dsm_oemof", - approach="oemof", - inputs={bus1: solph.flows.Flow()}, - demand=[1] * 3, - capacity_up=[0.5] * 3, - capacity_down=[0.5] * 3, - max_demand=[1] * 3, - delay_time=1, - shift_interval=2, - cost_dsm_down_shift=0.5, - cost_dsm_up=0.5, - shed_eligibility=False, - investment=solph.Investment( - ep_costs=100, existing=50, minimum=33, maximum=100 - ), - ) - self.energysystem.add(bus1, source, dsm) - om = self.get_om() - solph.constraints.investment_limit(om, limit=900) - - self.compare_lp_files("investment_limit_with_dsm_oemof.lp", my_om=om) - - def test_investment_limit_per_period_error_no_multi_period(self): - """Test error being thrown if model is not a multi-period model""" - bus1 = solph.buses.Bus(label="Bus1") - solph.components.GenericStorage( - label="storage_invest_limit", - invest_relation_input_capacity=0.2, - invest_relation_output_capacity=0.2, - inputs={bus1: solph.flows.Flow()}, - outputs={bus1: solph.flows.Flow()}, - nominal_storage_capacity=solph.Investment(ep_costs=145), - ) - solph.components.Source( - label="Source", - outputs={ - bus1: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=123) - ) - }, - ) - om = self.get_om() - - msg = ( - "investment_limit_per_period is only applicable " - "for multi-period models.\nIn order to create such a model, " - "explicitly set attribute `periods` of your energy system." - ) - with pytest.raises(ValueError, match=msg): - solph.constraints.investment_limit_per_period(om, limit=900) - - def test_min_max_runtime(self): - """Testing min and max runtimes for nonconvex flows.""" - bus_t = solph.buses.Bus(label="Bus_T") - pp = solph.components.Source( - label="cheap_plant_min_down_constraints", - outputs={ - bus_t: solph.flows.Flow( - nominal_value=10, - min=0.5, - max=1.0, - variable_costs=10, - nonconvex=solph.NonConvex( - minimum_downtime=4, - minimum_uptime=2, - initial_status=1, - startup_costs=5, - shutdown_costs=7, - ), - ) - }, - ) - - self.energysystem.add(bus_t, pp) - self.compare_lp_files("min_max_runtime.lp") - - def test_activity_costs(self): - """Testing activity_costs attribute for nonconvex flows.""" - bus_t = solph.buses.Bus(label="Bus_C") - pp = solph.components.Source( - label="cheap_plant_activity_costs", - outputs={ - bus_t: solph.flows.Flow( - nominal_value=10, - min=0.5, - max=1.0, - variable_costs=10, - nonconvex=solph.NonConvex(activity_costs=2), - ) - }, - ) - - self.energysystem.add(bus_t, pp) - self.compare_lp_files("activity_costs.lp") - - def test_inactivity_costs(self): - """Testing inactivity_costs attribute for nonconvex flows.""" - bus_t = solph.buses.Bus(label="Bus_C") - pp = solph.components.Source( - label="cheap_plant_inactivity_costs", - outputs={ - bus_t: solph.flows.Flow( - nominal_value=10, - min=0.5, - max=1.0, - variable_costs=10, - nonconvex=solph.NonConvex(inactivity_costs=2), - ) - }, - ) - - self.energysystem.add(bus_t, pp) - self.compare_lp_files("inactivity_costs.lp") - - def test_piecewise_linear_converter_cc(self): - """Testing PiecewiseLinearConverter using CC formulation.""" - bgas = solph.buses.Bus(label="gasBus") - bel = solph.buses.Bus(label="electricityBus") - - pwlcw = solph.components.experimental.PiecewiseLinearConverter( - label="pwltf", - inputs={ - bgas: solph.flows.Flow(nominal_value=100, variable_costs=1) - }, - outputs={bel: solph.flows.Flow()}, - in_breakpoints=[0, 25, 50, 75, 100], - conversion_function=lambda x: x**2, - pw_repn="CC", - ) - self.energysystem.add(bgas, bel, pwlcw) - self.compare_lp_files("piecewise_linear_converter_cc.lp") - - def test_piecewise_linear_converter_dcc(self): - """Testing PiecewiseLinearConverter using DCC formulation.""" - bgas = solph.buses.Bus(label="gasBus") - bel = solph.buses.Bus(label="electricityBus") - - pwlcw = solph.components.experimental.PiecewiseLinearConverter( - label="pwltf", - inputs={ - bgas: solph.flows.Flow(nominal_value=100, variable_costs=1) - }, - outputs={bel: solph.flows.Flow()}, - in_breakpoints=[0, 25, 50, 75, 100], - conversion_function=lambda x: x**2, - pw_repn="DCC", - ) - self.energysystem.add(bgas, bel, pwlcw) - self.compare_lp_files("piecewise_linear_converter_dcc.lp") - - def test_maximum_startups(self): - """Testing maximum_startups attribute for nonconvex flows.""" - bus_t = solph.buses.Bus(label="Bus_C") - pp = solph.components.Source( - label="cheap_plant_maximum_startups", - outputs={ - bus_t: solph.flows.Flow( - nominal_value=10, - min=0.5, - max=1.0, - variable_costs=10, - nonconvex=solph.NonConvex(maximum_startups=2), - ) - }, - ) - self.energysystem.add(bus_t, pp) - self.compare_lp_files("maximum_startups.lp") - - def test_maximum_shutdowns(self): - """Testing maximum_shutdowns attribute for nonconvex flows.""" - bus_t = solph.buses.Bus(label="Bus_C") - pp = solph.components.Source( - label="cheap_plant_maximum_shutdowns", - outputs={ - bus_t: solph.flows.Flow( - nominal_value=10, - min=0.5, - max=1.0, - variable_costs=10, - nonconvex=solph.NonConvex(maximum_shutdowns=2), - ) - }, - ) - self.energysystem.add(bus_t, pp) - self.compare_lp_files("maximum_shutdowns.lp") - - def test_offsetconverter_nonconvex(self): - """Constraint test of an OffsetConverter only with NonConvex - attribute.""" - b_diesel = solph.buses.Bus(label="bus_diesel") - b_el = solph.buses.Bus(label="bus_electricity") - - diesel_genset = solph.components.OffsetConverter( - label="diesel_genset", - inputs={ - b_diesel: solph.flows.Flow(), - }, - outputs={ - b_el: solph.flows.Flow( - nonconvex=solph.NonConvex(), - nominal_value=100, - min=0.2, - ) - }, - coefficients={b_el: (2.5, 0.5)}, - ) - self.energysystem.add(b_diesel, b_el, diesel_genset) - - self.compare_lp_files("offsetconverter_nonconvex.lp") - - def test_offsetconverter_nonconvex_investment(self): - """Constraint test of an OffsetConverter with both NonConvex and - Investment attributes.""" - b_diesel = solph.buses.Bus(label="bus_diesel") - b_el = solph.buses.Bus(label="bus_electricity") - - diesel_genset = solph.components.OffsetConverter( - label="diesel_genset", - inputs={b_diesel: solph.flows.Flow()}, - outputs={ - b_el: solph.flows.Flow( - min=0.2, - nonconvex=solph.NonConvex(), - nominal_value=solph.Investment( - ep_costs=100, - maximum=1234, - ), - ) - }, - coefficients={b_el: (2.5, 0.5)}, - ) - self.energysystem.add(b_diesel, b_el, diesel_genset) - - self.compare_lp_files("offsetconverter_nonconvex_investment.lp") - - def test_dsm_module_DIW(self): - """Constraint test of SinkDSM with approach=DLR""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1] * 3, - capacity_up=[0.5] * 3, - capacity_down=[0.5] * 3, - approach="DIW", - max_demand=1, - max_capacity_up=1, - max_capacity_down=1, - delay_time=1, - cost_dsm_down_shift=2, - shed_eligibility=False, - ) - - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_DIW.lp") - - def test_dsm_module_DLR(self): - """Constraint test of SinkDSM with approach=DLR""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1] * 3, - capacity_up=[0.5] * 3, - capacity_down=[0.5] * 3, - approach="DLR", - max_demand=1, - max_capacity_up=1, - max_capacity_down=1, - delay_time=2, - shift_time=1, - cost_dsm_down_shift=2, - shed_eligibility=False, - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_DLR.lp") - - def test_dsm_module_oemof(self): - """Constraint test of SinkDSM with approach=oemof""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1] * 3, - capacity_up=[0.5, 0.4, 0.5], - capacity_down=[0.5, 0.4, 0.5], - approach="oemof", - max_demand=1, - max_capacity_up=1, - max_capacity_down=1, - shift_interval=2, - cost_dsm_down_shift=2, - shed_eligibility=False, - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_oemof.lp") - - def test_dsm_module_DIW_extended(self): - """Constraint test of SinkDSM with approach=DLR - - Test all possible parameters and constraints - """ - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1, 0.9, 0.8], - capacity_up=[0.5, 0.4, 0.5], - capacity_down=[0.3, 0.3, 0.4], - approach="DIW", - max_demand=1, - max_capacity_up=1, - max_capacity_down=1, - delay_time=1, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - efficiency=0.99, - recovery_time_shift=2, - recovery_time_shed=2, - shed_time=2, - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_DIW_extended.lp") - - def test_dsm_module_DLR_extended(self): - """Constraint test of SinkDSM with approach=DLR""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1, 0.9, 0.8], - capacity_up=[0.5, 0.4, 0.5], - capacity_down=[0.3, 0.3, 0.4], - approach="DLR", - max_demand=1, - max_capacity_up=1, - max_capacity_down=1, - delay_time=2, - shift_time=1, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - efficiency=0.99, - recovery_time_shed=2, - ActivateYearLimit=True, - ActivateDayLimit=True, - n_yearLimit_shift=100, - n_yearLimit_shed=50, - t_dayLimit=3, - addition=False, - fixes=False, - shed_time=2, - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_DLR_extended.lp") - - def test_dsm_module_oemof_extended(self): - """Constraint test of SinkDSM with approach=oemof""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1, 0.9, 0.8], - capacity_up=[0.5, 0.4, 0.5], - capacity_down=[0.3, 0.3, 0.4], - approach="oemof", - shift_interval=2, - max_demand=1, - max_capacity_up=1, - max_capacity_down=1, - delay_time=2, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - efficiency=0.99, - recovery_time_shed=2, - shed_time=2, - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_oemof_extended.lp") - - def test_dsm_module_DIW_invest(self): - """Constraint test of SinkDSM with approach=DLR and investments""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1] * 3, - capacity_up=[0.5] * 3, - capacity_down=[0.5] * 3, - approach="DIW", - max_demand=1, - delay_time=1, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - shed_eligibility=True, - recovery_time_shed=2, - shed_time=2, - investment=solph.Investment( - existing=50, - minimum=33, - maximum=100, - custom_attributes={"ep_cost": 100}, - ), - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_DIW_invest.lp") - - def test_dsm_module_DLR_invest(self): - """Constraint test of SinkDSM with approach=DLR and investments""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1] * 3, - capacity_up=[0.5] * 3, - capacity_down=[0.5] * 3, - approach="DLR", - max_demand=1, - delay_time=2, - shift_time=1, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - shed_eligibility=True, - recovery_time_shed=2, - shed_time=2, - n_yearLimit_shed=50, - investment=solph.Investment( - existing=50, - minimum=33, - maximum=100, - custom_attributes={"ep_cost": 100}, - ), - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_DLR_invest.lp") - - def test_dsm_module_oemof_invest(self): - """Constraint test of SinkDSM with approach=oemof and investments""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1] * 3, - capacity_up=[0.5, 0.4, 0.5], - capacity_down=[0.5, 0.4, 0.5], - approach="oemof", - max_demand=1, - shift_interval=2, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - shed_eligibility=True, - recovery_time_shed=2, - shed_time=2, - investment=solph.Investment( - existing=50, - minimum=33, - maximum=100, - custom_attributes={"ep_cost": 100}, - ), - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_oemof_invest.lp") - - def test_dsm_module_DLR_delay_time(self): - """Constraint test of SinkDSM with approach=DLR; - testing for passing an iterable for delay_time""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1] * 3, - capacity_up=[0.5] * 3, - capacity_down=[0.5] * 3, - approach="DLR", - max_demand=1, - max_capacity_up=1, - max_capacity_down=1, - delay_time=[1, 3], - shift_time=1, - cost_dsm_down_shift=2, - shed_eligibility=False, - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_DLR_delay_time.lp") - - def test_invest_non_convex_flow(self): - """Invest into a non-convex Flow""" - b1 = solph.buses.Bus(label="b1") - b2 = solph.buses.Bus( - label="b2", - inputs={ - b1: solph.Flow( - variable_costs=8, - min=0.25, - max=0.5, - nominal_value=solph.Investment( - ep_costs=0.75, - maximum=10, - ), - nonconvex=solph.NonConvex(), - ) - }, - outputs={b1: solph.Flow()}, - ) - self.energysystem.add(b1, b2) - self.compare_lp_files("invest_non_convex_flow.lp") - - def test_nonconvex_investment_storage_without_offset(self): - """All invest variables are coupled. The invest variables of the Flows - will be created during the initialisation of the storage e.g. battery - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage_non_convex", - inputs={bel: solph.flows.Flow(variable_costs=56)}, - outputs={bel: solph.flows.Flow(variable_costs=24)}, - loss_rate=0.13, - max_storage_level=0.9, - min_storage_level=0.1, - invest_relation_input_capacity=1 / 6, - invest_relation_output_capacity=1 / 6, - inflow_conversion_factor=0.97, - outflow_conversion_factor=0.86, - nominal_storage_capacity=solph.Investment( - ep_costs=141, maximum=244, minimum=12, nonconvex=True - ), - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_without_offset.lp") - - def test_nonconvex_investment_storage_with_offset(self): - """All invest variables are coupled. The invest variables of the Flows - will be created during the initialisation of the storage e.g. battery - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage_non_convex", - inputs={bel: solph.flows.Flow(variable_costs=56)}, - outputs={bel: solph.flows.Flow(variable_costs=24)}, - loss_rate=0.13, - max_storage_level=0.9, - min_storage_level=0.1, - invest_relation_input_capacity=1 / 6, - invest_relation_output_capacity=1 / 6, - inflow_conversion_factor=0.97, - outflow_conversion_factor=0.86, - nominal_storage_capacity=solph.Investment( - ep_costs=145, - minimum=19, - offset=5, - nonconvex=True, - maximum=1454, - ), - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_with_offset.lp") - - def test_nonconvex_invest_storage_all_nonconvex(self): - """All invest variables are free and nonconvex.""" - b1 = solph.buses.Bus(label="bus1") - - storage = solph.components.GenericStorage( - label="storage_all_nonconvex", - inputs={ - b1: solph.flows.Flow( - nominal_value=solph.Investment( - nonconvex=True, - minimum=5, - offset=10, - maximum=30, - ep_costs=10, - ) - ) - }, - outputs={ - b1: solph.flows.Flow( - nominal_value=solph.Investment( - nonconvex=True, - minimum=8, - offset=15, - ep_costs=10, - maximum=20, - ) - ) - }, - nominal_storage_capacity=solph.Investment( - nonconvex=True, ep_costs=20, offset=30, minimum=20, maximum=100 - ), - ) - self.energysystem.add(b1, storage) - self.compare_lp_files("storage_invest_all_nonconvex.lp") - - def test_nonconvex_invest_sink_without_offset(self): - """Non-convex invest flow without offset, with minimum.""" - bel = solph.buses.Bus(label="electricityBus") - - sink = solph.components.Sink( - label="sink_nonconvex_invest", - inputs={ - bel: solph.flows.Flow( - full_load_time_max=2.3, - variable_costs=25, - max=0.8, - nominal_value=solph.Investment( - ep_costs=500, minimum=15, nonconvex=True, maximum=172 - ), - ) - }, - ) - self.energysystem.add(bel, sink) - self.compare_lp_files("flow_invest_without_offset.lp") - - def test_nonconvex_invest_source_with_offset(self): - """Non-convex invest flow with offset, with minimum.""" - bel = solph.buses.Bus(label="electricityBus") - - source = solph.components.Source( - label="source_nonconvex_invest", - outputs={ - bel: solph.flows.Flow( - full_load_time_max=2.3, - variable_costs=25, - max=0.8, - nominal_value=solph.Investment( - ep_costs=500, - minimum=15, - maximum=20, - offset=34, - nonconvex=True, - ), - ) - }, - ) - self.energysystem.add(bel, source) - self.compare_lp_files("flow_invest_with_offset.lp") - - def test_nonconvex_invest_source_with_offset_no_minimum(self): - """Non-convex invest flow with offset, without minimum.""" - bel = solph.buses.Bus(label="electricityBus") - - source = solph.components.Source( - label="source_nonconvex_invest", - outputs={ - bel: solph.flows.Flow( - full_load_time_max=2.3, - variable_costs=25, - max=0.8, - nominal_value=solph.Investment( - ep_costs=500, maximum=1234, offset=34, nonconvex=True - ), - ) - }, - ) - self.energysystem.add(bel, source) - self.compare_lp_files("flow_invest_with_offset_no_minimum.lp") - - def test_integral_limit_error_no_multi_period(self): - """Test error being thrown if model is not a multi-period model""" - bel = solph.buses.Bus(label="electricityBus") - - source = solph.components.Source( - label="pv_source", - outputs={ - bel: solph.flows.Flow( - nominal_value=100, - variable_costs=20, - fix=[0.3, 0.5, 0.8], - custom_attributes={"space": 40}, - ) - }, - ) - self.energysystem.add(bel, source) - om = self.get_om() - msg = ( - "generic_periodical_integral_limit is only applicable\n" - "for multi-period models.\nFor standard models, use " - "generic_integral_limit instead." - ) - with pytest.raises(ValueError, match=msg): - solph.constraints.generic_periodical_integral_limit( - om, keyword="space" - ) - - def test_full_load_time_min_max_source(self): - """Constraints test full_load_time_min and _max attribute of flow""" - - bel = solph.buses.Bus(label="electricityBus") - - sink = solph.components.Sink( - label="excess", - inputs={ - bel: solph.flows.Flow( - full_load_time_min=3, - full_load_time_max=100, - variable_costs=25, - max=0.8, - nominal_value=10, - ) - }, - ) - self.energysystem.add(bel, sink) - self.compare_lp_files("summed_min_source.lp") - - def test_integer_flow_source(self): - """Test source with integer output""" - bel = solph.buses.Bus(label="electricityBus") - - sink = solph.components.Sink( - label="excess", - inputs={ - bel: solph.flows.Flow( - variable_costs=25, max=1, nominal_value=10, integer=True - ) - }, - ) - self.energysystem.add(bel, sink) - self.compare_lp_files("integer_source.lp") - - def test_nonequidistant_storage(self): - """Constraint test of an energy system - with non-equidistant time index - """ - idxh = pd.date_range("1/1/2017", periods=3, freq="h") - idx2h = pd.date_range("1/1/2017 03:00:00", periods=2, freq="2H") - idx30m = pd.date_range("1/1/2017 07:00:00", periods=4, freq="30min") - timeindex = idxh.append([idx2h, idx30m]) - es = solph.EnergySystem(timeindex=timeindex, infer_last_interval=False) - b_gas = solph.Bus(label="gas") - b_th = solph.Bus(label="heat") - boiler = solph.components.Converter( - label="boiler", - inputs={b_gas: solph.Flow(variable_costs=100)}, - outputs={b_th: solph.Flow(nominal_value=200)}, - ) - storage = solph.components.GenericStorage( - label="storage", - inputs={b_th: solph.Flow(nominal_value=100, variable_costs=56)}, - outputs={b_th: solph.Flow(nominal_value=100, variable_costs=24)}, - nominal_storage_capacity=300, - loss_rate=0.1, - initial_storage_level=1, - ) - es.add(b_gas, b_th, boiler, storage) - om = solph.Model(es) - self.compare_lp_files("nonequidistant_timeindex.lp", my_om=om) - - def test_storage_level_constraint(self): - """Constraint test of an energy system - with storage_level_constraint - """ - es = solph.EnergySystem( - timeindex=pd.date_range("2022-01-01", freq="1H", periods=2), - infer_last_interval=True, - ) - - multiplexer = solph.Bus( - label="multiplexer", - ) - - storage = solph.components.GenericStorage( - label="storage", - nominal_storage_capacity=4, - initial_storage_level=1, - balanced=True, - loss_rate=0.25, - inputs={multiplexer: solph.Flow()}, - outputs={multiplexer: solph.Flow()}, - ) - - es.add(multiplexer, storage) - - in_0 = solph.components.Source( - label="in_0", - outputs={ - multiplexer: solph.Flow(nominal_value=0.5, variable_costs=0.25) - }, - ) - es.add(in_0) - - in_1 = solph.components.Source( - label="in_1", - outputs={multiplexer: solph.Flow(nominal_value=0.125)}, - ) - es.add(in_1) - - out_0 = solph.components.Sink( - label="out_0", - inputs={ - multiplexer: solph.Flow( - nominal_value=0.25, variable_costs=-0.125 - ) - }, - ) - es.add(out_0) - - out_1 = solph.components.Sink( - label="out_1", - inputs={ - multiplexer: solph.Flow( - nominal_value=0.125, variable_costs=-0.125 - ) - }, - ) - es.add(out_1) - - om = solph.Model(es) - - solph.constraints.storage_level_constraint( - model=om, - name="multiplexer", - storage_component=storage, - multiplexer_bus=multiplexer, - input_levels={in_1: 1 / 4}, # in_0 is always active - output_levels={out_0: 1 / 8, out_1: 1 / 2}, - ) - self.compare_lp_files("storage_level_constraint.lp", my_om=om) diff --git a/tests/lp_files/activity_costs.lp b/tests/lp_files/activity_costs.lp deleted file mode 100644 index 02f6420cf..000000000 --- a/tests/lp_files/activity_costs.lp +++ /dev/null @@ -1,85 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) -= 0 - -c_e_BusBlock_balance(Bus_C_0_1)_: -+1 flow(cheap_plant_activity_costs_Bus_C_0_1) -= 0 - -c_e_BusBlock_balance(Bus_C_0_2)_: -+1 flow(cheap_plant_activity_costs_Bus_C_0_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_C_0)_: --10 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_0) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_0) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_C_1)_: --10 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_1) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_C_2)_: --10 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_2) -+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) -+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) -+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) -+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) --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) --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) --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 <= 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 - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_0) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_1) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_2) <= +inf -binary - NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_0) - NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_1) - NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_2) -end diff --git a/tests/lp_files/activity_costs_multi_period.lp b/tests/lp_files/activity_costs_multi_period.lp deleted file mode 100644 index fd798fa7b..000000000 --- a/tests/lp_files/activity_costs_multi_period.lp +++ /dev/null @@ -1,160 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) -+1.9607843137254901 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_3) -+1.9223375624759707 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_4) -+1.9223375624759707 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_5) - -s.t. - -c_e_BusBlock_balance(Bus_C_0_0)_: -+1 flow(cheap_plant_activity_costs_Bus_C_0_0) -= 0 - -c_e_BusBlock_balance(Bus_C_0_1)_: -+1 flow(cheap_plant_activity_costs_Bus_C_0_1) -= 0 - -c_e_BusBlock_balance(Bus_C_1_2)_: -+1 flow(cheap_plant_activity_costs_Bus_C_1_2) -= 0 - -c_e_BusBlock_balance(Bus_C_1_3)_: -+1 flow(cheap_plant_activity_costs_Bus_C_1_3) -= 0 - -c_e_BusBlock_balance(Bus_C_2_4)_: -+1 flow(cheap_plant_activity_costs_Bus_C_2_4) -= 0 - -c_e_BusBlock_balance(Bus_C_2_5)_: -+1 flow(cheap_plant_activity_costs_Bus_C_2_5) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_C_0)_: --10 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_0) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_0) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_C_1)_: --10 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_1) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_C_2)_: --10 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_2) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_C_3)_: --10 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_3) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_3) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_C_4)_: --10 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_4) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_4) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_C_5)_: --10 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_5) -+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) -+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) -+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) -+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) -+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) -+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) -+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) --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) --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) --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) --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) --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) --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 <= 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 - 0 <= NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_3) <= 1 - 0 <= NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_4) <= 1 - 0 <= NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_5) <= 1 - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_0) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_1) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_2) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_3) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_4) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_5) <= +inf -binary - NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_0) - NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_1) - NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_2) - NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_3) - NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_4) - NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_5) -end diff --git a/tests/lp_files/connect_investment.lp b/tests/lp_files/connect_investment.lp deleted file mode 100644 index 5573bd32f..000000000 --- a/tests/lp_files/connect_investment.lp +++ /dev/null @@ -1,210 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+500 InvestmentFlowBlock_invest(Bus1_Sink_0) -+123 InvestmentFlowBlock_invest(Source_Bus1_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) -= 0 - -c_e__equate_InvestmentFlowBlock_invest(Source_Bus1_0)_GenericInvestmentStorageBlock_invest(storage_0)__: -+1 InvestmentFlowBlock_invest(Source_Bus1_0) --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) -= 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) -= 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) -= 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) -= 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(Bus1_storage_0)_: -+1 InvestmentFlowBlock_total(Bus1_storage_0) --1 InvestmentFlowBlock_invest(Bus1_storage_0) -= 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_0_2)_: -+1 flow(storage_Bus1_0_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 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_0_2)_: -+1 flow(Source_Bus1_0_2) --1 InvestmentFlowBlock_total(Source_Bus1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(Bus1_storage_0_0)_: -+1 flow(Bus1_storage_0_0) --1 InvestmentFlowBlock_total(Bus1_storage_0) -<= 0 - -c_u_InvestmentFlowBlock_max(Bus1_storage_0_1)_: -+1 flow(Bus1_storage_0_1) --1 InvestmentFlowBlock_total(Bus1_storage_0) -<= 0 - -c_u_InvestmentFlowBlock_max(Bus1_storage_0_2)_: -+1 flow(Bus1_storage_0_2) --1 InvestmentFlowBlock_total(Bus1_storage_0) -<= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_0)_: --1 GenericInvestmentStorageBlock_invest(storage_0) -+1 GenericInvestmentStorageBlock_total(storage_0) -= 0 - -c_u_GenericInvestmentStorageBlock_init_content_limit(storage)_: --1 GenericInvestmentStorageBlock_invest(storage_0) -+1 GenericInvestmentStorageBlock_init_content(storage) -<= 0 - -c_e_GenericInvestmentStorageBlock_balance_first(storage)_: -+1 flow(storage_Bus1_0_0) --1 flow(Bus1_storage_0_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 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 GenericInvestmentStorageBlock_storage_content(storage_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_2) -= 0 - -c_e_GenericInvestmentStorageBlock_balanced_cstr(storage)_: --1 GenericInvestmentStorageBlock_init_content(storage) -+1 GenericInvestmentStorageBlock_storage_content(storage_2) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_0)_: -+1 InvestmentFlowBlock_total(Bus1_storage_0) --0.2 GenericInvestmentStorageBlock_total(storage_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_0)_: -+1 InvestmentFlowBlock_total(storage_Bus1_0) --0.2 GenericInvestmentStorageBlock_total(storage_0) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_0_0)_: --1 GenericInvestmentStorageBlock_total(storage_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_0_1)_: --1 GenericInvestmentStorageBlock_total(storage_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_0_2)_: --1 GenericInvestmentStorageBlock_total(storage_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_2) -<= 0 - -bounds - 0 <= InvestmentFlowBlock_invest(Bus1_Sink_0) <= +inf - 0 <= InvestmentFlowBlock_invest(Source_Bus1_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 <= 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_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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage_1) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_2) <= +inf -end diff --git a/tests/lp_files/connect_investment_multi_period.lp b/tests/lp_files/connect_investment_multi_period.lp deleted file mode 100644 index 75e8a280e..000000000 --- a/tests/lp_files/connect_investment_multi_period.lp +++ /dev/null @@ -1,699 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+144.99999999999997 GenericInvestmentStorageBlock_invest(storage_0) -+95.70644360214325 GenericInvestmentStorageBlock_invest(storage_1) -+47.37942752581354 GenericInvestmentStorageBlock_invest(storage_2) - -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) -= 0 - -c_e__equate_InvestmentFlowBlock_invest(Source_Bus1_0)_GenericInvestmentStorageBlock_invest(storage_0)__: -+1 InvestmentFlowBlock_invest(Source_Bus1_0) --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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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_Sink_1)_: --1 InvestmentFlowBlock_invest(Bus1_Sink_1) --1 InvestmentFlowBlock_total(Bus1_Sink_0) -+1 InvestmentFlowBlock_total(Bus1_Sink_1) -+1 InvestmentFlowBlock_old(Bus1_Sink_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(Bus1_Sink_2)_: --1 InvestmentFlowBlock_invest(Bus1_Sink_2) --1 InvestmentFlowBlock_total(Bus1_Sink_1) -+1 InvestmentFlowBlock_total(Bus1_Sink_2) -+1 InvestmentFlowBlock_old(Bus1_Sink_2) -= 0 - -c_e_InvestmentFlowBlock_total_rule(Bus1_storage_0)_: -+1 InvestmentFlowBlock_total(Bus1_storage_0) --1 InvestmentFlowBlock_invest(Bus1_storage_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(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_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) -= 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_Bus1_0)_: -+1 InvestmentFlowBlock_total(storage_Bus1_0) --1 InvestmentFlowBlock_invest(storage_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) -= 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) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(Bus1_Sink_0)_: -+1 InvestmentFlowBlock_old_end(Bus1_Sink_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(Bus1_Sink_1)_: -+1 InvestmentFlowBlock_old_end(Bus1_Sink_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(Bus1_Sink_2)_: -+1 InvestmentFlowBlock_old_end(Bus1_Sink_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(Bus1_storage_0)_: -+1 InvestmentFlowBlock_old_end(Bus1_storage_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(Bus1_storage_1)_: -+1 InvestmentFlowBlock_old_end(Bus1_storage_1) -= 0 - -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) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_1)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_2)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage_Bus1_0)_: -+1 InvestmentFlowBlock_old_end(storage_Bus1_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage_Bus1_1)_: -+1 InvestmentFlowBlock_old_end(storage_Bus1_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage_Bus1_2)_: -+1 InvestmentFlowBlock_old_end(storage_Bus1_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(Bus1_Sink_0)_: -+1 InvestmentFlowBlock_old_exo(Bus1_Sink_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(Bus1_Sink_1)_: -+1 InvestmentFlowBlock_old_exo(Bus1_Sink_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(Bus1_Sink_2)_: -+1 InvestmentFlowBlock_old_exo(Bus1_Sink_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(Bus1_storage_0)_: -+1 InvestmentFlowBlock_old_exo(Bus1_storage_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(Bus1_storage_1)_: -+1 InvestmentFlowBlock_old_exo(Bus1_storage_1) -= 0 - -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) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(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) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage_Bus1_0)_: -+1 InvestmentFlowBlock_old_exo(storage_Bus1_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage_Bus1_1)_: -+1 InvestmentFlowBlock_old_exo(storage_Bus1_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage_Bus1_2)_: -+1 InvestmentFlowBlock_old_exo(storage_Bus1_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(Bus1_Sink_1) --1 InvestmentFlowBlock_old_end(Bus1_Sink_1) --1 InvestmentFlowBlock_old_exo(Bus1_Sink_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(Bus1_Sink_2)_: -+1 InvestmentFlowBlock_old(Bus1_Sink_2) --1 InvestmentFlowBlock_old_end(Bus1_Sink_2) --1 InvestmentFlowBlock_old_exo(Bus1_Sink_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(Bus1_storage_1) --1 InvestmentFlowBlock_old_end(Bus1_storage_1) --1 InvestmentFlowBlock_old_exo(Bus1_storage_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(Bus1_storage_2)_: -+1 InvestmentFlowBlock_old(Bus1_storage_2) --1 InvestmentFlowBlock_old_end(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_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(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_Bus1_0)_: --1 InvestmentFlowBlock_old_end(storage_Bus1_0) --1 InvestmentFlowBlock_old_exo(storage_Bus1_0) -+1 InvestmentFlowBlock_old(storage_Bus1_0) -= 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_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(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_1_2)_: -+1 flow(Bus1_Sink_1_2) --1 InvestmentFlowBlock_total(Bus1_Sink_1) -<= 0 - -c_u_InvestmentFlowBlock_max(Bus1_Sink_1_3)_: -+1 flow(Bus1_Sink_1_3) --1 InvestmentFlowBlock_total(Bus1_Sink_1) -<= 0 - -c_u_InvestmentFlowBlock_max(Bus1_Sink_2_4)_: -+1 flow(Bus1_Sink_2_4) --1 InvestmentFlowBlock_total(Bus1_Sink_2) -<= 0 - -c_u_InvestmentFlowBlock_max(Bus1_Sink_2_5)_: -+1 flow(Bus1_Sink_2_5) --1 InvestmentFlowBlock_total(Bus1_Sink_2) -<= 0 - -c_u_InvestmentFlowBlock_max(Bus1_storage_0_0)_: -+1 flow(Bus1_storage_0_0) --1 InvestmentFlowBlock_total(Bus1_storage_0) -<= 0 - -c_u_InvestmentFlowBlock_max(Bus1_storage_0_1)_: -+1 flow(Bus1_storage_0_1) --1 InvestmentFlowBlock_total(Bus1_storage_0) -<= 0 - -c_u_InvestmentFlowBlock_max(Bus1_storage_1_2)_: -+1 flow(Bus1_storage_1_2) --1 InvestmentFlowBlock_total(Bus1_storage_1) -<= 0 - -c_u_InvestmentFlowBlock_max(Bus1_storage_1_3)_: -+1 flow(Bus1_storage_1_3) --1 InvestmentFlowBlock_total(Bus1_storage_1) -<= 0 - -c_u_InvestmentFlowBlock_max(Bus1_storage_2_4)_: -+1 flow(Bus1_storage_2_4) --1 InvestmentFlowBlock_total(Bus1_storage_2) -<= 0 - -c_u_InvestmentFlowBlock_max(Bus1_storage_2_5)_: -+1 flow(Bus1_storage_2_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) -= 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_old_rule_end(storage_0)_: -+1 GenericInvestmentStorageBlock_old_end(storage_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_1)_: -+1 GenericInvestmentStorageBlock_old_end(storage_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_2)_: -+1 GenericInvestmentStorageBlock_old_end(storage_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_0)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_1)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_2)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(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)_: -+1 GenericInvestmentStorageBlock_old(storage_1) --1 GenericInvestmentStorageBlock_old_end(storage_1) --1 GenericInvestmentStorageBlock_old_exo(storage_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage_2)_: -+1 GenericInvestmentStorageBlock_old(storage_2) --1 GenericInvestmentStorageBlock_old_end(storage_2) --1 GenericInvestmentStorageBlock_old_exo(storage_2) -= 0 - -c_e_GenericInvestmentStorageBlock_initially_empty(storage_0)_: -+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 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 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 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 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 GenericInvestmentStorageBlock_storage_content(storage_4) -+1 GenericInvestmentStorageBlock_storage_content(storage_5) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_0)_: -+1 InvestmentFlowBlock_total(Bus1_storage_0) --0.2 GenericInvestmentStorageBlock_total(storage_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_1)_: -+1 InvestmentFlowBlock_total(Bus1_storage_1) --0.2 GenericInvestmentStorageBlock_total(storage_1) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_2)_: -+1 InvestmentFlowBlock_total(Bus1_storage_2) --0.2 GenericInvestmentStorageBlock_total(storage_2) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_0)_: -+1 InvestmentFlowBlock_total(storage_Bus1_0) --0.2 GenericInvestmentStorageBlock_total(storage_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_1)_: -+1 InvestmentFlowBlock_total(storage_Bus1_1) --0.2 GenericInvestmentStorageBlock_total(storage_1) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_2)_: -+1 InvestmentFlowBlock_total(storage_Bus1_2) --0.2 GenericInvestmentStorageBlock_total(storage_2) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_0_0)_: --1 GenericInvestmentStorageBlock_total(storage_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_0_1)_: --1 GenericInvestmentStorageBlock_total(storage_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_1_2)_: --1 GenericInvestmentStorageBlock_total(storage_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_1_3)_: --1 GenericInvestmentStorageBlock_total(storage_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_2_4)_: --1 GenericInvestmentStorageBlock_total(storage_2) -+1 GenericInvestmentStorageBlock_storage_content(storage_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_2_5)_: --1 GenericInvestmentStorageBlock_total(storage_2) -+1 GenericInvestmentStorageBlock_storage_content(storage_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(Source_Bus1_0) <= +inf - 0 <= InvestmentFlowBlock_invest(Source_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_invest(Source_Bus1_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 <= 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_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_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(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_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_0) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_2) <= +inf - 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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage_3) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_4) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_5) <= +inf -end diff --git a/tests/lp_files/converter.lp b/tests/lp_files/converter.lp deleted file mode 100644 index e91691132..000000000 --- a/tests/lp_files/converter.lp +++ /dev/null @@ -1,135 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(biomassBus_0_0)_: -+1 flow(biomassBus_powerplantGasBiomass_0_0) -= 0 - -c_e_BusBlock_balance(biomassBus_0_1)_: -+1 flow(biomassBus_powerplantGasBiomass_0_1) -= 0 - -c_e_BusBlock_balance(biomassBus_0_2)_: -+1 flow(biomassBus_powerplantGasBiomass_0_2) -= 0 - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplantGasBiomass_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplantGasBiomass_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(powerplantGasBiomass_electricityBus_0_2) -= 0 - -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_powerplantGasBiomass_0_0) -= 0 - -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_powerplantGasBiomass_0_1) -= 0 - -c_e_BusBlock_balance(gasBus_0_2)_: -+1 flow(gasBus_powerplantGasBiomass_0_2) -= 0 - -c_e_BusBlock_balance(thermalBus_0_0)_: -+1 flow(powerplantGasBiomass_thermalBus_0_0) -= 0 - -c_e_BusBlock_balance(thermalBus_0_1)_: -+1 flow(powerplantGasBiomass_thermalBus_0_1) -= 0 - -c_e_BusBlock_balance(thermalBus_0_2)_: -+1 flow(powerplantGasBiomass_thermalBus_0_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_0_0)_: --0.4 flow(powerplantGasBiomass_electricityBus_0_0) -+0.3 flow(gasBus_powerplantGasBiomass_0_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_0_0)_: --0.4 flow(powerplantGasBiomass_thermalBus_0_0) -+0.5 flow(gasBus_powerplantGasBiomass_0_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_0_1)_: --0.4 flow(powerplantGasBiomass_electricityBus_0_1) -+0.3 flow(gasBus_powerplantGasBiomass_0_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_0_1)_: --0.4 flow(powerplantGasBiomass_thermalBus_0_1) -+0.5 flow(gasBus_powerplantGasBiomass_0_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_0_2)_: --0.4 flow(powerplantGasBiomass_electricityBus_0_2) -+0.3 flow(gasBus_powerplantGasBiomass_0_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_0_2)_: --0.4 flow(powerplantGasBiomass_thermalBus_0_2) -+0.5 flow(gasBus_powerplantGasBiomass_0_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 -end diff --git a/tests/lp_files/converter_invest.lp b/tests/lp_files/converter_invest.lp deleted file mode 100644 index bbcc7ff59..000000000 --- a/tests/lp_files/converter_invest.lp +++ /dev/null @@ -1,158 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(coalBus_0_0)_: -+1 flow(coalBus_powerplant_gas_coal_0_0) -= 0 - -c_e_BusBlock_balance(coalBus_0_1)_: -+1 flow(coalBus_powerplant_gas_coal_0_1) -= 0 - -c_e_BusBlock_balance(coalBus_0_2)_: -+1 flow(coalBus_powerplant_gas_coal_0_2) -= 0 - -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_powerplant_gas_coal_0_0) -= 0 - -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_powerplant_gas_coal_0_1) -= 0 - -c_e_BusBlock_balance(gasBus_0_2)_: -+1 flow(gasBus_powerplant_gas_coal_0_2) -= 0 - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplant_gas_coal_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplant_gas_coal_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(powerplant_gas_coal_electricityBus_0_2) -= 0 - -c_e_BusBlock_balance(thermalBus_0_0)_: -+1 flow(powerplant_gas_coal_thermalBus_0_0) -= 0 - -c_e_BusBlock_balance(thermalBus_0_1)_: -+1 flow(powerplant_gas_coal_thermalBus_0_1) -= 0 - -c_e_BusBlock_balance(thermalBus_0_2)_: -+1 flow(powerplant_gas_coal_thermalBus_0_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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_coal_electricityBus_0)_: --1 InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_0) -+1 InvestmentFlowBlock_total(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 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 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 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 <= 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 deleted file mode 100644 index 35ada8c5b..000000000 --- a/tests/lp_files/converter_invest_multi_period.lp +++ /dev/null @@ -1,370 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplant_gas_coal_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplant_gas_coal_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(powerplant_gas_coal_electricityBus_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(powerplant_gas_coal_electricityBus_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(powerplant_gas_coal_electricityBus_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(powerplant_gas_coal_electricityBus_2_5) -= 0 - -c_e_BusBlock_balance(coalBus_0_0)_: -+1 flow(coalBus_powerplant_gas_coal_0_0) -= 0 - -c_e_BusBlock_balance(coalBus_0_1)_: -+1 flow(coalBus_powerplant_gas_coal_0_1) -= 0 - -c_e_BusBlock_balance(coalBus_1_2)_: -+1 flow(coalBus_powerplant_gas_coal_1_2) -= 0 - -c_e_BusBlock_balance(coalBus_1_3)_: -+1 flow(coalBus_powerplant_gas_coal_1_3) -= 0 - -c_e_BusBlock_balance(coalBus_2_4)_: -+1 flow(coalBus_powerplant_gas_coal_2_4) -= 0 - -c_e_BusBlock_balance(coalBus_2_5)_: -+1 flow(coalBus_powerplant_gas_coal_2_5) -= 0 - -c_e_BusBlock_balance(thermalBus_0_0)_: -+1 flow(powerplant_gas_coal_thermalBus_0_0) -= 0 - -c_e_BusBlock_balance(thermalBus_0_1)_: -+1 flow(powerplant_gas_coal_thermalBus_0_1) -= 0 - -c_e_BusBlock_balance(thermalBus_1_2)_: -+1 flow(powerplant_gas_coal_thermalBus_1_2) -= 0 - -c_e_BusBlock_balance(thermalBus_1_3)_: -+1 flow(powerplant_gas_coal_thermalBus_1_3) -= 0 - -c_e_BusBlock_balance(thermalBus_2_4)_: -+1 flow(powerplant_gas_coal_thermalBus_2_4) -= 0 - -c_e_BusBlock_balance(thermalBus_2_5)_: -+1 flow(powerplant_gas_coal_thermalBus_2_5) -= 0 - -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_powerplant_gas_coal_0_0) -= 0 - -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_powerplant_gas_coal_0_1) -= 0 - -c_e_BusBlock_balance(gasBus_1_2)_: -+1 flow(gasBus_powerplant_gas_coal_1_2) -= 0 - -c_e_BusBlock_balance(gasBus_1_3)_: -+1 flow(gasBus_powerplant_gas_coal_1_3) -= 0 - -c_e_BusBlock_balance(gasBus_2_4)_: -+1 flow(gasBus_powerplant_gas_coal_2_4) -= 0 - -c_e_BusBlock_balance(gasBus_2_5)_: -+1 flow(gasBus_powerplant_gas_coal_2_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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_coal_electricityBus_0)_: --1 InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_0) -+1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_coal_electricityBus_1)_: --1 InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_1) --1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) -+1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_1) -+1 InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_coal_electricityBus_2)_: --1 InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_2) --1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_1) -+1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_2) -+1 InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(powerplant_gas_coal_electricityBus_0)_: -+1 InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(powerplant_gas_coal_electricityBus_1)_: -+1 InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(powerplant_gas_coal_electricityBus_2)_: -+1 InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_coal_electricityBus_0)_: -+1 InvestmentFlowBlock_old_exo(powerplant_gas_coal_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_coal_electricityBus_1)_: -+1 InvestmentFlowBlock_old_exo(powerplant_gas_coal_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_coal_electricityBus_2)_: -+1 InvestmentFlowBlock_old_exo(powerplant_gas_coal_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_1) --1 InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_1) --1 InvestmentFlowBlock_old_exo(powerplant_gas_coal_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(powerplant_gas_coal_electricityBus_2)_: -+1 InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_2) --1 InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_2) --1 InvestmentFlowBlock_old_exo(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 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 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 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 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 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 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_2) -<= 0 - -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 <= 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_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_2) <= +inf - 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 deleted file mode 100644 index b7d4e5de5..000000000 --- a/tests/lp_files/converter_invest_with_existing.lp +++ /dev/null @@ -1,158 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(coalBus_0_0)_: -+1 flow(coalBus_powerplant_gas_coal_0_0) -= 0 - -c_e_BusBlock_balance(coalBus_0_1)_: -+1 flow(coalBus_powerplant_gas_coal_0_1) -= 0 - -c_e_BusBlock_balance(coalBus_0_2)_: -+1 flow(coalBus_powerplant_gas_coal_0_2) -= 0 - -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_powerplant_gas_coal_0_0) -= 0 - -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_powerplant_gas_coal_0_1) -= 0 - -c_e_BusBlock_balance(gasBus_0_2)_: -+1 flow(gasBus_powerplant_gas_coal_0_2) -= 0 - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplant_gas_coal_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplant_gas_coal_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(powerplant_gas_coal_electricityBus_0_2) -= 0 - -c_e_BusBlock_balance(thermalBus_0_0)_: -+1 flow(powerplant_gas_coal_thermalBus_0_0) -= 0 - -c_e_BusBlock_balance(thermalBus_0_1)_: -+1 flow(powerplant_gas_coal_thermalBus_0_1) -= 0 - -c_e_BusBlock_balance(thermalBus_0_2)_: -+1 flow(powerplant_gas_coal_thermalBus_0_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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_coal_electricityBus_0)_: --1 InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_0) -+1 InvestmentFlowBlock_total(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 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 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 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 <= 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 deleted file mode 100644 index e18a16e66..000000000 --- a/tests/lp_files/converter_invest_with_existing_multi_period.lp +++ /dev/null @@ -1,371 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplant_gas_coal_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplant_gas_coal_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(powerplant_gas_coal_electricityBus_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(powerplant_gas_coal_electricityBus_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(powerplant_gas_coal_electricityBus_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(powerplant_gas_coal_electricityBus_2_5) -= 0 - -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_powerplant_gas_coal_0_0) -= 0 - -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_powerplant_gas_coal_0_1) -= 0 - -c_e_BusBlock_balance(gasBus_1_2)_: -+1 flow(gasBus_powerplant_gas_coal_1_2) -= 0 - -c_e_BusBlock_balance(gasBus_1_3)_: -+1 flow(gasBus_powerplant_gas_coal_1_3) -= 0 - -c_e_BusBlock_balance(gasBus_2_4)_: -+1 flow(gasBus_powerplant_gas_coal_2_4) -= 0 - -c_e_BusBlock_balance(gasBus_2_5)_: -+1 flow(gasBus_powerplant_gas_coal_2_5) -= 0 - -c_e_BusBlock_balance(thermalBus_0_0)_: -+1 flow(powerplant_gas_coal_thermalBus_0_0) -= 0 - -c_e_BusBlock_balance(thermalBus_0_1)_: -+1 flow(powerplant_gas_coal_thermalBus_0_1) -= 0 - -c_e_BusBlock_balance(thermalBus_1_2)_: -+1 flow(powerplant_gas_coal_thermalBus_1_2) -= 0 - -c_e_BusBlock_balance(thermalBus_1_3)_: -+1 flow(powerplant_gas_coal_thermalBus_1_3) -= 0 - -c_e_BusBlock_balance(thermalBus_2_4)_: -+1 flow(powerplant_gas_coal_thermalBus_2_4) -= 0 - -c_e_BusBlock_balance(thermalBus_2_5)_: -+1 flow(powerplant_gas_coal_thermalBus_2_5) -= 0 - -c_e_BusBlock_balance(coalBus_0_0)_: -+1 flow(coalBus_powerplant_gas_coal_0_0) -= 0 - -c_e_BusBlock_balance(coalBus_0_1)_: -+1 flow(coalBus_powerplant_gas_coal_0_1) -= 0 - -c_e_BusBlock_balance(coalBus_1_2)_: -+1 flow(coalBus_powerplant_gas_coal_1_2) -= 0 - -c_e_BusBlock_balance(coalBus_1_3)_: -+1 flow(coalBus_powerplant_gas_coal_1_3) -= 0 - -c_e_BusBlock_balance(coalBus_2_4)_: -+1 flow(coalBus_powerplant_gas_coal_2_4) -= 0 - -c_e_BusBlock_balance(coalBus_2_5)_: -+1 flow(coalBus_powerplant_gas_coal_2_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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_coal_electricityBus_0)_: --1 InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_0) -+1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) -= 200 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_coal_electricityBus_1)_: --1 InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_1) --1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_0) -+1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_1) -+1 InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_coal_electricityBus_2)_: --1 InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_2) --1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_1) -+1 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_2) -+1 InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(powerplant_gas_coal_electricityBus_0)_: -+1 InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(powerplant_gas_coal_electricityBus_1)_: -+1 InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(powerplant_gas_coal_electricityBus_2)_: --1 InvestmentFlowBlock_invest(powerplant_gas_coal_electricityBus_0) -+1 InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_coal_electricityBus_0)_: -+1 InvestmentFlowBlock_old_exo(powerplant_gas_coal_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_coal_electricityBus_1)_: -+1 InvestmentFlowBlock_old_exo(powerplant_gas_coal_electricityBus_1) -= 200 - -c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_coal_electricityBus_2)_: -+1 InvestmentFlowBlock_old_exo(powerplant_gas_coal_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_1) --1 InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_1) --1 InvestmentFlowBlock_old_exo(powerplant_gas_coal_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(powerplant_gas_coal_electricityBus_2)_: -+1 InvestmentFlowBlock_old(powerplant_gas_coal_electricityBus_2) --1 InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_2) --1 InvestmentFlowBlock_old_exo(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 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 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 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 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 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 InvestmentFlowBlock_total(powerplant_gas_coal_electricityBus_2) -<= 0 - -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 <= 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_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(powerplant_gas_coal_electricityBus_2) <= +inf - 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 deleted file mode 100644 index 0a63e9490..000000000 --- a/tests/lp_files/converter_multi_period.lp +++ /dev/null @@ -1,261 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(biomassBus_0_0)_: -+1 flow(biomassBus_powerplantGasBiomass_0_0) -= 0 - -c_e_BusBlock_balance(biomassBus_0_1)_: -+1 flow(biomassBus_powerplantGasBiomass_0_1) -= 0 - -c_e_BusBlock_balance(biomassBus_1_2)_: -+1 flow(biomassBus_powerplantGasBiomass_1_2) -= 0 - -c_e_BusBlock_balance(biomassBus_1_3)_: -+1 flow(biomassBus_powerplantGasBiomass_1_3) -= 0 - -c_e_BusBlock_balance(biomassBus_2_4)_: -+1 flow(biomassBus_powerplantGasBiomass_2_4) -= 0 - -c_e_BusBlock_balance(biomassBus_2_5)_: -+1 flow(biomassBus_powerplantGasBiomass_2_5) -= 0 - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplantGasBiomass_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplantGasBiomass_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(powerplantGasBiomass_electricityBus_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(powerplantGasBiomass_electricityBus_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(powerplantGasBiomass_electricityBus_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(powerplantGasBiomass_electricityBus_2_5) -= 0 - -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_powerplantGasBiomass_0_0) -= 0 - -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_powerplantGasBiomass_0_1) -= 0 - -c_e_BusBlock_balance(gasBus_1_2)_: -+1 flow(gasBus_powerplantGasBiomass_1_2) -= 0 - -c_e_BusBlock_balance(gasBus_1_3)_: -+1 flow(gasBus_powerplantGasBiomass_1_3) -= 0 - -c_e_BusBlock_balance(gasBus_2_4)_: -+1 flow(gasBus_powerplantGasBiomass_2_4) -= 0 - -c_e_BusBlock_balance(gasBus_2_5)_: -+1 flow(gasBus_powerplantGasBiomass_2_5) -= 0 - -c_e_BusBlock_balance(thermalBus_0_0)_: -+1 flow(powerplantGasBiomass_thermalBus_0_0) -= 0 - -c_e_BusBlock_balance(thermalBus_0_1)_: -+1 flow(powerplantGasBiomass_thermalBus_0_1) -= 0 - -c_e_BusBlock_balance(thermalBus_1_2)_: -+1 flow(powerplantGasBiomass_thermalBus_1_2) -= 0 - -c_e_BusBlock_balance(thermalBus_1_3)_: -+1 flow(powerplantGasBiomass_thermalBus_1_3) -= 0 - -c_e_BusBlock_balance(thermalBus_2_4)_: -+1 flow(powerplantGasBiomass_thermalBus_2_4) -= 0 - -c_e_BusBlock_balance(thermalBus_2_5)_: -+1 flow(powerplantGasBiomass_thermalBus_2_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_0_0)_: --0.4 flow(powerplantGasBiomass_electricityBus_0_0) -+0.3 flow(gasBus_powerplantGasBiomass_0_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_0_0)_: --0.4 flow(powerplantGasBiomass_thermalBus_0_0) -+0.5 flow(gasBus_powerplantGasBiomass_0_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_0_1)_: --0.4 flow(powerplantGasBiomass_electricityBus_0_1) -+0.3 flow(gasBus_powerplantGasBiomass_0_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_0_1)_: --0.4 flow(powerplantGasBiomass_thermalBus_0_1) -+0.5 flow(gasBus_powerplantGasBiomass_0_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_1_2)_: --0.4 flow(powerplantGasBiomass_electricityBus_1_2) -+0.3 flow(gasBus_powerplantGasBiomass_1_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_1_2)_: --0.4 flow(powerplantGasBiomass_thermalBus_1_2) -+0.5 flow(gasBus_powerplantGasBiomass_1_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_1_3)_: --0.4 flow(powerplantGasBiomass_electricityBus_1_3) -+0.3 flow(gasBus_powerplantGasBiomass_1_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_1_3)_: --0.4 flow(powerplantGasBiomass_thermalBus_1_3) -+0.5 flow(gasBus_powerplantGasBiomass_1_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_2_4)_: --0.4 flow(powerplantGasBiomass_electricityBus_2_4) -+0.3 flow(gasBus_powerplantGasBiomass_2_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_2_4)_: --0.4 flow(powerplantGasBiomass_thermalBus_2_4) -+0.5 flow(gasBus_powerplantGasBiomass_2_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_electricityBus_2_5)_: --0.4 flow(powerplantGasBiomass_electricityBus_2_5) -+0.3 flow(gasBus_powerplantGasBiomass_2_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) -= 0 - -c_e_ConverterBlock_relation(powerplantGasBiomass_gasBus_thermalBus_2_5)_: --0.4 flow(powerplantGasBiomass_thermalBus_2_5) -+0.5 flow(gasBus_powerplantGasBiomass_2_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 -end diff --git a/tests/lp_files/dsm_module_DIW.lp b/tests/lp_files/dsm_module_DIW.lp deleted file mode 100644 index 337238871..000000000 --- a/tests/lp_files/dsm_module_DIW.lp +++ /dev/null @@ -1,157 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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_2) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) -= 0 - -c_e_SinkDSMDIWBlock_shift_shed_vars(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) -= 0 - -c_e_SinkDSMDIWBlock_shift_shed_vars(demand_dsm_1)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) -= 0 - -c_e_SinkDSMDIWBlock_shift_shed_vars(demand_dsm_2)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) -= 0 - -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 - -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 - -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 - -c_e_SinkDSMDIWBlock_dsm_updo_constraint(demand_dsm_0)_: --1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) --1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) -+1 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) --1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) --1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) -+1 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) --1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) -= 0 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_1)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_2)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(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) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(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) -<= 0.5 - -c_u_SinkDSMDIWBlock_C2_constraint(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_do_shift(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) -<= 0.5 - -c_u_SinkDSMDIWBlock_C2_constraint(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.5 - -c_u_SinkDSMDIWBlock_C2_constraint(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 - -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_2) <= +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 -end diff --git a/tests/lp_files/dsm_module_DIW_extended.lp b/tests/lp_files/dsm_module_DIW_extended.lp deleted file mode 100644 index 92ce70c7e..000000000 --- a/tests/lp_files/dsm_module_DIW_extended.lp +++ /dev/null @@ -1,179 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_0) -+100 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) -= 0 - -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 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) --1 SinkDSMDIWBlock_dsm_up(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_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) -= 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) -= 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 - -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 - -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 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_1)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) -<= 0.4 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_2)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) -<= 0.3 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(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) -<= 0.3 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(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) -<= 0.4 - -c_u_SinkDSMDIWBlock_C2_constraint(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_do_shift(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) -<= 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) -<= 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) -<= 0.5 - -c_u_SinkDSMDIWBlock_recovery_constraint(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_0) -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) -<= 0.5 - -c_u_SinkDSMDIWBlock_recovery_constraint(demand_dsm_1)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) -<= 0.4 - -c_u_SinkDSMDIWBlock_recovery_constraint(demand_dsm_2)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) -<= 0.5 - -c_u_SinkDSMDIWBlock_shed_limit_constraint(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) -<= 0.6 - -c_u_SinkDSMDIWBlock_shed_limit_constraint(demand_dsm_1)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) -<= 0.6 - -c_u_SinkDSMDIWBlock_shed_limit_constraint(demand_dsm_2)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) -<= 0.8 - -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_shed(demand_dsm_0) <= +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 -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 deleted file mode 100644 index e247e622e..000000000 --- a/tests/lp_files/dsm_module_DIW_extended_multi_period.lp +++ /dev/null @@ -1,395 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_0) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_0) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_0) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_0) -+100 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) -= 0 - -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) -= 0 - -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) -= 0 - -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) -= 0 - -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 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) --1 SinkDSMDIWBlock_dsm_up(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_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) -= 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) -= 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) -= 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) -= 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) -= 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 - -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 - -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 - -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 - -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 - -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 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_1)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) -<= 0.4 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_2)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_3)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_3) -<= 0.3 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_4)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_4) -<= 0.3 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_5)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_5) -<= 0.3 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) -<= 0.3 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(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) -<= 0.3 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(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) -<= 0.4 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(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) -<= 0.3 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(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) -<= 0.3 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(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) -<= 0.3 - -c_u_SinkDSMDIWBlock_C2_constraint(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_do_shift(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) -<= 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) -<= 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) -<= 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) -<= 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) -<= 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) -<= 0.3 - -c_u_SinkDSMDIWBlock_recovery_constraint(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_0) -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) -<= 0.5 - -c_u_SinkDSMDIWBlock_recovery_constraint(demand_dsm_1)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) -<= 0.4 - -c_u_SinkDSMDIWBlock_recovery_constraint(demand_dsm_2)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_3) -<= 0.5 - -c_u_SinkDSMDIWBlock_recovery_constraint(demand_dsm_3)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_3) -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_4) -<= 0.3 - -c_u_SinkDSMDIWBlock_recovery_constraint(demand_dsm_4)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_4) -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_5) -<= 0.3 - -c_u_SinkDSMDIWBlock_recovery_constraint(demand_dsm_5)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_5) -<= 0.3 - -c_u_SinkDSMDIWBlock_shed_limit_constraint(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) -<= 0.6 - -c_u_SinkDSMDIWBlock_shed_limit_constraint(demand_dsm_1)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) -<= 0.6 - -c_u_SinkDSMDIWBlock_shed_limit_constraint(demand_dsm_2)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_3) -<= 0.8 - -c_u_SinkDSMDIWBlock_shed_limit_constraint(demand_dsm_3)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_3) -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_4) -<= 0.6 - -c_u_SinkDSMDIWBlock_shed_limit_constraint(demand_dsm_4)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_4) -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_5) -<= 0.6 - -c_u_SinkDSMDIWBlock_shed_limit_constraint(demand_dsm_5)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_5) -<= 0.6 - -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_shed(demand_dsm_0) <= +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 -end diff --git a/tests/lp_files/dsm_module_DIW_invest.lp b/tests/lp_files/dsm_module_DIW_invest.lp deleted file mode 100644 index ee3ccfb2a..000000000 --- a/tests/lp_files/dsm_module_DIW_invest.lp +++ /dev/null @@ -1,184 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_0) -+100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_0)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_0) -= 50 - -c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(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 - -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 - -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 - -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) -= 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) -= 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) -= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_0_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_0_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_0_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_0_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_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) --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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_0_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_0_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -bounds - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) <= +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 <= 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 deleted file mode 100644 index 1ff5873d6..000000000 --- a/tests/lp_files/dsm_module_DIW_invest_multi_period.lp +++ /dev/null @@ -1,487 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+2941.5609381007307 ONE_VAR_CONSTANT -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_0) -+100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) -= 0 - -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) -= 0 - -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) -= 0 - -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_0)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_0) -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -= 50 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_1)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_1) --1 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_1) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_2)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_2) --1 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_end(demand_dsm_0)_: -+1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_0) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_end(demand_dsm_1)_: -+1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_1) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_end(demand_dsm_2)_: -+1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(demand_dsm_0)_: -+1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_0) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(demand_dsm_1)_: -+1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_1) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(demand_dsm_2)_: -+1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(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)_: -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_1) --1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_1) --1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_1) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(demand_dsm_2)_: -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_2) --1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_2) --1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(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 - -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 - -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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_0_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_1_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_1_3)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_2_4)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_2_5)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_0_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_1_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_1_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_2_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_2_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_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) --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) --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) --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) --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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_0_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_1_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_3) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_1_3)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_3) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_4) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_2_4)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_4) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_5) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_2_5)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_5) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(demand_dsm_0)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 1000 - -c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(demand_dsm_1)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -<= 1000 - -c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(demand_dsm_2)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -<= 1000 - -c_l_SinkDSMDIWInvestmentBlock_overall_minimum(demand_dsm)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) ->= 5 - -bounds - 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) <= +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 <= 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_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_2) <= +inf - 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 deleted file mode 100644 index c4783b7fe..000000000 --- a/tests/lp_files/dsm_module_DIW_invest_multi_period_remaining_value.lp +++ /dev/null @@ -1,487 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+2941.5609381007307 ONE_VAR_CONSTANT -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_0) -+100 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) -= 0 - -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) -= 0 - -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) -= 0 - -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_0)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_0) -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -= 50 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_1)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_1) --1 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_1) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_2)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_2) --1 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_end(demand_dsm_0)_: -+1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_0) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_end(demand_dsm_1)_: -+1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_1) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_end(demand_dsm_2)_: -+1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(demand_dsm_0)_: -+1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_0) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(demand_dsm_1)_: -+1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_1) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(demand_dsm_2)_: -+1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(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)_: -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_1) --1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_1) --1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_1) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(demand_dsm_2)_: -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_2) --1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_2) --1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(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 - -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 - -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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_0) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_0_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_1) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_1_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_2) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_1_3)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_3) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_2_4)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_4) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_2_5)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_5) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_0_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_1_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_1_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_2_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_2_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_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) --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) --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) --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) --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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_0_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_1_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_3) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_1_3)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_3) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_4) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_2_4)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_4) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_5) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_2_5)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_5) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(demand_dsm_0)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_0) -<= 1000 - -c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(demand_dsm_1)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_1) -<= 1000 - -c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(demand_dsm_2)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) -<= 1000 - -c_l_SinkDSMDIWInvestmentBlock_overall_minimum(demand_dsm)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_2) ->= 5 - -bounds - 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_0_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_1_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_2_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_3_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_4_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_5_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_0) <= +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 <= 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_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_2) <= +inf - 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 deleted file mode 100644 index a1be324b6..000000000 --- a/tests/lp_files/dsm_module_DIW_multi_period.lp +++ /dev/null @@ -1,349 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_5) -+1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_5) -+1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_5) -+1.9223375624759707 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_5) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) -= 0 - -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) -= 0 - -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) -= 0 - -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) -= 0 - -c_e_SinkDSMDIWBlock_shift_shed_vars(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) -= 0 - -c_e_SinkDSMDIWBlock_shift_shed_vars(demand_dsm_1)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_1) -= 0 - -c_e_SinkDSMDIWBlock_shift_shed_vars(demand_dsm_2)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_2) -= 0 - -c_e_SinkDSMDIWBlock_shift_shed_vars(demand_dsm_3)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_3) -= 0 - -c_e_SinkDSMDIWBlock_shift_shed_vars(demand_dsm_4)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_4) -= 0 - -c_e_SinkDSMDIWBlock_shift_shed_vars(demand_dsm_5)_: -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_5) -= 0 - -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 - -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 - -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 - -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 - -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 - -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 - -c_e_SinkDSMDIWBlock_dsm_updo_constraint(demand_dsm_0)_: --1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) --1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_1) -+1 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) --1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_1) --1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_2) -+1 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) --1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_2) --1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_2_3) -+1 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) --1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_3) --1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_3_4) -+1 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) --1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_4) --1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_4_5) -+1 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) --1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_5_5) -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_5) -= 0 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_1)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_1) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_2)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_2) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_3)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_3) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_4)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_4) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_up_constraint(demand_dsm_5)_: -+1 SinkDSMDIWBlock_dsm_up(demand_dsm_5) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_0_0) -+1 SinkDSMDIWBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDIWBlock_dsm_do_shed(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(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) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(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) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(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) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(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) -<= 0.5 - -c_u_SinkDSMDIWBlock_dsm_do_constraint(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) -<= 0.5 - -c_u_SinkDSMDIWBlock_C2_constraint(demand_dsm_0)_: -+1 SinkDSMDIWBlock_dsm_do_shift(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) -<= 0.5 - -c_u_SinkDSMDIWBlock_C2_constraint(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.5 - -c_u_SinkDSMDIWBlock_C2_constraint(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_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.5 - -c_u_SinkDSMDIWBlock_C2_constraint(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.5 - -c_u_SinkDSMDIWBlock_C2_constraint(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.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_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 <= 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 - 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_up(demand_dsm_2) <= +inf - 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_3) <= +inf - 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_4) <= +inf - 0 <= SinkDSMDIWBlock_dsm_up(demand_dsm_5) <= +inf -end diff --git a/tests/lp_files/dsm_module_DLR.lp b/tests/lp_files/dsm_module_DLR.lp deleted file mode 100644 index e6aa3475a..000000000 --- a/tests/lp_files/dsm_module_DLR.lp +++ /dev/null @@ -1,355 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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_2) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_1_0)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_1_1)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_1_2)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_2_0)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_2_1)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_2_2)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) -= 0 - -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_2_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_2_0) -+1 flow(bus_elec_demand_dsm_0_0) -+1 SinkDSMDLRBlock_dsm_do_shed(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_2_1) -+1 flow(bus_elec_demand_dsm_0_1) -+1 SinkDSMDLRBlock_dsm_do_shed(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_2_2) -+1 flow(bus_elec_demand_dsm_0_2) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) -= 1 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_0)_: -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_1)_: --1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_2)_: --1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_0)_: -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_2)_: --1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_0)_: -+1 SinkDSMDLRBlock_balance_dsm_up(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) -= 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) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_0)_: -+1 SinkDSMDLRBlock_balance_dsm_up(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) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_red(demand_dsm_1_2)_: -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_red(demand_dsm_2_1)_: -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_red(demand_dsm_2_2)_: -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_inc(demand_dsm_1_2)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_inc(demand_dsm_2_1)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_inc(demand_dsm_2_2)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) -= 0 - -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_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_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_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_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_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_2_2) -<= 0.5 - -c_e_SinkDSMDLRBlock_dr_storage_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_level(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_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_dsm_do_level(demand_dsm_1) --1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_0)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) --1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) -+1 SinkDSMDLRBlock_dsm_up_level(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_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_level(demand_dsm_1) --1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) -= 0 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_0)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_1)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_2)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_0)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_1)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_2)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) -<= 0.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_2_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_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_2_1) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_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_2_2) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_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_2) <= +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_do_level(demand_dsm_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) <= +inf -end diff --git a/tests/lp_files/dsm_module_DLR_delay_time.lp b/tests/lp_files/dsm_module_DLR_delay_time.lp deleted file mode 100644 index 21997cf82..000000000 --- a/tests/lp_files/dsm_module_DLR_delay_time.lp +++ /dev/null @@ -1,353 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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_2) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_1_0)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_1_1)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_1_2)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_3_0)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_3_1)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_3_2)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) -= 0 - -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_3_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_3_0) -+1 flow(bus_elec_demand_dsm_0_0) -+1 SinkDSMDLRBlock_dsm_do_shed(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_3_1) -+1 flow(bus_elec_demand_dsm_0_1) -+1 SinkDSMDLRBlock_dsm_do_shed(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_3_2) -+1 flow(bus_elec_demand_dsm_0_2) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) -= 1 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_0)_: -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_1)_: --1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_2)_: --1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_3_0)_: -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_3_0) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_0)_: -+1 SinkDSMDLRBlock_balance_dsm_up(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) -= 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) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_3_0)_: -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_0) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_red(demand_dsm_1_2)_: -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_red(demand_dsm_3_0)_: -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_0) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_red(demand_dsm_3_1)_: -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_1) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_red(demand_dsm_3_2)_: -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_2) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_inc(demand_dsm_1_2)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_inc(demand_dsm_3_0)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_0) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_inc(demand_dsm_3_1)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_1) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_inc(demand_dsm_3_2)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_2) -= 0 - -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_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_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_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_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_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_3_2) -<= 0.5 - -c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_0)_: --1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) --1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_3_0) -+1 SinkDSMDLRBlock_dsm_do_level(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_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_dsm_do_level(demand_dsm_1) --1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_0)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) --1 SinkDSMDLRBlock_dsm_up(demand_dsm_3_0) -+1 SinkDSMDLRBlock_dsm_up_level(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_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_level(demand_dsm_1) --1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) -= 0 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_0)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_1)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_2)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_0)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_1)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_2)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) -<= 0.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_3_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_3_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_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_3_1) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_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_3_2) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_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_2) <= +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_do_level(demand_dsm_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) <= +inf -end diff --git a/tests/lp_files/dsm_module_DLR_extended.lp b/tests/lp_files/dsm_module_DLR_extended.lp deleted file mode 100644 index 3c09f5fe8..000000000 --- a/tests/lp_files/dsm_module_DLR_extended.lp +++ /dev/null @@ -1,310 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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_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_2_2) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_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_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) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_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_2_1) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_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_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_2_2) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_0_2) -= 0.8 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_0)_: -+1 SinkDSMDLRBlock_balance_dsm_do(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) -= 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) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_0)_: -+1 SinkDSMDLRBlock_balance_dsm_do(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) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_0)_: -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_1)_: --0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_2)_: --0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_0)_: -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_2)_: --0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) -= 0 - -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_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_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_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_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_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_2_2) -<= 0.5 - -c_e_SinkDSMDLRBlock_dr_storage_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_level(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_1)_: --0.99 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) --0.99 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_dsm_do_level(demand_dsm_0) --1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_2)_: --0.99 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) --0.99 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_dsm_do_level(demand_dsm_1) --1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_0)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) --1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_1)_: -+0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+0.99 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_level(demand_dsm_0) --1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_2)_: -+0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+0.99 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_level(demand_dsm_1) --1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) -= 0 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_0)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_0) -<= 0.3333333333333333 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_1)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) -<= 0.3333333333333333 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_2)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) -<= 0.3333333333333333 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_0)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_0) -<= 0.4666666666666666 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_1)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) -<= 0.4666666666666666 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_2)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) -<= 0.4666666666666666 - -c_u_SinkDSMDLRBlock_dr_yearly_limit_shed(demand_dsm_0)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) -<= 33.33333333333333 - -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_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_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_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 <= 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_level(demand_dsm_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) <= +inf -end diff --git a/tests/lp_files/dsm_module_DLR_extended_multi_period.lp b/tests/lp_files/dsm_module_DLR_extended_multi_period.lp deleted file mode 100644 index 1626a1bfd..000000000 --- a/tests/lp_files/dsm_module_DLR_extended_multi_period.lp +++ /dev/null @@ -1,706 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+0.9611687812379853 SinkDSMDLRBlock_dsm_up(demand_dsm_2_5) -+0.9611687812379853 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_5) -+0.9611687812379853 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_5) -+0.9611687812379853 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) -+0.9611687812379853 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_5) -+0.9611687812379853 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_5) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) -= 0 - -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) -= 0 - -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) -= 0 - -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_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_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) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_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_2_1) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_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_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_2_2) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_1_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_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_2_3) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_3) -+1 flow(bus_elec_demand_dsm_1_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_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_2_4) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_4) -+1 flow(bus_elec_demand_dsm_2_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_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_2_5) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_5) -+1 flow(bus_elec_demand_dsm_2_5) -= 0.7 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_0)_: -+1 SinkDSMDLRBlock_balance_dsm_do(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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_0)_: -+1 SinkDSMDLRBlock_balance_dsm_do(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) -= 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) -= 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) -= 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) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_0)_: -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_0) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_1)_: --0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_1) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_2)_: --0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_2) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_3)_: --0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_3) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_4)_: --0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_4) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_5)_: --0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_1_5) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_0)_: -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_0) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_2)_: --0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_2) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_3)_: --0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_2_1) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_3) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_4)_: --0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_2_2) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_4) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_5)_: --0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_2_3) -+1 SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_5) -= 0 - -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_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_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_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_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_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_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_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_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_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_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_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_2_5) -<= 0.3 - -c_e_SinkDSMDLRBlock_dr_storage_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_level(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_1)_: --0.99 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) --0.99 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_dsm_do_level(demand_dsm_0) --1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_2)_: --0.99 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) --0.99 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_dsm_do_level(demand_dsm_1) --1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_3)_: --0.99 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) --0.99 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_dsm_do_level(demand_dsm_2) --1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_3) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_4)_: --0.99 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) --0.99 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_dsm_do_level(demand_dsm_3) --1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_4) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_red(demand_dsm_5)_: --0.99 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) --0.99 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_dsm_do_level(demand_dsm_4) --1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_5) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_0)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) --1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_1)_: -+0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_1_1) -+0.99 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_level(demand_dsm_0) --1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_2)_: -+0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_1_2) -+0.99 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_level(demand_dsm_1) --1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_3)_: -+0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_1_3) -+0.99 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_level(demand_dsm_2) --1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_3) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_4)_: -+0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_1_4) -+0.99 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_level(demand_dsm_3) --1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_4) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_5)_: -+0.99 SinkDSMDLRBlock_dsm_up(demand_dsm_1_5) -+0.99 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_level(demand_dsm_4) --1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_5) -= 0 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_0)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_0) -<= 0.3166666666666667 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_1)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) -<= 0.3166666666666667 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_2)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) -<= 0.3166666666666667 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_3)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_3) -<= 0.3166666666666667 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_4)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_4) -<= 0.3166666666666667 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_5)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_5) -<= 0.3166666666666667 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_0)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_0) -<= 0.3833333333333333 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_1)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) -<= 0.3833333333333333 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_2)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) -<= 0.3833333333333333 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_3)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_3) -<= 0.3833333333333333 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_4)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_4) -<= 0.3833333333333333 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_5)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_5) -<= 0.3833333333333333 - -c_u_SinkDSMDLRBlock_dr_yearly_limit_shed(demand_dsm_0)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) -<= 31.66666666666667 - -c_u_SinkDSMDLRBlock_dr_yearly_limit_shed(demand_dsm_1)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_3) -<= 31.66666666666667 - -c_u_SinkDSMDLRBlock_dr_yearly_limit_shed(demand_dsm_2)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_4) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_5) -<= 31.66666666666667 - -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) -<= 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_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_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_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_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_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_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_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_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_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_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_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_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_5) <= +inf - 0 <= SinkDSMDLRBlock_balance_dsm_up(demand_dsm_2_5) <= +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 <= 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 - 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_3) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_4) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_5) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_3) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_4) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_5) <= +inf -end diff --git a/tests/lp_files/dsm_module_DLR_invest.lp b/tests/lp_files/dsm_module_DLR_invest.lp deleted file mode 100644 index c7404697f..000000000 --- a/tests/lp_files/dsm_module_DLR_invest.lp +++ /dev/null @@ -1,375 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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_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_2_2) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_0)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_0) -= 50 - -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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_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_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_2_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_0_2) -= 1 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(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) -= 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) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(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) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_1)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_2_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_2_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_red(demand_dsm_1_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_red(demand_dsm_2_1)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_red(demand_dsm_2_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(demand_dsm_1_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(demand_dsm_2_1)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(demand_dsm_2_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) -= 0 - -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_2_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) --0.5 SinkDSMDLRInvestmentBlock_total(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_2_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -<= 0 - -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_2_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -<= 0 - -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_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_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_2_2) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_0)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_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_dsm_do_shift(demand_dsm_2_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_0) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_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_dsm_do_shift(demand_dsm_2_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_1) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_0)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_1)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_0) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_1) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_2) -= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_0_0)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_0) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_0_1)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_1) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_0_2)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_2) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_0_0)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_0) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_0_1)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_1) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_0_2)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_2) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_0)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) --50.0 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -<= 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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) --0.5 SinkDSMDLRInvestmentBlock_total(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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -<= 0 - -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_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_2_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -<= 0 - -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_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 <= 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 <= SinkDSMDLRInvestmentBlock_total(demand_dsm_0) <= +inf - 33 <= SinkDSMDLRInvestmentBlock_invest(demand_dsm_0) <= 100 - 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 - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_2) <= +inf -end diff --git a/tests/lp_files/dsm_module_DLR_invest_multi_period.lp b/tests/lp_files/dsm_module_DLR_invest_multi_period.lp deleted file mode 100644 index 4bfd30471..000000000 --- a/tests/lp_files/dsm_module_DLR_invest_multi_period.lp +++ /dev/null @@ -1,824 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_5) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_5) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_5) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_5) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_5) -+96.11687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) -+76.46810240317063 SinkDSMDLRInvestmentBlock_invest(demand_dsm_0) -+50.47234572422055 SinkDSMDLRInvestmentBlock_invest(demand_dsm_1) -+24.986309764465627 SinkDSMDLRInvestmentBlock_invest(demand_dsm_2) - -s.t. - -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) -= 0 - -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) -= 0 - -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) -= 0 - -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_0)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -= 50 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_1)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_1) --1 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_2)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_2) --1 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_end(demand_dsm_0)_: -+1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_end(demand_dsm_1)_: -+1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_end(demand_dsm_2)_: -+1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(demand_dsm_0)_: -+1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(demand_dsm_1)_: -+1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(demand_dsm_2)_: -+1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(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)_: -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_1) --1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_1) --1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(demand_dsm_2)_: -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_2) --1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_2) --1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_2) -= 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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_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_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_2_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_1_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_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_2_3) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) -+1 flow(bus_elec_demand_dsm_1_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_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_2_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) -+1 flow(bus_elec_demand_dsm_2_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_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_2_5) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) -+1 flow(bus_elec_demand_dsm_2_5) -= 3 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(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) -= 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) -= 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) -= 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) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_1)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_3)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_4)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_5)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_2_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_2_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_2_3)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_2_4)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_2_5)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_red(demand_dsm_1_5)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_red(demand_dsm_2_4)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_red(demand_dsm_2_5)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(demand_dsm_1_5)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(demand_dsm_2_4)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(demand_dsm_2_5)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_5) -= 0 - -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_2_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) --0.5 SinkDSMDLRInvestmentBlock_total(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_2_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -<= 0 - -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_2_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -<= 0 - -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_2_3) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -<= 0 - -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_2_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -<= 0 - -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_2_5) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -<= 0 - -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_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_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_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_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_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_2_5) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_0)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_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_dsm_do_shift(demand_dsm_2_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_0) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_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_dsm_do_shift(demand_dsm_2_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_1) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_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_dsm_do_shift(demand_dsm_2_3) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_2) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_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_dsm_do_shift(demand_dsm_2_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_3) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_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_dsm_do_shift(demand_dsm_2_5) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_4) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_0)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_1)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_0) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_1) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_3)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_3) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_2) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_4)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_4) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_3) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_5)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_5) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_4) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_5) -= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_0_0)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_0) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_0_1)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_1) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_1_2)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_2) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_1_3)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_3) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_2_4)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_4) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_2_5)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_5) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_0_0)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_0) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_0_1)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_1) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_1_2)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_2) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_1_3)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_3) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_2_4)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_4) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_2_5)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_5) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_0)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) --50.0 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_1)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) --50.0 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) --50.0 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -<= 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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) --0.5 SinkDSMDLRInvestmentBlock_total(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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -<= 0 - -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_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_2_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -<= 0 - -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_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_2_3) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -<= 0 - -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_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_2_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -<= 0 - -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_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_2_5) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(demand_dsm_0)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -<= 1000 - -c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(demand_dsm_1)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -<= 1000 - -c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(demand_dsm_2)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -<= 1000 - -c_l_SinkDSMDLRInvestmentBlock_overall_minimum(demand_dsm)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) ->= 5 - -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_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_5) <= +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_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_5) <= +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 <= 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_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_2) <= +inf - 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 - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_5) <= +inf -end 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 deleted file mode 100644 index 2742536af..000000000 --- a/tests/lp_files/dsm_module_DLR_invest_multi_period_remaining_value.lp +++ /dev/null @@ -1,824 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_5) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_5) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_5) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_5) -+0.9611687812379853 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_5) -+96.11687812379853 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) -+57.62165571222974 SinkDSMDLRInvestmentBlock_invest(demand_dsm_0) -+39.8850096825295 SinkDSMDLRInvestmentBlock_invest(demand_dsm_1) -+23.833722936524442 SinkDSMDLRInvestmentBlock_invest(demand_dsm_2) - -s.t. - -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) -= 0 - -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) -= 0 - -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) -= 0 - -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_0)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -= 50 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_1)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_1) --1 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_2)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_2) --1 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_end(demand_dsm_0)_: -+1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_end(demand_dsm_1)_: -+1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_end(demand_dsm_2)_: -+1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(demand_dsm_0)_: -+1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(demand_dsm_1)_: -+1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(demand_dsm_2)_: -+1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(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)_: -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_1) --1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_1) --1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(demand_dsm_2)_: -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_2) --1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_2) --1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_2) -= 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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) -+1 flow(bus_elec_demand_dsm_0_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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) -+1 flow(bus_elec_demand_dsm_0_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_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_2_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) -+1 flow(bus_elec_demand_dsm_1_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_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_2_3) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) -+1 flow(bus_elec_demand_dsm_1_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_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_2_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) -+1 flow(bus_elec_demand_dsm_2_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_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_2_5) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) -+1 flow(bus_elec_demand_dsm_2_5) -= 3 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_1_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_2_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(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) -= 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) -= 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) -= 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) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_1)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_3)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_4)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_1_5)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_1_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_2_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_2_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_2_3)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_2_4)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_2_5)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_red(demand_dsm_1_5)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_red(demand_dsm_2_4)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_red(demand_dsm_2_5)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(demand_dsm_1_5)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(demand_dsm_2_4)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(demand_dsm_2_5)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_5) -= 0 - -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_2_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) --0.5 SinkDSMDLRInvestmentBlock_total(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_2_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -<= 0 - -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_2_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -<= 0 - -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_2_3) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -<= 0 - -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_2_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -<= 0 - -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_2_5) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -<= 0 - -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_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_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_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_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_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_2_5) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_0)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_1_0) --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_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_dsm_do_shift(demand_dsm_2_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_0) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_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_dsm_do_shift(demand_dsm_2_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_1) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_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_dsm_do_shift(demand_dsm_2_3) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_2) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_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_dsm_do_shift(demand_dsm_2_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_3) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_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_dsm_do_shift(demand_dsm_2_5) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_4) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_0)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_0) --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_2_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_1)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_1) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_0) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_2) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_1) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_3)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_3) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_2) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_4)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_4) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_3) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_5)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_1_5) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_4) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_5) -= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_0_0)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_0) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_0_1)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_1) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_1_2)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_2) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_1_3)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_3) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_2_4)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_4) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_2_5)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_5) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_0_0)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_0) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_0_1)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_1) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_1_2)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_2) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_1_3)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_3) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_2_4)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_4) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_2_5)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_5) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_0)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) --50.0 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_1)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) --50.0 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) --50.0 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -<= 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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_0) --0.5 SinkDSMDLRInvestmentBlock_total(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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_1) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -<= 0 - -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_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_2_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_2) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -<= 0 - -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_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_2_3) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_3) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -<= 0 - -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_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_2_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_4) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -<= 0 - -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_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_2_5) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_5) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(demand_dsm_0)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_0) -<= 1000 - -c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(demand_dsm_1)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_1) -<= 1000 - -c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(demand_dsm_2)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) -<= 1000 - -c_l_SinkDSMDLRInvestmentBlock_overall_minimum(demand_dsm)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_2) ->= 5 - -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_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_2_5) <= +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_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_2_5) <= +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 <= 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_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_2) <= +inf - 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 - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_5) <= +inf -end diff --git a/tests/lp_files/dsm_module_DLR_multi_period.lp b/tests/lp_files/dsm_module_DLR_multi_period.lp deleted file mode 100644 index c9ff2e694..000000000 --- a/tests/lp_files/dsm_module_DLR_multi_period.lp +++ /dev/null @@ -1,697 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+1.9223375624759707 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_5) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) -= 0 - -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) -= 0 - -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) -= 0 - -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_1_0)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_1_1)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_1_2)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_1_3)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_3) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_1_4)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_4) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_1_5)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_5) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_2_0)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_0) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_2_1)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_1) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_2_2)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_2) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_2_3)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_3) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_2_4)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_4) -= 0 - -c_e_SinkDSMDLRBlock_shift_shed_vars(demand_dsm_2_5)_: -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_5) -= 0 - -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_2_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_2_0) -+1 flow(bus_elec_demand_dsm_0_0) -+1 SinkDSMDLRBlock_dsm_do_shed(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_2_1) -+1 flow(bus_elec_demand_dsm_0_1) -+1 SinkDSMDLRBlock_dsm_do_shed(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_2_2) -+1 flow(bus_elec_demand_dsm_1_2) -+1 SinkDSMDLRBlock_dsm_do_shed(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_2_3) -+1 flow(bus_elec_demand_dsm_1_3) -+1 SinkDSMDLRBlock_dsm_do_shed(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_2_4) -+1 flow(bus_elec_demand_dsm_2_4) -+1 SinkDSMDLRBlock_dsm_do_shed(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_2_5) -+1 flow(bus_elec_demand_dsm_2_5) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_5) -= 1 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_0)_: -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_0) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_1)_: --1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_0) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_1) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_2)_: --1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_2) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_3)_: --1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_2) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_3) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_4)_: --1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_3) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_4) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_1_5)_: --1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_4) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_1_5) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_0)_: -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_0) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_2)_: --1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_0) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_2) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_3)_: --1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_1) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_3) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_4)_: --1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_2) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_4) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_red(demand_dsm_2_5)_: --1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_3) -+1 SinkDSMDLRBlock_balance_dsm_do(demand_dsm_2_5) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_1_0)_: -+1 SinkDSMDLRBlock_balance_dsm_up(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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_SinkDSMDLRBlock_capacity_balance_inc(demand_dsm_2_0)_: -+1 SinkDSMDLRBlock_balance_dsm_up(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) -= 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) -= 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) -= 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) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_red(demand_dsm_1_5)_: -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_1_5) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_red(demand_dsm_2_4)_: -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_4) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_red(demand_dsm_2_5)_: -+1 SinkDSMDLRBlock_dsm_do_shift(demand_dsm_2_5) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_inc(demand_dsm_1_5)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_5) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_inc(demand_dsm_2_4)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_4) -= 0 - -c_e_SinkDSMDLRBlock_no_comp_inc(demand_dsm_2_5)_: -+1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_5) -= 0 - -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_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_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_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_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_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_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_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_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_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_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_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_2_5) -<= 0.5 - -c_e_SinkDSMDLRBlock_dr_storage_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_level(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_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_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_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_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_dsm_do_level(demand_dsm_4) --1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_5) -= 0 - -c_e_SinkDSMDLRBlock_dr_storage_inc(demand_dsm_0)_: --1 SinkDSMDLRBlock_dsm_up(demand_dsm_1_0) --1 SinkDSMDLRBlock_dsm_up(demand_dsm_2_0) -+1 SinkDSMDLRBlock_dsm_up_level(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_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_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_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_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_level(demand_dsm_4) --1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_5) -= 0 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_0)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_1)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_2)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_3)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_3) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_4)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_4) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_red(demand_dsm_5)_: -+1 SinkDSMDLRBlock_dsm_do_level(demand_dsm_5) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_0)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_1)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_2)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_3)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_3) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_4)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_4) -<= 0.5 - -c_u_SinkDSMDLRBlock_dr_storage_limit_inc(demand_dsm_5)_: -+1 SinkDSMDLRBlock_dsm_up_level(demand_dsm_5) -<= 0.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_2_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_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_2_1) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_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_2_2) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_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_2_3) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_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_2_4) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_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_2_5) -+1 SinkDSMDLRBlock_dsm_do_shed(demand_dsm_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_5) <= +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_do_level(demand_dsm_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_2) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_3) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_4) <= +inf - 0 <= SinkDSMDLRBlock_dsm_do_level(demand_dsm_5) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_0) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_1) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_2) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_3) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_4) <= +inf - 0 <= SinkDSMDLRBlock_dsm_up_level(demand_dsm_5) <= +inf -end diff --git a/tests/lp_files/dsm_module_oemof.lp b/tests/lp_files/dsm_module_oemof.lp deleted file mode 100644 index 416c4ee1b..000000000 --- a/tests/lp_files/dsm_module_oemof.lp +++ /dev/null @@ -1,103 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+2 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) -+2 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) -+2 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) - -s.t. - -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) -= 0 - -c_e_SinkDSMOemofBlock_shift_shed_vars(demand_dsm_0)_: -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) -= 0 - -c_e_SinkDSMOemofBlock_shift_shed_vars(demand_dsm_1)_: -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) -= 0 - -c_e_SinkDSMOemofBlock_shift_shed_vars(demand_dsm_2)_: -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) -= 0 - -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 - -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 - -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 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) --1 SinkDSMOemofBlock_dsm_up(demand_dsm_2) -= 1 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_0)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_1)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_1) -<= 0.4 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_2)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_2) -<= 0.5 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_0)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_1)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) -<= 0.4 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_2)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) -<= 0.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) -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_0) -+1 SinkDSMOemofBlock_dsm_up(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 <= 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 <= 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_up(demand_dsm_2) <= +inf -end diff --git a/tests/lp_files/dsm_module_oemof_extended.lp b/tests/lp_files/dsm_module_oemof_extended.lp deleted file mode 100644 index 7d2eda425..000000000 --- a/tests/lp_files/dsm_module_oemof_extended.lp +++ /dev/null @@ -1,97 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) -+100 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_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 - -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) -= 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) -= 0.8 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_0)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_1)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_1) -<= 0.4 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_2)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_2) -<= 0.5 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_0)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) -<= 0.3 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_1)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) -<= 0.3 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_2)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) -<= 0.4 - -c_e_SinkDSMOemofBlock_dsm_sum_constraint(demand_dsm_0)_: --1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) -+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_shed(demand_dsm_0) <= +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 -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 deleted file mode 100644 index 745854ca7..000000000 --- a/tests/lp_files/dsm_module_oemof_extended_multi_period.lp +++ /dev/null @@ -1,192 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) -+100 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) -= 0 - -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) -= 0 - -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) -= 0 - -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_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 - -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) -= 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) -= 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) -= 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) -= 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) -= 0.7 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_0)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_1)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_1) -<= 0.4 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_2)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_2) -<= 0.5 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_3)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_3) -<= 0.3 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_4)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_4) -<= 0.3 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_5)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_5) -<= 0.3 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_0)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) -<= 0.3 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_1)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) -<= 0.3 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_2)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) -<= 0.4 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_3)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_3) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_3) -<= 0.3 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_4)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_4) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_4) -<= 0.3 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_5)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_5) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_5) -<= 0.3 - -c_e_SinkDSMOemofBlock_dsm_sum_constraint(demand_dsm_0)_: --1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) -+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 - -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 - -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 - -bounds - 0 <= SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) <= +inf - 0 <= SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) <= +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 -end diff --git a/tests/lp_files/dsm_module_oemof_invest.lp b/tests/lp_files/dsm_module_oemof_invest.lp deleted file mode 100644 index ca2a89296..000000000 --- a/tests/lp_files/dsm_module_oemof_invest.lp +++ /dev/null @@ -1,110 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) -+100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_0) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_0_2)_: -+1 flow(bus_elec_demand_dsm_0_2) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_0)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_0) -= 50 - -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 - -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 - -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 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_0_0)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_0) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_0_1)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) --0.4 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_0_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_0_0)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_0) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_0_1)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) --0.4 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_0_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_0)_: --1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) -+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_shed(demand_dsm_0) <= +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 <= 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 deleted file mode 100644 index 47a17847e..000000000 --- a/tests/lp_files/dsm_module_oemof_invest_multi_period.lp +++ /dev/null @@ -1,301 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+2941.5609381007307 ONE_VAR_CONSTANT -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) -+100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_0) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) -= 0 - -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) -= 0 - -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) -= 0 - -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_0)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_0) -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -= 50 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_1)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_1) --1 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_1) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_2)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_2) --1 SinkDSMOemofInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_2) -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_2) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_end(demand_dsm_0)_: -+1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_0) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_end(demand_dsm_1)_: -+1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_1) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_end(demand_dsm_2)_: -+1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_2) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(demand_dsm_0)_: -+1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_0) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(demand_dsm_1)_: -+1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_1) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(demand_dsm_2)_: -+1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_2) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(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)_: -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_1) --1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_1) --1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_1) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(demand_dsm_2)_: -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_2) --1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_2) --1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_2) -= 0 - -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 - -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 - -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) -= 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) -= 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) -= 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) -= 3 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_0_0)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_0) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_0_1)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) --0.4 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_1_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_1_3)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_3) --0.3 SinkDSMOemofInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_2_4)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_4) --0.3 SinkDSMOemofInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_2_5)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_5) --0.3 SinkDSMOemofInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_0_0)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_0) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_0_1)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) --0.4 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_1_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_1_3)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_3) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_3) --0.3 SinkDSMOemofInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_2_4)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_4) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_4) --0.3 SinkDSMOemofInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_2_5)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_5) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_5) --0.3 SinkDSMOemofInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_0)_: --1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) -+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) -= 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) -= 0 - -c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(demand_dsm_0)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -<= 1000 - -c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(demand_dsm_1)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_1) -<= 1000 - -c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(demand_dsm_2)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_2) -<= 1000 - -c_l_SinkDSMOemofInvestmentBlock_overall_minimum(demand_dsm)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_2) ->= 5 - -bounds - 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_0) <= +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 <= 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_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_0) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_2) <= +inf - 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 deleted file mode 100644 index 5b31f8473..000000000 --- a/tests/lp_files/dsm_module_oemof_invest_multi_period_remaining_value.lp +++ /dev/null @@ -1,301 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+2941.5609381007307 ONE_VAR_CONSTANT -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) -+100 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_0) -+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) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) -= 0 - -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) -= 0 - -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) -= 0 - -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_0)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_0) -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -= 50 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_1)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_1) --1 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_1) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_2)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_2) --1 SinkDSMOemofInvestmentBlock_total(demand_dsm_1) -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_2) -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_2) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_end(demand_dsm_0)_: -+1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_0) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_end(demand_dsm_1)_: -+1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_1) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_end(demand_dsm_2)_: -+1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_2) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(demand_dsm_0)_: -+1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_0) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(demand_dsm_1)_: -+1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_1) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(demand_dsm_2)_: -+1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_2) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(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)_: -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_1) --1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_1) --1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_1) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(demand_dsm_2)_: -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_2) --1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_2) --1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_2) -= 0 - -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 - -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 - -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) -= 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) -= 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) -= 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) -= 3 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_0_0)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_0) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_0_1)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_1) --0.4 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_1_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_2) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_1_3)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_3) --0.3 SinkDSMOemofInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_2_4)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_4) --0.3 SinkDSMOemofInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_2_5)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_5) --0.3 SinkDSMOemofInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_0_0)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_0) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_0_1)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_1) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_1) --0.4 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_1_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_2) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_2) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_1_3)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_3) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_3) --0.3 SinkDSMOemofInvestmentBlock_total(demand_dsm_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_2_4)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_4) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_4) --0.3 SinkDSMOemofInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_2_5)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_5) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_5) --0.3 SinkDSMOemofInvestmentBlock_total(demand_dsm_2) -<= 0 - -c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_0)_: --1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) -+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) -= 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) -= 0 - -c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(demand_dsm_0)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_0) -<= 1000 - -c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(demand_dsm_1)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_1) -<= 1000 - -c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(demand_dsm_2)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_2) -<= 1000 - -c_l_SinkDSMOemofInvestmentBlock_overall_minimum(demand_dsm)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_2) ->= 5 - -bounds - 1 <= ONE_VAR_CONSTANT <= 1 - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_0) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_0) <= +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 <= 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_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_0) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_2) <= +inf - 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 deleted file mode 100644 index 225e20da6..000000000 --- a/tests/lp_files/dsm_module_oemof_multi_period.lp +++ /dev/null @@ -1,204 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+2 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) -+2 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) -+1.9607843137254901 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) -+1.9607843137254901 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_3) -+1.9223375624759707 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_4) -+1.9223375624759707 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_5) - -s.t. - -c_e_BusBlock_balance(bus_elec_0_0)_: -+1 flow(bus_elec_demand_dsm_0_0) -= 0 - -c_e_BusBlock_balance(bus_elec_0_1)_: -+1 flow(bus_elec_demand_dsm_0_1) -= 0 - -c_e_BusBlock_balance(bus_elec_1_2)_: -+1 flow(bus_elec_demand_dsm_1_2) -= 0 - -c_e_BusBlock_balance(bus_elec_1_3)_: -+1 flow(bus_elec_demand_dsm_1_3) -= 0 - -c_e_BusBlock_balance(bus_elec_2_4)_: -+1 flow(bus_elec_demand_dsm_2_4) -= 0 - -c_e_BusBlock_balance(bus_elec_2_5)_: -+1 flow(bus_elec_demand_dsm_2_5) -= 0 - -c_e_SinkDSMOemofBlock_shift_shed_vars(demand_dsm_0)_: -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) -= 0 - -c_e_SinkDSMOemofBlock_shift_shed_vars(demand_dsm_1)_: -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) -= 0 - -c_e_SinkDSMOemofBlock_shift_shed_vars(demand_dsm_2)_: -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) -= 0 - -c_e_SinkDSMOemofBlock_shift_shed_vars(demand_dsm_3)_: -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_3) -= 0 - -c_e_SinkDSMOemofBlock_shift_shed_vars(demand_dsm_4)_: -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_4) -= 0 - -c_e_SinkDSMOemofBlock_shift_shed_vars(demand_dsm_5)_: -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_5) -= 0 - -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 - -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 - -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 - -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 - -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 - -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 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_0)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_1)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_1) -<= 0.4 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_2)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_2) -<= 0.5 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_3)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_3) -<= 0.3 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_4)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_4) -<= 0.3 - -c_u_SinkDSMOemofBlock_dsm_up_constraint(demand_dsm_5)_: -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_5) -<= 0.3 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_0)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_0) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_0) -<= 0.5 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_1)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_1) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_1) -<= 0.4 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_2)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_2) -<= 0.5 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_3)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_3) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_3) -<= 0.3 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_4)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_4) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_4) -<= 0.3 - -c_u_SinkDSMOemofBlock_dsm_down_constraint(demand_dsm_5)_: -+1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_5) -+1 SinkDSMOemofBlock_dsm_do_shed(demand_dsm_5) -<= 0.3 - -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) -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_0) -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_1) -= 0 - -c_e_SinkDSMOemofBlock_dsm_sum_constraint(demand_dsm_2)_: --1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_2) --1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_3) -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_2) -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_3) -= 0 - -c_e_SinkDSMOemofBlock_dsm_sum_constraint(demand_dsm_4)_: --1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_4) --1 SinkDSMOemofBlock_dsm_do_shift(demand_dsm_5) -+1 SinkDSMOemofBlock_dsm_up(demand_dsm_4) -+1 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 <= 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 -end diff --git a/tests/lp_files/emission_budget_limit.lp b/tests/lp_files/emission_budget_limit.lp deleted file mode 100644 index cbe106b68..000000000 --- a/tests/lp_files/emission_budget_limit.lp +++ /dev/null @@ -1,38 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+0 ONE_VAR_CONSTANT - -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) -<= 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 -end diff --git a/tests/lp_files/emission_limit.lp b/tests/lp_files/emission_limit.lp deleted file mode 100644 index 8d00d7c36..000000000 --- a/tests/lp_files/emission_limit.lp +++ /dev/null @@ -1,47 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+0 ONE_VAR_CONSTANT - -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) -<= 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) -= 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) -= 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) -= 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 -end diff --git a/tests/lp_files/emission_limit_no_error.lp b/tests/lp_files/emission_limit_no_error.lp deleted file mode 100644 index 564aadb05..000000000 --- a/tests/lp_files/emission_limit_no_error.lp +++ /dev/null @@ -1,38 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+0 ONE_VAR_CONSTANT - -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) -<= 777 - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(source1_electricityBus_0_0) -+1 flow(source2_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(source1_electricityBus_0_1) -+1 flow(source2_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(source1_electricityBus_0_2) -+1 flow(source2_electricityBus_0_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 -end diff --git a/tests/lp_files/equate_flows.lp b/tests/lp_files/equate_flows.lp deleted file mode 100644 index 950d932e8..000000000 --- a/tests/lp_files/equate_flows.lp +++ /dev/null @@ -1,63 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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 -end diff --git a/tests/lp_files/fixed_costs_sources.lp b/tests/lp_files/fixed_costs_sources.lp deleted file mode 100644 index 004e64ad8..000000000 --- a/tests/lp_files/fixed_costs_sources.lp +++ /dev/null @@ -1,91 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+235.90542099192615 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) - -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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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 -end diff --git a/tests/lp_files/fixed_source_invest_sink.lp b/tests/lp_files/fixed_source_invest_sink.lp deleted file mode 100644 index 7e36eb90b..000000000 --- a/tests/lp_files/fixed_source_invest_sink.lp +++ /dev/null @@ -1,57 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_excess_0_0) -= -12000000.0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_excess_0_1) -= -16000000.0 - -c_e_BusBlock_balance(electricityBus_0_2)_: --1 flow(electricityBus_excess_0_2) -= -14000000.0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_excess_0)_: --1 InvestmentFlowBlock_invest(electricityBus_excess_0) -+1 InvestmentFlowBlock_total(electricityBus_excess_0) -= 50 - -c_u_InvestmentFlowBlock_max(electricityBus_excess_0_0)_: -+1 flow(electricityBus_excess_0_0) --0.8 InvestmentFlowBlock_total(electricityBus_excess_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_excess_0_1)_: -+1 flow(electricityBus_excess_0_1) --0.8 InvestmentFlowBlock_total(electricityBus_excess_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_excess_0_2)_: -+1 flow(electricityBus_excess_0_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) --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 <= 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 deleted file mode 100644 index af511ec32..000000000 --- a/tests/lp_files/fixed_source_invest_sink_multi_period.lp +++ /dev/null @@ -1,166 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_excess_0_0) -= -12000000.0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_excess_0_1) -= -16000000.0 - -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_excess_1_2) -= -14000000.0 - -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_excess_1_3) -= -18000000.0 - -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_excess_2_4) -= -18000000.0 - -c_e_BusBlock_balance(electricityBus_2_5)_: --1 flow(electricityBus_excess_2_5) -= -18000000.0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_excess_0)_: --1 InvestmentFlowBlock_invest(electricityBus_excess_0) -+1 InvestmentFlowBlock_total(electricityBus_excess_0) -= 50 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_excess_1)_: --1 InvestmentFlowBlock_invest(electricityBus_excess_1) --1 InvestmentFlowBlock_total(electricityBus_excess_0) -+1 InvestmentFlowBlock_total(electricityBus_excess_1) -+1 InvestmentFlowBlock_old(electricityBus_excess_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_excess_2)_: --1 InvestmentFlowBlock_invest(electricityBus_excess_2) --1 InvestmentFlowBlock_total(electricityBus_excess_1) -+1 InvestmentFlowBlock_total(electricityBus_excess_2) -+1 InvestmentFlowBlock_old(electricityBus_excess_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_excess_0)_: -+1 InvestmentFlowBlock_old_end(electricityBus_excess_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_excess_1)_: -+1 InvestmentFlowBlock_old_end(electricityBus_excess_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_excess_2)_: -+1 InvestmentFlowBlock_old_end(electricityBus_excess_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_excess_0)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_excess_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_excess_1)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_excess_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_excess_2)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_excess_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(electricityBus_excess_1) --1 InvestmentFlowBlock_old_end(electricityBus_excess_1) --1 InvestmentFlowBlock_old_exo(electricityBus_excess_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(electricityBus_excess_2)_: -+1 InvestmentFlowBlock_old(electricityBus_excess_2) --1 InvestmentFlowBlock_old_end(electricityBus_excess_2) --1 InvestmentFlowBlock_old_exo(electricityBus_excess_2) -= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_excess_0_0)_: -+1 flow(electricityBus_excess_0_0) --0.8 InvestmentFlowBlock_total(electricityBus_excess_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_excess_0_1)_: -+1 flow(electricityBus_excess_0_1) --0.8 InvestmentFlowBlock_total(electricityBus_excess_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_excess_1_2)_: -+1 flow(electricityBus_excess_1_2) --0.8 InvestmentFlowBlock_total(electricityBus_excess_1) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_excess_1_3)_: -+1 flow(electricityBus_excess_1_3) --0.8 InvestmentFlowBlock_total(electricityBus_excess_1) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_excess_2_4)_: -+1 flow(electricityBus_excess_2_4) --0.8 InvestmentFlowBlock_total(electricityBus_excess_2) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_excess_2_5)_: -+1 flow(electricityBus_excess_2_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) --2.3 InvestmentFlowBlock_total(electricityBus_excess_0) --2.3 InvestmentFlowBlock_total(electricityBus_excess_1) --2.3 InvestmentFlowBlock_total(electricityBus_excess_2) -<= 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 <= 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_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_excess_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_excess_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_excess_2) <= +inf - 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 deleted file mode 100644 index 064e7f06a..000000000 --- a/tests/lp_files/fixed_source_variable_sink.lp +++ /dev/null @@ -1,27 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+40 flow(electricityBus_excess_0_0) -+40 flow(electricityBus_excess_0_1) -+40 flow(electricityBus_excess_0_2) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_excess_0_0) -= -430000.0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_excess_0_1) -= -720000.0 - -c_e_BusBlock_balance(electricityBus_0_2)_: --1 flow(electricityBus_excess_0_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 -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 deleted file mode 100644 index f86665232..000000000 --- a/tests/lp_files/fixed_source_variable_sink_multi_period.lp +++ /dev/null @@ -1,45 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_excess_0_0) -= -430000.0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_excess_0_1) -= -720000.0 - -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_excess_1_2) -= -290000.0 - -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_excess_1_3) -= -330000.0 - -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_excess_2_4) -= -330000.0 - -c_e_BusBlock_balance(electricityBus_2_5)_: --1 flow(electricityBus_excess_2_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 -end diff --git a/tests/lp_files/flow_count_limit.lp b/tests/lp_files/flow_count_limit.lp deleted file mode 100644 index b4e80d20e..000000000 --- a/tests/lp_files/flow_count_limit.lp +++ /dev/null @@ -1,219 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+0 ONE_VAR_CONSTANT - -s.t. - -c_e_emission_factor_constraint(0)_: -+1 NonConvexFlowBlock_status(source1_electricityBus_0) -+1 NonConvexFlowBlock_status(source2_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 emission_factor(1) -= 0 - -c_e_emission_factor_constraint(2)_: -+1 NonConvexFlowBlock_status(source1_electricityBus_2) -+1 NonConvexFlowBlock_status(source2_electricityBus_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) -= 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) -= 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) -= 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(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) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(source2_electricityBus_1)_: --100 NonConvexFlowBlock_status(source2_electricityBus_1) -+1 NonConvexFlowBlock_status_nominal(source2_electricityBus_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(source2_electricityBus_2)_: --100 NonConvexFlowBlock_status(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) -<= 0 - -c_u_NonConvexFlowBlock_min(source1_electricityBus_0_1)_: --1 flow(source1_electricityBus_0_1) -<= 0 - -c_u_NonConvexFlowBlock_min(source1_electricityBus_0_2)_: --1 flow(source1_electricityBus_0_2) -<= 0 - -c_u_NonConvexFlowBlock_min(source3_electricityBus_0_0)_: --1 flow(source3_electricityBus_0_0) -<= 0 - -c_u_NonConvexFlowBlock_min(source3_electricityBus_0_1)_: --1 flow(source3_electricityBus_0_1) -<= 0 - -c_u_NonConvexFlowBlock_min(source3_electricityBus_0_2)_: --1 flow(source3_electricityBus_0_2) -<= 0 - -c_u_NonConvexFlowBlock_min(source2_electricityBus_0_0)_: --1 flow(source2_electricityBus_0_0) -<= 0 - -c_u_NonConvexFlowBlock_min(source2_electricityBus_0_1)_: --1 flow(source2_electricityBus_0_1) -<= 0 - -c_u_NonConvexFlowBlock_min(source2_electricityBus_0_2)_: --1 flow(source2_electricityBus_0_2) -<= 0 - -c_u_NonConvexFlowBlock_max(source1_electricityBus_0_0)_: -+1 flow(source1_electricityBus_0_0) --1 NonConvexFlowBlock_status_nominal(source1_electricityBus_0) -<= 0 - -c_u_NonConvexFlowBlock_max(source1_electricityBus_0_1)_: -+1 flow(source1_electricityBus_0_1) --1 NonConvexFlowBlock_status_nominal(source1_electricityBus_1) -<= 0 - -c_u_NonConvexFlowBlock_max(source1_electricityBus_0_2)_: -+1 flow(source1_electricityBus_0_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) -<= 0 - -c_u_NonConvexFlowBlock_max(source3_electricityBus_0_1)_: -+1 flow(source3_electricityBus_0_1) --1 NonConvexFlowBlock_status_nominal(source3_electricityBus_1) -<= 0 - -c_u_NonConvexFlowBlock_max(source3_electricityBus_0_2)_: -+1 flow(source3_electricityBus_0_2) --1 NonConvexFlowBlock_status_nominal(source3_electricityBus_2) -<= 0 - -c_u_NonConvexFlowBlock_max(source2_electricityBus_0_0)_: -+1 flow(source2_electricityBus_0_0) --1 NonConvexFlowBlock_status_nominal(source2_electricityBus_0) -<= 0 - -c_u_NonConvexFlowBlock_max(source2_electricityBus_0_1)_: -+1 flow(source2_electricityBus_0_1) --1 NonConvexFlowBlock_status_nominal(source2_electricityBus_1) -<= 0 - -c_u_NonConvexFlowBlock_max(source2_electricityBus_0_2)_: -+1 flow(source2_electricityBus_0_2) --1 NonConvexFlowBlock_status_nominal(source2_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_2) <= 1 - 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 <= 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 -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(source3_electricityBus_0) - NonConvexFlowBlock_status(source3_electricityBus_1) - NonConvexFlowBlock_status(source3_electricityBus_2) -end diff --git a/tests/lp_files/flow_count_limit_multi_period.lp b/tests/lp_files/flow_count_limit_multi_period.lp deleted file mode 100644 index 3532a0b18..000000000 --- a/tests/lp_files/flow_count_limit_multi_period.lp +++ /dev/null @@ -1,378 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+0 ONE_VAR_CONSTANT - -s.t. - -c_e_emission_factor_constraint(0)_: -+1 NonConvexFlowBlock_status(source1_electricityBus_0) -+1 NonConvexFlowBlock_status(source2_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 emission_factor(1) -= 0 - -c_e_emission_factor_constraint(2)_: -+1 NonConvexFlowBlock_status(source1_electricityBus_2) -+1 NonConvexFlowBlock_status(source2_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 emission_factor(3) -= 0 - -c_e_emission_factor_constraint(4)_: -+1 NonConvexFlowBlock_status(source1_electricityBus_4) -+1 NonConvexFlowBlock_status(source2_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 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) -= 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(source3_electricityBus_3)_: -+1 NonConvexFlowBlock_status_nominal(source3_electricityBus_3) --100 NonConvexFlowBlock_status(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) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(source3_electricityBus_5)_: -+1 NonConvexFlowBlock_status_nominal(source3_electricityBus_5) --100 NonConvexFlowBlock_status(source3_electricityBus_5) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(source2_electricityBus_0)_: --100 NonConvexFlowBlock_status(source2_electricityBus_0) -+1 NonConvexFlowBlock_status_nominal(source2_electricityBus_0) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(source2_electricityBus_1)_: --100 NonConvexFlowBlock_status(source2_electricityBus_1) -+1 NonConvexFlowBlock_status_nominal(source2_electricityBus_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(source2_electricityBus_2)_: --100 NonConvexFlowBlock_status(source2_electricityBus_2) -+1 NonConvexFlowBlock_status_nominal(source2_electricityBus_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(source2_electricityBus_3)_: --100 NonConvexFlowBlock_status(source2_electricityBus_3) -+1 NonConvexFlowBlock_status_nominal(source2_electricityBus_3) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(source2_electricityBus_4)_: --100 NonConvexFlowBlock_status(source2_electricityBus_4) -+1 NonConvexFlowBlock_status_nominal(source2_electricityBus_4) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(source2_electricityBus_5)_: --100 NonConvexFlowBlock_status(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_u_NonConvexFlowBlock_min(source1_electricityBus_0_1)_: --1 flow(source1_electricityBus_0_1) -<= 0 - -c_u_NonConvexFlowBlock_min(source1_electricityBus_1_2)_: --1 flow(source1_electricityBus_1_2) -<= 0 - -c_u_NonConvexFlowBlock_min(source1_electricityBus_1_3)_: --1 flow(source1_electricityBus_1_3) -<= 0 - -c_u_NonConvexFlowBlock_min(source1_electricityBus_2_4)_: --1 flow(source1_electricityBus_2_4) -<= 0 - -c_u_NonConvexFlowBlock_min(source1_electricityBus_2_5)_: --1 flow(source1_electricityBus_2_5) -<= 0 - -c_u_NonConvexFlowBlock_min(source3_electricityBus_0_0)_: --1 flow(source3_electricityBus_0_0) -<= 0 - -c_u_NonConvexFlowBlock_min(source3_electricityBus_0_1)_: --1 flow(source3_electricityBus_0_1) -<= 0 - -c_u_NonConvexFlowBlock_min(source3_electricityBus_1_2)_: --1 flow(source3_electricityBus_1_2) -<= 0 - -c_u_NonConvexFlowBlock_min(source3_electricityBus_1_3)_: --1 flow(source3_electricityBus_1_3) -<= 0 - -c_u_NonConvexFlowBlock_min(source3_electricityBus_2_4)_: --1 flow(source3_electricityBus_2_4) -<= 0 - -c_u_NonConvexFlowBlock_min(source3_electricityBus_2_5)_: --1 flow(source3_electricityBus_2_5) -<= 0 - -c_u_NonConvexFlowBlock_min(source2_electricityBus_0_0)_: --1 flow(source2_electricityBus_0_0) -<= 0 - -c_u_NonConvexFlowBlock_min(source2_electricityBus_0_1)_: --1 flow(source2_electricityBus_0_1) -<= 0 - -c_u_NonConvexFlowBlock_min(source2_electricityBus_1_2)_: --1 flow(source2_electricityBus_1_2) -<= 0 - -c_u_NonConvexFlowBlock_min(source2_electricityBus_1_3)_: --1 flow(source2_electricityBus_1_3) -<= 0 - -c_u_NonConvexFlowBlock_min(source2_electricityBus_2_4)_: --1 flow(source2_electricityBus_2_4) -<= 0 - -c_u_NonConvexFlowBlock_min(source2_electricityBus_2_5)_: --1 flow(source2_electricityBus_2_5) -<= 0 - -c_u_NonConvexFlowBlock_max(source1_electricityBus_0_0)_: --1 NonConvexFlowBlock_status_nominal(source1_electricityBus_0) -+1 flow(source1_electricityBus_0_0) -<= 0 - -c_u_NonConvexFlowBlock_max(source1_electricityBus_0_1)_: --1 NonConvexFlowBlock_status_nominal(source1_electricityBus_1) -+1 flow(source1_electricityBus_0_1) -<= 0 - -c_u_NonConvexFlowBlock_max(source1_electricityBus_1_2)_: --1 NonConvexFlowBlock_status_nominal(source1_electricityBus_2) -+1 flow(source1_electricityBus_1_2) -<= 0 - -c_u_NonConvexFlowBlock_max(source1_electricityBus_1_3)_: --1 NonConvexFlowBlock_status_nominal(source1_electricityBus_3) -+1 flow(source1_electricityBus_1_3) -<= 0 - -c_u_NonConvexFlowBlock_max(source1_electricityBus_2_4)_: --1 NonConvexFlowBlock_status_nominal(source1_electricityBus_4) -+1 flow(source1_electricityBus_2_4) -<= 0 - -c_u_NonConvexFlowBlock_max(source1_electricityBus_2_5)_: --1 NonConvexFlowBlock_status_nominal(source1_electricityBus_5) -+1 flow(source1_electricityBus_2_5) -<= 0 - -c_u_NonConvexFlowBlock_max(source3_electricityBus_0_0)_: --1 NonConvexFlowBlock_status_nominal(source3_electricityBus_0) -+1 flow(source3_electricityBus_0_0) -<= 0 - -c_u_NonConvexFlowBlock_max(source3_electricityBus_0_1)_: --1 NonConvexFlowBlock_status_nominal(source3_electricityBus_1) -+1 flow(source3_electricityBus_0_1) -<= 0 - -c_u_NonConvexFlowBlock_max(source3_electricityBus_1_2)_: --1 NonConvexFlowBlock_status_nominal(source3_electricityBus_2) -+1 flow(source3_electricityBus_1_2) -<= 0 - -c_u_NonConvexFlowBlock_max(source3_electricityBus_1_3)_: --1 NonConvexFlowBlock_status_nominal(source3_electricityBus_3) -+1 flow(source3_electricityBus_1_3) -<= 0 - -c_u_NonConvexFlowBlock_max(source3_electricityBus_2_4)_: --1 NonConvexFlowBlock_status_nominal(source3_electricityBus_4) -+1 flow(source3_electricityBus_2_4) -<= 0 - -c_u_NonConvexFlowBlock_max(source3_electricityBus_2_5)_: --1 NonConvexFlowBlock_status_nominal(source3_electricityBus_5) -+1 flow(source3_electricityBus_2_5) -<= 0 - -c_u_NonConvexFlowBlock_max(source2_electricityBus_0_0)_: --1 NonConvexFlowBlock_status_nominal(source2_electricityBus_0) -+1 flow(source2_electricityBus_0_0) -<= 0 - -c_u_NonConvexFlowBlock_max(source2_electricityBus_0_1)_: --1 NonConvexFlowBlock_status_nominal(source2_electricityBus_1) -+1 flow(source2_electricityBus_0_1) -<= 0 - -c_u_NonConvexFlowBlock_max(source2_electricityBus_1_2)_: --1 NonConvexFlowBlock_status_nominal(source2_electricityBus_2) -+1 flow(source2_electricityBus_1_2) -<= 0 - -c_u_NonConvexFlowBlock_max(source2_electricityBus_1_3)_: --1 NonConvexFlowBlock_status_nominal(source2_electricityBus_3) -+1 flow(source2_electricityBus_1_3) -<= 0 - -c_u_NonConvexFlowBlock_max(source2_electricityBus_2_4)_: --1 NonConvexFlowBlock_status_nominal(source2_electricityBus_4) -+1 flow(source2_electricityBus_2_4) -<= 0 - -c_u_NonConvexFlowBlock_max(source2_electricityBus_2_5)_: --1 NonConvexFlowBlock_status_nominal(source2_electricityBus_5) -+1 flow(source2_electricityBus_2_5) -<= 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_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 - 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 -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) -end diff --git a/tests/lp_files/flow_invest_with_offset.lp b/tests/lp_files/flow_invest_with_offset.lp deleted file mode 100644 index 168b31a8a..000000000 --- a/tests/lp_files/flow_invest_with_offset.lp +++ /dev/null @@ -1,71 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(source_nonconvex_invest_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(source_nonconvex_invest_electricityBus_0_2) -= 0 - -c_u_InvestmentFlowBlock_minimum_rule(source_nonconvex_invest_electricityBus_0)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) -+15 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(source_nonconvex_invest_electricityBus_0)_: -+1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) --20 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) -<= 0 - -c_e_InvestmentFlowBlock_total_rule(source_nonconvex_invest_electricityBus_0)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) -+1 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) -= 0 - -c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_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) --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) --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) --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 <= InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= +inf -binary - InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) -end diff --git a/tests/lp_files/flow_invest_with_offset_multi_period.lp b/tests/lp_files/flow_invest_with_offset_multi_period.lp deleted file mode 100644 index 5e4510206..000000000 --- a/tests/lp_files/flow_invest_with_offset_multi_period.lp +++ /dev/null @@ -1,206 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(source_nonconvex_invest_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(source_nonconvex_invest_electricityBus_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(source_nonconvex_invest_electricityBus_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(source_nonconvex_invest_electricityBus_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(source_nonconvex_invest_electricityBus_2_5) -= 0 - -c_u_InvestmentFlowBlock_minimum_rule(source_nonconvex_invest_electricityBus_0)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) -+15 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_minimum_rule(source_nonconvex_invest_electricityBus_1)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_1) -+15 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_minimum_rule(source_nonconvex_invest_electricityBus_2)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_2) -+15 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_2) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(source_nonconvex_invest_electricityBus_0)_: -+1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) --20 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(source_nonconvex_invest_electricityBus_1)_: -+1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_1) --20 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(source_nonconvex_invest_electricityBus_2)_: -+1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_2) --20 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_2) -<= 0 - -c_e_InvestmentFlowBlock_total_rule(source_nonconvex_invest_electricityBus_0)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) -+1 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(source_nonconvex_invest_electricityBus_1)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_1) --1 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) -+1 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) -+1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(source_nonconvex_invest_electricityBus_2)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_2) --1 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) -+1 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_2) -+1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(source_nonconvex_invest_electricityBus_0)_: -+1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(source_nonconvex_invest_electricityBus_1)_: -+1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(source_nonconvex_invest_electricityBus_2)_: -+1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(source_nonconvex_invest_electricityBus_0)_: -+1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(source_nonconvex_invest_electricityBus_1)_: -+1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(source_nonconvex_invest_electricityBus_2)_: -+1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_1) --1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_1) --1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(source_nonconvex_invest_electricityBus_2)_: -+1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_2) --1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_2) --1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_2) -= 0 - -c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_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) --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) --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) --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) --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) --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) --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 - -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_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 <= 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_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_2) <= +inf - 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) - InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_2) -end 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 deleted file mode 100644 index 5e4510206..000000000 --- a/tests/lp_files/flow_invest_with_offset_multi_period_remaining_value.lp +++ /dev/null @@ -1,206 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(source_nonconvex_invest_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(source_nonconvex_invest_electricityBus_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(source_nonconvex_invest_electricityBus_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(source_nonconvex_invest_electricityBus_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(source_nonconvex_invest_electricityBus_2_5) -= 0 - -c_u_InvestmentFlowBlock_minimum_rule(source_nonconvex_invest_electricityBus_0)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) -+15 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_minimum_rule(source_nonconvex_invest_electricityBus_1)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_1) -+15 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_minimum_rule(source_nonconvex_invest_electricityBus_2)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_2) -+15 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_2) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(source_nonconvex_invest_electricityBus_0)_: -+1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) --20 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(source_nonconvex_invest_electricityBus_1)_: -+1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_1) --20 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(source_nonconvex_invest_electricityBus_2)_: -+1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_2) --20 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_2) -<= 0 - -c_e_InvestmentFlowBlock_total_rule(source_nonconvex_invest_electricityBus_0)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) -+1 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(source_nonconvex_invest_electricityBus_1)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_1) --1 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) -+1 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) -+1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(source_nonconvex_invest_electricityBus_2)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_2) --1 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) -+1 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_2) -+1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(source_nonconvex_invest_electricityBus_0)_: -+1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(source_nonconvex_invest_electricityBus_1)_: -+1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(source_nonconvex_invest_electricityBus_2)_: -+1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(source_nonconvex_invest_electricityBus_0)_: -+1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(source_nonconvex_invest_electricityBus_1)_: -+1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(source_nonconvex_invest_electricityBus_2)_: -+1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_1) --1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_1) --1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(source_nonconvex_invest_electricityBus_2)_: -+1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_2) --1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_2) --1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_2) -= 0 - -c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_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) --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) --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) --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) --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) --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) --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 - -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_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 <= 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_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_2) <= +inf - 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) - InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_2) -end diff --git a/tests/lp_files/flow_invest_with_offset_no_minimum.lp b/tests/lp_files/flow_invest_with_offset_no_minimum.lp deleted file mode 100644 index ead5cfa51..000000000 --- a/tests/lp_files/flow_invest_with_offset_no_minimum.lp +++ /dev/null @@ -1,70 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(source_nonconvex_invest_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(source_nonconvex_invest_electricityBus_0_2) -= 0 - -c_u_InvestmentFlowBlock_minimum_rule(source_nonconvex_invest_electricityBus_0)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(source_nonconvex_invest_electricityBus_0)_: -+1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) --1234 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) -<= 0 - -c_e_InvestmentFlowBlock_total_rule(source_nonconvex_invest_electricityBus_0)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) -+1 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) -= 0 - -c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_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) --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) --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) --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 <= InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) <= +inf -binary - InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) -end 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 deleted file mode 100644 index 6ff9b91de..000000000 --- a/tests/lp_files/flow_invest_with_offset_no_minimum_multi_period.lp +++ /dev/null @@ -1,203 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(source_nonconvex_invest_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(source_nonconvex_invest_electricityBus_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(source_nonconvex_invest_electricityBus_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(source_nonconvex_invest_electricityBus_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(source_nonconvex_invest_electricityBus_2_5) -= 0 - -c_u_InvestmentFlowBlock_minimum_rule(source_nonconvex_invest_electricityBus_0)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_minimum_rule(source_nonconvex_invest_electricityBus_1)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_minimum_rule(source_nonconvex_invest_electricityBus_2)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_2) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(source_nonconvex_invest_electricityBus_0)_: -+1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) --1234 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(source_nonconvex_invest_electricityBus_1)_: -+1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_1) --1234 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(source_nonconvex_invest_electricityBus_2)_: -+1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_2) --1234 InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_2) -<= 0 - -c_e_InvestmentFlowBlock_total_rule(source_nonconvex_invest_electricityBus_0)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_0) -+1 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(source_nonconvex_invest_electricityBus_1)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_1) --1 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_0) -+1 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) -+1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(source_nonconvex_invest_electricityBus_2)_: --1 InvestmentFlowBlock_invest(source_nonconvex_invest_electricityBus_2) --1 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_1) -+1 InvestmentFlowBlock_total(source_nonconvex_invest_electricityBus_2) -+1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(source_nonconvex_invest_electricityBus_0)_: -+1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(source_nonconvex_invest_electricityBus_1)_: -+1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(source_nonconvex_invest_electricityBus_2)_: -+1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(source_nonconvex_invest_electricityBus_0)_: -+1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(source_nonconvex_invest_electricityBus_1)_: -+1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(source_nonconvex_invest_electricityBus_2)_: -+1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_1) --1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_1) --1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(source_nonconvex_invest_electricityBus_2)_: -+1 InvestmentFlowBlock_old(source_nonconvex_invest_electricityBus_2) --1 InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_2) --1 InvestmentFlowBlock_old_exo(source_nonconvex_invest_electricityBus_2) -= 0 - -c_u_InvestmentFlowBlock_max(source_nonconvex_invest_electricityBus_0_0)_: -+1 flow(source_nonconvex_invest_electricityBus_0_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) --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) --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) --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) --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) --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) --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 - -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_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 <= 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_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(source_nonconvex_invest_electricityBus_2) <= +inf - 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) - InvestmentFlowBlock_invest_status(source_nonconvex_invest_electricityBus_2) -end diff --git a/tests/lp_files/flow_invest_without_offset.lp b/tests/lp_files/flow_invest_without_offset.lp deleted file mode 100644 index 0e52141d3..000000000 --- a/tests/lp_files/flow_invest_without_offset.lp +++ /dev/null @@ -1,70 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_2) -= 0 - -c_u_InvestmentFlowBlock_minimum_rule(electricityBus_sink_nonconvex_invest_0)_: --1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_0) -+15 InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_0) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(electricityBus_sink_nonconvex_invest_0)_: -+1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_0) --172 InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_0) -<= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_sink_nonconvex_invest_0)_: --1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_0) -+1 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) -= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_0_0)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_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) --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) --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) --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 <= InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_0) <= 1 - 0 <= InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) <= +inf -binary - InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_0) -end diff --git a/tests/lp_files/flow_invest_without_offset_multi_period.lp b/tests/lp_files/flow_invest_without_offset_multi_period.lp deleted file mode 100644 index 40b7e34a1..000000000 --- a/tests/lp_files/flow_invest_without_offset_multi_period.lp +++ /dev/null @@ -1,203 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(electricityBus_sink_nonconvex_invest_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(electricityBus_sink_nonconvex_invest_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(electricityBus_sink_nonconvex_invest_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(electricityBus_sink_nonconvex_invest_2_5) -= 0 - -c_u_InvestmentFlowBlock_minimum_rule(electricityBus_sink_nonconvex_invest_0)_: --1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_0) -+15 InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_0) -<= 0 - -c_u_InvestmentFlowBlock_minimum_rule(electricityBus_sink_nonconvex_invest_1)_: --1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_1) -+15 InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_1) -<= 0 - -c_u_InvestmentFlowBlock_minimum_rule(electricityBus_sink_nonconvex_invest_2)_: --1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_2) -+15 InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_2) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(electricityBus_sink_nonconvex_invest_0)_: -+1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_0) --172 InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_0) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(electricityBus_sink_nonconvex_invest_1)_: -+1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_1) --172 InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_1) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(electricityBus_sink_nonconvex_invest_2)_: -+1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_2) --172 InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_2) -<= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_sink_nonconvex_invest_0)_: --1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_0) -+1 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_sink_nonconvex_invest_1)_: --1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_1) --1 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) -+1 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_1) -+1 InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_sink_nonconvex_invest_2)_: --1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_2) --1 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_1) -+1 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_2) -+1 InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_sink_nonconvex_invest_0)_: -+1 InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_sink_nonconvex_invest_1)_: -+1 InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_sink_nonconvex_invest_2)_: -+1 InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_sink_nonconvex_invest_0)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_sink_nonconvex_invest_1)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_sink_nonconvex_invest_2)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_1) --1 InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_1) --1 InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(electricityBus_sink_nonconvex_invest_2)_: -+1 InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_2) --1 InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_2) --1 InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_2) -= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_0_0)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_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) --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) --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) --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) --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) --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) --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 - -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 <= 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_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_2) <= +inf - 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) - InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_2) -end 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 deleted file mode 100644 index 40b7e34a1..000000000 --- a/tests/lp_files/flow_invest_without_offset_multi_period_remaining_value.lp +++ /dev/null @@ -1,203 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(electricityBus_sink_nonconvex_invest_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(electricityBus_sink_nonconvex_invest_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(electricityBus_sink_nonconvex_invest_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(electricityBus_sink_nonconvex_invest_2_5) -= 0 - -c_u_InvestmentFlowBlock_minimum_rule(electricityBus_sink_nonconvex_invest_0)_: --1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_0) -+15 InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_0) -<= 0 - -c_u_InvestmentFlowBlock_minimum_rule(electricityBus_sink_nonconvex_invest_1)_: --1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_1) -+15 InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_1) -<= 0 - -c_u_InvestmentFlowBlock_minimum_rule(electricityBus_sink_nonconvex_invest_2)_: --1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_2) -+15 InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_2) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(electricityBus_sink_nonconvex_invest_0)_: -+1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_0) --172 InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_0) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(electricityBus_sink_nonconvex_invest_1)_: -+1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_1) --172 InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_1) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(electricityBus_sink_nonconvex_invest_2)_: -+1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_2) --172 InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_2) -<= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_sink_nonconvex_invest_0)_: --1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_0) -+1 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_sink_nonconvex_invest_1)_: --1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_1) --1 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_0) -+1 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_1) -+1 InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_sink_nonconvex_invest_2)_: --1 InvestmentFlowBlock_invest(electricityBus_sink_nonconvex_invest_2) --1 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_1) -+1 InvestmentFlowBlock_total(electricityBus_sink_nonconvex_invest_2) -+1 InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_sink_nonconvex_invest_0)_: -+1 InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_sink_nonconvex_invest_1)_: -+1 InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_sink_nonconvex_invest_2)_: -+1 InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_sink_nonconvex_invest_0)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_sink_nonconvex_invest_1)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_sink_nonconvex_invest_2)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_1) --1 InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_1) --1 InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(electricityBus_sink_nonconvex_invest_2)_: -+1 InvestmentFlowBlock_old(electricityBus_sink_nonconvex_invest_2) --1 InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_2) --1 InvestmentFlowBlock_old_exo(electricityBus_sink_nonconvex_invest_2) -= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_sink_nonconvex_invest_0_0)_: -+1 flow(electricityBus_sink_nonconvex_invest_0_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) --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) --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) --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) --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) --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) --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 - -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 <= 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_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_sink_nonconvex_invest_2) <= +inf - 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) - InvestmentFlowBlock_invest_status(electricityBus_sink_nonconvex_invest_2) -end diff --git a/tests/lp_files/flow_nonconvex_invest_bounded_converter.lp b/tests/lp_files/flow_nonconvex_invest_bounded_converter.lp deleted file mode 100644 index 7e8e1e56d..000000000 --- a/tests/lp_files/flow_nonconvex_invest_bounded_converter.lp +++ /dev/null @@ -1,155 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(converter_nonconvex_invest_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(converter_nonconvex_invest_electricityBus_0_2) -= 0 - -c_e_BusBlock_balance(fuelBus_0_0)_: -+1 flow(fuelBus_converter_nonconvex_invest_0_0) -= 0 - -c_e_BusBlock_balance(fuelBus_0_1)_: -+1 flow(fuelBus_converter_nonconvex_invest_0_1) -= 0 - -c_e_BusBlock_balance(fuelBus_0_2)_: -+1 flow(fuelBus_converter_nonconvex_invest_0_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) -= 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) -= 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) -= 0 - -c_l_InvestNonConvexFlowBlock_minimum_investment(converter_nonconvex_invest_electricityBus_0)_: -+1 InvestNonConvexFlowBlock_invest(converter_nonconvex_invest_electricityBus_0) ->= 0 - -c_u_InvestNonConvexFlowBlock_maximum_investment(converter_nonconvex_invest_electricityBus_0)_: -+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) -+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) -+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) -+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) --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) --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) --0.5 InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_2) -<= 0 - -c_u_InvestNonConvexFlowBlock_invest_nc_one(converter_nonconvex_invest_electricityBus_0_0)_: -+1 InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_0) --1234 InvestNonConvexFlowBlock_status(converter_nonconvex_invest_electricityBus_0) -<= 0 - -c_u_InvestNonConvexFlowBlock_invest_nc_one(converter_nonconvex_invest_electricityBus_0_1)_: -+1 InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_1) --1234 InvestNonConvexFlowBlock_status(converter_nonconvex_invest_electricityBus_1) -<= 0 - -c_u_InvestNonConvexFlowBlock_invest_nc_one(converter_nonconvex_invest_electricityBus_0_2)_: -+1 InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_2) --1234 InvestNonConvexFlowBlock_status(converter_nonconvex_invest_electricityBus_2) -<= 0 - -c_u_InvestNonConvexFlowBlock_invest_nc_two(converter_nonconvex_invest_electricityBus_0_0)_: --1 InvestNonConvexFlowBlock_invest(converter_nonconvex_invest_electricityBus_0) -+1 InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_0) -<= 0 - -c_u_InvestNonConvexFlowBlock_invest_nc_two(converter_nonconvex_invest_electricityBus_0_1)_: --1 InvestNonConvexFlowBlock_invest(converter_nonconvex_invest_electricityBus_0) -+1 InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_1) -<= 0 - -c_u_InvestNonConvexFlowBlock_invest_nc_two(converter_nonconvex_invest_electricityBus_0_2)_: --1 InvestNonConvexFlowBlock_invest(converter_nonconvex_invest_electricityBus_0) -+1 InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_2) -<= 0 - -c_u_InvestNonConvexFlowBlock_invest_nc_three(converter_nonconvex_invest_electricityBus_0_0)_: -+1 InvestNonConvexFlowBlock_invest(converter_nonconvex_invest_electricityBus_0) --1 InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_0) -+1234 InvestNonConvexFlowBlock_status(converter_nonconvex_invest_electricityBus_0) -<= 1234 - -c_u_InvestNonConvexFlowBlock_invest_nc_three(converter_nonconvex_invest_electricityBus_0_1)_: -+1 InvestNonConvexFlowBlock_invest(converter_nonconvex_invest_electricityBus_0) --1 InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_1) -+1234 InvestNonConvexFlowBlock_status(converter_nonconvex_invest_electricityBus_1) -<= 1234 - -c_u_InvestNonConvexFlowBlock_invest_nc_three(converter_nonconvex_invest_electricityBus_0_2)_: -+1 InvestNonConvexFlowBlock_invest(converter_nonconvex_invest_electricityBus_0) --1 InvestNonConvexFlowBlock_status_nominal(converter_nonconvex_invest_electricityBus_2) -+1234 InvestNonConvexFlowBlock_status(converter_nonconvex_invest_electricityBus_2) -<= 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 <= 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 - 0 <= InvestNonConvexFlowBlock_status(converter_nonconvex_invest_electricityBus_0) <= 1 - 0 <= InvestNonConvexFlowBlock_status(converter_nonconvex_invest_electricityBus_1) <= 1 - 0 <= InvestNonConvexFlowBlock_status(converter_nonconvex_invest_electricityBus_2) <= 1 -binary - InvestNonConvexFlowBlock_status(converter_nonconvex_invest_electricityBus_0) - InvestNonConvexFlowBlock_status(converter_nonconvex_invest_electricityBus_1) - InvestNonConvexFlowBlock_status(converter_nonconvex_invest_electricityBus_2) -end diff --git a/tests/lp_files/flow_reaching_lifetime.lp b/tests/lp_files/flow_reaching_lifetime.lp deleted file mode 100644 index e4b063214..000000000 --- a/tests/lp_files/flow_reaching_lifetime.lp +++ /dev/null @@ -1,53 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(electricityBus_excess_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(electricityBus_excess_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(electricityBus_excess_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(electricityBus_excess_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(electricityBus_excess_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(electricityBus_excess_2_5) -= 0 - -c_e_SimpleFlowBlock_lifetime_output(electricityBus_excess_2_4)_: -+1 flow(electricityBus_excess_2_4) -= 0 - -c_e_SimpleFlowBlock_lifetime_output(electricityBus_excess_2_5)_: -+1 flow(electricityBus_excess_2_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 -end diff --git a/tests/lp_files/flow_reaching_lifetime_initial_age.lp b/tests/lp_files/flow_reaching_lifetime_initial_age.lp deleted file mode 100644 index 61f0a0a7a..000000000 --- a/tests/lp_files/flow_reaching_lifetime_initial_age.lp +++ /dev/null @@ -1,61 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(electricityBus_excess_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(electricityBus_excess_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(electricityBus_excess_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(electricityBus_excess_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(electricityBus_excess_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(electricityBus_excess_2_5) -= 0 - -c_e_SimpleFlowBlock_lifetime_age_output(electricityBus_excess_1_2)_: -+1 flow(electricityBus_excess_1_2) -= 0 - -c_e_SimpleFlowBlock_lifetime_age_output(electricityBus_excess_1_3)_: -+1 flow(electricityBus_excess_1_3) -= 0 - -c_e_SimpleFlowBlock_lifetime_age_output(electricityBus_excess_2_4)_: -+1 flow(electricityBus_excess_2_4) -= 0 - -c_e_SimpleFlowBlock_lifetime_age_output(electricityBus_excess_2_5)_: -+1 flow(electricityBus_excess_2_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 -end diff --git a/tests/lp_files/generic_invest_limit.lp b/tests/lp_files/generic_invest_limit.lp deleted file mode 100644 index f8598642b..000000000 --- a/tests/lp_files/generic_invest_limit.lp +++ /dev/null @@ -1,110 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_u_invest_limit_space_constraint_: -+1 InvestmentFlowBlock_invest(source_1_bus_1_0) -+4 InvestmentFlowBlock_invest(source_0_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) -= 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) -= 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) -= 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_e_InvestmentFlowBlock_total_rule(source_2_bus_1_0)_: --1 InvestmentFlowBlock_invest(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) -= 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) -<= 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) -<= 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) -<= 0 - -c_u_InvestmentFlowBlock_max(source_2_bus_1_0_0)_: -+1 flow(source_2_bus_1_0_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 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 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) -<= 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) -<= 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) -<= 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_total(source_0_bus_1_0) <= +inf -end diff --git a/tests/lp_files/inactivity_costs.lp b/tests/lp_files/inactivity_costs.lp deleted file mode 100644 index 16ed152a4..000000000 --- a/tests/lp_files/inactivity_costs.lp +++ /dev/null @@ -1,87 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) --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) -= 0 - -c_e_BusBlock_balance(Bus_C_0_1)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_0_1) -= 0 - -c_e_BusBlock_balance(Bus_C_0_2)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_0_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bus_C_0)_: --10 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_0) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_0) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bus_C_1)_: --10 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_1) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bus_C_2)_: --10 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_2) -+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) -+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) -+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) -+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) --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) --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) --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 <= 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 - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_0) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_1) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_2) <= +inf -binary - NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_0) - NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_1) - NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_2) -end diff --git a/tests/lp_files/inactivity_costs_multi_period.lp b/tests/lp_files/inactivity_costs_multi_period.lp deleted file mode 100644 index b9a6b5800..000000000 --- a/tests/lp_files/inactivity_costs_multi_period.lp +++ /dev/null @@ -1,162 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) --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) --1.9607843137254901 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_3) --1.9223375624759707 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_4) --1.9223375624759707 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_5) - -s.t. - -c_e_BusBlock_balance(Bus_C_0_0)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_0_0) -= 0 - -c_e_BusBlock_balance(Bus_C_0_1)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_0_1) -= 0 - -c_e_BusBlock_balance(Bus_C_1_2)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_1_2) -= 0 - -c_e_BusBlock_balance(Bus_C_1_3)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_1_3) -= 0 - -c_e_BusBlock_balance(Bus_C_2_4)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_2_4) -= 0 - -c_e_BusBlock_balance(Bus_C_2_5)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_2_5) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bus_C_0)_: --10 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_0) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_0) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bus_C_1)_: --10 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_1) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bus_C_2)_: --10 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_2) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bus_C_3)_: --10 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_3) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_3) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bus_C_4)_: --10 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_4) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_4) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bus_C_5)_: --10 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_5) -+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) -+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) -+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) -+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) -+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) -+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) -+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) --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) --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) --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) --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) --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) --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 <= 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 - 0 <= NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_3) <= 1 - 0 <= NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_4) <= 1 - 0 <= NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_5) <= 1 - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_0) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_1) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_2) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_3) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_4) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_5) <= +inf -binary - NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_0) - NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_1) - NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_2) - NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_3) - NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_4) - NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_5) -end diff --git a/tests/lp_files/integer_source.lp b/tests/lp_files/integer_source.lp deleted file mode 100644 index 7a28ce404..000000000 --- a/tests/lp_files/integer_source.lp +++ /dev/null @@ -1,49 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+25 flow(electricityBus_excess_0_0) -+25 flow(electricityBus_excess_0_1) -+25 flow(electricityBus_excess_0_2) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(electricityBus_excess_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(electricityBus_excess_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(electricityBus_excess_0_2) -= 0 - -c_e_SimpleFlowBlock_integer_flow_constr(electricityBus_excess_0_0)_: --1 flow(electricityBus_excess_0_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) -+1 SimpleFlowBlock_integer_flow(electricityBus_excess_1) -= 0 - -c_e_SimpleFlowBlock_integer_flow_constr(electricityBus_excess_0_2)_: --1 flow(electricityBus_excess_0_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 <= SimpleFlowBlock_integer_flow(electricityBus_excess_0) <= +inf - 0 <= SimpleFlowBlock_integer_flow(electricityBus_excess_1) <= +inf - 0 <= SimpleFlowBlock_integer_flow(electricityBus_excess_2) <= +inf -general - SimpleFlowBlock_integer_flow(electricityBus_excess_0) - SimpleFlowBlock_integer_flow(electricityBus_excess_1) - SimpleFlowBlock_integer_flow(electricityBus_excess_2) -end diff --git a/tests/lp_files/invest_non_convex_flow.lp b/tests/lp_files/invest_non_convex_flow.lp deleted file mode 100644 index 17d43149a..000000000 --- a/tests/lp_files/invest_non_convex_flow.lp +++ /dev/null @@ -1,146 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+8 flow(b1_b2_0_0) -+8 flow(b1_b2_0_1) -+8 flow(b1_b2_0_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) -= 0 - -c_e_BusBlock_balance(b2_0_1)_: -+1 flow(b1_b2_0_1) --1 flow(b2_b1_0_1) -= 0 - -c_e_BusBlock_balance(b2_0_2)_: -+1 flow(b1_b2_0_2) --1 flow(b2_b1_0_2) -= 0 - -c_e_BusBlock_balance(b1_0_0)_: --1 flow(b1_b2_0_0) -+1 flow(b2_b1_0_0) -= 0 - -c_e_BusBlock_balance(b1_0_1)_: --1 flow(b1_b2_0_1) -+1 flow(b2_b1_0_1) -= 0 - -c_e_BusBlock_balance(b1_0_2)_: --1 flow(b1_b2_0_2) -+1 flow(b2_b1_0_2) -= 0 - -c_l_InvestNonConvexFlowBlock_minimum_investment(b1_b2_0)_: -+1 InvestNonConvexFlowBlock_invest(b1_b2_0) ->= 0 - -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) -+0.25 InvestNonConvexFlowBlock_status_nominal(b1_b2_0) -<= 0 - -c_u_InvestNonConvexFlowBlock_min(b1_b2_0_1)_: --1 flow(b1_b2_0_1) -+0.25 InvestNonConvexFlowBlock_status_nominal(b1_b2_1) -<= 0 - -c_u_InvestNonConvexFlowBlock_min(b1_b2_0_2)_: --1 flow(b1_b2_0_2) -+0.25 InvestNonConvexFlowBlock_status_nominal(b1_b2_2) -<= 0 - -c_u_InvestNonConvexFlowBlock_max(b1_b2_0_0)_: -+1 flow(b1_b2_0_0) --0.5 InvestNonConvexFlowBlock_status_nominal(b1_b2_0) -<= 0 - -c_u_InvestNonConvexFlowBlock_max(b1_b2_0_1)_: -+1 flow(b1_b2_0_1) --0.5 InvestNonConvexFlowBlock_status_nominal(b1_b2_1) -<= 0 - -c_u_InvestNonConvexFlowBlock_max(b1_b2_0_2)_: -+1 flow(b1_b2_0_2) --0.5 InvestNonConvexFlowBlock_status_nominal(b1_b2_2) -<= 0 - -c_u_InvestNonConvexFlowBlock_invest_nc_one(b1_b2_0_0)_: -+1 InvestNonConvexFlowBlock_status_nominal(b1_b2_0) --10 InvestNonConvexFlowBlock_status(b1_b2_0) -<= 0 - -c_u_InvestNonConvexFlowBlock_invest_nc_one(b1_b2_0_1)_: -+1 InvestNonConvexFlowBlock_status_nominal(b1_b2_1) --10 InvestNonConvexFlowBlock_status(b1_b2_1) -<= 0 - -c_u_InvestNonConvexFlowBlock_invest_nc_one(b1_b2_0_2)_: -+1 InvestNonConvexFlowBlock_status_nominal(b1_b2_2) --10 InvestNonConvexFlowBlock_status(b1_b2_2) -<= 0 - -c_u_InvestNonConvexFlowBlock_invest_nc_two(b1_b2_0_0)_: --1 InvestNonConvexFlowBlock_invest(b1_b2_0) -+1 InvestNonConvexFlowBlock_status_nominal(b1_b2_0) -<= 0 - -c_u_InvestNonConvexFlowBlock_invest_nc_two(b1_b2_0_1)_: --1 InvestNonConvexFlowBlock_invest(b1_b2_0) -+1 InvestNonConvexFlowBlock_status_nominal(b1_b2_1) -<= 0 - -c_u_InvestNonConvexFlowBlock_invest_nc_two(b1_b2_0_2)_: --1 InvestNonConvexFlowBlock_invest(b1_b2_0) -+1 InvestNonConvexFlowBlock_status_nominal(b1_b2_2) -<= 0 - -c_u_InvestNonConvexFlowBlock_invest_nc_three(b1_b2_0_0)_: -+1 InvestNonConvexFlowBlock_invest(b1_b2_0) --1 InvestNonConvexFlowBlock_status_nominal(b1_b2_0) -+10 InvestNonConvexFlowBlock_status(b1_b2_0) -<= 10 - -c_u_InvestNonConvexFlowBlock_invest_nc_three(b1_b2_0_1)_: -+1 InvestNonConvexFlowBlock_invest(b1_b2_0) --1 InvestNonConvexFlowBlock_status_nominal(b1_b2_1) -+10 InvestNonConvexFlowBlock_status(b1_b2_1) -<= 10 - -c_u_InvestNonConvexFlowBlock_invest_nc_three(b1_b2_0_2)_: -+1 InvestNonConvexFlowBlock_invest(b1_b2_0) --1 InvestNonConvexFlowBlock_status_nominal(b1_b2_2) -+10 InvestNonConvexFlowBlock_status(b1_b2_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 <= 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 - 0 <= InvestNonConvexFlowBlock_status(b1_b2_0) <= 1 - 0 <= InvestNonConvexFlowBlock_status(b1_b2_1) <= 1 - 0 <= InvestNonConvexFlowBlock_status(b1_b2_2) <= 1 -binary - InvestNonConvexFlowBlock_status(b1_b2_0) - InvestNonConvexFlowBlock_status(b1_b2_1) - InvestNonConvexFlowBlock_status(b1_b2_2) -end diff --git a/tests/lp_files/invest_source_fixed_sink.lp b/tests/lp_files/invest_source_fixed_sink.lp deleted file mode 100644 index f7749fb18..000000000 --- a/tests/lp_files/invest_source_fixed_sink.lp +++ /dev/null @@ -1,50 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(pv_electricityBus_0_0) -= 50000.0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(pv_electricityBus_0_1) -= 80000.0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(pv_electricityBus_0_2) -= 30000.0 - -c_e_InvestmentFlowBlock_total_rule(pv_electricityBus_0)_: --1 InvestmentFlowBlock_invest(pv_electricityBus_0) -+1 InvestmentFlowBlock_total(pv_electricityBus_0) -= 0 - -c_u_InvestmentFlowBlock_max(pv_electricityBus_0_0)_: -+1 flow(pv_electricityBus_0_0) --45 InvestmentFlowBlock_total(pv_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(pv_electricityBus_0_1)_: -+1 flow(pv_electricityBus_0_1) --83 InvestmentFlowBlock_total(pv_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(pv_electricityBus_0_2)_: -+1 flow(pv_electricityBus_0_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 <= 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 deleted file mode 100644 index b549928ee..000000000 --- a/tests/lp_files/invest_source_fixed_sink_multi_period.lp +++ /dev/null @@ -1,154 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(pv_electricityBus_0_0) -= 50000.0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(pv_electricityBus_0_1) -= 80000.0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(pv_electricityBus_1_2) -= 30000.0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(pv_electricityBus_1_3) -= 60000.0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(pv_electricityBus_2_4) -= 70000.0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(pv_electricityBus_2_5) -= 20000.0 - -c_e_InvestmentFlowBlock_total_rule(pv_electricityBus_0)_: --1 InvestmentFlowBlock_invest(pv_electricityBus_0) -+1 InvestmentFlowBlock_total(pv_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(pv_electricityBus_1)_: --1 InvestmentFlowBlock_invest(pv_electricityBus_1) --1 InvestmentFlowBlock_total(pv_electricityBus_0) -+1 InvestmentFlowBlock_total(pv_electricityBus_1) -+1 InvestmentFlowBlock_old(pv_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(pv_electricityBus_2)_: --1 InvestmentFlowBlock_invest(pv_electricityBus_2) --1 InvestmentFlowBlock_total(pv_electricityBus_1) -+1 InvestmentFlowBlock_total(pv_electricityBus_2) -+1 InvestmentFlowBlock_old(pv_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(pv_electricityBus_0)_: -+1 InvestmentFlowBlock_old_end(pv_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(pv_electricityBus_1)_: -+1 InvestmentFlowBlock_old_end(pv_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(pv_electricityBus_2)_: -+1 InvestmentFlowBlock_old_end(pv_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(pv_electricityBus_0)_: -+1 InvestmentFlowBlock_old_exo(pv_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(pv_electricityBus_1)_: -+1 InvestmentFlowBlock_old_exo(pv_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(pv_electricityBus_2)_: -+1 InvestmentFlowBlock_old_exo(pv_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(pv_electricityBus_1) --1 InvestmentFlowBlock_old_end(pv_electricityBus_1) --1 InvestmentFlowBlock_old_exo(pv_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(pv_electricityBus_2)_: -+1 InvestmentFlowBlock_old(pv_electricityBus_2) --1 InvestmentFlowBlock_old_end(pv_electricityBus_2) --1 InvestmentFlowBlock_old_exo(pv_electricityBus_2) -= 0 - -c_u_InvestmentFlowBlock_max(pv_electricityBus_0_0)_: -+1 flow(pv_electricityBus_0_0) --45 InvestmentFlowBlock_total(pv_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(pv_electricityBus_0_1)_: -+1 flow(pv_electricityBus_0_1) --83 InvestmentFlowBlock_total(pv_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(pv_electricityBus_1_2)_: -+1 flow(pv_electricityBus_1_2) --65 InvestmentFlowBlock_total(pv_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_max(pv_electricityBus_1_3)_: -+1 flow(pv_electricityBus_1_3) --67 InvestmentFlowBlock_total(pv_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_max(pv_electricityBus_2_4)_: -+1 flow(pv_electricityBus_2_4) --33 InvestmentFlowBlock_total(pv_electricityBus_2) -<= 0 - -c_u_InvestmentFlowBlock_max(pv_electricityBus_2_5)_: -+1 flow(pv_electricityBus_2_5) --96 InvestmentFlowBlock_total(pv_electricityBus_2) -<= 0 - -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 <= 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_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(pv_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(pv_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(pv_electricityBus_2) <= +inf - 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 deleted file mode 100644 index c52f8973b..000000000 --- a/tests/lp_files/investment_limit.lp +++ /dev/null @@ -1,176 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+123 InvestmentFlowBlock_invest(Source_Bus1_0) -+145 GenericInvestmentStorageBlock_invest(storage_invest_limit_0) - -s.t. - -c_u_investment_limit_: -+123 InvestmentFlowBlock_invest(Source_Bus1_0) -+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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: --1 InvestmentFlowBlock_invest(Source_Bus1_0) -+1 InvestmentFlowBlock_total(Source_Bus1_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) -<= 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) -<= 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) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_invest_limit_Bus1_0_0)_: -+1 flow(storage_invest_limit_Bus1_0_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 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 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) -<= 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_0_2)_: -+1 flow(Source_Bus1_0_2) --1 InvestmentFlowBlock_total(Source_Bus1_0) -<= 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) -= 0 - -c_u_GenericInvestmentStorageBlock_init_content_limit(storage_invest_limit)_: --1 GenericInvestmentStorageBlock_invest(storage_invest_limit_0) -+1 GenericInvestmentStorageBlock_init_content(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 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 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 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_2) -= 0 - -c_e_GenericInvestmentStorageBlock_balanced_cstr(storage_invest_limit)_: --1 GenericInvestmentStorageBlock_init_content(storage_invest_limit) -+1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_2) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_invest_limit_0)_: -+1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) --0.2 GenericInvestmentStorageBlock_total(storage_invest_limit_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_invest_limit_0)_: -+1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_0) --0.2 GenericInvestmentStorageBlock_total(storage_invest_limit_0) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_invest_limit_0_0)_: --1 GenericInvestmentStorageBlock_total(storage_invest_limit_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_invest_limit_0_1)_: --1 GenericInvestmentStorageBlock_total(storage_invest_limit_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_invest_limit_0_2)_: --1 GenericInvestmentStorageBlock_total(storage_invest_limit_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_2) -<= 0 - -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_total(Source_Bus1_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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage_invest_limit_1) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_invest_limit_2) <= +inf -end diff --git a/tests/lp_files/investment_limit_with_dsm_DIW.lp b/tests/lp_files/investment_limit_with_dsm_DIW.lp deleted file mode 100644 index 2f1f88c0f..000000000 --- a/tests/lp_files/investment_limit_with_dsm_DIW.lp +++ /dev/null @@ -1,211 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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_1_0) -+0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_0) -+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. - -c_u_investment_limit_: -+123 InvestmentFlowBlock_invest(Source_Bus1_0) -+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) -= 0 - -c_e_BusBlock_balance(Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) --1 flow(Bus1_sink_dsm_DIW_0_1) -= 0 - -c_e_BusBlock_balance(Bus1_0_2)_: -+1 flow(Source_Bus1_0_2) --1 flow(Bus1_sink_dsm_DIW_0_2) -= 0 - -c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: --1 InvestmentFlowBlock_invest(Source_Bus1_0) -+1 InvestmentFlowBlock_total(Source_Bus1_0) -= 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_0_2)_: -+1 flow(Source_Bus1_0_2) --1 InvestmentFlowBlock_total(Source_Bus1_0) -<= 0 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(sink_dsm_DIW_0)_: --1 SinkDSMDIWInvestmentBlock_invest(sink_dsm_DIW_0) -+1 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) -= 50 - -c_e_SinkDSMDIWInvestmentBlock_shift_shed_vars(sink_dsm_DIW_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_0) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_shift_shed_vars(sink_dsm_DIW_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_1) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_shift_shed_vars(sink_dsm_DIW_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_2) -= 0 - -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 - -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 - -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 - -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) -= 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) -= 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) -= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(sink_dsm_DIW_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_0) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(sink_dsm_DIW_0_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(sink_dsm_DIW_0_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) -<= 0 - -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 - -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 - -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 - -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_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) -<= 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) -<= 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_1_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_0) <= +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 <= 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 deleted file mode 100644 index d6d74c5de..000000000 --- a/tests/lp_files/investment_limit_with_dsm_DLR.lp +++ /dev/null @@ -1,308 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+123 InvestmentFlowBlock_invest(Source_Bus1_0) -+0.5 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_0) -+0.5 SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_0) -+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_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. - -c_u_investment_limit_: -+123 InvestmentFlowBlock_invest(Source_Bus1_0) -+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) -= 0 - -c_e_BusBlock_balance(Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) --1 flow(Bus1_sink_dsm_DLR_0_1) -= 0 - -c_e_BusBlock_balance(Bus1_0_2)_: -+1 flow(Source_Bus1_0_2) --1 flow(Bus1_sink_dsm_DLR_0_2) -= 0 - -c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: --1 InvestmentFlowBlock_invest(Source_Bus1_0) -+1 InvestmentFlowBlock_total(Source_Bus1_0) -= 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_0_2)_: -+1 flow(Source_Bus1_0_2) --1 InvestmentFlowBlock_total(Source_Bus1_0) -<= 0 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(sink_dsm_DLR_0)_: --1 SinkDSMDLRInvestmentBlock_invest(sink_dsm_DLR_0) -+1 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) -= 50 - -c_e_SinkDSMDLRInvestmentBlock_shift_shed_vars(sink_dsm_DLR_1_0)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_shift_shed_vars(sink_dsm_DLR_1_1)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_shift_shed_vars(sink_dsm_DLR_1_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_2) -= 0 - -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_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 - -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 - -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 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(sink_dsm_DLR_1_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(sink_dsm_DLR_1_1)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(sink_dsm_DLR_1_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(sink_dsm_DLR_1_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(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) -= 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) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_red(sink_dsm_DLR_1_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(sink_dsm_DLR_1_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_2) -= 0 - -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 - -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 - -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 - -c_u_SinkDSMDLRInvestmentBlock_availability_inc(sink_dsm_DLR_0_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) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_availability_inc(sink_dsm_DLR_0_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_availability_inc(sink_dsm_DLR_0_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 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(sink_dsm_DLR_0)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(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_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_dsm_do_level(sink_dsm_DLR_1) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(sink_dsm_DLR_0)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(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_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_level(sink_dsm_DLR_1) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_2) -= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(sink_dsm_DLR_0_0)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_0) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(sink_dsm_DLR_0_1)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_1) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(sink_dsm_DLR_0_2)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_2) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(sink_dsm_DLR_0_0)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_0) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(sink_dsm_DLR_0_1)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_1) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(sink_dsm_DLR_0_2)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_2) -<= 0 - -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_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) -<= 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) -<= 0 - -bounds - 0 <= InvestmentFlowBlock_invest(Source_Bus1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(sink_dsm_DLR_1_0) <= +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 - 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 <= 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 - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_2) <= +inf -end diff --git a/tests/lp_files/investment_limit_with_dsm_oemof.lp b/tests/lp_files/investment_limit_with_dsm_oemof.lp deleted file mode 100644 index ecfc14250..000000000 --- a/tests/lp_files/investment_limit_with_dsm_oemof.lp +++ /dev/null @@ -1,154 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+123 InvestmentFlowBlock_invest(Source_Bus1_0) -+0.5 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_0) -+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. - -c_u_investment_limit_: -+123 InvestmentFlowBlock_invest(Source_Bus1_0) -+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) -= 0 - -c_e_BusBlock_balance(Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) --1 flow(Bus1_sink_dsm_oemof_0_1) -= 0 - -c_e_BusBlock_balance(Bus1_0_2)_: -+1 flow(Source_Bus1_0_2) --1 flow(Bus1_sink_dsm_oemof_0_2) -= 0 - -c_e_InvestmentFlowBlock_total_rule(Source_Bus1_0)_: --1 InvestmentFlowBlock_invest(Source_Bus1_0) -+1 InvestmentFlowBlock_total(Source_Bus1_0) -= 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_0_2)_: -+1 flow(Source_Bus1_0_2) --1 InvestmentFlowBlock_total(Source_Bus1_0) -<= 0 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(sink_dsm_oemof_0)_: --1 SinkDSMOemofInvestmentBlock_invest(sink_dsm_oemof_0) -+1 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_0) -= 50 - -c_e_SinkDSMOemofInvestmentBlock_shift_shed_vars(sink_dsm_oemof_0)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_0) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_shift_shed_vars(sink_dsm_oemof_1)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_1) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_shift_shed_vars(sink_dsm_oemof_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_2) -= 0 - -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 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_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_do_shed(sink_dsm_oemof_2) -= 1 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(sink_dsm_oemof_0_0)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_0) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(sink_dsm_oemof_0_1)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_1) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(sink_dsm_oemof_0_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_2) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(sink_dsm_oemof_0_0)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_0) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_0) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(sink_dsm_oemof_0_1)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_1) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_0) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(sink_dsm_oemof_0_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_2) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_0) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_2) -<= 0 - -c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(sink_dsm_oemof_0)_: --1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_0) -+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_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 <= InvestmentFlowBlock_total(Source_Bus1_0) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_total(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 -end diff --git a/tests/lp_files/linear_converter.lp b/tests/lp_files/linear_converter.lp deleted file mode 100644 index 86eddb60f..000000000 --- a/tests/lp_files/linear_converter.lp +++ /dev/null @@ -1,57 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+50 flow(powerplantGas_electricity_0_0) -+50 flow(powerplantGas_electricity_0_1) -+50 flow(powerplantGas_electricity_0_2) - -s.t. - -c_e_BusBlock_balance(gas_0_0)_: -+1 flow(gas_powerplantGas_0_0) -= 0 - -c_e_BusBlock_balance(gas_0_1)_: -+1 flow(gas_powerplantGas_0_1) -= 0 - -c_e_BusBlock_balance(gas_0_2)_: -+1 flow(gas_powerplantGas_0_2) -= 0 - -c_e_BusBlock_balance(electricity_0_0)_: -+1 flow(powerplantGas_electricity_0_0) -= 0 - -c_e_BusBlock_balance(electricity_0_1)_: -+1 flow(powerplantGas_electricity_0_1) -= 0 - -c_e_BusBlock_balance(electricity_0_2)_: -+1 flow(powerplantGas_electricity_0_2) -= 0 - -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_0_0)_: --1 flow(powerplantGas_electricity_0_0) -+0.58 flow(gas_powerplantGas_0_0) -= 0 - -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_0_1)_: --1 flow(powerplantGas_electricity_0_1) -+0.58 flow(gas_powerplantGas_0_1) -= 0 - -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_0_2)_: --1 flow(powerplantGas_electricity_0_2) -+0.58 flow(gas_powerplantGas_0_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 -end diff --git a/tests/lp_files/linear_converter_chp.lp b/tests/lp_files/linear_converter_chp.lp deleted file mode 100644 index adf6125be..000000000 --- a/tests/lp_files/linear_converter_chp.lp +++ /dev/null @@ -1,87 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+50 flow(gasBus_CHPpowerplantGas_0_0) -+50 flow(gasBus_CHPpowerplantGas_0_1) -+50 flow(gasBus_CHPpowerplantGas_0_2) - -s.t. - -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_CHPpowerplantGas_0_0) -= 0 - -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_CHPpowerplantGas_0_1) -= 0 - -c_e_BusBlock_balance(gasBus_0_2)_: -+1 flow(gasBus_CHPpowerplantGas_0_2) -= 0 - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(CHPpowerplantGas_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(CHPpowerplantGas_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(CHPpowerplantGas_electricityBus_0_2) -= 0 - -c_e_BusBlock_balance(heatBus_0_0)_: -+1 flow(CHPpowerplantGas_heatBus_0_0) -= 0 - -c_e_BusBlock_balance(heatBus_0_1)_: -+1 flow(CHPpowerplantGas_heatBus_0_1) -= 0 - -c_e_BusBlock_balance(heatBus_0_2)_: -+1 flow(CHPpowerplantGas_heatBus_0_2) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_0_0)_: -+0.4 flow(gasBus_CHPpowerplantGas_0_0) --1 flow(CHPpowerplantGas_electricityBus_0_0) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_0_0)_: -+0.5 flow(gasBus_CHPpowerplantGas_0_0) --1 flow(CHPpowerplantGas_heatBus_0_0) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_0_1)_: -+0.4 flow(gasBus_CHPpowerplantGas_0_1) --1 flow(CHPpowerplantGas_electricityBus_0_1) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_0_1)_: -+0.5 flow(gasBus_CHPpowerplantGas_0_1) --1 flow(CHPpowerplantGas_heatBus_0_1) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_0_2)_: -+0.4 flow(gasBus_CHPpowerplantGas_0_2) --1 flow(CHPpowerplantGas_electricityBus_0_2) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_0_2)_: -+0.5 flow(gasBus_CHPpowerplantGas_0_2) --1 flow(CHPpowerplantGas_heatBus_0_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 -end diff --git a/tests/lp_files/linear_converter_chp_invest.lp b/tests/lp_files/linear_converter_chp_invest.lp deleted file mode 100644 index 5043bc0be..000000000 --- a/tests/lp_files/linear_converter_chp_invest.lp +++ /dev/null @@ -1,110 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_chp_powerplant_gas_0_0) -= 0 - -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_chp_powerplant_gas_0_1) -= 0 - -c_e_BusBlock_balance(gasBus_0_2)_: -+1 flow(gasBus_chp_powerplant_gas_0_2) -= 0 - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(chp_powerplant_gas_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(chp_powerplant_gas_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(chp_powerplant_gas_electricityBus_0_2) -= 0 - -c_e_BusBlock_balance(heatBus_0_0)_: -+1 flow(chp_powerplant_gas_heatBus_0_0) -= 0 - -c_e_BusBlock_balance(heatBus_0_1)_: -+1 flow(chp_powerplant_gas_heatBus_0_1) -= 0 - -c_e_BusBlock_balance(heatBus_0_2)_: -+1 flow(chp_powerplant_gas_heatBus_0_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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(gasBus_chp_powerplant_gas_0)_: --1 InvestmentFlowBlock_invest(gasBus_chp_powerplant_gas_0) -+1 InvestmentFlowBlock_total(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 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 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 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 <= 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 deleted file mode 100644 index 9a52152a5..000000000 --- a/tests/lp_files/linear_converter_chp_invest_multi_period.lp +++ /dev/null @@ -1,274 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -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) - -s.t. - -c_e_BusBlock_balance(heatBus_0_0)_: -+1 flow(chp_powerplant_gas_heatBus_0_0) -= 0 - -c_e_BusBlock_balance(heatBus_0_1)_: -+1 flow(chp_powerplant_gas_heatBus_0_1) -= 0 - -c_e_BusBlock_balance(heatBus_1_2)_: -+1 flow(chp_powerplant_gas_heatBus_1_2) -= 0 - -c_e_BusBlock_balance(heatBus_1_3)_: -+1 flow(chp_powerplant_gas_heatBus_1_3) -= 0 - -c_e_BusBlock_balance(heatBus_2_4)_: -+1 flow(chp_powerplant_gas_heatBus_2_4) -= 0 - -c_e_BusBlock_balance(heatBus_2_5)_: -+1 flow(chp_powerplant_gas_heatBus_2_5) -= 0 - -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_chp_powerplant_gas_0_0) -= 0 - -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_chp_powerplant_gas_0_1) -= 0 - -c_e_BusBlock_balance(gasBus_1_2)_: -+1 flow(gasBus_chp_powerplant_gas_1_2) -= 0 - -c_e_BusBlock_balance(gasBus_1_3)_: -+1 flow(gasBus_chp_powerplant_gas_1_3) -= 0 - -c_e_BusBlock_balance(gasBus_2_4)_: -+1 flow(gasBus_chp_powerplant_gas_2_4) -= 0 - -c_e_BusBlock_balance(gasBus_2_5)_: -+1 flow(gasBus_chp_powerplant_gas_2_5) -= 0 - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(chp_powerplant_gas_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(chp_powerplant_gas_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(chp_powerplant_gas_electricityBus_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(chp_powerplant_gas_electricityBus_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(chp_powerplant_gas_electricityBus_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(chp_powerplant_gas_electricityBus_2_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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(gasBus_chp_powerplant_gas_0)_: --1 InvestmentFlowBlock_invest(gasBus_chp_powerplant_gas_0) -+1 InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(gasBus_chp_powerplant_gas_1)_: --1 InvestmentFlowBlock_invest(gasBus_chp_powerplant_gas_1) --1 InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_0) -+1 InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_1) -+1 InvestmentFlowBlock_old(gasBus_chp_powerplant_gas_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(gasBus_chp_powerplant_gas_2)_: --1 InvestmentFlowBlock_invest(gasBus_chp_powerplant_gas_2) --1 InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_1) -+1 InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_2) -+1 InvestmentFlowBlock_old(gasBus_chp_powerplant_gas_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(gasBus_chp_powerplant_gas_0)_: -+1 InvestmentFlowBlock_old_end(gasBus_chp_powerplant_gas_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(gasBus_chp_powerplant_gas_1)_: -+1 InvestmentFlowBlock_old_end(gasBus_chp_powerplant_gas_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(gasBus_chp_powerplant_gas_2)_: -+1 InvestmentFlowBlock_old_end(gasBus_chp_powerplant_gas_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(gasBus_chp_powerplant_gas_0)_: -+1 InvestmentFlowBlock_old_exo(gasBus_chp_powerplant_gas_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(gasBus_chp_powerplant_gas_1)_: -+1 InvestmentFlowBlock_old_exo(gasBus_chp_powerplant_gas_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(gasBus_chp_powerplant_gas_2)_: -+1 InvestmentFlowBlock_old_exo(gasBus_chp_powerplant_gas_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(gasBus_chp_powerplant_gas_1) --1 InvestmentFlowBlock_old_end(gasBus_chp_powerplant_gas_1) --1 InvestmentFlowBlock_old_exo(gasBus_chp_powerplant_gas_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(gasBus_chp_powerplant_gas_2)_: -+1 InvestmentFlowBlock_old(gasBus_chp_powerplant_gas_2) --1 InvestmentFlowBlock_old_end(gasBus_chp_powerplant_gas_2) --1 InvestmentFlowBlock_old_exo(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 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 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 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 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 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 InvestmentFlowBlock_total(gasBus_chp_powerplant_gas_2) -<= 0 - -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 <= 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_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(gasBus_chp_powerplant_gas_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(gasBus_chp_powerplant_gas_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(gasBus_chp_powerplant_gas_2) <= +inf - 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 deleted file mode 100644 index a79705ef9..000000000 --- a/tests/lp_files/linear_converter_chp_multi_period.lp +++ /dev/null @@ -1,165 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_CHPpowerplantGas_0_0) -= 0 - -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_CHPpowerplantGas_0_1) -= 0 - -c_e_BusBlock_balance(gasBus_1_2)_: -+1 flow(gasBus_CHPpowerplantGas_1_2) -= 0 - -c_e_BusBlock_balance(gasBus_1_3)_: -+1 flow(gasBus_CHPpowerplantGas_1_3) -= 0 - -c_e_BusBlock_balance(gasBus_2_4)_: -+1 flow(gasBus_CHPpowerplantGas_2_4) -= 0 - -c_e_BusBlock_balance(gasBus_2_5)_: -+1 flow(gasBus_CHPpowerplantGas_2_5) -= 0 - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(CHPpowerplantGas_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(CHPpowerplantGas_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(CHPpowerplantGas_electricityBus_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(CHPpowerplantGas_electricityBus_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(CHPpowerplantGas_electricityBus_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(CHPpowerplantGas_electricityBus_2_5) -= 0 - -c_e_BusBlock_balance(heatBus_0_0)_: -+1 flow(CHPpowerplantGas_heatBus_0_0) -= 0 - -c_e_BusBlock_balance(heatBus_0_1)_: -+1 flow(CHPpowerplantGas_heatBus_0_1) -= 0 - -c_e_BusBlock_balance(heatBus_1_2)_: -+1 flow(CHPpowerplantGas_heatBus_1_2) -= 0 - -c_e_BusBlock_balance(heatBus_1_3)_: -+1 flow(CHPpowerplantGas_heatBus_1_3) -= 0 - -c_e_BusBlock_balance(heatBus_2_4)_: -+1 flow(CHPpowerplantGas_heatBus_2_4) -= 0 - -c_e_BusBlock_balance(heatBus_2_5)_: -+1 flow(CHPpowerplantGas_heatBus_2_5) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_0_0)_: -+0.4 flow(gasBus_CHPpowerplantGas_0_0) --1 flow(CHPpowerplantGas_electricityBus_0_0) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_0_0)_: -+0.5 flow(gasBus_CHPpowerplantGas_0_0) --1 flow(CHPpowerplantGas_heatBus_0_0) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_0_1)_: -+0.4 flow(gasBus_CHPpowerplantGas_0_1) --1 flow(CHPpowerplantGas_electricityBus_0_1) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_0_1)_: -+0.5 flow(gasBus_CHPpowerplantGas_0_1) --1 flow(CHPpowerplantGas_heatBus_0_1) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_1_2)_: -+0.4 flow(gasBus_CHPpowerplantGas_1_2) --1 flow(CHPpowerplantGas_electricityBus_1_2) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_1_2)_: -+0.5 flow(gasBus_CHPpowerplantGas_1_2) --1 flow(CHPpowerplantGas_heatBus_1_2) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_1_3)_: -+0.4 flow(gasBus_CHPpowerplantGas_1_3) --1 flow(CHPpowerplantGas_electricityBus_1_3) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_1_3)_: -+0.5 flow(gasBus_CHPpowerplantGas_1_3) --1 flow(CHPpowerplantGas_heatBus_1_3) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_2_4)_: -+0.4 flow(gasBus_CHPpowerplantGas_2_4) --1 flow(CHPpowerplantGas_electricityBus_2_4) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_2_4)_: -+0.5 flow(gasBus_CHPpowerplantGas_2_4) --1 flow(CHPpowerplantGas_heatBus_2_4) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_electricityBus_2_5)_: -+0.4 flow(gasBus_CHPpowerplantGas_2_5) --1 flow(CHPpowerplantGas_electricityBus_2_5) -= 0 - -c_e_ConverterBlock_relation(CHPpowerplantGas_gasBus_heatBus_2_5)_: -+0.5 flow(gasBus_CHPpowerplantGas_2_5) --1 flow(CHPpowerplantGas_heatBus_2_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 -end diff --git a/tests/lp_files/linear_converter_invest.lp b/tests/lp_files/linear_converter_invest.lp deleted file mode 100644 index f8eee0a23..000000000 --- a/tests/lp_files/linear_converter_invest.lp +++ /dev/null @@ -1,80 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(gas_0_0)_: -+1 flow(gas_powerplant_gas_0_0) -= 0 - -c_e_BusBlock_balance(gas_0_1)_: -+1 flow(gas_powerplant_gas_0_1) -= 0 - -c_e_BusBlock_balance(gas_0_2)_: -+1 flow(gas_powerplant_gas_0_2) -= 0 - -c_e_BusBlock_balance(electricity_0_0)_: -+1 flow(powerplant_gas_electricity_0_0) -= 0 - -c_e_BusBlock_balance(electricity_0_1)_: -+1 flow(powerplant_gas_electricity_0_1) -= 0 - -c_e_BusBlock_balance(electricity_0_2)_: -+1 flow(powerplant_gas_electricity_0_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) -= 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) -= 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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_electricity_0)_: --1 InvestmentFlowBlock_invest(powerplant_gas_electricity_0) -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) -= 0 - -c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_0_0)_: -+1 flow(powerplant_gas_electricity_0_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 InvestmentFlowBlock_total(powerplant_gas_electricity_0) -<= 0 - -c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_0_2)_: -+1 flow(powerplant_gas_electricity_0_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 <= 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 deleted file mode 100644 index 325b7b0a1..000000000 --- a/tests/lp_files/linear_converter_invest_multi_period.lp +++ /dev/null @@ -1,230 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -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) - -s.t. - -c_e_BusBlock_balance(electricity_0_0)_: -+1 flow(powerplant_gas_electricity_0_0) -= 0 - -c_e_BusBlock_balance(electricity_0_1)_: -+1 flow(powerplant_gas_electricity_0_1) -= 0 - -c_e_BusBlock_balance(electricity_1_2)_: -+1 flow(powerplant_gas_electricity_1_2) -= 0 - -c_e_BusBlock_balance(electricity_1_3)_: -+1 flow(powerplant_gas_electricity_1_3) -= 0 - -c_e_BusBlock_balance(electricity_2_4)_: -+1 flow(powerplant_gas_electricity_2_4) -= 0 - -c_e_BusBlock_balance(electricity_2_5)_: -+1 flow(powerplant_gas_electricity_2_5) -= 0 - -c_e_BusBlock_balance(gas_0_0)_: -+1 flow(gas_powerplant_gas_0_0) -= 0 - -c_e_BusBlock_balance(gas_0_1)_: -+1 flow(gas_powerplant_gas_0_1) -= 0 - -c_e_BusBlock_balance(gas_1_2)_: -+1 flow(gas_powerplant_gas_1_2) -= 0 - -c_e_BusBlock_balance(gas_1_3)_: -+1 flow(gas_powerplant_gas_1_3) -= 0 - -c_e_BusBlock_balance(gas_2_4)_: -+1 flow(gas_powerplant_gas_2_4) -= 0 - -c_e_BusBlock_balance(gas_2_5)_: -+1 flow(gas_powerplant_gas_2_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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_electricity_0)_: --1 InvestmentFlowBlock_invest(powerplant_gas_electricity_0) -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) -= 50 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_electricity_1)_: --1 InvestmentFlowBlock_invest(powerplant_gas_electricity_1) --1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_1) -+1 InvestmentFlowBlock_old(powerplant_gas_electricity_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_electricity_2)_: --1 InvestmentFlowBlock_invest(powerplant_gas_electricity_2) --1 InvestmentFlowBlock_total(powerplant_gas_electricity_1) -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_2) -+1 InvestmentFlowBlock_old(powerplant_gas_electricity_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(powerplant_gas_electricity_0)_: -+1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(powerplant_gas_electricity_1)_: -+1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(powerplant_gas_electricity_2)_: -+1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_electricity_0)_: -+1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_electricity_1)_: -+1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_electricity_2)_: -+1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(powerplant_gas_electricity_1) --1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_1) --1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(powerplant_gas_electricity_2)_: -+1 InvestmentFlowBlock_old(powerplant_gas_electricity_2) --1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_2) --1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_2) -= 0 - -c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_0_0)_: -+1 flow(powerplant_gas_electricity_0_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 InvestmentFlowBlock_total(powerplant_gas_electricity_0) -<= 0 - -c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_1_2)_: -+1 flow(powerplant_gas_electricity_1_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 InvestmentFlowBlock_total(powerplant_gas_electricity_1) -<= 0 - -c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_2_4)_: -+1 flow(powerplant_gas_electricity_2_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 InvestmentFlowBlock_total(powerplant_gas_electricity_2) -<= 0 - -c_u_InvestmentFlowBlock_overall_maximum(powerplant_gas_electricity_0)_: -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) -<= 10000 - -c_u_InvestmentFlowBlock_overall_maximum(powerplant_gas_electricity_1)_: -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_1) -<= 10000 - -c_u_InvestmentFlowBlock_overall_maximum(powerplant_gas_electricity_2)_: -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_2) -<= 10000 - -c_l_InvestmentFlowBlock_overall_minimum(powerplant_gas_electricity)_: -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_2) ->= 200 - -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 <= 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_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(powerplant_gas_electricity_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(powerplant_gas_electricity_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(powerplant_gas_electricity_2) <= +inf - 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 deleted file mode 100644 index 5ddc28a1f..000000000 --- a/tests/lp_files/linear_converter_invest_multi_period_old.lp +++ /dev/null @@ -1,231 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -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) - -s.t. - -c_e_BusBlock_balance(electricity_0_0)_: -+1 flow(powerplant_gas_electricity_0_0) -= 0 - -c_e_BusBlock_balance(electricity_0_1)_: -+1 flow(powerplant_gas_electricity_0_1) -= 0 - -c_e_BusBlock_balance(electricity_1_2)_: -+1 flow(powerplant_gas_electricity_1_2) -= 0 - -c_e_BusBlock_balance(electricity_1_3)_: -+1 flow(powerplant_gas_electricity_1_3) -= 0 - -c_e_BusBlock_balance(electricity_2_4)_: -+1 flow(powerplant_gas_electricity_2_4) -= 0 - -c_e_BusBlock_balance(electricity_2_5)_: -+1 flow(powerplant_gas_electricity_2_5) -= 0 - -c_e_BusBlock_balance(gas_0_0)_: -+1 flow(gas_powerplant_gas_0_0) -= 0 - -c_e_BusBlock_balance(gas_0_1)_: -+1 flow(gas_powerplant_gas_0_1) -= 0 - -c_e_BusBlock_balance(gas_1_2)_: -+1 flow(gas_powerplant_gas_1_2) -= 0 - -c_e_BusBlock_balance(gas_1_3)_: -+1 flow(gas_powerplant_gas_1_3) -= 0 - -c_e_BusBlock_balance(gas_2_4)_: -+1 flow(gas_powerplant_gas_2_4) -= 0 - -c_e_BusBlock_balance(gas_2_5)_: -+1 flow(gas_powerplant_gas_2_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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_electricity_0)_: --1 InvestmentFlowBlock_invest(powerplant_gas_electricity_0) -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) -= 50 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_electricity_1)_: --1 InvestmentFlowBlock_invest(powerplant_gas_electricity_1) --1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_1) -+1 InvestmentFlowBlock_old(powerplant_gas_electricity_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_electricity_2)_: --1 InvestmentFlowBlock_invest(powerplant_gas_electricity_2) --1 InvestmentFlowBlock_total(powerplant_gas_electricity_1) -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_2) -+1 InvestmentFlowBlock_old(powerplant_gas_electricity_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(powerplant_gas_electricity_0)_: -+1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(powerplant_gas_electricity_1)_: -+1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(powerplant_gas_electricity_2)_: --1 InvestmentFlowBlock_invest(powerplant_gas_electricity_0) -+1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_electricity_0)_: -+1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_electricity_1)_: -+1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_1) -= 50 - -c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_electricity_2)_: -+1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(powerplant_gas_electricity_1) --1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_1) --1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(powerplant_gas_electricity_2)_: -+1 InvestmentFlowBlock_old(powerplant_gas_electricity_2) --1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_2) --1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_2) -= 0 - -c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_0_0)_: -+1 flow(powerplant_gas_electricity_0_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 InvestmentFlowBlock_total(powerplant_gas_electricity_0) -<= 0 - -c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_1_2)_: -+1 flow(powerplant_gas_electricity_1_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 InvestmentFlowBlock_total(powerplant_gas_electricity_1) -<= 0 - -c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_2_4)_: -+1 flow(powerplant_gas_electricity_2_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 InvestmentFlowBlock_total(powerplant_gas_electricity_2) -<= 0 - -c_u_InvestmentFlowBlock_overall_maximum(powerplant_gas_electricity_0)_: -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) -<= 10000 - -c_u_InvestmentFlowBlock_overall_maximum(powerplant_gas_electricity_1)_: -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_1) -<= 10000 - -c_u_InvestmentFlowBlock_overall_maximum(powerplant_gas_electricity_2)_: -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_2) -<= 10000 - -c_l_InvestmentFlowBlock_overall_minimum(powerplant_gas_electricity)_: -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_2) ->= 200 - -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 <= 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_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(powerplant_gas_electricity_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(powerplant_gas_electricity_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(powerplant_gas_electricity_2) <= +inf - 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 deleted file mode 100644 index 87890c538..000000000 --- a/tests/lp_files/linear_converter_invest_multi_period_remaining_value.lp +++ /dev/null @@ -1,230 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -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) - -s.t. - -c_e_BusBlock_balance(gas_0_0)_: -+1 flow(gas_powerplant_gas_0_0) -= 0 - -c_e_BusBlock_balance(gas_0_1)_: -+1 flow(gas_powerplant_gas_0_1) -= 0 - -c_e_BusBlock_balance(gas_1_2)_: -+1 flow(gas_powerplant_gas_1_2) -= 0 - -c_e_BusBlock_balance(gas_1_3)_: -+1 flow(gas_powerplant_gas_1_3) -= 0 - -c_e_BusBlock_balance(gas_2_4)_: -+1 flow(gas_powerplant_gas_2_4) -= 0 - -c_e_BusBlock_balance(gas_2_5)_: -+1 flow(gas_powerplant_gas_2_5) -= 0 - -c_e_BusBlock_balance(electricity_0_0)_: -+1 flow(powerplant_gas_electricity_0_0) -= 0 - -c_e_BusBlock_balance(electricity_0_1)_: -+1 flow(powerplant_gas_electricity_0_1) -= 0 - -c_e_BusBlock_balance(electricity_1_2)_: -+1 flow(powerplant_gas_electricity_1_2) -= 0 - -c_e_BusBlock_balance(electricity_1_3)_: -+1 flow(powerplant_gas_electricity_1_3) -= 0 - -c_e_BusBlock_balance(electricity_2_4)_: -+1 flow(powerplant_gas_electricity_2_4) -= 0 - -c_e_BusBlock_balance(electricity_2_5)_: -+1 flow(powerplant_gas_electricity_2_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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_electricity_0)_: --1 InvestmentFlowBlock_invest(powerplant_gas_electricity_0) -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) -= 50 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_electricity_1)_: --1 InvestmentFlowBlock_invest(powerplant_gas_electricity_1) --1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_1) -+1 InvestmentFlowBlock_old(powerplant_gas_electricity_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(powerplant_gas_electricity_2)_: --1 InvestmentFlowBlock_invest(powerplant_gas_electricity_2) --1 InvestmentFlowBlock_total(powerplant_gas_electricity_1) -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_2) -+1 InvestmentFlowBlock_old(powerplant_gas_electricity_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(powerplant_gas_electricity_0)_: -+1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(powerplant_gas_electricity_1)_: -+1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(powerplant_gas_electricity_2)_: -+1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_electricity_0)_: -+1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_electricity_1)_: -+1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(powerplant_gas_electricity_2)_: -+1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(powerplant_gas_electricity_1) --1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_1) --1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(powerplant_gas_electricity_2)_: -+1 InvestmentFlowBlock_old(powerplant_gas_electricity_2) --1 InvestmentFlowBlock_old_end(powerplant_gas_electricity_2) --1 InvestmentFlowBlock_old_exo(powerplant_gas_electricity_2) -= 0 - -c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_0_0)_: -+1 flow(powerplant_gas_electricity_0_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 InvestmentFlowBlock_total(powerplant_gas_electricity_0) -<= 0 - -c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_1_2)_: -+1 flow(powerplant_gas_electricity_1_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 InvestmentFlowBlock_total(powerplant_gas_electricity_1) -<= 0 - -c_u_InvestmentFlowBlock_max(powerplant_gas_electricity_2_4)_: -+1 flow(powerplant_gas_electricity_2_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 InvestmentFlowBlock_total(powerplant_gas_electricity_2) -<= 0 - -c_u_InvestmentFlowBlock_overall_maximum(powerplant_gas_electricity_0)_: -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_0) -<= 10000 - -c_u_InvestmentFlowBlock_overall_maximum(powerplant_gas_electricity_1)_: -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_1) -<= 10000 - -c_u_InvestmentFlowBlock_overall_maximum(powerplant_gas_electricity_2)_: -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_2) -<= 10000 - -c_l_InvestmentFlowBlock_overall_minimum(powerplant_gas_electricity)_: -+1 InvestmentFlowBlock_total(powerplant_gas_electricity_2) ->= 200 - -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 <= 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_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(powerplant_gas_electricity_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(powerplant_gas_electricity_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(powerplant_gas_electricity_2) <= +inf - 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 deleted file mode 100644 index 0f7933422..000000000 --- a/tests/lp_files/linear_converter_multi_period.lp +++ /dev/null @@ -1,105 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(gas_0_0)_: -+1 flow(gas_powerplantGas_0_0) -= 0 - -c_e_BusBlock_balance(gas_0_1)_: -+1 flow(gas_powerplantGas_0_1) -= 0 - -c_e_BusBlock_balance(gas_1_2)_: -+1 flow(gas_powerplantGas_1_2) -= 0 - -c_e_BusBlock_balance(gas_1_3)_: -+1 flow(gas_powerplantGas_1_3) -= 0 - -c_e_BusBlock_balance(gas_2_4)_: -+1 flow(gas_powerplantGas_2_4) -= 0 - -c_e_BusBlock_balance(gas_2_5)_: -+1 flow(gas_powerplantGas_2_5) -= 0 - -c_e_BusBlock_balance(electricity_0_0)_: -+1 flow(powerplantGas_electricity_0_0) -= 0 - -c_e_BusBlock_balance(electricity_0_1)_: -+1 flow(powerplantGas_electricity_0_1) -= 0 - -c_e_BusBlock_balance(electricity_1_2)_: -+1 flow(powerplantGas_electricity_1_2) -= 0 - -c_e_BusBlock_balance(electricity_1_3)_: -+1 flow(powerplantGas_electricity_1_3) -= 0 - -c_e_BusBlock_balance(electricity_2_4)_: -+1 flow(powerplantGas_electricity_2_4) -= 0 - -c_e_BusBlock_balance(electricity_2_5)_: -+1 flow(powerplantGas_electricity_2_5) -= 0 - -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_0_0)_: --1 flow(powerplantGas_electricity_0_0) -+0.58 flow(gas_powerplantGas_0_0) -= 0 - -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_0_1)_: --1 flow(powerplantGas_electricity_0_1) -+0.58 flow(gas_powerplantGas_0_1) -= 0 - -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_1_2)_: --1 flow(powerplantGas_electricity_1_2) -+0.58 flow(gas_powerplantGas_1_2) -= 0 - -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_1_3)_: --1 flow(powerplantGas_electricity_1_3) -+0.58 flow(gas_powerplantGas_1_3) -= 0 - -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_2_4)_: --1 flow(powerplantGas_electricity_2_4) -+0.58 flow(gas_powerplantGas_2_4) -= 0 - -c_e_ConverterBlock_relation(powerplantGas_gas_electricity_2_5)_: --1 flow(powerplantGas_electricity_2_5) -+0.58 flow(gas_powerplantGas_2_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 -end diff --git a/tests/lp_files/link.lp b/tests/lp_files/link.lp deleted file mode 100644 index 7abe6bd3e..000000000 --- a/tests/lp_files/link.lp +++ /dev/null @@ -1,83 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -= 0 - -c_e_BusBlock_balance(el1_0_1)_: --1 flow(el1_link_0_1) -+1 flow(link_el1_0_1) -= 0 - -c_e_BusBlock_balance(el1_0_2)_: --1 flow(el1_link_0_2) -+1 flow(link_el1_0_2) -= 0 - -c_e_BusBlock_balance(el2_0_0)_: --1 flow(el2_link_0_0) -+1 flow(link_el2_0_0) -= 0 - -c_e_BusBlock_balance(el2_0_1)_: --1 flow(el2_link_0_1) -+1 flow(link_el2_0_1) -= 0 - -c_e_BusBlock_balance(el2_0_2)_: --1 flow(el2_link_0_2) -+1 flow(link_el2_0_2) -= 0 - -c_e_LinkBlock_relation(link_el1_el2_0_0)_: --0.75 flow(el1_link_0_0) -+1 flow(link_el2_0_0) -= 0 - -c_e_LinkBlock_relation(link_el1_el2_0_1)_: --0.75 flow(el1_link_0_1) -+1 flow(link_el2_0_1) -= 0 - -c_e_LinkBlock_relation(link_el1_el2_0_2)_: --0.75 flow(el1_link_0_2) -+1 flow(link_el2_0_2) -= 0 - -c_e_LinkBlock_relation(link_el2_el1_0_0)_: --0.5 flow(el2_link_0_0) -+1 flow(link_el1_0_0) -= 0 - -c_e_LinkBlock_relation(link_el2_el1_0_1)_: --0.5 flow(el2_link_0_1) -+1 flow(link_el1_0_1) -= 0 - -c_e_LinkBlock_relation(link_el2_el1_0_2)_: --0.5 flow(el2_link_0_2) -+1 flow(link_el1_0_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 -end diff --git a/tests/lp_files/max_source_min_sink.lp b/tests/lp_files/max_source_min_sink.lp deleted file mode 100644 index 21c940c64..000000000 --- a/tests/lp_files/max_source_min_sink.lp +++ /dev/null @@ -1,33 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+14 flow(electricityBus_minDemand_0_0) -+14 flow(electricityBus_minDemand_0_1) -+14 flow(electricityBus_minDemand_0_2) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_minDemand_0_0) -+1 flow(wind_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_minDemand_0_1) -+1 flow(wind_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: --1 flow(electricityBus_minDemand_0_2) -+1 flow(wind_electricityBus_0_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 -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 deleted file mode 100644 index db3e1ab0e..000000000 --- a/tests/lp_files/max_source_min_sink_multi_period.lp +++ /dev/null @@ -1,57 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: --1 flow(electricityBus_minDemand_0_0) -+1 flow(wind_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_minDemand_0_1) -+1 flow(wind_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_minDemand_1_2) -+1 flow(wind_electricityBus_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_minDemand_1_3) -+1 flow(wind_electricityBus_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_minDemand_2_4) -+1 flow(wind_electricityBus_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: --1 flow(electricityBus_minDemand_2_5) -+1 flow(wind_electricityBus_2_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 -end diff --git a/tests/lp_files/maximum_shutdowns.lp b/tests/lp_files/maximum_shutdowns.lp deleted file mode 100644 index 6887f17d0..000000000 --- a/tests/lp_files/maximum_shutdowns.lp +++ /dev/null @@ -1,111 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(Bus_C_0_0)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_0) -= 0 - -c_e_BusBlock_balance(Bus_C_0_1)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_1) -= 0 - -c_e_BusBlock_balance(Bus_C_0_2)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_shutdowns_Bus_C_0)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_0) --10 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_0) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_shutdowns_Bus_C_1)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_1) --10 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_shutdowns_Bus_C_2)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_2) --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) -+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) -+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) -+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) --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) --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) --1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_2) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_maximum_shutdowns_Bus_C_0)_: --1 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_0) --1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_0) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_maximum_shutdowns_Bus_C_1)_: -+1 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_0) --1 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_1) --1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_1) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_maximum_shutdowns_Bus_C_2)_: -+1 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_1) --1 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_2) --1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_2) -<= 0 - -c_u_NonConvexFlowBlock_max_shutdown_constr(cheap_plant_maximum_shutdowns_Bus_C)_: -+1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_0) -+1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_1) -+1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_2) -<= 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 <= 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_shutdown(cheap_plant_maximum_shutdowns_Bus_C_0) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_1) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_2) <= 1 -binary - NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_0) - NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_1) - NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_2) - NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_0) - NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_1) - NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_2) -end diff --git a/tests/lp_files/maximum_shutdowns_multi_period.lp b/tests/lp_files/maximum_shutdowns_multi_period.lp deleted file mode 100644 index f7f280121..000000000 --- a/tests/lp_files/maximum_shutdowns_multi_period.lp +++ /dev/null @@ -1,210 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(Bus_C_0_0)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_0) -= 0 - -c_e_BusBlock_balance(Bus_C_0_1)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_0_1) -= 0 - -c_e_BusBlock_balance(Bus_C_1_2)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_1_2) -= 0 - -c_e_BusBlock_balance(Bus_C_1_3)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_1_3) -= 0 - -c_e_BusBlock_balance(Bus_C_2_4)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_2_4) -= 0 - -c_e_BusBlock_balance(Bus_C_2_5)_: -+1 flow(cheap_plant_maximum_shutdowns_Bus_C_2_5) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_shutdowns_Bus_C_0)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_0) --10 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_0) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_shutdowns_Bus_C_1)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_1) --10 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_shutdowns_Bus_C_2)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_2) --10 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_shutdowns_Bus_C_3)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_3) --10 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_3) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_shutdowns_Bus_C_4)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_4) --10 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_4) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_shutdowns_Bus_C_5)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_5) --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) -+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) -+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) -+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) -+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) -+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) -+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) --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) --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) --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) --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) --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) --1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_shutdowns_Bus_C_5) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_maximum_shutdowns_Bus_C_0)_: --1 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_0) --1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_0) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_maximum_shutdowns_Bus_C_1)_: -+1 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_0) --1 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_1) --1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_1) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_maximum_shutdowns_Bus_C_2)_: -+1 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_1) --1 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_2) --1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_2) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_maximum_shutdowns_Bus_C_3)_: -+1 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_2) --1 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_3) --1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_3) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_maximum_shutdowns_Bus_C_4)_: -+1 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_3) --1 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_4) --1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_4) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_maximum_shutdowns_Bus_C_5)_: -+1 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_4) --1 NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_5) --1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_5) -<= 0 - -c_u_NonConvexFlowBlock_max_shutdown_constr(cheap_plant_maximum_shutdowns_Bus_C)_: -+1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_0) -+1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_1) -+1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_2) -+1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_3) -+1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_4) -+1 NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_5) -<= 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 <= 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_5) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_0) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_1) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_2) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_3) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_4) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_5) <= 1 -binary - NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_0) - NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_1) - NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_2) - NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_3) - NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_4) - NonConvexFlowBlock_status(cheap_plant_maximum_shutdowns_Bus_C_5) - NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_0) - NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_1) - NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_2) - NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_3) - NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_4) - NonConvexFlowBlock_shutdown(cheap_plant_maximum_shutdowns_Bus_C_5) -end diff --git a/tests/lp_files/maximum_startups.lp b/tests/lp_files/maximum_startups.lp deleted file mode 100644 index 984e780c8..000000000 --- a/tests/lp_files/maximum_startups.lp +++ /dev/null @@ -1,111 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(Bus_C_0_0)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_0_0) -= 0 - -c_e_BusBlock_balance(Bus_C_0_1)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_0_1) -= 0 - -c_e_BusBlock_balance(Bus_C_0_2)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_0_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_startups_Bus_C_0)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_0) --10 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_0) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_startups_Bus_C_1)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_1) --10 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_startups_Bus_C_2)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_2) --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) -+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) -+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) -+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) --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) --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) --1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_2) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_maximum_startups_Bus_C_0)_: -+1 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_0) --1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_0) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_maximum_startups_Bus_C_1)_: --1 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_0) -+1 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_1) --1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_1) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_maximum_startups_Bus_C_2)_: --1 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_1) -+1 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_2) --1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_2) -<= 0 - -c_u_NonConvexFlowBlock_max_startup_constr(cheap_plant_maximum_startups_Bus_C)_: -+1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_0) -+1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_1) -+1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_2) -<= 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 <= 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_startup(cheap_plant_maximum_startups_Bus_C_0) <= 1 - 0 <= NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_1) <= 1 - 0 <= NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_2) <= 1 -binary - NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_0) - NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_1) - NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_2) - NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_0) - NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_1) - NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_2) -end diff --git a/tests/lp_files/maximum_startups_multi_period.lp b/tests/lp_files/maximum_startups_multi_period.lp deleted file mode 100644 index c51cf0d79..000000000 --- a/tests/lp_files/maximum_startups_multi_period.lp +++ /dev/null @@ -1,210 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(Bus_C_0_0)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_0_0) -= 0 - -c_e_BusBlock_balance(Bus_C_0_1)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_0_1) -= 0 - -c_e_BusBlock_balance(Bus_C_1_2)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_1_2) -= 0 - -c_e_BusBlock_balance(Bus_C_1_3)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_1_3) -= 0 - -c_e_BusBlock_balance(Bus_C_2_4)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_2_4) -= 0 - -c_e_BusBlock_balance(Bus_C_2_5)_: -+1 flow(cheap_plant_maximum_startups_Bus_C_2_5) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_startups_Bus_C_0)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_0) --10 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_0) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_startups_Bus_C_1)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_1) --10 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_startups_Bus_C_2)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_2) --10 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_startups_Bus_C_3)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_3) --10 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_3) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_startups_Bus_C_4)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_4) --10 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_4) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_maximum_startups_Bus_C_5)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_5) --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) -+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) -+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) -+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) -+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) -+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) -+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) --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) --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) --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) --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) --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) --1 NonConvexFlowBlock_status_nominal(cheap_plant_maximum_startups_Bus_C_5) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_maximum_startups_Bus_C_0)_: -+1 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_0) --1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_0) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_maximum_startups_Bus_C_1)_: --1 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_0) -+1 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_1) --1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_1) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_maximum_startups_Bus_C_2)_: --1 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_1) -+1 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_2) --1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_2) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_maximum_startups_Bus_C_3)_: --1 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_2) -+1 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_3) --1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_3) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_maximum_startups_Bus_C_4)_: --1 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_3) -+1 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_4) --1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_4) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_maximum_startups_Bus_C_5)_: --1 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_4) -+1 NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_5) --1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_5) -<= 0 - -c_u_NonConvexFlowBlock_max_startup_constr(cheap_plant_maximum_startups_Bus_C)_: -+1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_0) -+1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_1) -+1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_2) -+1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_3) -+1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_4) -+1 NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_5) -<= 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 <= 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_5) <= 1 - 0 <= NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_0) <= 1 - 0 <= NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_1) <= 1 - 0 <= NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_2) <= 1 - 0 <= NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_3) <= 1 - 0 <= NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_4) <= 1 - 0 <= NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_5) <= 1 -binary - NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_0) - NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_1) - NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_2) - NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_3) - NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_4) - NonConvexFlowBlock_status(cheap_plant_maximum_startups_Bus_C_5) - NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_0) - NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_1) - NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_2) - NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_3) - NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_4) - NonConvexFlowBlock_startup(cheap_plant_maximum_startups_Bus_C_5) -end diff --git a/tests/lp_files/min_max_runtime.lp b/tests/lp_files/min_max_runtime.lp deleted file mode 100644 index cde473813..000000000 --- a/tests/lp_files/min_max_runtime.lp +++ /dev/null @@ -1,120 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) -+7 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_0) -+7 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_1) -+7 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_2) - -s.t. - -c_e_BusBlock_balance(Bus_T_0_0)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_0_0) -= 0 - -c_e_BusBlock_balance(Bus_T_0_1)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_0_1) -= 0 - -c_e_BusBlock_balance(Bus_T_0_2)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_0_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraints_Bus_T_0)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_0) -= 10 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraints_Bus_T_1)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_1) -= 10 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraints_Bus_T_2)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_2) --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) -+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) -+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) -+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) --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) --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) --1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_2) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_min_down_constraints_Bus_T_0)_: --1 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_0) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_min_down_constraints_Bus_T_1)_: --1 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_1) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_min_down_constraints_Bus_T_2)_: --1 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_2) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) -<= 1 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_min_down_constraints_Bus_T_0)_: --1 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_0) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_min_down_constraints_Bus_T_1)_: --1 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_1) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_min_down_constraints_Bus_T_2)_: --1 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_2) --1 NonConvexFlowBlock_status(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 <= 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 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_0) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_1) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_2) <= 1 - 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 -binary - NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_0) - NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_1) - NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_2) - NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_0) - NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_1) - NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_2) - NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) -end diff --git a/tests/lp_files/min_max_runtime_multi_period.lp b/tests/lp_files/min_max_runtime_multi_period.lp deleted file mode 100644 index 6155a7938..000000000 --- a/tests/lp_files/min_max_runtime_multi_period.lp +++ /dev/null @@ -1,271 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) -+4.901960784313725 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_3) -+4.805843906189927 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_4) -+4.805843906189927 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_5) -+7 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_0) -+7 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_1) -+6.862745098039215 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_2) -+6.862745098039215 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_3) -+6.728181468665897 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_4) -+6.728181468665897 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_5) - -s.t. - -c_e_BusBlock_balance(Bus_T_0_0)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_0_0) -= 0 - -c_e_BusBlock_balance(Bus_T_0_1)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_0_1) -= 0 - -c_e_BusBlock_balance(Bus_T_1_2)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_1_2) -= 0 - -c_e_BusBlock_balance(Bus_T_1_3)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_1_3) -= 0 - -c_e_BusBlock_balance(Bus_T_2_4)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_2_4) -= 0 - -c_e_BusBlock_balance(Bus_T_2_5)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_2_5) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraints_Bus_T_0)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_0) -= 10 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraints_Bus_T_1)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_1) -= 10 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraints_Bus_T_2)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_2) --10 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraints_Bus_T_3)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_3) --10 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraints_Bus_T_4)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_4) --10 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraints_Bus_T_5)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_5) --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) -+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) -+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) -+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) -+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) -+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) -+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) --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) --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) --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) --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) --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) --1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_5) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_min_down_constraints_Bus_T_0)_: --1 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_0) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_min_down_constraints_Bus_T_1)_: --1 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_1) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_min_down_constraints_Bus_T_2)_: --1 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_2) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) -<= 1 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_min_down_constraints_Bus_T_3)_: --1 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_3) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_min_down_constraints_Bus_T_4)_: --1 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_4) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_min_down_constraints_Bus_T_5)_: --1 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_5) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_5) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_min_down_constraints_Bus_T_0)_: --1 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_0) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_min_down_constraints_Bus_T_1)_: --1 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_1) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_min_down_constraints_Bus_T_2)_: --1 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_2) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) -<= -1 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_min_down_constraints_Bus_T_3)_: --1 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_3) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_min_down_constraints_Bus_T_4)_: --1 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_4) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_min_down_constraints_Bus_T_5)_: --1 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_5) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_5) -<= 0 - -c_u_NonConvexFlowBlock_min_uptime_constr(cheap_plant_min_down_constraints_Bus_T_3)_: --2 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) -<= 0 - -c_u_NonConvexFlowBlock_min_uptime_constr(cheap_plant_min_down_constraints_Bus_T_4)_: --2 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_5) -<= 0 - -c_u_NonConvexFlowBlock_min_downtime_constr(cheap_plant_min_down_constraints_Bus_T_3)_: -+4 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) --3 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_5) -<= 4 - -c_u_NonConvexFlowBlock_min_downtime_constr(cheap_plant_min_down_constraints_Bus_T_4)_: -+4 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) --3 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_5) -<= 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 <= 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 - 0 <= NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_3) <= 1 - 0 <= NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_4) <= 1 - 0 <= NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_5) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_0) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_1) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_2) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_3) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_4) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_5) <= 1 - 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_5) <= 1 -binary - NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_0) - NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_1) - NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_2) - NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_3) - NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_4) - NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_5) - NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_0) - NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_1) - NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_2) - NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_3) - NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_4) - NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_5) - NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) - NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) - NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) - NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_5) -end diff --git a/tests/lp_files/multi_period_period_length.lp b/tests/lp_files/multi_period_period_length.lp deleted file mode 100644 index 58dd7db26..000000000 --- a/tests/lp_files/multi_period_period_length.lp +++ /dev/null @@ -1,8065 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+4.101968025099305 InvestmentFlowBlock_invest(storage_electricity_3) -+3.7152788212696146 InvestmentFlowBlock_invest(storage_electricity_4) -+3.0478226645906985 InvestmentFlowBlock_invest(storage_electricity_5) -+2.264577134183746 InvestmentFlowBlock_invest(storage_electricity_6) -+0.09137506155350818 InvestmentFlowBlock_invest(storage_electricity_7) -+9.999999999999998 GenericInvestmentStorageBlock_invest(storage_0) -+6.729713331080573 GenericInvestmentStorageBlock_invest(storage_1) -+5.000276133592968 GenericInvestmentStorageBlock_invest(storage_2) -+4.101968025099305 GenericInvestmentStorageBlock_invest(storage_3) -+3.7152788212696146 GenericInvestmentStorageBlock_invest(storage_4) -+3.0478226645906985 GenericInvestmentStorageBlock_invest(storage_5) -+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_1_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_4) -+0.6729713331080575 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_4) -+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_7_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_6) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_6) -+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_16_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_7) -+0.5000276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_7) -+50.00276133592969 SinkDSMDIWInvestmentBlock_dsm_do_shed(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) -+177.8487160089162 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_3) -+161.08306157796636 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_4) -+132.1442157041696 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_5) -+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) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_23) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_do(demand_dsm_dlr_2_23) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_23) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_23) -+0.15239954929176602 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_23) -+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) -+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) -+15.239954929176601 SinkDSMOemofInvestmentBlock_dsm_do_shed(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) -+177.8487160089162 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_3) -+161.08306157796636 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_4) -+132.1442157041696 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_5) -+98.1850987509782 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_6) -+3.9617416013704023 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_7) - -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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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_total_rule(storage_electricity_0)_: --1 InvestmentFlowBlock_invest(storage_electricity_0) -+1 InvestmentFlowBlock_total(storage_electricity_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage_electricity_1)_: --1 InvestmentFlowBlock_invest(storage_electricity_1) --1 InvestmentFlowBlock_total(storage_electricity_0) -+1 InvestmentFlowBlock_total(storage_electricity_1) -+1 InvestmentFlowBlock_old(storage_electricity_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage_electricity_2)_: --1 InvestmentFlowBlock_invest(storage_electricity_2) --1 InvestmentFlowBlock_total(storage_electricity_1) -+1 InvestmentFlowBlock_total(storage_electricity_2) -+1 InvestmentFlowBlock_old(storage_electricity_2) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage_electricity_3)_: --1 InvestmentFlowBlock_invest(storage_electricity_3) --1 InvestmentFlowBlock_total(storage_electricity_2) -+1 InvestmentFlowBlock_total(storage_electricity_3) -+1 InvestmentFlowBlock_old(storage_electricity_3) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage_electricity_4)_: --1 InvestmentFlowBlock_invest(storage_electricity_4) --1 InvestmentFlowBlock_total(storage_electricity_3) -+1 InvestmentFlowBlock_total(storage_electricity_4) -+1 InvestmentFlowBlock_old(storage_electricity_4) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage_electricity_5)_: --1 InvestmentFlowBlock_invest(storage_electricity_5) --1 InvestmentFlowBlock_total(storage_electricity_4) -+1 InvestmentFlowBlock_total(storage_electricity_5) -+1 InvestmentFlowBlock_old(storage_electricity_5) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage_electricity_6)_: --1 InvestmentFlowBlock_invest(storage_electricity_6) --1 InvestmentFlowBlock_total(storage_electricity_5) -+1 InvestmentFlowBlock_total(storage_electricity_6) -+1 InvestmentFlowBlock_old(storage_electricity_6) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage_electricity_7)_: --1 InvestmentFlowBlock_invest(storage_electricity_7) --1 InvestmentFlowBlock_total(storage_electricity_6) -+1 InvestmentFlowBlock_total(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)_: --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) -= 0 - -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_end(electricity_storage_4)_: -+1 InvestmentFlowBlock_old_end(electricity_storage_4) -= 0 - -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_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_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_end(storage_electricity_0)_: -+1 InvestmentFlowBlock_old_end(storage_electricity_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage_electricity_1)_: --1 InvestmentFlowBlock_invest(storage_electricity_0) -+1 InvestmentFlowBlock_old_end(storage_electricity_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage_electricity_2)_: -+1 InvestmentFlowBlock_old_end(storage_electricity_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage_electricity_3)_: --1 InvestmentFlowBlock_invest(storage_electricity_1) -+1 InvestmentFlowBlock_old_end(storage_electricity_3) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage_electricity_4)_: -+1 InvestmentFlowBlock_old_end(storage_electricity_4) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage_electricity_5)_: --1 InvestmentFlowBlock_invest(storage_electricity_2) -+1 InvestmentFlowBlock_old_end(storage_electricity_5) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage_electricity_6)_: --1 InvestmentFlowBlock_invest(storage_electricity_3) --1 InvestmentFlowBlock_invest(storage_electricity_4) -+1 InvestmentFlowBlock_old_end(storage_electricity_6) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage_electricity_7)_: --1 InvestmentFlowBlock_invest(storage_electricity_5) --1 InvestmentFlowBlock_invest(storage_electricity_6) -+1 InvestmentFlowBlock_old_end(storage_electricity_7) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_0)_: -+1 InvestmentFlowBlock_old_exo(electricity_storage_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_1)_: -+1 InvestmentFlowBlock_old_exo(electricity_storage_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_2)_: -+1 InvestmentFlowBlock_old_exo(electricity_storage_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_3)_: -+1 InvestmentFlowBlock_old_exo(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_exo(electricity_storage_5)_: -+1 InvestmentFlowBlock_old_exo(electricity_storage_5) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_6)_: -+1 InvestmentFlowBlock_old_exo(electricity_storage_6) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricity_storage_7)_: -+1 InvestmentFlowBlock_old_exo(electricity_storage_7) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage_electricity_0)_: -+1 InvestmentFlowBlock_old_exo(storage_electricity_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage_electricity_1)_: -+1 InvestmentFlowBlock_old_exo(storage_electricity_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage_electricity_2)_: -+1 InvestmentFlowBlock_old_exo(storage_electricity_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage_electricity_3)_: -+1 InvestmentFlowBlock_old_exo(storage_electricity_3) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage_electricity_4)_: -+1 InvestmentFlowBlock_old_exo(storage_electricity_4) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage_electricity_5)_: -+1 InvestmentFlowBlock_old_exo(storage_electricity_5) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage_electricity_6)_: -+1 InvestmentFlowBlock_old_exo(storage_electricity_6) -= 0 - -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) -= 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_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_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_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_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_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_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_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(storage_electricity_1) --1 InvestmentFlowBlock_old_end(storage_electricity_1) --1 InvestmentFlowBlock_old_exo(storage_electricity_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(storage_electricity_2)_: -+1 InvestmentFlowBlock_old(storage_electricity_2) --1 InvestmentFlowBlock_old_end(storage_electricity_2) --1 InvestmentFlowBlock_old_exo(storage_electricity_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(storage_electricity_3)_: -+1 InvestmentFlowBlock_old(storage_electricity_3) --1 InvestmentFlowBlock_old_end(storage_electricity_3) --1 InvestmentFlowBlock_old_exo(storage_electricity_3) -= 0 - -c_e_InvestmentFlowBlock_old_rule(storage_electricity_4)_: -+1 InvestmentFlowBlock_old(storage_electricity_4) --1 InvestmentFlowBlock_old_end(storage_electricity_4) --1 InvestmentFlowBlock_old_exo(storage_electricity_4) -= 0 - -c_e_InvestmentFlowBlock_old_rule(storage_electricity_5)_: -+1 InvestmentFlowBlock_old(storage_electricity_5) --1 InvestmentFlowBlock_old_end(storage_electricity_5) --1 InvestmentFlowBlock_old_exo(storage_electricity_5) -= 0 - -c_e_InvestmentFlowBlock_old_rule(storage_electricity_6)_: -+1 InvestmentFlowBlock_old(storage_electricity_6) --1 InvestmentFlowBlock_old_end(storage_electricity_6) --1 InvestmentFlowBlock_old_exo(storage_electricity_6) -= 0 - -c_e_InvestmentFlowBlock_old_rule(storage_electricity_7)_: -+1 InvestmentFlowBlock_old(storage_electricity_7) --1 InvestmentFlowBlock_old_end(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_u_InvestmentFlowBlock_max(electricity_storage_5_17)_: -+1 flow(electricity_storage_5_17) --1 InvestmentFlowBlock_total(electricity_storage_5) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_6_18)_: -+1 flow(electricity_storage_6_18) --1 InvestmentFlowBlock_total(electricity_storage_6) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_6_19)_: -+1 flow(electricity_storage_6_19) --1 InvestmentFlowBlock_total(electricity_storage_6) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_6_20)_: -+1 flow(electricity_storage_6_20) --1 InvestmentFlowBlock_total(electricity_storage_6) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_7_21)_: -+1 flow(electricity_storage_7_21) --1 InvestmentFlowBlock_total(electricity_storage_7) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_7_22)_: -+1 flow(electricity_storage_7_22) --1 InvestmentFlowBlock_total(electricity_storage_7) -<= 0 - -c_u_InvestmentFlowBlock_max(electricity_storage_7_23)_: -+1 flow(electricity_storage_7_23) --1 InvestmentFlowBlock_total(electricity_storage_7) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_0_0)_: -+1 flow(storage_electricity_0_0) --1 InvestmentFlowBlock_total(storage_electricity_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_0_1)_: -+1 flow(storage_electricity_0_1) --1 InvestmentFlowBlock_total(storage_electricity_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_0_2)_: -+1 flow(storage_electricity_0_2) --1 InvestmentFlowBlock_total(storage_electricity_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_1_3)_: -+1 flow(storage_electricity_1_3) --1 InvestmentFlowBlock_total(storage_electricity_1) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_1_4)_: -+1 flow(storage_electricity_1_4) --1 InvestmentFlowBlock_total(storage_electricity_1) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_1_5)_: -+1 flow(storage_electricity_1_5) --1 InvestmentFlowBlock_total(storage_electricity_1) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_2_6)_: -+1 flow(storage_electricity_2_6) --1 InvestmentFlowBlock_total(storage_electricity_2) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_2_7)_: -+1 flow(storage_electricity_2_7) --1 InvestmentFlowBlock_total(storage_electricity_2) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_2_8)_: -+1 flow(storage_electricity_2_8) --1 InvestmentFlowBlock_total(storage_electricity_2) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_3_9)_: -+1 flow(storage_electricity_3_9) --1 InvestmentFlowBlock_total(storage_electricity_3) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_3_10)_: -+1 flow(storage_electricity_3_10) --1 InvestmentFlowBlock_total(storage_electricity_3) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_3_11)_: -+1 flow(storage_electricity_3_11) --1 InvestmentFlowBlock_total(storage_electricity_3) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_4_12)_: -+1 flow(storage_electricity_4_12) --1 InvestmentFlowBlock_total(storage_electricity_4) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_4_13)_: -+1 flow(storage_electricity_4_13) --1 InvestmentFlowBlock_total(storage_electricity_4) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_4_14)_: -+1 flow(storage_electricity_4_14) --1 InvestmentFlowBlock_total(storage_electricity_4) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_5_15)_: -+1 flow(storage_electricity_5_15) --1 InvestmentFlowBlock_total(storage_electricity_5) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_5_16)_: -+1 flow(storage_electricity_5_16) --1 InvestmentFlowBlock_total(storage_electricity_5) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_5_17)_: -+1 flow(storage_electricity_5_17) --1 InvestmentFlowBlock_total(storage_electricity_5) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_6_18)_: -+1 flow(storage_electricity_6_18) --1 InvestmentFlowBlock_total(storage_electricity_6) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_6_19)_: -+1 flow(storage_electricity_6_19) --1 InvestmentFlowBlock_total(storage_electricity_6) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_6_20)_: -+1 flow(storage_electricity_6_20) --1 InvestmentFlowBlock_total(storage_electricity_6) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_7_21)_: -+1 flow(storage_electricity_7_21) --1 InvestmentFlowBlock_total(storage_electricity_7) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_7_22)_: -+1 flow(storage_electricity_7_22) --1 InvestmentFlowBlock_total(storage_electricity_7) -<= 0 - -c_u_InvestmentFlowBlock_max(storage_electricity_7_23)_: -+1 flow(storage_electricity_7_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_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) --1 GenericInvestmentStorageBlock_total(storage_6) -+1 GenericInvestmentStorageBlock_total(storage_7) -+1 GenericInvestmentStorageBlock_old(storage_7) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_0)_: -+1 GenericInvestmentStorageBlock_old_end(storage_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_1)_: --1 GenericInvestmentStorageBlock_invest(storage_0) -+1 GenericInvestmentStorageBlock_old_end(storage_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_2)_: -+1 GenericInvestmentStorageBlock_old_end(storage_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_3)_: --1 GenericInvestmentStorageBlock_invest(storage_1) -+1 GenericInvestmentStorageBlock_old_end(storage_3) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_4)_: -+1 GenericInvestmentStorageBlock_old_end(storage_4) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_5)_: --1 GenericInvestmentStorageBlock_invest(storage_2) -+1 GenericInvestmentStorageBlock_old_end(storage_5) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_6)_: --1 GenericInvestmentStorageBlock_invest(storage_3) --1 GenericInvestmentStorageBlock_invest(storage_4) -+1 GenericInvestmentStorageBlock_old_end(storage_6) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_7)_: --1 GenericInvestmentStorageBlock_invest(storage_5) --1 GenericInvestmentStorageBlock_invest(storage_6) -+1 GenericInvestmentStorageBlock_old_end(storage_7) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_0)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_1)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_2)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_3)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_3) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_4)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_4) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_5)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_5) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_6)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_6) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_7)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_7) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(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)_: -+1 GenericInvestmentStorageBlock_old(storage_1) --1 GenericInvestmentStorageBlock_old_end(storage_1) --1 GenericInvestmentStorageBlock_old_exo(storage_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage_2)_: -+1 GenericInvestmentStorageBlock_old(storage_2) --1 GenericInvestmentStorageBlock_old_end(storage_2) --1 GenericInvestmentStorageBlock_old_exo(storage_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage_3)_: -+1 GenericInvestmentStorageBlock_old(storage_3) --1 GenericInvestmentStorageBlock_old_end(storage_3) --1 GenericInvestmentStorageBlock_old_exo(storage_3) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage_4)_: -+1 GenericInvestmentStorageBlock_old(storage_4) --1 GenericInvestmentStorageBlock_old_end(storage_4) --1 GenericInvestmentStorageBlock_old_exo(storage_4) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage_5)_: -+1 GenericInvestmentStorageBlock_old(storage_5) --1 GenericInvestmentStorageBlock_old_end(storage_5) --1 GenericInvestmentStorageBlock_old_exo(storage_5) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage_6)_: -+1 GenericInvestmentStorageBlock_old(storage_6) --1 GenericInvestmentStorageBlock_old_end(storage_6) --1 GenericInvestmentStorageBlock_old_exo(storage_6) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage_7)_: -+1 GenericInvestmentStorageBlock_old(storage_7) --1 GenericInvestmentStorageBlock_old_end(storage_7) --1 GenericInvestmentStorageBlock_old_exo(storage_7) -= 0 - -c_e_GenericInvestmentStorageBlock_initially_empty(storage_0)_: -+1 GenericInvestmentStorageBlock_storage_content(storage_0) -= 0 - -c_e_GenericInvestmentStorageBlock_balance(storage_0_1)_: -+1 flow(storage_electricity_0_1) --1 flow(electricity_storage_0_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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) -= 0 - -c_e_GenericInvestmentStorageBlock_power_coupled(storage_1)_: --1 InvestmentFlowBlock_total(electricity_storage_1) -+1 InvestmentFlowBlock_total(storage_electricity_1) -= 0 - -c_e_GenericInvestmentStorageBlock_power_coupled(storage_2)_: --1 InvestmentFlowBlock_total(electricity_storage_2) -+1 InvestmentFlowBlock_total(storage_electricity_2) -= 0 - -c_e_GenericInvestmentStorageBlock_power_coupled(storage_3)_: --1 InvestmentFlowBlock_total(electricity_storage_3) -+1 InvestmentFlowBlock_total(storage_electricity_3) -= 0 - -c_e_GenericInvestmentStorageBlock_power_coupled(storage_4)_: --1 InvestmentFlowBlock_total(electricity_storage_4) -+1 InvestmentFlowBlock_total(storage_electricity_4) -= 0 - -c_e_GenericInvestmentStorageBlock_power_coupled(storage_5)_: --1 InvestmentFlowBlock_total(electricity_storage_5) -+1 InvestmentFlowBlock_total(storage_electricity_5) -= 0 - -c_e_GenericInvestmentStorageBlock_power_coupled(storage_6)_: --1 InvestmentFlowBlock_total(electricity_storage_6) -+1 InvestmentFlowBlock_total(storage_electricity_6) -= 0 - -c_e_GenericInvestmentStorageBlock_power_coupled(storage_7)_: --1 InvestmentFlowBlock_total(electricity_storage_7) -+1 InvestmentFlowBlock_total(storage_electricity_7) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_0)_: -+1 InvestmentFlowBlock_total(storage_electricity_0) --0.2 GenericInvestmentStorageBlock_total(storage_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_1)_: -+1 InvestmentFlowBlock_total(storage_electricity_1) --0.2 GenericInvestmentStorageBlock_total(storage_1) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_2)_: -+1 InvestmentFlowBlock_total(storage_electricity_2) --0.2 GenericInvestmentStorageBlock_total(storage_2) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_3)_: -+1 InvestmentFlowBlock_total(storage_electricity_3) --0.2 GenericInvestmentStorageBlock_total(storage_3) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_4)_: -+1 InvestmentFlowBlock_total(storage_electricity_4) --0.2 GenericInvestmentStorageBlock_total(storage_4) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_5)_: -+1 InvestmentFlowBlock_total(storage_electricity_5) --0.2 GenericInvestmentStorageBlock_total(storage_5) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_6)_: -+1 InvestmentFlowBlock_total(storage_electricity_6) --0.2 GenericInvestmentStorageBlock_total(storage_6) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_7)_: -+1 InvestmentFlowBlock_total(storage_electricity_7) --0.2 GenericInvestmentStorageBlock_total(storage_7) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_0_0)_: --1 GenericInvestmentStorageBlock_total(storage_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_0_1)_: --1 GenericInvestmentStorageBlock_total(storage_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_0_2)_: --1 GenericInvestmentStorageBlock_total(storage_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_1_3)_: --1 GenericInvestmentStorageBlock_total(storage_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_1_4)_: --1 GenericInvestmentStorageBlock_total(storage_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_1_5)_: --1 GenericInvestmentStorageBlock_total(storage_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_5) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_2_6)_: --1 GenericInvestmentStorageBlock_total(storage_2) -+1 GenericInvestmentStorageBlock_storage_content(storage_6) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_2_7)_: --1 GenericInvestmentStorageBlock_total(storage_2) -+1 GenericInvestmentStorageBlock_storage_content(storage_7) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_2_8)_: --1 GenericInvestmentStorageBlock_total(storage_2) -+1 GenericInvestmentStorageBlock_storage_content(storage_8) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_3_9)_: --1 GenericInvestmentStorageBlock_total(storage_3) -+1 GenericInvestmentStorageBlock_storage_content(storage_9) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_3_10)_: --1 GenericInvestmentStorageBlock_total(storage_3) -+1 GenericInvestmentStorageBlock_storage_content(storage_10) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_3_11)_: --1 GenericInvestmentStorageBlock_total(storage_3) -+1 GenericInvestmentStorageBlock_storage_content(storage_11) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_4_12)_: --1 GenericInvestmentStorageBlock_total(storage_4) -+1 GenericInvestmentStorageBlock_storage_content(storage_12) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_4_13)_: --1 GenericInvestmentStorageBlock_total(storage_4) -+1 GenericInvestmentStorageBlock_storage_content(storage_13) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_4_14)_: --1 GenericInvestmentStorageBlock_total(storage_4) -+1 GenericInvestmentStorageBlock_storage_content(storage_14) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_5_15)_: --1 GenericInvestmentStorageBlock_total(storage_5) -+1 GenericInvestmentStorageBlock_storage_content(storage_15) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_5_16)_: --1 GenericInvestmentStorageBlock_total(storage_5) -+1 GenericInvestmentStorageBlock_storage_content(storage_16) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_5_17)_: --1 GenericInvestmentStorageBlock_total(storage_5) -+1 GenericInvestmentStorageBlock_storage_content(storage_17) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_6_18)_: --1 GenericInvestmentStorageBlock_total(storage_6) -+1 GenericInvestmentStorageBlock_storage_content(storage_18) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_6_19)_: --1 GenericInvestmentStorageBlock_total(storage_6) -+1 GenericInvestmentStorageBlock_storage_content(storage_19) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_6_20)_: --1 GenericInvestmentStorageBlock_total(storage_6) -+1 GenericInvestmentStorageBlock_storage_content(storage_20) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_7_21)_: --1 GenericInvestmentStorageBlock_total(storage_7) -+1 GenericInvestmentStorageBlock_storage_content(storage_21) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_7_22)_: --1 GenericInvestmentStorageBlock_total(storage_7) -+1 GenericInvestmentStorageBlock_storage_content(storage_22) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_7_23)_: --1 GenericInvestmentStorageBlock_total(storage_7) -+1 GenericInvestmentStorageBlock_storage_content(storage_23) -<= 0 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_diw_0)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_0) -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_0) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_diw_1)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_1) --1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_0) -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_1) -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_1) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_diw_2)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_2) --1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_1) -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_2) -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_diw_3)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_3) --1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_2) -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_3) -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_3) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_diw_4)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_4) --1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_3) -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_4) -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_4) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_diw_5)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_5) --1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_4) -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_5) -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_5) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_diw_6)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_6) --1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_5) -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_6) -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_6) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(demand_dsm_diw_7)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_7) --1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_6) -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_7) -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_7) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_end(demand_dsm_diw_0)_: -+1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_0) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_end(demand_dsm_diw_1)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_0) -+1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_1) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_end(demand_dsm_diw_2)_: -+1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_end(demand_dsm_diw_3)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_1) -+1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_3) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_end(demand_dsm_diw_4)_: -+1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_4) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_end(demand_dsm_diw_5)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_2) -+1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_5) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_end(demand_dsm_diw_6)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_3) --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_4) -+1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_6) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_end(demand_dsm_diw_7)_: --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_5) --1 SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_6) -+1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_7) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(demand_dsm_diw_0)_: -+1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_0) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(demand_dsm_diw_1)_: -+1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_1) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(demand_dsm_diw_2)_: -+1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(demand_dsm_diw_3)_: -+1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_3) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(demand_dsm_diw_4)_: -+1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_4) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(demand_dsm_diw_5)_: -+1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_5) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(demand_dsm_diw_6)_: -+1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_6) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(demand_dsm_diw_7)_: -+1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_7) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(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)_: -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_1) --1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_1) --1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_1) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(demand_dsm_diw_2)_: -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_2) --1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_2) --1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(demand_dsm_diw_3)_: -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_3) --1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_3) --1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_3) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(demand_dsm_diw_4)_: -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_4) --1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_4) --1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_4) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(demand_dsm_diw_5)_: -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_5) --1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_5) --1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_5) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(demand_dsm_diw_6)_: -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_6) --1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_6) --1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_6) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(demand_dsm_diw_7)_: -+1 SinkDSMDIWInvestmentBlock_old(demand_dsm_diw_7) --1 SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_7) --1 SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_7) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_input_output_relation(demand_dsm_diw_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_0) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_0_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_1) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_0_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_2) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_1_3)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_3) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_1_4)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_4) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_1_5)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_5) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_2_6)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_6) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_2_7)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_7) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_2_8)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_8) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_3_9)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_9) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_3) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_3_10)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_10) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_3) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_3_11)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_11) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_3) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_4_12)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_12) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_4) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_4_13)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_13) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_4) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_4_14)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_14) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_4) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_5_15)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_15) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_5) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_5_16)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_16) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_5) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_5_17)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_17) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_5) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_6_18)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_18) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_6) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_6_19)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_19) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_6) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_6_20)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_20) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_6) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_7_21)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_21) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_7) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_7_22)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_22) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_7) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(demand_dsm_diw_7_23)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(demand_dsm_diw_23) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_7) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_0_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_1_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_0) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_0_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(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_shed(demand_dsm_diw_2) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_1_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_1_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_1_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_2_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_2_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_2_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_3_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_3) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_3_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_3) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_3_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_3) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_4_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_4) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_4_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_4) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_4_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_4) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_5_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_5) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_5_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_5) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_5_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_5) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_6_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_6) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_6_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_6) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_6_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_6) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_7_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_7) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_7_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_7) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_do_constraint(demand_dsm_diw_7_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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_7) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_C2_constraint(demand_dsm_diw_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shift(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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_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) --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) --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) --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) --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) --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) --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) --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) --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) --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) --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) --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) --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) --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) --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) --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) --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) --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) --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) --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) --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) --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) --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) --0.5 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_7) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_0) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_1) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_0_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_1) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_2) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_0_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_2) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_3) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_1_3)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_3) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_4) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_1_4)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_4) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_5) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_1_5)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_5) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_6) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_2_6)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_6) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_7) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_2_7)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_7) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_8) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_2_8)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_8) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_9) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_3_9)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_9) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_10) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_3) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_3_10)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_10) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_11) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_3) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_3_11)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_11) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_12) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_3) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_4_12)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_12) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_13) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_4) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_4_13)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_13) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_14) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_4) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_4_14)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_14) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_15) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_4) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_5_15)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_15) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_16) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_5) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_5_16)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_16) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_17) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_5) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_5_17)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_17) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_18) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_5) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_6_18)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_18) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_19) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_6) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_6_19)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_19) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_20) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_6) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_6_20)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_20) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_21) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_6) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_7_21)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_21) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_22) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_7) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_7_22)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_22) -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_23) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_7) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_shed_limit_constraint(demand_dsm_diw_7_23)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(demand_dsm_diw_23) --1.0 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_7) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(demand_dsm_diw_0)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_0) -<= 1000 - -c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(demand_dsm_diw_1)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_1) -<= 1000 - -c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(demand_dsm_diw_2)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_2) -<= 1000 - -c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(demand_dsm_diw_3)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_3) -<= 1000 - -c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(demand_dsm_diw_4)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_4) -<= 1000 - -c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(demand_dsm_diw_5)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_5) -<= 1000 - -c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(demand_dsm_diw_6)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_6) -<= 1000 - -c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(demand_dsm_diw_7)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_7) -<= 1000 - -c_l_SinkDSMDIWInvestmentBlock_overall_minimum(demand_dsm_diw)_: -+1 SinkDSMDIWInvestmentBlock_total(demand_dsm_diw_7) ->= 5 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_dlr_0)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_0) -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_dlr_1)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_1) --1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_dlr_2)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_2) --1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_dlr_3)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_3) --1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_dlr_4)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_4) --1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_dlr_5)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_5) --1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_dlr_6)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_6) --1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_6) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(demand_dsm_dlr_7)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_7) --1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_7) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_end(demand_dsm_dlr_0)_: -+1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_end(demand_dsm_dlr_1)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_0) -+1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_end(demand_dsm_dlr_2)_: -+1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_end(demand_dsm_dlr_3)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_1) -+1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_end(demand_dsm_dlr_4)_: -+1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_end(demand_dsm_dlr_5)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_2) -+1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_end(demand_dsm_dlr_6)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_3) --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_4) -+1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_6) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_end(demand_dsm_dlr_7)_: --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_5) --1 SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_6) -+1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_7) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(demand_dsm_dlr_0)_: -+1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(demand_dsm_dlr_1)_: -+1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(demand_dsm_dlr_2)_: -+1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(demand_dsm_dlr_3)_: -+1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(demand_dsm_dlr_4)_: -+1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(demand_dsm_dlr_5)_: -+1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(demand_dsm_dlr_6)_: -+1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_6) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(demand_dsm_dlr_7)_: -+1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_7) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(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)_: -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_1) --1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_1) --1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(demand_dsm_dlr_2)_: -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_2) --1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_2) --1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(demand_dsm_dlr_3)_: -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_3) --1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_3) --1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(demand_dsm_dlr_4)_: -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_4) --1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_4) --1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(demand_dsm_dlr_5)_: -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_5) --1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_5) --1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(demand_dsm_dlr_6)_: -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_6) --1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_6) --1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_6) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(demand_dsm_dlr_7)_: -+1 SinkDSMDLRInvestmentBlock_old(demand_dsm_dlr_7) --1 SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_7) --1 SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_7) -= 0 - -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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_0) -+1 flow(electricity_demand_dsm_dlr_0_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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_1) -+1 flow(electricity_demand_dsm_dlr_0_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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_2) -+1 flow(electricity_demand_dsm_dlr_0_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_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_2_3) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_3) -+1 flow(electricity_demand_dsm_dlr_1_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_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_2_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_4) -+1 flow(electricity_demand_dsm_dlr_1_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_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_2_5) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_5) -+1 flow(electricity_demand_dsm_dlr_1_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_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_2_6) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_6) -+1 flow(electricity_demand_dsm_dlr_2_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_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_2_7) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_7) -+1 flow(electricity_demand_dsm_dlr_2_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_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_2_8) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_8) -+1 flow(electricity_demand_dsm_dlr_2_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_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_2_9) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_9) -+1 flow(electricity_demand_dsm_dlr_3_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_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_2_10) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_10) -+1 flow(electricity_demand_dsm_dlr_3_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_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_2_11) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_11) -+1 flow(electricity_demand_dsm_dlr_3_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_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_2_12) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_12) -+1 flow(electricity_demand_dsm_dlr_4_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_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_2_13) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_13) -+1 flow(electricity_demand_dsm_dlr_4_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_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_2_14) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_14) -+1 flow(electricity_demand_dsm_dlr_4_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_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_2_15) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_15) -+1 flow(electricity_demand_dsm_dlr_5_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_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_2_16) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_16) -+1 flow(electricity_demand_dsm_dlr_5_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_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_2_17) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_17) -+1 flow(electricity_demand_dsm_dlr_5_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_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_2_18) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_18) -+1 flow(electricity_demand_dsm_dlr_6_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_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_2_19) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_19) -+1 flow(electricity_demand_dsm_dlr_6_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_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_2_20) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_20) -+1 flow(electricity_demand_dsm_dlr_6_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_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_2_21) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_21) -+1 flow(electricity_demand_dsm_dlr_7_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_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_2_22) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_22) -+1 flow(electricity_demand_dsm_dlr_7_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_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_2_23) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_23) -+1 flow(electricity_demand_dsm_dlr_7_23) -= 1 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_1_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(demand_dsm_dlr_2_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_1)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_3)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_4)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_5)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_6)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_6) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_7)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_6) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_7) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_8)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_7) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_8) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_9)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_8) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_9) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_10)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_9) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_10) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_11)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_10) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_11) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_12)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_11) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_12) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_13)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_12) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_13) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_14)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_13) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_14) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_15)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_14) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_15) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_16)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_15) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_16) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_17)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_16) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_17) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_18)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_17) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_18) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_19)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_18) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_19) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_20)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_19) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_20) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_21)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_20) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_21) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_22)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_21) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_22) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_1_23)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_22) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_1_23) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_3)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_4)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_5)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_6)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_6) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_7)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_5) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_7) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_8)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_6) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_8) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_9)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_7) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_9) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_10)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_8) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_10) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_11)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_9) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_11) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_12)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_10) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_12) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_13)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_11) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_13) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_14)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_12) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_14) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_15)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_13) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_15) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_16)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_14) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_16) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_17)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_15) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_17) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_18)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_16) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_18) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_19)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_17) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_19) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_20)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_18) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_20) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_21)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_19) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_21) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_22)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_20) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_22) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(demand_dsm_dlr_2_23)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_21) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_23) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_red(demand_dsm_dlr_1_23)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_23) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_red(demand_dsm_dlr_2_22)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_22) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_red(demand_dsm_dlr_2_23)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_23) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(demand_dsm_dlr_1_23)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_23) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(demand_dsm_dlr_2_22)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_22) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(demand_dsm_dlr_2_23)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_23) -= 0 - -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_2_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_0) --0.5 SinkDSMDLRInvestmentBlock_total(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_2_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_1) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) -<= 0 - -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_2_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_2) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) -<= 0 - -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_2_3) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_3) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) -<= 0 - -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_2_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_4) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) -<= 0 - -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_2_5) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_5) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) -<= 0 - -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_2_6) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_6) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) -<= 0 - -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_2_7) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_7) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) -<= 0 - -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_2_8) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_8) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) -<= 0 - -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_2_9) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_9) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) -<= 0 - -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_2_10) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_10) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) -<= 0 - -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_2_11) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_11) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) -<= 0 - -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_2_12) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_12) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) -<= 0 - -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_2_13) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_13) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) -<= 0 - -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_2_14) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_14) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) -<= 0 - -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_2_15) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_15) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) -<= 0 - -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_2_16) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_16) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) -<= 0 - -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_2_17) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_17) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) -<= 0 - -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_2_18) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_18) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) -<= 0 - -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_2_19) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_19) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) -<= 0 - -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_2_20) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_20) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) -<= 0 - -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_2_21) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_21) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) -<= 0 - -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_2_22) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_22) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) -<= 0 - -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_2_23) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_23) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) -<= 0 - -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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_2_23) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) -<= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_0)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_1_0) --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(demand_dsm_dlr_2_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_0) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_1) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_3) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_2) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_3) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_5) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_4) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_6) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_5) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_6) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_7) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_6) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_7) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_8) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_7) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_8) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_9) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_8) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_9) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_10) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_9) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_10) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_11) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_10) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_11) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_12) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_11) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_12) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_13) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_12) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_13) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_14) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_13) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_14) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_15) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_14) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_15) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_16) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_15) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_16) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_17) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_16) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_17) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_18) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_17) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_18) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_19) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_18) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_19) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_20) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_19) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_20) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_21) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_20) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_21) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_22) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_21) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_22) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_red(demand_dsm_dlr_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_dsm_do_shift(demand_dsm_dlr_2_23) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_22) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_23) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_0)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_0) --1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_2_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_1)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_1) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_0) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_2) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_1) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_3)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_3) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_2) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_4)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_4) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_3) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_5)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_5) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_4) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_6)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_6) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_5) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_6) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_7)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_7) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_6) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_7) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_8)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_8) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_7) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_8) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_9)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_9) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_8) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_9) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_10)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_10) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_9) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_10) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_11)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_11) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_10) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_11) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_12)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_12) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_11) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_12) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_13)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_13) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_12) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_13) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_14)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_14) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_13) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_14) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_15)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_15) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_14) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_15) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_16)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_16) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_15) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_16) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_17)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_17) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_16) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_17) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_18)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_18) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_17) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_18) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_19)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_19) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_18) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_19) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_20)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_20) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_19) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_20) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_21)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_21) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_20) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_21) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_22)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_22) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_21) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_22) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(demand_dsm_dlr_23)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(demand_dsm_dlr_1_23) -+1 SinkDSMDLRInvestmentBlock_dsm_up(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_up_level(demand_dsm_dlr_22) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_23) -= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_0_0)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_0) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_0_1)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_1) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_0_2)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_2) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_1_3)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_3) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_1_4)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_4) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_1_5)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_5) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_2_6)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_6) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_2_7)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_7) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_2_8)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_8) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_3_9)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_9) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_3_10)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_10) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_3_11)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_11) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_4_12)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_12) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_4_13)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_13) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_4_14)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_14) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_5_15)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_15) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_5_16)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_16) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_5_17)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_17) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_6_18)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_18) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_6_19)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_19) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_6_20)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_20) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_7_21)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_21) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_7_22)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_22) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(demand_dsm_dlr_7_23)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_23) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_0_0)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_0) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_0_1)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_1) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_0_2)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_2) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_1_3)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_3) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_1_4)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_4) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_1_5)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_5) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_2_6)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_6) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_2_7)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_7) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_2_8)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_8) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_3_9)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_9) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_3_10)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_10) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_3_11)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_11) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_4_12)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_12) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_4_13)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_13) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_4_14)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_14) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_5_15)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_15) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_5_16)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_16) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_5_17)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_17) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_6_18)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_18) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_6_19)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_19) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_6_20)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_20) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_7_21)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_21) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_7_22)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_22) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(demand_dsm_dlr_7_23)_: --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_23) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_dlr_0)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_2) --50.0 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_dlr_1)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_3) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_5) --50.0 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_dlr_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_6) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_7) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_8) --50.0 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_dlr_3)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_9) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_10) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_11) --50.0 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_dlr_4)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_12) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_13) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_14) --50.0 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_dlr_5)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_15) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_16) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_17) --50.0 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_dlr_6)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_18) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_19) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_20) --50.0 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_yearly_limit_shed(demand_dsm_dlr_7)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_21) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_22) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_23) --50.0 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) -<= 0 - -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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_0) --0.5 SinkDSMDLRInvestmentBlock_total(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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_1) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) -<= 0 - -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_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) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_2) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) -<= 0 - -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_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_2_3) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_3) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) -<= 0 - -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_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_2_4) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_4) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) -<= 0 - -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_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_2_5) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_5) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) -<= 0 - -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_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_2_6) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_6) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) -<= 0 - -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_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_2_7) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_7) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) -<= 0 - -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_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_2_8) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_8) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) -<= 0 - -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_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_2_9) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_9) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) -<= 0 - -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_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_2_10) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_10) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) -<= 0 - -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_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_2_11) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_11) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) -<= 0 - -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_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_2_12) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_12) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) -<= 0 - -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_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_2_13) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_13) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) -<= 0 - -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_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_2_14) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_14) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) -<= 0 - -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_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_2_15) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_15) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) -<= 0 - -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_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_2_16) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_16) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) -<= 0 - -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_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_2_17) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_17) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) -<= 0 - -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_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_2_18) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_18) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) -<= 0 - -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_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_2_19) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_19) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) -<= 0 - -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_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_2_20) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_20) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) -<= 0 - -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_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_2_21) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_21) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) -<= 0 - -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_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_2_22) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_22) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) -<= 0 - -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_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_2_23) -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(demand_dsm_dlr_23) --0.5 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(demand_dsm_dlr_0)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_0) -<= 1000 - -c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(demand_dsm_dlr_1)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_1) -<= 1000 - -c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(demand_dsm_dlr_2)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_2) -<= 1000 - -c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(demand_dsm_dlr_3)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_3) -<= 1000 - -c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(demand_dsm_dlr_4)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_4) -<= 1000 - -c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(demand_dsm_dlr_5)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_5) -<= 1000 - -c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(demand_dsm_dlr_6)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_6) -<= 1000 - -c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(demand_dsm_dlr_7)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) -<= 1000 - -c_l_SinkDSMDLRInvestmentBlock_overall_minimum(demand_dsm_dlr)_: -+1 SinkDSMDLRInvestmentBlock_total(demand_dsm_dlr_7) ->= 5 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_oemof_0)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_0) -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_0) -= 50 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_oemof_1)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_1) --1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_0) -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_1) -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_1) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_oemof_2)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_2) --1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_1) -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_2) -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_2) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_oemof_3)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_3) --1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_2) -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_3) -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_3) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_oemof_4)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_4) --1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_3) -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_4) -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_4) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_oemof_5)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_5) --1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_4) -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_5) -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_5) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_oemof_6)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_6) --1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_5) -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_6) -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_6) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(demand_dsm_oemof_7)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_7) --1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_6) -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_7) -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_7) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_end(demand_dsm_oemof_0)_: -+1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_0) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_end(demand_dsm_oemof_1)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_0) -+1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_1) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_end(demand_dsm_oemof_2)_: -+1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_2) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_end(demand_dsm_oemof_3)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_1) -+1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_3) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_end(demand_dsm_oemof_4)_: -+1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_4) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_end(demand_dsm_oemof_5)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_2) -+1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_5) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_end(demand_dsm_oemof_6)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_3) --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_4) -+1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_6) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_end(demand_dsm_oemof_7)_: --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_5) --1 SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_6) -+1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_7) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(demand_dsm_oemof_0)_: -+1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_0) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(demand_dsm_oemof_1)_: -+1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_1) -= 50 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(demand_dsm_oemof_2)_: -+1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_2) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(demand_dsm_oemof_3)_: -+1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_3) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(demand_dsm_oemof_4)_: -+1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_4) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(demand_dsm_oemof_5)_: -+1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_5) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(demand_dsm_oemof_6)_: -+1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_6) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(demand_dsm_oemof_7)_: -+1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_7) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(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)_: -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_1) --1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_1) --1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_1) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(demand_dsm_oemof_2)_: -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_2) --1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_2) --1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_2) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(demand_dsm_oemof_3)_: -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_3) --1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_3) --1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_3) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(demand_dsm_oemof_4)_: -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_4) --1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_4) --1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_4) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(demand_dsm_oemof_5)_: -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_5) --1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_5) --1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_5) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(demand_dsm_oemof_6)_: -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_6) --1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_6) --1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_6) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(demand_dsm_oemof_7)_: -+1 SinkDSMOemofInvestmentBlock_old(demand_dsm_oemof_7) --1 SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_7) --1 SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_7) -= 0 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_0_0)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_0) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_0_1)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_1) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_0_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_2) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_1_3)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_3) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_1_4)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_4) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_1_5)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_5) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_2_6)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_6) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_2) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_2_7)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_7) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_2) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_2_8)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_8) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_2) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_3_9)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_9) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_3) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_3_10)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_10) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_3) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_3_11)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_11) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_3) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_4_12)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_12) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_4) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_4_13)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_13) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_4) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_4_14)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_14) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_4) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_5_15)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_15) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_5) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_5_16)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_16) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_5) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_5_17)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_17) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_5) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_6_18)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_18) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_6) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_6_19)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_19) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_6) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_6_20)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_20) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_6) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_7_21)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_21) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_7) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_7_22)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_22) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_7) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(demand_dsm_oemof_7_23)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(demand_dsm_oemof_23) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_7) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_0_0)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_0) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_0) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_0_1)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_1) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_1) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_0_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_2) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_2) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_1_3)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_3) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_3) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_1_4)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_4) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_4) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_1_5)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_5) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_5) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_2_6)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_6) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_6) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_2) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_2_7)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_7) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_7) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_2) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_2_8)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_8) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_8) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_2) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_3_9)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_9) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_9) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_3) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_3_10)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_10) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_10) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_3) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_3_11)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_11) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_11) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_3) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_4_12)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_12) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_12) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_4) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_4_13)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_13) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_13) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_4) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_4_14)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_14) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_14) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_4) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_5_15)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_15) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_15) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_5) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_5_16)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_16) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_16) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_5) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_5_17)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_17) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_17) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_5) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_6_18)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_18) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_18) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_6) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_6_19)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_19) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_19) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_6) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_6_20)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_20) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_20) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_6) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_7_21)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_21) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_21) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_7) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_7_22)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_22) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_22) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_7) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(demand_dsm_oemof_7_23)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(demand_dsm_oemof_23) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(demand_dsm_oemof_23) --0.5 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_7) -<= 0 - -c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(demand_dsm_oemof_0)_: --1 SinkDSMOemofInvestmentBlock_dsm_do_shift(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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(demand_dsm_oemof_0)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_0) -<= 1000 - -c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(demand_dsm_oemof_1)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_1) -<= 1000 - -c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(demand_dsm_oemof_2)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_2) -<= 1000 - -c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(demand_dsm_oemof_3)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_3) -<= 1000 - -c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(demand_dsm_oemof_4)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_4) -<= 1000 - -c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(demand_dsm_oemof_5)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_5) -<= 1000 - -c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(demand_dsm_oemof_6)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_6) -<= 1000 - -c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(demand_dsm_oemof_7)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_7) -<= 1000 - -c_l_SinkDSMOemofInvestmentBlock_overall_minimum(demand_dsm_oemof)_: -+1 SinkDSMOemofInvestmentBlock_total(demand_dsm_oemof_7) ->= 5 - -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 - 0 <= InvestmentFlowBlock_invest(storage_electricity_3) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_electricity_4) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_electricity_5) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_electricity_6) <= +inf - 0 <= InvestmentFlowBlock_invest(storage_electricity_7) <= +inf - 0 <= GenericInvestmentStorageBlock_invest(storage_0) <= +inf - 0 <= GenericInvestmentStorageBlock_invest(storage_1) <= +inf - 0 <= GenericInvestmentStorageBlock_invest(storage_2) <= +inf - 0 <= GenericInvestmentStorageBlock_invest(storage_3) <= +inf - 0 <= GenericInvestmentStorageBlock_invest(storage_4) <= +inf - 0 <= GenericInvestmentStorageBlock_invest(storage_5) <= +inf - 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_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_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_2_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_3_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_4_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_5_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_6_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_7_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_8_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_9_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_10_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_11_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_12_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_13_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_14_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_15_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_16_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_17_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_18_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_19_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_20_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_21_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_22_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(demand_dsm_diw_23_23) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shed(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 - 33 <= SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_3) <= 100 - 33 <= SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_4) <= 100 - 33 <= SinkDSMDIWInvestmentBlock_invest(demand_dsm_diw_5) <= 100 - 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_2_1) <= +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_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_2_18) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_balance_dsm_up(demand_dsm_dlr_2_18) <= +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 - 33 <= SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_2) <= 100 - 33 <= SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_3) <= 100 - 33 <= SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_4) <= 100 - 33 <= SinkDSMDLRInvestmentBlock_invest(demand_dsm_dlr_5) <= 100 - 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_shed(demand_dsm_oemof_0) <= +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 - 33 <= SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_3) <= 100 - 33 <= SinkDSMOemofInvestmentBlock_invest(demand_dsm_oemof_4) <= 100 - 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 <= 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_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_end(storage_electricity_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage_electricity_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage_electricity_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage_electricity_3) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage_electricity_4) <= +inf - 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_exo(storage_electricity_0) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage_electricity_1) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage_electricity_2) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage_electricity_3) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage_electricity_4) <= +inf - 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 <= 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_7) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_0) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_3) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_4) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_5) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_6) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_7) <= +inf - 0 <= GenericInvestmentStorageBlock_old_exo(storage_0) <= +inf - 0 <= GenericInvestmentStorageBlock_old_exo(storage_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old_exo(storage_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old_exo(storage_3) <= +inf - 0 <= GenericInvestmentStorageBlock_old_exo(storage_4) <= +inf - 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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage_3) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_4) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_5) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_6) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_7) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_8) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_9) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_10) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_11) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_12) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_13) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_14) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_15) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_16) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_17) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_18) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_19) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_20) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_21) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_22) <= +inf - 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_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_4) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_5) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_6) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_end(demand_dsm_diw_7) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_3) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_exo(demand_dsm_diw_4) <= +inf - 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_7) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_6) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_end(demand_dsm_dlr_7) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_exo(demand_dsm_dlr_4) <= +inf - 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 - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_6) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_7) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_8) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_9) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_10) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_11) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_12) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_13) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_14) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_15) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_16) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_17) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_18) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_19) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_20) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_21) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_22) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(demand_dsm_dlr_23) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_6) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_7) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_8) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_9) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_10) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_11) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_12) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_13) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_14) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_15) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_16) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_17) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_18) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_19) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_20) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_21) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(demand_dsm_dlr_22) <= +inf - 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_7) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_0) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_3) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_4) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_5) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_6) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_end(demand_dsm_oemof_7) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_0) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_3) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_exo(demand_dsm_oemof_4) <= +inf - 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 deleted file mode 100644 index 82cf4daeb..000000000 --- a/tests/lp_files/nominal_value_to_zero.lp +++ /dev/null @@ -1,26 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+0 ONE_VAR_CONSTANT - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(s1_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(s1_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(s1_electricityBus_0_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 -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 deleted file mode 100644 index 11db58e67..000000000 --- a/tests/lp_files/nominal_value_to_zero_multi_period.lp +++ /dev/null @@ -1,41 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+0 ONE_VAR_CONSTANT - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(s1_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(s1_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(s1_electricityBus_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(s1_electricityBus_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(s1_electricityBus_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(s1_electricityBus_2_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 -end diff --git a/tests/lp_files/nonequidistant_timeindex.lp b/tests/lp_files/nonequidistant_timeindex.lp deleted file mode 100644 index 9fd54c5bf..000000000 --- a/tests/lp_files/nonequidistant_timeindex.lp +++ /dev/null @@ -1,252 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_BusBlock_balance(gas_0_0)_: -+1 flow(gas_boiler_0_0) -= 0 - -c_e_BusBlock_balance(gas_0_1)_: -+1 flow(gas_boiler_0_1) -= 0 - -c_e_BusBlock_balance(gas_0_2)_: -+1 flow(gas_boiler_0_2) -= 0 - -c_e_BusBlock_balance(gas_0_3)_: -+1 flow(gas_boiler_0_3) -= 0 - -c_e_BusBlock_balance(gas_0_4)_: -+1 flow(gas_boiler_0_4) -= 0 - -c_e_BusBlock_balance(gas_0_5)_: -+1 flow(gas_boiler_0_5) -= 0 - -c_e_BusBlock_balance(gas_0_6)_: -+1 flow(gas_boiler_0_6) -= 0 - -c_e_BusBlock_balance(gas_0_7)_: -+1 flow(gas_boiler_0_7) -= 0 - -c_e_ConverterBlock_relation(boiler_gas_heat_0_0)_: -+1 flow(gas_boiler_0_0) --1 flow(boiler_heat_0_0) -= 0 - -c_e_ConverterBlock_relation(boiler_gas_heat_0_1)_: -+1 flow(gas_boiler_0_1) --1 flow(boiler_heat_0_1) -= 0 - -c_e_ConverterBlock_relation(boiler_gas_heat_0_2)_: -+1 flow(gas_boiler_0_2) --1 flow(boiler_heat_0_2) -= 0 - -c_e_ConverterBlock_relation(boiler_gas_heat_0_3)_: -+1 flow(gas_boiler_0_3) --1 flow(boiler_heat_0_3) -= 0 - -c_e_ConverterBlock_relation(boiler_gas_heat_0_4)_: -+1 flow(gas_boiler_0_4) --1 flow(boiler_heat_0_4) -= 0 - -c_e_ConverterBlock_relation(boiler_gas_heat_0_5)_: -+1 flow(gas_boiler_0_5) --1 flow(boiler_heat_0_5) -= 0 - -c_e_ConverterBlock_relation(boiler_gas_heat_0_6)_: -+1 flow(gas_boiler_0_6) --1 flow(boiler_heat_0_6) -= 0 - -c_e_ConverterBlock_relation(boiler_gas_heat_0_7)_: -+1 flow(gas_boiler_0_7) --1 flow(boiler_heat_0_7) -= 0 - -c_e_GenericStorageBlock_balance(storage_0_0)_: --1 flow(heat_storage_0_0) -+1 flow(storage_heat_0_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) --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) --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) --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) --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) --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) --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) --0.9486832980505138 GenericStorageBlock_storage_content(storage_7) -+1 GenericStorageBlock_storage_content(storage_8) -= 0 - -c_e_GenericStorageBlock_balanced_cstr(storage)_: -+1 GenericStorageBlock_storage_content(storage_8) -= 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 <= GenericStorageBlock_storage_content(storage_1) <= 300 - 0 <= GenericStorageBlock_storage_content(storage_2) <= 300 - 0 <= GenericStorageBlock_storage_content(storage_3) <= 300 - 0 <= GenericStorageBlock_storage_content(storage_4) <= 300 - 0 <= GenericStorageBlock_storage_content(storage_5) <= 300 - 0 <= GenericStorageBlock_storage_content(storage_6) <= 300 - 0 <= GenericStorageBlock_storage_content(storage_7) <= 300 - 0 <= GenericStorageBlock_storage_content(storage_8) <= 300 -end diff --git a/tests/lp_files/offsetconverter.lp b/tests/lp_files/offsetconverter.lp deleted file mode 100644 index 59b7c425e..000000000 --- a/tests/lp_files/offsetconverter.lp +++ /dev/null @@ -1,114 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+0 ONE_VAR_CONSTANT - -s.t. - -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_gasboiler_0_0) -= 0 - -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_gasboiler_0_1) -= 0 - -c_e_BusBlock_balance(gasBus_0_2)_: -+1 flow(gasBus_gasboiler_0_2) -= 0 - -c_e_BusBlock_balance(thermalBus_0_0)_: -+1 flow(gasboiler_thermalBus_0_0) -= 0 - -c_e_BusBlock_balance(thermalBus_0_1)_: -+1 flow(gasboiler_thermalBus_0_1) -= 0 - -c_e_BusBlock_balance(thermalBus_0_2)_: -+1 flow(gasboiler_thermalBus_0_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(gasBus_gasboiler_0)_: -+1 NonConvexFlowBlock_status_nominal(gasBus_gasboiler_0) --100 NonConvexFlowBlock_status(gasBus_gasboiler_0) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(gasBus_gasboiler_1)_: -+1 NonConvexFlowBlock_status_nominal(gasBus_gasboiler_1) --100 NonConvexFlowBlock_status(gasBus_gasboiler_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(gasBus_gasboiler_2)_: -+1 NonConvexFlowBlock_status_nominal(gasBus_gasboiler_2) --100 NonConvexFlowBlock_status(gasBus_gasboiler_2) -= 0 - -c_u_NonConvexFlowBlock_min(gasBus_gasboiler_0_0)_: --1 flow(gasBus_gasboiler_0_0) -+0.32 NonConvexFlowBlock_status_nominal(gasBus_gasboiler_0) -<= 0 - -c_u_NonConvexFlowBlock_min(gasBus_gasboiler_0_1)_: --1 flow(gasBus_gasboiler_0_1) -+0.32 NonConvexFlowBlock_status_nominal(gasBus_gasboiler_1) -<= 0 - -c_u_NonConvexFlowBlock_min(gasBus_gasboiler_0_2)_: --1 flow(gasBus_gasboiler_0_2) -+0.32 NonConvexFlowBlock_status_nominal(gasBus_gasboiler_2) -<= 0 - -c_u_NonConvexFlowBlock_max(gasBus_gasboiler_0_0)_: -+1 flow(gasBus_gasboiler_0_0) --1 NonConvexFlowBlock_status_nominal(gasBus_gasboiler_0) -<= 0 - -c_u_NonConvexFlowBlock_max(gasBus_gasboiler_0_1)_: -+1 flow(gasBus_gasboiler_0_1) --1 NonConvexFlowBlock_status_nominal(gasBus_gasboiler_1) -<= 0 - -c_u_NonConvexFlowBlock_max(gasBus_gasboiler_0_2)_: -+1 flow(gasBus_gasboiler_0_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) --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) --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) --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 <= NonConvexFlowBlock_status_nominal(gasBus_gasboiler_0) <= +inf - 0 <= NonConvexFlowBlock_status(gasBus_gasboiler_0) <= 1 - 0 <= NonConvexFlowBlock_status_nominal(gasBus_gasboiler_1) <= +inf - 0 <= NonConvexFlowBlock_status(gasBus_gasboiler_1) <= 1 - 0 <= NonConvexFlowBlock_status_nominal(gasBus_gasboiler_2) <= +inf - 0 <= NonConvexFlowBlock_status(gasBus_gasboiler_2) <= 1 -binary - NonConvexFlowBlock_status(gasBus_gasboiler_0) - NonConvexFlowBlock_status(gasBus_gasboiler_1) - NonConvexFlowBlock_status(gasBus_gasboiler_2) -end diff --git a/tests/lp_files/offsetconverter_multi_period.lp b/tests/lp_files/offsetconverter_multi_period.lp deleted file mode 100644 index 2f29944f2..000000000 --- a/tests/lp_files/offsetconverter_multi_period.lp +++ /dev/null @@ -1,216 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -0 ONE_VAR_CONSTANT - -s.t. - -c_e_BusBlock_balance(thermalBus_0_0)_: -1 flow(gasboiler_thermalBus_0_0) -= 0 - -c_e_BusBlock_balance(thermalBus_0_1)_: -1 flow(gasboiler_thermalBus_0_1) -= 0 - -c_e_BusBlock_balance(thermalBus_1_2)_: -1 flow(gasboiler_thermalBus_1_2) -= 0 - -c_e_BusBlock_balance(thermalBus_1_3)_: -1 flow(gasboiler_thermalBus_1_3) -= 0 - -c_e_BusBlock_balance(thermalBus_2_4)_: -1 flow(gasboiler_thermalBus_2_4) -= 0 - -c_e_BusBlock_balance(thermalBus_2_5)_: -1 flow(gasboiler_thermalBus_2_5) -= 0 - -c_e_BusBlock_balance(gasBus_0_0)_: -1 flow(gasBus_gasboiler_0_0) -= 0 - -c_e_BusBlock_balance(gasBus_0_1)_: -1 flow(gasBus_gasboiler_0_1) -= 0 - -c_e_BusBlock_balance(gasBus_1_2)_: -1 flow(gasBus_gasboiler_1_2) -= 0 - -c_e_BusBlock_balance(gasBus_1_3)_: -1 flow(gasBus_gasboiler_1_3) -= 0 - -c_e_BusBlock_balance(gasBus_2_4)_: -1 flow(gasBus_gasboiler_2_4) -= 0 - -c_e_BusBlock_balance(gasBus_2_5)_: -1 flow(gasBus_gasboiler_2_5) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(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) --100 NonConvexFlowBlock_status(gasboiler_thermalBus_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(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) --100 NonConvexFlowBlock_status(gasboiler_thermalBus_3) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(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) --100 NonConvexFlowBlock_status(gasboiler_thermalBus_5) -= 0 - -c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_0_0)_: --1 flow(gasboiler_thermalBus_0_0) -+0.32 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_0) -<= 0 - -c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_0_1)_: --1 flow(gasboiler_thermalBus_0_1) -+0.32 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_1) -<= 0 - -c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_1_2)_: --1 flow(gasboiler_thermalBus_1_2) -+0.32 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_2) -<= 0 - -c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_1_3)_: --1 flow(gasboiler_thermalBus_1_3) -+0.32 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_3) -<= 0 - -c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_2_4)_: --1 flow(gasboiler_thermalBus_2_4) -+0.32 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_4) -<= 0 - -c_u_NonConvexFlowBlock_min(gasboiler_thermalBus_2_5)_: --1 flow(gasboiler_thermalBus_2_5) -+0.32 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_5) -<= 0 - -c_u_NonConvexFlowBlock_max(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 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_1) -<= 0 - -c_u_NonConvexFlowBlock_max(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 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_3) -<= 0 - -c_u_NonConvexFlowBlock_max(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 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) --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) --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) --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) --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) --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) --17 NonConvexFlowBlock_status_nominal(gasboiler_thermalBus_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 -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) -end diff --git a/tests/lp_files/offsetconverter_nonconvex.lp b/tests/lp_files/offsetconverter_nonconvex.lp deleted file mode 100644 index 98ff1f1c0..000000000 --- a/tests/lp_files/offsetconverter_nonconvex.lp +++ /dev/null @@ -1,114 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -0 ONE_VAR_CONSTANT - -s.t. - -c_e_BusBlock_balance(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) -= 0 - -c_e_BusBlock_balance(bus_electricity_0_2)_: -1 flow(diesel_genset_bus_electricity_0_2) -= 0 - -c_e_BusBlock_balance(bus_diesel_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) -= 0 - -c_e_BusBlock_balance(bus_diesel_0_2)_: -1 flow(bus_diesel_diesel_genset_0_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(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) --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) --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) -+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) -+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) -+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) --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 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 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) -+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) -+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) -+2.5 NonConvexFlowBlock_status_nominal(diesel_genset_bus_electricity_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 -binary -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 deleted file mode 100644 index 4b9755dd5..000000000 --- a/tests/lp_files/offsetconverter_nonconvex_investment.lp +++ /dev/null @@ -1,155 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -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) -= 0 - -c_e_BusBlock_balance(bus_diesel_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) -= 0 - -c_e_BusBlock_balance(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) -= 0 - -c_e_BusBlock_balance(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) ->= 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_0)_: --1 flow(diesel_genset_bus_electricity_0_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) -+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) -+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) --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 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 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_diesel_bus_electricity_0_0)_: -+0.5 flow(bus_diesel_diesel_genset_0_0) --1 flow(diesel_genset_bus_electricity_0_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) -+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) -+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 <= 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 diff --git a/tests/lp_files/periodical_emission_limit.lp b/tests/lp_files/periodical_emission_limit.lp deleted file mode 100644 index a4ff0ee68..000000000 --- a/tests/lp_files/periodical_emission_limit.lp +++ /dev/null @@ -1,44 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+0 ONE_VAR_CONSTANT - -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) -<= 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) -<= 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) -<= 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 -end diff --git a/tests/lp_files/periodical_investment_limit.lp b/tests/lp_files/periodical_investment_limit.lp deleted file mode 100644 index 1a01bf380..000000000 --- a/tests/lp_files/periodical_investment_limit.lp +++ /dev/null @@ -1,583 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+8.230422488026955 InvestmentFlowBlock_invest(Source_Bus1_0) -+5.432444590842506 InvestmentFlowBlock_invest(Source_Bus1_1) -+2.6893290053675805 InvestmentFlowBlock_invest(Source_Bus1_2) -+18.670948783910358 GenericInvestmentStorageBlock_invest(storage_invest_limit_0) -+12.323655908867737 GenericInvestmentStorageBlock_invest(storage_invest_limit_1) -+6.1008197568652225 GenericInvestmentStorageBlock_invest(storage_invest_limit_2) - -s.t. - -c_u_investment_limit_per_period(0)_: -+8.230422488026955 InvestmentFlowBlock_invest(Source_Bus1_0) -+18.670948783910358 GenericInvestmentStorageBlock_invest(storage_invest_limit_0) -<= 500 - -c_u_investment_limit_per_period(1)_: -+5.432444590842506 InvestmentFlowBlock_invest(Source_Bus1_1) -+12.323655908867737 GenericInvestmentStorageBlock_invest(storage_invest_limit_1) -<= 400 - -c_u_investment_limit_per_period(2)_: -+2.6893290053675805 InvestmentFlowBlock_invest(Source_Bus1_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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(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_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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(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_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) -= 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_old_rule_end(storage_invest_limit_Bus1_0)_: -+1 InvestmentFlowBlock_old_end(storage_invest_limit_Bus1_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage_invest_limit_Bus1_1)_: -+1 InvestmentFlowBlock_old_end(storage_invest_limit_Bus1_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage_invest_limit_Bus1_2)_: -+1 InvestmentFlowBlock_old_end(storage_invest_limit_Bus1_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(Bus1_storage_invest_limit_0)_: -+1 InvestmentFlowBlock_old_end(Bus1_storage_invest_limit_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(Bus1_storage_invest_limit_1)_: -+1 InvestmentFlowBlock_old_end(Bus1_storage_invest_limit_1) -= 0 - -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) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_1)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_2)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage_invest_limit_Bus1_0)_: -+1 InvestmentFlowBlock_old_exo(storage_invest_limit_Bus1_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage_invest_limit_Bus1_1)_: -+1 InvestmentFlowBlock_old_exo(storage_invest_limit_Bus1_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage_invest_limit_Bus1_2)_: -+1 InvestmentFlowBlock_old_exo(storage_invest_limit_Bus1_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(Bus1_storage_invest_limit_0)_: -+1 InvestmentFlowBlock_old_exo(Bus1_storage_invest_limit_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(Bus1_storage_invest_limit_1)_: -+1 InvestmentFlowBlock_old_exo(Bus1_storage_invest_limit_1) -= 0 - -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) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(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) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(storage_invest_limit_Bus1_1) --1 InvestmentFlowBlock_old_end(storage_invest_limit_Bus1_1) --1 InvestmentFlowBlock_old_exo(storage_invest_limit_Bus1_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(storage_invest_limit_Bus1_2)_: -+1 InvestmentFlowBlock_old(storage_invest_limit_Bus1_2) --1 InvestmentFlowBlock_old_end(storage_invest_limit_Bus1_2) --1 InvestmentFlowBlock_old_exo(storage_invest_limit_Bus1_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(Bus1_storage_invest_limit_1) --1 InvestmentFlowBlock_old_end(Bus1_storage_invest_limit_1) --1 InvestmentFlowBlock_old_exo(Bus1_storage_invest_limit_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(Bus1_storage_invest_limit_2)_: -+1 InvestmentFlowBlock_old(Bus1_storage_invest_limit_2) --1 InvestmentFlowBlock_old_end(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_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(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_invest_limit_Bus1_0_0)_: -+1 flow(storage_invest_limit_Bus1_0_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 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 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 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 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 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 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 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 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 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 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 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) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_invest_limit_1)_: --1 GenericInvestmentStorageBlock_invest(storage_invest_limit_1) --1 GenericInvestmentStorageBlock_total(storage_invest_limit_0) -+1 GenericInvestmentStorageBlock_total(storage_invest_limit_1) -+1 GenericInvestmentStorageBlock_old(storage_invest_limit_1) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_invest_limit_2)_: --1 GenericInvestmentStorageBlock_invest(storage_invest_limit_2) --1 GenericInvestmentStorageBlock_total(storage_invest_limit_1) -+1 GenericInvestmentStorageBlock_total(storage_invest_limit_2) -+1 GenericInvestmentStorageBlock_old(storage_invest_limit_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_invest_limit_0)_: -+1 GenericInvestmentStorageBlock_old_end(storage_invest_limit_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_invest_limit_1)_: -+1 GenericInvestmentStorageBlock_old_end(storage_invest_limit_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_invest_limit_2)_: -+1 GenericInvestmentStorageBlock_old_end(storage_invest_limit_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_invest_limit_0)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_invest_limit_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_invest_limit_1)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_invest_limit_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_invest_limit_2)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_invest_limit_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(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)_: -+1 GenericInvestmentStorageBlock_old(storage_invest_limit_1) --1 GenericInvestmentStorageBlock_old_end(storage_invest_limit_1) --1 GenericInvestmentStorageBlock_old_exo(storage_invest_limit_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage_invest_limit_2)_: -+1 GenericInvestmentStorageBlock_old(storage_invest_limit_2) --1 GenericInvestmentStorageBlock_old_end(storage_invest_limit_2) --1 GenericInvestmentStorageBlock_old_exo(storage_invest_limit_2) -= 0 - -c_e_GenericInvestmentStorageBlock_initially_empty(storage_invest_limit_0)_: -+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 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 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 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 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 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_4) -+1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_5) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_invest_limit_0)_: -+1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_0) --0.2 GenericInvestmentStorageBlock_total(storage_invest_limit_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_invest_limit_1)_: -+1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_1) --0.2 GenericInvestmentStorageBlock_total(storage_invest_limit_1) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_invest_limit_2)_: -+1 InvestmentFlowBlock_total(Bus1_storage_invest_limit_2) --0.2 GenericInvestmentStorageBlock_total(storage_invest_limit_2) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_invest_limit_0)_: -+1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_0) --0.2 GenericInvestmentStorageBlock_total(storage_invest_limit_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_invest_limit_1)_: -+1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_1) --0.2 GenericInvestmentStorageBlock_total(storage_invest_limit_1) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_invest_limit_2)_: -+1 InvestmentFlowBlock_total(storage_invest_limit_Bus1_2) --0.2 GenericInvestmentStorageBlock_total(storage_invest_limit_2) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_invest_limit_0_0)_: --1 GenericInvestmentStorageBlock_total(storage_invest_limit_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_invest_limit_0_1)_: --1 GenericInvestmentStorageBlock_total(storage_invest_limit_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_invest_limit_1_2)_: --1 GenericInvestmentStorageBlock_total(storage_invest_limit_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_invest_limit_1_3)_: --1 GenericInvestmentStorageBlock_total(storage_invest_limit_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_invest_limit_2_4)_: --1 GenericInvestmentStorageBlock_total(storage_invest_limit_2) -+1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_invest_limit_2_5)_: --1 GenericInvestmentStorageBlock_total(storage_invest_limit_2) -+1 GenericInvestmentStorageBlock_storage_content(storage_invest_limit_5) -<= 0 - -bounds - 0 <= InvestmentFlowBlock_invest(Source_Bus1_0) <= +inf - 0 <= InvestmentFlowBlock_invest(Source_Bus1_1) <= +inf - 0 <= InvestmentFlowBlock_invest(Source_Bus1_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 <= 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_1) <= +inf - 0 <= InvestmentFlowBlock_total(Source_Bus1_2) <= +inf - 0 <= InvestmentFlowBlock_old(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(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_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_invest_limit_0) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_invest_limit_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_invest_limit_2) <= +inf - 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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage_invest_limit_3) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_invest_limit_4) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_invest_limit_5) <= +inf -end diff --git a/tests/lp_files/periodical_investment_limit_with_dsm_DIW.lp b/tests/lp_files/periodical_investment_limit_with_dsm_DIW.lp deleted file mode 100644 index 1fe4aaa5c..000000000 --- a/tests/lp_files/periodical_investment_limit_with_dsm_DIW.lp +++ /dev/null @@ -1,605 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+8.230422488026955 InvestmentFlowBlock_invest(Source_Bus1_0) -+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_1_0) -+0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_0) -+0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_0) -+0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_0) -+0.5 SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_0) -+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) - -s.t. - -c_u_investment_limit_per_period(0)_: -+8.230422488026955 InvestmentFlowBlock_invest(Source_Bus1_0) -+99.99999999999999 SinkDSMDIWInvestmentBlock_invest(sink_dsm_DIW_0) -<= 400 - -c_u_investment_limit_per_period(1)_: -+5.432444590842506 InvestmentFlowBlock_invest(Source_Bus1_1) -+98.03921568627449 SinkDSMDIWInvestmentBlock_invest(sink_dsm_DIW_1) -<= 300 - -c_u_investment_limit_per_period(2)_: -+2.6893290053675805 InvestmentFlowBlock_invest(Source_Bus1_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) -= 0 - -c_e_BusBlock_balance(Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) --1 flow(Bus1_sink_dsm_DIW_0_1) -= 0 - -c_e_BusBlock_balance(Bus1_1_2)_: -+1 flow(Source_Bus1_1_2) --1 flow(Bus1_sink_dsm_DIW_1_2) -= 0 - -c_e_BusBlock_balance(Bus1_1_3)_: -+1 flow(Source_Bus1_1_3) --1 flow(Bus1_sink_dsm_DIW_1_3) -= 0 - -c_e_BusBlock_balance(Bus1_2_4)_: -+1 flow(Source_Bus1_2_4) --1 flow(Bus1_sink_dsm_DIW_2_4) -= 0 - -c_e_BusBlock_balance(Bus1_2_5)_: -+1 flow(Source_Bus1_2_5) --1 flow(Bus1_sink_dsm_DIW_2_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_old_rule_end(Source_Bus1_0)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_1)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_2)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(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) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_2)_: -+1 InvestmentFlowBlock_old_exo(Source_Bus1_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_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(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_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_SinkDSMDIWInvestmentBlock_total_dsm_rule(sink_dsm_DIW_0)_: --1 SinkDSMDIWInvestmentBlock_invest(sink_dsm_DIW_0) -+1 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) -= 50 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(sink_dsm_DIW_1)_: --1 SinkDSMDIWInvestmentBlock_invest(sink_dsm_DIW_1) --1 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) -+1 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_1) -+1 SinkDSMDIWInvestmentBlock_old(sink_dsm_DIW_1) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_total_dsm_rule(sink_dsm_DIW_2)_: --1 SinkDSMDIWInvestmentBlock_invest(sink_dsm_DIW_2) --1 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_1) -+1 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_2) -+1 SinkDSMDIWInvestmentBlock_old(sink_dsm_DIW_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_end(sink_dsm_DIW_0)_: -+1 SinkDSMDIWInvestmentBlock_old_end(sink_dsm_DIW_0) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_end(sink_dsm_DIW_1)_: -+1 SinkDSMDIWInvestmentBlock_old_end(sink_dsm_DIW_1) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_end(sink_dsm_DIW_2)_: --1 SinkDSMDIWInvestmentBlock_invest(sink_dsm_DIW_0) -+1 SinkDSMDIWInvestmentBlock_old_end(sink_dsm_DIW_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(sink_dsm_DIW_0)_: -+1 SinkDSMDIWInvestmentBlock_old_exo(sink_dsm_DIW_0) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(sink_dsm_DIW_1)_: -+1 SinkDSMDIWInvestmentBlock_old_exo(sink_dsm_DIW_1) -= 50 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule_exo(sink_dsm_DIW_2)_: -+1 SinkDSMDIWInvestmentBlock_old_exo(sink_dsm_DIW_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(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)_: -+1 SinkDSMDIWInvestmentBlock_old(sink_dsm_DIW_1) --1 SinkDSMDIWInvestmentBlock_old_end(sink_dsm_DIW_1) --1 SinkDSMDIWInvestmentBlock_old_exo(sink_dsm_DIW_1) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_old_dsm_rule(sink_dsm_DIW_2)_: -+1 SinkDSMDIWInvestmentBlock_old(sink_dsm_DIW_2) --1 SinkDSMDIWInvestmentBlock_old_end(sink_dsm_DIW_2) --1 SinkDSMDIWInvestmentBlock_old_exo(sink_dsm_DIW_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_shift_shed_vars(sink_dsm_DIW_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_0) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_shift_shed_vars(sink_dsm_DIW_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_1) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_shift_shed_vars(sink_dsm_DIW_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_2) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_shift_shed_vars(sink_dsm_DIW_3)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_3) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_shift_shed_vars(sink_dsm_DIW_4)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_4) -= 0 - -c_e_SinkDSMDIWInvestmentBlock_shift_shed_vars(sink_dsm_DIW_5)_: -+1 SinkDSMDIWInvestmentBlock_dsm_do_shed(sink_dsm_DIW_5) -= 0 - -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 - -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 - -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 - -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 - -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 - -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 - -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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(sink_dsm_DIW_0_0)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_0) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(sink_dsm_DIW_0_1)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_1) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(sink_dsm_DIW_1_2)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_2) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(sink_dsm_DIW_1_3)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_3) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_1) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(sink_dsm_DIW_2_4)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_4) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_2) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_dsm_up_constraint(sink_dsm_DIW_2_5)_: -+1 SinkDSMDIWInvestmentBlock_dsm_up(sink_dsm_DIW_5) --0.5 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_2) -<= 0 - -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 - -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 - -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 - -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 - -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 - -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 - -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_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) -<= 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) -<= 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) -<= 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) -<= 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) -<= 0 - -c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(sink_dsm_DIW_0)_: -+1 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_0) -<= 1000 - -c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(sink_dsm_DIW_1)_: -+1 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_1) -<= 1000 - -c_u_SinkDSMDIWInvestmentBlock_overall_dsm_maximum(sink_dsm_DIW_2)_: -+1 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_2) -<= 1000 - -c_l_SinkDSMDIWInvestmentBlock_overall_minimum(sink_dsm_DIW)_: -+1 SinkDSMDIWInvestmentBlock_total(sink_dsm_DIW_2) ->= 200 - -bounds - 0 <= InvestmentFlowBlock_invest(Source_Bus1_0) <= +inf - 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_1_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_2_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_3_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_4_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_dsm_do_shift(sink_dsm_DIW_5_0) <= +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 <= 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_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(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_2) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_end(sink_dsm_DIW_0) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_end(sink_dsm_DIW_1) <= +inf - 0 <= SinkDSMDIWInvestmentBlock_old_end(sink_dsm_DIW_2) <= +inf - 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 deleted file mode 100644 index 3d3d8a7d3..000000000 --- a/tests/lp_files/periodical_investment_limit_with_dsm_DLR.lp +++ /dev/null @@ -1,753 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+8.230422488026955 InvestmentFlowBlock_invest(Source_Bus1_0) -+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_balance_dsm_up(sink_dsm_DLR_1_0) -+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.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) - -s.t. - -c_u_investment_limit_per_period(0)_: -+8.230422488026955 InvestmentFlowBlock_invest(Source_Bus1_0) -+99.99999999999999 SinkDSMDLRInvestmentBlock_invest(sink_dsm_DLR_0) -<= 400 - -c_u_investment_limit_per_period(1)_: -+5.432444590842506 InvestmentFlowBlock_invest(Source_Bus1_1) -+98.03921568627449 SinkDSMDLRInvestmentBlock_invest(sink_dsm_DLR_1) -<= 300 - -c_u_investment_limit_per_period(2)_: -+2.6893290053675805 InvestmentFlowBlock_invest(Source_Bus1_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) -= 0 - -c_e_BusBlock_balance(Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) --1 flow(Bus1_sink_dsm_DLR_0_1) -= 0 - -c_e_BusBlock_balance(Bus1_1_2)_: -+1 flow(Source_Bus1_1_2) --1 flow(Bus1_sink_dsm_DLR_1_2) -= 0 - -c_e_BusBlock_balance(Bus1_1_3)_: -+1 flow(Source_Bus1_1_3) --1 flow(Bus1_sink_dsm_DLR_1_3) -= 0 - -c_e_BusBlock_balance(Bus1_2_4)_: -+1 flow(Source_Bus1_2_4) --1 flow(Bus1_sink_dsm_DLR_2_4) -= 0 - -c_e_BusBlock_balance(Bus1_2_5)_: -+1 flow(Source_Bus1_2_5) --1 flow(Bus1_sink_dsm_DLR_2_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_old_rule_end(Source_Bus1_0)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_1)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_2)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(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) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_2)_: -+1 InvestmentFlowBlock_old_exo(Source_Bus1_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_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(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_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_SinkDSMDLRInvestmentBlock_total_dsm_rule(sink_dsm_DLR_0)_: --1 SinkDSMDLRInvestmentBlock_invest(sink_dsm_DLR_0) -+1 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) -= 50 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(sink_dsm_DLR_1)_: --1 SinkDSMDLRInvestmentBlock_invest(sink_dsm_DLR_1) --1 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) -+1 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_1) -+1 SinkDSMDLRInvestmentBlock_old(sink_dsm_DLR_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_total_dsm_rule(sink_dsm_DLR_2)_: --1 SinkDSMDLRInvestmentBlock_invest(sink_dsm_DLR_2) --1 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_1) -+1 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_2) -+1 SinkDSMDLRInvestmentBlock_old(sink_dsm_DLR_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_end(sink_dsm_DLR_0)_: -+1 SinkDSMDLRInvestmentBlock_old_end(sink_dsm_DLR_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_end(sink_dsm_DLR_1)_: -+1 SinkDSMDLRInvestmentBlock_old_end(sink_dsm_DLR_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_end(sink_dsm_DLR_2)_: --1 SinkDSMDLRInvestmentBlock_invest(sink_dsm_DLR_0) -+1 SinkDSMDLRInvestmentBlock_old_end(sink_dsm_DLR_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(sink_dsm_DLR_0)_: -+1 SinkDSMDLRInvestmentBlock_old_exo(sink_dsm_DLR_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(sink_dsm_DLR_1)_: -+1 SinkDSMDLRInvestmentBlock_old_exo(sink_dsm_DLR_1) -= 50 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule_exo(sink_dsm_DLR_2)_: -+1 SinkDSMDLRInvestmentBlock_old_exo(sink_dsm_DLR_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(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)_: -+1 SinkDSMDLRInvestmentBlock_old(sink_dsm_DLR_1) --1 SinkDSMDLRInvestmentBlock_old_end(sink_dsm_DLR_1) --1 SinkDSMDLRInvestmentBlock_old_exo(sink_dsm_DLR_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_old_dsm_rule(sink_dsm_DLR_2)_: -+1 SinkDSMDLRInvestmentBlock_old(sink_dsm_DLR_2) --1 SinkDSMDLRInvestmentBlock_old_end(sink_dsm_DLR_2) --1 SinkDSMDLRInvestmentBlock_old_exo(sink_dsm_DLR_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_shift_shed_vars(sink_dsm_DLR_1_0)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_shift_shed_vars(sink_dsm_DLR_1_1)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_shift_shed_vars(sink_dsm_DLR_1_2)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_shift_shed_vars(sink_dsm_DLR_1_3)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_shift_shed_vars(sink_dsm_DLR_1_4)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_shift_shed_vars(sink_dsm_DLR_1_5)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shed(sink_dsm_DLR_5) -= 0 - -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_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 - -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 - -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 - -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 - -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 - -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 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(sink_dsm_DLR_1_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_0) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(sink_dsm_DLR_1_1)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_0) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_1) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(sink_dsm_DLR_1_2)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_1) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_2) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(sink_dsm_DLR_1_3)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_2) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_3) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(sink_dsm_DLR_1_4)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_3) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_4) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_red(sink_dsm_DLR_1_5)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_4) -+1 SinkDSMDLRInvestmentBlock_balance_dsm_do(sink_dsm_DLR_1_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_capacity_balance_inc(sink_dsm_DLR_1_0)_: -+1 SinkDSMDLRInvestmentBlock_balance_dsm_up(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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_red(sink_dsm_DLR_1_5)_: -+1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_no_comp_inc(sink_dsm_DLR_1_5)_: -+1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_5) -= 0 - -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 - -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 - -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 - -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 - -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 - -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 - -c_u_SinkDSMDLRInvestmentBlock_availability_inc(sink_dsm_DLR_0_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) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_availability_inc(sink_dsm_DLR_0_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_availability_inc(sink_dsm_DLR_1_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_availability_inc(sink_dsm_DLR_1_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_availability_inc(sink_dsm_DLR_2_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_availability_inc(sink_dsm_DLR_2_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_e_SinkDSMDLRInvestmentBlock_dr_storage_red(sink_dsm_DLR_0)_: --1 SinkDSMDLRInvestmentBlock_dsm_do_shift(sink_dsm_DLR_1_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(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_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_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_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_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_dsm_do_level(sink_dsm_DLR_4) --1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_5) -= 0 - -c_e_SinkDSMDLRInvestmentBlock_dr_storage_inc(sink_dsm_DLR_0)_: --1 SinkDSMDLRInvestmentBlock_dsm_up(sink_dsm_DLR_1_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(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_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_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_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_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_level(sink_dsm_DLR_4) --1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_5) -= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(sink_dsm_DLR_0_0)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_0) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(sink_dsm_DLR_0_1)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_1) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(sink_dsm_DLR_1_2)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_2) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(sink_dsm_DLR_1_3)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_1) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_3) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(sink_dsm_DLR_2_4)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_4) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_red(sink_dsm_DLR_2_5)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_2) -+1 SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_5) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(sink_dsm_DLR_0_0)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_0) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(sink_dsm_DLR_0_1)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_1) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(sink_dsm_DLR_1_2)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_1) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_2) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(sink_dsm_DLR_1_3)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_1) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_3) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(sink_dsm_DLR_2_4)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_2) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_4) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_dr_storage_limit_inc(sink_dsm_DLR_2_5)_: --0.5 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_2) -+1 SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_5) -<= 0 - -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_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) -<= 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) -<= 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) -<= 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) -<= 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) -<= 0 - -c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(sink_dsm_DLR_0)_: -+1 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_0) -<= 1000 - -c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(sink_dsm_DLR_1)_: -+1 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_1) -<= 1000 - -c_u_SinkDSMDLRInvestmentBlock_overall_dsm_maximum(sink_dsm_DLR_2)_: -+1 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_2) -<= 1000 - -c_l_SinkDSMDLRInvestmentBlock_overall_minimum(sink_dsm_DLR)_: -+1 SinkDSMDLRInvestmentBlock_total(sink_dsm_DLR_2) ->= 200 - -bounds - 0 <= InvestmentFlowBlock_invest(Source_Bus1_0) <= +inf - 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_balance_dsm_up(sink_dsm_DLR_1_0) <= +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_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 <= 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_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(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_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_end(sink_dsm_DLR_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_end(sink_dsm_DLR_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_old_end(sink_dsm_DLR_2) <= +inf - 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 - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_do_level(sink_dsm_DLR_5) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_0) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_1) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_2) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_3) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_4) <= +inf - 0 <= SinkDSMDLRInvestmentBlock_dsm_up_level(sink_dsm_DLR_5) <= +inf -end diff --git a/tests/lp_files/periodical_investment_limit_with_dsm_oemof.lp b/tests/lp_files/periodical_investment_limit_with_dsm_oemof.lp deleted file mode 100644 index 342026442..000000000 --- a/tests/lp_files/periodical_investment_limit_with_dsm_oemof.lp +++ /dev/null @@ -1,454 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+8.230422488026955 InvestmentFlowBlock_invest(Source_Bus1_0) -+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_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) - -s.t. - -c_u_investment_limit_per_period(0)_: -+8.230422488026955 InvestmentFlowBlock_invest(Source_Bus1_0) -+99.99999999999999 SinkDSMOemofInvestmentBlock_invest(sink_dsm_oemof_0) -<= 400 - -c_u_investment_limit_per_period(1)_: -+5.432444590842506 InvestmentFlowBlock_invest(Source_Bus1_1) -+98.03921568627449 SinkDSMOemofInvestmentBlock_invest(sink_dsm_oemof_1) -<= 300 - -c_u_investment_limit_per_period(2)_: -+2.6893290053675805 InvestmentFlowBlock_invest(Source_Bus1_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) -= 0 - -c_e_BusBlock_balance(Bus1_0_1)_: -+1 flow(Source_Bus1_0_1) --1 flow(Bus1_sink_dsm_oemof_0_1) -= 0 - -c_e_BusBlock_balance(Bus1_1_2)_: -+1 flow(Source_Bus1_1_2) --1 flow(Bus1_sink_dsm_oemof_1_2) -= 0 - -c_e_BusBlock_balance(Bus1_1_3)_: -+1 flow(Source_Bus1_1_3) --1 flow(Bus1_sink_dsm_oemof_1_3) -= 0 - -c_e_BusBlock_balance(Bus1_2_4)_: -+1 flow(Source_Bus1_2_4) --1 flow(Bus1_sink_dsm_oemof_2_4) -= 0 - -c_e_BusBlock_balance(Bus1_2_5)_: -+1 flow(Source_Bus1_2_5) --1 flow(Bus1_sink_dsm_oemof_2_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_old_rule_end(Source_Bus1_0)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_1)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(Source_Bus1_2)_: -+1 InvestmentFlowBlock_old_end(Source_Bus1_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(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) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(Source_Bus1_2)_: -+1 InvestmentFlowBlock_old_exo(Source_Bus1_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_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(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_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_SinkDSMOemofInvestmentBlock_total_dsm_rule(sink_dsm_oemof_0)_: --1 SinkDSMOemofInvestmentBlock_invest(sink_dsm_oemof_0) -+1 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_0) -= 50 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(sink_dsm_oemof_1)_: --1 SinkDSMOemofInvestmentBlock_invest(sink_dsm_oemof_1) --1 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_0) -+1 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_1) -+1 SinkDSMOemofInvestmentBlock_old(sink_dsm_oemof_1) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_total_dsm_rule(sink_dsm_oemof_2)_: --1 SinkDSMOemofInvestmentBlock_invest(sink_dsm_oemof_2) --1 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_1) -+1 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_2) -+1 SinkDSMOemofInvestmentBlock_old(sink_dsm_oemof_2) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_end(sink_dsm_oemof_0)_: -+1 SinkDSMOemofInvestmentBlock_old_end(sink_dsm_oemof_0) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_end(sink_dsm_oemof_1)_: -+1 SinkDSMOemofInvestmentBlock_old_end(sink_dsm_oemof_1) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_end(sink_dsm_oemof_2)_: --1 SinkDSMOemofInvestmentBlock_invest(sink_dsm_oemof_0) -+1 SinkDSMOemofInvestmentBlock_old_end(sink_dsm_oemof_2) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(sink_dsm_oemof_0)_: -+1 SinkDSMOemofInvestmentBlock_old_exo(sink_dsm_oemof_0) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(sink_dsm_oemof_1)_: -+1 SinkDSMOemofInvestmentBlock_old_exo(sink_dsm_oemof_1) -= 50 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule_exo(sink_dsm_oemof_2)_: -+1 SinkDSMOemofInvestmentBlock_old_exo(sink_dsm_oemof_2) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(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)_: -+1 SinkDSMOemofInvestmentBlock_old(sink_dsm_oemof_1) --1 SinkDSMOemofInvestmentBlock_old_end(sink_dsm_oemof_1) --1 SinkDSMOemofInvestmentBlock_old_exo(sink_dsm_oemof_1) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_old_dsm_rule(sink_dsm_oemof_2)_: -+1 SinkDSMOemofInvestmentBlock_old(sink_dsm_oemof_2) --1 SinkDSMOemofInvestmentBlock_old_end(sink_dsm_oemof_2) --1 SinkDSMOemofInvestmentBlock_old_exo(sink_dsm_oemof_2) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_shift_shed_vars(sink_dsm_oemof_0)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_0) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_shift_shed_vars(sink_dsm_oemof_1)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_1) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_shift_shed_vars(sink_dsm_oemof_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_2) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_shift_shed_vars(sink_dsm_oemof_3)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_3) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_shift_shed_vars(sink_dsm_oemof_4)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_4) -= 0 - -c_e_SinkDSMOemofInvestmentBlock_shift_shed_vars(sink_dsm_oemof_5)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_5) -= 0 - -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 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_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_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_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_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_do_shed(sink_dsm_oemof_5) -= 1 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(sink_dsm_oemof_0_0)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_0) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(sink_dsm_oemof_0_1)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_1) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(sink_dsm_oemof_1_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_2) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(sink_dsm_oemof_1_3)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_3) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(sink_dsm_oemof_2_4)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_4) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_2) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_up_constraint(sink_dsm_oemof_2_5)_: -+1 SinkDSMOemofInvestmentBlock_dsm_up(sink_dsm_oemof_5) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_2) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(sink_dsm_oemof_0_0)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_0) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_0) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_0) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(sink_dsm_oemof_0_1)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_1) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_0) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_1) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(sink_dsm_oemof_1_2)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_2) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_1) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_2) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(sink_dsm_oemof_1_3)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_3) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_1) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_3) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(sink_dsm_oemof_2_4)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_4) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_2) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_4) -<= 0 - -c_u_SinkDSMOemofInvestmentBlock_dsm_down_constraint(sink_dsm_oemof_2_5)_: -+1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_5) --0.5 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_2) -+1 SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_5) -<= 0 - -c_e_SinkDSMOemofInvestmentBlock_dsm_sum_constraint(sink_dsm_oemof_0)_: --1 SinkDSMOemofInvestmentBlock_dsm_do_shift(sink_dsm_oemof_0) -+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) -= 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) -= 0 - -c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(sink_dsm_oemof_0)_: -+1 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_0) -<= 1000 - -c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(sink_dsm_oemof_1)_: -+1 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_1) -<= 1000 - -c_u_SinkDSMOemofInvestmentBlock_overall_dsm_maximum(sink_dsm_oemof_2)_: -+1 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_2) -<= 1000 - -c_l_SinkDSMOemofInvestmentBlock_overall_minimum(sink_dsm_oemof)_: -+1 SinkDSMOemofInvestmentBlock_total(sink_dsm_oemof_2) ->= 200 - -bounds - 0 <= InvestmentFlowBlock_invest(Source_Bus1_0) <= +inf - 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_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 <= 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_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(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_2) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_end(sink_dsm_oemof_0) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_end(sink_dsm_oemof_1) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_old_end(sink_dsm_oemof_2) <= +inf - 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 - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_3) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_4) <= +inf - 0 <= SinkDSMOemofInvestmentBlock_dsm_do_shed(sink_dsm_oemof_5) <= +inf -end diff --git a/tests/lp_files/piecewise_linear_converter_cc.lp b/tests/lp_files/piecewise_linear_converter_cc.lp deleted file mode 100644 index 22fbcc463..000000000 --- a/tests/lp_files/piecewise_linear_converter_cc.lp +++ /dev/null @@ -1,295 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -1 flow(gasBus_pwltf_0_0) -1 flow(gasBus_pwltf_0_1) -1 flow(gasBus_pwltf_0_2) - -s.t. - -c_e_BusBlock_balance(gasBus_0_0)_: -1 flow(gasBus_pwltf_0_0) -= 0 - -c_e_BusBlock_balance(gasBus_0_1)_: -1 flow(gasBus_pwltf_0_1) -= 0 - -c_e_BusBlock_balance(gasBus_0_2)_: -1 flow(gasBus_pwltf_0_2) -= 0 - -c_e_BusBlock_balance(electricityBus_0_0)_: -1 flow(pwltf_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -1 flow(pwltf_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -1 flow(pwltf_electricityBus_0_2) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0_0)_: --1 flow(gasBus_pwltf_0_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) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0_2)_: --1 flow(gasBus_pwltf_0_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) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0_1)_: --1 flow(pwltf_electricityBus_0_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) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint1_: -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) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint2_: -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) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(5) -= 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 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint4(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_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_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_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_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 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint1_: -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) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint2_: -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) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(5) -= 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 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint4(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_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_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_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_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 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint1_: -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) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint2_: -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) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(5) -= 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 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint4(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_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_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_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_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 - -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 -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) -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 deleted file mode 100644 index 7a0acc0bc..000000000 --- a/tests/lp_files/piecewise_linear_converter_cc_multi_period.lp +++ /dev/null @@ -1,580 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_pwltf_0_0) -= 0 - -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_pwltf_0_1) -= 0 - -c_e_BusBlock_balance(gasBus_1_2)_: -+1 flow(gasBus_pwltf_1_2) -= 0 - -c_e_BusBlock_balance(gasBus_1_3)_: -+1 flow(gasBus_pwltf_1_3) -= 0 - -c_e_BusBlock_balance(gasBus_2_4)_: -+1 flow(gasBus_pwltf_2_4) -= 0 - -c_e_BusBlock_balance(gasBus_2_5)_: -+1 flow(gasBus_pwltf_2_5) -= 0 - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(pwltf_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(pwltf_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(pwltf_electricityBus_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(pwltf_electricityBus_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(pwltf_electricityBus_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(pwltf_electricityBus_2_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0_0)_: --1 flow(gasBus_pwltf_0_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) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_1_2)_: --1 flow(gasBus_pwltf_1_2) -+1 PiecewiseLinearConverterBlock_inflow(pwltf_2) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_1_3)_: --1 flow(gasBus_pwltf_1_3) -+1 PiecewiseLinearConverterBlock_inflow(pwltf_3) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_2_4)_: --1 flow(gasBus_pwltf_2_4) -+1 PiecewiseLinearConverterBlock_inflow(pwltf_4) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_2_5)_: --1 flow(gasBus_pwltf_2_5) -+1 PiecewiseLinearConverterBlock_inflow(pwltf_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0_0)_: --1 flow(pwltf_electricityBus_0_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) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_1_2)_: --1 flow(pwltf_electricityBus_1_2) -+1 PiecewiseLinearConverterBlock_outflow(pwltf_2) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_1_3)_: --1 flow(pwltf_electricityBus_1_3) -+1 PiecewiseLinearConverterBlock_outflow(pwltf_3) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_2_4)_: --1 flow(pwltf_electricityBus_2_4) -+1 PiecewiseLinearConverterBlock_outflow(pwltf_4) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_2_5)_: --1 flow(pwltf_electricityBus_2_5) -+1 PiecewiseLinearConverterBlock_outflow(pwltf_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint1_: -+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) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint2_: -+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) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_lambda(5) -= 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 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_CC_constraint4(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_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_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_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_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 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint1_: -+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) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint2_: -+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) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_lambda(5) -= 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 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_CC_constraint4(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_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_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_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_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 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint1_: -+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) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint2_: -+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) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_lambda(5) -= 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 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_CC_constraint4(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_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_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_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_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 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_constraint1_: -+1 PiecewiseLinearConverterBlock_inflow(pwltf_3) --25 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(2) --50 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(3) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(4) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_constraint2_: -+1 PiecewiseLinearConverterBlock_outflow(pwltf_3) --625 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(2) --2500 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(3) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(4) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_constraint3_: -+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)_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(1) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(1) -<= 0 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_constraint4(2)_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(2) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(1) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(2) -<= 0 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_constraint4(3)_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(3) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(2) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(3) -<= 0 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_constraint4(4)_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(4) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(3) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(4) -<= 0 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_constraint4(5)_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_lambda(5) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(4) -<= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_constraint5_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(1) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(2) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(3) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(4) -= 1 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_constraint1_: -+1 PiecewiseLinearConverterBlock_inflow(pwltf_4) --25 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(2) --50 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(3) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(4) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_constraint2_: -+1 PiecewiseLinearConverterBlock_outflow(pwltf_4) --625 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(2) --2500 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(3) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(4) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_constraint3_: -+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)_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(1) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(1) -<= 0 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_constraint4(2)_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(2) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(1) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(2) -<= 0 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_constraint4(3)_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(3) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(2) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(3) -<= 0 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_constraint4(4)_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(4) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(3) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(4) -<= 0 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_constraint4(5)_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_lambda(5) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(4) -<= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_constraint5_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(1) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(2) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(3) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(4) -= 1 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_constraint1_: -+1 PiecewiseLinearConverterBlock_inflow(pwltf_5) --25 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(2) --50 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(3) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(4) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_constraint2_: -+1 PiecewiseLinearConverterBlock_outflow(pwltf_5) --625 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(2) --2500 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(3) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(4) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_constraint3_: -+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)_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(1) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(1) -<= 0 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_constraint4(2)_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(2) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(1) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(2) -<= 0 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_constraint4(3)_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(3) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(2) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(3) -<= 0 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_constraint4(4)_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(4) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(3) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(4) -<= 0 - -c_u_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_constraint4(5)_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_lambda(5) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(4) -<= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_constraint5_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(1) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(2) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(3) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(4) -= 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 <= PiecewiseLinearConverterBlock_inflow(pwltf_0) <= 100 - 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_1) <= 100 - 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_2) <= 100 - 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_3) <= 100 - 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_4) <= 100 - 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_5) <= 100 - 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_0) <= 10000 - 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_1) <= 10000 - 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_2) <= 10000 - 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(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 <= 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(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(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 - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_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_3)_CC_bin_y(1) - PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(2) - PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(3) - PiecewiseLinearConverterBlock_piecewise(pwltf_3)_CC_bin_y(4) - PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(1) - PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(2) - PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(3) - PiecewiseLinearConverterBlock_piecewise(pwltf_4)_CC_bin_y(4) - PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(1) - PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(2) - PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(3) - PiecewiseLinearConverterBlock_piecewise(pwltf_5)_CC_bin_y(4) -end diff --git a/tests/lp_files/piecewise_linear_converter_dcc.lp b/tests/lp_files/piecewise_linear_converter_dcc.lp deleted file mode 100644 index 70ece2d09..000000000 --- a/tests/lp_files/piecewise_linear_converter_dcc.lp +++ /dev/null @@ -1,286 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -1 flow(gasBus_pwltf_0_0) -1 flow(gasBus_pwltf_0_1) -1 flow(gasBus_pwltf_0_2) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -1 flow(pwltf_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -1 flow(pwltf_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -1 flow(pwltf_electricityBus_0_2) -= 0 - -c_e_BusBlock_balance(gasBus_0_0)_: -1 flow(gasBus_pwltf_0_0) -= 0 - -c_e_BusBlock_balance(gasBus_0_1)_: -1 flow(gasBus_pwltf_0_1) -= 0 - -c_e_BusBlock_balance(gasBus_0_2)_: -1 flow(gasBus_pwltf_0_2) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0_0)_: --1 flow(gasBus_pwltf_0_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) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0_2)_: --1 flow(gasBus_pwltf_0_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) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0_1)_: --1 flow(pwltf_electricityBus_0_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) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_constraint1_: -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) --50 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(3_3) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(3_4) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(4_4) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(4_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_constraint2_: -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) --2500 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(3_3) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(3_4) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(4_4) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(4_5) -= 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) -= 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) -= 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) -= 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) -= 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 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_constraint1_: -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) --50 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(3_3) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(3_4) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(4_4) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(4_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_constraint2_: -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) --2500 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(3_3) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(3_4) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(4_4) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(4_5) -= 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) -= 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) -= 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) -= 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) -= 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 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_constraint1_: -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) --50 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(3_3) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(3_4) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(4_4) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(4_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_constraint2_: -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) --2500 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(3_3) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(3_4) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(4_4) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(4_5) -= 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) -= 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) -= 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) -= 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) -= 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 - -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 -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) -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 deleted file mode 100644 index b724b869c..000000000 --- a/tests/lp_files/piecewise_linear_converter_dcc_multi_period.lp +++ /dev/null @@ -1,562 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(gasBus_0_0)_: -+1 flow(gasBus_pwltf_0_0) -= 0 - -c_e_BusBlock_balance(gasBus_0_1)_: -+1 flow(gasBus_pwltf_0_1) -= 0 - -c_e_BusBlock_balance(gasBus_1_2)_: -+1 flow(gasBus_pwltf_1_2) -= 0 - -c_e_BusBlock_balance(gasBus_1_3)_: -+1 flow(gasBus_pwltf_1_3) -= 0 - -c_e_BusBlock_balance(gasBus_2_4)_: -+1 flow(gasBus_pwltf_2_4) -= 0 - -c_e_BusBlock_balance(gasBus_2_5)_: -+1 flow(gasBus_pwltf_2_5) -= 0 - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(pwltf_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(pwltf_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(pwltf_electricityBus_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(pwltf_electricityBus_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(pwltf_electricityBus_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(pwltf_electricityBus_2_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_0_0)_: --1 flow(gasBus_pwltf_0_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) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_1_2)_: --1 flow(gasBus_pwltf_1_2) -+1 PiecewiseLinearConverterBlock_inflow(pwltf_2) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_1_3)_: --1 flow(gasBus_pwltf_1_3) -+1 PiecewiseLinearConverterBlock_inflow(pwltf_3) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_2_4)_: --1 flow(gasBus_pwltf_2_4) -+1 PiecewiseLinearConverterBlock_inflow(pwltf_4) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_in(pwltf_2_5)_: --1 flow(gasBus_pwltf_2_5) -+1 PiecewiseLinearConverterBlock_inflow(pwltf_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_0_0)_: --1 flow(pwltf_electricityBus_0_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) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_1_2)_: --1 flow(pwltf_electricityBus_1_2) -+1 PiecewiseLinearConverterBlock_outflow(pwltf_2) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_1_3)_: --1 flow(pwltf_electricityBus_1_3) -+1 PiecewiseLinearConverterBlock_outflow(pwltf_3) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_2_4)_: --1 flow(pwltf_electricityBus_2_4) -+1 PiecewiseLinearConverterBlock_outflow(pwltf_4) -= 0 - -c_e_PiecewiseLinearConverterBlock_equate_out(pwltf_2_5)_: --1 flow(pwltf_electricityBus_2_5) -+1 PiecewiseLinearConverterBlock_outflow(pwltf_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_constraint1_: -+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) --50 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(3_3) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(3_4) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(4_4) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(4_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_constraint2_: -+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) --2500 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(3_3) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(3_4) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(4_4) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_0)_DCC_lambda(4_5) -= 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) -= 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) -= 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) -= 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) -= 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 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_constraint1_: -+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) --50 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(3_3) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(3_4) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(4_4) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(4_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_constraint2_: -+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) --2500 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(3_3) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(3_4) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(4_4) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_1)_DCC_lambda(4_5) -= 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) -= 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) -= 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) -= 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) -= 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 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_constraint1_: -+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) --50 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(3_3) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(3_4) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(4_4) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(4_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_constraint2_: -+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) --2500 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(3_3) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(3_4) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(4_4) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_2)_DCC_lambda(4_5) -= 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) -= 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) -= 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) -= 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) -= 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 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_constraint1_: -+1 PiecewiseLinearConverterBlock_inflow(pwltf_3) --25 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(1_2) --25 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(2_2) --50 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(2_3) --50 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(3_3) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(3_4) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(4_4) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(4_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_constraint2_: -+1 PiecewiseLinearConverterBlock_outflow(pwltf_3) --625 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(1_2) --625 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(2_2) --2500 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(2_3) --2500 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(3_3) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(3_4) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(4_4) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(4_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_constraint3(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)_: --1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(2_2) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(2_3) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_bin_y(2) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_constraint3(3)_: --1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(3_3) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(3_4) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_bin_y(3) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_constraint3(4)_: --1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(4_4) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(4_5) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_bin_y(4) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_constraint4_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_bin_y(1) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_bin_y(2) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_bin_y(3) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_bin_y(4) -= 1 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_constraint1_: -+1 PiecewiseLinearConverterBlock_inflow(pwltf_4) --25 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(1_2) --25 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(2_2) --50 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(2_3) --50 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(3_3) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(3_4) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(4_4) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(4_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_constraint2_: -+1 PiecewiseLinearConverterBlock_outflow(pwltf_4) --625 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(1_2) --625 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(2_2) --2500 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(2_3) --2500 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(3_3) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(3_4) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(4_4) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(4_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_constraint3(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)_: --1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(2_2) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(2_3) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_bin_y(2) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_constraint3(3)_: --1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(3_3) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(3_4) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_bin_y(3) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_constraint3(4)_: --1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(4_4) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(4_5) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_bin_y(4) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_constraint4_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_bin_y(1) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_bin_y(2) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_bin_y(3) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_bin_y(4) -= 1 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_constraint1_: -+1 PiecewiseLinearConverterBlock_inflow(pwltf_5) --25 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(1_2) --25 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(2_2) --50 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(2_3) --50 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(3_3) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(3_4) --75 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(4_4) --100 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(4_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_constraint2_: -+1 PiecewiseLinearConverterBlock_outflow(pwltf_5) --625 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(1_2) --625 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(2_2) --2500 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(2_3) --2500 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(3_3) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(3_4) --5625 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(4_4) --10000 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(4_5) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_constraint3(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)_: --1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(2_2) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(2_3) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_bin_y(2) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_constraint3(3)_: --1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(3_3) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(3_4) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_bin_y(3) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_constraint3(4)_: --1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(4_4) --1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(4_5) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_bin_y(4) -= 0 - -c_e_PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_constraint4_: -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_bin_y(1) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_bin_y(2) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_bin_y(3) -+1 PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_bin_y(4) -= 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 <= PiecewiseLinearConverterBlock_inflow(pwltf_0) <= 100 - 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_1) <= 100 - 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_2) <= 100 - 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_3) <= 100 - 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_4) <= 100 - 0 <= PiecewiseLinearConverterBlock_inflow(pwltf_5) <= 100 - 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_0) <= 10000 - 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_1) <= 10000 - 0 <= PiecewiseLinearConverterBlock_outflow(pwltf_2) <= 10000 - 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_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 <= 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 - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(3_3) <= +inf - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_lambda(3_4) <= +inf - 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_2) <= +inf - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(2_2) <= +inf - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(2_3) <= +inf - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(3_3) <= +inf - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_lambda(3_4) <= +inf - 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_2) <= +inf - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(2_2) <= +inf - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(2_3) <= +inf - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(3_3) <= +inf - 0 <= PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_lambda(3_4) <= +inf - 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 -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_3)_DCC_bin_y(1) - PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_bin_y(2) - PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_bin_y(3) - PiecewiseLinearConverterBlock_piecewise(pwltf_3)_DCC_bin_y(4) - PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_bin_y(1) - PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_bin_y(2) - PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_bin_y(3) - PiecewiseLinearConverterBlock_piecewise(pwltf_4)_DCC_bin_y(4) - PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_bin_y(1) - PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_bin_y(2) - PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_bin_y(3) - PiecewiseLinearConverterBlock_piecewise(pwltf_5)_DCC_bin_y(4) -end diff --git a/tests/lp_files/shared_limit.lp b/tests/lp_files/shared_limit.lp deleted file mode 100644 index 0ff745a60..000000000 --- a/tests/lp_files/shared_limit.lp +++ /dev/null @@ -1,125 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+0 ONE_VAR_CONSTANT - -s.t. - -c_e_limit_storage_constraint(0)_: -+0.5 GenericStorageBlock_storage_content(storage1_0) -+1.25 GenericStorageBlock_storage_content(storage2_0) --1 limit_storage(0) -= 0 - -c_e_limit_storage_constraint(1)_: -+0.5 GenericStorageBlock_storage_content(storage1_1) -+1.25 GenericStorageBlock_storage_content(storage2_1) --1 limit_storage(1) -= 0 - -c_e_limit_storage_constraint(2)_: -+0.5 GenericStorageBlock_storage_content(storage1_2) -+1.25 GenericStorageBlock_storage_content(storage2_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) -= 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) -= 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) -= 0 - -c_e_GenericStorageBlock_balance(storage1_0_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) -= 0 - -c_e_GenericStorageBlock_balance(storage1_0_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) -= 0 - -c_e_GenericStorageBlock_balance(storage1_0_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) -= 0 - -c_e_GenericStorageBlock_balance(storage2_0_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) -= 0 - -c_e_GenericStorageBlock_balance(storage2_0_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) -= 0 - -c_e_GenericStorageBlock_balance(storage2_0_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) -= 0 - -c_e_GenericStorageBlock_balanced_cstr(storage1)_: --1 GenericStorageBlock_storage_content(storage1_0) -+1 GenericStorageBlock_storage_content(storage1_3) -= 0 - -c_e_GenericStorageBlock_balanced_cstr(storage2)_: --1 GenericStorageBlock_storage_content(storage2_0) -+1 GenericStorageBlock_storage_content(storage2_3) -= 0 - -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_3) <= 5 -end diff --git a/tests/lp_files/shared_limit_multi_period.lp b/tests/lp_files/shared_limit_multi_period.lp deleted file mode 100644 index 6bdd7fa17..000000000 --- a/tests/lp_files/shared_limit_multi_period.lp +++ /dev/null @@ -1,227 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+0.0 ONE_VAR_CONSTANT - -s.t. - -c_e_limit_storage_constraint(0)_: -+0.5 GenericStorageBlock_storage_content(storage1_0) -+1.25 GenericStorageBlock_storage_content(storage2_0) --1 limit_storage(0) -= 0 - -c_e_limit_storage_constraint(1)_: -+0.5 GenericStorageBlock_storage_content(storage1_1) -+1.25 GenericStorageBlock_storage_content(storage2_1) --1 limit_storage(1) -= 0 - -c_e_limit_storage_constraint(2)_: -+0.5 GenericStorageBlock_storage_content(storage1_2) -+1.25 GenericStorageBlock_storage_content(storage2_2) --1 limit_storage(2) -= 0 - -c_e_limit_storage_constraint(3)_: -+0.5 GenericStorageBlock_storage_content(storage1_3) -+1.25 GenericStorageBlock_storage_content(storage2_3) --1 limit_storage(3) -= 0 - -c_e_limit_storage_constraint(4)_: -+0.5 GenericStorageBlock_storage_content(storage1_4) -+1.25 GenericStorageBlock_storage_content(storage2_4) --1 limit_storage(4) -= 0 - -c_e_limit_storage_constraint(5)_: -+0.5 GenericStorageBlock_storage_content(storage1_5) -+1.25 GenericStorageBlock_storage_content(storage2_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) -= 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) -= 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) -= 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) -= 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) -= 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) -= 0 - -c_e_GenericStorageBlock_balance(storage1_0_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) -= 0 - -c_e_GenericStorageBlock_balance(storage1_0_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) -= 0 - -c_e_GenericStorageBlock_balance(storage1_1_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) -= 0 - -c_e_GenericStorageBlock_balance(storage1_1_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) -= 0 - -c_e_GenericStorageBlock_balance(storage1_2_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) -= 0 - -c_e_GenericStorageBlock_balance(storage1_2_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) -= 0 - -c_e_GenericStorageBlock_balance(storage2_0_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) -= 0 - -c_e_GenericStorageBlock_balance(storage2_0_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) -= 0 - -c_e_GenericStorageBlock_balance(storage2_1_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) -= 0 - -c_e_GenericStorageBlock_balance(storage2_1_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) -= 0 - -c_e_GenericStorageBlock_balance(storage2_2_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) -= 0 - -c_e_GenericStorageBlock_balance(storage2_2_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) -= 0 - -c_e_GenericStorageBlock_balanced_cstr(storage1)_: --1 GenericStorageBlock_storage_content(storage1_0) -+1 GenericStorageBlock_storage_content(storage1_6) -= 0 - -c_e_GenericStorageBlock_balanced_cstr(storage2)_: --1 GenericStorageBlock_storage_content(storage2_0) -+1 GenericStorageBlock_storage_content(storage2_6) -= 0 - -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_6) <= 5 -end diff --git a/tests/lp_files/source_with_gradient.lp b/tests/lp_files/source_with_gradient.lp deleted file mode 100644 index 75f93f31b..000000000 --- a/tests/lp_files/source_with_gradient.lp +++ /dev/null @@ -1,65 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+23 flow(powerplant_electricityBus_0_0) -+23 flow(powerplant_electricityBus_0_1) -+23 flow(powerplant_electricityBus_0_2) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplant_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplant_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(powerplant_electricityBus_0_2) -= 0 - -c_e_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_0_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) --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) --1 SimpleFlowBlock_positive_gradient(powerplant_electricityBus_2) -<= 0 - -c_e_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_0_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) --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) --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 <= 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 - 0 <= SimpleFlowBlock_negative_gradient(powerplant_electricityBus_0) <= 49.95 - 0 <= SimpleFlowBlock_negative_gradient(powerplant_electricityBus_1) <= 49.95 - 0 <= SimpleFlowBlock_negative_gradient(powerplant_electricityBus_2) <= 49.95 -end diff --git a/tests/lp_files/source_with_gradient_multi_period.lp b/tests/lp_files/source_with_gradient_multi_period.lp deleted file mode 100644 index 5ff719ac8..000000000 --- a/tests/lp_files/source_with_gradient_multi_period.lp +++ /dev/null @@ -1,125 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplant_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplant_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(powerplant_electricityBus_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(powerplant_electricityBus_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(powerplant_electricityBus_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(powerplant_electricityBus_2_5) -= 0 - -c_e_SimpleFlowBlock_positive_gradient_constr(powerplant_electricityBus_0_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) --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) --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) --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) --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) --1 SimpleFlowBlock_positive_gradient(powerplant_electricityBus_5) -<= 0 - -c_e_SimpleFlowBlock_negative_gradient_constr(powerplant_electricityBus_0_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) --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) --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) --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) --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) --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 <= 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 - 0 <= SimpleFlowBlock_positive_gradient(powerplant_electricityBus_3) <= 29.97 - 0 <= SimpleFlowBlock_positive_gradient(powerplant_electricityBus_4) <= 29.97 - 0 <= SimpleFlowBlock_positive_gradient(powerplant_electricityBus_5) <= 29.97 - 0 <= SimpleFlowBlock_negative_gradient(powerplant_electricityBus_0) <= 49.95 - 0 <= SimpleFlowBlock_negative_gradient(powerplant_electricityBus_1) <= 49.95 - 0 <= SimpleFlowBlock_negative_gradient(powerplant_electricityBus_2) <= 49.95 - 0 <= SimpleFlowBlock_negative_gradient(powerplant_electricityBus_3) <= 49.95 - 0 <= SimpleFlowBlock_negative_gradient(powerplant_electricityBus_4) <= 49.95 - 0 <= SimpleFlowBlock_negative_gradient(powerplant_electricityBus_5) <= 49.95 -end diff --git a/tests/lp_files/source_with_nonconvex_gradient.lp b/tests/lp_files/source_with_nonconvex_gradient.lp deleted file mode 100644 index 5e38b5ed7..000000000 --- a/tests/lp_files/source_with_nonconvex_gradient.lp +++ /dev/null @@ -1,125 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+23 flow(powerplant_electricityBus_0_0) -+23 flow(powerplant_electricityBus_0_1) -+23 flow(powerplant_electricityBus_0_2) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplant_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplant_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(powerplant_electricityBus_0_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(powerplant_electricityBus_0)_: -+1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_0) --999 NonConvexFlowBlock_status(powerplant_electricityBus_0) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(powerplant_electricityBus_1)_: -+1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_1) --999 NonConvexFlowBlock_status(powerplant_electricityBus_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(powerplant_electricityBus_2)_: -+1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_2) --999 NonConvexFlowBlock_status(powerplant_electricityBus_2) -= 0 - -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_0_0)_: --1 flow(powerplant_electricityBus_0_0) -<= 0 - -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_0_1)_: --1 flow(powerplant_electricityBus_0_1) -<= 0 - -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_0_2)_: --1 flow(powerplant_electricityBus_0_2) -<= 0 - -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_0_0)_: -+1 flow(powerplant_electricityBus_0_0) --1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_0) -<= 0 - -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_0_1)_: -+1 flow(powerplant_electricityBus_0_1) --1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_1) -<= 0 - -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_0_2)_: -+1 flow(powerplant_electricityBus_0_2) --1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_2) -<= 0 - -c_e_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_0_0)_: -+1 NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_0) -= 0 - -c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_0_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) -] -<= 0 - -c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_0_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) -] -<= 0 - -c_e_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_0_0)_: -+1 NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_0) -= 0 - -c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_0_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) -] -<= 0 - -c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_0_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) -] -<= 0 - -bounds - 0 <= flow(powerplant_electricityBus_0_0) <= 999 - 0 <= flow(powerplant_electricityBus_0_1) <= 999 - 0 <= flow(powerplant_electricityBus_0_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_2) <= 1 - 0 <= NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_0) <= +inf - 0 <= NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_1) <= +inf - 0 <= NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_2) <= +inf - 0 <= NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_0) <= +inf - 0 <= NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_1) <= +inf - 0 <= NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_2) <= +inf -binary - NonConvexFlowBlock_status(powerplant_electricityBus_0) - NonConvexFlowBlock_status(powerplant_electricityBus_1) - NonConvexFlowBlock_status(powerplant_electricityBus_2) -end diff --git a/tests/lp_files/source_with_nonconvex_gradient_multi_period.lp b/tests/lp_files/source_with_nonconvex_gradient_multi_period.lp deleted file mode 100644 index 68eac0154..000000000 --- a/tests/lp_files/source_with_nonconvex_gradient_multi_period.lp +++ /dev/null @@ -1,248 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(powerplant_electricityBus_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(powerplant_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(powerplant_electricityBus_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(powerplant_electricityBus_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(powerplant_electricityBus_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(powerplant_electricityBus_2_5) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(powerplant_electricityBus_0)_: -+1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_0) --999 NonConvexFlowBlock_status(powerplant_electricityBus_0) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(powerplant_electricityBus_1)_: -+1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_1) --999 NonConvexFlowBlock_status(powerplant_electricityBus_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(powerplant_electricityBus_2)_: -+1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_2) --999 NonConvexFlowBlock_status(powerplant_electricityBus_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(powerplant_electricityBus_3)_: -+1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_3) --999 NonConvexFlowBlock_status(powerplant_electricityBus_3) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(powerplant_electricityBus_4)_: -+1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_4) --999 NonConvexFlowBlock_status(powerplant_electricityBus_4) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(powerplant_electricityBus_5)_: -+1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_5) --999 NonConvexFlowBlock_status(powerplant_electricityBus_5) -= 0 - -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_0_0)_: --1 flow(powerplant_electricityBus_0_0) -<= 0 - -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_0_1)_: --1 flow(powerplant_electricityBus_0_1) -<= 0 - -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_1_2)_: --1 flow(powerplant_electricityBus_1_2) -<= 0 - -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_1_3)_: --1 flow(powerplant_electricityBus_1_3) -<= 0 - -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_2_4)_: --1 flow(powerplant_electricityBus_2_4) -<= 0 - -c_u_NonConvexFlowBlock_min(powerplant_electricityBus_2_5)_: --1 flow(powerplant_electricityBus_2_5) -<= 0 - -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_0_0)_: -+1 flow(powerplant_electricityBus_0_0) --1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_0) -<= 0 - -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_0_1)_: -+1 flow(powerplant_electricityBus_0_1) --1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_1) -<= 0 - -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_1_2)_: -+1 flow(powerplant_electricityBus_1_2) --1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_2) -<= 0 - -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_1_3)_: -+1 flow(powerplant_electricityBus_1_3) --1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_3) -<= 0 - -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_2_4)_: -+1 flow(powerplant_electricityBus_2_4) --1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_4) -<= 0 - -c_u_NonConvexFlowBlock_max(powerplant_electricityBus_2_5)_: -+1 flow(powerplant_electricityBus_2_5) --1 NonConvexFlowBlock_status_nominal(powerplant_electricityBus_5) -<= 0 - -c_e_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_0_0)_: -+1 NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_0) -= 0 - -c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_0_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) -] -<= 0 - -c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_1_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) -] -<= 0 - -c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_1_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) -] -<= 0 - -c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_2_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) -] -<= 0 - -c_u_NonConvexFlowBlock_positive_gradient_constr(powerplant_electricityBus_2_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) -] -<= 0 - -c_e_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_0_0)_: -+1 NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_0) -= 0 - -c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_0_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) -] -<= 0 - -c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_1_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) -] -<= 0 - -c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_1_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) -] -<= 0 - -c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_2_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) -] -<= 0 - -c_u_NonConvexFlowBlock_negative_gradient_constr(powerplant_electricityBus_2_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) -] -<= 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 <= 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_5) <= 1 - 0 <= NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_0) <= +inf - 0 <= NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_1) <= +inf - 0 <= NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_2) <= +inf - 0 <= NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_3) <= +inf - 0 <= NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_4) <= +inf - 0 <= NonConvexFlowBlock_positive_gradient(powerplant_electricityBus_5) <= +inf - 0 <= NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_0) <= +inf - 0 <= NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_1) <= +inf - 0 <= NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_2) <= +inf - 0 <= NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_3) <= +inf - 0 <= NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_4) <= +inf - 0 <= NonConvexFlowBlock_negative_gradient(powerplant_electricityBus_5) <= +inf -binary - NonConvexFlowBlock_status(powerplant_electricityBus_0) - NonConvexFlowBlock_status(powerplant_electricityBus_1) - NonConvexFlowBlock_status(powerplant_electricityBus_2) - NonConvexFlowBlock_status(powerplant_electricityBus_3) - NonConvexFlowBlock_status(powerplant_electricityBus_4) - NonConvexFlowBlock_status(powerplant_electricityBus_5) -end diff --git a/tests/lp_files/storage.lp b/tests/lp_files/storage.lp deleted file mode 100644 index 073f266b7..000000000 --- a/tests/lp_files/storage.lp +++ /dev/null @@ -1,68 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+4000.0 ONE_VAR_CONSTANT -+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) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_no_invest_0_1) -+1 flow(storage_no_invest_electricityBus_0_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) -= 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) -+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) --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) --0.87 GenericStorageBlock_storage_content(storage_no_invest_2) -+1 GenericStorageBlock_storage_content(storage_no_invest_3) -= 0 - -c_e_GenericStorageBlock_balanced_cstr(storage_no_invest)_: -+1 GenericStorageBlock_storage_content(storage_no_invest_3) -= 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 - 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 -end diff --git a/tests/lp_files/storage_fixed_losses.lp b/tests/lp_files/storage_fixed_losses.lp deleted file mode 100644 index ca4def3ee..000000000 --- a/tests/lp_files/storage_fixed_losses.lp +++ /dev/null @@ -1,63 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -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) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_no_invest_0_1) -+1 flow(storage_no_invest_electricityBus_0_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) -= 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) -+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) --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) --0.87 GenericStorageBlock_storage_content(storage_no_invest_2) -+1 GenericStorageBlock_storage_content(storage_no_invest_3) -= -1003.0 - -c_e_GenericStorageBlock_balanced_cstr(storage_no_invest)_: -+1 GenericStorageBlock_storage_content(storage_no_invest_3) -= 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.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 -end diff --git a/tests/lp_files/storage_fixed_losses_multi_period.lp b/tests/lp_files/storage_fixed_losses_multi_period.lp deleted file mode 100644 index 04ed25c3c..000000000 --- a/tests/lp_files/storage_fixed_losses_multi_period.lp +++ /dev/null @@ -1,114 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -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) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_no_invest_0_1) -+1 flow(storage_no_invest_electricityBus_0_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) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_storage_no_invest_1_3) -+1 flow(storage_no_invest_electricityBus_1_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) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: --1 flow(electricityBus_storage_no_invest_2_5) -+1 flow(storage_no_invest_electricityBus_2_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) -+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) --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) --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) --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) --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) --0.87 GenericStorageBlock_storage_content(storage_no_invest_5) -+1 GenericStorageBlock_storage_content(storage_no_invest_6) -= -1003.0 - -c_e_GenericStorageBlock_balanced_cstr(storage_no_invest)_: -+1 GenericStorageBlock_storage_content(storage_no_invest_6) -= 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.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 - 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_4) <= 100000.0 - 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_5) <= 100000.0 - 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_6) <= 100000.0 -end diff --git a/tests/lp_files/storage_invest_1.lp b/tests/lp_files/storage_invest_1.lp deleted file mode 100644 index d40a61114..000000000 --- a/tests/lp_files/storage_invest_1.lp +++ /dev/null @@ -1,163 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage1_0_1) -+1 flow(storage1_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: --1 flow(electricityBus_storage1_0_2) -+1 flow(storage1_electricityBus_0_2) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage1_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage1_0) --1 InvestmentFlowBlock_invest(electricityBus_storage1_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage1_electricityBus_0)_: -+1 InvestmentFlowBlock_total(storage1_electricityBus_0) --1 InvestmentFlowBlock_invest(storage1_electricityBus_0) -= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_0)_: -+1 flow(electricityBus_storage1_0_0) --1 InvestmentFlowBlock_total(electricityBus_storage1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_1)_: -+1 flow(electricityBus_storage1_0_1) --1 InvestmentFlowBlock_total(electricityBus_storage1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_2)_: -+1 flow(electricityBus_storage1_0_2) --1 InvestmentFlowBlock_total(electricityBus_storage1_0) -<= 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_0_2)_: -+1 flow(storage1_electricityBus_0_2) --1 InvestmentFlowBlock_total(storage1_electricityBus_0) -<= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_0)_: --1 GenericInvestmentStorageBlock_invest(storage1_0) -+1 GenericInvestmentStorageBlock_total(storage1_0) -= 0 - -c_u_GenericInvestmentStorageBlock_init_content_limit(storage1)_: --1 GenericInvestmentStorageBlock_invest(storage1_0) -+1 GenericInvestmentStorageBlock_init_content(storage1) -<= 0 - -c_e_GenericInvestmentStorageBlock_balance_first(storage1)_: --0.97 flow(electricityBus_storage1_0_0) -+1.1627906976744187 flow(storage1_electricityBus_0_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.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.87 GenericInvestmentStorageBlock_storage_content(storage1_1) -+1 GenericInvestmentStorageBlock_storage_content(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_balanced_cstr(storage1)_: --1 GenericInvestmentStorageBlock_init_content(storage1) -+1 GenericInvestmentStorageBlock_storage_content(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage1_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage1_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage1_0)_: -+1 InvestmentFlowBlock_total(storage1_electricityBus_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage1_0) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_0)_: --0.9 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_1)_: --0.9 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_2)_: --0.9 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_0_0)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_0) --1 GenericInvestmentStorageBlock_storage_content(storage1_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_0_1)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_0) --1 GenericInvestmentStorageBlock_storage_content(storage1_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_0_2)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_0) --1 GenericInvestmentStorageBlock_storage_content(storage1_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 <= 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(storage1_electricityBus_0) <= +inf - 0 <= GenericInvestmentStorageBlock_total(storage1_0) <= +inf - 0 <= GenericInvestmentStorageBlock_init_content(storage1) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_0) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_1) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_2) <= +inf -end diff --git a/tests/lp_files/storage_invest_1_fixed_losses.lp b/tests/lp_files/storage_invest_1_fixed_losses.lp deleted file mode 100644 index 2ab9c0173..000000000 --- a/tests/lp_files/storage_invest_1_fixed_losses.lp +++ /dev/null @@ -1,166 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage1_0_1) -+1 flow(storage1_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: --1 flow(electricityBus_storage1_0_2) -+1 flow(storage1_electricityBus_0_2) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage1_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage1_0) --1 InvestmentFlowBlock_invest(electricityBus_storage1_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage1_electricityBus_0)_: -+1 InvestmentFlowBlock_total(storage1_electricityBus_0) --1 InvestmentFlowBlock_invest(storage1_electricityBus_0) -= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_0)_: -+1 flow(electricityBus_storage1_0_0) --1 InvestmentFlowBlock_total(electricityBus_storage1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_1)_: -+1 flow(electricityBus_storage1_0_1) --1 InvestmentFlowBlock_total(electricityBus_storage1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_2)_: -+1 flow(electricityBus_storage1_0_2) --1 InvestmentFlowBlock_total(electricityBus_storage1_0) -<= 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_0_2)_: -+1 flow(storage1_electricityBus_0_2) --1 InvestmentFlowBlock_total(storage1_electricityBus_0) -<= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_0)_: --1 GenericInvestmentStorageBlock_invest(storage1_0) -+1 GenericInvestmentStorageBlock_total(storage1_0) -= 0 - -c_u_GenericInvestmentStorageBlock_init_content_limit(storage1)_: --1 GenericInvestmentStorageBlock_invest(storage1_0) -+1 GenericInvestmentStorageBlock_init_content(storage1) -<= 0 - -c_e_GenericInvestmentStorageBlock_balance_first(storage1)_: --0.97 flow(electricityBus_storage1_0_0) -+1.1627906976744187 flow(storage1_electricityBus_0_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.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.01 GenericInvestmentStorageBlock_total(storage1_0) --0.87 GenericInvestmentStorageBlock_storage_content(storage1_1) -+1 GenericInvestmentStorageBlock_storage_content(storage1_2) -= -3.0 - -c_e_GenericInvestmentStorageBlock_balanced_cstr(storage1)_: --1 GenericInvestmentStorageBlock_init_content(storage1) -+1 GenericInvestmentStorageBlock_storage_content(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage1_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage1_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage1_0)_: -+1 InvestmentFlowBlock_total(storage1_electricityBus_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage1_0) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_0)_: --0.9 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_1)_: --0.9 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_2)_: --0.9 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_0_0)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_0) --1 GenericInvestmentStorageBlock_storage_content(storage1_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_0_1)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_0) --1 GenericInvestmentStorageBlock_storage_content(storage1_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_0_2)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_0) --1 GenericInvestmentStorageBlock_storage_content(storage1_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 - 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(storage1_electricityBus_0) <= +inf - 0 <= GenericInvestmentStorageBlock_total(storage1_0) <= +inf - 0 <= GenericInvestmentStorageBlock_init_content(storage1) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_0) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_1) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_2) <= +inf -end diff --git a/tests/lp_files/storage_invest_1_multi_period.lp b/tests/lp_files/storage_invest_1_multi_period.lp deleted file mode 100644 index bd64f44ed..000000000 --- a/tests/lp_files/storage_invest_1_multi_period.lp +++ /dev/null @@ -1,505 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage1_0_1) -+1 flow(storage1_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_storage1_1_2) -+1 flow(storage1_electricityBus_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_storage1_1_3) -+1 flow(storage1_electricityBus_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_storage1_2_4) -+1 flow(storage1_electricityBus_2_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(electricityBus_storage1_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage1_0) --1 InvestmentFlowBlock_invest(electricityBus_storage1_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage1_1)_: --1 InvestmentFlowBlock_total(electricityBus_storage1_0) -+1 InvestmentFlowBlock_total(electricityBus_storage1_1) --1 InvestmentFlowBlock_invest(electricityBus_storage1_1) -+1 InvestmentFlowBlock_old(electricityBus_storage1_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage1_2)_: --1 InvestmentFlowBlock_total(electricityBus_storage1_1) -+1 InvestmentFlowBlock_total(electricityBus_storage1_2) --1 InvestmentFlowBlock_invest(electricityBus_storage1_2) -+1 InvestmentFlowBlock_old(electricityBus_storage1_2) -= 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) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage1_0)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage1_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage1_1)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage1_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage1_2)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage1_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage1_electricityBus_0)_: -+1 InvestmentFlowBlock_old_end(storage1_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage1_electricityBus_1)_: -+1 InvestmentFlowBlock_old_end(storage1_electricityBus_1) -= 0 - -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)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage1_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage1_1)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage1_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage1_2)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage1_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage1_electricityBus_0)_: -+1 InvestmentFlowBlock_old_exo(storage1_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage1_electricityBus_1)_: -+1 InvestmentFlowBlock_old_exo(storage1_electricityBus_1) -= 0 - -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_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)_: -+1 InvestmentFlowBlock_old(electricityBus_storage1_1) --1 InvestmentFlowBlock_old_end(electricityBus_storage1_1) --1 InvestmentFlowBlock_old_exo(electricityBus_storage1_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(electricityBus_storage1_2)_: -+1 InvestmentFlowBlock_old(electricityBus_storage1_2) --1 InvestmentFlowBlock_old_end(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) -= 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_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 InvestmentFlowBlock_total(electricityBus_storage1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_1)_: -+1 flow(electricityBus_storage1_0_1) --1 InvestmentFlowBlock_total(electricityBus_storage1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_1_2)_: -+1 flow(electricityBus_storage1_1_2) --1 InvestmentFlowBlock_total(electricityBus_storage1_1) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_1_3)_: -+1 flow(electricityBus_storage1_1_3) --1 InvestmentFlowBlock_total(electricityBus_storage1_1) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_2_4)_: -+1 flow(electricityBus_storage1_2_4) --1 InvestmentFlowBlock_total(electricityBus_storage1_2) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_2_5)_: -+1 flow(electricityBus_storage1_2_5) --1 InvestmentFlowBlock_total(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_u_InvestmentFlowBlock_max(storage1_electricityBus_2_4)_: -+1 flow(storage1_electricityBus_2_4) --1 InvestmentFlowBlock_total(storage1_electricityBus_2) -<= 0 - -c_u_InvestmentFlowBlock_max(storage1_electricityBus_2_5)_: -+1 flow(storage1_electricityBus_2_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) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_1)_: --1 GenericInvestmentStorageBlock_invest(storage1_1) --1 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_total(storage1_1) -+1 GenericInvestmentStorageBlock_old(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_2)_: --1 GenericInvestmentStorageBlock_invest(storage1_2) --1 GenericInvestmentStorageBlock_total(storage1_1) -+1 GenericInvestmentStorageBlock_total(storage1_2) -+1 GenericInvestmentStorageBlock_old(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage1_0)_: -+1 GenericInvestmentStorageBlock_old_end(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage1_1)_: -+1 GenericInvestmentStorageBlock_old_end(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage1_2)_: -+1 GenericInvestmentStorageBlock_old_end(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage1_0)_: -+1 GenericInvestmentStorageBlock_old_exo(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage1_1)_: -+1 GenericInvestmentStorageBlock_old_exo(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage1_2)_: -+1 GenericInvestmentStorageBlock_old_exo(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(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)_: -+1 GenericInvestmentStorageBlock_old(storage1_1) --1 GenericInvestmentStorageBlock_old_end(storage1_1) --1 GenericInvestmentStorageBlock_old_exo(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage1_2)_: -+1 GenericInvestmentStorageBlock_old(storage1_2) --1 GenericInvestmentStorageBlock_old_end(storage1_2) --1 GenericInvestmentStorageBlock_old_exo(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_initially_empty(storage1_0)_: -+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.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.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.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.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.87 GenericInvestmentStorageBlock_storage_content(storage1_4) -+1 GenericInvestmentStorageBlock_storage_content(storage1_5) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage1_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage1_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage1_1)_: -+1 InvestmentFlowBlock_total(electricityBus_storage1_1) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage1_2)_: -+1 InvestmentFlowBlock_total(electricityBus_storage1_2) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage1_0)_: -+1 InvestmentFlowBlock_total(storage1_electricityBus_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage1_1)_: -+1 InvestmentFlowBlock_total(storage1_electricityBus_1) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage1_2)_: -+1 InvestmentFlowBlock_total(storage1_electricityBus_2) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage1_2) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_0)_: --0.9 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_1)_: --0.9 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_1_2)_: --0.9 GenericInvestmentStorageBlock_total(storage1_1) -+1 GenericInvestmentStorageBlock_storage_content(storage1_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_1_3)_: --0.9 GenericInvestmentStorageBlock_total(storage1_1) -+1 GenericInvestmentStorageBlock_storage_content(storage1_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_2_4)_: --0.9 GenericInvestmentStorageBlock_total(storage1_2) -+1 GenericInvestmentStorageBlock_storage_content(storage1_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_2_5)_: --0.9 GenericInvestmentStorageBlock_total(storage1_2) -+1 GenericInvestmentStorageBlock_storage_content(storage1_5) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_0_0)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_0) --1 GenericInvestmentStorageBlock_storage_content(storage1_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_0_1)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_0) --1 GenericInvestmentStorageBlock_storage_content(storage1_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_1_2)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_1) --1 GenericInvestmentStorageBlock_storage_content(storage1_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_1_3)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_1) --1 GenericInvestmentStorageBlock_storage_content(storage1_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_2_4)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_2) --1 GenericInvestmentStorageBlock_storage_content(storage1_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_2_5)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_2) --1 GenericInvestmentStorageBlock_storage_content(storage1_5) -<= 0 - -c_u_GenericInvestmentStorageBlock_overall_storage_maximum(storage1_0)_: -+1 GenericInvestmentStorageBlock_total(storage1_0) -<= 1000 - -c_u_GenericInvestmentStorageBlock_overall_storage_maximum(storage1_1)_: -+1 GenericInvestmentStorageBlock_total(storage1_1) -<= 1000 - -c_u_GenericInvestmentStorageBlock_overall_storage_maximum(storage1_2)_: -+1 GenericInvestmentStorageBlock_total(storage1_2) -<= 1000 - -c_l_GenericInvestmentStorageBlock_overall_minimum(storage1)_: -+1 GenericInvestmentStorageBlock_total(storage1_2) ->= 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 <= 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(storage1_electricityBus_2) <= +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_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_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_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage1_0) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage1_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage1_2) <= +inf - 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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_3) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_4) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_5) <= +inf -end 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 deleted file mode 100644 index 674580183..000000000 --- a/tests/lp_files/storage_invest_1_multi_period_remaining_value.lp +++ /dev/null @@ -1,505 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage1_0_1) -+1 flow(storage1_electricityBus_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_storage1_1_2) -+1 flow(storage1_electricityBus_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_storage1_1_3) -+1 flow(storage1_electricityBus_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_storage1_2_4) -+1 flow(storage1_electricityBus_2_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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage1_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage1_0) --1 InvestmentFlowBlock_invest(electricityBus_storage1_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage1_1)_: --1 InvestmentFlowBlock_total(electricityBus_storage1_0) -+1 InvestmentFlowBlock_total(electricityBus_storage1_1) --1 InvestmentFlowBlock_invest(electricityBus_storage1_1) -+1 InvestmentFlowBlock_old(electricityBus_storage1_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage1_2)_: --1 InvestmentFlowBlock_total(electricityBus_storage1_1) -+1 InvestmentFlowBlock_total(electricityBus_storage1_2) --1 InvestmentFlowBlock_invest(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) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage1_electricityBus_1)_: -+1 InvestmentFlowBlock_old_end(storage1_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage1_electricityBus_2)_: -+1 InvestmentFlowBlock_old_end(storage1_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage1_0)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage1_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage1_1)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage1_1) -= 0 - -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) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage1_electricityBus_1)_: -+1 InvestmentFlowBlock_old_exo(storage1_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage1_electricityBus_2)_: -+1 InvestmentFlowBlock_old_exo(storage1_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage1_0)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage1_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage1_1)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage1_1) -= 0 - -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) -= 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_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_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(electricityBus_storage1_1) --1 InvestmentFlowBlock_old_end(electricityBus_storage1_1) --1 InvestmentFlowBlock_old_exo(electricityBus_storage1_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(electricityBus_storage1_2)_: -+1 InvestmentFlowBlock_old(electricityBus_storage1_2) --1 InvestmentFlowBlock_old_end(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_u_InvestmentFlowBlock_max(storage1_electricityBus_2_4)_: -+1 flow(storage1_electricityBus_2_4) --1 InvestmentFlowBlock_total(storage1_electricityBus_2) -<= 0 - -c_u_InvestmentFlowBlock_max(storage1_electricityBus_2_5)_: -+1 flow(storage1_electricityBus_2_5) --1 InvestmentFlowBlock_total(storage1_electricityBus_2) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_0)_: -+1 flow(electricityBus_storage1_0_0) --1 InvestmentFlowBlock_total(electricityBus_storage1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_1)_: -+1 flow(electricityBus_storage1_0_1) --1 InvestmentFlowBlock_total(electricityBus_storage1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_1_2)_: -+1 flow(electricityBus_storage1_1_2) --1 InvestmentFlowBlock_total(electricityBus_storage1_1) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_1_3)_: -+1 flow(electricityBus_storage1_1_3) --1 InvestmentFlowBlock_total(electricityBus_storage1_1) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_2_4)_: -+1 flow(electricityBus_storage1_2_4) --1 InvestmentFlowBlock_total(electricityBus_storage1_2) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_2_5)_: -+1 flow(electricityBus_storage1_2_5) --1 InvestmentFlowBlock_total(electricityBus_storage1_2) -<= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_0)_: --1 GenericInvestmentStorageBlock_invest(storage1_0) -+1 GenericInvestmentStorageBlock_total(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_1)_: --1 GenericInvestmentStorageBlock_invest(storage1_1) --1 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_total(storage1_1) -+1 GenericInvestmentStorageBlock_old(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_2)_: --1 GenericInvestmentStorageBlock_invest(storage1_2) --1 GenericInvestmentStorageBlock_total(storage1_1) -+1 GenericInvestmentStorageBlock_total(storage1_2) -+1 GenericInvestmentStorageBlock_old(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage1_0)_: -+1 GenericInvestmentStorageBlock_old_end(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage1_1)_: -+1 GenericInvestmentStorageBlock_old_end(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage1_2)_: -+1 GenericInvestmentStorageBlock_old_end(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage1_0)_: -+1 GenericInvestmentStorageBlock_old_exo(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage1_1)_: -+1 GenericInvestmentStorageBlock_old_exo(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage1_2)_: -+1 GenericInvestmentStorageBlock_old_exo(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(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)_: -+1 GenericInvestmentStorageBlock_old(storage1_1) --1 GenericInvestmentStorageBlock_old_end(storage1_1) --1 GenericInvestmentStorageBlock_old_exo(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage1_2)_: -+1 GenericInvestmentStorageBlock_old(storage1_2) --1 GenericInvestmentStorageBlock_old_end(storage1_2) --1 GenericInvestmentStorageBlock_old_exo(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_initially_empty(storage1_0)_: -+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.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.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.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.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.87 GenericInvestmentStorageBlock_storage_content(storage1_4) -+1 GenericInvestmentStorageBlock_storage_content(storage1_5) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage1_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage1_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage1_1)_: -+1 InvestmentFlowBlock_total(electricityBus_storage1_1) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage1_2)_: -+1 InvestmentFlowBlock_total(electricityBus_storage1_2) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage1_0)_: -+1 InvestmentFlowBlock_total(storage1_electricityBus_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage1_1)_: -+1 InvestmentFlowBlock_total(storage1_electricityBus_1) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage1_2)_: -+1 InvestmentFlowBlock_total(storage1_electricityBus_2) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage1_2) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_0)_: --0.9 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_1)_: --0.9 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_1_2)_: --0.9 GenericInvestmentStorageBlock_total(storage1_1) -+1 GenericInvestmentStorageBlock_storage_content(storage1_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_1_3)_: --0.9 GenericInvestmentStorageBlock_total(storage1_1) -+1 GenericInvestmentStorageBlock_storage_content(storage1_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_2_4)_: --0.9 GenericInvestmentStorageBlock_total(storage1_2) -+1 GenericInvestmentStorageBlock_storage_content(storage1_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_2_5)_: --0.9 GenericInvestmentStorageBlock_total(storage1_2) -+1 GenericInvestmentStorageBlock_storage_content(storage1_5) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_0_0)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_0) --1 GenericInvestmentStorageBlock_storage_content(storage1_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_0_1)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_0) --1 GenericInvestmentStorageBlock_storage_content(storage1_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_1_2)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_1) --1 GenericInvestmentStorageBlock_storage_content(storage1_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_1_3)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_1) --1 GenericInvestmentStorageBlock_storage_content(storage1_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_2_4)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_2) --1 GenericInvestmentStorageBlock_storage_content(storage1_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage1_2_5)_: -+0.1 GenericInvestmentStorageBlock_total(storage1_2) --1 GenericInvestmentStorageBlock_storage_content(storage1_5) -<= 0 - -c_u_GenericInvestmentStorageBlock_overall_storage_maximum(storage1_0)_: -+1 GenericInvestmentStorageBlock_total(storage1_0) -<= 1000 - -c_u_GenericInvestmentStorageBlock_overall_storage_maximum(storage1_1)_: -+1 GenericInvestmentStorageBlock_total(storage1_1) -<= 1000 - -c_u_GenericInvestmentStorageBlock_overall_storage_maximum(storage1_2)_: -+1 GenericInvestmentStorageBlock_total(storage1_2) -<= 1000 - -c_l_GenericInvestmentStorageBlock_overall_minimum(storage1)_: -+1 GenericInvestmentStorageBlock_total(storage1_2) ->= 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 <= GenericInvestmentStorageBlock_invest(storage1_0) <= 234 - 0 <= GenericInvestmentStorageBlock_invest(storage1_1) <= 234 - 0 <= GenericInvestmentStorageBlock_invest(storage1_2) <= 234 - 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_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_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_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 <= 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_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage1_0) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage1_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage1_2) <= +inf - 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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_3) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_4) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_5) <= +inf -end diff --git a/tests/lp_files/storage_invest_2.lp b/tests/lp_files/storage_invest_2.lp deleted file mode 100644 index 27a460ba8..000000000 --- a/tests/lp_files/storage_invest_2.lp +++ /dev/null @@ -1,134 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+99 InvestmentFlowBlock_invest(electricityBus_storage2_0) -+9 InvestmentFlowBlock_invest(storage2_electricityBus_0) -+145 GenericInvestmentStorageBlock_invest(storage2_0) - -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_0_2)_: -+1 flow(storage2_electricityBus_0_2) --1 flow(electricityBus_storage2_0_2) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage2_0)_: --1 InvestmentFlowBlock_invest(electricityBus_storage2_0) -+1 InvestmentFlowBlock_total(electricityBus_storage2_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage2_electricityBus_0)_: --1 InvestmentFlowBlock_invest(storage2_electricityBus_0) -+1 InvestmentFlowBlock_total(storage2_electricityBus_0) -= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage2_0_0)_: -+1 flow(electricityBus_storage2_0_0) --1 InvestmentFlowBlock_total(electricityBus_storage2_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage2_0_1)_: -+1 flow(electricityBus_storage2_0_1) --1 InvestmentFlowBlock_total(electricityBus_storage2_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage2_0_2)_: -+1 flow(electricityBus_storage2_0_2) --1 InvestmentFlowBlock_total(electricityBus_storage2_0) -<= 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_0_2)_: -+1 flow(storage2_electricityBus_0_2) --1 InvestmentFlowBlock_total(storage2_electricityBus_0) -<= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage2_0)_: --1 GenericInvestmentStorageBlock_invest(storage2_0) -+1 GenericInvestmentStorageBlock_total(storage2_0) -= 0 - -c_e_GenericInvestmentStorageBlock_init_content_fix(storage2)_: --0.5 GenericInvestmentStorageBlock_invest(storage2_0) -+1 GenericInvestmentStorageBlock_init_content(storage2) -= 0 - -c_e_GenericInvestmentStorageBlock_balance_first(storage2)_: -+1 flow(storage2_electricityBus_0_0) --1 flow(electricityBus_storage2_0_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 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 GenericInvestmentStorageBlock_storage_content(storage2_1) -+1 GenericInvestmentStorageBlock_storage_content(storage2_2) -= 0 - -c_e_GenericInvestmentStorageBlock_balanced_cstr(storage2)_: --1 GenericInvestmentStorageBlock_init_content(storage2) -+1 GenericInvestmentStorageBlock_storage_content(storage2_2) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage2_0_0)_: --1 GenericInvestmentStorageBlock_total(storage2_0) -+1 GenericInvestmentStorageBlock_storage_content(storage2_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage2_0_1)_: --1 GenericInvestmentStorageBlock_total(storage2_0) -+1 GenericInvestmentStorageBlock_storage_content(storage2_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage2_0_2)_: --1 GenericInvestmentStorageBlock_total(storage2_0) -+1 GenericInvestmentStorageBlock_storage_content(storage2_2) -<= 0 - -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 <= InvestmentFlowBlock_total(electricityBus_storage2_0) <= +inf - 0 <= InvestmentFlowBlock_total(storage2_electricityBus_0) <= +inf - 0 <= GenericInvestmentStorageBlock_total(storage2_0) <= +inf - 0 <= GenericInvestmentStorageBlock_init_content(storage2) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage2_0) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage2_1) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage2_2) <= +inf -end diff --git a/tests/lp_files/storage_invest_2_multi_period.lp b/tests/lp_files/storage_invest_2_multi_period.lp deleted file mode 100644 index 816985cb6..000000000 --- a/tests/lp_files/storage_invest_2_multi_period.lp +++ /dev/null @@ -1,423 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(storage2_electricityBus_2_4) --1 flow(electricityBus_storage2_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(storage2_electricityBus_2_5) --1 flow(electricityBus_storage2_2_5) -= 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_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_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_total_rule(electricityBus_storage2_0)_: --1 InvestmentFlowBlock_invest(electricityBus_storage2_0) -+1 InvestmentFlowBlock_total(electricityBus_storage2_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage2_1)_: --1 InvestmentFlowBlock_invest(electricityBus_storage2_1) --1 InvestmentFlowBlock_total(electricityBus_storage2_0) -+1 InvestmentFlowBlock_total(electricityBus_storage2_1) -+1 InvestmentFlowBlock_old(electricityBus_storage2_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage2_2)_: --1 InvestmentFlowBlock_invest(electricityBus_storage2_2) --1 InvestmentFlowBlock_total(electricityBus_storage2_1) -+1 InvestmentFlowBlock_total(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) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage2_electricityBus_1)_: -+1 InvestmentFlowBlock_old_end(storage2_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage2_electricityBus_2)_: -+1 InvestmentFlowBlock_old_end(storage2_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage2_0)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage2_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage2_1)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage2_1) -= 0 - -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) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage2_electricityBus_1)_: -+1 InvestmentFlowBlock_old_exo(storage2_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage2_electricityBus_2)_: -+1 InvestmentFlowBlock_old_exo(storage2_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage2_0)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage2_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage2_1)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage2_1) -= 0 - -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) -= 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_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_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(electricityBus_storage2_1) --1 InvestmentFlowBlock_old_end(electricityBus_storage2_1) --1 InvestmentFlowBlock_old_exo(electricityBus_storage2_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(electricityBus_storage2_2)_: -+1 InvestmentFlowBlock_old(electricityBus_storage2_2) --1 InvestmentFlowBlock_old_end(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_u_InvestmentFlowBlock_max(storage2_electricityBus_2_4)_: -+1 flow(storage2_electricityBus_2_4) --1 InvestmentFlowBlock_total(storage2_electricityBus_2) -<= 0 - -c_u_InvestmentFlowBlock_max(storage2_electricityBus_2_5)_: -+1 flow(storage2_electricityBus_2_5) --1 InvestmentFlowBlock_total(storage2_electricityBus_2) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage2_0_0)_: -+1 flow(electricityBus_storage2_0_0) --1 InvestmentFlowBlock_total(electricityBus_storage2_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage2_0_1)_: -+1 flow(electricityBus_storage2_0_1) --1 InvestmentFlowBlock_total(electricityBus_storage2_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage2_1_2)_: -+1 flow(electricityBus_storage2_1_2) --1 InvestmentFlowBlock_total(electricityBus_storage2_1) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage2_1_3)_: -+1 flow(electricityBus_storage2_1_3) --1 InvestmentFlowBlock_total(electricityBus_storage2_1) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage2_2_4)_: -+1 flow(electricityBus_storage2_2_4) --1 InvestmentFlowBlock_total(electricityBus_storage2_2) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage2_2_5)_: -+1 flow(electricityBus_storage2_2_5) --1 InvestmentFlowBlock_total(electricityBus_storage2_2) -<= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage2_0)_: --1 GenericInvestmentStorageBlock_invest(storage2_0) -+1 GenericInvestmentStorageBlock_total(storage2_0) -= 20 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage2_1)_: --1 GenericInvestmentStorageBlock_invest(storage2_1) --1 GenericInvestmentStorageBlock_total(storage2_0) -+1 GenericInvestmentStorageBlock_total(storage2_1) -+1 GenericInvestmentStorageBlock_old(storage2_1) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage2_2)_: --1 GenericInvestmentStorageBlock_invest(storage2_2) --1 GenericInvestmentStorageBlock_total(storage2_1) -+1 GenericInvestmentStorageBlock_total(storage2_2) -+1 GenericInvestmentStorageBlock_old(storage2_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage2_0)_: -+1 GenericInvestmentStorageBlock_old_end(storage2_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage2_1)_: -+1 GenericInvestmentStorageBlock_old_end(storage2_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage2_2)_: -+1 GenericInvestmentStorageBlock_old_end(storage2_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage2_0)_: -+1 GenericInvestmentStorageBlock_old_exo(storage2_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage2_1)_: -+1 GenericInvestmentStorageBlock_old_exo(storage2_1) -= 20 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage2_2)_: -+1 GenericInvestmentStorageBlock_old_exo(storage2_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(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)_: -+1 GenericInvestmentStorageBlock_old(storage2_1) --1 GenericInvestmentStorageBlock_old_end(storage2_1) --1 GenericInvestmentStorageBlock_old_exo(storage2_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage2_2)_: -+1 GenericInvestmentStorageBlock_old(storage2_2) --1 GenericInvestmentStorageBlock_old_end(storage2_2) --1 GenericInvestmentStorageBlock_old_exo(storage2_2) -= 0 - -c_e_GenericInvestmentStorageBlock_initially_empty(storage2_0)_: -+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 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 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 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 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 GenericInvestmentStorageBlock_storage_content(storage2_4) -+1 GenericInvestmentStorageBlock_storage_content(storage2_5) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage2_0_0)_: --1 GenericInvestmentStorageBlock_total(storage2_0) -+1 GenericInvestmentStorageBlock_storage_content(storage2_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage2_0_1)_: --1 GenericInvestmentStorageBlock_total(storage2_0) -+1 GenericInvestmentStorageBlock_storage_content(storage2_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage2_1_2)_: --1 GenericInvestmentStorageBlock_total(storage2_1) -+1 GenericInvestmentStorageBlock_storage_content(storage2_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage2_1_3)_: --1 GenericInvestmentStorageBlock_total(storage2_1) -+1 GenericInvestmentStorageBlock_storage_content(storage2_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage2_2_4)_: --1 GenericInvestmentStorageBlock_total(storage2_2) -+1 GenericInvestmentStorageBlock_storage_content(storage2_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage2_2_5)_: --1 GenericInvestmentStorageBlock_total(storage2_2) -+1 GenericInvestmentStorageBlock_storage_content(storage2_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 <= 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 <= 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_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_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_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 <= 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_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage2_0) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage2_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage2_2) <= +inf - 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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage2_3) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage2_4) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage2_5) <= +inf -end diff --git a/tests/lp_files/storage_invest_3.lp b/tests/lp_files/storage_invest_3.lp deleted file mode 100644 index 589d7e814..000000000 --- a/tests/lp_files/storage_invest_3.lp +++ /dev/null @@ -1,106 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+9 InvestmentFlowBlock_invest(storage3_electricityBus_0) -+99 InvestmentFlowBlock_invest(electricityBus_storage3_0) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage3_electricityBus_0_0) --1 flow(electricityBus_storage3_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage3_electricityBus_0_1) --1 flow(electricityBus_storage3_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(storage3_electricityBus_0_2) --1 flow(electricityBus_storage3_0_2) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage3_electricityBus_0)_: --1 InvestmentFlowBlock_invest(storage3_electricityBus_0) -+1 InvestmentFlowBlock_total(storage3_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage3_0)_: --1 InvestmentFlowBlock_invest(electricityBus_storage3_0) -+1 InvestmentFlowBlock_total(electricityBus_storage3_0) -= 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_0_2)_: -+1 flow(storage3_electricityBus_0_2) --1 InvestmentFlowBlock_total(storage3_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage3_0_0)_: -+1 flow(electricityBus_storage3_0_0) --1 InvestmentFlowBlock_total(electricityBus_storage3_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage3_0_1)_: -+1 flow(electricityBus_storage3_0_1) --1 InvestmentFlowBlock_total(electricityBus_storage3_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage3_0_2)_: -+1 flow(electricityBus_storage3_0_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) --1 GenericStorageBlock_storage_content(storage3_0) -= 0 - -c_e_GenericStorageBlock_balance(storage3_0_1)_: -+1 flow(storage3_electricityBus_0_1) --1 flow(electricityBus_storage3_0_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) --1 GenericStorageBlock_storage_content(storage3_2) -+1 GenericStorageBlock_storage_content(storage3_3) -= 0 - -c_e_GenericStorageBlock_balanced_cstr(storage3)_: --1 GenericStorageBlock_storage_content(storage3_0) -+1 GenericStorageBlock_storage_content(storage3_3) -= 0 - -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 <= 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_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 deleted file mode 100644 index f5646972e..000000000 --- a/tests/lp_files/storage_invest_3_multi_period.lp +++ /dev/null @@ -1,324 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage3_electricityBus_0_0) --1 flow(electricityBus_storage3_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage3_electricityBus_0_1) --1 flow(electricityBus_storage3_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(storage3_electricityBus_1_2) --1 flow(electricityBus_storage3_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(storage3_electricityBus_1_3) --1 flow(electricityBus_storage3_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(storage3_electricityBus_2_4) --1 flow(electricityBus_storage3_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(storage3_electricityBus_2_5) --1 flow(electricityBus_storage3_2_5) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage3_0)_: --1 InvestmentFlowBlock_invest(electricityBus_storage3_0) -+1 InvestmentFlowBlock_total(electricityBus_storage3_0) -= 10 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage3_1)_: --1 InvestmentFlowBlock_invest(electricityBus_storage3_1) --1 InvestmentFlowBlock_total(electricityBus_storage3_0) -+1 InvestmentFlowBlock_total(electricityBus_storage3_1) -+1 InvestmentFlowBlock_old(electricityBus_storage3_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage3_2)_: --1 InvestmentFlowBlock_invest(electricityBus_storage3_2) --1 InvestmentFlowBlock_total(electricityBus_storage3_1) -+1 InvestmentFlowBlock_total(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) -= 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) -= 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_old_rule_end(electricityBus_storage3_0)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage3_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage3_1)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage3_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage3_2)_: --1 InvestmentFlowBlock_invest(electricityBus_storage3_0) -+1 InvestmentFlowBlock_old_end(electricityBus_storage3_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage3_electricityBus_0)_: -+1 InvestmentFlowBlock_old_end(storage3_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage3_electricityBus_1)_: -+1 InvestmentFlowBlock_old_end(storage3_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage3_electricityBus_2)_: -+1 InvestmentFlowBlock_old_end(storage3_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage3_0)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage3_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage3_1)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage3_1) -= 10 - -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) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(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) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(electricityBus_storage3_1) --1 InvestmentFlowBlock_old_end(electricityBus_storage3_1) --1 InvestmentFlowBlock_old_exo(electricityBus_storage3_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(electricityBus_storage3_2)_: -+1 InvestmentFlowBlock_old(electricityBus_storage3_2) --1 InvestmentFlowBlock_old_end(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_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(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(electricityBus_storage3_0_0)_: -+1 flow(electricityBus_storage3_0_0) --1 InvestmentFlowBlock_total(electricityBus_storage3_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage3_0_1)_: -+1 flow(electricityBus_storage3_0_1) --1 InvestmentFlowBlock_total(electricityBus_storage3_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage3_1_2)_: -+1 flow(electricityBus_storage3_1_2) --1 InvestmentFlowBlock_total(electricityBus_storage3_1) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage3_1_3)_: -+1 flow(electricityBus_storage3_1_3) --1 InvestmentFlowBlock_total(electricityBus_storage3_1) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage3_2_4)_: -+1 flow(electricityBus_storage3_2_4) --1 InvestmentFlowBlock_total(electricityBus_storage3_2) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage3_2_5)_: -+1 flow(electricityBus_storage3_2_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) --1 GenericStorageBlock_storage_content(storage3_0) -= 0 - -c_e_GenericStorageBlock_balance(storage3_0_1)_: -+1 flow(storage3_electricityBus_0_1) --1 flow(electricityBus_storage3_0_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) --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) --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) --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) --1 GenericStorageBlock_storage_content(storage3_5) -+1 GenericStorageBlock_storage_content(storage3_6) -= 0 - -c_e_GenericStorageBlock_balanced_cstr(storage3)_: --1 GenericStorageBlock_storage_content(storage3_0) -+1 GenericStorageBlock_storage_content(storage3_6) -= 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_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_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_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_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 <= GenericStorageBlock_storage_content(storage3_0) <= 5000 - 0 <= GenericStorageBlock_storage_content(storage3_2) <= 5000 - 0 <= GenericStorageBlock_storage_content(storage3_3) <= 5000 - 0 <= GenericStorageBlock_storage_content(storage3_4) <= 5000 - 0 <= GenericStorageBlock_storage_content(storage3_5) <= 5000 - 0 <= GenericStorageBlock_storage_content(storage3_6) <= 5000 -end diff --git a/tests/lp_files/storage_invest_4.lp b/tests/lp_files/storage_invest_4.lp deleted file mode 100644 index 66fa233a2..000000000 --- a/tests/lp_files/storage_invest_4.lp +++ /dev/null @@ -1,88 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+145 GenericInvestmentStorageBlock_invest(storage4_0) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage4_electricityBus_0_0) --1 flow(electricityBus_storage4_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage4_electricityBus_0_1) --1 flow(electricityBus_storage4_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(storage4_electricityBus_0_2) --1 flow(electricityBus_storage4_0_2) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage4_0)_: --1 GenericInvestmentStorageBlock_invest(storage4_0) -+1 GenericInvestmentStorageBlock_total(storage4_0) -= 0 - -c_u_GenericInvestmentStorageBlock_init_content_limit(storage4)_: --1 GenericInvestmentStorageBlock_invest(storage4_0) -+1 GenericInvestmentStorageBlock_init_content(storage4) -<= 0 - -c_e_GenericInvestmentStorageBlock_balance_first(storage4)_: -+1 flow(storage4_electricityBus_0_0) --1 flow(electricityBus_storage4_0_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 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 GenericInvestmentStorageBlock_storage_content(storage4_1) -+1 GenericInvestmentStorageBlock_storage_content(storage4_2) -= 0 - -c_e_GenericInvestmentStorageBlock_balanced_cstr(storage4)_: --1 GenericInvestmentStorageBlock_init_content(storage4) -+1 GenericInvestmentStorageBlock_storage_content(storage4_2) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage4_0_0)_: --1 GenericInvestmentStorageBlock_total(storage4_0) -+1 GenericInvestmentStorageBlock_storage_content(storage4_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage4_0_1)_: --1 GenericInvestmentStorageBlock_total(storage4_0) -+1 GenericInvestmentStorageBlock_storage_content(storage4_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage4_0_2)_: --1 GenericInvestmentStorageBlock_total(storage4_0) -+1 GenericInvestmentStorageBlock_storage_content(storage4_2) -<= 0 - -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 <= GenericInvestmentStorageBlock_total(storage4_0) <= +inf - 0 <= GenericInvestmentStorageBlock_init_content(storage4) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage4_0) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage4_1) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage4_2) <= +inf -end diff --git a/tests/lp_files/storage_invest_4_multi_period.lp b/tests/lp_files/storage_invest_4_multi_period.lp deleted file mode 100644 index c08305a40..000000000 --- a/tests/lp_files/storage_invest_4_multi_period.lp +++ /dev/null @@ -1,206 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+145.0 GenericInvestmentStorageBlock_invest(storage4_0) -+142.15686274509804 GenericInvestmentStorageBlock_invest(storage4_1) -+70.37468452727633 GenericInvestmentStorageBlock_invest(storage4_2) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage4_electricityBus_0_0) --1 flow(electricityBus_storage4_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage4_electricityBus_0_1) --1 flow(electricityBus_storage4_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(storage4_electricityBus_1_2) --1 flow(electricityBus_storage4_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(storage4_electricityBus_1_3) --1 flow(electricityBus_storage4_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(storage4_electricityBus_2_4) --1 flow(electricityBus_storage4_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(storage4_electricityBus_2_5) --1 flow(electricityBus_storage4_2_5) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage4_0)_: --1 GenericInvestmentStorageBlock_invest(storage4_0) -+1 GenericInvestmentStorageBlock_total(storage4_0) -= 100 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage4_1)_: --1 GenericInvestmentStorageBlock_invest(storage4_1) --1 GenericInvestmentStorageBlock_total(storage4_0) -+1 GenericInvestmentStorageBlock_total(storage4_1) -+1 GenericInvestmentStorageBlock_old(storage4_1) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage4_2)_: --1 GenericInvestmentStorageBlock_invest(storage4_2) --1 GenericInvestmentStorageBlock_total(storage4_1) -+1 GenericInvestmentStorageBlock_total(storage4_2) -+1 GenericInvestmentStorageBlock_old(storage4_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage4_0)_: -+1 GenericInvestmentStorageBlock_old_end(storage4_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage4_1)_: -+1 GenericInvestmentStorageBlock_old_end(storage4_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage4_2)_: --1 GenericInvestmentStorageBlock_invest(storage4_0) -+1 GenericInvestmentStorageBlock_old_end(storage4_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage4_0)_: -+1 GenericInvestmentStorageBlock_old_exo(storage4_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage4_1)_: -+1 GenericInvestmentStorageBlock_old_exo(storage4_1) -= 100 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage4_2)_: -+1 GenericInvestmentStorageBlock_old_exo(storage4_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(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)_: -+1 GenericInvestmentStorageBlock_old(storage4_1) --1 GenericInvestmentStorageBlock_old_end(storage4_1) --1 GenericInvestmentStorageBlock_old_exo(storage4_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage4_2)_: -+1 GenericInvestmentStorageBlock_old(storage4_2) --1 GenericInvestmentStorageBlock_old_end(storage4_2) --1 GenericInvestmentStorageBlock_old_exo(storage4_2) -= 0 - -c_e_GenericInvestmentStorageBlock_initially_empty(storage4_0)_: -+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 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 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 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 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 GenericInvestmentStorageBlock_storage_content(storage4_4) -+1 GenericInvestmentStorageBlock_storage_content(storage4_5) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage4_0_0)_: --1 GenericInvestmentStorageBlock_total(storage4_0) -+1 GenericInvestmentStorageBlock_storage_content(storage4_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage4_0_1)_: --1 GenericInvestmentStorageBlock_total(storage4_0) -+1 GenericInvestmentStorageBlock_storage_content(storage4_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage4_1_2)_: --1 GenericInvestmentStorageBlock_total(storage4_1) -+1 GenericInvestmentStorageBlock_storage_content(storage4_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage4_1_3)_: --1 GenericInvestmentStorageBlock_total(storage4_1) -+1 GenericInvestmentStorageBlock_storage_content(storage4_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage4_2_4)_: --1 GenericInvestmentStorageBlock_total(storage4_2) -+1 GenericInvestmentStorageBlock_storage_content(storage4_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage4_2_5)_: --1 GenericInvestmentStorageBlock_total(storage4_2) -+1 GenericInvestmentStorageBlock_storage_content(storage4_5) -<= 0 - -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 <= 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_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage4_0) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage4_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage4_2) <= +inf - 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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage4_3) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage4_4) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage4_5) <= +inf -end diff --git a/tests/lp_files/storage_invest_5.lp b/tests/lp_files/storage_invest_5.lp deleted file mode 100644 index 853f833c0..000000000 --- a/tests/lp_files/storage_invest_5.lp +++ /dev/null @@ -1,110 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+99 InvestmentFlowBlock_invest(electricityBus_storage5_0) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage5_electricityBus_0_0) --1 flow(electricityBus_storage5_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage5_electricityBus_0_1) --1 flow(electricityBus_storage5_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(storage5_electricityBus_0_2) --1 flow(electricityBus_storage5_0_2) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage5_electricityBus_0)_: -+1 InvestmentFlowBlock_total(storage5_electricityBus_0) --1 InvestmentFlowBlock_invest(storage5_electricityBus_0) -= 100 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage5_0)_: --1 InvestmentFlowBlock_invest(electricityBus_storage5_0) -+1 InvestmentFlowBlock_total(electricityBus_storage5_0) -= 110 - -c_u_InvestmentFlowBlock_max(storage5_electricityBus_0_0)_: -+1 flow(storage5_electricityBus_0_0) --1 InvestmentFlowBlock_total(storage5_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage5_electricityBus_0_1)_: -+1 flow(storage5_electricityBus_0_1) --1 InvestmentFlowBlock_total(storage5_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage5_electricityBus_0_2)_: -+1 flow(storage5_electricityBus_0_2) --1 InvestmentFlowBlock_total(storage5_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage5_0_0)_: -+1 flow(electricityBus_storage5_0_0) --1 InvestmentFlowBlock_total(electricityBus_storage5_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage5_0_1)_: -+1 flow(electricityBus_storage5_0_1) --1 InvestmentFlowBlock_total(electricityBus_storage5_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage5_0_2)_: -+1 flow(electricityBus_storage5_0_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) --1 GenericStorageBlock_storage_content(storage5_0) -= 0 - -c_e_GenericStorageBlock_balance(storage5_0_1)_: -+1 flow(storage5_electricityBus_0_1) --1 flow(electricityBus_storage5_0_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) --1 GenericStorageBlock_storage_content(storage5_2) -+1 GenericStorageBlock_storage_content(storage5_3) -= 0 - -c_e_GenericStorageBlock_balanced_cstr(storage5)_: --1 GenericStorageBlock_storage_content(storage5_0) -+1 GenericStorageBlock_storage_content(storage5_3) -= 0 - -c_e_GenericStorageBlock_power_coupled(storage5_0)_: -+1.1 InvestmentFlowBlock_total(storage5_electricityBus_0) --1 InvestmentFlowBlock_total(electricityBus_storage5_0) -= 0 - -bounds - 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 <= 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_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 deleted file mode 100644 index e139e72db..000000000 --- a/tests/lp_files/storage_invest_5_multi_period.lp +++ /dev/null @@ -1,335 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+17.46051480474446 InvestmentFlowBlock_invest(electricityBus_storage5_0) -+11.524715692583884 InvestmentFlowBlock_invest(electricityBus_storage5_1) -+5.705304798308859 InvestmentFlowBlock_invest(electricityBus_storage5_2) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage5_electricityBus_0_0) --1 flow(electricityBus_storage5_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage5_electricityBus_0_1) --1 flow(electricityBus_storage5_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(storage5_electricityBus_1_2) --1 flow(electricityBus_storage5_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(storage5_electricityBus_1_3) --1 flow(electricityBus_storage5_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(storage5_electricityBus_2_4) --1 flow(electricityBus_storage5_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(storage5_electricityBus_2_5) --1 flow(electricityBus_storage5_2_5) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage5_electricityBus_0)_: -+1 InvestmentFlowBlock_total(storage5_electricityBus_0) --1 InvestmentFlowBlock_invest(storage5_electricityBus_0) -= 100 - -c_e_InvestmentFlowBlock_total_rule(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_total(storage5_electricityBus_1) -+1 InvestmentFlowBlock_total(storage5_electricityBus_2) --1 InvestmentFlowBlock_invest(storage5_electricityBus_2) -+1 InvestmentFlowBlock_old(storage5_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage5_0)_: --1 InvestmentFlowBlock_invest(electricityBus_storage5_0) -+1 InvestmentFlowBlock_total(electricityBus_storage5_0) -= 110 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage5_1)_: --1 InvestmentFlowBlock_invest(electricityBus_storage5_1) --1 InvestmentFlowBlock_total(electricityBus_storage5_0) -+1 InvestmentFlowBlock_total(electricityBus_storage5_1) -+1 InvestmentFlowBlock_old(electricityBus_storage5_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage5_2)_: --1 InvestmentFlowBlock_invest(electricityBus_storage5_2) --1 InvestmentFlowBlock_total(electricityBus_storage5_1) -+1 InvestmentFlowBlock_total(electricityBus_storage5_2) -+1 InvestmentFlowBlock_old(electricityBus_storage5_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage5_electricityBus_0)_: -+1 InvestmentFlowBlock_old_end(storage5_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage5_electricityBus_1)_: -+1 InvestmentFlowBlock_old_end(storage5_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage5_electricityBus_2)_: -+1 InvestmentFlowBlock_old_end(storage5_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage5_0)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage5_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage5_1)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage5_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage5_2)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage5_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage5_electricityBus_0)_: -+1 InvestmentFlowBlock_old_exo(storage5_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage5_electricityBus_1)_: -+1 InvestmentFlowBlock_old_exo(storage5_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage5_electricityBus_2)_: -+1 InvestmentFlowBlock_old_exo(storage5_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage5_0)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage5_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage5_1)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage5_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage5_2)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage5_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(storage5_electricityBus_1) --1 InvestmentFlowBlock_old_end(storage5_electricityBus_1) --1 InvestmentFlowBlock_old_exo(storage5_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(storage5_electricityBus_2)_: -+1 InvestmentFlowBlock_old(storage5_electricityBus_2) --1 InvestmentFlowBlock_old_end(storage5_electricityBus_2) --1 InvestmentFlowBlock_old_exo(storage5_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(electricityBus_storage5_1) --1 InvestmentFlowBlock_old_end(electricityBus_storage5_1) --1 InvestmentFlowBlock_old_exo(electricityBus_storage5_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(electricityBus_storage5_2)_: -+1 InvestmentFlowBlock_old(electricityBus_storage5_2) --1 InvestmentFlowBlock_old_end(electricityBus_storage5_2) --1 InvestmentFlowBlock_old_exo(electricityBus_storage5_2) -= 0 - -c_u_InvestmentFlowBlock_max(storage5_electricityBus_0_0)_: -+1 flow(storage5_electricityBus_0_0) --1 InvestmentFlowBlock_total(storage5_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage5_electricityBus_0_1)_: -+1 flow(storage5_electricityBus_0_1) --1 InvestmentFlowBlock_total(storage5_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage5_electricityBus_1_2)_: -+1 flow(storage5_electricityBus_1_2) --1 InvestmentFlowBlock_total(storage5_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_max(storage5_electricityBus_1_3)_: -+1 flow(storage5_electricityBus_1_3) --1 InvestmentFlowBlock_total(storage5_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_max(storage5_electricityBus_2_4)_: -+1 flow(storage5_electricityBus_2_4) --1 InvestmentFlowBlock_total(storage5_electricityBus_2) -<= 0 - -c_u_InvestmentFlowBlock_max(storage5_electricityBus_2_5)_: -+1 flow(storage5_electricityBus_2_5) --1 InvestmentFlowBlock_total(storage5_electricityBus_2) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage5_0_0)_: -+1 flow(electricityBus_storage5_0_0) --1 InvestmentFlowBlock_total(electricityBus_storage5_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage5_0_1)_: -+1 flow(electricityBus_storage5_0_1) --1 InvestmentFlowBlock_total(electricityBus_storage5_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage5_1_2)_: -+1 flow(electricityBus_storage5_1_2) --1 InvestmentFlowBlock_total(electricityBus_storage5_1) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage5_1_3)_: -+1 flow(electricityBus_storage5_1_3) --1 InvestmentFlowBlock_total(electricityBus_storage5_1) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage5_2_4)_: -+1 flow(electricityBus_storage5_2_4) --1 InvestmentFlowBlock_total(electricityBus_storage5_2) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage5_2_5)_: -+1 flow(electricityBus_storage5_2_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) --1 GenericStorageBlock_storage_content(storage5_0) -= 0 - -c_e_GenericStorageBlock_balance(storage5_0_1)_: -+1 flow(storage5_electricityBus_0_1) --1 flow(electricityBus_storage5_0_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) --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) --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) --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) --1 GenericStorageBlock_storage_content(storage5_5) -+1 GenericStorageBlock_storage_content(storage5_6) -= 0 - -c_e_GenericStorageBlock_balanced_cstr(storage5)_: --1 GenericStorageBlock_storage_content(storage5_0) -+1 GenericStorageBlock_storage_content(storage5_6) -= 0 - -c_e_GenericStorageBlock_power_coupled(storage5_0)_: -+1.1 InvestmentFlowBlock_total(storage5_electricityBus_0) --1 InvestmentFlowBlock_total(electricityBus_storage5_0) -= 0 - -c_e_GenericStorageBlock_power_coupled(storage5_1)_: -+1.1 InvestmentFlowBlock_total(storage5_electricityBus_1) --1 InvestmentFlowBlock_total(electricityBus_storage5_1) -= 0 - -c_e_GenericStorageBlock_power_coupled(storage5_2)_: -+1.1 InvestmentFlowBlock_total(storage5_electricityBus_2) --1 InvestmentFlowBlock_total(electricityBus_storage5_2) -= 0 - -bounds - 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 <= 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(electricityBus_storage5_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage5_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage5_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage5_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_storage5_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_storage5_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_storage5_2) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage5_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage5_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage5_electricityBus_2) <= +inf - 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_2) <= 10000 - 0 <= GenericStorageBlock_storage_content(storage5_3) <= 10000 - 0 <= GenericStorageBlock_storage_content(storage5_4) <= 10000 - 0 <= GenericStorageBlock_storage_content(storage5_5) <= 10000 - 0 <= GenericStorageBlock_storage_content(storage5_6) <= 10000 -end diff --git a/tests/lp_files/storage_invest_6.lp b/tests/lp_files/storage_invest_6.lp deleted file mode 100644 index 59262db9b..000000000 --- a/tests/lp_files/storage_invest_6.lp +++ /dev/null @@ -1,138 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+99 InvestmentFlowBlock_invest(electricityBus_storage6_0) -+145 GenericInvestmentStorageBlock_invest(storage6_0) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage6_electricityBus_0_0) --1 flow(electricityBus_storage6_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage6_electricityBus_0_1) --1 flow(electricityBus_storage6_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(storage6_electricityBus_0_2) --1 flow(electricityBus_storage6_0_2) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage6_electricityBus_0)_: -+1 InvestmentFlowBlock_total(storage6_electricityBus_0) --1 InvestmentFlowBlock_invest(storage6_electricityBus_0) -= 100 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage6_0)_: --1 InvestmentFlowBlock_invest(electricityBus_storage6_0) -+1 InvestmentFlowBlock_total(electricityBus_storage6_0) -= 110 - -c_u_InvestmentFlowBlock_max(storage6_electricityBus_0_0)_: -+1 flow(storage6_electricityBus_0_0) --1 InvestmentFlowBlock_total(storage6_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage6_electricityBus_0_1)_: -+1 flow(storage6_electricityBus_0_1) --1 InvestmentFlowBlock_total(storage6_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage6_electricityBus_0_2)_: -+1 flow(storage6_electricityBus_0_2) --1 InvestmentFlowBlock_total(storage6_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage6_0_0)_: -+1 flow(electricityBus_storage6_0_0) --1 InvestmentFlowBlock_total(electricityBus_storage6_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage6_0_1)_: -+1 flow(electricityBus_storage6_0_1) --1 InvestmentFlowBlock_total(electricityBus_storage6_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage6_0_2)_: -+1 flow(electricityBus_storage6_0_2) --1 InvestmentFlowBlock_total(electricityBus_storage6_0) -<= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage6_0)_: --1 GenericInvestmentStorageBlock_invest(storage6_0) -+1 GenericInvestmentStorageBlock_total(storage6_0) -= 10000 - -c_u_GenericInvestmentStorageBlock_init_content_limit(storage6)_: --1 GenericInvestmentStorageBlock_invest(storage6_0) -+1 GenericInvestmentStorageBlock_init_content(storage6) -<= 10000 - -c_e_GenericInvestmentStorageBlock_balance_first(storage6)_: -+1 flow(storage6_electricityBus_0_0) --1 flow(electricityBus_storage6_0_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 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 GenericInvestmentStorageBlock_storage_content(storage6_1) -+1 GenericInvestmentStorageBlock_storage_content(storage6_2) -= 0 - -c_e_GenericInvestmentStorageBlock_balanced_cstr(storage6)_: --1 GenericInvestmentStorageBlock_init_content(storage6) -+1 GenericInvestmentStorageBlock_storage_content(storage6_2) -= 0 - -c_e_GenericInvestmentStorageBlock_power_coupled(storage6_0)_: -+1.1 InvestmentFlowBlock_total(storage6_electricityBus_0) --1 InvestmentFlowBlock_total(electricityBus_storage6_0) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage6_0_0)_: --1 GenericInvestmentStorageBlock_total(storage6_0) -+1 GenericInvestmentStorageBlock_storage_content(storage6_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage6_0_1)_: --1 GenericInvestmentStorageBlock_total(storage6_0) -+1 GenericInvestmentStorageBlock_storage_content(storage6_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage6_0_2)_: --1 GenericInvestmentStorageBlock_total(storage6_0) -+1 GenericInvestmentStorageBlock_storage_content(storage6_2) -<= 0 - -bounds - 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 <= 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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage6_0) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage6_1) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage6_2) <= +inf -end diff --git a/tests/lp_files/storage_invest_6_multi_period.lp b/tests/lp_files/storage_invest_6_multi_period.lp deleted file mode 100644 index 4fc195eda..000000000 --- a/tests/lp_files/storage_invest_6_multi_period.lp +++ /dev/null @@ -1,435 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+17.46051480474446 InvestmentFlowBlock_invest(electricityBus_storage6_0) -+11.524715692583884 InvestmentFlowBlock_invest(electricityBus_storage6_1) -+5.705304798308859 InvestmentFlowBlock_invest(electricityBus_storage6_2) -+25.57348127967623 GenericInvestmentStorageBlock_invest(storage6_0) -+16.879634095198618 GenericInvestmentStorageBlock_invest(storage6_1) -+8.35625450257358 GenericInvestmentStorageBlock_invest(storage6_2) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage6_electricityBus_0_0) --1 flow(electricityBus_storage6_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage6_electricityBus_0_1) --1 flow(electricityBus_storage6_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(storage6_electricityBus_1_2) --1 flow(electricityBus_storage6_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(storage6_electricityBus_1_3) --1 flow(electricityBus_storage6_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(storage6_electricityBus_2_4) --1 flow(electricityBus_storage6_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(storage6_electricityBus_2_5) --1 flow(electricityBus_storage6_2_5) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage6_electricityBus_0)_: -+1 InvestmentFlowBlock_total(storage6_electricityBus_0) --1 InvestmentFlowBlock_invest(storage6_electricityBus_0) -= 100 - -c_e_InvestmentFlowBlock_total_rule(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_total(storage6_electricityBus_1) -+1 InvestmentFlowBlock_total(storage6_electricityBus_2) --1 InvestmentFlowBlock_invest(storage6_electricityBus_2) -+1 InvestmentFlowBlock_old(storage6_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage6_0)_: --1 InvestmentFlowBlock_invest(electricityBus_storage6_0) -+1 InvestmentFlowBlock_total(electricityBus_storage6_0) -= 110 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage6_1)_: --1 InvestmentFlowBlock_invest(electricityBus_storage6_1) --1 InvestmentFlowBlock_total(electricityBus_storage6_0) -+1 InvestmentFlowBlock_total(electricityBus_storage6_1) -+1 InvestmentFlowBlock_old(electricityBus_storage6_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage6_2)_: --1 InvestmentFlowBlock_invest(electricityBus_storage6_2) --1 InvestmentFlowBlock_total(electricityBus_storage6_1) -+1 InvestmentFlowBlock_total(electricityBus_storage6_2) -+1 InvestmentFlowBlock_old(electricityBus_storage6_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage6_electricityBus_0)_: -+1 InvestmentFlowBlock_old_end(storage6_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage6_electricityBus_1)_: -+1 InvestmentFlowBlock_old_end(storage6_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(storage6_electricityBus_2)_: -+1 InvestmentFlowBlock_old_end(storage6_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage6_0)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage6_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage6_1)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage6_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage6_2)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage6_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage6_electricityBus_0)_: -+1 InvestmentFlowBlock_old_exo(storage6_electricityBus_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage6_electricityBus_1)_: -+1 InvestmentFlowBlock_old_exo(storage6_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(storage6_electricityBus_2)_: -+1 InvestmentFlowBlock_old_exo(storage6_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage6_0)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage6_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage6_1)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage6_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage6_2)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage6_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(storage6_electricityBus_1) --1 InvestmentFlowBlock_old_end(storage6_electricityBus_1) --1 InvestmentFlowBlock_old_exo(storage6_electricityBus_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(storage6_electricityBus_2)_: -+1 InvestmentFlowBlock_old(storage6_electricityBus_2) --1 InvestmentFlowBlock_old_end(storage6_electricityBus_2) --1 InvestmentFlowBlock_old_exo(storage6_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(electricityBus_storage6_1) --1 InvestmentFlowBlock_old_end(electricityBus_storage6_1) --1 InvestmentFlowBlock_old_exo(electricityBus_storage6_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(electricityBus_storage6_2)_: -+1 InvestmentFlowBlock_old(electricityBus_storage6_2) --1 InvestmentFlowBlock_old_end(electricityBus_storage6_2) --1 InvestmentFlowBlock_old_exo(electricityBus_storage6_2) -= 0 - -c_u_InvestmentFlowBlock_max(storage6_electricityBus_0_0)_: -+1 flow(storage6_electricityBus_0_0) --1 InvestmentFlowBlock_total(storage6_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage6_electricityBus_0_1)_: -+1 flow(storage6_electricityBus_0_1) --1 InvestmentFlowBlock_total(storage6_electricityBus_0) -<= 0 - -c_u_InvestmentFlowBlock_max(storage6_electricityBus_1_2)_: -+1 flow(storage6_electricityBus_1_2) --1 InvestmentFlowBlock_total(storage6_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_max(storage6_electricityBus_1_3)_: -+1 flow(storage6_electricityBus_1_3) --1 InvestmentFlowBlock_total(storage6_electricityBus_1) -<= 0 - -c_u_InvestmentFlowBlock_max(storage6_electricityBus_2_4)_: -+1 flow(storage6_electricityBus_2_4) --1 InvestmentFlowBlock_total(storage6_electricityBus_2) -<= 0 - -c_u_InvestmentFlowBlock_max(storage6_electricityBus_2_5)_: -+1 flow(storage6_electricityBus_2_5) --1 InvestmentFlowBlock_total(storage6_electricityBus_2) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage6_0_0)_: -+1 flow(electricityBus_storage6_0_0) --1 InvestmentFlowBlock_total(electricityBus_storage6_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage6_0_1)_: -+1 flow(electricityBus_storage6_0_1) --1 InvestmentFlowBlock_total(electricityBus_storage6_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage6_1_2)_: -+1 flow(electricityBus_storage6_1_2) --1 InvestmentFlowBlock_total(electricityBus_storage6_1) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage6_1_3)_: -+1 flow(electricityBus_storage6_1_3) --1 InvestmentFlowBlock_total(electricityBus_storage6_1) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage6_2_4)_: -+1 flow(electricityBus_storage6_2_4) --1 InvestmentFlowBlock_total(electricityBus_storage6_2) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage6_2_5)_: -+1 flow(electricityBus_storage6_2_5) --1 InvestmentFlowBlock_total(electricityBus_storage6_2) -<= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage6_0)_: --1 GenericInvestmentStorageBlock_invest(storage6_0) -+1 GenericInvestmentStorageBlock_total(storage6_0) -= 1000 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage6_1)_: --1 GenericInvestmentStorageBlock_invest(storage6_1) --1 GenericInvestmentStorageBlock_total(storage6_0) -+1 GenericInvestmentStorageBlock_total(storage6_1) -+1 GenericInvestmentStorageBlock_old(storage6_1) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage6_2)_: --1 GenericInvestmentStorageBlock_invest(storage6_2) --1 GenericInvestmentStorageBlock_total(storage6_1) -+1 GenericInvestmentStorageBlock_total(storage6_2) -+1 GenericInvestmentStorageBlock_old(storage6_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage6_0)_: -+1 GenericInvestmentStorageBlock_old_end(storage6_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage6_1)_: -+1 GenericInvestmentStorageBlock_old_end(storage6_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage6_2)_: -+1 GenericInvestmentStorageBlock_old_end(storage6_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage6_0)_: -+1 GenericInvestmentStorageBlock_old_exo(storage6_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage6_1)_: -+1 GenericInvestmentStorageBlock_old_exo(storage6_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage6_2)_: -+1 GenericInvestmentStorageBlock_old_exo(storage6_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(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)_: -+1 GenericInvestmentStorageBlock_old(storage6_1) --1 GenericInvestmentStorageBlock_old_end(storage6_1) --1 GenericInvestmentStorageBlock_old_exo(storage6_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage6_2)_: -+1 GenericInvestmentStorageBlock_old(storage6_2) --1 GenericInvestmentStorageBlock_old_end(storage6_2) --1 GenericInvestmentStorageBlock_old_exo(storage6_2) -= 0 - -c_e_GenericInvestmentStorageBlock_initially_empty(storage6_0)_: -+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 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 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 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 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 GenericInvestmentStorageBlock_storage_content(storage6_4) -+1 GenericInvestmentStorageBlock_storage_content(storage6_5) -= 0 - -c_e_GenericInvestmentStorageBlock_power_coupled(storage6_0)_: -+1.1 InvestmentFlowBlock_total(storage6_electricityBus_0) --1 InvestmentFlowBlock_total(electricityBus_storage6_0) -= 0 - -c_e_GenericInvestmentStorageBlock_power_coupled(storage6_1)_: -+1.1 InvestmentFlowBlock_total(storage6_electricityBus_1) --1 InvestmentFlowBlock_total(electricityBus_storage6_1) -= 0 - -c_e_GenericInvestmentStorageBlock_power_coupled(storage6_2)_: -+1.1 InvestmentFlowBlock_total(storage6_electricityBus_2) --1 InvestmentFlowBlock_total(electricityBus_storage6_2) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage6_0_0)_: --1 GenericInvestmentStorageBlock_total(storage6_0) -+1 GenericInvestmentStorageBlock_storage_content(storage6_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage6_0_1)_: --1 GenericInvestmentStorageBlock_total(storage6_0) -+1 GenericInvestmentStorageBlock_storage_content(storage6_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage6_1_2)_: --1 GenericInvestmentStorageBlock_total(storage6_1) -+1 GenericInvestmentStorageBlock_storage_content(storage6_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage6_1_3)_: --1 GenericInvestmentStorageBlock_total(storage6_1) -+1 GenericInvestmentStorageBlock_storage_content(storage6_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage6_2_4)_: --1 GenericInvestmentStorageBlock_total(storage6_2) -+1 GenericInvestmentStorageBlock_storage_content(storage6_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage6_2_5)_: --1 GenericInvestmentStorageBlock_total(storage6_2) -+1 GenericInvestmentStorageBlock_storage_content(storage6_5) -<= 0 - -bounds - 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 <= 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(electricityBus_storage6_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage6_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage6_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(storage6_electricityBus_2) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_storage6_0) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_storage6_1) <= +inf - 0 <= InvestmentFlowBlock_old_end(electricityBus_storage6_2) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage6_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage6_electricityBus_1) <= +inf - 0 <= InvestmentFlowBlock_old_exo(storage6_electricityBus_2) <= +inf - 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_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage6_0) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage6_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage6_2) <= +inf - 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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage6_3) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage6_4) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage6_5) <= +inf -end diff --git a/tests/lp_files/storage_invest_all_nonconvex.lp b/tests/lp_files/storage_invest_all_nonconvex.lp deleted file mode 100644 index 9711a6c35..000000000 --- a/tests/lp_files/storage_invest_all_nonconvex.lp +++ /dev/null @@ -1,174 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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_status(bus1_storage_all_nonconvex_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) -= 0 - -c_e_BusBlock_balance(bus1_0_1)_: -+1 flow(storage_all_nonconvex_bus1_0_1) --1 flow(bus1_storage_all_nonconvex_0_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) -= 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) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(bus1_storage_all_nonconvex_0)_: -+1 InvestmentFlowBlock_invest(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_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_u_InvestmentFlowBlock_max(bus1_storage_all_nonconvex_0_0)_: -+1 flow(bus1_storage_all_nonconvex_0_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 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 InvestmentFlowBlock_total(bus1_storage_all_nonconvex_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) -= 0 - -c_u_GenericInvestmentStorageBlock_init_content_limit(storage_all_nonconvex)_: --1 GenericInvestmentStorageBlock_invest(storage_all_nonconvex_0) -+1 GenericInvestmentStorageBlock_init_content(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 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 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 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_balanced_cstr(storage_all_nonconvex)_: --1 GenericInvestmentStorageBlock_init_content(storage_all_nonconvex) -+1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_2) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_all_nonconvex_0_0)_: --1 GenericInvestmentStorageBlock_total(storage_all_nonconvex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_all_nonconvex_0_1)_: --1 GenericInvestmentStorageBlock_total(storage_all_nonconvex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_all_nonconvex_0_2)_: --1 GenericInvestmentStorageBlock_total(storage_all_nonconvex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_2) -<= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_all_nonconvex_0)_: --1 GenericInvestmentStorageBlock_invest(storage_all_nonconvex_0) -+100 GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_0) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_all_nonconvex_0)_: -+1 GenericInvestmentStorageBlock_invest(storage_all_nonconvex_0) --20 GenericInvestmentStorageBlock_invest_status(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_status(bus1_storage_all_nonconvex_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 <= InvestmentFlowBlock_total(bus1_storage_all_nonconvex_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) - 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 deleted file mode 100644 index b78eca2f7..000000000 --- a/tests/lp_files/storage_invest_all_nonconvex_multi_period.lp +++ /dev/null @@ -1,541 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+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) -+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) -+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) -= 0 - -c_e_BusBlock_balance(bus1_0_1)_: -+1 flow(storage_all_nonconvex_bus1_0_1) --1 flow(bus1_storage_all_nonconvex_0_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) -= 0 - -c_e_BusBlock_balance(bus1_1_3)_: -+1 flow(storage_all_nonconvex_bus1_1_3) --1 flow(bus1_storage_all_nonconvex_1_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) -= 0 - -c_e_BusBlock_balance(bus1_2_5)_: -+1 flow(storage_all_nonconvex_bus1_2_5) --1 flow(bus1_storage_all_nonconvex_2_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) -<= 0 - -c_u_InvestmentFlowBlock_minimum_rule(bus1_storage_all_nonconvex_1)_: --1 InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_1) -+5 InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_1) -<= 0 - -c_u_InvestmentFlowBlock_minimum_rule(bus1_storage_all_nonconvex_2)_: --1 InvestmentFlowBlock_invest(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) -<= 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_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_u_InvestmentFlowBlock_maximum_rule(bus1_storage_all_nonconvex_0)_: -+1 InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_0) --30 InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_0) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(bus1_storage_all_nonconvex_1)_: -+1 InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_1) --30 InvestmentFlowBlock_invest_status(bus1_storage_all_nonconvex_1) -<= 0 - -c_u_InvestmentFlowBlock_maximum_rule(bus1_storage_all_nonconvex_2)_: -+1 InvestmentFlowBlock_invest(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_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_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_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_e_InvestmentFlowBlock_total_rule(bus1_storage_all_nonconvex_1)_: --1 InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_1) --1 InvestmentFlowBlock_total(bus1_storage_all_nonconvex_0) -+1 InvestmentFlowBlock_total(bus1_storage_all_nonconvex_1) -+1 InvestmentFlowBlock_old(bus1_storage_all_nonconvex_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(bus1_storage_all_nonconvex_2)_: --1 InvestmentFlowBlock_invest(bus1_storage_all_nonconvex_2) --1 InvestmentFlowBlock_total(bus1_storage_all_nonconvex_1) -+1 InvestmentFlowBlock_total(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) -= 0 - -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_end(storage_all_nonconvex_bus1_2)_: -+1 InvestmentFlowBlock_old_end(storage_all_nonconvex_bus1_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(bus1_storage_all_nonconvex_0)_: -+1 InvestmentFlowBlock_old_end(bus1_storage_all_nonconvex_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(bus1_storage_all_nonconvex_1)_: -+1 InvestmentFlowBlock_old_end(bus1_storage_all_nonconvex_1) -= 0 - -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) -= 0 - -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_exo(storage_all_nonconvex_bus1_2)_: -+1 InvestmentFlowBlock_old_exo(storage_all_nonconvex_bus1_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(bus1_storage_all_nonconvex_0)_: -+1 InvestmentFlowBlock_old_exo(bus1_storage_all_nonconvex_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(bus1_storage_all_nonconvex_1)_: -+1 InvestmentFlowBlock_old_exo(bus1_storage_all_nonconvex_1) -= 0 - -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) -= 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_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_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(bus1_storage_all_nonconvex_1) --1 InvestmentFlowBlock_old_end(bus1_storage_all_nonconvex_1) --1 InvestmentFlowBlock_old_exo(bus1_storage_all_nonconvex_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(bus1_storage_all_nonconvex_2)_: -+1 InvestmentFlowBlock_old(bus1_storage_all_nonconvex_2) --1 InvestmentFlowBlock_old_end(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_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_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_u_InvestmentFlowBlock_max(bus1_storage_all_nonconvex_0_0)_: -+1 flow(bus1_storage_all_nonconvex_0_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 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 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 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 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 InvestmentFlowBlock_total(bus1_storage_all_nonconvex_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) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_all_nonconvex_1)_: --1 GenericInvestmentStorageBlock_invest(storage_all_nonconvex_1) --1 GenericInvestmentStorageBlock_total(storage_all_nonconvex_0) -+1 GenericInvestmentStorageBlock_total(storage_all_nonconvex_1) -+1 GenericInvestmentStorageBlock_old(storage_all_nonconvex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_all_nonconvex_2)_: --1 GenericInvestmentStorageBlock_invest(storage_all_nonconvex_2) --1 GenericInvestmentStorageBlock_total(storage_all_nonconvex_1) -+1 GenericInvestmentStorageBlock_total(storage_all_nonconvex_2) -+1 GenericInvestmentStorageBlock_old(storage_all_nonconvex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_all_nonconvex_0)_: -+1 GenericInvestmentStorageBlock_old_end(storage_all_nonconvex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_all_nonconvex_1)_: -+1 GenericInvestmentStorageBlock_old_end(storage_all_nonconvex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_all_nonconvex_2)_: -+1 GenericInvestmentStorageBlock_old_end(storage_all_nonconvex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_all_nonconvex_0)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_all_nonconvex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_all_nonconvex_1)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_all_nonconvex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_all_nonconvex_2)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_all_nonconvex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(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)_: -+1 GenericInvestmentStorageBlock_old(storage_all_nonconvex_1) --1 GenericInvestmentStorageBlock_old_end(storage_all_nonconvex_1) --1 GenericInvestmentStorageBlock_old_exo(storage_all_nonconvex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage_all_nonconvex_2)_: -+1 GenericInvestmentStorageBlock_old(storage_all_nonconvex_2) --1 GenericInvestmentStorageBlock_old_end(storage_all_nonconvex_2) --1 GenericInvestmentStorageBlock_old_exo(storage_all_nonconvex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_initially_empty(storage_all_nonconvex_0)_: -+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 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 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 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 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 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_4) -+1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_5) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_all_nonconvex_0_0)_: --1 GenericInvestmentStorageBlock_total(storage_all_nonconvex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_all_nonconvex_0_1)_: --1 GenericInvestmentStorageBlock_total(storage_all_nonconvex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_all_nonconvex_1_2)_: --1 GenericInvestmentStorageBlock_total(storage_all_nonconvex_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_all_nonconvex_1_3)_: --1 GenericInvestmentStorageBlock_total(storage_all_nonconvex_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_all_nonconvex_2_4)_: --1 GenericInvestmentStorageBlock_total(storage_all_nonconvex_2) -+1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_all_nonconvex_2_5)_: --1 GenericInvestmentStorageBlock_total(storage_all_nonconvex_2) -+1 GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_5) -<= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_all_nonconvex_0)_: --1 GenericInvestmentStorageBlock_invest(storage_all_nonconvex_0) -+100 GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_0) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_all_nonconvex_1)_: --1 GenericInvestmentStorageBlock_invest(storage_all_nonconvex_1) -+100 GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_1) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_all_nonconvex_2)_: --1 GenericInvestmentStorageBlock_invest(storage_all_nonconvex_2) -+100 GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_2) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_all_nonconvex_0)_: -+1 GenericInvestmentStorageBlock_invest(storage_all_nonconvex_0) --20 GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_0) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_all_nonconvex_1)_: -+1 GenericInvestmentStorageBlock_invest(storage_all_nonconvex_1) --20 GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_1) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_all_nonconvex_2)_: -+1 GenericInvestmentStorageBlock_invest(storage_all_nonconvex_2) --20 GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_2) ->= 0 - -bounds - 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 <= 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_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 <= 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_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_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_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 <= 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_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_all_nonconvex_0) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_all_nonconvex_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_all_nonconvex_2) <= +inf - 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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage_all_nonconvex_3) <= +inf - 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) - GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_0) - GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_1) - GenericInvestmentStorageBlock_invest_status(storage_all_nonconvex_2) -end diff --git a/tests/lp_files/storage_invest_minimum.lp b/tests/lp_files/storage_invest_minimum.lp deleted file mode 100644 index b20a7966f..000000000 --- a/tests/lp_files/storage_invest_minimum.lp +++ /dev/null @@ -1,88 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+145 GenericInvestmentStorageBlock_invest(storage1_0) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(storage1_electricityBus_0_2) --1 flow(electricityBus_storage1_0_2) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_0)_: --1 GenericInvestmentStorageBlock_invest(storage1_0) -+1 GenericInvestmentStorageBlock_total(storage1_0) -= 0 - -c_u_GenericInvestmentStorageBlock_init_content_limit(storage1)_: --1 GenericInvestmentStorageBlock_invest(storage1_0) -+1 GenericInvestmentStorageBlock_init_content(storage1) -<= 0 - -c_e_GenericInvestmentStorageBlock_balance_first(storage1)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_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 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 GenericInvestmentStorageBlock_storage_content(storage1_1) -+1 GenericInvestmentStorageBlock_storage_content(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_balanced_cstr(storage1)_: --1 GenericInvestmentStorageBlock_init_content(storage1) -+1 GenericInvestmentStorageBlock_storage_content(storage1_2) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_0)_: --1 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_1)_: --1 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_2)_: --1 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_2) -<= 0 - -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 <= GenericInvestmentStorageBlock_total(storage1_0) <= +inf - 0 <= GenericInvestmentStorageBlock_init_content(storage1) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_0) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_1) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_2) <= +inf -end diff --git a/tests/lp_files/storage_invest_minimum_multi_period.lp b/tests/lp_files/storage_invest_minimum_multi_period.lp deleted file mode 100644 index c61a64544..000000000 --- a/tests/lp_files/storage_invest_minimum_multi_period.lp +++ /dev/null @@ -1,205 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+15.2862638908257 GenericInvestmentStorageBlock_invest(storage1_0) -+10.089613468653715 GenericInvestmentStorageBlock_invest(storage1_1) -+4.994858152798875 GenericInvestmentStorageBlock_invest(storage1_2) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(storage1_electricityBus_1_2) --1 flow(electricityBus_storage1_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(storage1_electricityBus_1_3) --1 flow(electricityBus_storage1_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(storage1_electricityBus_2_4) --1 flow(electricityBus_storage1_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(storage1_electricityBus_2_5) --1 flow(electricityBus_storage1_2_5) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_0)_: --1 GenericInvestmentStorageBlock_invest(storage1_0) -+1 GenericInvestmentStorageBlock_total(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_1)_: --1 GenericInvestmentStorageBlock_invest(storage1_1) --1 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_total(storage1_1) -+1 GenericInvestmentStorageBlock_old(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_2)_: --1 GenericInvestmentStorageBlock_invest(storage1_2) --1 GenericInvestmentStorageBlock_total(storage1_1) -+1 GenericInvestmentStorageBlock_total(storage1_2) -+1 GenericInvestmentStorageBlock_old(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage1_0)_: -+1 GenericInvestmentStorageBlock_old_end(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage1_1)_: -+1 GenericInvestmentStorageBlock_old_end(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage1_2)_: -+1 GenericInvestmentStorageBlock_old_end(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage1_0)_: -+1 GenericInvestmentStorageBlock_old_exo(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage1_1)_: -+1 GenericInvestmentStorageBlock_old_exo(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage1_2)_: -+1 GenericInvestmentStorageBlock_old_exo(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(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)_: -+1 GenericInvestmentStorageBlock_old(storage1_1) --1 GenericInvestmentStorageBlock_old_end(storage1_1) --1 GenericInvestmentStorageBlock_old_exo(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage1_2)_: -+1 GenericInvestmentStorageBlock_old(storage1_2) --1 GenericInvestmentStorageBlock_old_end(storage1_2) --1 GenericInvestmentStorageBlock_old_exo(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_initially_empty(storage1_0)_: -+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 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 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 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 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 GenericInvestmentStorageBlock_storage_content(storage1_4) -+1 GenericInvestmentStorageBlock_storage_content(storage1_5) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_0)_: --1 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_1)_: --1 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_1_2)_: --1 GenericInvestmentStorageBlock_total(storage1_1) -+1 GenericInvestmentStorageBlock_storage_content(storage1_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_1_3)_: --1 GenericInvestmentStorageBlock_total(storage1_1) -+1 GenericInvestmentStorageBlock_storage_content(storage1_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_2_4)_: --1 GenericInvestmentStorageBlock_total(storage1_2) -+1 GenericInvestmentStorageBlock_storage_content(storage1_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_2_5)_: --1 GenericInvestmentStorageBlock_total(storage1_2) -+1 GenericInvestmentStorageBlock_storage_content(storage1_5) -<= 0 - -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 <= 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_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage1_0) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage1_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage1_2) <= +inf - 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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_3) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_4) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_5) <= +inf -end diff --git a/tests/lp_files/storage_invest_multi_period.lp b/tests/lp_files/storage_invest_multi_period.lp deleted file mode 100644 index e8b1246e4..000000000 --- a/tests/lp_files/storage_invest_multi_period.lp +++ /dev/null @@ -1,223 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+250.0 ONE_VAR_CONSTANT -+29.994068581329355 GenericInvestmentStorageBlock_invest(storage1_0) -+19.797418159157367 GenericInvestmentStorageBlock_invest(storage1_1) -+9.8007020589888 GenericInvestmentStorageBlock_invest(storage1_2) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(storage1_electricityBus_1_2) --1 flow(electricityBus_storage1_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(storage1_electricityBus_1_3) --1 flow(electricityBus_storage1_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(storage1_electricityBus_2_4) --1 flow(electricityBus_storage1_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(storage1_electricityBus_2_5) --1 flow(electricityBus_storage1_2_5) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_0)_: --1 GenericInvestmentStorageBlock_invest(storage1_0) -+1 GenericInvestmentStorageBlock_total(storage1_0) -= 50 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_1)_: --1 GenericInvestmentStorageBlock_invest(storage1_1) --1 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_total(storage1_1) -+1 GenericInvestmentStorageBlock_old(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_2)_: --1 GenericInvestmentStorageBlock_invest(storage1_2) --1 GenericInvestmentStorageBlock_total(storage1_1) -+1 GenericInvestmentStorageBlock_total(storage1_2) -+1 GenericInvestmentStorageBlock_old(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage1_0)_: -+1 GenericInvestmentStorageBlock_old_end(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage1_1)_: -+1 GenericInvestmentStorageBlock_old_end(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage1_2)_: -+1 GenericInvestmentStorageBlock_old_end(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage1_0)_: -+1 GenericInvestmentStorageBlock_old_exo(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage1_1)_: -+1 GenericInvestmentStorageBlock_old_exo(storage1_1) -= 50 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage1_2)_: -+1 GenericInvestmentStorageBlock_old_exo(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(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)_: -+1 GenericInvestmentStorageBlock_old(storage1_1) --1 GenericInvestmentStorageBlock_old_end(storage1_1) --1 GenericInvestmentStorageBlock_old_exo(storage1_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage1_2)_: -+1 GenericInvestmentStorageBlock_old(storage1_2) --1 GenericInvestmentStorageBlock_old_end(storage1_2) --1 GenericInvestmentStorageBlock_old_exo(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_initially_empty(storage1_0)_: -+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 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 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 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 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 GenericInvestmentStorageBlock_storage_content(storage1_4) -+1 GenericInvestmentStorageBlock_storage_content(storage1_5) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_0)_: --1 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_1)_: --1 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_1_2)_: --1 GenericInvestmentStorageBlock_total(storage1_1) -+1 GenericInvestmentStorageBlock_storage_content(storage1_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_1_3)_: --1 GenericInvestmentStorageBlock_total(storage1_1) -+1 GenericInvestmentStorageBlock_storage_content(storage1_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_2_4)_: --1 GenericInvestmentStorageBlock_total(storage1_2) -+1 GenericInvestmentStorageBlock_storage_content(storage1_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_2_5)_: --1 GenericInvestmentStorageBlock_total(storage1_2) -+1 GenericInvestmentStorageBlock_storage_content(storage1_5) -<= 0 - -c_u_GenericInvestmentStorageBlock_overall_storage_maximum(storage1_0)_: -+1 GenericInvestmentStorageBlock_total(storage1_0) -<= 500 - -c_u_GenericInvestmentStorageBlock_overall_storage_maximum(storage1_1)_: -+1 GenericInvestmentStorageBlock_total(storage1_1) -<= 500 - -c_u_GenericInvestmentStorageBlock_overall_storage_maximum(storage1_2)_: -+1 GenericInvestmentStorageBlock_total(storage1_2) -<= 500 - -c_l_GenericInvestmentStorageBlock_overall_minimum(storage1)_: -+1 GenericInvestmentStorageBlock_total(storage1_2) ->= 10 - -bounds - 1 <= ONE_VAR_CONSTANT <= 1 - 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 <= 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_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage1_0) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage1_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage1_2) <= +inf - 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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_3) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_4) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_5) <= +inf -end diff --git a/tests/lp_files/storage_invest_unbalanced.lp b/tests/lp_files/storage_invest_unbalanced.lp deleted file mode 100644 index 2dbed4e9b..000000000 --- a/tests/lp_files/storage_invest_unbalanced.lp +++ /dev/null @@ -1,137 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+145 GenericInvestmentStorageBlock_invest(storage1_0) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(storage1_electricityBus_0_2) --1 flow(electricityBus_storage1_0_2) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage1_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage1_0) --1 InvestmentFlowBlock_invest(electricityBus_storage1_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(storage1_electricityBus_0)_: -+1 InvestmentFlowBlock_total(storage1_electricityBus_0) --1 InvestmentFlowBlock_invest(storage1_electricityBus_0) -= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_0)_: -+1 flow(electricityBus_storage1_0_0) --1 InvestmentFlowBlock_total(electricityBus_storage1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_1)_: -+1 flow(electricityBus_storage1_0_1) --1 InvestmentFlowBlock_total(electricityBus_storage1_0) -<= 0 - -c_u_InvestmentFlowBlock_max(electricityBus_storage1_0_2)_: -+1 flow(electricityBus_storage1_0_2) --1 InvestmentFlowBlock_total(electricityBus_storage1_0) -<= 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_0_2)_: -+1 flow(storage1_electricityBus_0_2) --1 InvestmentFlowBlock_total(storage1_electricityBus_0) -<= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage1_0)_: --1 GenericInvestmentStorageBlock_invest(storage1_0) -+1 GenericInvestmentStorageBlock_total(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_init_content_fix(storage1)_: --0.5 GenericInvestmentStorageBlock_invest(storage1_0) -+1 GenericInvestmentStorageBlock_init_content(storage1) -= 0 - -c_e_GenericInvestmentStorageBlock_balance_first(storage1)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_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 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 GenericInvestmentStorageBlock_storage_content(storage1_1) -+1 GenericInvestmentStorageBlock_storage_content(storage1_2) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage1_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage1_0) --1 GenericInvestmentStorageBlock_total(storage1_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage1_0)_: -+1 InvestmentFlowBlock_total(storage1_electricityBus_0) --1 GenericInvestmentStorageBlock_total(storage1_0) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_0)_: --1 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_1)_: --1 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage1_0_2)_: --1 GenericInvestmentStorageBlock_total(storage1_0) -+1 GenericInvestmentStorageBlock_storage_content(storage1_2) -<= 0 - -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 <= InvestmentFlowBlock_total(electricityBus_storage1_0) <= +inf - 0 <= InvestmentFlowBlock_invest(electricityBus_storage1_0) <= +inf - 0 <= InvestmentFlowBlock_total(storage1_electricityBus_0) <= +inf - 0 <= InvestmentFlowBlock_invest(storage1_electricityBus_0) <= +inf - 0 <= GenericInvestmentStorageBlock_total(storage1_0) <= +inf - 0 <= GenericInvestmentStorageBlock_init_content(storage1) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_0) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_1) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage1_2) <= +inf -end diff --git a/tests/lp_files/storage_invest_with_offset.lp b/tests/lp_files/storage_invest_with_offset.lp deleted file mode 100644 index 18cc0c966..000000000 --- a/tests/lp_files/storage_invest_with_offset.lp +++ /dev/null @@ -1,177 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_non_convex_0_1) -+1 flow(storage_non_convex_electricityBus_0_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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(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_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_0)_: -+1 flow(electricityBus_storage_non_convex_0_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 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 InvestmentFlowBlock_total(electricityBus_storage_non_convex_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) -= 0 - -c_u_GenericInvestmentStorageBlock_init_content_limit(storage_non_convex)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_init_content(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.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.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.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_balanced_cstr(storage_non_convex)_: --1 GenericInvestmentStorageBlock_init_content(storage_non_convex) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_0) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_0_0)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_0_1)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_0_2)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_0_0)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_0) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_0_1)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_0) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_0_2)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_0) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) -<= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_non_convex_0)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) -+1454 GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_0)_: -+1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) --19 GenericInvestmentStorageBlock_invest_status(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 <= 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_invest(electricityBus_storage_non_convex_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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) <= +inf -binary - GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) -end diff --git a/tests/lp_files/storage_invest_with_offset_multi_period.lp b/tests/lp_files/storage_invest_with_offset_multi_period.lp deleted file mode 100644 index 0391a3236..000000000 --- a/tests/lp_files/storage_invest_with_offset_multi_period.lp +++ /dev/null @@ -1,529 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) -+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) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_storage_non_convex_1_2) -+1 flow(storage_non_convex_electricityBus_1_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) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_storage_non_convex_2_4) -+1 flow(storage_non_convex_electricityBus_2_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(electricityBus_storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) --1 InvestmentFlowBlock_invest(electricityBus_storage_non_convex_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_1)_: --1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) --1 InvestmentFlowBlock_invest(electricityBus_storage_non_convex_1) -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_2)_: --1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) --1 InvestmentFlowBlock_invest(electricityBus_storage_non_convex_2) -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_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) -= 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) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage_non_convex_0)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage_non_convex_1)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_1) -= 0 - -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_end(storage_non_convex_electricityBus_0)_: -+1 InvestmentFlowBlock_old_end(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) -= 0 - -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)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage_non_convex_1)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_1) -= 0 - -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_exo(storage_non_convex_electricityBus_0)_: -+1 InvestmentFlowBlock_old_exo(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) -= 0 - -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_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)_: -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_1) --1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_1) --1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(electricityBus_storage_non_convex_2)_: -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_2) --1 InvestmentFlowBlock_old_end(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) -= 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_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 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 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 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 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 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 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 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_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_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_GenericInvestmentStorageBlock_total_storage_rule(storage_non_convex_0)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_total(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_non_convex_1)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_1) --1 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_total(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_old(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_non_convex_2)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_2) --1 GenericInvestmentStorageBlock_total(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_total(storage_non_convex_2) -+1 GenericInvestmentStorageBlock_old(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_non_convex_0)_: -+1 GenericInvestmentStorageBlock_old_end(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_non_convex_1)_: -+1 GenericInvestmentStorageBlock_old_end(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_non_convex_2)_: -+1 GenericInvestmentStorageBlock_old_end(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_non_convex_0)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_non_convex_1)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_non_convex_2)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(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)_: -+1 GenericInvestmentStorageBlock_old(storage_non_convex_1) --1 GenericInvestmentStorageBlock_old_end(storage_non_convex_1) --1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage_non_convex_2)_: -+1 GenericInvestmentStorageBlock_old(storage_non_convex_2) --1 GenericInvestmentStorageBlock_old_end(storage_non_convex_2) --1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_initially_empty(storage_non_convex_0)_: -+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.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.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.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.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.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_non_convex_1)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_non_convex_2)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_non_convex_1)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_non_convex_2)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_2) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_0_0)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_0_1)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_1_2)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_1_3)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_2_4)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_2) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_2_5)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_2) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_0_0)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_0) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_0_1)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_0) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_1_2)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_1) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_1_3)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_1) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_2_4)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_2) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_2_5)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_2) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) -<= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_non_convex_0)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) -+1454 GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_non_convex_1)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_1) -+1454 GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_non_convex_2)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_2) -+1454 GenericInvestmentStorageBlock_invest_status(storage_non_convex_2) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_0)_: -+1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) --19 GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_1)_: -+1 GenericInvestmentStorageBlock_invest(storage_non_convex_1) --19 GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_2)_: -+1 GenericInvestmentStorageBlock_invest(storage_non_convex_2) --19 GenericInvestmentStorageBlock_invest_status(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 <= 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_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(storage_non_convex_electricityBus_2) <= +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_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_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_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_0) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_2) <= +inf - 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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) <= +inf -binary - GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) - GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) - GenericInvestmentStorageBlock_invest_status(storage_non_convex_2) -end 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 deleted file mode 100644 index 9347789d9..000000000 --- a/tests/lp_files/storage_invest_with_offset_multi_period_remaining_value.lp +++ /dev/null @@ -1,529 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) -+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) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: --1 flow(electricityBus_storage_non_convex_1_2) -+1 flow(storage_non_convex_electricityBus_1_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) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: --1 flow(electricityBus_storage_non_convex_2_4) -+1 flow(storage_non_convex_electricityBus_2_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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) --1 InvestmentFlowBlock_invest(electricityBus_storage_non_convex_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_1)_: --1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) --1 InvestmentFlowBlock_invest(electricityBus_storage_non_convex_1) -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_2)_: --1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) --1 InvestmentFlowBlock_invest(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) -= 0 - -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_end(storage_non_convex_electricityBus_2)_: -+1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage_non_convex_0)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage_non_convex_1)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_1) -= 0 - -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) -= 0 - -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_exo(storage_non_convex_electricityBus_2)_: -+1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage_non_convex_0)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage_non_convex_1)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_1) -= 0 - -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) -= 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_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_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_1) --1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_1) --1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(electricityBus_storage_non_convex_2)_: -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_2) --1 InvestmentFlowBlock_old_end(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_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_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_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_0)_: -+1 flow(electricityBus_storage_non_convex_0_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 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 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 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 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 InvestmentFlowBlock_total(electricityBus_storage_non_convex_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) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_non_convex_1)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_1) --1 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_total(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_old(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_non_convex_2)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_2) --1 GenericInvestmentStorageBlock_total(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_total(storage_non_convex_2) -+1 GenericInvestmentStorageBlock_old(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_non_convex_0)_: -+1 GenericInvestmentStorageBlock_old_end(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_non_convex_1)_: -+1 GenericInvestmentStorageBlock_old_end(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_non_convex_2)_: -+1 GenericInvestmentStorageBlock_old_end(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_non_convex_0)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_non_convex_1)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_non_convex_2)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(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)_: -+1 GenericInvestmentStorageBlock_old(storage_non_convex_1) --1 GenericInvestmentStorageBlock_old_end(storage_non_convex_1) --1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage_non_convex_2)_: -+1 GenericInvestmentStorageBlock_old(storage_non_convex_2) --1 GenericInvestmentStorageBlock_old_end(storage_non_convex_2) --1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_initially_empty(storage_non_convex_0)_: -+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.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.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.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.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.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_non_convex_1)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_non_convex_2)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_non_convex_1)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_non_convex_2)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_2) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_0_0)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_0_1)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_1_2)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_1_3)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_2_4)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_2) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_2_5)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_2) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_0_0)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_0) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_0_1)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_0) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_1_2)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_1) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_1_3)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_1) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_2_4)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_2) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_2_5)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_2) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) -<= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_non_convex_0)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) -+1454 GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_non_convex_1)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_1) -+1454 GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_non_convex_2)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_2) -+1454 GenericInvestmentStorageBlock_invest_status(storage_non_convex_2) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_0)_: -+1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) --19 GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_1)_: -+1 GenericInvestmentStorageBlock_invest(storage_non_convex_1) --19 GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_2)_: -+1 GenericInvestmentStorageBlock_invest(storage_non_convex_2) --19 GenericInvestmentStorageBlock_invest_status(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 <= 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_2) <= 1 - 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_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_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_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 <= 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_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_0) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_2) <= +inf - 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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) <= +inf -binary - GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) - GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) - GenericInvestmentStorageBlock_invest_status(storage_non_convex_2) -end diff --git a/tests/lp_files/storage_invest_without_offset.lp b/tests/lp_files/storage_invest_without_offset.lp deleted file mode 100644 index 248ce6848..000000000 --- a/tests/lp_files/storage_invest_without_offset.lp +++ /dev/null @@ -1,176 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_non_convex_0_1) -+1 flow(storage_non_convex_electricityBus_0_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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(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_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_0)_: -+1 flow(electricityBus_storage_non_convex_0_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 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 InvestmentFlowBlock_total(electricityBus_storage_non_convex_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) -= 0 - -c_u_GenericInvestmentStorageBlock_init_content_limit(storage_non_convex)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_init_content(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.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.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.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_balanced_cstr(storage_non_convex)_: --1 GenericInvestmentStorageBlock_init_content(storage_non_convex) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_0) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_0_0)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_0_1)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_0_2)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_0_0)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_0) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_0_1)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_0) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_0_2)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_0) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) -<= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_non_convex_0)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) -+244 GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_0)_: -+1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) --12 GenericInvestmentStorageBlock_invest_status(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 <= 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_invest(electricityBus_storage_non_convex_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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) <= +inf - 0 <= GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) <= 1 -binary - GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) -end diff --git a/tests/lp_files/storage_invest_without_offset_multi_period.lp b/tests/lp_files/storage_invest_without_offset_multi_period.lp deleted file mode 100644 index f4a182548..000000000 --- a/tests/lp_files/storage_invest_without_offset_multi_period.lp +++ /dev/null @@ -1,526 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_non_convex_0_1) -+1 flow(storage_non_convex_electricityBus_0_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) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_storage_non_convex_1_3) -+1 flow(storage_non_convex_electricityBus_1_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) -= 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(electricityBus_storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) --1 InvestmentFlowBlock_invest(electricityBus_storage_non_convex_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_1)_: --1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) --1 InvestmentFlowBlock_invest(electricityBus_storage_non_convex_1) -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_2)_: --1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) --1 InvestmentFlowBlock_invest(electricityBus_storage_non_convex_2) -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_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) -= 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) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage_non_convex_0)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage_non_convex_1)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_1) -= 0 - -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_end(storage_non_convex_electricityBus_0)_: -+1 InvestmentFlowBlock_old_end(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) -= 0 - -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)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage_non_convex_1)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_1) -= 0 - -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_exo(storage_non_convex_electricityBus_0)_: -+1 InvestmentFlowBlock_old_exo(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) -= 0 - -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_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)_: -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_1) --1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_1) --1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(electricityBus_storage_non_convex_2)_: -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_2) --1 InvestmentFlowBlock_old_end(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) -= 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_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 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 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 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 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 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 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 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_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_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_GenericInvestmentStorageBlock_total_storage_rule(storage_non_convex_0)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_total(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_non_convex_1)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_1) --1 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_total(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_old(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_non_convex_2)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_2) --1 GenericInvestmentStorageBlock_total(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_total(storage_non_convex_2) -+1 GenericInvestmentStorageBlock_old(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_non_convex_0)_: -+1 GenericInvestmentStorageBlock_old_end(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_non_convex_1)_: -+1 GenericInvestmentStorageBlock_old_end(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_non_convex_2)_: -+1 GenericInvestmentStorageBlock_old_end(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_non_convex_0)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_non_convex_1)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_non_convex_2)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(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)_: -+1 GenericInvestmentStorageBlock_old(storage_non_convex_1) --1 GenericInvestmentStorageBlock_old_end(storage_non_convex_1) --1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage_non_convex_2)_: -+1 GenericInvestmentStorageBlock_old(storage_non_convex_2) --1 GenericInvestmentStorageBlock_old_end(storage_non_convex_2) --1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_initially_empty(storage_non_convex_0)_: -+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.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.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.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.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.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_non_convex_1)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_non_convex_2)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_non_convex_1)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_non_convex_2)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_2) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_0_0)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_0_1)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_1_2)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_1_3)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_2_4)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_2) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_2_5)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_2) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_0_0)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_0) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_0_1)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_0) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_1_2)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_1) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_1_3)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_1) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_2_4)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_2) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_2_5)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_2) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) -<= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_non_convex_0)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) -+244 GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_non_convex_1)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_1) -+244 GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_non_convex_2)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_2) -+244 GenericInvestmentStorageBlock_invest_status(storage_non_convex_2) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_0)_: -+1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) --12 GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_1)_: -+1 GenericInvestmentStorageBlock_invest(storage_non_convex_1) --12 GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_2)_: -+1 GenericInvestmentStorageBlock_invest(storage_non_convex_2) --12 GenericInvestmentStorageBlock_invest_status(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 <= 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(storage_non_convex_electricityBus_2) <= +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_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_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_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_0) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_2) <= +inf - 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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) <= +inf - 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 -binary - GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) - GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) - GenericInvestmentStorageBlock_invest_status(storage_non_convex_2) -end 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 deleted file mode 100644 index 179c59847..000000000 --- a/tests/lp_files/storage_invest_without_offset_multi_period_remaining_value.lp +++ /dev/null @@ -1,526 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) -+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) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_non_convex_0_1) -+1 flow(storage_non_convex_electricityBus_0_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) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_storage_non_convex_1_3) -+1 flow(storage_non_convex_electricityBus_1_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) -= 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) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) --1 InvestmentFlowBlock_invest(electricityBus_storage_non_convex_0) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_1)_: --1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) --1 InvestmentFlowBlock_invest(electricityBus_storage_non_convex_1) -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_1) -= 0 - -c_e_InvestmentFlowBlock_total_rule(electricityBus_storage_non_convex_2)_: --1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) --1 InvestmentFlowBlock_invest(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) -= 0 - -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_end(storage_non_convex_electricityBus_2)_: -+1 InvestmentFlowBlock_old_end(storage_non_convex_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage_non_convex_0)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_end(electricityBus_storage_non_convex_1)_: -+1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_1) -= 0 - -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) -= 0 - -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_exo(storage_non_convex_electricityBus_2)_: -+1 InvestmentFlowBlock_old_exo(storage_non_convex_electricityBus_2) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage_non_convex_0)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_0) -= 0 - -c_e_InvestmentFlowBlock_old_rule_exo(electricityBus_storage_non_convex_1)_: -+1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_1) -= 0 - -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) -= 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_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_e_InvestmentFlowBlock_old_rule(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)_: -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_1) --1 InvestmentFlowBlock_old_end(electricityBus_storage_non_convex_1) --1 InvestmentFlowBlock_old_exo(electricityBus_storage_non_convex_1) -= 0 - -c_e_InvestmentFlowBlock_old_rule(electricityBus_storage_non_convex_2)_: -+1 InvestmentFlowBlock_old(electricityBus_storage_non_convex_2) --1 InvestmentFlowBlock_old_end(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_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_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_u_InvestmentFlowBlock_max(electricityBus_storage_non_convex_0_0)_: -+1 flow(electricityBus_storage_non_convex_0_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 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 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 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 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 InvestmentFlowBlock_total(electricityBus_storage_non_convex_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) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_non_convex_1)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_1) --1 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_total(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_old(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_total_storage_rule(storage_non_convex_2)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_2) --1 GenericInvestmentStorageBlock_total(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_total(storage_non_convex_2) -+1 GenericInvestmentStorageBlock_old(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_non_convex_0)_: -+1 GenericInvestmentStorageBlock_old_end(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_non_convex_1)_: -+1 GenericInvestmentStorageBlock_old_end(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_end(storage_non_convex_2)_: -+1 GenericInvestmentStorageBlock_old_end(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_non_convex_0)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_non_convex_1)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule_exo(storage_non_convex_2)_: -+1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(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)_: -+1 GenericInvestmentStorageBlock_old(storage_non_convex_1) --1 GenericInvestmentStorageBlock_old_end(storage_non_convex_1) --1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_old_rule(storage_non_convex_2)_: -+1 GenericInvestmentStorageBlock_old(storage_non_convex_2) --1 GenericInvestmentStorageBlock_old_end(storage_non_convex_2) --1 GenericInvestmentStorageBlock_old_exo(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_initially_empty(storage_non_convex_0)_: -+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.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.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.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.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.87 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_non_convex_1)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_1) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_inflow(storage_non_convex_2)_: -+1 InvestmentFlowBlock_total(electricityBus_storage_non_convex_2) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_2) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_non_convex_0)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_0) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_0) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_non_convex_1)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_1) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_1) -= 0 - -c_e_GenericInvestmentStorageBlock_storage_capacity_outflow(storage_non_convex_2)_: -+1 InvestmentFlowBlock_total(storage_non_convex_electricityBus_2) --0.16666666666666666 GenericInvestmentStorageBlock_total(storage_non_convex_2) -= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_0_0)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_0_1)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_0) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_1_2)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_1_3)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_1) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_2_4)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_2) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_max_storage_content(storage_non_convex_2_5)_: --0.9 GenericInvestmentStorageBlock_total(storage_non_convex_2) -+1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_0_0)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_0) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_0) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_0_1)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_0) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_1) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_1_2)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_1) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_2) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_1_3)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_1) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_2_4)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_2) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) -<= 0 - -c_u_GenericInvestmentStorageBlock_min_storage_content(storage_non_convex_2_5)_: -+0.1 GenericInvestmentStorageBlock_total(storage_non_convex_2) --1 GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) -<= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_non_convex_0)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) -+244 GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_non_convex_1)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_1) -+244 GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_max(storage_non_convex_2)_: --1 GenericInvestmentStorageBlock_invest(storage_non_convex_2) -+244 GenericInvestmentStorageBlock_invest_status(storage_non_convex_2) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_0)_: -+1 GenericInvestmentStorageBlock_invest(storage_non_convex_0) --12 GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_1)_: -+1 GenericInvestmentStorageBlock_invest(storage_non_convex_1) --12 GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) ->= 0 - -c_l_GenericInvestmentStorageBlock_limit_min(storage_non_convex_2)_: -+1 GenericInvestmentStorageBlock_invest(storage_non_convex_2) --12 GenericInvestmentStorageBlock_invest_status(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 <= 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(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_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_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_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 <= 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_2) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_0) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_1) <= +inf - 0 <= GenericInvestmentStorageBlock_old_end(storage_non_convex_2) <= +inf - 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 - 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_3) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_4) <= +inf - 0 <= GenericInvestmentStorageBlock_storage_content(storage_non_convex_5) <= +inf - 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 -binary - GenericInvestmentStorageBlock_invest_status(storage_non_convex_0) - GenericInvestmentStorageBlock_invest_status(storage_non_convex_1) - GenericInvestmentStorageBlock_invest_status(storage_non_convex_2) -end diff --git a/tests/lp_files/storage_level_constraint.lp b/tests/lp_files/storage_level_constraint.lp deleted file mode 100644 index e64ec8e92..000000000 --- a/tests/lp_files/storage_level_constraint.lp +++ /dev/null @@ -1,136 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_u_multiplexer_output_active_constraint(out_0_0)_: -+0.125 multiplexer_active_output(out_0_0) --0.25 GenericStorageBlock_storage_content(storage_1) -<= 0 - -c_u_multiplexer_output_active_constraint(out_0_1)_: -+0.125 multiplexer_active_output(out_0_1) --0.25 GenericStorageBlock_storage_content(storage_2) -<= 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 - -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 - -c_u_multiplexer_output_constraint(out_0_0_0)_: -+4.0 flow(multiplexer_out_0_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) --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) --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) --1 multiplexer_active_output(out_1_1) -<= 0 - -c_u_multiplexer_input_active_constraint(in_1_0)_: --1 multiplexer_active_input(in_1_0) -<= -0.75 - -c_u_multiplexer_input_active_constraint(in_1_1)_: -+0.25 GenericStorageBlock_storage_content(storage_1) --1 multiplexer_active_input(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 - -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 - -c_e_BusBlock_balance(multiplexer_0_0)_: --1 flow(multiplexer_out_0_0_0) --1 flow(multiplexer_out_1_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_out_0_0_1) --1 flow(multiplexer_out_1_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) -= 3.0 - -c_e_GenericStorageBlock_balance(storage_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)_: -+1 GenericStorageBlock_storage_content(storage_2) -= 4 - -bounds - 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.0 <= flow(in_0_multiplexer_0_0) <= 0.5 - 0.0 <= flow(in_0_multiplexer_0_1) <= 0.5 - 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 <= 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) - multiplexer_active_output(out_1_0) - multiplexer_active_output(out_1_1) - multiplexer_active_input(in_1_0) - multiplexer_active_input(in_1_1) -end diff --git a/tests/lp_files/storage_multi_period.lp b/tests/lp_files/storage_multi_period.lp deleted file mode 100644 index 8fc170517..000000000 --- a/tests/lp_files/storage_multi_period.lp +++ /dev/null @@ -1,114 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -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) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: --1 flow(electricityBus_storage_no_invest_0_1) -+1 flow(storage_no_invest_electricityBus_0_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) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: --1 flow(electricityBus_storage_no_invest_1_3) -+1 flow(storage_no_invest_electricityBus_1_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) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: --1 flow(electricityBus_storage_no_invest_2_5) -+1 flow(storage_no_invest_electricityBus_2_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) -+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) --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) --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) --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) --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) --0.87 GenericStorageBlock_storage_content(storage_no_invest_5) -+1 GenericStorageBlock_storage_content(storage_no_invest_6) -= 0 - -c_e_GenericStorageBlock_balanced_cstr(storage_no_invest)_: -+1 GenericStorageBlock_storage_content(storage_no_invest_6) -= 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.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 - 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_4) <= 100000.0 - 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_5) <= 100000.0 - 0.0 <= GenericStorageBlock_storage_content(storage_no_invest_6) <= 100000.0 -end diff --git a/tests/lp_files/storage_unbalanced.lp b/tests/lp_files/storage_unbalanced.lp deleted file mode 100644 index dfe57f128..000000000 --- a/tests/lp_files/storage_unbalanced.lp +++ /dev/null @@ -1,57 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+0 ONE_VAR_CONSTANT - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(storage1_electricityBus_0_2) --1 flow(electricityBus_storage1_0_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) --1 GenericStorageBlock_storage_content(storage1_0) -= 0 - -c_e_GenericStorageBlock_balance(storage1_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_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) --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 <= GenericStorageBlock_storage_content(storage1_0) <= 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 deleted file mode 100644 index 3cb5b79b8..000000000 --- a/tests/lp_files/storage_unbalanced_multi_period.lp +++ /dev/null @@ -1,102 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+0.0 ONE_VAR_CONSTANT - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(storage1_electricityBus_0_0) --1 flow(electricityBus_storage1_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(storage1_electricityBus_1_2) --1 flow(electricityBus_storage1_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(storage1_electricityBus_1_3) --1 flow(electricityBus_storage1_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(storage1_electricityBus_2_4) --1 flow(electricityBus_storage1_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(storage1_electricityBus_2_5) --1 flow(electricityBus_storage1_2_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) --1 GenericStorageBlock_storage_content(storage1_0) -= 0 - -c_e_GenericStorageBlock_balance(storage1_0_1)_: -+1 flow(storage1_electricityBus_0_1) --1 flow(electricityBus_storage1_0_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) --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) --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) --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) --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 <= GenericStorageBlock_storage_content(storage1_0) <= 1111 - 0 <= GenericStorageBlock_storage_content(storage1_2) <= 1111 - 0 <= GenericStorageBlock_storage_content(storage1_3) <= 1111 - 0 <= GenericStorageBlock_storage_content(storage1_4) <= 1111 - 0 <= GenericStorageBlock_storage_content(storage1_5) <= 1111 - 0 <= GenericStorageBlock_storage_content(storage1_6) <= 1111 -end diff --git a/tests/lp_files/summed_min_source.lp b/tests/lp_files/summed_min_source.lp deleted file mode 100644 index f2cf9022b..000000000 --- a/tests/lp_files/summed_min_source.lp +++ /dev/null @@ -1,39 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+25 flow(electricityBus_excess_0_0) -+25 flow(electricityBus_excess_0_1) -+25 flow(electricityBus_excess_0_2) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(electricityBus_excess_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(electricityBus_excess_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(electricityBus_excess_0_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) -<= 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) ->= 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 -end diff --git a/tests/lp_files/summed_min_source_multi_period.lp b/tests/lp_files/summed_min_source_multi_period.lp deleted file mode 100644 index ed2085dcf..000000000 --- a/tests/lp_files/summed_min_source_multi_period.lp +++ /dev/null @@ -1,63 +0,0 @@ -\* Source Pyomo model name=Model *\ - -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) - -s.t. - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(electricityBus_excess_0_0) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(electricityBus_excess_0_1) -= 0 - -c_e_BusBlock_balance(electricityBus_1_2)_: -+1 flow(electricityBus_excess_1_2) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(electricityBus_excess_1_3) -= 0 - -c_e_BusBlock_balance(electricityBus_2_4)_: -+1 flow(electricityBus_excess_2_4) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(electricityBus_excess_2_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) -<= 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) ->= 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 -end diff --git a/tests/lp_files/variable_chp.lp b/tests/lp_files/variable_chp.lp deleted file mode 100644 index 9ec030a3e..000000000 --- a/tests/lp_files/variable_chp.lp +++ /dev/null @@ -1,140 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+0 ONE_VAR_CONSTANT - -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) -= 0 - -c_e_BusBlock_balance(commodityBus_0_1)_: -+1 flow(commodityBus_variable_chp_gas1_0_1) -+1 flow(commodityBus_variable_chp_gas2_0_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) -= 0 - -c_e_BusBlock_balance(electricityBus_0_0)_: -+1 flow(variable_chp_gas1_electricityBus_0_0) -+1 flow(variable_chp_gas2_electricityBus_0_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) -= 0 - -c_e_BusBlock_balance(electricityBus_0_2)_: -+1 flow(variable_chp_gas1_electricityBus_0_2) -+1 flow(variable_chp_gas2_electricityBus_0_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) -= 0 - -c_e_BusBlock_balance(heatBus_0_1)_: -+1 flow(variable_chp_gas1_heatBus_0_1) -+1 flow(variable_chp_gas2_heatBus_0_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) -= 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) -<= 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) -<= 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) -<= 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) -<= 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) -<= 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) -<= 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 -end diff --git a/tests/lp_files/variable_chp_multi_period.lp b/tests/lp_files/variable_chp_multi_period.lp deleted file mode 100644 index dee45b69a..000000000 --- a/tests/lp_files/variable_chp_multi_period.lp +++ /dev/null @@ -1,269 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+0 ONE_VAR_CONSTANT - -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) -= 0 - -c_e_BusBlock_balance(commodityBus_0_1)_: -+1 flow(commodityBus_variable_chp_gas1_0_1) -+1 flow(commodityBus_variable_chp_gas2_0_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) -= 0 - -c_e_BusBlock_balance(commodityBus_1_3)_: -+1 flow(commodityBus_variable_chp_gas1_1_3) -+1 flow(commodityBus_variable_chp_gas2_1_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) -= 0 - -c_e_BusBlock_balance(commodityBus_2_5)_: -+1 flow(commodityBus_variable_chp_gas1_2_5) -+1 flow(commodityBus_variable_chp_gas2_2_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) -= 0 - -c_e_BusBlock_balance(electricityBus_0_1)_: -+1 flow(variable_chp_gas2_electricityBus_0_1) -+1 flow(variable_chp_gas1_electricityBus_0_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) -= 0 - -c_e_BusBlock_balance(electricityBus_1_3)_: -+1 flow(variable_chp_gas2_electricityBus_1_3) -+1 flow(variable_chp_gas1_electricityBus_1_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) -= 0 - -c_e_BusBlock_balance(electricityBus_2_5)_: -+1 flow(variable_chp_gas2_electricityBus_2_5) -+1 flow(variable_chp_gas1_electricityBus_2_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) -= 0 - -c_e_BusBlock_balance(heatBus_0_1)_: -+1 flow(variable_chp_gas2_heatBus_0_1) -+1 flow(variable_chp_gas1_heatBus_0_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) -= 0 - -c_e_BusBlock_balance(heatBus_1_3)_: -+1 flow(variable_chp_gas2_heatBus_1_3) -+1 flow(variable_chp_gas1_heatBus_1_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) -= 0 - -c_e_BusBlock_balance(heatBus_2_5)_: -+1 flow(variable_chp_gas2_heatBus_2_5) -+1 flow(variable_chp_gas1_heatBus_2_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) -<= 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) -<= 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) -<= 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) -<= 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) -<= 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) -<= 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) -<= 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) -<= 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) -<= 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) -<= 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) -<= 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) -<= 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 -end diff --git a/tests/multi_period_constraint_tests.py b/tests/multi_period_constraint_tests.py deleted file mode 100644 index ca2053202..000000000 --- a/tests/multi_period_constraint_tests.py +++ /dev/null @@ -1,2473 +0,0 @@ -# -*- coding: utf-8 - - -"""Test the created constraints against approved constraints. - -This file is part of project oemof (github.com/oemof/oemof). It's copyrighted -by the contributors recorded in the version control history of the file, -available from its original location oemof/tests/constraint_tests.py - -SPDX-License-Identifier: MIT -""" - -import logging -import re -from os import path as ospath - -import pandas as pd -import pytest -from pyomo.repn.tests.lp_diff import lp_diff - -from oemof import solph - -logging.disable(logging.INFO) - - -# Warnings about the fature being experimental: -@pytest.mark.filterwarnings( - "ignore:Ensure that your timeindex and timeincrement are" - " consistent.:UserWarning" -) -@pytest.mark.filterwarnings( - "ignore:CAUTION! You specified the 'periods' attribute:UserWarning" -) -# Warnings about default parameters beaing used: -@pytest.mark.filterwarnings( - "ignore:You did not specify an interest rate.:UserWarning" -) -@pytest.mark.filterwarnings( - "ignore:By default, a discount_rate of 0.02 is used for a multi-period" - " model.:UserWarning" -) -class TestsMultiPeriodConstraint: - @classmethod - def setup_class(cls): - cls.objective_pattern = re.compile( - r"^objective.*(?=s\.t\.)", re.DOTALL | re.MULTILINE - ) - - timeindex1 = pd.date_range("1/1/2012", periods=2, freq="h") - timeindex2 = pd.date_range("1/1/2013", periods=2, freq="h") - timeindex3 = pd.date_range("1/1/2014", periods=2, freq="h") - cls.date_time_index = timeindex1.append(timeindex2).append(timeindex3) - cls.periods = [timeindex1, timeindex2, timeindex3] - - cls.tmppath = solph.helpers.extend_basic_path("tmp") - logging.info(cls.tmppath) - - def setup_method(self): - self.energysystem = solph.EnergySystem( - groupings=solph.GROUPINGS, - timeindex=self.date_time_index, - timeincrement=[1] * len(self.date_time_index), - infer_last_interval=False, - periods=self.periods, - ) - - def get_om(self): - return solph.Model( - self.energysystem, timeindex=self.energysystem.timeindex - ) - - def compare_lp_files(self, filename, ignored=None, my_om=None): - r"""Compare lp-files to check constraints generated within solph. - - An lp-file is being generated automatically when the tests are - executed. Make sure that you create an empty file first and - transfer the content from the one that has been created automatically - into this one afterwards. Please ensure that the content is being - checked carefully. Otherwise, errors are included within the code base. - """ - if my_om is None: - om = self.get_om() - else: - om = my_om - tmp_filename = filename.replace(".lp", "") + "_tmp.lp" - new_filename = ospath.join(self.tmppath, tmp_filename) - om.write(new_filename, io_options={"symbolic_solver_labels": True}) - logging.info("Comparing with file: {0}".format(filename)) - with open(ospath.join(self.tmppath, tmp_filename)) as generated_file: - with open( - ospath.join( - ospath.dirname(ospath.realpath(__file__)), - "lp_files", - filename, - ) - ) as expected_file: - exp = expected_file.read() - gen = generated_file.read() - - # lp_diff returns two arrays of strings with cleaned lp syntax - # It automatically prints the diff - exp_diff, gen_diff = lp_diff(exp, gen) - - # sometimes, 0.0 is printed, sometimes 0, harmonise that - exp_diff = [ - (line + " ").replace(" 0.0 ", " 0 ") for line in exp_diff - ] - gen_diff = [ - (line + " ").replace(" 0.0 ", " 0 ") for line in gen_diff - ] - - assert len(exp_diff) == len(gen_diff) - - # Created the LP files do not have a reproducable - # order of the lines. Thus, we sort the lines. - for exp, gen in zip(sorted(exp_diff), sorted(gen_diff)): - assert ( - exp == gen - ), "Failed matching expected with generated lp file." - - def test_linear_converter(self): - """Constraint test of a Converter without Investment.""" - bgas = solph.buses.Bus(label="gas") - - bel = solph.buses.Bus(label="electricity") - - converter = solph.components.Converter( - label="powerplantGas", - inputs={bgas: solph.flows.Flow()}, - outputs={ - bel: solph.flows.Flow(nominal_value=10e10, variable_costs=50) - }, - conversion_factors={bel: 0.58}, - ) - self.energysystem.add(bgas, bel, converter) - self.compare_lp_files("linear_converter_multi_period.lp") - - def test_linear_converter_invest(self): - """Constraint test of a Converter with Investment.""" - - bgas = solph.buses.Bus(label="gas") - - bel = solph.buses.Bus(label="electricity") - - converter = solph.components.Converter( - label="powerplant_gas", - inputs={bgas: solph.flows.Flow()}, - outputs={ - bel: solph.flows.Flow( - variable_costs=50, - nominal_value=solph.Investment( - existing=50, - maximum=1000, - overall_maximum=10000, - overall_minimum=200, - ep_costs=20, - age=5, - lifetime=40, - ), - ) - }, - conversion_factors={bel: 0.58}, - ) - self.energysystem.add(bgas, bel, converter) - self.compare_lp_files("linear_converter_invest_multi_period.lp") - - def test_linear_converter_invest_remaining_value(self): - """Constraint test of a Converter with Investment.""" - - bgas = solph.buses.Bus(label="gas") - - bel = solph.buses.Bus(label="electricity") - - converter = solph.components.Converter( - label="powerplant_gas", - inputs={bgas: solph.flows.Flow()}, - outputs={ - bel: solph.flows.Flow( - variable_costs=50, - nominal_value=solph.Investment( - existing=50, - maximum=1000, - overall_maximum=10000, - overall_minimum=200, - ep_costs=[20, 19, 18], - age=5, - lifetime=40, - ), - ) - }, - conversion_factors={bel: 0.58}, - ) - self.energysystem.use_remaining_value = True - self.energysystem.add(bgas, bel, converter) - self.compare_lp_files( - "linear_converter_invest_multi_period_remaining_value.lp" - ) - self.energysystem.use_remaining_value = False - - def test_linear_converter_invest_old_capacity(self): - """Constraint test of a Converter with Investment.""" - - bgas = solph.buses.Bus(label="gas") - - bel = solph.buses.Bus(label="electricity") - - converter = solph.components.Converter( - label="powerplant_gas", - inputs={bgas: solph.flows.Flow()}, - outputs={ - bel: solph.flows.Flow( - variable_costs=50, - nominal_value=solph.Investment( - existing=50, - maximum=1000, - overall_maximum=10000, - overall_minimum=200, - ep_costs=20, - age=1, - lifetime=2, - ), - ) - }, - conversion_factors={bel: 0.58}, - ) - self.energysystem.add(bgas, bel, converter) - self.compare_lp_files("linear_converter_invest_multi_period_old.lp") - - def test_max_source_min_sink(self): - """Test source with max, sink with min""" - bel = solph.buses.Bus(label="electricityBus") - - source = solph.components.Source( - label="wind", - outputs={ - bel: solph.flows.Flow( - nominal_value=54, max=(0.85, 0.95, 0.61, 0.72, 0.99, 0.1) - ) - }, - ) - - sink = solph.components.Sink( - label="minDemand", - inputs={ - bel: solph.flows.Flow( - nominal_value=54, - min=(0.84, 0.94, 0.59, 0.7, 0.97, 0.09), - variable_costs=14, - ) - }, - ) - self.energysystem.add(bel, source, sink) - self.compare_lp_files("max_source_min_sink_multi_period.lp") - - def test_fixed_source_variable_sink(self): - """Constraint test with a fixed source and a variable sink.""" - - bel = solph.buses.Bus(label="electricityBus") - - source = solph.components.Source( - label="wind", - outputs={ - bel: solph.flows.Flow( - fix=[0.43, 0.72, 0.29, 0.33, 0.33, 0.33], nominal_value=1e6 - ) - }, - ) - - sink = solph.components.Sink( - label="excess", inputs={bel: solph.flows.Flow(variable_costs=40)} - ) - self.energysystem.add(bel, source, sink) - self.compare_lp_files("fixed_source_variable_sink_multi_period.lp") - - def test_nominal_value_to_zero(self): - """If the nominal value is set to zero nothing should happen.""" - bel = solph.buses.Bus(label="electricityBus") - - source = solph.components.Source( - label="s1", outputs={bel: solph.flows.Flow(nominal_value=0)} - ) - self.energysystem.add(bel, source) - self.compare_lp_files("nominal_value_to_zero_multi_period.lp") - - def test_fixed_source_invest_sink(self): - """Constraints test for fixed source + invest sink w. - `full_load_time_max`""" - bel = solph.buses.Bus(label="electricityBus") - - source = solph.components.Source( - label="wind", - outputs={ - bel: solph.flows.Flow( - fix=[12, 16, 14, 18, 18, 18], nominal_value=1e6 - ) - }, - ) - - sink = solph.components.Sink( - label="excess", - inputs={ - bel: solph.flows.Flow( - full_load_time_max=2.3, - variable_costs=25, - max=0.8, - nominal_value=solph.Investment( - ep_costs=500, maximum=1e6, existing=50, lifetime=20 - ), - ) - }, - ) - self.energysystem.add(bel, source, sink) - self.compare_lp_files("fixed_source_invest_sink_multi_period.lp") - - def test_investment_lifetime_missing(self): - """Test error raised if lifetime attribute is missing""" - bel = solph.buses.Bus(label="electricityBus") - - sink = solph.components.Sink( - label="excess", - inputs={ - bel: solph.flows.Flow( - max=0.8, - nominal_value=solph.Investment( - ep_costs=500, maximum=1e6, existing=50 - ), - ) - }, - ) - self.energysystem.add(bel, sink) - msg = ( - "You have to specify a lifetime " - "for a Flow with an associated investment " - "object in a multi-period model!" - ) - with pytest.raises(ValueError, match=msg): - self.get_om() - - def test_invest_source_fixed_sink(self): - """Constraint test with a fixed sink and a dispatch invest source.""" - - bel = solph.buses.Bus(label="electricityBus") - - source = solph.components.Source( - label="pv", - outputs={ - bel: solph.flows.Flow( - max=[45, 83, 65, 67, 33, 96], - variable_costs=13, - nominal_value=solph.Investment(ep_costs=123, lifetime=25), - ) - }, - ) - - sink = solph.components.Sink( - label="excess", - inputs={ - bel: solph.flows.Flow( - fix=[0.5, 0.8, 0.3, 0.6, 0.7, 0.2], nominal_value=1e5 - ) - }, - ) - self.energysystem.add(bel, source, sink) - self.compare_lp_files("invest_source_fixed_sink_multi_period.lp") - - def test_storage(self): - """ """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage_no_invest", - inputs={ - bel: solph.flows.Flow(nominal_value=16667, variable_costs=56) - }, - outputs={ - bel: solph.flows.Flow(nominal_value=16667, variable_costs=24) - }, - nominal_storage_capacity=1e5, - loss_rate=0.13, - inflow_conversion_factor=0.97, - outflow_conversion_factor=0.86, - initial_storage_level=0.4, - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_multi_period.lp") - - def test_storage_invest_1(self): - """All invest variables are coupled. The invest variables of the Flows - will be created during the initialisation of the storage e.g. battery - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage1", - inputs={bel: solph.flows.Flow(variable_costs=56)}, - outputs={bel: solph.flows.Flow(variable_costs=24)}, - loss_rate=0.13, - max_storage_level=0.9, - min_storage_level=0.1, - invest_relation_input_capacity=1 / 6, - invest_relation_output_capacity=1 / 6, - lifetime_inflow=20, - lifetime_outflow=20, - inflow_conversion_factor=0.97, - outflow_conversion_factor=0.86, - nominal_storage_capacity=solph.Investment( - ep_costs=145, - maximum=234, - lifetime=20, - interest_rate=0.05, - overall_maximum=1000, - overall_minimum=2, - ), - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_1_multi_period.lp") - - def test_storage_invest_1_remaining_value(self): - """All invest variables are coupled. The invest variables of the Flows - will be created during the initialisation of the storage e.g. battery - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage1", - inputs={bel: solph.flows.Flow(variable_costs=56)}, - outputs={bel: solph.flows.Flow(variable_costs=24)}, - loss_rate=0.13, - max_storage_level=0.9, - min_storage_level=0.1, - invest_relation_input_capacity=1 / 6, - invest_relation_output_capacity=1 / 6, - lifetime_inflow=20, - lifetime_outflow=20, - inflow_conversion_factor=0.97, - outflow_conversion_factor=0.86, - nominal_storage_capacity=solph.Investment( - ep_costs=[145, 130, 115], - maximum=234, - lifetime=20, - interest_rate=0.05, - overall_maximum=1000, - overall_minimum=2, - ), - ) - self.energysystem.use_remaining_value = True - self.energysystem.add(bel, storage) - self.compare_lp_files( - "storage_invest_1_multi_period_remaining_value.lp" - ) - self.energysystem.use_remaining_value = False - - def test_storage_invest_2(self): - """All can be free extended to their own cost.""" - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage2", - inputs={ - bel: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=99, lifetime=20) - ) - }, - outputs={ - bel: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=9, lifetime=20) - ) - }, - nominal_storage_capacity=solph.Investment( - ep_costs=145, lifetime=20, existing=20, age=19 - ), - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_2_multi_period.lp") - - def test_storage_invest_3(self): - """The storage capacity is fixed, but the Flows can be extended. - e.g. PHES with a fixed basin but the pump and the turbine can be - adapted - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage3", - inputs={ - bel: solph.flows.Flow( - nominal_value=solph.Investment( - ep_costs=99, - lifetime=2, - age=1, - existing=10, - ) - ) - }, - outputs={ - bel: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=9, lifetime=20) - ) - }, - nominal_storage_capacity=5000, - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_3_multi_period.lp") - - def test_storage_invest_4(self): - """Only the storage capacity can be extended.""" - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage4", - inputs={bel: solph.flows.Flow(nominal_value=80)}, - outputs={bel: solph.flows.Flow(nominal_value=100)}, - nominal_storage_capacity=solph.Investment( - ep_costs=145, maximum=500, lifetime=2, age=1, existing=100 - ), - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_4_multi_period.lp") - - def test_storage_invest_5(self): - """The storage capacity is fixed, but the Flows can be extended. - e.g. PHES with a fixed basin but the pump and the turbine can be - adapted. The installed capacity of the pump is 10 % bigger than the - the capacity of the turbine due to 'invest_relation_input_output=1.1'. - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage5", - inputs={ - bel: solph.flows.Flow( - nominal_value=solph.Investment( - ep_costs=99, existing=110, lifetime=20 - ) - ) - }, - outputs={ - bel: solph.flows.Flow( - nominal_value=solph.Investment(existing=100, lifetime=20) - ) - }, - invest_relation_input_output=1.1, - nominal_storage_capacity=10000, - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_5_multi_period.lp") - - def test_storage_invest_6(self): - """Like test_storage_invest_5 but there can also be an investment in - the basin. - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage6", - inputs={ - bel: solph.flows.Flow( - nominal_value=solph.Investment( - ep_costs=99, existing=110, lifetime=20 - ) - ) - }, - outputs={ - bel: solph.flows.Flow( - nominal_value=solph.Investment(existing=100, lifetime=20) - ) - }, - invest_relation_input_output=1.1, - nominal_storage_capacity=solph.Investment( - ep_costs=145, existing=1000, lifetime=20, age=17 - ), - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_6_multi_period.lp") - - def test_storage_minimum_invest(self): - """All invest variables are coupled. The invest variables of the Flows - will be created during the initialisation of the storage e.g. battery - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage1", - inputs={bel: solph.flows.Flow()}, - outputs={bel: solph.flows.Flow()}, - nominal_storage_capacity=solph.Investment( - ep_costs=145, minimum=100, maximum=200, lifetime=40 - ), - lifetime_inflow=40, - lifetime_outflow=40, - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_minimum_multi_period.lp") - - def test_storage_invest_multi_period(self): - """Test multi-period attributes such as age, fixed_costs, ...""" - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage1", - inputs={bel: solph.flows.Flow()}, - outputs={bel: solph.flows.Flow()}, - nominal_storage_capacity=solph.Investment( - ep_costs=145, - minimum=100, - maximum=200, - lifetime=40, - existing=50, - age=39, - overall_minimum=10, - overall_maximum=500, - fixed_costs=5, - ), - lifetime_inflow=40, - lifetime_outflow=40, - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_multi_period.lp") - - def test_storage_unbalanced(self): - """Testing a unbalanced storage (e.g. battery).""" - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage1", - inputs={bel: solph.flows.Flow()}, - outputs={bel: solph.flows.Flow()}, - nominal_storage_capacity=1111, - initial_storage_level=None, - balanced=False, - invest_relation_input_capacity=1, - invest_relation_output_capacity=1, - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_unbalanced_multi_period.lp") - - def test_storage_fixed_losses(self): - """ """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage_no_invest", - inputs={ - bel: solph.flows.Flow(nominal_value=16667, variable_costs=56) - }, - outputs={ - bel: solph.flows.Flow(nominal_value=16667, variable_costs=24) - }, - nominal_storage_capacity=1e5, - loss_rate=0.13, - fixed_losses_relative=0.01, - fixed_losses_absolute=3, - inflow_conversion_factor=0.97, - outflow_conversion_factor=0.86, - initial_storage_level=0.4, - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_fixed_losses_multi_period.lp") - - def test_storage_invest_1_fixed_losses(self): - """Test error for fixed losses""" - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage1", - inputs={bel: solph.flows.Flow(variable_costs=56)}, - outputs={bel: solph.flows.Flow(variable_costs=24)}, - loss_rate=0.13, - fixed_losses_relative=0.01, - fixed_losses_absolute=3, - max_storage_level=0.9, - min_storage_level=0.1, - invest_relation_input_capacity=1 / 6, - invest_relation_output_capacity=1 / 6, - inflow_conversion_factor=0.97, - outflow_conversion_factor=0.86, - lifetime_inflow=40, - lifetime_outflow=40, - nominal_storage_capacity=solph.Investment( - ep_costs=145, - minimum=1, - maximum=234, - lifetime=20, - interest_rate=0.05, - overall_maximum=1000, - overall_minimum=2, - ), - ) - self.energysystem.add(bel, storage) - msg = ( - "For a multi-period investment model, fixed absolute" - " losses are not supported. Please remove parameter." - ) - with pytest.raises(ValueError, match=msg): - self.get_om() - - def test_storage_invest_1_initial_storage_level(self): - """Test error for initial storage level - with multi-period investments""" - bel = solph.buses.Bus(label="electricityBus") - storage = solph.components.GenericStorage( - label="storage1", - inputs={bel: solph.flows.Flow(variable_costs=56)}, - outputs={bel: solph.flows.Flow(variable_costs=24)}, - loss_rate=0.13, - max_storage_level=0.9, - min_storage_level=0.1, - invest_relation_input_capacity=1 / 6, - invest_relation_output_capacity=1 / 6, - inflow_conversion_factor=0.97, - outflow_conversion_factor=0.86, - lifetime_inflow=40, - lifetime_outflow=40, - initial_storage_level=0.5, - nominal_storage_capacity=solph.Investment( - ep_costs=145, - maximum=234, - lifetime=20, - interest_rate=0.05, - overall_maximum=1000, - overall_minimum=2, - ), - ) - self.energysystem.add(bel, storage) - msg = ( - "For a multi-period model, initial_storage_level is" - " not supported.\nIt needs to be removed since it" - " has no effect.\nstorage_content will be zero," - " until there is some usable storage capacity installed." - ) - with pytest.raises(ValueError, match=msg): - self.get_om() - - def test_storage_invest_1_missing_lifetime(self): - """Test error thrown if storage misses necessary lifetime""" - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage1", - inputs={bel: solph.flows.Flow(variable_costs=56)}, - outputs={bel: solph.flows.Flow(variable_costs=24)}, - loss_rate=0.13, - max_storage_level=0.9, - min_storage_level=0.1, - invest_relation_input_capacity=1 / 6, - invest_relation_output_capacity=1 / 6, - inflow_conversion_factor=0.97, - outflow_conversion_factor=0.86, - lifetime_inflow=40, - lifetime_outflow=40, - nominal_storage_capacity=solph.Investment( - ep_costs=145, - maximum=234, - interest_rate=0.05, - overall_maximum=1000, - overall_minimum=2, - ), - ) - self.energysystem.add(bel, storage) - msg = ( - "You have to specify a lifetime " - "for a Flow going into or out of a GenericStorage " - "unit in a multi-period model!" - ) - with pytest.raises(ValueError, match=msg): - self.get_om() - - def test_onverter(self): - """Constraint test of a LinearN1Converter without Investment.""" - bgas = solph.buses.Bus(label="gasBus") - bbms = solph.buses.Bus(label="biomassBus") - bel = solph.buses.Bus(label="electricityBus") - bth = solph.buses.Bus(label="thermalBus") - - trf = solph.components.Converter( - label="powerplantGasBiomass", - inputs={bbms: solph.flows.Flow(), bgas: solph.flows.Flow()}, - outputs={ - bel: solph.flows.Flow(variable_costs=50), - bth: solph.flows.Flow(nominal_value=5e10, variable_costs=20), - }, - conversion_factors={bgas: 0.4, bbms: 0.1, bel: 0.3, bth: 0.5}, - ) - self.energysystem.add(bgas, bbms, bel, bth, trf) - self.compare_lp_files("converter_multi_period.lp") - - def test_converter_invest(self): - """Constraint test of a LinearN1Converter with Investment.""" - bgas = solph.buses.Bus(label="gasBus") - bcoal = solph.buses.Bus(label="coalBus") - bel = solph.buses.Bus(label="electricityBus") - bth = solph.buses.Bus(label="thermalBus") - - trf = solph.components.Converter( - label="powerplant_gas_coal", - inputs={bgas: solph.flows.Flow(), bcoal: solph.flows.Flow()}, - outputs={ - bel: solph.flows.Flow( - variable_costs=50, - nominal_value=solph.Investment( - maximum=1000, - ep_costs=20, - lifetime=20, - fixed_costs=10, - ), - ), - bth: solph.flows.Flow(variable_costs=20), - }, - conversion_factors={bgas: 0.58, bcoal: 0.2, bel: 0.3, bth: 0.5}, - ) - self.energysystem.add(bgas, bcoal, bel, bth, trf) - self.compare_lp_files("converter_invest_multi_period.lp") - - def test_converter_invest_with_existing(self): - """Constraint test of a LinearN1Converter with Investment.""" - bgas = solph.buses.Bus(label="gasBus") - bcoal = solph.buses.Bus(label="coalBus") - bel = solph.buses.Bus(label="electricityBus") - bth = solph.buses.Bus(label="thermalBus") - - trf = solph.components.Converter( - label="powerplant_gas_coal", - inputs={bgas: solph.flows.Flow(), bcoal: solph.flows.Flow()}, - outputs={ - bel: solph.flows.Flow( - variable_costs=50, - nominal_value=solph.Investment( - maximum=1000, - ep_costs=20, - existing=200, - lifetime=2, - age=1, - ), - ), - bth: solph.flows.Flow(variable_costs=20), - }, - conversion_factors={bgas: 0.58, bcoal: 0.2, bel: 0.3, bth: 0.5}, - ) - self.energysystem.add(bgas, bcoal, bel, bth, trf) - self.compare_lp_files("converter_invest_with_existing_multi_period.lp") - - def test_linear_converter_chp(self): - """ - Constraint test of a Converter without Investment (two outputs). - """ - bgas = solph.buses.Bus(label="gasBus") - bheat = solph.buses.Bus(label="heatBus") - bel = solph.buses.Bus(label="electricityBus") - - trf = solph.components.Converter( - label="CHPpowerplantGas", - inputs={ - bgas: solph.flows.Flow(nominal_value=1e11, variable_costs=50) - }, - outputs={bel: solph.flows.Flow(), bheat: solph.flows.Flow()}, - conversion_factors={bel: 0.4, bheat: 0.5}, - ) - self.energysystem.add(bgas, bheat, bel, trf) - self.compare_lp_files("linear_converter_chp_multi_period.lp") - - def test_linear_converter_chp_invest(self): - """Constraint test of a Converter with Investment (two outputs).""" - bgas = solph.buses.Bus(label="gasBus") - bheat = solph.buses.Bus(label="heatBus") - bel = solph.buses.Bus(label="electricityBus") - - trf = solph.components.Converter( - label="chp_powerplant_gas", - inputs={ - bgas: solph.flows.Flow( - variable_costs=50, - nominal_value=solph.Investment( - maximum=1000, ep_costs=20, lifetime=50 - ), - ) - }, - outputs={bel: solph.flows.Flow(), bheat: solph.flows.Flow()}, - conversion_factors={bel: 0.4, bheat: 0.5}, - ) - self.energysystem.add(bgas, bheat, bel, trf) - self.compare_lp_files("linear_converter_chp_invest_multi_period.lp") - - def test_variable_chp(self): - """Test ExctractionTurbineCHP basic functionality""" - bel = solph.buses.Bus(label="electricityBus") - bth = solph.buses.Bus(label="heatBus") - bgas = solph.buses.Bus(label="commodityBus") - - chp1 = solph.components.ExtractionTurbineCHP( - label="variable_chp_gas1", - inputs={bgas: solph.flows.Flow(nominal_value=100)}, - outputs={bel: solph.flows.Flow(), bth: solph.flows.Flow()}, - conversion_factors={bel: 0.3, bth: 0.5}, - conversion_factor_full_condensation={bel: 0.5}, - ) - - chp2 = solph.components.ExtractionTurbineCHP( - label="variable_chp_gas2", - inputs={bgas: solph.flows.Flow(nominal_value=100)}, - outputs={bel: solph.flows.Flow(), bth: solph.flows.Flow()}, - conversion_factors={bel: 0.3, bth: 0.5}, - conversion_factor_full_condensation={bel: 0.5}, - ) - self.energysystem.add(bel, bth, bgas, chp1, chp2) - self.compare_lp_files("variable_chp_multi_period.lp") - - def test_emission_budget_limit(self): - """Test emissions budget limit constraint""" - bel = solph.buses.Bus(label="electricityBus") - - source1 = solph.components.Source( - label="source1", - outputs={ - bel: solph.flows.Flow( - nominal_value=100, - custom_attributes={ - "emission_factor": [0.5, -1.0, 2.0, 1.0, 0.5, 0.5] - }, - ) - }, - ) - source2 = solph.components.Source( - label="source2", - outputs={ - bel: solph.flows.Flow( - nominal_value=100, - custom_attributes={"emission_factor": 3.5}, - ) - }, - ) - - # Should be ignored because the emission attribute is not defined. - source3 = solph.components.Source( - label="source3", outputs={bel: solph.flows.Flow(nominal_value=100)} - ) - self.energysystem.add(source1, source2, source3) - om = self.get_om() - - solph.constraints.emission_limit(om, limit=777) - - self.compare_lp_files("emission_budget_limit.lp", my_om=om) - - def test_periodical_emission_limit(self): - """Test periodical emissions constraint""" - bel = solph.buses.Bus(label="electricityBus") - - source1 = solph.components.Source( - label="source1", - outputs={ - bel: solph.flows.Flow( - nominal_value=100, - custom_attributes={ - "emission_factor": [0.5, -1.0, 2.0, 1.0, 0.5, 0.5] - }, - ) - }, - ) - source2 = solph.components.Source( - label="source2", - outputs={ - bel: solph.flows.Flow( - nominal_value=100, - custom_attributes={"emission_factor": 3.5}, - ) - }, - ) - - # Should be ignored because the emission attribute is not defined. - source3 = solph.components.Source( - label="source3", outputs={bel: solph.flows.Flow(nominal_value=100)} - ) - self.energysystem.add(source1, source2, source3) - om = self.get_om() - - solph.constraints.emission_limit_per_period(om, limit=[300, 200, 100]) - - self.compare_lp_files("periodical_emission_limit.lp", my_om=om) - - def test_periodical_emission_limit_missing_limit(self): - """Test error for periodical emissions constraint""" - bel = solph.buses.Bus(label="electricityBus") - - source1 = solph.components.Source( - label="source1", - outputs={ - bel: solph.flows.Flow( - nominal_value=100, - custom_attributes={ - "emission_factor": [0.5, -1.0, 2.0, 1.0, 0.5, 0.5] - }, - ) - }, - ) - source2 = solph.components.Source( - label="source2", - outputs={ - bel: solph.flows.Flow( - nominal_value=100, - custom_attributes={"emission_factor": 3.5}, - ) - }, - ) - - # Should be ignored because the emission attribute is not defined. - source3 = solph.components.Source( - label="source3", outputs={bel: solph.flows.Flow(nominal_value=100)} - ) - self.energysystem.add(source1, source2, source3) - om = self.get_om() - - msg = ( - "You have to provide a limit for each period!\n" - "If you provide a scalar value, this will be applied as a " - "limit for each period." - ) - with pytest.raises(ValueError, match=msg): - solph.constraints.emission_limit_per_period(om, limit=None) - - def test_flow_count_limit(self): - """Test limiting the count of nonconvex flows""" - bel = solph.buses.Bus(label="electricityBus") - - source1 = solph.components.Source( - label="source1", - outputs={ - bel: solph.flows.Flow( - nonconvex=solph.NonConvex(), - nominal_value=100, - custom_attributes={"emission_factor": 0.5}, - ) - }, - ) - source2 = solph.components.Source( - label="source2", - outputs={ - bel: solph.flows.Flow( - nonconvex=solph.NonConvex(), - nominal_value=100, - custom_attributes={"emission_factor": 0.5}, - ) - }, - ) - - # Should be ignored because emission_factor is not defined. - source3 = solph.components.Source( - label="source3", - outputs={ - bel: solph.flows.Flow( - nonconvex=solph.NonConvex(), nominal_value=100 - ) - }, - ) - - # Should be ignored because it is not NonConvex. - source4 = solph.components.Source( - label="source4", - outputs={ - bel: solph.flows.Flow( - custom_attributes={"emission_factor": 1.5}, - min=0.3, - nominal_value=100, - ) - }, - ) - self.energysystem.add(source1, source2, source3, source4) - om = self.get_om() - - # one of the two flows has to be active - solph.constraints.limit_active_flow_count_by_keyword( - om, "emission_factor", lower_limit=1, upper_limit=2 - ) - - self.compare_lp_files("flow_count_limit_multi_period.lp", my_om=om) - - def test_shared_limit(self): - """Test an overall limit shared among components""" - b1 = solph.buses.Bus(label="bus") - - storage1 = solph.components.GenericStorage( - label="storage1", - nominal_storage_capacity=5, - inputs={b1: solph.flows.Flow()}, - outputs={b1: solph.flows.Flow()}, - ) - storage2 = solph.components.GenericStorage( - label="storage2", - nominal_storage_capacity=5, - inputs={b1: solph.flows.Flow()}, - outputs={b1: solph.flows.Flow()}, - ) - self.energysystem.add(b1, storage1, storage2) - model = self.get_om() - - components = [storage1, storage2] - - solph.constraints.shared_limit( - model, - model.GenericStorageBlock.storage_content, - "limit_storage", - components, - [0.5, 1.25], - upper_limit=7, - ) - - self.compare_lp_files("shared_limit_multi_period.lp", my_om=model) - - def test_equate_variables_constraint(self): - """Testing the equate_variables function in the constraint module.""" - bus1 = solph.buses.Bus(label="Bus1") - storage = solph.components.GenericStorage( - label="storage", - invest_relation_input_capacity=0.2, - invest_relation_output_capacity=0.2, - inputs={bus1: solph.flows.Flow()}, - outputs={bus1: solph.flows.Flow()}, - lifetime_inflow=3, - lifetime_outflow=3, - nominal_storage_capacity=solph.Investment( - ep_costs=145, lifetime=3 - ), - ) - sink = solph.components.Sink( - label="Sink", - inputs={ - bus1: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=500, lifetime=3) - ) - }, - ) - source = solph.components.Source( - label="Source", - outputs={ - bus1: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=123, lifetime=3) - ) - }, - ) - self.energysystem.add(bus1, storage, sink, source) - om = self.get_om() - solph.constraints.equate_variables( - om, - om.InvestmentFlowBlock.invest[source, bus1, 0], - om.InvestmentFlowBlock.invest[bus1, sink, 0], - 2, - ) - solph.constraints.equate_variables( - om, - om.InvestmentFlowBlock.invest[source, bus1, 0], - om.GenericInvestmentStorageBlock.invest[storage, 0], - ) - - self.compare_lp_files("connect_investment_multi_period.lp", my_om=om) - - def test_gradient(self): - """Testing gradient constraints""" - bel = solph.buses.Bus(label="electricityBus") - - source = solph.components.Source( - label="powerplant", - outputs={ - bel: solph.flows.Flow( - nominal_value=999, - variable_costs=23, - positive_gradient_limit=0.03, - negative_gradient_limit=0.05, - ) - }, - ) - self.energysystem.add(bel, source) - self.compare_lp_files("source_with_gradient_multi_period.lp") - - def test_nonconvex_gradient(self): - """Testing gradient constraints""" - bel = solph.buses.Bus(label="electricityBus") - - source = solph.components.Source( - label="powerplant", - outputs={ - bel: solph.flows.Flow( - nominal_value=999, - variable_costs=23, - nonconvex=solph.NonConvex( - positive_gradient_limit=0.03, - negative_gradient_limit=0.05, - ), - ) - }, - ) - self.energysystem.add(bel, source) - self.compare_lp_files("source_with_nonconvex_gradient_multi_period.lp") - - def test_periodical_investment_limit(self): - """Testing the investment_limit function in the constraint module.""" - bus1 = solph.buses.Bus(label="Bus1") - storage = solph.components.GenericStorage( - label="storage_invest_limit", - invest_relation_input_capacity=0.2, - invest_relation_output_capacity=0.2, - inputs={bus1: solph.flows.Flow()}, - outputs={bus1: solph.flows.Flow()}, - lifetime_inflow=20, - lifetime_outflow=20, - nominal_storage_capacity=solph.Investment( - ep_costs=145, lifetime=30 - ), - ) - source = solph.components.Source( - label="Source", - outputs={ - bus1: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=123, lifetime=100) - ) - }, - ) - self.energysystem.add(bus1, storage, source) - om = self.get_om() - solph.constraints.investment_limit_per_period( - om, limit=[500, 400, 300] - ) - - self.compare_lp_files("periodical_investment_limit.lp", my_om=om) - - def test_periodical_investment_limit_with_dsm1(self): - """Testing the investment_limit function in the constraint module.""" - bus1 = solph.buses.Bus(label="Bus1") - source = solph.components.Source( - label="Source", - outputs={ - bus1: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=123, lifetime=100) - ) - }, - ) - sinkdsm = solph.components.experimental.SinkDSM( - label="sink_dsm_DIW", - approach="DIW", - inputs={bus1: solph.flows.Flow()}, - demand=[1] * 6, - capacity_up=[0.5] * 6, - capacity_down=[0.5] * 6, - max_demand=1, - delay_time=1, - cost_dsm_down_shift=0.5, - cost_dsm_up=0.5, - shed_eligibility=False, - investment=solph.Investment( - ep_costs=100, - existing=50, - minimum=33, - maximum=100, - age=1, - lifetime=2, - overall_maximum=1000, - overall_minimum=200, - ), - ) - self.energysystem.add(bus1, source, sinkdsm) - om = self.get_om() - solph.constraints.investment_limit_per_period( - om, limit=[400, 300, 200] - ) - - self.compare_lp_files( - "periodical_investment_limit_with_dsm_DIW.lp", my_om=om - ) - - def test_periodical_investment_limit_with_dsm2(self): - """Testing the investment_limit function in the constraint module.""" - bus1 = solph.buses.Bus(label="Bus1") - source = solph.components.Source( - label="Source", - outputs={ - bus1: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=123, lifetime=100) - ) - }, - ) - sinkdsm = solph.components.experimental.SinkDSM( - label="sink_dsm_DLR", - approach="DLR", - inputs={bus1: solph.flows.Flow()}, - demand=[1] * 6, - capacity_up=[0.5] * 6, - capacity_down=[0.5] * 6, - max_demand=1, - delay_time=1, - shift_time=1, - cost_dsm_down_shift=0.5, - cost_dsm_up=0.5, - shed_eligibility=False, - investment=solph.Investment( - ep_costs=100, - existing=50, - minimum=33, - maximum=100, - age=1, - lifetime=2, - overall_maximum=1000, - overall_minimum=200, - ), - ) - self.energysystem.add(bus1, source, sinkdsm) - om = self.get_om() - solph.constraints.investment_limit_per_period( - om, limit=[400, 300, 200] - ) - - self.compare_lp_files( - "periodical_investment_limit_with_dsm_DLR.lp", my_om=om - ) - - def test_periodical_investment_limit_with_dsm3(self): - """Testing the investment_limit function in the constraint module.""" - bus1 = solph.buses.Bus(label="Bus1") - source = solph.components.Source( - label="Source", - outputs={ - bus1: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=123, lifetime=100) - ) - }, - ) - sinkdsm = solph.components.experimental.SinkDSM( - label="sink_dsm_oemof", - approach="oemof", - inputs={bus1: solph.flows.Flow()}, - demand=[1] * 6, - capacity_up=[0.5] * 6, - capacity_down=[0.5] * 6, - max_demand=1, - delay_time=1, - shift_interval=2, - cost_dsm_down_shift=0.5, - cost_dsm_up=0.5, - shed_eligibility=False, - investment=solph.Investment( - ep_costs=100, - existing=50, - minimum=33, - maximum=100, - age=1, - lifetime=2, - overall_maximum=1000, - overall_minimum=200, - ), - ) - self.energysystem.add(bus1, source, sinkdsm) - om = self.get_om() - solph.constraints.investment_limit_per_period( - om, limit=[400, 300, 200] - ) - - self.compare_lp_files( - "periodical_investment_limit_with_dsm_oemof.lp", my_om=om - ) - - def test_periodical_investment_limit_missing(self): - """Testing the investment_limit function in the constraint module.""" - bus1 = solph.buses.Bus(label="Bus1") - storage = solph.components.GenericStorage( - label="storage_invest_limit", - invest_relation_input_capacity=0.2, - invest_relation_output_capacity=0.2, - inputs={bus1: solph.flows.Flow()}, - outputs={bus1: solph.flows.Flow()}, - lifetime_inflow=20, - lifetime_outflow=20, - nominal_storage_capacity=solph.Investment( - ep_costs=145, lifetime=30 - ), - ) - source = solph.components.Source( - label="Source", - outputs={ - bus1: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=123, lifetime=100) - ) - }, - ) - self.energysystem.add(bus1, storage, source) - om = self.get_om() - msg = "You have to provide an investment limit for each period!" - with pytest.raises(ValueError, match=msg): - solph.constraints.investment_limit_per_period(om, limit=None) - - def test_min_max_runtime(self): - """Testing min and max runtimes for nonconvex flows.""" - bus_t = solph.buses.Bus(label="Bus_T") - source = solph.components.Source( - label="cheap_plant_min_down_constraints", - outputs={ - bus_t: solph.flows.Flow( - nominal_value=10, - min=0.5, - max=1.0, - variable_costs=10, - nonconvex=solph.NonConvex( - minimum_downtime=4, - minimum_uptime=2, - initial_status=1, - startup_costs=5, - shutdown_costs=7, - ), - ) - }, - ) - self.energysystem.add(bus_t, source) - self.compare_lp_files("min_max_runtime_multi_period.lp") - - def test_activity_costs(self): - """Testing activity_costs attribute for nonconvex flows.""" - bus_t = solph.buses.Bus(label="Bus_C") - source = solph.components.Source( - label="cheap_plant_activity_costs", - outputs={ - bus_t: solph.flows.Flow( - nominal_value=10, - min=0.5, - max=1.0, - variable_costs=10, - nonconvex=solph.NonConvex( - activity_costs=2, - ), - ) - }, - ) - self.energysystem.add(bus_t, source) - self.compare_lp_files("activity_costs_multi_period.lp") - - def test_inactivity_costs(self): - """Testing inactivity_costs attribute for nonconvex flows.""" - bus_t = solph.buses.Bus(label="Bus_C") - source = solph.components.Source( - label="cheap_plant_inactivity_costs", - outputs={ - bus_t: solph.flows.Flow( - nominal_value=10, - min=0.5, - max=1.0, - variable_costs=10, - nonconvex=solph.NonConvex( - inactivity_costs=2, - ), - ) - }, - ) - self.energysystem.add(bus_t, source) - self.compare_lp_files("inactivity_costs_multi_period.lp") - - def test_piecewise_linear_converter_cc(self): - """Testing PiecewiseLinearConverter using CC formulation.""" - bgas = solph.buses.Bus(label="gasBus") - bel = solph.buses.Bus(label="electricityBus") - pwltf = solph.components.experimental.PiecewiseLinearConverter( - label="pwltf", - inputs={ - bgas: solph.flows.Flow(nominal_value=100, variable_costs=1) - }, - outputs={bel: solph.flows.Flow()}, - in_breakpoints=[0, 25, 50, 75, 100], - conversion_function=lambda x: x**2, - pw_repn="CC", - ) - self.energysystem.add(bgas, bel, pwltf) - self.compare_lp_files("piecewise_linear_converter_cc_multi_period.lp") - - def test_piecewise_linear_converter_dcc(self): - """Testing PiecewiseLinearConverter using DCC formulation.""" - bgas = solph.buses.Bus(label="gasBus") - bel = solph.buses.Bus(label="electricityBus") - pwltf = solph.components.experimental.PiecewiseLinearConverter( - label="pwltf", - inputs={ - bgas: solph.flows.Flow(nominal_value=100, variable_costs=1) - }, - outputs={bel: solph.flows.Flow()}, - in_breakpoints=[0, 25, 50, 75, 100], - conversion_function=lambda x: x**2, - pw_repn="DCC", - ) - self.energysystem.add(bgas, bel, pwltf) - self.compare_lp_files("piecewise_linear_converter_dcc_multi_period.lp") - - def test_maximum_startups(self): - """Testing maximum_startups attribute for nonconvex flows.""" - bus_t = solph.buses.Bus(label="Bus_C") - source = solph.components.Source( - label="cheap_plant_maximum_startups", - outputs={ - bus_t: solph.flows.Flow( - nominal_value=10, - min=0.5, - max=1.0, - variable_costs=10, - nonconvex=solph.NonConvex(maximum_startups=2), - ) - }, - ) - self.energysystem.add(bus_t, source) - self.compare_lp_files("maximum_startups_multi_period.lp") - - def test_maximum_shutdowns(self): - """Testing maximum_shutdowns attribute for nonconvex flows.""" - bus_t = solph.buses.Bus(label="Bus_C") - source = solph.components.Source( - label="cheap_plant_maximum_shutdowns", - outputs={ - bus_t: solph.flows.Flow( - nominal_value=10, - min=0.5, - max=1.0, - variable_costs=10, - nonconvex=solph.NonConvex(maximum_shutdowns=2), - ) - }, - ) - self.energysystem.add(bus_t, source) - self.compare_lp_files("maximum_shutdowns_multi_period.lp") - - def test_offsetconverter(self): - """Constraint test of a OffsetOffsetConverter.""" - bgas = solph.buses.Bus(label="gasBus") - bth = solph.buses.Bus(label="thermalBus") - - otrf = solph.components.OffsetConverter( - label="gasboiler", - inputs={bgas: solph.flows.Flow()}, - outputs={ - bth: solph.flows.Flow( - nominal_value=100, min=0.32, nonconvex=solph.NonConvex() - ) - }, - coefficients={bth: (-17, 0.9)}, - ) - self.energysystem.add(bgas, bth, otrf) - self.compare_lp_files("offsetconverter_multi_period.lp") - - def test_dsm_module_DIW(self): - """Constraint test of SinkDSM with approach=DLR""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1] * 6, - capacity_up=[0.5] * 6, - capacity_down=[0.5] * 6, - approach="DIW", - max_demand=1, - max_capacity_up=1, - max_capacity_down=1, - delay_time=1, - cost_dsm_down_shift=2, - shed_eligibility=False, - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_DIW_multi_period.lp") - - def test_dsm_module_DLR(self): - """Constraint test of SinkDSM with approach=DLR""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1] * 6, - capacity_up=[0.5] * 6, - capacity_down=[0.5] * 6, - approach="DLR", - max_demand=1, - max_capacity_up=1, - max_capacity_down=1, - delay_time=2, - shift_time=1, - cost_dsm_down_shift=2, - shed_eligibility=False, - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_DLR_multi_period.lp") - - def test_dsm_module_oemof(self): - """Constraint test of SinkDSM with approach=oemof""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1] * 6, - capacity_up=[0.5, 0.4, 0.5, 0.3, 0.3, 0.3], - capacity_down=[0.5, 0.4, 0.5, 0.3, 0.3, 0.3], - approach="oemof", - max_demand=1, - max_capacity_up=1, - max_capacity_down=1, - shift_interval=2, - cost_dsm_down_shift=2, - shed_eligibility=False, - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_oemof_multi_period.lp") - - def test_dsm_module_DIW_extended(self): - """Constraint test of SinkDSM with approach=DLR - - Test all possible parameters and constraints - """ - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1, 0.9, 0.8, 0.7, 0.7, 0.7], - capacity_up=[0.5, 0.4, 0.5, 0.3, 0.3, 0.3], - capacity_down=[0.3, 0.3, 0.4, 0.3, 0.3, 0.3], - approach="DIW", - max_demand=1, - max_capacity_up=1, - max_capacity_down=1, - delay_time=1, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - efficiency=0.99, - recovery_time_shift=2, - recovery_time_shed=2, - shed_time=2, - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_DIW_extended_multi_period.lp") - - def test_dsm_module_DLR_extended(self): - """Constraint test of SinkDSM with approach=DLR""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1, 0.9, 0.8, 0.7, 0.7, 0.7], - capacity_up=[0.5, 0.4, 0.5, 0.3, 0.3, 0.3], - capacity_down=[0.3, 0.3, 0.4, 0.3, 0.3, 0.3], - approach="DLR", - max_demand=1, - max_capacity_up=1, - max_capacity_down=1, - delay_time=2, - shift_time=1, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - efficiency=0.99, - recovery_time_shed=2, - ActivateYearLimit=True, - ActivateDayLimit=True, - n_yearLimit_shift=100, - n_yearLimit_shed=50, - t_dayLimit=3, - addition=False, - fixes=False, - shed_time=2, - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_DLR_extended_multi_period.lp") - - def test_dsm_module_oemof_extended(self): - """Constraint test of SinkDSM with approach=oemof""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1, 0.9, 0.8, 0.7, 0.7, 0.7], - capacity_up=[0.5, 0.4, 0.5, 0.3, 0.3, 0.3], - capacity_down=[0.3, 0.3, 0.4, 0.3, 0.3, 0.3], - approach="oemof", - shift_interval=2, - max_demand=1, - max_capacity_up=1, - max_capacity_down=1, - delay_time=2, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - efficiency=0.99, - recovery_time_shed=2, - shed_time=2, - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_oemof_extended_multi_period.lp") - - def test_dsm_module_DIW_invest(self): - """Constraint test of SinkDSM with approach=DLR and investments""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1] * 6, - capacity_up=[0.5] * 6, - capacity_down=[0.5] * 6, - approach="DIW", - max_demand=[1, 2, 3], - delay_time=1, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - shed_eligibility=True, - recovery_time_shed=2, - shed_time=2, - investment=solph.Investment( - ep_costs=100, - existing=50, - minimum=33, - maximum=100, - age=1, - lifetime=20, - fixed_costs=20, - overall_maximum=1000, - overall_minimum=5, - ), - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_DIW_invest_multi_period.lp") - - def test_dsm_module_DIW_invest_remaining_value(self): - """Constraint test of SinkDSM with approach=DLR and investments""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1] * 6, - capacity_up=[0.5] * 6, - capacity_down=[0.5] * 6, - approach="DIW", - max_demand=[1, 2, 3], - delay_time=1, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - shed_eligibility=True, - recovery_time_shed=2, - shed_time=2, - investment=solph.Investment( - ep_costs=[100, 90, 80], - existing=50, - minimum=33, - maximum=100, - age=1, - lifetime=20, - fixed_costs=20, - overall_maximum=1000, - overall_minimum=5, - ), - ) - self.energysystem.use_remaining_value = True - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files( - "dsm_module_DIW_invest_multi_period_remaining_value.lp" - ) - self.energysystem.use_remaining_value = False - - def test_dsm_module_DLR_invest(self): - """Constraint test of SinkDSM with approach=DLR and investments""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1] * 6, - capacity_up=[0.5] * 6, - capacity_down=[0.5] * 6, - approach="DLR", - max_demand=[1, 2, 3], - delay_time=2, - shift_time=1, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - shed_eligibility=True, - recovery_time_shed=2, - shed_time=2, - n_yearLimit_shed=50, - investment=solph.Investment( - ep_costs=100, - existing=50, - minimum=33, - maximum=100, - age=1, - lifetime=20, - fixed_costs=20, - overall_maximum=1000, - overall_minimum=5, - ), - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_DLR_invest_multi_period.lp") - - def test_dsm_module_DLR_invest_remaining_value(self): - """Constraint test of SinkDSM with approach=DLR and investments""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1] * 6, - capacity_up=[0.5] * 6, - capacity_down=[0.5] * 6, - approach="DLR", - max_demand=[1, 2, 3], - delay_time=2, - shift_time=1, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - shed_eligibility=True, - recovery_time_shed=2, - shed_time=2, - n_yearLimit_shed=50, - investment=solph.Investment( - ep_costs=[100, 90, 80], - existing=50, - minimum=33, - maximum=100, - age=1, - lifetime=20, - fixed_costs=20, - overall_maximum=1000, - overall_minimum=5, - ), - ) - self.energysystem.use_remaining_value = True - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files( - "dsm_module_DLR_invest_multi_period_remaining_value.lp" - ) - self.energysystem.use_remaining_value = False - - def test_dsm_module_oemof_invest(self): - """Constraint test of SinkDSM with approach=oemof and investments""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1] * 6, - capacity_up=[0.5, 0.4, 0.5, 0.3, 0.3, 0.3], - capacity_down=[0.5, 0.4, 0.5, 0.3, 0.3, 0.3], - approach="oemof", - max_demand=[1, 2, 3], - shift_interval=2, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - shed_eligibility=True, - recovery_time_shed=2, - shed_time=2, - investment=solph.Investment( - ep_costs=100, - existing=50, - minimum=33, - maximum=100, - age=1, - lifetime=20, - fixed_costs=20, - overall_maximum=1000, - overall_minimum=5, - ), - ) - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files("dsm_module_oemof_invest_multi_period.lp") - - def test_dsm_module_oemof_invest_remaining_value(self): - """Constraint test of SinkDSM with approach=oemof and investments""" - - b_elec = solph.buses.Bus(label="bus_elec") - sinkdsm = solph.components.experimental.SinkDSM( - label="demand_dsm", - inputs={b_elec: solph.flows.Flow()}, - demand=[1] * 6, - capacity_up=[0.5, 0.4, 0.5, 0.3, 0.3, 0.3], - capacity_down=[0.5, 0.4, 0.5, 0.3, 0.3, 0.3], - approach="oemof", - max_demand=[1, 2, 3], - shift_interval=2, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - shed_eligibility=True, - recovery_time_shed=2, - shed_time=2, - investment=solph.Investment( - ep_costs=[100, 90, 80], - existing=50, - minimum=33, - maximum=100, - age=1, - lifetime=20, - fixed_costs=20, - overall_maximum=1000, - overall_minimum=5, - ), - ) - self.energysystem.use_remaining_value = True - self.energysystem.add(b_elec, sinkdsm) - self.compare_lp_files( - "dsm_module_oemof_invest_multi_period_remaining_value.lp" - ) - self.energysystem.use_remaining_value = False - - def test_nonconvex_investment_storage_without_offset(self): - """All invest variables are coupled. The invest variables of the Flows - will be created during the initialisation of the storage e.g. battery - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage_non_convex", - inputs={bel: solph.flows.Flow(variable_costs=56)}, - outputs={bel: solph.flows.Flow(variable_costs=24)}, - loss_rate=0.13, - max_storage_level=0.9, - min_storage_level=0.1, - invest_relation_input_capacity=1 / 6, - invest_relation_output_capacity=1 / 6, - inflow_conversion_factor=0.97, - outflow_conversion_factor=0.86, - lifetime_inflow=20, - lifetime_outflow=20, - nominal_storage_capacity=solph.Investment( - ep_costs=141, - maximum=244, - minimum=12, - nonconvex=True, - lifetime=20, - ), - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_without_offset_multi_period.lp") - - def test_nonconvex_investment_storage_without_offset_remaining_value(self): - """All invest variables are coupled. The invest variables of the Flows - will be created during the initialisation of the storage e.g. battery - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage_non_convex", - inputs={bel: solph.flows.Flow(variable_costs=56)}, - outputs={bel: solph.flows.Flow(variable_costs=24)}, - loss_rate=0.13, - max_storage_level=0.9, - min_storage_level=0.1, - invest_relation_input_capacity=1 / 6, - invest_relation_output_capacity=1 / 6, - inflow_conversion_factor=0.97, - outflow_conversion_factor=0.86, - lifetime_inflow=20, - lifetime_outflow=20, - nominal_storage_capacity=solph.Investment( - ep_costs=141, - maximum=244, - minimum=12, - nonconvex=True, - lifetime=20, - ), - ) - self.energysystem.use_remaining_value = True - self.energysystem.add(bel, storage) - self.compare_lp_files( - "storage_invest_without_offset_multi_period_remaining_value.lp" - ) - self.energysystem.use_remaining_value = False - - def test_nonconvex_investment_storage_with_offset(self): - """All invest variables are coupled. The invest variables of the Flows - will be created during the initialisation of the storage e.g. battery - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage_non_convex", - inputs={bel: solph.flows.Flow(variable_costs=56)}, - outputs={bel: solph.flows.Flow(variable_costs=24)}, - loss_rate=0.13, - max_storage_level=0.9, - min_storage_level=0.1, - invest_relation_input_capacity=1 / 6, - invest_relation_output_capacity=1 / 6, - inflow_conversion_factor=0.97, - outflow_conversion_factor=0.86, - lifetime_inflow=20, - lifetime_outflow=20, - nominal_storage_capacity=solph.Investment( - ep_costs=145, - minimum=19, - offset=5, - nonconvex=True, - maximum=1454, - lifetime=20, - ), - ) - self.energysystem.add(bel, storage) - self.compare_lp_files("storage_invest_with_offset_multi_period.lp") - - def test_nonconvex_investment_storage_with_offset_remaining_value(self): - """All invest variables are coupled. The invest variables of the Flows - will be created during the initialisation of the storage e.g. battery - """ - bel = solph.buses.Bus(label="electricityBus") - - storage = solph.components.GenericStorage( - label="storage_non_convex", - inputs={bel: solph.flows.Flow(variable_costs=56)}, - outputs={bel: solph.flows.Flow(variable_costs=24)}, - loss_rate=0.13, - max_storage_level=0.9, - min_storage_level=0.1, - invest_relation_input_capacity=1 / 6, - invest_relation_output_capacity=1 / 6, - inflow_conversion_factor=0.97, - outflow_conversion_factor=0.86, - lifetime_inflow=20, - lifetime_outflow=20, - nominal_storage_capacity=solph.Investment( - ep_costs=145, - minimum=19, - offset=5, - nonconvex=True, - maximum=1454, - lifetime=20, - ), - ) - self.energysystem.use_remaining_value = True - self.energysystem.add(bel, storage) - self.compare_lp_files( - "storage_invest_with_offset_multi_period_remaining_value.lp" - ) - self.energysystem.use_remaining_value = False - - def test_nonconvex_invest_storage_all_nonconvex(self): - """All invest variables are free and nonconvex.""" - b1 = solph.buses.Bus(label="bus1") - - storage = solph.components.GenericStorage( - label="storage_all_nonconvex", - inputs={ - b1: solph.flows.Flow( - nominal_value=solph.Investment( - nonconvex=True, - minimum=5, - offset=10, - maximum=30, - ep_costs=10, - lifetime=20, - ) - ) - }, - outputs={ - b1: solph.flows.Flow( - nominal_value=solph.Investment( - nonconvex=True, - minimum=8, - offset=15, - ep_costs=10, - maximum=20, - lifetime=20, - ) - ) - }, - nominal_storage_capacity=solph.Investment( - nonconvex=True, - ep_costs=20, - offset=30, - minimum=20, - maximum=100, - lifetime=20, - ), - ) - self.energysystem.add(b1, storage) - self.compare_lp_files("storage_invest_all_nonconvex_multi_period.lp") - - def test_nonconvex_invest_sink_without_offset(self): - """Non convex invest flow without offset, with minimum.""" - bel = solph.buses.Bus(label="electricityBus") - - sink = solph.components.Sink( - label="sink_nonconvex_invest", - inputs={ - bel: solph.flows.Flow( - full_load_time_max=2.3, - variable_costs=25, - max=0.8, - nominal_value=solph.Investment( - ep_costs=500, - minimum=15, - nonconvex=True, - maximum=172, - lifetime=20, - ), - ) - }, - ) - self.energysystem.add(bel, sink) - self.compare_lp_files("flow_invest_without_offset_multi_period.lp") - - def test_nonconvex_invest_sink_without_offset_remaining_value(self): - """Non convex invest flow without offset, with minimum.""" - bel = solph.buses.Bus(label="electricityBus") - - sink = solph.components.Sink( - label="sink_nonconvex_invest", - inputs={ - bel: solph.flows.Flow( - full_load_time_max=2.3, - variable_costs=25, - max=0.8, - nominal_value=solph.Investment( - ep_costs=500, - minimum=15, - nonconvex=True, - maximum=172, - lifetime=20, - ), - ) - }, - ) - self.energysystem.use_remaining_value = True - self.energysystem.add(bel, sink) - self.compare_lp_files( - "flow_invest_without_offset_multi_period_remaining_value.lp" - ) - self.energysystem.use_remaining_value = False - - def test_nonconvex_invest_source_with_offset(self): - """Non convex invest flow with offset, with minimum.""" - bel = solph.buses.Bus(label="electricityBus") - - source = solph.components.Source( - label="source_nonconvex_invest", - outputs={ - bel: solph.flows.Flow( - full_load_time_max=2.3, - variable_costs=25, - max=0.8, - nominal_value=solph.Investment( - ep_costs=500, - minimum=15, - maximum=20, - offset=34, - nonconvex=True, - lifetime=20, - ), - ) - }, - ) - self.energysystem.add(bel, source) - self.compare_lp_files("flow_invest_with_offset_multi_period.lp") - - def test_nonconvex_invest_source_with_offset_remaining_value(self): - """Non convex invest flow with offset, with minimum.""" - bel = solph.buses.Bus(label="electricityBus") - - source = solph.components.Source( - label="source_nonconvex_invest", - outputs={ - bel: solph.flows.Flow( - full_load_time_max=2.3, - variable_costs=25, - max=0.8, - nominal_value=solph.Investment( - ep_costs=500, - minimum=15, - maximum=20, - offset=34, - nonconvex=True, - lifetime=20, - ), - ) - }, - ) - self.energysystem.use_remaining_value = True - self.energysystem.add(bel, source) - self.compare_lp_files( - "flow_invest_with_offset_multi_period_remaining_value.lp" - ) - self.energysystem.use_remaining_value = False - - def test_nonconvex_invest_source_with_offset_no_minimum(self): - """Non convex invest flow with offset, without minimum.""" - bel = solph.buses.Bus(label="electricityBus") - - source = solph.components.Source( - label="source_nonconvex_invest", - outputs={ - bel: solph.flows.Flow( - full_load_time_max=2.3, - variable_costs=25, - max=0.8, - nominal_value=solph.Investment( - ep_costs=500, - maximum=1234, - offset=34, - nonconvex=True, - lifetime=20, - ), - ) - }, - ) - self.energysystem.add(bel, source) - self.compare_lp_files( - "flow_invest_with_offset_no_minimum_multi_period.lp" - ) - - def test_summed_min_max_source(self): - """Test sink with full_load_time_min and _max attribute""" - bel = solph.buses.Bus(label="electricityBus") - - sink = solph.components.Sink( - label="excess", - inputs={ - bel: solph.flows.Flow( - full_load_time_min=3, - full_load_time_max=100, - variable_costs=25, - max=0.8, - nominal_value=10, - ) - }, - ) - self.energysystem.add(bel, sink) - self.compare_lp_files("summed_min_source_multi_period.lp") - - def test_flow_reaching_lifetime(self): - """Test flow forced to zero once exceeding its lifetime""" - bel = solph.buses.Bus(label="electricityBus") - - sink = solph.components.Sink( - label="excess", - inputs={ - bel: solph.flows.Flow( - variable_costs=25, max=0.8, nominal_value=10, lifetime=2 - ) - }, - ) - self.energysystem.add(bel, sink) - self.compare_lp_files("flow_reaching_lifetime.lp") - - def test_flow_reaching_lifetime_initial_age(self): - """Test flow forced to zero once exceeding its lifetime with age""" - bel = solph.buses.Bus(label="electricityBus") - - sink = solph.components.Sink( - label="excess", - inputs={ - bel: solph.flows.Flow( - variable_costs=25, - max=0.8, - nominal_value=10, - lifetime=2, - age=1, - ) - }, - ) - self.energysystem.add(bel, sink) - self.compare_lp_files("flow_reaching_lifetime_initial_age.lp") - - @pytest.mark.filterwarnings( - "ignore:Be aware that the fixed costs attribute is only:UserWarning" - ) - def test_fixed_costs(self): - """Test fixed_cost attribute for different kinds of flows""" - bel = solph.buses.Bus(label="electricityBus") - - source1 = solph.components.Source( - label="pv_forever", - outputs={ - bel: solph.flows.Flow( - variable_costs=25, max=0.8, nominal_value=10, fixed_costs=3 - ) - }, - ) - - source2 = solph.components.Source( - label="pv_with_lifetime", - outputs={ - bel: solph.flows.Flow( - variable_costs=25, - max=0.8, - nominal_value=10, - fixed_costs=3, - lifetime=20, - ) - }, - ) - - source3 = solph.components.Source( - label="pv_with_lifetime_and_age", - outputs={ - bel: solph.flows.Flow( - variable_costs=25, - max=0.8, - nominal_value=10, - fixed_costs=3, - lifetime=20, - age=18, - ) - }, - ) - self.energysystem.add(bel, source1, source2, source3) - self.compare_lp_files("fixed_costs_sources.lp") - - def test_multi_period_varying_period_length(self): - """Test multi period with varying period length""" - - # Define starting years of investment periods - years = [2000, 2020, 2035, 2045, 2050, 2060, 2075, 2095] - - # Create a list of timeindex for each period - periods = [ - pd.date_range(f"1/1/{i}", periods=3, freq="h") for i in years - ] - - # Create an overall timeindex - timeindex = pd.concat( - [pd.Series(index=i, dtype="float64") for i in periods] - ).index - - # Create an energy system - es = solph.EnergySystem( - timeindex=timeindex, - timeincrement=[1] * len(timeindex), - periods=periods, - infer_last_interval=False, - ) - - # Create buses - bel = solph.Bus(label="electricity", balanced=True) - - # Create a storage - storage = solph.components.GenericStorage( - label="storage", - inputs={ - bel: solph.Flow( - variable_costs=0, - nominal_value=solph.Investment( - ep_costs=10, - existing=0, - lifetime=20, - age=0, - interest_rate=0.02, - ), - ) - }, - outputs={ - bel: solph.Flow( - variable_costs=0, - nominal_value=solph.Investment( - ep_costs=10, - existing=0, - lifetime=20, - age=0, - interest_rate=0.02, - ), - ) - }, - loss_rate=0.00, - invest_relation_output_capacity=0.2, - invest_relation_input_output=1, - # inflow_conversion_factor=1, - # outflow_conversion_factor=0.8, - # nominal_storage_capacity=100, - nominal_storage_capacity=solph.Investment( - ep_costs=10, - maximum=float("+inf"), - existing=0, - lifetime=20, - age=0, - fixed_costs=None, - interest_rate=0.02, - ), - ) - # Create a DSM sink with DIW approach - sinkdsm_diw = solph.components.experimental.SinkDSM( - label="demand_dsm_diw", - inputs={bel: solph.flows.Flow()}, - demand=[1] * len(timeindex), - capacity_up=[0.5] * len(timeindex), - capacity_down=[0.5] * len(timeindex), - approach="DIW", - max_demand=[1] * len(timeindex), - delay_time=1, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - shed_eligibility=True, - recovery_time_shed=2, - shed_time=2, - investment=solph.Investment( - ep_costs=100, - minimum=33, - maximum=100, - lifetime=20, - fixed_costs=20, - overall_maximum=1000, - overall_minimum=5, - ), - ) - - # Create a DSM sink with DLR approach - sinkdsm_dlr = solph.components.experimental.SinkDSM( - label="demand_dsm_dlr", - inputs={bel: solph.flows.Flow()}, - demand=[1] * len(timeindex), - capacity_up=[0.5] * len(timeindex), - capacity_down=[0.5] * len(timeindex), - approach="DLR", - max_demand=[1] * len(timeindex), - delay_time=2, - shift_time=1, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - shed_eligibility=True, - recovery_time_shed=2, - shed_time=2, - n_yearLimit_shed=50, - investment=solph.Investment( - ep_costs=100, - minimum=33, - maximum=100, - lifetime=20, - fixed_costs=20, - overall_maximum=1000, - overall_minimum=5, - ), - ) - - # Create a DSM sink with oemof approach - sinkdsm_oemof = solph.components.experimental.SinkDSM( - label="demand_dsm_oemof", - inputs={bel: solph.flows.Flow()}, - demand=[1] * len(timeindex), - capacity_up=[0.5] * len(timeindex), - capacity_down=[0.5] * len(timeindex), - approach="oemof", - max_demand=[1] * len(timeindex), - shift_interval=2, - cost_dsm_down_shift=1, - cost_dsm_up=1, - cost_dsm_down_shed=100, - shed_eligibility=True, - recovery_time_shed=2, - shed_time=2, - investment=solph.Investment( - ep_costs=100, - existing=50, - minimum=33, - maximum=100, - age=1, - lifetime=20, - fixed_costs=20, - overall_maximum=1000, - overall_minimum=5, - ), - ) - - # Add components to the energy system - es.add(bel, storage, sinkdsm_diw, sinkdsm_dlr, sinkdsm_oemof) - - # Create an optimization problem - om = solph.Model(es) - - # Compare the lp files - self.compare_lp_files("multi_period_period_length.lp", my_om=om) From 4f11cb6b8eb5022c66a7fbbab883c9589f8a5080 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Tue, 2 Jul 2024 17:36:28 +0200 Subject: [PATCH 03/54] Improve testability of installation test --- src/oemof/solph/_console_scripts.py | 50 +++++++++++++++++++---------- tests/test_console_scripts.py | 12 ++++++- 2 files changed, 44 insertions(+), 18 deletions(-) diff --git a/src/oemof/solph/_console_scripts.py b/src/oemof/solph/_console_scripts.py index da0d66a78..ecc15c77b 100644 --- a/src/oemof/solph/_console_scripts.py +++ b/src/oemof/solph/_console_scripts.py @@ -18,7 +18,7 @@ from oemof import solph -def check_oemof_installation(silent=False): +def _check_oemof_installation(solvers): logging.disable(logging.CRITICAL) date_time_index = pd.date_range("1/1/2012", periods=6, freq="h") @@ -48,22 +48,38 @@ def check_oemof_installation(silent=False): om = solph.Model(energysystem) # check solvers - solver = dict() - for s in ["cbc", "glpk", "gurobi", "cplex"]: + solver_status = dict() + for s in solvers: try: om.solve(solver=s) - solver[s] = "working" + solver_status[s] = True except Exception: - solver[s] = "not working" - - if not silent: - print() - print("*****************************") - print("Solver installed with oemof:") - print() - for s, t in solver.items(): - print("{0}: {1}".format(s, t)) - print() - print("*****************************") - print("oemof successfully installed.") - print("*****************************") + solver_status[s] = False + + return solver_status + + +def check_oemof_installation(): + + solvers_to_test = ["cbc", "glpk", "gurobi", "cplex"] + + solver_status = _check_oemof_installation(solvers_to_test) + + print_text = ( + "***********************************\n" + "Solver installed with oemof.solph:\n" + "\n" + ) + for solver, works in solver_status.items(): + if works: + print_text += f"{solver}: installed and working\n" + else: + print_text += f"{solver}: not installed/ not working\n" + print_text += ( + "\n" + "***********************************\n" + "oemof.solph successfully installed.\n" + "***********************************\n" + ) + + print(print_text) diff --git a/tests/test_console_scripts.py b/tests/test_console_scripts.py index ff03710b8..c016bc9e5 100644 --- a/tests/test_console_scripts.py +++ b/tests/test_console_scripts.py @@ -12,4 +12,14 @@ def test_console_scripts(): - console_scripts.check_oemof_installation(silent=False) + # this is just a smoke test + console_scripts.check_oemof_installation() + + +def test_solver_check(): + solver_list = ["cbc", "invalid solver"] + results = console_scripts._check_oemof_installation(solver_list) + + assert isinstance(results, dict) + assert list(results.keys()) == solver_list + assert results["invalid solver"] == False From 42765432a379d721c06d6949d969189f3ee55aaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Tue, 2 Jul 2024 17:46:56 +0200 Subject: [PATCH 04/54] Compare bool according to style guide --- tests/test_console_scripts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_console_scripts.py b/tests/test_console_scripts.py index c016bc9e5..dbc0f7ccc 100644 --- a/tests/test_console_scripts.py +++ b/tests/test_console_scripts.py @@ -22,4 +22,4 @@ def test_solver_check(): assert isinstance(results, dict) assert list(results.keys()) == solver_list - assert results["invalid solver"] == False + assert results["invalid solver"] is False From 23bcc39ada024a20535e279daf6f6f92b0b766e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Tue, 2 Jul 2024 17:50:00 +0200 Subject: [PATCH 05/54] Compare bool according to style guide --- tests/test_console_scripts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_console_scripts.py b/tests/test_console_scripts.py index dbc0f7ccc..e0078bf12 100644 --- a/tests/test_console_scripts.py +++ b/tests/test_console_scripts.py @@ -22,4 +22,4 @@ def test_solver_check(): assert isinstance(results, dict) assert list(results.keys()) == solver_list - assert results["invalid solver"] is False + assert not results["invalid solver"] From 7ef38e162a89c54163ac6c3b9c61271d986de834 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Tue, 2 Jul 2024 21:38:03 +0200 Subject: [PATCH 06/54] Move test_constraints to own directory --- tests/{ => test_constraints}/test_constraints_module.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/{ => test_constraints}/test_constraints_module.py (100%) diff --git a/tests/test_constraints_module.py b/tests/test_constraints/test_constraints_module.py similarity index 100% rename from tests/test_constraints_module.py rename to tests/test_constraints/test_constraints_module.py From 6b1a2b3a200b15e0cf31ef5e812045cff5e32817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Tue, 2 Jul 2024 21:52:08 +0200 Subject: [PATCH 07/54] Move create_time_index to helpers --- src/oemof/solph/__init__.py | 2 +- src/oemof/solph/_energy_system.py | 70 ------------------------------ src/oemof/solph/_helpers.py | 71 +++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 71 deletions(-) diff --git a/src/oemof/solph/__init__.py b/src/oemof/solph/__init__.py index 92d88d668..13c3b4109 100644 --- a/src/oemof/solph/__init__.py +++ b/src/oemof/solph/__init__.py @@ -8,8 +8,8 @@ from . import processing from . import views from ._energy_system import EnergySystem -from ._energy_system import create_time_index from ._groupings import GROUPINGS +from ._helpers import create_time_index from ._models import Model from ._options import Investment from ._options import NonConvex diff --git a/src/oemof/solph/_energy_system.py b/src/oemof/solph/_energy_system.py index 79681ad04..74a220f79 100644 --- a/src/oemof/solph/_energy_system.py +++ b/src/oemof/solph/_energy_system.py @@ -14,8 +14,6 @@ """ -import calendar -import datetime import warnings import numpy as np @@ -244,71 +242,3 @@ def get_period_duration(self, period): - self.periods[period].min().year + 1 ) - - -def create_time_index( - year: int = None, - interval: float = 1, - number: int = None, - start: datetime.datetime or datetime.date = None, -): - """ - Create a datetime index for one year. - - Notes - ----- - To create 8760 hourly intervals for a non leap year a datetime index with - 8761 time points need to be created. So the number of time steps is always - the number of intervals plus one. - - Parameters - ---------- - year : int, datetime - The year of the index. If number and start is set the year parameter is - ignored. - interval : float - The time interval in hours e.g. 0.5 for 30min or 2 for a two hour - interval (default: 1). - number : int - The number of time intervals. By default number is calculated to create - an index of one year. For a shorter or longer period the number of - intervals can be set by the user. - start : datetime.datetime or datetime.date - Optional start time. If start is not set, 00:00 of the first day of - the given year is the start time. - - Examples - -------- - >>> len(create_time_index(2014)) - 8761 - >>> len(create_time_index(2012)) # leap year - 8785 - >>> len(create_time_index(2014, interval=0.5)) - 17521 - >>> len(create_time_index(2014, interval=0.5, number=10)) - 11 - >>> len(create_time_index(2014, number=10)) - 11 - >>> str(create_time_index(2014, interval=0.5, number=10)[-1]) - '2014-01-01 05:00:00' - >>> str(create_time_index(2014, interval=2, number=10)[-1]) - '2014-01-01 20:00:00' - """ - if number is None: - if calendar.isleap(year): - hoy = 8784 - else: - hoy = 8760 - number = round(hoy / interval) - if start is None: - start = f"1/1/{year}" - try: - time_index = pd.date_range( - start, periods=number + 1, freq=f"{interval}h" - ) - except ValueError: - # Pandas <2.2 compatibility - time_index = pd.date_range( - start, periods=number + 1, freq=f"{interval}H" - ) - return time_index diff --git a/src/oemof/solph/_helpers.py b/src/oemof/solph/_helpers.py index fc245aca2..b794fca09 100644 --- a/src/oemof/solph/_helpers.py +++ b/src/oemof/solph/_helpers.py @@ -15,8 +15,11 @@ """ +import calendar +import datetime from warnings import warn +import pandas as pd from oemof.tools import debugging @@ -45,3 +48,71 @@ def warn_if_missing_attribute(obj, attribute): msg.format(attribute, obj.label, type(obj)), debugging.SuspiciousUsageWarning, ) + + +def create_time_index( + year: int = None, + interval: float = 1, + number: int = None, + start: datetime.datetime or datetime.date = None, +): + """ + Create a datetime index for one year. + + Notes + ----- + To create 8760 hourly intervals for a non leap year a datetime index with + 8761 time points need to be created. So the number of time steps is always + the number of intervals plus one. + + Parameters + ---------- + year : int, datetime + The year of the index. If number and start is set the year parameter is + ignored. + interval : float + The time interval in hours e.g. 0.5 for 30min or 2 for a two hour + interval (default: 1). + number : int + The number of time intervals. By default number is calculated to create + an index of one year. For a shorter or longer period the number of + intervals can be set by the user. + start : datetime.datetime or datetime.date + Optional start time. If start is not set, 00:00 of the first day of + the given year is the start time. + + Examples + -------- + >>> len(create_time_index(2014)) + 8761 + >>> len(create_time_index(2012)) # leap year + 8785 + >>> len(create_time_index(2014, interval=0.5)) + 17521 + >>> len(create_time_index(2014, interval=0.5, number=10)) + 11 + >>> len(create_time_index(2014, number=10)) + 11 + >>> str(create_time_index(2014, interval=0.5, number=10)[-1]) + '2014-01-01 05:00:00' + >>> str(create_time_index(2014, interval=2, number=10)[-1]) + '2014-01-01 20:00:00' + """ + if number is None: + if calendar.isleap(year): + hoy = 8784 + else: + hoy = 8760 + number = round(hoy / interval) + if start is None: + start = f"1/1/{year}" + try: + time_index = pd.date_range( + start, periods=number + 1, freq=f"{interval}h" + ) + except ValueError: + # Pandas <2.2 compatibility + time_index = pd.date_range( + start, periods=number + 1, freq=f"{interval}H" + ) + return time_index From 08694631917e8da8f18f6d826909759f0e5b287b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Tue, 2 Jul 2024 21:54:26 +0200 Subject: [PATCH 08/54] Fix type hint in create_time_index For Python 3.10+, "|" should be used instead of "or", but or is also incorrect for Python 3.9 (a typing.Union can be used). However, as date is superclass of datetime, giving the superclass shuld imply that the childs are also possible. --- src/oemof/solph/_helpers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/oemof/solph/_helpers.py b/src/oemof/solph/_helpers.py index b794fca09..15066af0c 100644 --- a/src/oemof/solph/_helpers.py +++ b/src/oemof/solph/_helpers.py @@ -54,7 +54,7 @@ def create_time_index( year: int = None, interval: float = 1, number: int = None, - start: datetime.datetime or datetime.date = None, + start: datetime.date = None, ): """ Create a datetime index for one year. From 12f5bcf85a8aea52c2de0c3e793ab01cf687b270 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Tue, 2 Jul 2024 22:09:20 +0200 Subject: [PATCH 09/54] Properly test create_time_index() --- src/oemof/solph/_helpers.py | 7 ++++++- tests/test_helpers.py | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/oemof/solph/_helpers.py b/src/oemof/solph/_helpers.py index 15066af0c..ceae7e269 100644 --- a/src/oemof/solph/_helpers.py +++ b/src/oemof/solph/_helpers.py @@ -104,7 +104,12 @@ def create_time_index( else: hoy = 8760 number = round(hoy / interval) - if start is None: + if start is not None: + if year is not None: + raise ValueError( + "Arguments 'start' and 'year' are mutually exclusive." + ) + else: start = f"1/1/{year}" try: time_index = pd.date_range( diff --git a/tests/test_helpers.py b/tests/test_helpers.py index c33380a17..f878896b1 100644 --- a/tests/test_helpers.py +++ b/tests/test_helpers.py @@ -9,8 +9,10 @@ """ import os +import pytest from oemof.solph import helpers +from oemof.solph import create_time_index def test_creation_of_extended_path(): @@ -18,3 +20,25 @@ def test_creation_of_extended_path(): p = helpers.extend_basic_path("test_subfolder_X345qw34_tmp") assert os.path.isdir(p) os.rmdir(p) + + +def test_create_time_index(): + assert len(create_time_index(2014)) == 8761 + assert len(create_time_index(2012)) == 8785 # leap year + assert len(create_time_index(2014, interval=0.5)) == 17521 + assert len(create_time_index(2014, interval=0.5, number=10)) == 11 + assert len(create_time_index(2014, number=10)) == 11 + assert ( + str(create_time_index(2014, interval=0.5, number=10)[-1]) + == "2014-01-01 05:00:00" + ) + assert ( + str(create_time_index(2014, interval=2, number=10)[-1]) + == "2014-01-01 20:00:00" + ) + assert ( + str(create_time_index(interval=0.5, number=10, start="2025-01-02")[-1]) + == "2025-01-02 05:00:00" + ) + with pytest.raises(ValueError, match="mutually exclusive"): + create_time_index(year=2015, start="2025-01-02") From 83e56457e06af07829048100bfc33e69c0017dbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 3 Jul 2024 08:21:07 +0200 Subject: [PATCH 10/54] Merge BaseModel into Model MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BaseModel was an unused superclass just for Model. At the moment it is not planned to have other models. Thus, it makes sense to merge both. Signed-off-by: Patrik Schönfeldt --- src/oemof/solph/_models.py | 399 ++++++++---------- .../solph/components/_generic_storage.py | 4 +- .../solph/flows/_investment_flow_block.py | 2 +- src/oemof/solph/processing.py | 2 +- tests/test_time_index.py | 8 +- 5 files changed, 189 insertions(+), 226 deletions(-) diff --git a/src/oemof/solph/_models.py b/src/oemof/solph/_models.py index 6d647b300..046fae7f1 100644 --- a/src/oemof/solph/_models.py +++ b/src/oemof/solph/_models.py @@ -40,17 +40,21 @@ class LoggingError(BaseException): pass -class BaseModel(po.ConcreteModel): - """The BaseModel for other solph-models (Model) +class Model(po.ConcreteModel): + """An energy system model for operational and/or investment + optimization. Parameters ---------- - energysystem : EnergySystem object + energysystem : EnergySystem object or (experimental) list Object that holds the nodes of an oemof energy system graph. - constraint_groups : list (optional) + constraint_groups : list Solph looks for these groups in the given energy system and uses them to create the constraints of the optimization problem. - Defaults to `Model.CONSTRAINTS` + Defaults to `Model.CONSTRAINT_GROUPS` + discount_rate : float or None + The rate used for discounting in a multi-period model. + A 2% discount rate needs to be defined as 0.02. objective_weighting : array like (optional) Weights used for temporal objective function expressions. If nothing is passed, `timeincrement` will be used which @@ -79,218 +83,6 @@ class BaseModel(po.ConcreteModel): Store the dual variables of the model if pyomo suffix is set to IMPORT rc : `pyomo.core.base.suffix.Suffix` or None Store the reduced costs of the model if pyomo suffix is set to IMPORT - """ - - # The default list of constraint groups to be used for a model - CONSTRAINT_GROUPS = [] - - def __init__(self, energysystem, **kwargs): - """Initialize a BaseModel, using its energysystem as well as - optional kwargs for specifying the timeincrement, objective_weighting - and constraint_groups.""" - super().__init__() - - # Check root logger. Due to a problem with pyomo the building of the - # model will take up to a 100 times longer if the root logger is set - # to DEBUG - - if getLogger().level <= 10 and kwargs.get("debug", False) is False: - msg = ( - "The root logger level is 'DEBUG'.\nDue to a communication " - "problem between solph and the pyomo package,\nusing the " - "DEBUG level will slow down the modelling process by the " - "factor ~100.\nIf you need the debug-logging you can " - "initialise the Model with 'debug=True`\nYou should only do " - "this for small models. To avoid the slow-down use the " - "logger\nfunction of oemof.tools (read docstring) or " - "change the level of the root logger:\n\nimport logging\n" - "logging.getLogger().setLevel(logging.INFO)" - ) - raise LoggingError(msg) - - # ######################## Arguments ################################# - - self.name = kwargs.get("name", type(self).__name__) - - self.es = energysystem - self.timeincrement = kwargs.get("timeincrement", self.es.timeincrement) - - self.objective_weighting = kwargs.get( - "objective_weighting", self.timeincrement - ) - - self._constraint_groups = type(self).CONSTRAINT_GROUPS + kwargs.get( - "constraint_groups", [] - ) - - self._constraint_groups += [ - i - for i in self.es.groups - if hasattr(i, "CONSTRAINT_GROUP") - and i not in self._constraint_groups - ] - - self.flows = self.es.flows() - - self.solver_results = None - self.dual = None - self.rc = None - - if kwargs.get("auto_construct", True): - self._construct() - - def _construct(self): - """Construct a BaseModel by adding parent block sets and variables - as well as child blocks and variables to it. - """ - self._add_parent_block_sets() - self._add_parent_block_variables() - self._add_child_blocks() - self._add_objective() - - def _add_parent_block_sets(self): - """Method to create all sets located at the parent block, i.e. in the - model itself, as they are to be shared across all model components. - See the class :py:class:~oemof.solph._models.Model - for the sets created. - """ - pass - - def _add_parent_block_variables(self): - """Method to create all variables located at the parent block, - i.e. the model itself as these variables are to be shared across - all model components. - See the class :py:class:~oemof.solph._models.Model - for the `flow` variable created. - """ - pass - - def _add_child_blocks(self): - """Method to add the defined child blocks for components that have - been grouped in the defined constraint groups. This collects all the - constraints from the buses, components and flows blocks - and adds them to the model. - """ - for group in self._constraint_groups: - # create instance for block - block = group() - # Add block to model - self.add_component(str(block), block) - # create constraints etc. related with block for all nodes - # in the group - block._create(group=self.es.groups.get(group)) - - def _add_objective(self, sense=po.minimize, update=False): - """Method to sum up all objective expressions from the child blocks - that have been created. This method looks for `_objective_expression` - attribute in the block definition and will call this method to add - their return value to the objective function. - """ - if update: - self.del_component("objective") - - expr = 0 - - for block in self.component_data_objects(): - if hasattr(block, "_objective_expression"): - expr += block._objective_expression() - - self.objective = po.Objective(sense=sense, expr=expr) - - def receive_duals(self): - """Method sets solver suffix to extract information about dual - variables from solver. Shadow prices (duals) and reduced costs (rc) are - set as attributes of the model. - """ - # shadow prices - self.dual = po.Suffix(direction=po.Suffix.IMPORT) - # reduced costs - self.rc = po.Suffix(direction=po.Suffix.IMPORT) - - def results(self): - """Returns a nested dictionary of the results of this optimization. - See the processing module for more information on results extraction. - """ - return processing.results(self) - - def solve(self, solver="cbc", solver_io="lp", **kwargs): - r"""Takes care of communication with solver to solve the model. - - Parameters - ---------- - solver : string - solver to be used e.g. "cbc", "glpk", "gurobi", "cplex" - solver_io : string - pyomo solver interface file format: "lp", "python", "nl", etc. - \**kwargs : keyword arguments - Possible keys can be set see below: - - Other Parameters - ---------------- - solve_kwargs : dict - Other arguments for the pyomo.opt.SolverFactory.solve() method - Example : {"tee":True} - cmdline_options : dict - Dictionary with command line options for solver e.g. - {"mipgap":"0.01"} results in "--mipgap 0.01" - \{"interior":" "} results in "--interior" - \Gurobi solver takes numeric parameter values such as - {"method": 2} - """ - solve_kwargs = kwargs.get("solve_kwargs", {}) - solver_cmdline_options = kwargs.get("cmdline_options", {}) - - opt = SolverFactory(solver, solver_io=solver_io) - # set command line options - options = opt.options - for k in solver_cmdline_options: - options[k] = solver_cmdline_options[k] - - solver_results = opt.solve(self, **solve_kwargs) - - status = solver_results["Solver"][0]["Status"] - termination_condition = solver_results["Solver"][0][ - "Termination condition" - ] - - if status == "ok" and termination_condition == "optimal": - logging.info("Optimization successful...") - else: - msg = ( - "Optimization ended with status {0} and termination " - "condition {1}" - ) - warnings.warn( - msg.format(status, termination_condition), UserWarning - ) - self.es.results = solver_results - self.solver_results = solver_results - - return solver_results - - def relax_problem(self): - """Relaxes integer variables to reals of optimization model self.""" - relaxer = RelaxIntegrality() - relaxer._apply_to(self) - - return self - - -class Model(BaseModel): - """An energy system model for operational and/or investment - optimization. - - Parameters - ---------- - energysystem : EnergySystem object or (experimental) list - Object that holds the nodes of an oemof energy system graph. - constraint_groups : list - Solph looks for these groups in the given energy system and uses them - to create the constraints of the optimization problem. - Defaults to `Model.CONSTRAINT_GROUPS` - discount_rate : float or None - The rate used for discounting in a multi-period model. - A 2% discount rate needs to be defined as 0.02. Note ---- @@ -343,6 +135,54 @@ class Model(BaseModel): ] def __init__(self, energysystem, discount_rate=None, **kwargs): + super().__init__() + + # Check root logger. Due to a problem with pyomo the building of the + # model will take up to a 100 times longer if the root logger is set + # to DEBUG + + if getLogger().level <= 10 and kwargs.get("debug", False) is False: + msg = ( + "The root logger level is 'DEBUG'.\nDue to a communication " + "problem between solph and the pyomo package,\nusing the " + "DEBUG level will slow down the modelling process by the " + "factor ~100.\nIf you need the debug-logging you can " + "initialise the Model with 'debug=True`\nYou should only do " + "this for small models. To avoid the slow-down use the " + "logger\nfunction of oemof.tools (read docstring) or " + "change the level of the root logger:\n\nimport logging\n" + "logging.getLogger().setLevel(logging.INFO)" + ) + raise LoggingError(msg) + + # ######################## Arguments ################################# + + self.name = kwargs.get("name", type(self).__name__) + + self.es = energysystem + self.timeincrement = kwargs.get("timeincrement", self.es.timeincrement) + + self.objective_weighting = kwargs.get( + "objective_weighting", self.timeincrement + ) + + self._constraint_groups = type(self).CONSTRAINT_GROUPS + kwargs.get( + "constraint_groups", [] + ) + + self._constraint_groups += [ + i + for i in self.es.groups + if hasattr(i, "CONSTRAINT_GROUP") + and i not in self._constraint_groups + ] + + self.flows = self.es.flows() + + self.solver_results = None + self.dual = None + self.rc = None + if discount_rate is not None: self.discount_rate = discount_rate elif ( @@ -357,7 +197,18 @@ def __init__(self, energysystem, discount_rate=None, **kwargs): self._set_discount_rate_with_warning() else: pass - super().__init__(energysystem, **kwargs) + + if kwargs.get("auto_construct", True): + self._construct() + + def _construct(self): + """Construct a Model by adding parent block sets and variables + as well as child blocks and variables to it. + """ + self._add_parent_block_sets() + self._add_parent_block_variables() + self._add_child_blocks() + self._add_objective() def _set_discount_rate_with_warning(self): """ @@ -491,3 +342,115 @@ def _add_parent_block_variables(self): if (o, i) in self.UNIDIRECTIONAL_FLOWS: for t in self.TIMESTEPS: self.flow[o, i, t].setlb(0) + + + def _add_child_blocks(self): + """Method to add the defined child blocks for components that have + been grouped in the defined constraint groups. This collects all the + constraints from the buses, components and flows blocks + and adds them to the model. + """ + for group in self._constraint_groups: + # create instance for block + block = group() + # Add block to model + self.add_component(str(block), block) + # create constraints etc. related with block for all nodes + # in the group + block._create(group=self.es.groups.get(group)) + + def _add_objective(self, sense=po.minimize, update=False): + """Method to sum up all objective expressions from the child blocks + that have been created. This method looks for `_objective_expression` + attribute in the block definition and will call this method to add + their return value to the objective function. + """ + if update: + self.del_component("objective") + + expr = 0 + + for block in self.component_data_objects(): + if hasattr(block, "_objective_expression"): + expr += block._objective_expression() + + self.objective = po.Objective(sense=sense, expr=expr) + + def receive_duals(self): + """Method sets solver suffix to extract information about dual + variables from solver. Shadow prices (duals) and reduced costs (rc) are + set as attributes of the model. + """ + # shadow prices + self.dual = po.Suffix(direction=po.Suffix.IMPORT) + # reduced costs + self.rc = po.Suffix(direction=po.Suffix.IMPORT) + + def results(self): + """Returns a nested dictionary of the results of this optimization. + See the processing module for more information on results extraction. + """ + return processing.results(self) + + def solve(self, solver="cbc", solver_io="lp", **kwargs): + r"""Takes care of communication with solver to solve the model. + + Parameters + ---------- + solver : string + solver to be used e.g. "cbc", "glpk", "gurobi", "cplex" + solver_io : string + pyomo solver interface file format: "lp", "python", "nl", etc. + \**kwargs : keyword arguments + Possible keys can be set see below: + + Other Parameters + ---------------- + solve_kwargs : dict + Other arguments for the pyomo.opt.SolverFactory.solve() method + Example : {"tee":True} + cmdline_options : dict + Dictionary with command line options for solver e.g. + {"mipgap":"0.01"} results in "--mipgap 0.01" + \{"interior":" "} results in "--interior" + \Gurobi solver takes numeric parameter values such as + {"method": 2} + """ + solve_kwargs = kwargs.get("solve_kwargs", {}) + solver_cmdline_options = kwargs.get("cmdline_options", {}) + + opt = SolverFactory(solver, solver_io=solver_io) + # set command line options + options = opt.options + for k in solver_cmdline_options: + options[k] = solver_cmdline_options[k] + + solver_results = opt.solve(self, **solve_kwargs) + + status = solver_results["Solver"][0]["Status"] + termination_condition = solver_results["Solver"][0][ + "Termination condition" + ] + + if status == "ok" and termination_condition == "optimal": + logging.info("Optimization successful...") + else: + msg = ( + "Optimization ended with status {0} and termination " + "condition {1}" + ) + warnings.warn( + msg.format(status, termination_condition), UserWarning + ) + self.es.results = solver_results + self.solver_results = solver_results + + return solver_results + + def relax_problem(self): + """Relaxes integer variables to reals of optimization model self.""" + relaxer = RelaxIntegrality() + relaxer._apply_to(self) + + return self + diff --git a/src/oemof/solph/components/_generic_storage.py b/src/oemof/solph/components/_generic_storage.py index 7e287fc09..d7d2ced14 100644 --- a/src/oemof/solph/components/_generic_storage.py +++ b/src/oemof/solph/components/_generic_storage.py @@ -634,12 +634,12 @@ class GenericInvestmentStorageBlock(ScalarBlock): * :math:`P_i(p, t)` Inflow of the storage - (created in :class:`oemof.solph.models.BaseModel`). + (created in :class:`oemof.solph.models.Model`). * :math:`P_o(p, t)` Outflow of the storage - (created in :class:`oemof.solph.models.BaseModel`). + (created in :class:`oemof.solph.models.Model`). * :math:`E(t)` diff --git a/src/oemof/solph/flows/_investment_flow_block.py b/src/oemof/solph/flows/_investment_flow_block.py index 02f3c8f37..2adbfcbc6 100644 --- a/src/oemof/solph/flows/_investment_flow_block.py +++ b/src/oemof/solph/flows/_investment_flow_block.py @@ -182,7 +182,7 @@ def _create_variables(self, _): * :math:`P(p, t)` Actual flow value - (created in :class:`oemof.solph.models.BaseModel`), + (created in :class:`oemof.solph.models.Model`), indexed by tuple of periods p and timestep t * :math:`P_{invest}(p)` diff --git a/src/oemof/solph/processing.py b/src/oemof/solph/processing.py index 0ff75e70e..4466b0a34 100644 --- a/src/oemof/solph/processing.py +++ b/src/oemof/solph/processing.py @@ -216,7 +216,7 @@ def results(model, remove_last_time_point=False): Parameters ---------- - model : oemof.solph.BaseModel + model : oemof.solph.Model A solved oemof.solph model. remove_last_time_point : bool The last time point of all TIMEPOINT variables is removed to get the diff --git a/tests/test_time_index.py b/tests/test_time_index.py index 08d2b56cb..d45547e05 100644 --- a/tests/test_time_index.py +++ b/tests/test_time_index.py @@ -109,7 +109,7 @@ def test_energysystem_with_numeric_index_non_equidistant(): def test_model_timeincrement_with_valid_timeindex(): datetimeindex = pd.date_range("1/1/2012", periods=5, freq="h") es = solph.EnergySystem(timeindex=datetimeindex, infer_last_interval=True) - m = solph._models.BaseModel(es) + m = solph._models.Model(es) assert es.timeincrement.sum() == 5 assert m.timeincrement.sum() == 5 assert m.timeincrement[2] == 1 @@ -151,13 +151,13 @@ def test_overwrite_timeincrement(): infer_last_interval=True, ) assert es.timeincrement[0] == 1 - m = solph._models.BaseModel(es, timeincrement=[3]) + m = solph._models.Model(es, timeincrement=[3]) assert m.timeincrement[0] == 3 def test_model_timeincrement_list(): - es = solph.EnergySystem() - m = solph._models.BaseModel(es, timeincrement=[0, 1, 2, 3]) + es = solph.EnergySystem(timeincrement=[0.1, 1, 2, 3]) + m = solph._models.Model(es) assert m.timeincrement[3] == 3 From 1b04e703e92fe99cc8b97b7d221310b19a1ebdcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 3 Jul 2024 08:28:48 +0200 Subject: [PATCH 11/54] Warn if model overwrites timeincrement It seems to be a desired (and tested) feature to do so, but a typical user will probably not want to do this. So, a warning makes sense. --- src/oemof/solph/_models.py | 13 +++++++++---- tests/test_time_index.py | 4 +++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/oemof/solph/_models.py b/src/oemof/solph/_models.py index 046fae7f1..b06bc7b39 100644 --- a/src/oemof/solph/_models.py +++ b/src/oemof/solph/_models.py @@ -160,7 +160,14 @@ def __init__(self, energysystem, discount_rate=None, **kwargs): self.name = kwargs.get("name", type(self).__name__) self.es = energysystem - self.timeincrement = kwargs.get("timeincrement", self.es.timeincrement) + + if kwargs.get("timeincrement"): + msg = "Resetting timeincrement from EnergySystem in Model." + warnings.warn(msg, debugging.SuspiciousUsageWarning) + + self.timeincrement = kwargs.get("timeincrement") + else: + self.timeincrement = self.es.timeincrement self.objective_weighting = kwargs.get( "objective_weighting", self.timeincrement @@ -182,7 +189,7 @@ def __init__(self, energysystem, discount_rate=None, **kwargs): self.solver_results = None self.dual = None self.rc = None - + if discount_rate is not None: self.discount_rate = discount_rate elif ( @@ -343,7 +350,6 @@ def _add_parent_block_variables(self): for t in self.TIMESTEPS: self.flow[o, i, t].setlb(0) - def _add_child_blocks(self): """Method to add the defined child blocks for components that have been grouped in the defined constraint groups. This collects all the @@ -453,4 +459,3 @@ def relax_problem(self): relaxer._apply_to(self) return self - diff --git a/tests/test_time_index.py b/tests/test_time_index.py index d45547e05..a4672f381 100644 --- a/tests/test_time_index.py +++ b/tests/test_time_index.py @@ -12,6 +12,7 @@ import pytest from oemof import solph +from oemof.tools import debugging def test_energysystem_with_datetimeindex_infer_last_interval(): @@ -151,7 +152,8 @@ def test_overwrite_timeincrement(): infer_last_interval=True, ) assert es.timeincrement[0] == 1 - m = solph._models.Model(es, timeincrement=[3]) + with pytest.warns(debugging.SuspiciousUsageWarning): + m = solph._models.Model(es, timeincrement=[3]) assert m.timeincrement[0] == 3 From 61a02a5bb4616ce90b6848a320b1fb4c78003da3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 3 Jul 2024 14:32:57 +0200 Subject: [PATCH 12/54] Test (invalid) arguments of OffsetConverter --- .../test_components/test_offset_converter.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/tests/test_components/test_offset_converter.py b/tests/test_components/test_offset_converter.py index 6089f6555..4dc2ba298 100644 --- a/tests/test_components/test_offset_converter.py +++ b/tests/test_components/test_offset_converter.py @@ -158,6 +158,53 @@ def add_OffsetConverter( es.add(oc) +def test_custom_properties(): + bus1 = solph.Bus() + bus2 = solph.Bus() + oc = solph.components.OffsetConverter( + inputs={bus1: solph.Flow(nominal_value=2, nonconvex=solph.NonConvex())}, + outputs={bus2: solph.Flow()}, + conversion_factors={bus2: 2}, + normed_offsets={bus2: -0.5}, + custom_attributes={"foo": "bar"}, + ) + + assert oc.custom_properties["foo"] == "bar" + + +def test_invalid_conversion_factor(): + bus1 = solph.Bus() + bus2 = solph.Bus() + with pytest.raises(ValueError, match="Conversion factors cannot be "): + solph.components.OffsetConverter( + inputs={bus1: solph.Flow(nominal_value=2, nonconvex=solph.NonConvex())}, + outputs={bus2: solph.Flow()}, + conversion_factors={ + bus1: 1, + bus2: 2, + }, + normed_offsets={bus2: -0.5}, + custom_attributes={"foo": "bar"}, + ) + + +def test_invalid_normed_offset(): + bus1 = solph.Bus() + bus2 = solph.Bus() + with pytest.raises(ValueError, match="Normed offsets cannot be "): + solph.components.OffsetConverter( + inputs={bus1: solph.Flow(nominal_value=2, nonconvex=solph.NonConvex())}, + outputs={bus2: solph.Flow()}, + conversion_factors={ + bus2: 2, + }, + normed_offsets={ + bus1: -0.2, + bus2: -0.5, + }, + custom_attributes={"foo": "bar"}, + ) + def test_OffsetConverter_single_input_output_ref_output(): num_in = 1 num_out = 1 From fc12b2a42f40c0f4613c965d80283f563ac97146 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 3 Jul 2024 14:43:23 +0200 Subject: [PATCH 13/54] Adhere to Black --- tests/test_components/test_offset_converter.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tests/test_components/test_offset_converter.py b/tests/test_components/test_offset_converter.py index 4dc2ba298..b97eebd58 100644 --- a/tests/test_components/test_offset_converter.py +++ b/tests/test_components/test_offset_converter.py @@ -162,7 +162,9 @@ def test_custom_properties(): bus1 = solph.Bus() bus2 = solph.Bus() oc = solph.components.OffsetConverter( - inputs={bus1: solph.Flow(nominal_value=2, nonconvex=solph.NonConvex())}, + inputs={ + bus1: solph.Flow(nominal_value=2, nonconvex=solph.NonConvex()) + }, outputs={bus2: solph.Flow()}, conversion_factors={bus2: 2}, normed_offsets={bus2: -0.5}, @@ -177,7 +179,9 @@ def test_invalid_conversion_factor(): bus2 = solph.Bus() with pytest.raises(ValueError, match="Conversion factors cannot be "): solph.components.OffsetConverter( - inputs={bus1: solph.Flow(nominal_value=2, nonconvex=solph.NonConvex())}, + inputs={ + bus1: solph.Flow(nominal_value=2, nonconvex=solph.NonConvex()) + }, outputs={bus2: solph.Flow()}, conversion_factors={ bus1: 1, @@ -193,7 +197,9 @@ def test_invalid_normed_offset(): bus2 = solph.Bus() with pytest.raises(ValueError, match="Normed offsets cannot be "): solph.components.OffsetConverter( - inputs={bus1: solph.Flow(nominal_value=2, nonconvex=solph.NonConvex())}, + inputs={ + bus1: solph.Flow(nominal_value=2, nonconvex=solph.NonConvex()) + }, outputs={bus2: solph.Flow()}, conversion_factors={ bus2: 2, @@ -205,6 +211,7 @@ def test_invalid_normed_offset(): custom_attributes={"foo": "bar"}, ) + def test_OffsetConverter_single_input_output_ref_output(): num_in = 1 num_out = 1 From 6a87fb49e9ea8d3ca8eda28f5fdd67458d3ac1e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 3 Jul 2024 14:44:26 +0200 Subject: [PATCH 14/54] Delete useless lines --- tests/test_components/test_offset_converter.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/test_components/test_offset_converter.py b/tests/test_components/test_offset_converter.py index b97eebd58..76210c601 100644 --- a/tests/test_components/test_offset_converter.py +++ b/tests/test_components/test_offset_converter.py @@ -188,7 +188,6 @@ def test_invalid_conversion_factor(): bus2: 2, }, normed_offsets={bus2: -0.5}, - custom_attributes={"foo": "bar"}, ) @@ -208,7 +207,6 @@ def test_invalid_normed_offset(): bus1: -0.2, bus2: -0.5, }, - custom_attributes={"foo": "bar"}, ) From 9290ab25e61161812370cbc24afe8951c7dee328 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 3 Jul 2024 14:50:44 +0200 Subject: [PATCH 15/54] Test coefficient check in OffsetTransformer --- tests/test_components/test_offset_converter.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/test_components/test_offset_converter.py b/tests/test_components/test_offset_converter.py index 76210c601..f329c882c 100644 --- a/tests/test_components/test_offset_converter.py +++ b/tests/test_components/test_offset_converter.py @@ -210,6 +210,19 @@ def test_invalid_normed_offset(): ) +def test_wrong_number_of_coefficients(): + bus1 = solph.Bus() + bus2 = solph.Bus() + with pytest.raises(ValueError, match="Two coefficients"): + solph.components.OffsetTransformer( + inputs={ + bus1: solph.Flow(nominal_value=2, nonconvex=solph.NonConvex()) + }, + outputs={bus2: solph.Flow()}, + coefficients=(1, 2, 3), + ) + + def test_OffsetConverter_single_input_output_ref_output(): num_in = 1 num_out = 1 From c483a841ffcde9dfa495ee97b617799da8c8c278 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 1 Aug 2024 13:11:04 +0200 Subject: [PATCH 16/54] Fix import order --- tests/test_helpers.py | 3 ++- tests/test_time_index.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/test_helpers.py b/tests/test_helpers.py index f878896b1..c33277c22 100644 --- a/tests/test_helpers.py +++ b/tests/test_helpers.py @@ -9,10 +9,11 @@ """ import os + import pytest -from oemof.solph import helpers from oemof.solph import create_time_index +from oemof.solph import helpers def test_creation_of_extended_path(): diff --git a/tests/test_time_index.py b/tests/test_time_index.py index a4672f381..fe6a2a675 100644 --- a/tests/test_time_index.py +++ b/tests/test_time_index.py @@ -10,9 +10,9 @@ import pandas as pd import pytest +from oemof.tools import debugging from oemof import solph -from oemof.tools import debugging def test_energysystem_with_datetimeindex_infer_last_interval(): From 91aca5452d8fecd87e8f8024439e78d8069c929f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 1 Aug 2024 14:16:12 +0200 Subject: [PATCH 17/54] Refactor model solving tests The function "test_optimal_solution" didn't actually test anything, so I deleted it. The function "test_infeasible_model" now only tests for the infeasibility warning. --- tests/test_models.py | 50 ++++++++++++-------------------------------- 1 file changed, 13 insertions(+), 37 deletions(-) diff --git a/tests/test_models.py b/tests/test_models.py index 3f3e05d52..1a89a460b 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -17,55 +17,31 @@ from oemof import solph -def test_optimal_solution(): +def test_infeasible_model(): + # FutureWarning is i.e. emitted by network Entity registry + warnings.simplefilter(action="ignore", category=FutureWarning) + es = solph.EnergySystem(timeincrement=[1]) bel = solph.buses.Bus(label="bus") es.add(bel) es.add( solph.components.Sink( - label="sink", - inputs={bel: solph.flows.Flow(nominal_value=5, fix=[1])}, + inputs={bel: solph.flows.Flow(nominal_value=5, fix=[1])} ) ) es.add( solph.components.Source( - label="source", - outputs={bel: solph.flows.Flow(variable_costs=5)}, + outputs={ + bel: solph.flows.Flow( + nominal_value=4, variable_costs=5 + ) + } ) ) m = solph.Model(es) - m.solve("cbc") - m.results() - solph.processing.meta_results(m) - - -def test_infeasible_model(): - # FutureWarning is i.e. emitted by network Entity registry - warnings.simplefilter(action="ignore", category=FutureWarning) - - with pytest.raises(ValueError, match=""): - with warnings.catch_warnings(record=True) as w: - es = solph.EnergySystem(timeincrement=[1]) - bel = solph.buses.Bus(label="bus") - es.add(bel) - es.add( - solph.components.Sink( - inputs={bel: solph.flows.Flow(nominal_value=5, fix=[1])} - ) - ) - es.add( - solph.components.Source( - outputs={ - bel: solph.flows.Flow( - nominal_value=4, variable_costs=5 - ) - } - ) - ) - m = solph.Model(es) - m.solve(solver="cbc") - assert "Optimization ended with status" in str(w[0].message) - solph.processing.meta_results(m) + with warnings.catch_warnings(record=True) as w: + m.solve(solver="cbc") + assert "Optimization ended with status" in str(w[0].message) @pytest.mark.filterwarnings( From c4a770dcd46df23119f28df85e57dc8375ec2191 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 1 Aug 2024 14:28:32 +0200 Subject: [PATCH 18/54] Delete unneccesary warnings filter --- tests/test_models.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/test_models.py b/tests/test_models.py index 1a89a460b..44e805d9d 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -18,9 +18,6 @@ def test_infeasible_model(): - # FutureWarning is i.e. emitted by network Entity registry - warnings.simplefilter(action="ignore", category=FutureWarning) - es = solph.EnergySystem(timeincrement=[1]) bel = solph.buses.Bus(label="bus") es.add(bel) From 04efa3f52d2892f6b3e9bb5362908e255a3f0ecd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Fri, 2 Aug 2024 08:17:25 +0200 Subject: [PATCH 19/54] Adhere to Black --- tests/test_models.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tests/test_models.py b/tests/test_models.py index 44e805d9d..e5c51f9bd 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -28,11 +28,7 @@ def test_infeasible_model(): ) es.add( solph.components.Source( - outputs={ - bel: solph.flows.Flow( - nominal_value=4, variable_costs=5 - ) - } + outputs={bel: solph.flows.Flow(nominal_value=4, variable_costs=5)} ) ) m = solph.Model(es) From 0b319e96584378872f9050ea7c16f29797ce5ec0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Fri, 2 Aug 2024 08:41:48 +0200 Subject: [PATCH 20/54] Remove remaints of cellular approach draft Argument "energysystem" to Model should not be a list anymore. --- src/oemof/solph/_models.py | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/oemof/solph/_models.py b/src/oemof/solph/_models.py index 6d647b300..6b5ab23d3 100644 --- a/src/oemof/solph/_models.py +++ b/src/oemof/solph/_models.py @@ -282,7 +282,7 @@ class Model(BaseModel): Parameters ---------- - energysystem : EnergySystem object or (experimental) list + energysystem : EnergySystem object Object that holds the nodes of an oemof energy system graph. constraint_groups : list Solph looks for these groups in the given energy system and uses them @@ -345,15 +345,7 @@ class Model(BaseModel): def __init__(self, energysystem, discount_rate=None, **kwargs): if discount_rate is not None: self.discount_rate = discount_rate - elif ( - not isinstance(energysystem, list) - and energysystem.periods is not None - ): - self._set_discount_rate_with_warning() - elif ( - isinstance(energysystem, list) - and energysystem[0].periods is not None - ): + elif energysystem.periods is not None: self._set_discount_rate_with_warning() else: pass From 078d99ad1f9314e352523e9de37d6b29480654a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Fri, 2 Aug 2024 13:41:57 +0200 Subject: [PATCH 21/54] Add test for storage_level_constraint --- tests/test_constraints/test_storage_level.py | 107 +++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 tests/test_constraints/test_storage_level.py diff --git a/tests/test_constraints/test_storage_level.py b/tests/test_constraints/test_storage_level.py new file mode 100644 index 000000000..0485fcffd --- /dev/null +++ b/tests/test_constraints/test_storage_level.py @@ -0,0 +1,107 @@ +import numpy as np +from oemof import solph + + +def test_storage_level_constraint(): + n_time_steps = 10 + + es = solph.EnergySystem( + timeindex=solph.create_time_index("2022-01-01", number=n_time_steps), + infer_last_interval=False, + ) + + multiplexer = solph.Bus( + label="multiplexer", + ) + + storage_level = np.linspace(1, 0, num=n_time_steps + 1) + + storage = solph.components.GenericStorage( + label="storage", + nominal_storage_capacity=3, + initial_storage_level=1, + balanced=True, + storage_costs=0.1, + min_storage_level=storage_level, + inputs={multiplexer: solph.Flow()}, + outputs={multiplexer: solph.Flow()}, + ) + + es.add(multiplexer, storage) + + in_100 = solph.components.Source( + label="in_100", + outputs={multiplexer: solph.Flow(nominal_value=5, variable_costs=0.1)}, + ) + in_050 = solph.components.Source( + label="in_050", + outputs={multiplexer: solph.Flow(nominal_value=5, variable_costs=0.1)}, + ) + in_000 = solph.components.Source( + label="in_000", + outputs={multiplexer: solph.Flow(nominal_value=5, variable_costs=0.1)}, + ) + + out_000 = solph.components.Sink( + label="out_000", + inputs={multiplexer: solph.Flow(nominal_value=5)}, + ) + out_050 = solph.components.Sink( + label="out_050", + inputs={multiplexer: solph.Flow(nominal_value=5)}, + ) + out_100 = solph.components.Sink( + label="out_100", + inputs={multiplexer: solph.Flow(nominal_value=5)}, + ) + es.add(in_000, in_050, in_100, out_000, out_050, out_100) + + model = solph.Model(es) + + solph.constraints.storage_level_constraint( + model=model, + name="multiplexer", + storage_component=storage, + multiplexer_bus=multiplexer, + input_levels={ + in_100: 1.0, + in_050: 0.5, + }, # in_000 is always active (implicit), no variable + output_levels={ + out_100: 1.0, + out_050: 0.5, + out_000: 0.0, # out_000 is always active (explicit) + }, + ) + model.solve() + + my_results = solph.processing.results(model) + + assert list( + my_results[(in_100, None)]["sequences"]["multiplexer_active_input"][ + :-1 + ] + ) == n_time_steps * [0] + assert list( + my_results[(out_100, None)]["sequences"]["multiplexer_active_output"][ + :-1 + ] + ) == (n_time_steps - 1) * [0] + [1] + + assert list( + my_results[(in_050, None)]["sequences"]["multiplexer_active_input"][ + :-1 + ] + ) == n_time_steps // 2 * [1] + n_time_steps // 2 * [0] + assert list( + my_results[(out_050, None)]["sequences"]["multiplexer_active_output"][ + :-1 + ] + ) == n_time_steps // 2 * [1] + (n_time_steps // 2 - 1) * [0] + [1] + + assert list( + my_results[(out_000, None)]["sequences"]["multiplexer_active_output"][ + :-1 + ] + ) == n_time_steps * [1] + assert (in_000, None) not in my_results.keys() From d6440a66ff7ce68af760a8a4e39845b7cef38d7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 8 Aug 2024 12:16:37 +0200 Subject: [PATCH 22/54] Properly format imports in test_storage_level_constraint --- tests/test_constraints/test_storage_level.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_constraints/test_storage_level.py b/tests/test_constraints/test_storage_level.py index 0485fcffd..325b2e8ff 100644 --- a/tests/test_constraints/test_storage_level.py +++ b/tests/test_constraints/test_storage_level.py @@ -1,4 +1,5 @@ import numpy as np + from oemof import solph From 9c4d30c9a4a4083a97b3afa0936a7a2e857b00f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 8 Aug 2024 12:18:45 +0200 Subject: [PATCH 23/54] Test integral_imit_constraint The multi-period version is not tested, as both versions will probably be unified. (And multi-period is experimental anyway.) --- src/oemof/solph/constraints/integral_limit.py | 10 +- .../test_constraints_module.py | 136 ++++++++++++------ 2 files changed, 99 insertions(+), 47 deletions(-) diff --git a/src/oemof/solph/constraints/integral_limit.py b/src/oemof/solph/constraints/integral_limit.py index 3d2bc3ffa..601bb90ba 100644 --- a/src/oemof/solph/constraints/integral_limit.py +++ b/src/oemof/solph/constraints/integral_limit.py @@ -49,7 +49,9 @@ def emission_limit_per_period(om, flows=None, limit=None): ) -def generic_integral_limit(om, keyword, flows=None, limit=None): +def generic_integral_limit( + om, keyword, flows=None, limit=None, limit_name=None +): r"""Set a global limit for flows weighted by attribute named keyword. The attribute named keyword has to be added to every flow you want to take into account. @@ -69,6 +71,9 @@ def generic_integral_limit(om, keyword, flows=None, limit=None): used. keyword : string attribute to consider + limit_name : string + Unique name for the constraint, + Defaults to "integral_limit_{keyword}". limit : numeric Absolute limit of keyword attribute for the energy system. @@ -122,7 +127,8 @@ def generic_integral_limit(om, keyword, flows=None, limit=None): ... model, "my_factor", flow_with_keyword, limit=777) """ flows = _check_and_set_flows(om, flows, keyword) - limit_name = "integral_limit_" + keyword + if limit_name is None: + limit_name = "integral_limit_" + keyword setattr( om, diff --git a/tests/test_constraints/test_constraints_module.py b/tests/test_constraints/test_constraints_module.py index fbf4fc15b..14b8aec59 100644 --- a/tests/test_constraints/test_constraints_module.py +++ b/tests/test_constraints/test_constraints_module.py @@ -1,68 +1,114 @@ +import numpy as np import pandas as pd +import pytest from oemof import solph -def test_special(): - date_time_index = pd.date_range("1/1/2012", periods=5, freq="h") +def test_integral_limit(): + periods = 5 + integral_limit1 = 250 + low_emission_flow_limit = 500 + integral_weight1 = 0.8 + integral_weight3 = 1.0 + emission_factor_low = 0.5 + emission_factor_high = 1 + high_emission_flow_limit = 200 + emission_limit = ( + emission_factor_low * low_emission_flow_limit + + emission_factor_high * high_emission_flow_limit + ) + + date_time_index = pd.date_range("1/1/2012", periods=periods, freq="h") energysystem = solph.EnergySystem( timeindex=date_time_index, infer_last_interval=True, ) - bel = solph.buses.Bus(label="electricityBus") + bel = solph.buses.Bus(label="electricityBus", balanced=False) flow1 = solph.flows.Flow( nominal_value=100, - custom_attributes={"my_factor": 0.8}, + custom_attributes={ + "my_factor": integral_weight1, + "emission_factor": emission_factor_low, + }, + variable_costs=-1, + ) + flow2 = solph.flows.Flow( + nominal_value=50, + variable_costs=-0.5, + ) + flow3 = solph.flows.Flow( + nominal_value=100, + custom_attributes={ + "my_factor": integral_weight3, + "emission_factor": emission_factor_low, + }, + variable_costs=-0.5, ) - flow2 = solph.flows.Flow(nominal_value=50) + flow4 = solph.flows.Flow( + nominal_value=500, + custom_attributes={ + "emission_factor": emission_factor_high, + }, + variable_costs=-0.1, + ) + src1 = solph.components.Source(label="source1", outputs={bel: flow1}) src2 = solph.components.Source(label="source2", outputs={bel: flow2}) - energysystem.add(bel, src1, src2) + src3 = solph.components.Source(label="source3", outputs={bel: flow3}) + src4 = solph.components.Source(label="source4", outputs={bel: flow4}) + energysystem.add(bel, src1, src2, src3, src4) model = solph.Model(energysystem) - flow_with_keyword = { + + flows_with_keyword = { (src1, bel): flow1, } + solph.constraints.generic_integral_limit( - model, "my_factor", flow_with_keyword, limit=777 + model, "my_factor", flows_with_keyword, limit=integral_limit1 ) - - -def test_something_else(): - date_time_index = pd.date_range("1/1/2012", periods=5, freq="h") - energysystem = solph.EnergySystem( - timeindex=date_time_index, infer_last_interval=True + solph.constraints.emission_limit( + model, + limit=emission_limit, ) - bel1 = solph.buses.Bus(label="electricity1") - bel2 = solph.buses.Bus(label="electricity2") - energysystem.add(bel1, bel2) - energysystem.add( - solph.components.Converter( - label="powerline_1_2", - inputs={bel1: solph.flows.Flow()}, - outputs={ - bel2: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=20) - ) - }, - ) + + solph.constraints.generic_integral_limit( + model, + "my_factor", + limit_name="limit_my_factor", + limit=low_emission_flow_limit, ) - energysystem.add( - solph.components.Converter( - label="powerline_2_1", - inputs={bel2: solph.flows.Flow()}, - outputs={ - bel1: solph.flows.Flow( - nominal_value=solph.Investment(ep_costs=20) - ) - }, - ) + + model.solve(solve_kwargs={"tee": True}) + + results = solph.processing.results(model) + + # total limeted to integral_limit1 + assert integral_weight1 * sum( + results[(src1, bel)]["sequences"]["flow"][:-1] + ) == pytest.approx(integral_limit1) + + # unconstrained, full load all the time + assert ( + np.array(results[(src2, bel)]["sequences"]["flow"][:-1]) + == np.full(periods, 50) + ).all() + + # have my_factor, limited to low_emission_flow_limit + assert integral_weight1 * sum( + results[(src1, bel)]["sequences"]["flow"][:-1] + ) + integral_weight3 * sum( + results[(src3, bel)]["sequences"]["flow"][:-1] + ) == pytest.approx( + low_emission_flow_limit ) - om = solph.Model(energysystem) - line12 = energysystem.groups["powerline_1_2"] - line21 = energysystem.groups["powerline_2_1"] - solph.constraints.equate_variables( - om, - om.InvestmentFlowBlock.invest[line12, bel2, 0], - om.InvestmentFlowBlock.invest[line21, bel1, 0], - name="my_name", + + assert emission_factor_low * sum( + results[(src1, bel)]["sequences"]["flow"][:-1] + ) + emission_factor_low * sum( + results[(src3, bel)]["sequences"]["flow"][:-1] + ) + emission_factor_high * sum( + results[(src4, bel)]["sequences"]["flow"][:-1] + ) == pytest.approx( + emission_limit ) From 848289a494657d67e14f8cf0f27c7e899cec8eb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 8 Aug 2024 14:10:10 +0200 Subject: [PATCH 24/54] Move flow class test to subdirectory --- tests/{flow_tests.py => test_flows/test_flow_class.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/{flow_tests.py => test_flows/test_flow_class.py} (100%) diff --git a/tests/flow_tests.py b/tests/test_flows/test_flow_class.py similarity index 100% rename from tests/flow_tests.py rename to tests/test_flows/test_flow_class.py From ba7cf70ac6417395c038510b840b47ba8fdc545e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 8 Aug 2024 14:38:08 +0200 Subject: [PATCH 25/54] Turn off unprented verbose output --- tests/test_constraints/test_constraints_module.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_constraints/test_constraints_module.py b/tests/test_constraints/test_constraints_module.py index 14b8aec59..14aee025a 100644 --- a/tests/test_constraints/test_constraints_module.py +++ b/tests/test_constraints/test_constraints_module.py @@ -79,7 +79,7 @@ def test_integral_limit(): limit=low_emission_flow_limit, ) - model.solve(solve_kwargs={"tee": True}) + model.solve() results = solph.processing.results(model) From 99baf360d438e9eea114be30dee8aa368d7a1aa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 8 Aug 2024 14:38:27 +0200 Subject: [PATCH 26/54] Add test for inital status --- tests/test_flows/test_non_convex_flow.py | 59 ++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 tests/test_flows/test_non_convex_flow.py diff --git a/tests/test_flows/test_non_convex_flow.py b/tests/test_flows/test_non_convex_flow.py new file mode 100644 index 000000000..fa49a1fcc --- /dev/null +++ b/tests/test_flows/test_non_convex_flow.py @@ -0,0 +1,59 @@ +import pandas as pd + +from oemof import solph + + +def test_initial_status_off(): + date_time_index = pd.date_range("1/1/2012", periods=10, freq="h") + energysystem = solph.EnergySystem( + timeindex=date_time_index, + infer_last_interval=True, + ) + bus = solph.buses.Bus(label="electricityBus", balanced=False) + energysystem.add(bus) + + # negative costs but turned off initially + flow = solph.flows.Flow( + nominal_value=10, + nonconvex=solph.NonConvex(initial_status=0, minimum_downtime=5), + variable_costs=-1, + ) + bus.inputs[bus] = flow + + model = solph.Model(energysystem) + + model.solve() + + results = solph.processing.results(model) + + assert ( + results[(bus, bus)]["sequences"]["flow"][:-1] == 5 * [0] + 5 * [10] + ).all() + + +def test_initial_status_on(): + date_time_index = pd.date_range("1/1/2012", periods=10, freq="h") + energysystem = solph.EnergySystem( + timeindex=date_time_index, + infer_last_interval=True, + ) + bus = solph.buses.Bus(label="electricityBus", balanced=False) + energysystem.add(bus) + + # positive costs but turned on initially + flow = solph.flows.Flow( + nominal_value=10, + nonconvex=solph.NonConvex(initial_status=1, minimum_uptime=3), + variable_costs=1, + ) + bus.inputs[bus] = flow + + model = solph.Model(energysystem) + + model.solve() + + results = solph.processing.results(model) + + assert ( + results[(bus, bus)]["sequences"]["flow"][:-1] == 3 * [10] + 7 * [0] + ).all() From 2d808000f09be07a6d64c44efbaec095e36c26ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 8 Aug 2024 15:59:09 +0200 Subject: [PATCH 27/54] Deaktivate failing test It's known not to work, so failings hides other issues. --- tests/test_flows/test_non_convex_flow.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_flows/test_non_convex_flow.py b/tests/test_flows/test_non_convex_flow.py index fa49a1fcc..35d5d145d 100644 --- a/tests/test_flows/test_non_convex_flow.py +++ b/tests/test_flows/test_non_convex_flow.py @@ -1,4 +1,5 @@ import pandas as pd +import pytest from oemof import solph @@ -31,6 +32,7 @@ def test_initial_status_off(): ).all() +@pytest.mark.skip(reason="Reported issue (see #1099).") def test_initial_status_on(): date_time_index = pd.date_range("1/1/2012", periods=10, freq="h") energysystem = solph.EnergySystem( From f8af61ead6645a32ce5d868c7adfcf396ddbddf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 8 Aug 2024 16:24:46 +0200 Subject: [PATCH 28/54] Fix test_initial_status_on --- tests/test_flows/test_non_convex_flow.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_flows/test_non_convex_flow.py b/tests/test_flows/test_non_convex_flow.py index 35d5d145d..ffedc042c 100644 --- a/tests/test_flows/test_non_convex_flow.py +++ b/tests/test_flows/test_non_convex_flow.py @@ -32,7 +32,6 @@ def test_initial_status_off(): ).all() -@pytest.mark.skip(reason="Reported issue (see #1099).") def test_initial_status_on(): date_time_index = pd.date_range("1/1/2012", periods=10, freq="h") energysystem = solph.EnergySystem( @@ -45,6 +44,7 @@ def test_initial_status_on(): # positive costs but turned on initially flow = solph.flows.Flow( nominal_value=10, + min=0.5, nonconvex=solph.NonConvex(initial_status=1, minimum_uptime=3), variable_costs=1, ) @@ -57,5 +57,5 @@ def test_initial_status_on(): results = solph.processing.results(model) assert ( - results[(bus, bus)]["sequences"]["flow"][:-1] == 3 * [10] + 7 * [0] + results[(bus, bus)]["sequences"]["flow"][:-1] == 3 * [5] + 7 * [0] ).all() From b68014abea3da663f0dc0042c3569c7724eecd62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Tue, 13 Aug 2024 12:00:32 +0200 Subject: [PATCH 29/54] Remove unused import --- tests/test_flows/test_non_convex_flow.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_flows/test_non_convex_flow.py b/tests/test_flows/test_non_convex_flow.py index ffedc042c..db1f7359b 100644 --- a/tests/test_flows/test_non_convex_flow.py +++ b/tests/test_flows/test_non_convex_flow.py @@ -1,5 +1,4 @@ import pandas as pd -import pytest from oemof import solph From c51e7257dea5ee67202446c668b7f27320fc333e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Tue, 13 Aug 2024 14:08:16 +0200 Subject: [PATCH 30/54] Add tests for startup and shutdown costs --- tests/test_flows/test_non_convex_flow.py | 94 +++++++++++++++++------- 1 file changed, 67 insertions(+), 27 deletions(-) diff --git a/tests/test_flows/test_non_convex_flow.py b/tests/test_flows/test_non_convex_flow.py index db1f7359b..11322076b 100644 --- a/tests/test_flows/test_non_convex_flow.py +++ b/tests/test_flows/test_non_convex_flow.py @@ -1,45 +1,48 @@ +# -*- coding: utf-8 -*- + +"""Tests for Flows with NonConvex attribute + +SPDX-FileCopyrightText: Deutsches Zentrum für Luft- und Raumfahrt e.V. +SPDX-FileCopyrightText: Patrik Schönfeldt + +SPDX-License-Identifier: MIT +""" + import pandas as pd from oemof import solph -def test_initial_status_off(): +def _run_model(flow): date_time_index = pd.date_range("1/1/2012", periods=10, freq="h") energysystem = solph.EnergySystem( timeindex=date_time_index, infer_last_interval=True, ) - bus = solph.buses.Bus(label="electricityBus", balanced=False) + bus = solph.buses.Bus(label="bus", balanced=False) energysystem.add(bus) + bus.inputs[bus] = flow + + model = solph.Model(energysystem) + model.solve() + + return solph.processing.results(model)[(bus, bus)]["sequences"] + + +def test_initial_status_off(): # negative costs but turned off initially flow = solph.flows.Flow( nominal_value=10, nonconvex=solph.NonConvex(initial_status=0, minimum_downtime=5), variable_costs=-1, ) - bus.inputs[bus] = flow - - model = solph.Model(energysystem) - - model.solve() + flow_result = _run_model(flow) - results = solph.processing.results(model) - - assert ( - results[(bus, bus)]["sequences"]["flow"][:-1] == 5 * [0] + 5 * [10] - ).all() + assert (flow_result["flow"][:-1] == 5 * [0] + 5 * [10]).all() def test_initial_status_on(): - date_time_index = pd.date_range("1/1/2012", periods=10, freq="h") - energysystem = solph.EnergySystem( - timeindex=date_time_index, - infer_last_interval=True, - ) - bus = solph.buses.Bus(label="electricityBus", balanced=False) - energysystem.add(bus) - # positive costs but turned on initially flow = solph.flows.Flow( nominal_value=10, @@ -47,14 +50,51 @@ def test_initial_status_on(): nonconvex=solph.NonConvex(initial_status=1, minimum_uptime=3), variable_costs=1, ) - bus.inputs[bus] = flow + flow_result = _run_model(flow) - model = solph.Model(energysystem) + assert (flow_result["flow"][:-1] == 3 * [5] + 7 * [0]).all() + + +def test_startup_costs_start_off(): + price_pattern = [1, 1, 1, -4, 1, 1, 1, -4, 1, 1] + + # startup costs higher then effect of shutting down + flow = solph.flows.Flow( + nominal_value=10, + min=0.1, + nonconvex=solph.NonConvex(startup_costs=5, initial_status=0), + variable_costs=price_pattern, + ) + flow_result = _run_model(flow) + + assert (flow_result["flow"][:-1] == [0, 0, 0, 10, 1, 1, 1, 10, 0, 0]).all() - model.solve() - results = solph.processing.results(model) +def test_startup_costs_start_on(): + price_pattern = [1, 1, 1, -4, 1, 1, 1, -4, 1, 1] + + # startup costs higher then effect of shutting down + flow = solph.flows.Flow( + nominal_value=10, + min=0.1, + nonconvex=solph.NonConvex(startup_costs=5, initial_status=1), + variable_costs=price_pattern, + ) + flow_result = _run_model(flow) + + assert (flow_result["flow"][:-1] == [1, 1, 1, 10, 1, 1, 1, 10, 0, 0]).all() + + +def test_shutdown_costs_start_on(): + price_pattern = [1, 1, 1, -4, 1, 1, 1, -4, 1, 1] + + # shutdown costs higher then effect of shutting down + flow = solph.flows.Flow( + nominal_value=10, + min=0.1, + nonconvex=solph.NonConvex(shutdown_costs=5, initial_status=1), + variable_costs=price_pattern, + ) + flow_result = _run_model(flow) - assert ( - results[(bus, bus)]["sequences"]["flow"][:-1] == 3 * [5] + 7 * [0] - ).all() + assert (flow_result["flow"][:-1] == [1, 1, 1, 10, 1, 1, 1, 10, 1, 1]).all() From 40ef8ea310bbb9f18d7309245bff381256109a30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Tue, 13 Aug 2024 14:20:07 +0200 Subject: [PATCH 31/54] Add test for activity_costs --- tests/test_flows/test_non_convex_flow.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/test_flows/test_non_convex_flow.py b/tests/test_flows/test_non_convex_flow.py index 11322076b..c60d58cae 100644 --- a/tests/test_flows/test_non_convex_flow.py +++ b/tests/test_flows/test_non_convex_flow.py @@ -55,6 +55,20 @@ def test_initial_status_on(): assert (flow_result["flow"][:-1] == 3 * [5] + 7 * [0]).all() +def test_activity_costs_start_on(): + # activity costs higher then revenue for first time steps + flow = solph.flows.Flow( + nominal_value=10, + min=0.1, + max=[i * 0.1 for i in range(10)], + nonconvex=solph.NonConvex(activity_costs=1), + variable_costs=9 * [-0.45] + [10], + ) + flow_result = _run_model(flow)["flow"][:-1] + + assert (flow_result == [0, 0, 0, 3, 4, 5, 6, 7, 8, 0]).all() + + def test_startup_costs_start_off(): price_pattern = [1, 1, 1, -4, 1, 1, 1, -4, 1, 1] From b3cef1247781a2e1c86dd75a6f0621c653fb0ec3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Tue, 13 Aug 2024 14:23:23 +0200 Subject: [PATCH 32/54] Refine test for activity_costs --- tests/test_flows/test_non_convex_flow.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_flows/test_non_convex_flow.py b/tests/test_flows/test_non_convex_flow.py index c60d58cae..95a189139 100644 --- a/tests/test_flows/test_non_convex_flow.py +++ b/tests/test_flows/test_non_convex_flow.py @@ -55,14 +55,14 @@ def test_initial_status_on(): assert (flow_result["flow"][:-1] == 3 * [5] + 7 * [0]).all() -def test_activity_costs_start_on(): +def test_activity_costs(): # activity costs higher then revenue for first time steps flow = solph.flows.Flow( nominal_value=10, min=0.1, max=[i * 0.1 for i in range(10)], - nonconvex=solph.NonConvex(activity_costs=1), - variable_costs=9 * [-0.45] + [10], + nonconvex=solph.NonConvex(activity_costs=9 * [1] + [10]), + variable_costs=-0.45, ) flow_result = _run_model(flow)["flow"][:-1] From 6b937ace4ee4517abeceb3970e9df8a67370b159 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Tue, 13 Aug 2024 14:28:46 +0200 Subject: [PATCH 33/54] Add test for inactivity_costs --- tests/test_flows/test_non_convex_flow.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/test_flows/test_non_convex_flow.py b/tests/test_flows/test_non_convex_flow.py index 95a189139..df630f1bf 100644 --- a/tests/test_flows/test_non_convex_flow.py +++ b/tests/test_flows/test_non_convex_flow.py @@ -69,6 +69,19 @@ def test_activity_costs(): assert (flow_result == [0, 0, 0, 3, 4, 5, 6, 7, 8, 0]).all() +def test_inactivity_costs(): + # inactivity costs lower then running costs for middle time steps + flow = solph.flows.Flow( + nominal_value=10, + min=[i * 0.1 for i in range(10)], + nonconvex=solph.NonConvex(inactivity_costs=9 * [1] + [10]), + variable_costs=0.45, + ) + flow_result = _run_model(flow)["flow"][:-1] + + assert (flow_result == [0, 1, 2, 0, 0, 0, 0, 0, 0, 9]).all() + + def test_startup_costs_start_off(): price_pattern = [1, 1, 1, -4, 1, 1, 1, -4, 1, 1] From 896f73bda4469f8b1f4c8042c1f7faaf02692e1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Tue, 13 Aug 2024 16:26:11 +0200 Subject: [PATCH 34/54] Add tests for maximum startups and shutdowns --- tests/test_flows/test_non_convex_flow.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/test_flows/test_non_convex_flow.py b/tests/test_flows/test_non_convex_flow.py index df630f1bf..55ce8bc64 100644 --- a/tests/test_flows/test_non_convex_flow.py +++ b/tests/test_flows/test_non_convex_flow.py @@ -42,6 +42,30 @@ def test_initial_status_off(): assert (flow_result["flow"][:-1] == 5 * [0] + 5 * [10]).all() +def test_maximum_shutdowns(): + flow = solph.flows.Flow( + nominal_value=10, + min=0.5, + nonconvex=solph.NonConvex(maximum_shutdowns=1), + variable_costs=[1, -2, 1, 1, 1, -5, 1, 1, 1, -2], + ) + flow_result = _run_model(flow) + + assert list(flow_result["status"][:-1]) == [0, 1, 1, 1, 1, 1, 0, 0, 0, 1] + + +def test_maximum_startups(): + flow = solph.flows.Flow( + nominal_value=10, + min=0.5, + nonconvex=solph.NonConvex(maximum_startups=1), + variable_costs=[1, -4, 1, 1, 1, -5, 1, 1, 5, -3], + ) + flow_result = _run_model(flow) + + assert list(flow_result["status"][:-1]) == [0, 1, 1, 1, 1, 1, 0, 0, 0, 0] + + def test_initial_status_on(): # positive costs but turned on initially flow = solph.flows.Flow( From be0c7ad60aef06ba038ece45245699bdea6efa65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 14 Aug 2024 09:41:38 +0200 Subject: [PATCH 35/54] Remove unnecessary arrtibute checks Function checking these will only be called if True, so we can skip the check. --- src/oemof/solph/components/_generic_storage.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/oemof/solph/components/_generic_storage.py b/src/oemof/solph/components/_generic_storage.py index 1060e0914..26fb3c057 100644 --- a/src/oemof/solph/components/_generic_storage.py +++ b/src/oemof/solph/components/_generic_storage.py @@ -596,9 +596,6 @@ def _objective_expression(self): """ m = self.parent_block() - if not hasattr(self, "STORAGES"): - return 0 - fixed_costs = 0 if m.es.periods is not None: @@ -1750,9 +1747,6 @@ def _objective_expression(self): """Objective expression with fixed and investment costs.""" m = self.parent_block() - if not hasattr(self, "INVESTSTORAGES"): - return 0 - investment_costs = 0 period_investment_costs = {p: 0 for p in m.PERIODS} fixed_costs = 0 From 516277e80ed20464d1b3917344ef1bc8fcc16b23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 14 Aug 2024 10:10:02 +0200 Subject: [PATCH 36/54] Add storage power investment tests --- tests/test_components/test_storage.py | 93 +++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/tests/test_components/test_storage.py b/tests/test_components/test_storage.py index 21c5e1f26..b52513c50 100644 --- a/tests/test_components/test_storage.py +++ b/tests/test_components/test_storage.py @@ -48,3 +48,96 @@ def test_relative_losses(): == pytest.approx(cases[1]["result"][2 * i]) == pytest.approx(cases[2]["result"][4 * i]) ) + + +def test_invest_power_uncoupled(): + es = solph.EnergySystem( + timeindex=solph.create_time_index( + year=2023, + number=10, + ), + infer_last_interval=False, + ) + + bus = solph.Bus("slack_bus", balanced=False) + es.add(bus) + + storage = solph.components.GenericStorage( + "storage", + inputs={ + bus: solph.Flow( + variable_costs=-1, nominal_value=solph.Investment(ep_costs=0.1) + ) + }, + outputs={ + bus: solph.Flow( + variable_costs=1, nominal_value=solph.Investment(ep_costs=0.1) + ) + }, + nominal_storage_capacity=10, + initial_storage_level=0, + balanced=False, + ) + es.add(storage) + + model = solph.Model(es) + model.solve("cbc") + + result = solph.processing.results(model) + storage_content = result[(storage, None)]["sequences"]["storage_content"] + assert (storage_content == np.arange(0, 10.5, 1)).all() + + invest_inflow = result[(bus, storage)]["scalars"]["invest"] + assert invest_inflow == pytest.approx(1) + + invest_outflow = result[(storage, bus)]["scalars"]["invest"] + assert invest_outflow == pytest.approx(0) + + print(result) + + +def test_invest_power_coupled(): + es = solph.EnergySystem( + timeindex=solph.create_time_index( + year=2023, + number=10, + ), + infer_last_interval=False, + ) + + bus = solph.Bus("slack_bus", balanced=False) + es.add(bus) + + storage = solph.components.GenericStorage( + "storage", + inputs={ + bus: solph.Flow( + variable_costs=-1, nominal_value=solph.Investment(ep_costs=0.1) + ) + }, + outputs={ + bus: solph.Flow( + variable_costs=1, nominal_value=solph.Investment(ep_costs=0.1) + ) + }, + nominal_storage_capacity=10, + invest_relation_input_output=0.5, + initial_storage_level=0, + balanced=False, + ) + es.add(storage) + + model = solph.Model(es) + model.solve("cbc") + + result = solph.processing.results(model) + storage_content = result[(storage, None)]["sequences"]["storage_content"] + assert (storage_content == np.arange(0, 10.5, 1)).all() + + invest_inflow = result[(bus, storage)]["scalars"]["invest"] + assert invest_inflow == pytest.approx(1) + + invest_outflow = result[(storage, bus)]["scalars"]["invest"] + assert invest_outflow == pytest.approx(2) + + print(result) From 4b84d706f35451adc05108e8cfc92b08f4e097b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 14 Aug 2024 10:32:28 +0200 Subject: [PATCH 37/54] Add test for storage capacity invest --- tests/test_components/test_storage.py | 75 +++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/tests/test_components/test_storage.py b/tests/test_components/test_storage.py index b52513c50..d9ff3a7db 100644 --- a/tests/test_components/test_storage.py +++ b/tests/test_components/test_storage.py @@ -141,3 +141,78 @@ def test_invest_power_coupled(): assert invest_outflow == pytest.approx(2) print(result) + + +def test_storage_charging(): + es = solph.EnergySystem( + timeindex=solph.create_time_index( + year=2023, + number=10, + ), + infer_last_interval=False, + ) + + bus = solph.Bus("slack_bus", balanced=False) + es.add(bus) + + storage = solph.components.GenericStorage( + "storage", + inputs={bus: solph.Flow(nominal_value=2, variable_costs=-2)}, + outputs={bus: solph.Flow(nominal_value=0.1)}, + nominal_storage_capacity=19, + initial_storage_level=0, + balanced=False, + ) + es.add(storage) + + model = solph.Model(es) + model.solve("cbc") + + result = solph.processing.results(model) + storage_inflow = result[(bus, storage)]["sequences"]["flow"] + assert list(storage_inflow)[:-1] == 10 * [2] + + storage_content = list( + result[(storage, None)]["sequences"]["storage_content"] + ) + assert storage_content == pytest.approx([i * 1.9 for i in range(0, 11)]) + + +def test_invest_content_uncoupled(): + es = solph.EnergySystem( + timeindex=solph.create_time_index( + year=2023, + number=10, + ), + infer_last_interval=False, + ) + + bus = solph.Bus("slack_bus", balanced=False) + es.add(bus) + + storage = solph.components.GenericStorage( + "storage", + inputs={bus: solph.Flow(nominal_value=2, variable_costs=-2)}, + outputs={bus: solph.Flow(nominal_value=0.1)}, + nominal_storage_capacity=solph.Investment( + ep_costs=0.1, + ), + initial_storage_level=0, + balanced=False, + ) + es.add(storage) + + model = solph.Model(es) + model.solve("cbc") + + result = solph.processing.results(model) + storage_inflow = result[(bus, storage)]["sequences"]["flow"] + assert list(storage_inflow)[:-1] == 10 * [2] + + invest_cpacity = result[(storage, None)]["scalars"]["invest"] + assert invest_cpacity == pytest.approx(19) + + storage_content = list( + result[(storage, None)]["sequences"]["storage_content"] + ) + assert storage_content == pytest.approx([i * 1.9 for i in range(0, 11)]) From 159731896e127b5f1943394810c2b0c013cc94bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 14 Aug 2024 13:01:34 +0200 Subject: [PATCH 38/54] Fix initial time step of for InvestStorage This shifts the inital time step to be consistent with a non-invest storage for models allowing only upfront-invest. Known issues: For multi-period models, the inconsistent behaviour persists because the TIMEINDEX does not make a difference between TIMEPOINTS and TIMESTEPS. --- .../solph/components/_generic_storage.py | 151 ++++++++++-------- 1 file changed, 82 insertions(+), 69 deletions(-) diff --git a/src/oemof/solph/components/_generic_storage.py b/src/oemof/solph/components/_generic_storage.py index 6fd6e6cab..11751b796 100644 --- a/src/oemof/solph/components/_generic_storage.py +++ b/src/oemof/solph/components/_generic_storage.py @@ -558,7 +558,7 @@ def _balanced_storage_rule(block, n): self.STORAGES_BALANCED, rule=_balanced_storage_rule ) - def _power_coupled(block): + def _power_coupled(_): """ Rule definition for constraint to connect the input power and output power @@ -1265,8 +1265,6 @@ 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] - # Handle unit lifetimes def _total_storage_capacity_rule(block): """Rule definition for determining total installed @@ -1456,7 +1454,7 @@ def _old_storage_capacity_rule(block): self.old_rule_build = BuildAction(rule=_old_storage_capacity_rule) - def _initially_empty_rule(block): + def _initially_empty_rule(_): """Ensure storage to be empty initially""" for n in self.INVESTSTORAGES: expr = self.storage_content[n, 0] == 0 @@ -1487,7 +1485,9 @@ def _inv_storage_init_content_max_rule(block, n): def _inv_storage_init_content_fix_rule(block, n): """Constraint for a fixed initial storage capacity.""" - return block.init_content[n] == n.initial_storage_level * ( + return block.storage_content[ + n, 0 + ] == n.initial_storage_level * ( n.investment.existing + block.invest[n, 0] ) @@ -1496,35 +1496,6 @@ def _inv_storage_init_content_fix_rule(block, n): rule=_inv_storage_init_content_fix_rule, ) - def _storage_balance_first_rule(block, n): - """ - Rule definition for the storage balance of every storage n - for the first time step. - """ - expr = 0 - expr += block.storage_content[n, 0] - expr += ( - -block.init_content[n] - * (1 - n.loss_rate[0]) ** m.timeincrement[0] - ) - expr += ( - n.fixed_losses_relative[0] - * (n.investment.existing + self.invest[n, 0]) - * m.timeincrement[0] - ) - expr += n.fixed_losses_absolute[0] * m.timeincrement[0] - expr += ( - -m.flow[i[n], n, 0, 0] * n.inflow_conversion_factor[0] - ) * m.timeincrement[0] - expr += ( - m.flow[n, o[n], 0, 0] / n.outflow_conversion_factor[0] - ) * m.timeincrement[0] - return expr == 0 - - self.balance_first = Constraint( - self.INVESTSTORAGES, rule=_storage_balance_first_rule - ) - def _storage_balance_rule(block, n, p, t): """ Rule definition for the storage balance of every storage n and @@ -1552,7 +1523,7 @@ def _storage_balance_rule(block, n, p, t): self.balance = Constraint( self.INVESTSTORAGES, - reduced_periods_timesteps, + m.TIMEINDEX, rule=_storage_balance_rule, ) @@ -1632,40 +1603,7 @@ def _storage_capacity_outflow_invest_rule(block): rule=_storage_capacity_outflow_invest_rule ) - 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, p] * n.max_storage_level[t] - ) - return expr - - self.max_storage_content = Constraint( - self.INVESTSTORAGES, - m.TIMEINDEX, - rule=_max_storage_content_invest_rule, - ) - - def _min_storage_content_invest_rule(block, n, p, t): - """ - Rule definition of lower bound constraint for the - storage content. - """ - expr = ( - self.storage_content[n, t] - >= self.total[n, p] * n.min_storage_level[t] - ) - return expr - - # Set the lower bound of the storage content if the attribute exists - self.min_storage_content = Constraint( - self.MIN_INVESTSTORAGES, - m.TIMEINDEX, - rule=_min_storage_content_invest_rule, - ) + self._add_storage_limit_constraints() def maximum_invest_limit(block, n, p): """ @@ -1739,6 +1677,81 @@ def _overall_minimum_investflow_rule(block): rule=_overall_minimum_investflow_rule ) + def _add_storage_limit_constraints(self): + m = self.parent_block() + if m.es.periods is None: + + def _max_storage_content_invest_rule(_, n, t): + """ + Rule definition for upper bound constraint for the + storage content. + """ + expr = ( + self.storage_content[n, t] + <= self.total[n, 0] * n.max_storage_level[t] + ) + return expr + + self.max_storage_content = Constraint( + self.INVESTSTORAGES, + m.TIMEPOINTS, + rule=_max_storage_content_invest_rule, + ) + + def _min_storage_content_invest_rule(_, n, t): + """ + Rule definition of lower bound constraint for the + storage content. + """ + expr = ( + self.storage_content[n, t] + >= self.total[n, 0] * n.min_storage_level[t] + ) + return expr + + # Set the lower bound of the storage content if the attribute exists + self.min_storage_content = Constraint( + self.MIN_INVESTSTORAGES, + m.TIMEPOINTS, + rule=_min_storage_content_invest_rule, + ) + else: + + def _max_storage_content_invest_rule(_, n, p, 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] + ) + return expr + + self.max_storage_content = Constraint( + self.INVESTSTORAGES, + m.TIMEINDEX, + rule=_max_storage_content_invest_rule, + ) + + def _min_storage_content_invest_rule(_, n, p, t): + """ + Rule definition of lower bound constraint for the + storage content. + """ + expr = ( + self.storage_content[n, t] + >= self.total[n, p] * n.min_storage_level[t] + ) + return expr + + # Set the lower bound of the storage content if the attribute exists + self.min_storage_content = Constraint( + self.MIN_INVESTSTORAGES, + m.TIMEINDEX, + rule=_min_storage_content_invest_rule, + ) + def _objective_expression(self): """Objective expression with fixed and investment costs.""" m = self.parent_block() From d9f7012ba79ffa2a61cb4a78a03d6ddee330b6c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 14 Aug 2024 13:08:48 +0200 Subject: [PATCH 39/54] Fix storage dump test As there is one more tim step, there is one more variable. --- .../test_storage_investment/test_storage_investment.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_scripts/test_solph/test_storage_investment/test_storage_investment.py b/tests/test_scripts/test_solph/test_storage_investment/test_storage_investment.py index e67bec253..7af43c441 100644 --- a/tests/test_scripts/test_solph/test_storage_investment/test_storage_investment.py +++ b/tests/test_scripts/test_solph/test_storage_investment/test_storage_investment.py @@ -157,7 +157,7 @@ def test_optimise_storage_size( es.dump() -def test_results_with_actual_dump(): +def test_results_with_recent_dump(): test_optimise_storage_size() energysystem = solph.EnergySystem() energysystem.restore() @@ -196,7 +196,7 @@ def test_results_with_actual_dump(): # Problem results assert meta["problem"]["Lower bound"] == 4.231675777e17 assert meta["problem"]["Upper bound"], 4.231675777e17 - assert meta["problem"]["Number of variables"] == 2807 + assert meta["problem"]["Number of variables"] == 2808 assert meta["problem"]["Number of constraints"] == 2808 assert meta["problem"]["Number of nonzeros"] == 1197 assert meta["problem"]["Number of objectives"] == 1 From ccd1b5d636a58ac0a62c33afa32ac51f6b400280 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 14 Aug 2024 13:10:44 +0200 Subject: [PATCH 40/54] Remove outdated comments The attributes exist for all of the storages in the set. --- src/oemof/solph/components/_generic_storage.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/oemof/solph/components/_generic_storage.py b/src/oemof/solph/components/_generic_storage.py index f59ec291b..578bd962c 100644 --- a/src/oemof/solph/components/_generic_storage.py +++ b/src/oemof/solph/components/_generic_storage.py @@ -1716,7 +1716,6 @@ def _min_storage_content_invest_rule(_, n, t): ) return expr - # Set the lower bound of the storage content if the attribute exists self.min_storage_content = Constraint( self.MIN_INVESTSTORAGES, m.TIMEPOINTS, @@ -1752,7 +1751,6 @@ def _min_storage_content_invest_rule(_, n, p, t): ) return expr - # Set the lower bound of the storage content if the attribute exists self.min_storage_content = Constraint( self.MIN_INVESTSTORAGES, m.TIMEINDEX, From 7ffc81f1d399e9c5d513125319db920d6d6e2bba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 14 Aug 2024 13:17:55 +0200 Subject: [PATCH 41/54] Adjust test_results_with_recent_dump() --- .../test_storage_investment/test_storage_investment.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_scripts/test_solph/test_storage_investment/test_storage_investment.py b/tests/test_scripts/test_solph/test_storage_investment/test_storage_investment.py index 7af43c441..92232979b 100644 --- a/tests/test_scripts/test_solph/test_storage_investment/test_storage_investment.py +++ b/tests/test_scripts/test_solph/test_storage_investment/test_storage_investment.py @@ -197,8 +197,8 @@ def test_results_with_recent_dump(): assert meta["problem"]["Lower bound"] == 4.231675777e17 assert meta["problem"]["Upper bound"], 4.231675777e17 assert meta["problem"]["Number of variables"] == 2808 - assert meta["problem"]["Number of constraints"] == 2808 - assert meta["problem"]["Number of nonzeros"] == 1197 + assert meta["problem"]["Number of constraints"] == 2809 + assert meta["problem"]["Number of nonzeros"] == 1199 assert meta["problem"]["Number of objectives"] == 1 assert str(meta["problem"]["Sense"]) == "minimize" From a6b3d55062bd75c829a0d466b37cb01582b8e523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 14 Aug 2024 13:40:53 +0200 Subject: [PATCH 42/54] Add test for min/max storage investment --- tests/test_components/test_storage.py | 128 ++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/tests/test_components/test_storage.py b/tests/test_components/test_storage.py index d9ff3a7db..2d7dda273 100644 --- a/tests/test_components/test_storage.py +++ b/tests/test_components/test_storage.py @@ -216,3 +216,131 @@ def test_invest_content_uncoupled(): result[(storage, None)]["sequences"]["storage_content"] ) assert storage_content == pytest.approx([i * 1.9 for i in range(0, 11)]) + + +def test_invest_content_minimum(): + es = solph.EnergySystem( + timeindex=solph.create_time_index( + year=2023, + number=10, + ), + infer_last_interval=False, + ) + + bus = solph.Bus("slack_bus", balanced=False) + es.add(bus) + + storage = solph.components.GenericStorage( + "storage", + inputs={bus: solph.Flow(nominal_value=2, variable_costs=-2)}, + outputs={bus: solph.Flow(nominal_value=0.1, variable_costs=0.1)}, + nominal_storage_capacity=solph.Investment( + ep_costs=0.1, + minimum=32, + ), + initial_storage_level=0, + balanced=False, + ) + es.add(storage) + + model = solph.Model(es) + model.solve("cbc") + + result = solph.processing.results(model) + storage_inflow = result[(bus, storage)]["sequences"]["flow"] + assert list(storage_inflow)[:-1] == 10 * [2] + + invest_cpacity = result[(storage, None)]["scalars"]["invest"] + assert invest_cpacity == pytest.approx(32) + + storage_content = list( + result[(storage, None)]["sequences"]["storage_content"] + ) + assert storage_content == pytest.approx([i * 2 for i in range(0, 11)]) + + +def test_invest_content_minimum_nonconvex(): + es = solph.EnergySystem( + timeindex=solph.create_time_index( + year=2023, + number=10, + ), + infer_last_interval=False, + ) + + bus = solph.Bus("slack_bus", balanced=False) + es.add(bus) + + storage = solph.components.GenericStorage( + "storage", + inputs={bus: solph.Flow(nominal_value=2, variable_costs=0.1)}, + outputs={bus: solph.Flow(nominal_value=0.1, variable_costs=0.1)}, + nominal_storage_capacity=solph.Investment( + ep_costs=0.1, + minimum=32, + nonconvex=solph.NonConvex(), + ), + balanced=False, + ) + es.add(storage) + + model = solph.Model(es) + model.solve("cbc") + + result = solph.processing.results(model) + storage_inflow = result[(bus, storage)]["sequences"]["flow"] + assert list(storage_inflow)[:-1] == 10 * [0] + + invest_cpacity = result[(storage, None)]["scalars"]["invest"] + assert invest_cpacity == pytest.approx(0) + + storage_content = list( + result[(storage, None)]["sequences"]["storage_content"] + ) + assert storage_content == pytest.approx(11 * [0]) + + +def test_invest_content_maximum(): + es = solph.EnergySystem( + timeindex=solph.create_time_index( + year=2023, + number=10, + ), + infer_last_interval=False, + ) + + bus = solph.Bus("slack_bus", balanced=False) + es.add(bus) + + storage = solph.components.GenericStorage( + "storage", + inputs={ + bus: solph.Flow( + nominal_value=2, + variable_costs=[-2 + i * 0.01 for i in range(0, 11)], + ) + }, + outputs={bus: solph.Flow(nominal_value=0.1, variable_costs=0.1)}, + nominal_storage_capacity=solph.Investment( + ep_costs=0.1, + maximum=10, + ), + initial_storage_level=0, + balanced=False, + ) + es.add(storage) + + model = solph.Model(es) + model.solve("cbc") + + result = solph.processing.results(model) + + invest_cpacity = result[(storage, None)]["scalars"]["invest"] + assert invest_cpacity == pytest.approx(10) + + storage_content = list( + result[(storage, None)]["sequences"]["storage_content"] + ) + assert storage_content == pytest.approx( + [min(i * 1.9, 10) for i in range(0, 11)] + ) From 9cb533b78b508aa4590809b94e438be79fe1a74d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 14 Aug 2024 13:55:56 +0200 Subject: [PATCH 43/54] Remove unneeded code in GenericInvestmentStorageBlock --- src/oemof/solph/components/_generic_storage.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/oemof/solph/components/_generic_storage.py b/src/oemof/solph/components/_generic_storage.py index db85093d9..3911c6f09 100644 --- a/src/oemof/solph/components/_generic_storage.py +++ b/src/oemof/solph/components/_generic_storage.py @@ -1111,11 +1111,9 @@ class GenericInvestmentStorageBlock(ScalarBlock): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - def _create(self, group=None): + def _create(self, group): """Create a storage block for investment modeling""" m = self.parent_block() - if group is None: - return None # ########################## CHECKS ################################### if m.es.periods is not None: @@ -1215,7 +1213,7 @@ def _create(self, group=None): self.INVESTSTORAGES, m.TIMEPOINTS, within=NonNegativeReals ) - def _storage_investvar_bound_rule(block, n, p): + def _storage_investvar_bound_rule(_, n, p): """ Rule definition to bound the invested storage capacity `invest`. """ From 2e0e2510120668bb2d827ec0711f03b4b0de81c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Wed, 14 Aug 2024 14:04:18 +0200 Subject: [PATCH 44/54] Refactor ambigous conditional statement --- src/oemof/solph/components/_generic_storage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/oemof/solph/components/_generic_storage.py b/src/oemof/solph/components/_generic_storage.py index 3911c6f09..5cb5cf8c3 100644 --- a/src/oemof/solph/components/_generic_storage.py +++ b/src/oemof/solph/components/_generic_storage.py @@ -1219,7 +1219,7 @@ def _storage_investvar_bound_rule(_, n, p): """ if n in self.CONVEX_INVESTSTORAGES: return n.investment.minimum[p], n.investment.maximum[p] - elif n in self.NON_CONVEX_INVESTSTORAGES: + else: # n in self.NON_CONVEX_INVESTSTORAGES return 0, n.investment.maximum[p] self.invest = Var( From d51d94e2ffdde899b4096c7ce7b54c9c6b41a4b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 15 Aug 2024 14:37:59 +0200 Subject: [PATCH 45/54] Silence warnings in tests --- .../test_components/test_offset_converter.py | 128 ++++++++++-------- tests/test_components/test_sink.py | 28 ++-- tests/test_components/test_source.py | 27 ++-- tests/test_solph_network_classes.py | 17 ++- 4 files changed, 118 insertions(+), 82 deletions(-) diff --git a/tests/test_components/test_offset_converter.py b/tests/test_components/test_offset_converter.py index f329c882c..7553faa85 100644 --- a/tests/test_components/test_offset_converter.py +++ b/tests/test_components/test_offset_converter.py @@ -2,6 +2,7 @@ import numpy as np import pytest +from oemof.tools.debugging import ExperimentalFeatureWarning from oemof import solph from oemof.solph._plumbing import sequence @@ -104,58 +105,67 @@ def check_results( def add_OffsetConverter( es, reference_bus, nominal_value, minimal_value, eta_at_nom, eta_at_min ): + # Use of experimental API to access nodes by label. + # Can be removed with future release of network. + with warnings.catch_warnings( + action="ignore", category=ExperimentalFeatureWarning + ): + oc_inputs = { + b: solph.Flow() + for label, b in es.node.items() + if "bus input" in label + } + oc_outputs = { + b: solph.Flow() + for label, b in es.node.items() + if "bus output" in label + } + + if reference_bus in oc_outputs: + f = oc_outputs[reference_bus] + get_slope_and_offset = slope_offset_from_nonconvex_output + fix = [0] + np.linspace(minimal_value, nominal_value, 9).tolist() + else: + f = oc_inputs[reference_bus] + get_slope_and_offset = slope_offset_from_nonconvex_input + fix = [0] + np.linspace( + minimal_value * eta_at_min[es.node["bus output 0"]], + nominal_value * eta_at_nom[es.node["bus output 0"]], + 9, + ).tolist() + + fix_flow = es.flows()[es.node["bus output 0"], es.node["sink 0"]] + fix_flow.fix = fix + fix_flow.nominal_value = 1 + + slopes = {} + offsets = {} + + for bus in list(oc_inputs) + list(oc_outputs): + if bus == reference_bus: + continue + slope, offset = get_slope_and_offset( + 1, + minimal_value / nominal_value, + eta_at_nom[bus], + eta_at_min[bus], + ) + slopes[bus] = slope + offsets[bus] = offset - oc_inputs = { - b: solph.Flow() for label, b in es.node.items() if "bus input" in label - } - oc_outputs = { - b: solph.Flow() - for label, b in es.node.items() - if "bus output" in label - } + f.nonconvex = solph.NonConvex() + f.nominal_value = nominal_value + f.min = sequence(minimal_value / nominal_value) - if reference_bus in oc_outputs: - f = oc_outputs[reference_bus] - get_slope_and_offset = slope_offset_from_nonconvex_output - fix = [0] + np.linspace(minimal_value, nominal_value, 9).tolist() - else: - f = oc_inputs[reference_bus] - get_slope_and_offset = slope_offset_from_nonconvex_input - fix = [0] + np.linspace( - minimal_value * eta_at_min[es.node["bus output 0"]], - nominal_value * eta_at_nom[es.node["bus output 0"]], - 9, - ).tolist() - - fix_flow = es.flows()[es.node["bus output 0"], es.node["sink 0"]] - fix_flow.fix = fix - fix_flow.nominal_value = 1 - - slopes = {} - offsets = {} - - for bus in list(oc_inputs) + list(oc_outputs): - if bus == reference_bus: - continue - slope, offset = get_slope_and_offset( - 1, minimal_value / nominal_value, eta_at_nom[bus], eta_at_min[bus] + oc = solph.components.OffsetConverter( + label="offset converter", + inputs=oc_inputs, + outputs=oc_outputs, + conversion_factors=slopes, + normed_offsets=offsets, ) - slopes[bus] = slope - offsets[bus] = offset - - f.nonconvex = solph.NonConvex() - f.nominal_value = nominal_value - f.min = sequence(minimal_value / nominal_value) - - oc = solph.components.OffsetConverter( - label="offset converter", - inputs=oc_inputs, - outputs=oc_outputs, - conversion_factors=slopes, - normed_offsets=offsets, - ) - es.add(oc) + es.add(oc) def test_custom_properties(): @@ -476,8 +486,13 @@ def test_two_OffsetConverters_with_and_without_investment(): es.add(oc) - fix_flow = es.flows()[es.node["bus output 0"], es.node["sink 0"]] - fix_flow.fix = [v * 2 for v in fix_flow.fix] + # Use of experimental API to access nodes by label. + # Can be removed with future release of network. + with warnings.catch_warnings( + action="ignore", category=ExperimentalFeatureWarning + ): + fix_flow = es.flows()[es.node["bus output 0"], es.node["sink 0"]] + fix_flow.fix = [v * 2 for v in fix_flow.fix] # if the model solves it is feasible _ = solve_and_extract_results(es) @@ -491,10 +506,15 @@ def test_OffsetConverter_05x_compatibility(): nominal_value = 10 minimal_value = 3 - fix = [0] + np.linspace(minimal_value, nominal_value, 9).tolist() - fix_flow = es.flows()[es.node["bus output 0"], es.node["sink 0"]] - fix_flow.fix = fix - fix_flow.nominal_value = 1 + # Use of experimental API to access nodes by label. + # Can be removed with future release of network. + with warnings.catch_warnings( + action="ignore", category=ExperimentalFeatureWarning + ): + fix = [0] + np.linspace(minimal_value, nominal_value, 9).tolist() + fix_flow = es.flows()[es.node["bus output 0"], es.node["sink 0"]] + fix_flow.fix = fix + fix_flow.nominal_value = 1 eta_at_nom = 0.7 eta_at_min = 0.5 diff --git a/tests/test_components/test_sink.py b/tests/test_components/test_sink.py index 97622a181..00f891ffb 100644 --- a/tests/test_components/test_sink.py +++ b/tests/test_components/test_sink.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- +import warnings import pytest +from oemof.tools.debugging import ExperimentalFeatureWarning from oemof import solph @@ -22,18 +24,22 @@ def test_multi_input_sink(): es.add( solph.components.Source(f"source {i}", outputs={b: solph.Flow()}) ) - - es.add( - solph.components.Sink( - inputs={ - es.node[f"bus input {i}"]: solph.Flow( - nominal_value=1, - variable_costs=costs, - ) - for i in range(num_in) - } + # Use of experimental API to access nodes by label. + # Can be removed with future release of network. + with warnings.catch_warnings( + action="ignore", category=ExperimentalFeatureWarning + ): + es.add( + solph.components.Sink( + inputs={ + es.node[f"bus input {i}"]: solph.Flow( + nominal_value=1, + variable_costs=costs, + ) + for i in range(num_in) + } + ) ) - ) model = solph.Model(es) model.solve("cbc") diff --git a/tests/test_components/test_source.py b/tests/test_components/test_source.py index 16fa294fb..f54977a76 100644 --- a/tests/test_components/test_source.py +++ b/tests/test_components/test_source.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- +import warnings import pytest +from oemof.tools.debugging import ExperimentalFeatureWarning from oemof import solph @@ -21,17 +23,22 @@ def test_multi_output_source(): es.add(b) es.add(solph.components.Sink(f"source {i}", inputs={b: solph.Flow()})) - es.add( - solph.components.Source( - outputs={ - es.node[f"bus input {i}"]: solph.Flow( - nominal_value=1, - variable_costs=costs, - ) - for i in range(num_out) - } + # Use of experimental API to access nodes by label. + # Can be removed with future release of network. + with warnings.catch_warnings( + action="ignore", category=ExperimentalFeatureWarning + ): + es.add( + solph.components.Source( + outputs={ + es.node[f"bus input {i}"]: solph.Flow( + nominal_value=1, + variable_costs=costs, + ) + for i in range(num_out) + } + ) ) - ) model = solph.Model(es) model.solve("cbc") diff --git a/tests/test_solph_network_classes.py b/tests/test_solph_network_classes.py index 46f032da1..35d421d87 100644 --- a/tests/test_solph_network_classes.py +++ b/tests/test_solph_network_classes.py @@ -12,6 +12,7 @@ import warnings import pytest +from oemof.tools.debugging import SuspiciousUsageWarning from oemof import solph @@ -60,20 +61,22 @@ def test_sequence_conversion_factor_from_list_wrong_length(self): with pytest.raises(IndexError): self.a = transf.conversion_factors[self.bus][6] - @pytest.mark.filterwarnings("ignore:Attribute :UserWarning") def test_converter_missing_output_create_empty_dict(self): - trfr = solph.components.Converter(inputs={}) - assert trfr.outputs == {} + with pytest.warns(SuspiciousUsageWarning): + trfr = solph.components.Converter(inputs={}) + assert trfr.outputs == {} - @pytest.mark.filterwarnings("ignore:Attribute :UserWarning") def test_converter_missing_input_create_empty_dict(self): - trfr = solph.components.Converter(outputs={}) - assert trfr.inputs == {} + with pytest.warns(SuspiciousUsageWarning): + trfr = solph.components.Converter(outputs={}) + assert trfr.inputs == {} def test_transformer_wrapper(): with pytest.warns(FutureWarning): - solph.components.Transformer() + # no inputs/outputs + with pytest.warns(SuspiciousUsageWarning): + solph.components.Transformer() def test_offset_transformer_wrapper(): From a768fe35f5d9df3c17cd1ba1269686dd30063766 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 15 Aug 2024 19:41:14 +0200 Subject: [PATCH 46/54] Improve warning filter compatibility --- tests/test_components/test_offset_converter.py | 15 ++++++--------- tests/test_components/test_sink.py | 5 ++--- tests/test_components/test_source.py | 5 ++--- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/tests/test_components/test_offset_converter.py b/tests/test_components/test_offset_converter.py index 7553faa85..997a1140c 100644 --- a/tests/test_components/test_offset_converter.py +++ b/tests/test_components/test_offset_converter.py @@ -107,9 +107,8 @@ def add_OffsetConverter( ): # Use of experimental API to access nodes by label. # Can be removed with future release of network. - with warnings.catch_warnings( - action="ignore", category=ExperimentalFeatureWarning - ): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ExperimentalFeatureWarning) oc_inputs = { b: solph.Flow() for label, b in es.node.items() @@ -488,9 +487,8 @@ def test_two_OffsetConverters_with_and_without_investment(): # Use of experimental API to access nodes by label. # Can be removed with future release of network. - with warnings.catch_warnings( - action="ignore", category=ExperimentalFeatureWarning - ): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ExperimentalFeatureWarning) fix_flow = es.flows()[es.node["bus output 0"], es.node["sink 0"]] fix_flow.fix = [v * 2 for v in fix_flow.fix] # if the model solves it is feasible @@ -508,9 +506,8 @@ def test_OffsetConverter_05x_compatibility(): # Use of experimental API to access nodes by label. # Can be removed with future release of network. - with warnings.catch_warnings( - action="ignore", category=ExperimentalFeatureWarning - ): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=ExperimentalFeatureWarning) fix = [0] + np.linspace(minimal_value, nominal_value, 9).tolist() fix_flow = es.flows()[es.node["bus output 0"], es.node["sink 0"]] fix_flow.fix = fix diff --git a/tests/test_components/test_sink.py b/tests/test_components/test_sink.py index 00f891ffb..d5683824b 100644 --- a/tests/test_components/test_sink.py +++ b/tests/test_components/test_sink.py @@ -26,9 +26,8 @@ def test_multi_input_sink(): ) # Use of experimental API to access nodes by label. # Can be removed with future release of network. - with warnings.catch_warnings( - action="ignore", category=ExperimentalFeatureWarning - ): + with warnings.catch_warnings(): + warnings.simplefilter('ignore', ExperimentalFeatureWarning) es.add( solph.components.Sink( inputs={ diff --git a/tests/test_components/test_source.py b/tests/test_components/test_source.py index f54977a76..7219639b0 100644 --- a/tests/test_components/test_source.py +++ b/tests/test_components/test_source.py @@ -25,9 +25,8 @@ def test_multi_output_source(): # Use of experimental API to access nodes by label. # Can be removed with future release of network. - with warnings.catch_warnings( - action="ignore", category=ExperimentalFeatureWarning - ): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ExperimentalFeatureWarning) es.add( solph.components.Source( outputs={ From a001ba89857991d1435143a7df9ad79f252b94db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 15 Aug 2024 20:41:10 +0200 Subject: [PATCH 47/54] Add test for "equate flows" --- tests/test_constraints/test_equate_flows.py | 86 +++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 tests/test_constraints/test_equate_flows.py diff --git a/tests/test_constraints/test_equate_flows.py b/tests/test_constraints/test_equate_flows.py new file mode 100644 index 000000000..33d76e2a0 --- /dev/null +++ b/tests/test_constraints/test_equate_flows.py @@ -0,0 +1,86 @@ +# -*- coding: utf-8 -*- + +"""Tests for Flows with NonConvex attribute + +SPDX-FileCopyrightText: Deutsches Zentrum für Luft- und Raumfahrt e.V. +SPDX-FileCopyrightText: Patrik Schönfeldt + +SPDX-License-Identifier: MIT +""" + +import pandas as pd +import pytest + +from oemof import solph + + +def test_equate_flows(): + date_time_index = pd.date_range("1/1/2012", periods=3, freq="h") + energysystem = solph.EnergySystem( + timeindex=date_time_index, + infer_last_interval=False, + ) + + b1 = solph.buses.Bus(label="b1", balanced=False) + s0 = solph.components.Sink( + label="s1", + inputs={ + b1: solph.Flow( + variable_costs=-0.5, + max=[0.5, 1], + nominal_value=4, + custom_attributes={"keyword1": "group 1"}, + ) + }, + ) + s1 = solph.components.Sink( + label="s2", + inputs={ + b1: solph.Flow( + variable_costs=0.1, + nominal_value=2, + custom_attributes={"keyword2": "group 2"}, + ) + }, + ) + s2 = solph.components.Sink( + label="s3", + inputs={ + b1: solph.Flow( + variable_costs=0.2, + nominal_value=3, + custom_attributes={"keyword2": "group 2"}, + ) + }, + ) + s3 = solph.components.Sink( + label="s4", + inputs={ + b1: solph.Flow( + variable_costs=0.2, + nominal_value=3, + custom_attributes={"keyword3": "no group"}, + ) + }, + ) + energysystem.add(b1, s0, s1, s2, s3) + + model = solph.Model(energysystem) + + solph.constraints.equate_flows_by_keyword( + model, "keyword1", "keyword2", 0.75 + ) + + model.solve() + + results = solph.processing.results(model) + + flow = [ + list(results[(b1, s)]["sequences"]["flow"][:-1]) + for s in [s0, s1, s2, s3] + ] + + assert flow[0] == pytest.approx([2, 4]) + assert flow[1] == pytest.approx([1.5, 2]) + assert flow[2] == pytest.approx([0, 1]) + assert flow[3] == pytest.approx([0, 0]) From 60ce70a0a396f192c8257facbc58f3e77cb4dc60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 15 Aug 2024 20:41:37 +0200 Subject: [PATCH 48/54] Add tests for SimpleFlowBlock --- tests/test_flows/__init__.py | 5 +++ tests/test_flows/shared.py | 30 +++++++++++++ tests/test_flows/test_non_convex_flow.py | 35 +++++---------- tests/test_flows/test_simple_flow.py | 57 ++++++++++++++++++++++++ 4 files changed, 102 insertions(+), 25 deletions(-) create mode 100644 tests/test_flows/__init__.py create mode 100644 tests/test_flows/shared.py create mode 100644 tests/test_flows/test_simple_flow.py diff --git a/tests/test_flows/__init__.py b/tests/test_flows/__init__.py new file mode 100644 index 000000000..aea97cd29 --- /dev/null +++ b/tests/test_flows/__init__.py @@ -0,0 +1,5 @@ +from .shared import _run_flow_model + +__all__ = [ + "_run_flow_model", +] diff --git a/tests/test_flows/shared.py b/tests/test_flows/shared.py new file mode 100644 index 000000000..a34d6d9c4 --- /dev/null +++ b/tests/test_flows/shared.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- + +"""Tests for Flows with NonConvex attribute + +SPDX-FileCopyrightText: Deutsches Zentrum für Luft- und Raumfahrt e.V. +SPDX-FileCopyrightText: Patrik Schönfeldt + +SPDX-License-Identifier: MIT +""" + +import pandas as pd + +from oemof import solph + + +def _run_flow_model(flow): + date_time_index = pd.date_range("1/1/2012", periods=10, freq="h") + energysystem = solph.EnergySystem( + timeindex=date_time_index, + infer_last_interval=True, + ) + bus = solph.buses.Bus(label="bus", balanced=False) + energysystem.add(bus) + + bus.inputs[bus] = flow + + model = solph.Model(energysystem) + model.solve() + + return solph.processing.results(model)[(bus, bus)]["sequences"] diff --git a/tests/test_flows/test_non_convex_flow.py b/tests/test_flows/test_non_convex_flow.py index 55ce8bc64..321ee26c7 100644 --- a/tests/test_flows/test_non_convex_flow.py +++ b/tests/test_flows/test_non_convex_flow.py @@ -12,22 +12,7 @@ from oemof import solph - -def _run_model(flow): - date_time_index = pd.date_range("1/1/2012", periods=10, freq="h") - energysystem = solph.EnergySystem( - timeindex=date_time_index, - infer_last_interval=True, - ) - bus = solph.buses.Bus(label="bus", balanced=False) - energysystem.add(bus) - - bus.inputs[bus] = flow - - model = solph.Model(energysystem) - model.solve() - - return solph.processing.results(model)[(bus, bus)]["sequences"] +from . import _run_flow_model def test_initial_status_off(): @@ -37,7 +22,7 @@ def test_initial_status_off(): nonconvex=solph.NonConvex(initial_status=0, minimum_downtime=5), variable_costs=-1, ) - flow_result = _run_model(flow) + flow_result = _run_flow_model(flow) assert (flow_result["flow"][:-1] == 5 * [0] + 5 * [10]).all() @@ -49,7 +34,7 @@ def test_maximum_shutdowns(): nonconvex=solph.NonConvex(maximum_shutdowns=1), variable_costs=[1, -2, 1, 1, 1, -5, 1, 1, 1, -2], ) - flow_result = _run_model(flow) + flow_result = _run_flow_model(flow) assert list(flow_result["status"][:-1]) == [0, 1, 1, 1, 1, 1, 0, 0, 0, 1] @@ -61,7 +46,7 @@ def test_maximum_startups(): nonconvex=solph.NonConvex(maximum_startups=1), variable_costs=[1, -4, 1, 1, 1, -5, 1, 1, 5, -3], ) - flow_result = _run_model(flow) + flow_result = _run_flow_model(flow) assert list(flow_result["status"][:-1]) == [0, 1, 1, 1, 1, 1, 0, 0, 0, 0] @@ -74,7 +59,7 @@ def test_initial_status_on(): nonconvex=solph.NonConvex(initial_status=1, minimum_uptime=3), variable_costs=1, ) - flow_result = _run_model(flow) + flow_result = _run_flow_model(flow) assert (flow_result["flow"][:-1] == 3 * [5] + 7 * [0]).all() @@ -88,7 +73,7 @@ def test_activity_costs(): nonconvex=solph.NonConvex(activity_costs=9 * [1] + [10]), variable_costs=-0.45, ) - flow_result = _run_model(flow)["flow"][:-1] + flow_result = _run_flow_model(flow)["flow"][:-1] assert (flow_result == [0, 0, 0, 3, 4, 5, 6, 7, 8, 0]).all() @@ -101,7 +86,7 @@ def test_inactivity_costs(): nonconvex=solph.NonConvex(inactivity_costs=9 * [1] + [10]), variable_costs=0.45, ) - flow_result = _run_model(flow)["flow"][:-1] + flow_result = _run_flow_model(flow)["flow"][:-1] assert (flow_result == [0, 1, 2, 0, 0, 0, 0, 0, 0, 9]).all() @@ -116,7 +101,7 @@ def test_startup_costs_start_off(): nonconvex=solph.NonConvex(startup_costs=5, initial_status=0), variable_costs=price_pattern, ) - flow_result = _run_model(flow) + flow_result = _run_flow_model(flow) assert (flow_result["flow"][:-1] == [0, 0, 0, 10, 1, 1, 1, 10, 0, 0]).all() @@ -131,7 +116,7 @@ def test_startup_costs_start_on(): nonconvex=solph.NonConvex(startup_costs=5, initial_status=1), variable_costs=price_pattern, ) - flow_result = _run_model(flow) + flow_result = _run_flow_model(flow) assert (flow_result["flow"][:-1] == [1, 1, 1, 10, 1, 1, 1, 10, 0, 0]).all() @@ -146,6 +131,6 @@ def test_shutdown_costs_start_on(): nonconvex=solph.NonConvex(shutdown_costs=5, initial_status=1), variable_costs=price_pattern, ) - flow_result = _run_model(flow) + flow_result = _run_flow_model(flow) assert (flow_result["flow"][:-1] == [1, 1, 1, 10, 1, 1, 1, 10, 1, 1]).all() diff --git a/tests/test_flows/test_simple_flow.py b/tests/test_flows/test_simple_flow.py new file mode 100644 index 000000000..3c351e0ce --- /dev/null +++ b/tests/test_flows/test_simple_flow.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- + +"""Tests for Flows with NonConvex attribute + +SPDX-FileCopyrightText: Deutsches Zentrum für Luft- und Raumfahrt e.V. +SPDX-FileCopyrightText: Patrik Schönfeldt + +SPDX-License-Identifier: MIT +""" + +import pytest + +from oemof import solph + +from . import _run_flow_model + + +def test_gradient_limit(): + price_pattern = [8] + 8 * [-1] + [8] + + flow = solph.flows.Flow( + nominal_value=2, + variable_costs=price_pattern, + positive_gradient_limit=0.4, + negative_gradient_limit=0.25, + ) + flow_result = list(_run_flow_model(flow)["flow"][:-1]) + + assert flow_result == pytest.approx( + [0, 0.8, 1.6, 2.0, 2.0, 2.0, 1.5, 1.0, 0.5, 0] + ) + + +def test_full_load_time_max(): + price_pattern = [-i for i in range(11)] + + flow = solph.flows.Flow( + nominal_value=2, + variable_costs=price_pattern, + full_load_time_max=4.5, + ) + flow_result = list(_run_flow_model(flow)["flow"][:-1]) + + assert flow_result == pytest.approx(5 * [0] + [1] + 4 * [2]) + + +def test_full_load_time_min(): + price_pattern = [i for i in range(11)] + + flow = solph.flows.Flow( + nominal_value=2, + variable_costs=price_pattern, + full_load_time_min=4.5, + ) + flow_result = list(_run_flow_model(flow)["flow"][:-1]) + + assert flow_result == pytest.approx(4 * [2] + [1] + 5 * [0]) From a1278747a7d67354649d4212dfd58810f822783a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 15 Aug 2024 20:42:01 +0200 Subject: [PATCH 49/54] Refactor some style --- src/oemof/solph/flows/_simple_flow_block.py | 4 ++-- tests/test_components/test_sink.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/oemof/solph/flows/_simple_flow_block.py b/src/oemof/solph/flows/_simple_flow_block.py index 7cf21bced..dc893592b 100644 --- a/src/oemof/solph/flows/_simple_flow_block.py +++ b/src/oemof/solph/flows/_simple_flow_block.py @@ -231,7 +231,7 @@ def _flow_full_load_time_max_rule(model): rule=_flow_full_load_time_max_rule ) - def _flow_full_load_time_min_rule(model): + def _flow_full_load_time_min_rule(_): """Rule definition for build action of min. sum flow constraint.""" for inp, out in self.FULL_LOAD_TIME_MIN_FLOWS: lhs = sum( @@ -251,7 +251,7 @@ def _flow_full_load_time_min_rule(model): rule=_flow_full_load_time_min_rule ) - def _positive_gradient_flow_rule(model): + def _positive_gradient_flow_rule(_): """Rule definition for positive gradient constraint.""" for inp, out in self.POSITIVE_GRADIENT_FLOWS: for index in range(1, len(m.TIMESTEPS) + 1): diff --git a/tests/test_components/test_sink.py b/tests/test_components/test_sink.py index d5683824b..fa0559650 100644 --- a/tests/test_components/test_sink.py +++ b/tests/test_components/test_sink.py @@ -27,7 +27,7 @@ def test_multi_input_sink(): # Use of experimental API to access nodes by label. # Can be removed with future release of network. with warnings.catch_warnings(): - warnings.simplefilter('ignore', ExperimentalFeatureWarning) + warnings.simplefilter("ignore", ExperimentalFeatureWarning) es.add( solph.components.Sink( inputs={ From 0d8668d20dd46302011986ae1b979aeed0381f0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 15 Aug 2024 20:50:26 +0200 Subject: [PATCH 50/54] Add test for limit_active_flow_count_by_keyword --- .../test_constraints/test_flow_count_limit.py | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 tests/test_constraints/test_flow_count_limit.py diff --git a/tests/test_constraints/test_flow_count_limit.py b/tests/test_constraints/test_flow_count_limit.py new file mode 100644 index 000000000..9b53300c6 --- /dev/null +++ b/tests/test_constraints/test_flow_count_limit.py @@ -0,0 +1,96 @@ +# -*- coding: utf-8 -*- + +"""Tests for Flows with NonConvex attribute + +SPDX-FileCopyrightText: Deutsches Zentrum für Luft- und Raumfahrt e.V. +SPDX-FileCopyrightText: Patrik Schönfeldt + +SPDX-License-Identifier: MIT +""" + +import pandas as pd +import pytest + +from oemof import solph + + +def test_flow_count_limit(): + date_time_index = pd.date_range("1/1/2012", periods=3, freq="h") + energysystem = solph.EnergySystem( + timeindex=date_time_index, + infer_last_interval=False, + ) + + b1 = solph.buses.Bus(label="b1", balanced=False) + s0 = solph.components.Sink( + label="s1", + inputs={ + b1: solph.Flow( + variable_costs=[-0.5, 0.5], + nominal_value=4, + min=0.5, + nonconvex=solph.NonConvex(), + custom_attributes={"keyword1": "group 1"}, + ) + }, + ) + s1 = solph.components.Sink( + label="s2", + inputs={ + b1: solph.Flow( + variable_costs=[-0.2, 0.2], + nominal_value=2, + min=0.5, + nonconvex=solph.NonConvex(), + custom_attributes={"keyword1": "also group 1"}, + ) + }, + ) + s2 = solph.components.Sink( + label="s3", + inputs={ + b1: solph.Flow( + variable_costs=[-0.1, 0.1], + nominal_value=3, + min=0.5, + nonconvex=solph.NonConvex(), + custom_attributes={"keyword1": "still group 1"}, + ) + }, + ) + s3 = solph.components.Sink( + label="s4", + inputs={ + b1: solph.Flow( + variable_costs=[-0.1, 0.2], + nominal_value=3, + min=0.5, + nonconvex=solph.NonConvex(), + custom_attributes={"keyword2": "not in group 1"}, + ) + }, + ) + energysystem.add(b1, s0, s1, s2, s3) + + model = solph.Model(energysystem) + + solph.constraints.limit_active_flow_count_by_keyword( + model, + "keyword1", + lower_limit=1, + upper_limit=2, + ) + + model.solve() + + results = solph.processing.results(model) + + flow = [ + list(results[(b1, s)]["sequences"]["flow"][:-1]) + for s in [s0, s1, s2, s3] + ] + + assert flow[0] == pytest.approx([4, 0]) + assert flow[1] == pytest.approx([2, 0]) + assert flow[2] == pytest.approx([0, 1.5]) + assert flow[3] == pytest.approx([3, 0]) From eb050e7e7ba8763325c45f278ef22731b2f03a1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 15 Aug 2024 20:53:58 +0200 Subject: [PATCH 51/54] Let tests pass with 85 % coverage As the experimental multi-period code (hugely untested and to be refactored) counts for the coverage, lowering it should be in order. --- .github/workflows/tox_pytests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tox_pytests.yml b/.github/workflows/tox_pytests.yml index 48f4845a8..44c8d09c9 100644 --- a/.github/workflows/tox_pytests.yml +++ b/.github/workflows/tox_pytests.yml @@ -34,7 +34,7 @@ jobs: run: tox - name: Check test coverage - run: coverage report -m --fail-under=${{ matrix.vcs == 'bzr' && 89 || 90 }} + run: coverage report -m --fail-under=${{ matrix.vcs == 'bzr' && 84 || 85 }} - name: Report to coveralls run: coveralls From 0cdecaf7299c6e36a1b10f931e634c40e6c45627 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Thu, 15 Aug 2024 20:59:34 +0200 Subject: [PATCH 52/54] Remove unused import --- tests/test_flows/test_non_convex_flow.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/test_flows/test_non_convex_flow.py b/tests/test_flows/test_non_convex_flow.py index 321ee26c7..48d1ff150 100644 --- a/tests/test_flows/test_non_convex_flow.py +++ b/tests/test_flows/test_non_convex_flow.py @@ -8,8 +8,6 @@ SPDX-License-Identifier: MIT """ -import pandas as pd - from oemof import solph from . import _run_flow_model From 2ec9a029808ad2f5eabd31b81f31ae723d7f048b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Mon, 19 Aug 2024 16:24:55 +0200 Subject: [PATCH 53/54] Refactor outdated names --- src/oemof/solph/_helpers.py | 10 +++--- src/oemof/solph/_models.py | 3 +- src/oemof/solph/constraints/integral_limit.py | 2 +- tests/test_components/test_storage.py | 20 +++++------- .../test_constraints_module.py | 1 + tests/test_flows/test_non_convex_flow.py | 2 +- tests/test_solph_network_classes.py | 32 +++++++++---------- 7 files changed, 33 insertions(+), 37 deletions(-) diff --git a/src/oemof/solph/_helpers.py b/src/oemof/solph/_helpers.py index ceae7e269..b3d0f0e73 100644 --- a/src/oemof/solph/_helpers.py +++ b/src/oemof/solph/_helpers.py @@ -68,8 +68,8 @@ def create_time_index( Parameters ---------- year : int, datetime - The year of the index. If number and start is set the year parameter is - ignored. + The year of the index. + Used to automatically set start and number for the specific year. interval : float The time interval in hours e.g. 0.5 for 30min or 2 for a two hour interval (default: 1). @@ -100,10 +100,10 @@ def create_time_index( """ if number is None: if calendar.isleap(year): - hoy = 8784 + hours_in_year = 8784 else: - hoy = 8760 - number = round(hoy / interval) + hours_in_year = 8760 + number = round(hours_in_year / interval) if start is not None: if year is not None: raise ValueError( diff --git a/src/oemof/solph/_models.py b/src/oemof/solph/_models.py index d29fd621d..5ecbbd474 100644 --- a/src/oemof/solph/_models.py +++ b/src/oemof/solph/_models.py @@ -349,10 +349,9 @@ def _add_child_blocks(self): and adds them to the model. """ for group in self._constraint_groups: - # create instance for block block = group() - # Add block to model self.add_component(str(block), block) + # create constraints etc. related with block for all nodes # in the group block._create(group=self.es.groups.get(group)) diff --git a/src/oemof/solph/constraints/integral_limit.py b/src/oemof/solph/constraints/integral_limit.py index a758a2fd3..0544226db 100644 --- a/src/oemof/solph/constraints/integral_limit.py +++ b/src/oemof/solph/constraints/integral_limit.py @@ -137,7 +137,7 @@ def generic_integral_limit( >>> model = solph.Model(energysystem) >>> flow_with_keyword = {(src1, bel): flow1, } >>> model = solph.constraints.generic_integral_limit( - ... model, "my_factor", flow_with_keyword, limit=777) + ... model, "my_factor", flow_with_keyword, upper_limit=777) """ flows = _check_and_set_flows(om, flows, keyword) if limit_name is None: diff --git a/tests/test_components/test_storage.py b/tests/test_components/test_storage.py index 2d7dda273..763883637 100644 --- a/tests/test_components/test_storage.py +++ b/tests/test_components/test_storage.py @@ -93,8 +93,6 @@ def test_invest_power_uncoupled(): invest_outflow = result[(storage, bus)]["scalars"]["invest"] assert invest_outflow == pytest.approx(0) - print(result) - def test_invest_power_coupled(): es = solph.EnergySystem( @@ -140,8 +138,6 @@ def test_invest_power_coupled(): invest_outflow = result[(storage, bus)]["scalars"]["invest"] assert invest_outflow == pytest.approx(2) - print(result) - def test_storage_charging(): es = solph.EnergySystem( @@ -209,8 +205,8 @@ def test_invest_content_uncoupled(): storage_inflow = result[(bus, storage)]["sequences"]["flow"] assert list(storage_inflow)[:-1] == 10 * [2] - invest_cpacity = result[(storage, None)]["scalars"]["invest"] - assert invest_cpacity == pytest.approx(19) + invest_capacity = result[(storage, None)]["scalars"]["invest"] + assert invest_capacity == pytest.approx(19) storage_content = list( result[(storage, None)]["sequences"]["storage_content"] @@ -250,8 +246,8 @@ def test_invest_content_minimum(): storage_inflow = result[(bus, storage)]["sequences"]["flow"] assert list(storage_inflow)[:-1] == 10 * [2] - invest_cpacity = result[(storage, None)]["scalars"]["invest"] - assert invest_cpacity == pytest.approx(32) + invest_capacity = result[(storage, None)]["scalars"]["invest"] + assert invest_capacity == pytest.approx(32) storage_content = list( result[(storage, None)]["sequences"]["storage_content"] @@ -291,8 +287,8 @@ def test_invest_content_minimum_nonconvex(): storage_inflow = result[(bus, storage)]["sequences"]["flow"] assert list(storage_inflow)[:-1] == 10 * [0] - invest_cpacity = result[(storage, None)]["scalars"]["invest"] - assert invest_cpacity == pytest.approx(0) + invest_capacity = result[(storage, None)]["scalars"]["invest"] + assert invest_capacity == pytest.approx(0) storage_content = list( result[(storage, None)]["sequences"]["storage_content"] @@ -335,8 +331,8 @@ def test_invest_content_maximum(): result = solph.processing.results(model) - invest_cpacity = result[(storage, None)]["scalars"]["invest"] - assert invest_cpacity == pytest.approx(10) + invest_capacity = result[(storage, None)]["scalars"]["invest"] + assert invest_capacity == pytest.approx(10) storage_content = list( result[(storage, None)]["sequences"]["storage_content"] diff --git a/tests/test_constraints/test_constraints_module.py b/tests/test_constraints/test_constraints_module.py index 03a2b3b68..6a36b7049 100644 --- a/tests/test_constraints/test_constraints_module.py +++ b/tests/test_constraints/test_constraints_module.py @@ -60,6 +60,7 @@ def test_integral_limit(): energysystem.add(bel, src1, src2, src3, src4) model = solph.Model(energysystem) + # Note we do not consider flow3 for this constraint. flows_with_keyword = { (src1, bel): flow1, } diff --git a/tests/test_flows/test_non_convex_flow.py b/tests/test_flows/test_non_convex_flow.py index 48d1ff150..d5960a898 100644 --- a/tests/test_flows/test_non_convex_flow.py +++ b/tests/test_flows/test_non_convex_flow.py @@ -67,7 +67,7 @@ def test_activity_costs(): flow = solph.flows.Flow( nominal_value=10, min=0.1, - max=[i * 0.1 for i in range(10)], + max=[0.1] + [i * 0.1 for i in range(1, 10)], nonconvex=solph.NonConvex(activity_costs=9 * [1] + [10]), variable_costs=-0.45, ) diff --git a/tests/test_solph_network_classes.py b/tests/test_solph_network_classes.py index 35d421d87..71726a286 100644 --- a/tests/test_solph_network_classes.py +++ b/tests/test_solph_network_classes.py @@ -25,56 +25,56 @@ def setup_class(cls): @pytest.mark.filterwarnings("ignore::UserWarning") def test_empty_converter(self): - transf = solph.components.Converter() - assert isinstance(transf.conversion_factors, dict) - assert len(transf.conversion_factors.keys()) == 0 + converter = solph.components.Converter() + assert isinstance(converter.conversion_factors, dict) + assert len(converter.conversion_factors.keys()) == 0 def test_default_conversion_factor(self): - transf = solph.components.Converter( + converter = solph.components.Converter( inputs={self.bus: solph.flows.Flow()}, outputs={self.bus: solph.flows.Flow()}, ) - assert transf.conversion_factors[self.bus][2] == 1 + assert converter.conversion_factors[self.bus][2] == 1 def test_sequence_conversion_factor_from_scalar(self): - transf = solph.components.Converter( + converter = solph.components.Converter( inputs={self.bus: solph.flows.Flow()}, outputs={self.bus: solph.flows.Flow()}, conversion_factors={self.bus: 2}, ) - assert transf.conversion_factors[self.bus][6] == 2 + assert converter.conversion_factors[self.bus][6] == 2 def test_sequence_conversion_factor_from_list_correct_length(self): - transf = solph.components.Converter( + converter = solph.components.Converter( inputs={self.bus: solph.flows.Flow()}, outputs={self.bus: solph.flows.Flow()}, conversion_factors={self.bus: [2]}, ) - assert len(transf.conversion_factors[self.bus]) == 1 + assert len(converter.conversion_factors[self.bus]) == 1 def test_sequence_conversion_factor_from_list_wrong_length(self): - transf = solph.components.Converter( + converter = solph.components.Converter( inputs={self.bus: solph.flows.Flow()}, outputs={self.bus: solph.flows.Flow()}, conversion_factors={self.bus: [2]}, ) with pytest.raises(IndexError): - self.a = transf.conversion_factors[self.bus][6] + self.a = converter.conversion_factors[self.bus][6] def test_converter_missing_output_create_empty_dict(self): with pytest.warns(SuspiciousUsageWarning): - trfr = solph.components.Converter(inputs={}) - assert trfr.outputs == {} + converter = solph.components.Converter(inputs={}) + assert converter.outputs == {} def test_converter_missing_input_create_empty_dict(self): with pytest.warns(SuspiciousUsageWarning): - trfr = solph.components.Converter(outputs={}) - assert trfr.inputs == {} + converter = solph.components.Converter(outputs={}) + assert converter.inputs == {} def test_transformer_wrapper(): + # two warnings: Wrapper and no inputs/outputs with pytest.warns(FutureWarning): - # no inputs/outputs with pytest.warns(SuspiciousUsageWarning): solph.components.Transformer() From c5a62ed204ec4eb42e67daa7b18196a0fdb0c601 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Sch=C3=B6nfeldt?= Date: Tue, 20 Aug 2024 15:31:34 +0200 Subject: [PATCH 54/54] Remove internal discounting for nonconvex properties --- .../solph/flows/_non_convex_flow_block.py | 100 ++----- tests/lp_files/activity_costs_multi_period.lp | 160 ----------- .../lp_files/inactivity_costs_multi_period.lp | 162 ----------- .../lp_files/min_max_runtime_multi_period.lp | 271 ------------------ tests/multi_period_constraint_tests.py | 64 ----- 5 files changed, 28 insertions(+), 729 deletions(-) delete mode 100644 tests/lp_files/activity_costs_multi_period.lp delete mode 100644 tests/lp_files/inactivity_costs_multi_period.lp delete mode 100644 tests/lp_files/min_max_runtime_multi_period.lp diff --git a/src/oemof/solph/flows/_non_convex_flow_block.py b/src/oemof/solph/flows/_non_convex_flow_block.py index aa1cf457c..88eb76850 100644 --- a/src/oemof/solph/flows/_non_convex_flow_block.py +++ b/src/oemof/solph/flows/_non_convex_flow_block.py @@ -325,24 +325,13 @@ def _startup_costs(self): if self.STARTUPFLOWS: m = self.parent_block() - if m.es.periods is None: - for i, o in self.STARTUPFLOWS: - if m.flows[i, o].nonconvex.startup_costs[0] is not None: - startup_costs += sum( - self.startup[i, o, t] - * m.flows[i, o].nonconvex.startup_costs[t] - for t in m.TIMESTEPS - ) - else: - for i, o in self.STARTUPFLOWS: - if m.flows[i, o].nonconvex.startup_costs[0] is not None: - startup_costs += sum( - self.startup[i, o, t] - * m.flows[i, o].nonconvex.startup_costs[t] - * m.objective_weighting[t] - * ((1 + m.discount_rate) ** -m.es.periods_years[p]) - for p, t in m.TIMEINDEX - ) + for i, o in self.STARTUPFLOWS: + if m.flows[i, o].nonconvex.startup_costs[0] is not None: + startup_costs += sum( + self.startup[i, o, t] + * m.flows[i, o].nonconvex.startup_costs[t] + for t in m.TIMESTEPS + ) self.startup_costs = Expression(expr=startup_costs) @@ -359,24 +348,13 @@ def _shutdown_costs(self): if self.SHUTDOWNFLOWS: m = self.parent_block() - if m.es.periods is None: - for i, o in self.SHUTDOWNFLOWS: - if m.flows[i, o].nonconvex.shutdown_costs[0] is not None: - shutdown_costs += sum( - self.shutdown[i, o, t] - * m.flows[i, o].nonconvex.shutdown_costs[t] - for t in m.TIMESTEPS - ) - else: - for i, o in self.SHUTDOWNFLOWS: - if m.flows[i, o].nonconvex.shutdown_costs[0] is not None: - shutdown_costs += sum( - self.shutdown[i, o, t] - * m.flows[i, o].nonconvex.shutdown_costs[t] - * m.objective_weighting[t] - * ((1 + m.discount_rate) ** -m.es.periods_years[p]) - for p, t in m.TIMEINDEX - ) + for i, o in self.SHUTDOWNFLOWS: + if m.flows[i, o].nonconvex.shutdown_costs[0] is not None: + shutdown_costs += sum( + self.shutdown[i, o, t] + * m.flows[i, o].nonconvex.shutdown_costs[t] + for t in m.TIMESTEPS + ) self.shutdown_costs = Expression(expr=shutdown_costs) @@ -393,24 +371,13 @@ def _activity_costs(self): if self.ACTIVITYCOSTFLOWS: m = self.parent_block() - if m.es.periods is None: - for i, o in self.ACTIVITYCOSTFLOWS: - if m.flows[i, o].nonconvex.activity_costs[0] is not None: - activity_costs += sum( - self.status[i, o, t] - * m.flows[i, o].nonconvex.activity_costs[t] - for t in m.TIMESTEPS - ) - else: - for i, o in self.ACTIVITYCOSTFLOWS: - if m.flows[i, o].nonconvex.activity_costs[0] is not None: - activity_costs += sum( - self.status[i, o, t] - * m.flows[i, o].nonconvex.activity_costs[t] - * m.objective_weighting[t] - * ((1 + m.discount_rate) ** -m.es.periods_years[p]) - for p, t in m.TIMEINDEX - ) + for i, o in self.ACTIVITYCOSTFLOWS: + if m.flows[i, o].nonconvex.activity_costs[0] is not None: + activity_costs += sum( + self.status[i, o, t] + * m.flows[i, o].nonconvex.activity_costs[t] + for t in m.TIMESTEPS + ) self.activity_costs = Expression(expr=activity_costs) @@ -427,24 +394,13 @@ def _inactivity_costs(self): if self.INACTIVITYCOSTFLOWS: m = self.parent_block() - if m.es.periods is None: - for i, o in self.INACTIVITYCOSTFLOWS: - if m.flows[i, o].nonconvex.inactivity_costs[0] is not None: - inactivity_costs += sum( - (1 - self.status[i, o, t]) - * m.flows[i, o].nonconvex.inactivity_costs[t] - for t in m.TIMESTEPS - ) - else: - for i, o in self.INACTIVITYCOSTFLOWS: - if m.flows[i, o].nonconvex.inactivity_costs[0] is not None: - inactivity_costs += sum( - (1 - self.status[i, o, t]) - * m.flows[i, o].nonconvex.inactivity_costs[t] - * m.objective_weighting[t] - * ((1 + m.discount_rate) ** -m.es.periods_years[p]) - for p, t in m.TIMEINDEX - ) + for i, o in self.INACTIVITYCOSTFLOWS: + if m.flows[i, o].nonconvex.inactivity_costs[0] is not None: + inactivity_costs += sum( + (1 - self.status[i, o, t]) + * m.flows[i, o].nonconvex.inactivity_costs[t] + for t in m.TIMESTEPS + ) self.inactivity_costs = Expression(expr=inactivity_costs) diff --git a/tests/lp_files/activity_costs_multi_period.lp b/tests/lp_files/activity_costs_multi_period.lp deleted file mode 100644 index ee364020e..000000000 --- a/tests/lp_files/activity_costs_multi_period.lp +++ /dev/null @@ -1,160 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+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) -+1.9607843137254901 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_3) -+1.9223375624759707 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_4) -+1.9223375624759707 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_5) - -s.t. - -c_e_BusBlock_balance(Bus_C_0)_: -+1 flow(cheap_plant_activity_costs_Bus_C_0) -= 0 - -c_e_BusBlock_balance(Bus_C_1)_: -+1 flow(cheap_plant_activity_costs_Bus_C_1) -= 0 - -c_e_BusBlock_balance(Bus_C_2)_: -+1 flow(cheap_plant_activity_costs_Bus_C_2) -= 0 - -c_e_BusBlock_balance(Bus_C_3)_: -+1 flow(cheap_plant_activity_costs_Bus_C_3) -= 0 - -c_e_BusBlock_balance(Bus_C_4)_: -+1 flow(cheap_plant_activity_costs_Bus_C_4) -= 0 - -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)_: --10 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_0) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_0) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_C_1)_: --10 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_1) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_C_2)_: --10 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_2) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_C_3)_: --10 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_3) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_3) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_C_4)_: --10 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_4) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_4) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_activity_costs_Bus_C_5)_: --10 NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_5) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_5) -= 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_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_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_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_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_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)_: -+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_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_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_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_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_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) <= 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 - 0 <= NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_3) <= 1 - 0 <= NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_4) <= 1 - 0 <= NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_5) <= 1 - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_0) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_1) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_2) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_3) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_4) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_activity_costs_Bus_C_5) <= +inf -binary - NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_0) - NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_1) - NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_2) - NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_3) - NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_4) - NonConvexFlowBlock_status(cheap_plant_activity_costs_Bus_C_5) -end diff --git a/tests/lp_files/inactivity_costs_multi_period.lp b/tests/lp_files/inactivity_costs_multi_period.lp deleted file mode 100644 index 532b6b432..000000000 --- a/tests/lp_files/inactivity_costs_multi_period.lp +++ /dev/null @@ -1,162 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+11.766243752402922 ONE_VAR_CONSTANT -+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) --1.9607843137254901 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_3) --1.9223375624759707 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_4) --1.9223375624759707 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_5) - -s.t. - -c_e_BusBlock_balance(Bus_C_0)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_0) -= 0 - -c_e_BusBlock_balance(Bus_C_1)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_1) -= 0 - -c_e_BusBlock_balance(Bus_C_2)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_2) -= 0 - -c_e_BusBlock_balance(Bus_C_3)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_3) -= 0 - -c_e_BusBlock_balance(Bus_C_4)_: -+1 flow(cheap_plant_inactivity_costs_Bus_C_4) -= 0 - -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)_: --10 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_0) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_0) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bus_C_1)_: --10 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_1) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_1) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bus_C_2)_: --10 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_2) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bus_C_3)_: --10 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_3) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_3) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bus_C_4)_: --10 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_4) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_4) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_inactivity_costs_Bus_C_5)_: --10 NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_5) -+1 NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_5) -= 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_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_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_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_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_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)_: -+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_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_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_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_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_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) <= 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 - 0 <= NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_3) <= 1 - 0 <= NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_4) <= 1 - 0 <= NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_5) <= 1 - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_0) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_1) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_2) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_3) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_4) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_inactivity_costs_Bus_C_5) <= +inf -binary - NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_0) - NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_1) - NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_2) - NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_3) - NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_4) - NonConvexFlowBlock_status(cheap_plant_inactivity_costs_Bus_C_5) -end diff --git a/tests/lp_files/min_max_runtime_multi_period.lp b/tests/lp_files/min_max_runtime_multi_period.lp deleted file mode 100644 index 61be72293..000000000 --- a/tests/lp_files/min_max_runtime_multi_period.lp +++ /dev/null @@ -1,271 +0,0 @@ -\* Source Pyomo model name=Model *\ - -min -objective: -+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) -+4.901960784313725 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_3) -+4.805843906189927 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_4) -+4.805843906189927 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_5) -+7 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_0) -+7 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_1) -+6.862745098039215 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_2) -+6.862745098039215 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_3) -+6.728181468665897 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_4) -+6.728181468665897 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_5) - -s.t. - -c_e_BusBlock_balance(Bus_T_0)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_0) -= 0 - -c_e_BusBlock_balance(Bus_T_1)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_1) -= 0 - -c_e_BusBlock_balance(Bus_T_2)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_2) -= 0 - -c_e_BusBlock_balance(Bus_T_3)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_3) -= 0 - -c_e_BusBlock_balance(Bus_T_4)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_4) -= 0 - -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)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_0) -= 10 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraints_Bus_T_1)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_1) -= 10 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraints_Bus_T_2)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_2) --10 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraints_Bus_T_3)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_3) --10 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraints_Bus_T_4)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_4) --10 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) -= 0 - -c_e_NonConvexFlowBlock_status_nominal_constraint(cheap_plant_min_down_constraints_Bus_T_5)_: -+1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_5) --10 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_5) -= 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_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_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_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_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_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)_: -+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_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_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_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_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_5)_: -+1 flow(cheap_plant_min_down_constraints_Bus_T_5) --1 NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_5) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_min_down_constraints_Bus_T_0)_: --1 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_0) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_min_down_constraints_Bus_T_1)_: --1 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_1) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_min_down_constraints_Bus_T_2)_: --1 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_2) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) -<= 1 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_min_down_constraints_Bus_T_3)_: --1 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_3) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_min_down_constraints_Bus_T_4)_: --1 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_4) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) -<= 0 - -c_u_NonConvexFlowBlock_startup_constr(cheap_plant_min_down_constraints_Bus_T_5)_: --1 NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_5) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_5) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_min_down_constraints_Bus_T_0)_: --1 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_0) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_min_down_constraints_Bus_T_1)_: --1 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_1) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_min_down_constraints_Bus_T_2)_: --1 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_2) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) -<= -1 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_min_down_constraints_Bus_T_3)_: --1 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_3) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_min_down_constraints_Bus_T_4)_: --1 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_4) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) -<= 0 - -c_u_NonConvexFlowBlock_shutdown_constr(cheap_plant_min_down_constraints_Bus_T_5)_: --1 NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_5) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_5) -<= 0 - -c_u_NonConvexFlowBlock_min_uptime_constr(cheap_plant_min_down_constraints_Bus_T_3)_: --2 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) -<= 0 - -c_u_NonConvexFlowBlock_min_uptime_constr(cheap_plant_min_down_constraints_Bus_T_4)_: --2 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) --1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_5) -<= 0 - -c_u_NonConvexFlowBlock_min_downtime_constr(cheap_plant_min_down_constraints_Bus_T_3)_: -+4 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) --3 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_5) -<= 4 - -c_u_NonConvexFlowBlock_min_downtime_constr(cheap_plant_min_down_constraints_Bus_T_4)_: -+4 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) --3 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) -+1 NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_5) -<= 4 - -bounds - 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 - 0 <= NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_3) <= 1 - 0 <= NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_4) <= 1 - 0 <= NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_5) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_0) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_1) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_2) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_3) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_4) <= 1 - 0 <= NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_5) <= 1 - 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_nominal(cheap_plant_min_down_constraints_Bus_T_3) <= +inf - 0 <= NonConvexFlowBlock_status_nominal(cheap_plant_min_down_constraints_Bus_T_4) <= +inf - 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) - NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_1) - NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_2) - NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_3) - NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_4) - NonConvexFlowBlock_startup(cheap_plant_min_down_constraints_Bus_T_5) - NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_0) - NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_1) - NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_2) - NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_3) - NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_4) - NonConvexFlowBlock_shutdown(cheap_plant_min_down_constraints_Bus_T_5) - NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_2) - NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_3) - NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_4) - NonConvexFlowBlock_status(cheap_plant_min_down_constraints_Bus_T_5) -end diff --git a/tests/multi_period_constraint_tests.py b/tests/multi_period_constraint_tests.py index 16a77d5d4..e555aee22 100644 --- a/tests/multi_period_constraint_tests.py +++ b/tests/multi_period_constraint_tests.py @@ -1385,70 +1385,6 @@ def test_periodical_investment_limit_missing(self): with pytest.raises(ValueError, match=msg): solph.constraints.investment_limit_per_period(om, limit=None) - def test_min_max_runtime(self): - """Testing min and max runtimes for nonconvex flows.""" - bus_t = solph.buses.Bus(label="Bus_T") - source = solph.components.Source( - label="cheap_plant_min_down_constraints", - outputs={ - bus_t: solph.flows.Flow( - nominal_value=10, - min=0.5, - max=1.0, - variable_costs=10, - nonconvex=solph.NonConvex( - minimum_downtime=4, - minimum_uptime=2, - initial_status=1, - startup_costs=5, - shutdown_costs=7, - ), - ) - }, - ) - self.energysystem.add(bus_t, source) - self.compare_lp_files("min_max_runtime_multi_period.lp") - - def test_activity_costs(self): - """Testing activity_costs attribute for nonconvex flows.""" - bus_t = solph.buses.Bus(label="Bus_C") - source = solph.components.Source( - label="cheap_plant_activity_costs", - outputs={ - bus_t: solph.flows.Flow( - nominal_value=10, - min=0.5, - max=1.0, - variable_costs=10, - nonconvex=solph.NonConvex( - activity_costs=2, - ), - ) - }, - ) - self.energysystem.add(bus_t, source) - self.compare_lp_files("activity_costs_multi_period.lp") - - def test_inactivity_costs(self): - """Testing inactivity_costs attribute for nonconvex flows.""" - bus_t = solph.buses.Bus(label="Bus_C") - source = solph.components.Source( - label="cheap_plant_inactivity_costs", - outputs={ - bus_t: solph.flows.Flow( - nominal_value=10, - min=0.5, - max=1.0, - variable_costs=10, - nonconvex=solph.NonConvex( - inactivity_costs=2, - ), - ) - }, - ) - self.energysystem.add(bus_t, source) - self.compare_lp_files("inactivity_costs_multi_period.lp") - def test_piecewise_linear_converter_cc(self): """Testing PiecewiseLinearConverter using CC formulation.""" bgas = solph.buses.Bus(label="gasBus")