diff --git a/.github/workflows/push_branch_test.yml b/.github/workflows/test_branches.yml similarity index 99% rename from .github/workflows/push_branch_test.yml rename to .github/workflows/test_branches.yml index 84f9211..d3d4bb3 100644 --- a/.github/workflows/push_branch_test.yml +++ b/.github/workflows/test_branches.yml @@ -3,7 +3,7 @@ name: GitHub Branch CI on: push: branches-ignore: - - master + - main workflow_dispatch: inputs: git-ref: diff --git a/.github/workflows/pr_master_test.yml b/.github/workflows/test_pr_main.yml similarity index 99% rename from .github/workflows/pr_master_test.yml rename to .github/workflows/test_pr_main.yml index 995f7c7..69ec1a6 100644 --- a/.github/workflows/pr_master_test.yml +++ b/.github/workflows/test_pr_main.yml @@ -3,10 +3,10 @@ name: GitHub CI on: push: branches: - - master + - main pull_request: branches: - - master + - main workflow_dispatch: inputs: git-ref: diff --git a/README.md b/README.md index 632dc4b..b1463e3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![Github Actions Status](https://github.com/Pyomo/pysp/workflows/GitHub%20CI/badge.svg?event=push)](https://github.com/Pyomo/pysp/actions?query=event%3Apush+workflow%3A%22GitHub+CI%22) [![Jenkins Status](https://img.shields.io/jenkins/s/https/software.sandia.gov/downloads/pub/pyomo/jenkins/PySP_trunk.svg?logo=jenkins&logoColor=white)](https://jenkins-srn.sandia.gov/job/Pyomo_pysp_trunk) -[![codecov](https://codecov.io/gh/Pyomo/pysp/branch/master/graph/badge.svg)](https://codecov.io/gh/Pyomo/pysp) +[![codecov](https://codecov.io/gh/Pyomo/pysp/branch/main/graph/badge.svg)](https://codecov.io/gh/Pyomo/pysp) [![GitHub contributors](https://img.shields.io/github/contributors/pyomo/pysp.svg)](https://github.com/pyomo/pysp/graphs/contributors) [![Merged PRs](https://img.shields.io/github/issues-pr-closed-raw/pyomo/pysp.svg?label=merged+PRs)](https://github.com/pyomo/pysp/pulls?q=is:pr+is:merged) diff --git a/examples/networkx_scenariotree/ReferenceModel.py b/examples/networkx_scenariotree/ReferenceModel.py index 711ac1f..d51bab3 100644 --- a/examples/networkx_scenariotree/ReferenceModel.py +++ b/examples/networkx_scenariotree/ReferenceModel.py @@ -32,7 +32,7 @@ def pysp_instance_creation_callback(scenario_name, node_names): model.SecondStageCost.expr = (model.xu0 - 1)**2 model.y0 = aml.Var() - model.c.add(expr= -10 <= model.y0 <= 10) + model.c.add(expr= aml.inequality(-10, model.y0, 10)) if scenario_name == "u00": model.yu00 = aml.Var() model.c.add(model.yu00 == model.y0) @@ -50,7 +50,7 @@ def pysp_instance_creation_callback(scenario_name, node_names): model.SecondStageCost.expr = (model.xu1 + 1)**2 model.y1 = aml.Var() - model.c.add(expr= -10 <= model.y1 <= 10) + model.c.add(expr= aml.inequality(-10, model.y1, 10)) if scenario_name == "u10": model.yu10 = aml.Var() model.c.add(model.yu10 == model.y1) @@ -68,7 +68,7 @@ def pysp_instance_creation_callback(scenario_name, node_names): model.SecondStageCost.expr = (model.xu2 - 0.5)**2 model.y2 = aml.Var() - model.c.add(expr= -10 <= model.y2 <= 10) + model.c.add(expr= aml.inequality(-10, model.y2, 10)) if scenario_name == "u20": model.yu20 = aml.Var() model.c.add(model.yu20 == model.y2) diff --git a/pysp/scenariotree/__init__.py b/pysp/scenariotree/__init__.py index 7e36c82..a78c1f7 100644 --- a/pysp/scenariotree/__init__.py +++ b/pysp/scenariotree/__init__.py @@ -19,6 +19,8 @@ ComponentUID) from pyomo.core.base.sos import _SOSConstraintData from pyomo.repn import generate_standard_repn +from pyomo.scripting.interface import IPyomoScriptModifyInstance + from pysp.phutils import (BasicSymbolMap, indexToString, isVariableNameIndexed, @@ -32,7 +34,6 @@ ScenarioTreeBundle, ScenarioTree) from pysp.scenariotree.instance_factory import (DataPortal, Block, - IPyomoScriptModifyInstance, AbstractModel, _BlockData, ExtensionPoint, load_external_module, diff --git a/pysp/scenariotree/instance_factory.py b/pysp/scenariotree/instance_factory.py index 9d07ea3..d81df32 100644 --- a/pysp/scenariotree/instance_factory.py +++ b/pysp/scenariotree/instance_factory.py @@ -22,12 +22,12 @@ from pyomo.dataportal import DataPortal from pyomo.core import (Block, - IPyomoScriptModifyInstance, AbstractModel) from pyomo.core.base.block import _BlockData from pyomo.common.dependencies import yaml, yaml_available, yaml_load_args from pyomo.common.gc_manager import PauseGC from pyomo.common.plugin import ExtensionPoint +from pyomo.scripting.interface import IPyomoScriptModifyInstance from pysp.util.misc import load_external_module from pysp.scenariotree.tree_structure_model import \ (CreateAbstractScenarioTreeModel, diff --git a/pysp/tests/convert/test_ddsip.py b/pysp/tests/convert/test_ddsip.py index 2b9e353..2f37f91 100644 --- a/pysp/tests/convert/test_ddsip.py +++ b/pysp/tests/convert/test_ddsip.py @@ -145,7 +145,7 @@ def test_bad_component_type(self): b"TypeError: Declarations " b"in annotation type StochasticConstraintBodyAnnotation " b"must be of types Constraint or Block. Invalid type: " - b"") + b"") shutil.rmtree(output_dir, ignore_errors=True) os.remove(outfile) diff --git a/pysp/tests/convert/test_smps.py b/pysp/tests/convert/test_smps.py index a890e5f..91c1252 100644 --- a/pysp/tests/convert/test_smps.py +++ b/pysp/tests/convert/test_smps.py @@ -177,7 +177,7 @@ def test_bad_component_type(self): b"TypeError: Declarations " b"in annotation type StochasticConstraintBodyAnnotation " b"must be of types Constraint or Block. Invalid type: " - b"") + b"") shutil.rmtree(output_dir, ignore_errors=True) os.remove(outfile) diff --git a/pysp/tests/unit/baselines/farmer_ef.baseline.lp b/pysp/tests/unit/baselines/farmer_ef.baseline.lp index 0ac0036..1e14e59 100644 --- a/pysp/tests/unit/baselines/farmer_ef.baseline.lp +++ b/pysp/tests/unit/baselines/farmer_ef.baseline.lp @@ -37,47 +37,47 @@ s.t. c_e_MASTER_BLEND_CONSTRAINT_RootNode(1)_: -1 BelowAverageScenario_DevotedAcreage(CORN) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__CORN) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__CORN_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(2)_: -1 AverageScenario_DevotedAcreage(CORN) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__CORN) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__CORN_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(3)_: -1 AboveAverageScenario_DevotedAcreage(CORN) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__CORN) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__CORN_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(4)_: -1 BelowAverageScenario_DevotedAcreage(SUGAR_BEETS) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__SUGAR_BEETS) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__SUGAR_BEETS_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(5)_: -1 AverageScenario_DevotedAcreage(SUGAR_BEETS) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__SUGAR_BEETS) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__SUGAR_BEETS_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(6)_: -1 AboveAverageScenario_DevotedAcreage(SUGAR_BEETS) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__SUGAR_BEETS) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__SUGAR_BEETS_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(7)_: -1 BelowAverageScenario_DevotedAcreage(WHEAT) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__WHEAT) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__WHEAT_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(8)_: -1 AverageScenario_DevotedAcreage(WHEAT) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__WHEAT) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__WHEAT_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(9)_: -1 AboveAverageScenario_DevotedAcreage(WHEAT) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__WHEAT) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__WHEAT_) = 0 c_u_BelowAverageScenario_ConstrainTotalAcreage_: @@ -291,9 +291,9 @@ c_e_ONE_VAR_CONSTANT: ONE_VAR_CONSTANT = 1.0 bounds - -inf <= MASTER_BLEND_VAR_RootNode(DevotedAcreage__CORN) <= +inf - -inf <= MASTER_BLEND_VAR_RootNode(DevotedAcreage__SUGAR_BEETS) <= +inf - -inf <= MASTER_BLEND_VAR_RootNode(DevotedAcreage__WHEAT) <= +inf + -inf <= MASTER_BLEND_VAR_RootNode(_DevotedAcreage__CORN_) <= +inf + -inf <= MASTER_BLEND_VAR_RootNode(_DevotedAcreage__SUGAR_BEETS_) <= +inf + -inf <= MASTER_BLEND_VAR_RootNode(_DevotedAcreage__WHEAT_) <= +inf 0 <= BelowAverageScenario_DevotedAcreage(CORN) <= 500 0 <= BelowAverageScenario_DevotedAcreage(SUGAR_BEETS) <= 500 0 <= BelowAverageScenario_DevotedAcreage(WHEAT) <= 500 diff --git a/pysp/tests/unit/baselines/farmer_ef_cvar.baseline.lp b/pysp/tests/unit/baselines/farmer_ef_cvar.baseline.lp index 06c3a0c..6fa8799 100644 --- a/pysp/tests/unit/baselines/farmer_ef_cvar.baseline.lp +++ b/pysp/tests/unit/baselines/farmer_ef_cvar.baseline.lp @@ -57,47 +57,47 @@ c_l_COMPUTE_SCENARIO_EXCESS(3)_: c_e_MASTER_BLEND_CONSTRAINT_RootNode(1)_: -1 BelowAverageScenario_DevotedAcreage(CORN) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__CORN) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__CORN_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(2)_: -1 AverageScenario_DevotedAcreage(CORN) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__CORN) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__CORN_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(3)_: -1 AboveAverageScenario_DevotedAcreage(CORN) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__CORN) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__CORN_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(4)_: -1 BelowAverageScenario_DevotedAcreage(SUGAR_BEETS) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__SUGAR_BEETS) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__SUGAR_BEETS_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(5)_: -1 AverageScenario_DevotedAcreage(SUGAR_BEETS) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__SUGAR_BEETS) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__SUGAR_BEETS_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(6)_: -1 AboveAverageScenario_DevotedAcreage(SUGAR_BEETS) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__SUGAR_BEETS) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__SUGAR_BEETS_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(7)_: -1 BelowAverageScenario_DevotedAcreage(WHEAT) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__WHEAT) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__WHEAT_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(8)_: -1 AverageScenario_DevotedAcreage(WHEAT) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__WHEAT) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__WHEAT_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(9)_: -1 AboveAverageScenario_DevotedAcreage(WHEAT) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__WHEAT) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__WHEAT_) = 0 c_u_BelowAverageScenario_ConstrainTotalAcreage_: @@ -315,9 +315,9 @@ bounds 0 <= CVAR_EXCESS_BelowAverageScenario <= +inf 0 <= CVAR_EXCESS_AverageScenario <= +inf 0 <= CVAR_EXCESS_AboveAverageScenario <= +inf - -inf <= MASTER_BLEND_VAR_RootNode(DevotedAcreage__CORN) <= +inf - -inf <= MASTER_BLEND_VAR_RootNode(DevotedAcreage__SUGAR_BEETS) <= +inf - -inf <= MASTER_BLEND_VAR_RootNode(DevotedAcreage__WHEAT) <= +inf + -inf <= MASTER_BLEND_VAR_RootNode(_DevotedAcreage__CORN_) <= +inf + -inf <= MASTER_BLEND_VAR_RootNode(_DevotedAcreage__SUGAR_BEETS_) <= +inf + -inf <= MASTER_BLEND_VAR_RootNode(_DevotedAcreage__WHEAT_) <= +inf 0 <= BelowAverageScenario_DevotedAcreage(CORN) <= 500 0 <= BelowAverageScenario_DevotedAcreage(SUGAR_BEETS) <= 500 0 <= BelowAverageScenario_DevotedAcreage(WHEAT) <= 500 diff --git a/pysp/tests/unit/baselines/farmer_maximize_ef.baseline.lp b/pysp/tests/unit/baselines/farmer_maximize_ef.baseline.lp index a4e528c..f25ae8f 100644 --- a/pysp/tests/unit/baselines/farmer_maximize_ef.baseline.lp +++ b/pysp/tests/unit/baselines/farmer_maximize_ef.baseline.lp @@ -13,47 +13,47 @@ s.t. c_e_MASTER_BLEND_CONSTRAINT_RootNode(1)_: -1 BelowAverageScenario_DevotedAcreage(CORN) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__CORN) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__CORN_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(2)_: -1 AverageScenario_DevotedAcreage(CORN) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__CORN) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__CORN_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(3)_: -1 AboveAverageScenario_DevotedAcreage(CORN) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__CORN) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__CORN_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(4)_: -1 BelowAverageScenario_DevotedAcreage(SUGAR_BEETS) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__SUGAR_BEETS) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__SUGAR_BEETS_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(5)_: -1 AverageScenario_DevotedAcreage(SUGAR_BEETS) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__SUGAR_BEETS) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__SUGAR_BEETS_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(6)_: -1 AboveAverageScenario_DevotedAcreage(SUGAR_BEETS) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__SUGAR_BEETS) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__SUGAR_BEETS_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(7)_: -1 BelowAverageScenario_DevotedAcreage(WHEAT) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__WHEAT) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__WHEAT_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(8)_: -1 AverageScenario_DevotedAcreage(WHEAT) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__WHEAT) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__WHEAT_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(9)_: -1 AboveAverageScenario_DevotedAcreage(WHEAT) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__WHEAT) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__WHEAT_) = 0 c_u_BelowAverageScenario_ConstrainTotalAcreage_: @@ -321,9 +321,9 @@ c_e_ONE_VAR_CONSTANT: ONE_VAR_CONSTANT = 1.0 bounds - -inf <= MASTER_BLEND_VAR_RootNode(DevotedAcreage__CORN) <= +inf - -inf <= MASTER_BLEND_VAR_RootNode(DevotedAcreage__SUGAR_BEETS) <= +inf - -inf <= MASTER_BLEND_VAR_RootNode(DevotedAcreage__WHEAT) <= +inf + -inf <= MASTER_BLEND_VAR_RootNode(_DevotedAcreage__CORN_) <= +inf + -inf <= MASTER_BLEND_VAR_RootNode(_DevotedAcreage__SUGAR_BEETS_) <= +inf + -inf <= MASTER_BLEND_VAR_RootNode(_DevotedAcreage__WHEAT_) <= +inf 0 <= BelowAverageScenario_DevotedAcreage(CORN) <= 500 0 <= BelowAverageScenario_DevotedAcreage(SUGAR_BEETS) <= 500 0 <= BelowAverageScenario_DevotedAcreage(WHEAT) <= 500 diff --git a/pysp/tests/unit/baselines/farmer_piecewise_ef.baseline.lp b/pysp/tests/unit/baselines/farmer_piecewise_ef.baseline.lp index 98b82e4..2945aeb 100644 --- a/pysp/tests/unit/baselines/farmer_piecewise_ef.baseline.lp +++ b/pysp/tests/unit/baselines/farmer_piecewise_ef.baseline.lp @@ -13,47 +13,47 @@ s.t. c_e_MASTER_BLEND_CONSTRAINT_RootNode(1)_: -1 BelowAverageScenario_DevotedAcreage(CORN) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__CORN) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__CORN_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(2)_: -1 AverageScenario_DevotedAcreage(CORN) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__CORN) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__CORN_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(3)_: -1 AboveAverageScenario_DevotedAcreage(CORN) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__CORN) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__CORN_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(4)_: -1 BelowAverageScenario_DevotedAcreage(SUGAR_BEETS) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__SUGAR_BEETS) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__SUGAR_BEETS_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(5)_: -1 AverageScenario_DevotedAcreage(SUGAR_BEETS) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__SUGAR_BEETS) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__SUGAR_BEETS_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(6)_: -1 AboveAverageScenario_DevotedAcreage(SUGAR_BEETS) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__SUGAR_BEETS) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__SUGAR_BEETS_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(7)_: -1 BelowAverageScenario_DevotedAcreage(WHEAT) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__WHEAT) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__WHEAT_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(8)_: -1 AverageScenario_DevotedAcreage(WHEAT) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__WHEAT) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__WHEAT_) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(9)_: -1 AboveAverageScenario_DevotedAcreage(WHEAT) -+1 MASTER_BLEND_VAR_RootNode(DevotedAcreage__WHEAT) ++1 MASTER_BLEND_VAR_RootNode(_DevotedAcreage__WHEAT_) = 0 c_u_BelowAverageScenario_ConstrainTotalAcreage_: @@ -390,9 +390,9 @@ c_e_ONE_VAR_CONSTANT: ONE_VAR_CONSTANT = 1.0 bounds - -inf <= MASTER_BLEND_VAR_RootNode(DevotedAcreage__CORN) <= +inf - -inf <= MASTER_BLEND_VAR_RootNode(DevotedAcreage__SUGAR_BEETS) <= +inf - -inf <= MASTER_BLEND_VAR_RootNode(DevotedAcreage__WHEAT) <= +inf + -inf <= MASTER_BLEND_VAR_RootNode(_DevotedAcreage__CORN_) <= +inf + -inf <= MASTER_BLEND_VAR_RootNode(_DevotedAcreage__SUGAR_BEETS_) <= +inf + -inf <= MASTER_BLEND_VAR_RootNode(_DevotedAcreage__WHEAT_) <= +inf 0 <= BelowAverageScenario_DevotedAcreage(CORN) <= 500 0 <= BelowAverageScenario_DevotedAcreage(SUGAR_BEETS) <= 500 0 <= BelowAverageScenario_DevotedAcreage(WHEAT) <= 500 diff --git a/pysp/tests/unit/baselines/hydro_ef.baseline.lp b/pysp/tests/unit/baselines/hydro_ef.baseline.lp index 8340526..ebd0fab 100644 --- a/pysp/tests/unit/baselines/hydro_ef.baseline.lp +++ b/pysp/tests/unit/baselines/hydro_ef.baseline.lp @@ -33,362 +33,362 @@ MASTER: s.t. c_e_MASTER_BLEND_CONSTRAINT_RootNode(1)_: -+1 MASTER_BLEND_VAR_RootNode(PDns__1) ++1 MASTER_BLEND_VAR_RootNode(_PDns__1_) -1 Scen1_PDns(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(2)_: -+1 MASTER_BLEND_VAR_RootNode(PDns__1) ++1 MASTER_BLEND_VAR_RootNode(_PDns__1_) -1 Scen2_PDns(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(3)_: -+1 MASTER_BLEND_VAR_RootNode(PDns__1) ++1 MASTER_BLEND_VAR_RootNode(_PDns__1_) -1 Scen3_PDns(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(4)_: -+1 MASTER_BLEND_VAR_RootNode(PDns__1) ++1 MASTER_BLEND_VAR_RootNode(_PDns__1_) -1 Scen4_PDns(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(5)_: -+1 MASTER_BLEND_VAR_RootNode(PDns__1) ++1 MASTER_BLEND_VAR_RootNode(_PDns__1_) -1 Scen5_PDns(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(6)_: -+1 MASTER_BLEND_VAR_RootNode(PDns__1) ++1 MASTER_BLEND_VAR_RootNode(_PDns__1_) -1 Scen6_PDns(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(7)_: -+1 MASTER_BLEND_VAR_RootNode(PDns__1) ++1 MASTER_BLEND_VAR_RootNode(_PDns__1_) -1 Scen7_PDns(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(8)_: -+1 MASTER_BLEND_VAR_RootNode(PDns__1) ++1 MASTER_BLEND_VAR_RootNode(_PDns__1_) -1 Scen8_PDns(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(9)_: -+1 MASTER_BLEND_VAR_RootNode(PDns__1) ++1 MASTER_BLEND_VAR_RootNode(_PDns__1_) -1 Scen9_PDns(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(10)_: -+1 MASTER_BLEND_VAR_RootNode(Pgh__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgh__1_) -1 Scen1_Pgh(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(11)_: -+1 MASTER_BLEND_VAR_RootNode(Pgh__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgh__1_) -1 Scen2_Pgh(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(12)_: -+1 MASTER_BLEND_VAR_RootNode(Pgh__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgh__1_) -1 Scen3_Pgh(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(13)_: -+1 MASTER_BLEND_VAR_RootNode(Pgh__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgh__1_) -1 Scen4_Pgh(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(14)_: -+1 MASTER_BLEND_VAR_RootNode(Pgh__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgh__1_) -1 Scen5_Pgh(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(15)_: -+1 MASTER_BLEND_VAR_RootNode(Pgh__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgh__1_) -1 Scen6_Pgh(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(16)_: -+1 MASTER_BLEND_VAR_RootNode(Pgh__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgh__1_) -1 Scen7_Pgh(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(17)_: -+1 MASTER_BLEND_VAR_RootNode(Pgh__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgh__1_) -1 Scen8_Pgh(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(18)_: -+1 MASTER_BLEND_VAR_RootNode(Pgh__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgh__1_) -1 Scen9_Pgh(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(19)_: -+1 MASTER_BLEND_VAR_RootNode(Pgt__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgt__1_) -1 Scen1_Pgt(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(20)_: -+1 MASTER_BLEND_VAR_RootNode(Pgt__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgt__1_) -1 Scen2_Pgt(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(21)_: -+1 MASTER_BLEND_VAR_RootNode(Pgt__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgt__1_) -1 Scen3_Pgt(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(22)_: -+1 MASTER_BLEND_VAR_RootNode(Pgt__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgt__1_) -1 Scen4_Pgt(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(23)_: -+1 MASTER_BLEND_VAR_RootNode(Pgt__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgt__1_) -1 Scen5_Pgt(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(24)_: -+1 MASTER_BLEND_VAR_RootNode(Pgt__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgt__1_) -1 Scen6_Pgt(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(25)_: -+1 MASTER_BLEND_VAR_RootNode(Pgt__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgt__1_) -1 Scen7_Pgt(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(26)_: -+1 MASTER_BLEND_VAR_RootNode(Pgt__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgt__1_) -1 Scen8_Pgt(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(27)_: -+1 MASTER_BLEND_VAR_RootNode(Pgt__1) ++1 MASTER_BLEND_VAR_RootNode(_Pgt__1_) -1 Scen9_Pgt(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(28)_: -+1 MASTER_BLEND_VAR_RootNode(Vol__1) ++1 MASTER_BLEND_VAR_RootNode(_Vol__1_) -1 Scen1_Vol(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(29)_: -+1 MASTER_BLEND_VAR_RootNode(Vol__1) ++1 MASTER_BLEND_VAR_RootNode(_Vol__1_) -1 Scen2_Vol(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(30)_: -+1 MASTER_BLEND_VAR_RootNode(Vol__1) ++1 MASTER_BLEND_VAR_RootNode(_Vol__1_) -1 Scen3_Vol(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(31)_: -+1 MASTER_BLEND_VAR_RootNode(Vol__1) ++1 MASTER_BLEND_VAR_RootNode(_Vol__1_) -1 Scen4_Vol(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(32)_: -+1 MASTER_BLEND_VAR_RootNode(Vol__1) ++1 MASTER_BLEND_VAR_RootNode(_Vol__1_) -1 Scen5_Vol(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(33)_: -+1 MASTER_BLEND_VAR_RootNode(Vol__1) ++1 MASTER_BLEND_VAR_RootNode(_Vol__1_) -1 Scen6_Vol(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(34)_: -+1 MASTER_BLEND_VAR_RootNode(Vol__1) ++1 MASTER_BLEND_VAR_RootNode(_Vol__1_) -1 Scen7_Vol(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(35)_: -+1 MASTER_BLEND_VAR_RootNode(Vol__1) ++1 MASTER_BLEND_VAR_RootNode(_Vol__1_) -1 Scen8_Vol(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_RootNode(36)_: -+1 MASTER_BLEND_VAR_RootNode(Vol__1) ++1 MASTER_BLEND_VAR_RootNode(_Vol__1_) -1 Scen9_Vol(1) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_1(1)_: -+1 MASTER_BLEND_VAR_Node2_1(PDns__2) ++1 MASTER_BLEND_VAR_Node2_1(_PDns__2_) -1 Scen1_PDns(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_1(2)_: -+1 MASTER_BLEND_VAR_Node2_1(PDns__2) ++1 MASTER_BLEND_VAR_Node2_1(_PDns__2_) -1 Scen2_PDns(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_1(3)_: -+1 MASTER_BLEND_VAR_Node2_1(PDns__2) ++1 MASTER_BLEND_VAR_Node2_1(_PDns__2_) -1 Scen3_PDns(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_1(4)_: -+1 MASTER_BLEND_VAR_Node2_1(Pgh__2) ++1 MASTER_BLEND_VAR_Node2_1(_Pgh__2_) -1 Scen1_Pgh(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_1(5)_: -+1 MASTER_BLEND_VAR_Node2_1(Pgh__2) ++1 MASTER_BLEND_VAR_Node2_1(_Pgh__2_) -1 Scen2_Pgh(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_1(6)_: -+1 MASTER_BLEND_VAR_Node2_1(Pgh__2) ++1 MASTER_BLEND_VAR_Node2_1(_Pgh__2_) -1 Scen3_Pgh(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_1(7)_: -+1 MASTER_BLEND_VAR_Node2_1(Pgt__2) ++1 MASTER_BLEND_VAR_Node2_1(_Pgt__2_) -1 Scen1_Pgt(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_1(8)_: -+1 MASTER_BLEND_VAR_Node2_1(Pgt__2) ++1 MASTER_BLEND_VAR_Node2_1(_Pgt__2_) -1 Scen2_Pgt(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_1(9)_: -+1 MASTER_BLEND_VAR_Node2_1(Pgt__2) ++1 MASTER_BLEND_VAR_Node2_1(_Pgt__2_) -1 Scen3_Pgt(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_1(10)_: -+1 MASTER_BLEND_VAR_Node2_1(Vol__2) ++1 MASTER_BLEND_VAR_Node2_1(_Vol__2_) -1 Scen1_Vol(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_1(11)_: -+1 MASTER_BLEND_VAR_Node2_1(Vol__2) ++1 MASTER_BLEND_VAR_Node2_1(_Vol__2_) -1 Scen2_Vol(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_1(12)_: -+1 MASTER_BLEND_VAR_Node2_1(Vol__2) ++1 MASTER_BLEND_VAR_Node2_1(_Vol__2_) -1 Scen3_Vol(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_2(1)_: -+1 MASTER_BLEND_VAR_Node2_2(PDns__2) ++1 MASTER_BLEND_VAR_Node2_2(_PDns__2_) -1 Scen4_PDns(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_2(2)_: -+1 MASTER_BLEND_VAR_Node2_2(PDns__2) ++1 MASTER_BLEND_VAR_Node2_2(_PDns__2_) -1 Scen5_PDns(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_2(3)_: -+1 MASTER_BLEND_VAR_Node2_2(PDns__2) ++1 MASTER_BLEND_VAR_Node2_2(_PDns__2_) -1 Scen6_PDns(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_2(4)_: -+1 MASTER_BLEND_VAR_Node2_2(Pgh__2) ++1 MASTER_BLEND_VAR_Node2_2(_Pgh__2_) -1 Scen4_Pgh(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_2(5)_: -+1 MASTER_BLEND_VAR_Node2_2(Pgh__2) ++1 MASTER_BLEND_VAR_Node2_2(_Pgh__2_) -1 Scen5_Pgh(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_2(6)_: -+1 MASTER_BLEND_VAR_Node2_2(Pgh__2) ++1 MASTER_BLEND_VAR_Node2_2(_Pgh__2_) -1 Scen6_Pgh(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_2(7)_: -+1 MASTER_BLEND_VAR_Node2_2(Pgt__2) ++1 MASTER_BLEND_VAR_Node2_2(_Pgt__2_) -1 Scen4_Pgt(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_2(8)_: -+1 MASTER_BLEND_VAR_Node2_2(Pgt__2) ++1 MASTER_BLEND_VAR_Node2_2(_Pgt__2_) -1 Scen5_Pgt(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_2(9)_: -+1 MASTER_BLEND_VAR_Node2_2(Pgt__2) ++1 MASTER_BLEND_VAR_Node2_2(_Pgt__2_) -1 Scen6_Pgt(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_2(10)_: -+1 MASTER_BLEND_VAR_Node2_2(Vol__2) ++1 MASTER_BLEND_VAR_Node2_2(_Vol__2_) -1 Scen4_Vol(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_2(11)_: -+1 MASTER_BLEND_VAR_Node2_2(Vol__2) ++1 MASTER_BLEND_VAR_Node2_2(_Vol__2_) -1 Scen5_Vol(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_2(12)_: -+1 MASTER_BLEND_VAR_Node2_2(Vol__2) ++1 MASTER_BLEND_VAR_Node2_2(_Vol__2_) -1 Scen6_Vol(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_3(1)_: -+1 MASTER_BLEND_VAR_Node2_3(PDns__2) ++1 MASTER_BLEND_VAR_Node2_3(_PDns__2_) -1 Scen7_PDns(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_3(2)_: -+1 MASTER_BLEND_VAR_Node2_3(PDns__2) ++1 MASTER_BLEND_VAR_Node2_3(_PDns__2_) -1 Scen8_PDns(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_3(3)_: -+1 MASTER_BLEND_VAR_Node2_3(PDns__2) ++1 MASTER_BLEND_VAR_Node2_3(_PDns__2_) -1 Scen9_PDns(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_3(4)_: -+1 MASTER_BLEND_VAR_Node2_3(Pgh__2) ++1 MASTER_BLEND_VAR_Node2_3(_Pgh__2_) -1 Scen7_Pgh(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_3(5)_: -+1 MASTER_BLEND_VAR_Node2_3(Pgh__2) ++1 MASTER_BLEND_VAR_Node2_3(_Pgh__2_) -1 Scen8_Pgh(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_3(6)_: -+1 MASTER_BLEND_VAR_Node2_3(Pgh__2) ++1 MASTER_BLEND_VAR_Node2_3(_Pgh__2_) -1 Scen9_Pgh(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_3(7)_: -+1 MASTER_BLEND_VAR_Node2_3(Pgt__2) ++1 MASTER_BLEND_VAR_Node2_3(_Pgt__2_) -1 Scen7_Pgt(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_3(8)_: -+1 MASTER_BLEND_VAR_Node2_3(Pgt__2) ++1 MASTER_BLEND_VAR_Node2_3(_Pgt__2_) -1 Scen8_Pgt(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_3(9)_: -+1 MASTER_BLEND_VAR_Node2_3(Pgt__2) ++1 MASTER_BLEND_VAR_Node2_3(_Pgt__2_) -1 Scen9_Pgt(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_3(10)_: -+1 MASTER_BLEND_VAR_Node2_3(Vol__2) ++1 MASTER_BLEND_VAR_Node2_3(_Vol__2_) -1 Scen7_Vol(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_3(11)_: -+1 MASTER_BLEND_VAR_Node2_3(Vol__2) ++1 MASTER_BLEND_VAR_Node2_3(_Vol__2_) -1 Scen8_Vol(2) = 0 c_e_MASTER_BLEND_CONSTRAINT_Node2_3(12)_: -+1 MASTER_BLEND_VAR_Node2_3(Vol__2) ++1 MASTER_BLEND_VAR_Node2_3(_Vol__2_) -1 Scen9_Vol(2) = 0 @@ -927,22 +927,22 @@ c_e_ONE_VAR_CONSTANT: ONE_VAR_CONSTANT = 1.0 bounds - -inf <= MASTER_BLEND_VAR_RootNode(PDns__1) <= +inf - -inf <= MASTER_BLEND_VAR_RootNode(Pgh__1) <= +inf - -inf <= MASTER_BLEND_VAR_RootNode(Pgt__1) <= +inf - -inf <= MASTER_BLEND_VAR_RootNode(Vol__1) <= +inf - -inf <= MASTER_BLEND_VAR_Node2_1(PDns__2) <= +inf - -inf <= MASTER_BLEND_VAR_Node2_1(Pgh__2) <= +inf - -inf <= MASTER_BLEND_VAR_Node2_1(Pgt__2) <= +inf - -inf <= MASTER_BLEND_VAR_Node2_1(Vol__2) <= +inf - -inf <= MASTER_BLEND_VAR_Node2_2(PDns__2) <= +inf - -inf <= MASTER_BLEND_VAR_Node2_2(Pgh__2) <= +inf - -inf <= MASTER_BLEND_VAR_Node2_2(Pgt__2) <= +inf - -inf <= MASTER_BLEND_VAR_Node2_2(Vol__2) <= +inf - -inf <= MASTER_BLEND_VAR_Node2_3(PDns__2) <= +inf - -inf <= MASTER_BLEND_VAR_Node2_3(Pgh__2) <= +inf - -inf <= MASTER_BLEND_VAR_Node2_3(Pgt__2) <= +inf - -inf <= MASTER_BLEND_VAR_Node2_3(Vol__2) <= +inf + -inf <= MASTER_BLEND_VAR_RootNode(_PDns__1_) <= +inf + -inf <= MASTER_BLEND_VAR_RootNode(_Pgh__1_) <= +inf + -inf <= MASTER_BLEND_VAR_RootNode(_Pgt__1_) <= +inf + -inf <= MASTER_BLEND_VAR_RootNode(_Vol__1_) <= +inf + -inf <= MASTER_BLEND_VAR_Node2_1(_PDns__2_) <= +inf + -inf <= MASTER_BLEND_VAR_Node2_1(_Pgh__2_) <= +inf + -inf <= MASTER_BLEND_VAR_Node2_1(_Pgt__2_) <= +inf + -inf <= MASTER_BLEND_VAR_Node2_1(_Vol__2_) <= +inf + -inf <= MASTER_BLEND_VAR_Node2_2(_PDns__2_) <= +inf + -inf <= MASTER_BLEND_VAR_Node2_2(_Pgh__2_) <= +inf + -inf <= MASTER_BLEND_VAR_Node2_2(_Pgt__2_) <= +inf + -inf <= MASTER_BLEND_VAR_Node2_2(_Vol__2_) <= +inf + -inf <= MASTER_BLEND_VAR_Node2_3(_PDns__2_) <= +inf + -inf <= MASTER_BLEND_VAR_Node2_3(_Pgh__2_) <= +inf + -inf <= MASTER_BLEND_VAR_Node2_3(_Pgt__2_) <= +inf + -inf <= MASTER_BLEND_VAR_Node2_3(_Vol__2_) <= +inf 0 <= Scen1_Pgt(1) <= 100 0 <= Scen1_Pgt(2) <= 100 0 <= Scen1_Pgt(3) <= 100 diff --git a/pysp/tests/unit/baselines/sizes3_ef.baseline.lp.gz b/pysp/tests/unit/baselines/sizes3_ef.baseline.lp.gz index ba46302..d93b243 100644 Binary files a/pysp/tests/unit/baselines/sizes3_ef.baseline.lp.gz and b/pysp/tests/unit/baselines/sizes3_ef.baseline.lp.gz differ diff --git a/pysp/tests/unit/test_scenariotree.py b/pysp/tests/unit/test_scenariotree.py index 5947980..c838231 100644 --- a/pysp/tests/unit/test_scenariotree.py +++ b/pysp/tests/unit/test_scenariotree.py @@ -18,7 +18,8 @@ Var, Expression, Objective, - Block) + Block, + value) from pyomo.common.dependencies import ( networkx, networkx_available as has_networkx ) @@ -485,9 +486,9 @@ def test_two_stage(self): self.assertEqual( sorted(list(model.Scenarios)), sorted(["Child1", "Child2"])) - self.assertEqual(model.ConditionalProbability["Root"], 1.0) - self.assertEqual(model.ConditionalProbability["Child1"], 0.8) - self.assertEqual(model.ConditionalProbability["Child2"], 0.2) + self.assertEqual(value(model.ConditionalProbability["Root"]), 1.0) + self.assertEqual(value(model.ConditionalProbability["Child1"]), 0.8) + self.assertEqual(value(model.ConditionalProbability["Child2"]), 0.2) model.StageCost["Stage1"] = "c1" model.StageCost["Stage2"] = "c2" model.StageVariables["Stage1"].add("x") @@ -531,9 +532,9 @@ def test_two_stage_more_node_attributes(self): self.assertEqual( sorted(list(model.Scenarios)), sorted(["Child1", "Child2"])) - self.assertEqual(model.ConditionalProbability["Root"], 1.0) - self.assertEqual(model.ConditionalProbability["Child1"], 0.8) - self.assertEqual(model.ConditionalProbability["Child2"], 0.2) + self.assertEqual(value(model.ConditionalProbability["Root"]), 1.0) + self.assertEqual(value(model.ConditionalProbability["Child1"]), 0.8) + self.assertEqual(value(model.ConditionalProbability["Child2"]), 0.2) self.assertEqual(model.StageCost["Stage1"].value, None) self.assertEqual(list(model.StageVariables["Stage1"]), []) @@ -590,9 +591,9 @@ def test_two_stage_custom_names(self): self.assertEqual( sorted(list(model.Scenarios)), sorted(["S1", "S2"])) - self.assertEqual(model.ConditionalProbability["Root"], 1.0) - self.assertEqual(model.ConditionalProbability["Child1"], 0.8) - self.assertEqual(model.ConditionalProbability["Child2"], 0.2) + self.assertEqual(value(model.ConditionalProbability["Root"]), 1.0) + self.assertEqual(value(model.ConditionalProbability["Child1"]), 0.8) + self.assertEqual(value(model.ConditionalProbability["Child2"]), 0.2) model.StageCost["T1"] = "c1" model.StageCost["T2"] = "c2" model.StageVariables["T1"].add("x") @@ -654,19 +655,19 @@ def test_multi_stage(self): self.assertEqual( sorted(list(model.Scenarios)), sorted([4, 5, 6, 7, 8, 9, 10, 11, 12])) - self.assertEqual(model.ConditionalProbability[0], 1.0) - self.assertAlmostEqual(model.ConditionalProbability[1], 1.0/3) - self.assertAlmostEqual(model.ConditionalProbability[2], 1.0/3) - self.assertAlmostEqual(model.ConditionalProbability[3], 1.0/3) - self.assertAlmostEqual(model.ConditionalProbability[4], 1.0/3) - self.assertAlmostEqual(model.ConditionalProbability[5], 1.0/3) - self.assertAlmostEqual(model.ConditionalProbability[6], 1.0/3) - self.assertAlmostEqual(model.ConditionalProbability[7], 1.0/3) - self.assertAlmostEqual(model.ConditionalProbability[8], 1.0/3) - self.assertAlmostEqual(model.ConditionalProbability[9], 1.0/3) - self.assertAlmostEqual(model.ConditionalProbability[10], 1.0/3) - self.assertAlmostEqual(model.ConditionalProbability[11], 1.0/3) - self.assertAlmostEqual(model.ConditionalProbability[12], 1.0/3) + self.assertEqual(value(model.ConditionalProbability[0]), 1.0) + self.assertAlmostEqual(value(model.ConditionalProbability[1]), 1.0/3) + self.assertAlmostEqual(value(model.ConditionalProbability[2]), 1.0/3) + self.assertAlmostEqual(value(model.ConditionalProbability[3]), 1.0/3) + self.assertAlmostEqual(value(model.ConditionalProbability[4]), 1.0/3) + self.assertAlmostEqual(value(model.ConditionalProbability[5]), 1.0/3) + self.assertAlmostEqual(value(model.ConditionalProbability[6]), 1.0/3) + self.assertAlmostEqual(value(model.ConditionalProbability[7]), 1.0/3) + self.assertAlmostEqual(value(model.ConditionalProbability[8]), 1.0/3) + self.assertAlmostEqual(value(model.ConditionalProbability[9]), 1.0/3) + self.assertAlmostEqual(value(model.ConditionalProbability[10]), 1.0/3) + self.assertAlmostEqual(value(model.ConditionalProbability[11]), 1.0/3) + self.assertAlmostEqual(value(model.ConditionalProbability[12]), 1.0/3) model.StageCost["Stage1"] = "c1" model.StageCost["Stage2"] = "c2" model.StageCost["Stage3"] = "c3" @@ -716,11 +717,11 @@ def test_unbalanced(self): self.assertEqual( sorted(list(model.Scenarios)), sorted(["00", "01", "1"])) - self.assertEqual(model.ConditionalProbability["R"], 1.0) - self.assertEqual(model.ConditionalProbability["0"], 0.5) - self.assertEqual(model.ConditionalProbability["1"], 0.5) - self.assertEqual(model.ConditionalProbability["00"], 0.5) - self.assertEqual(model.ConditionalProbability["01"], 0.5) + self.assertEqual(value(model.ConditionalProbability["R"]), 1.0) + self.assertEqual(value(model.ConditionalProbability["0"]), 0.5) + self.assertEqual(value(model.ConditionalProbability["1"]), 0.5) + self.assertEqual(value(model.ConditionalProbability["00"]), 0.5) + self.assertEqual(value(model.ConditionalProbability["01"]), 0.5) model.StageCost["Stage1"] = "c1" model.StageCost["Stage2"] = "c2" model.StageCost["Stage3"] = "c3" @@ -756,9 +757,9 @@ def test_bundles(self): self.assertEqual( sorted(list(model.Scenarios)), sorted(["u0", "u1", "u2", "u3"])) - self.assertEqual(model.ConditionalProbability["r"], 1.0) + self.assertEqual(value(model.ConditionalProbability["r"]), 1.0) for i in range(4): - self.assertEqual(model.ConditionalProbability["u"+str(i)], + self.assertEqual(value(model.ConditionalProbability["u"+str(i)]), 0.25) self.assertEqual(model.Bundling.value, True) self.assertEqual(list(model.Bundles), [0, 1]) diff --git a/pysp/util/rapper.py b/pysp/util/rapper.py index a69ea30..effc6ca 100644 --- a/pysp/util/rapper.py +++ b/pysp/util/rapper.py @@ -6,7 +6,7 @@ """ import inspect -from pyomo.core.base.component import _name_index_generator +from pyomo.core.base.component_namer import index_repr from pyomo.environ import SolverFactory from pysp.scenariotree.instance_factory \ import ScenarioTreeInstanceFactory @@ -308,7 +308,7 @@ def root_Var_solution(self): var_name, index = root_node._variable_ids[variable_id] name = var_name if index is not None: - name += _name_index_generator(index) + name += index_repr(index) yield name, root_node._solution[variable_id] #========================= diff --git a/setup.py b/setup.py index 489b8d3..297bbd7 100644 --- a/setup.py +++ b/setup.py @@ -62,11 +62,7 @@ def run_setup(): 'Operating System :: Microsoft :: Windows', 'Operating System :: Unix', 'Programming Language :: Python', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', @@ -75,11 +71,10 @@ def run_setup(): 'Programming Language :: Python :: Implementation :: PyPy', 'Topic :: Scientific/Engineering :: Mathematics', 'Topic :: Software Development :: Libraries :: Python Modules' ], - python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*', + python_requires='>=3.6', install_requires=[ - 'Pyomo>=6.0.0.dev0', - 'PyUtilib>=6.0.1.dev0', - 'enum34;python_version<"3.4"', + 'Pyomo>=6.0', + 'PyUtilib>=6.0.0', 'ply', 'six>=1.4', ],