Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 0 additions & 11 deletions doc/src/helper_functions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,6 @@ are documented in `the admm wrapper documentation <admmWrapper.rst#sectiondatafo
dict (str): the dictionary of key word arguments that is used in ``scenario_creator``


.. py:function:: scenario_names_creator(num_scens, start=0)

Creates the name of the ``num_scens`` scenarios starting from ``start``

Args:
num_scens (int): number of scenarios
start (int): starting index for the names

Returns:
list (str): the list of names

.. py:function:: inparser_adder(cfg)

Adds arguments to the config object which are specific to the problem
Expand Down
8 changes: 5 additions & 3 deletions examples/acopf3/ccopf2wood.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from mpisppy.cylinders.hub import PHHub
# Make it all go
from mpisppy.spin_the_wheel import WheelSpinner
from mpisppy.utils import scenario_names_creator
from mpisppy.utils.xhat_eval import Xhat_Eval

# the problem
Expand Down Expand Up @@ -112,9 +113,10 @@ def main():
lines)
scenario_creator_kwargs["acstream"] = acstream

all_scenario_names=["Scenario_"+str(i)\
for i in range(1,len(scenario_creator_kwargs["etree"].\
rootnode.ScenarioList)+1)]
all_scenario_names = scenario_names_creator(
len(scenario_creator_kwargs["etree"].rootnode.ScenarioList), prefix="Scenario_", start=1,
)

all_nodenames = scenario_creator_kwargs["etree"].All_Nodenames()

options = dict()
Expand Down
8 changes: 4 additions & 4 deletions examples/acopf3/ccopf_multistage.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import egret.models.ac_relaxations as eac_relax
from egret.parsers.matpower_parser import create_ModelData
import mpisppy.scenario_tree as scenario_tree
import mpisppy.utils.sputils as sputils
from mpisppy.utils import sputils, scenario_names_creator

import ACtree as ET

Expand Down Expand Up @@ -369,10 +369,10 @@ def scenario_denouement(rank, scenario_name, scenario):
repair_fct,
lines)
scenario_creator_kwargs["acstream"] = acstream
scenario_names=["Scenario_"+str(i)\
for i in range(1,len(scenario_creator_kwargs["etree"].rootnode.ScenarioList)+1)]
scenario_names=scenario_names_creator(
len(scenario_creator_kwargs["etree"].rootnode.ScenarioList), prefix="Scenario_", start=1,
)


# end options
ef = sputils.create_EF(scenario_names,
pysp2_callback,
Expand Down
7 changes: 4 additions & 3 deletions examples/acopf3/fourstage.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from mpisppy.cylinders.hub import PHHub
# Make it all go
from mpisppy.spin_the_wheel import WheelSpinner
from mpisppy.utils import scenario_names_creator
from mpisppy.utils.xhat_eval import Xhat_Eval

# the problem
Expand Down Expand Up @@ -120,9 +121,9 @@ def main():
lines)
scenario_creator_kwargs["acstream"] = acstream

all_scenario_names=["Scenario_"+str(i)\
for i in range(1,len(scenario_creator_kwargs["etree"].\
rootnode.ScenarioList)+1)]
all_scenario_names = scenario_names_creator(
len(scenario_creator_kwargs["etree"].rootnode.ScenarioList), prefix="Scenario_", start=1,
)
all_nodenames = scenario_creator_kwargs["etree"].All_Nodenames()

options = dict()
Expand Down
11 changes: 5 additions & 6 deletions examples/aircond/aircond_ama.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@
"""
import numpy as np
import pyomo.common.config as pyofig
import mpisppy.utils.amalgamator as amalgamator
import mpisppy.utils.config as config
from mpisppy.utils import amalgamator, config, scenario_names_creator
import mpisppy.tests.examples.aircond as aircond

def main():
Expand All @@ -37,11 +36,11 @@ def main():
raise RuntimeError("Do not use num_scens here, we want to solve the problem for the whole sample scenario tree")

num_scens = np.prod(cfg['branching_factors'])
scenario_names = aircond.scenario_names_creator(num_scens, 0)
scenario_names = scenario_names_creator(num_scens, prefix="scen")

ama =amalgamator.Amalgamator(cfg,
scenario_names,
aircond.scenario_creator,
ama = amalgamator.Amalgamator(cfg,
scenario_names,
aircond.scenario_creator,
aircond.kw_creator)
ama.run()
if ama.on_hub:
Expand Down
14 changes: 6 additions & 8 deletions examples/aircond/aircond_cylinders.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,18 @@
###############################################################################
# NOTE: as of March 2022, consider aircondB.py as an alternative to aircond.py
# Use bundle_pickler.py to create bundle pickles
# NOTE: As of 3 March 2022, you can't compare pickle bundle problems with non-pickled. See _demands_creator in aircondB.py for more discusion.
# NOTE: As of 3 March 2022, you can't compare pickle bundle problems with non-pickled. See _demands_creator in aircondB.py for more discussion.

import numpy as np
import itertools
from mpisppy import global_toc
from mpisppy.spin_the_wheel import WheelSpinner
from mpisppy.utils import amalgamator, cfg_vanilla as vanilla, config, pickle_bundle, scenario_names_creator
from mpisppy.utils.sputils import first_stage_nonant_npy_serializer, option_string_to_dict
from mpisppy.utils import config
import mpisppy.utils.cfg_vanilla as vanilla

import mpisppy.tests.examples.aircond as aircond
import mpisppy.tests.examples.aircondB as aircondB # pickle bundle version
from mpisppy.utils import pickle_bundle
from mpisppy.utils import amalgamator


# construct a node-scenario dictionary a priori for xhatspecific_spoke,
# according to naming convention for this problem
Expand All @@ -38,7 +37,7 @@ def make_node_scenario_dict_balanced(BFs,leaf_nodes=True,start=1):
"""
nodenames = make_nodenames_balanced(BFs, leaf_nodes)
num_scens = np.prod(BFs)
scenario_names = aircond.scenario_names_creator(num_scens, start)
scenario_names = scenario_names_creator(num_scens, prefix="scen", start=start)

num_stages = len(BFs)+1
node_scenario_dict ={"ROOT": scenario_names[0]}
Expand Down Expand Up @@ -209,10 +208,9 @@ def main():
refmodule = aircondB
primal_rho_setter = None
global_toc("WARNING: not using rho setters with proper bundles")

else:
ScenCount = np.prod(BFs)
all_scenario_names = [f"scen{i}" for i in range(ScenCount)] #Scens are 0-based
all_scenario_names = scenario_names_creator(ScenCount, prefix="scen") #Scens are 0-based
refmodule = aircond
primal_rho_setter = refmodule.primal_rho_setter

Expand Down
6 changes: 2 additions & 4 deletions examples/aircond/aircond_seqsampling.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import mpisppy.tests.examples.aircond as aircond
import mpisppy.confidence_intervals.multi_seqsampling as multi_seqsampling
import mpisppy.confidence_intervals.confidence_config as conf_config
from mpisppy.utils import config
from mpisppy.utils import config, scenario_names_creator


def main(cfg):
Expand All @@ -27,9 +27,7 @@ def main(cfg):
BFs = cfg.branching_factors
num_scens = np.prod(BFs)

scenario_names = ['Scenario' + str(i) for i in range(num_scens)]

xhat_gen_kwargs = {"scenario_names": scenario_names,
xhat_gen_kwargs = {"scenario_names": scenario_names_creator(num_scens, prefix="Scenario"),
"solver_name": cfg.solver_name,
"solver_options": None,
"branching_factors" : BFs,
Expand Down
14 changes: 1 addition & 13 deletions examples/distr/distr.py
Original file line number Diff line number Diff line change
Expand Up @@ -210,18 +210,6 @@ def consensus_vars_creator(num_scens, inter_region_dict, all_scenario_names):
return consensus_vars


def scenario_names_creator(num_scens):
"""Creates the name of every scenario.

Args:
num_scens (int): number of scenarios

Returns:
list (str): the list of names
"""
return [f"Region{i+1}" for i in range(num_scens)]


def kw_creator(all_nodes_dict, cfg, inter_region_dict, data_params):
"""
Args:
Expand Down Expand Up @@ -256,4 +244,4 @@ def inparser_adder(cfg):
cfg.add_to_config("ensure_xhat_feas",
description="adds slacks with high costs to ensure the feasibility of xhat yet maintaining the optimal",
domain=bool,
default=False)
default=False)
6 changes: 2 additions & 4 deletions examples/distr/distr_admm_cylinders.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@
import distr

from mpisppy.spin_the_wheel import WheelSpinner
import mpisppy.utils.sputils as sputils
from mpisppy.utils import config
import mpisppy.utils.cfg_vanilla as vanilla
from mpisppy.utils import cfg_vanilla as vanilla, config, scenario_names_creator, sputils
from mpisppy import MPI
import time

Expand Down Expand Up @@ -83,7 +81,7 @@ def main():
ph_converger = None

options = {}
all_scenario_names = distr.scenario_names_creator(num_scens=cfg.num_scens)
all_scenario_names = scenario_names_creator(cfg.num_scens, prefix="Region", start=1)
scenario_creator = distr.scenario_creator
scenario_creator_kwargs = distr.kw_creator(all_nodes_dict, cfg, inter_region_dict, data_params)
consensus_vars = distr.consensus_vars_creator(cfg.num_scens, inter_region_dict, all_scenario_names)
Expand Down
5 changes: 2 additions & 3 deletions examples/distr/distr_ef.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@
import distr_data
import pyomo.environ as pyo

import mpisppy.utils.sputils as sputils
from mpisppy.utils import config
from mpisppy.utils import config, scenario_names_creator, sputils
from mpisppy import MPI
global_rank = MPI.COMM_WORLD.Get_rank()

Expand Down Expand Up @@ -72,7 +71,7 @@ def main():
data_params = {"max revenue": 1200}

options = {}
all_scenario_names = distr.scenario_names_creator(num_scens=cfg.num_scens)
all_scenario_names = scenario_names_creator(cfg.num_scens, prefix="Region", start=1)
scenario_creator = distr.scenario_creator
scenario_creator_kwargs = distr.kw_creator(all_nodes_dict, cfg, inter_region_dict, data_params)
consensus_vars = distr.consensus_vars_creator(cfg.num_scens, inter_region_dict, all_scenario_names)
Expand Down
9 changes: 0 additions & 9 deletions examples/farmer/CI/farmer.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,15 +212,6 @@ def total_cost_rule(model):


# begin helper functions
#=========
def scenario_names_creator(num_scens,start=None):
# (only for Amalgamator): return the full list of num_scens scenario names
# if start!=None, the list starts with the 'start' labeled scenario
if (start is None) :
start=0
return [f"scen{i}" for i in range(start,start+num_scens)]


#=========
def inparser_adder(cfg):
# add options unique to farmer
Expand Down
10 changes: 4 additions & 6 deletions examples/farmer/CI/farmer_ef.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@

import sys
import farmer
import mpisppy.utils.sputils as sputils
import mpisppy.utils.solver_spec as solver_spec
from mpisppy.utils import config
from mpisppy.utils import config, scenario_names_creator, sputils, solver_spec
import pyomo.environ as pyo


Expand All @@ -32,13 +30,13 @@ def main_no_cfg():
scen_count = int(sys.argv[2])
use_integer = int(sys.argv[3])
solver_name = sys.argv[4]

scenario_creator_kwargs = {
"use_integer": use_integer,
"crops_multiplier": crops_multiplier,
}

scenario_names = ['Scenario' + str(i) for i in range(scen_count)]
scenario_names = scenario_names_creator(scen_count, prefix='Scenario')

ef = sputils.create_EF(
scenario_names,
Expand Down Expand Up @@ -66,7 +64,7 @@ def main_with_cfg():
cfg.parse_command_line("farmer_ef")

ef = sputils.create_EF(
farmer.scenario_names_creator(cfg.num_scens),
scenario_names_creator(cfg.num_scens, prefix="scen"),
farmer.scenario_creator,
scenario_creator_kwargs=farmer.kw_creator(cfg),
)
Expand Down
7 changes: 3 additions & 4 deletions examples/farmer/CI/farmer_rho_demo.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@
from mpisppy.spin_the_wheel import WheelSpinner
import mpisppy.utils.sputils as sputils

from mpisppy.utils import config
import mpisppy.utils.cfg_vanilla as vanilla
from mpisppy.utils import cfg_vanilla as vanilla, config, scenario_names_creator

from mpisppy.extensions.extension import MultiExtension

Expand Down Expand Up @@ -84,15 +83,15 @@ def main():
if not cfg.use_norm_rho_updater:
raise RuntimeError("--use-norm-rho-converger requires --use-norm-rho-updater")
elif cfg.grad_rho:
raise RuntimeError("You cannot have--use-norm-rho-converger and --grad-rho-setter")
raise RuntimeError("You cannot have--use-norm-rho-converger and --grad-rho-setter")
else:
ph_converger = NormRhoConverger
else:
ph_converger = None

scenario_creator = farmer.scenario_creator
scenario_denouement = farmer.scenario_denouement
all_scenario_names = farmer.scenario_names_creator(cfg.num_scens)
all_scenario_names = scenario_names_creator(cfg.num_scens, prefix='scen')
scenario_creator_kwargs = {
'use_integer': False,
"crops_multiplier": crops_multiplier,
Expand Down
6 changes: 2 additions & 4 deletions examples/farmer/CI/farmer_seqsampling.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@

import numpy as np
import farmer
from mpisppy.utils import config
import mpisppy.utils.sputils as sputils
import mpisppy.utils.amalgamator as amalgamator
from mpisppy.utils import amalgamator, config, scenario_names_creator, sputils
import mpisppy.confidence_intervals.seqsampling as seqsampling
import mpisppy.confidence_intervals.confidence_config as confidence_config

Expand Down Expand Up @@ -94,7 +92,7 @@ def main(cfg):
solver_name = cfg.EF_solver_name
crops_multiplier = cfg.crops_multiplier

scenario_names = ['Scenario' + str(i) for i in range(scen_count)]
scenario_names = scenario_names_creator(scen_count, prefix='Scenario')

xhat_gen_kwargs = {"scenario_names": scenario_names,
"solver_name": solver_name,
Expand Down
13 changes: 6 additions & 7 deletions examples/farmer/agnostic/agnostic_ampl_cylinders.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,10 @@
# Started by dlw Aug 2023

import farmer_ampl_agnostic
from mpisppy.agnostic import agnostic
from mpisppy.utils import cfg_vanilla as vanilla, config, scenario_names_creator, sputils
from mpisppy.spin_the_wheel import WheelSpinner
import mpisppy.utils.cfg_vanilla as vanilla
import mpisppy.utils.config as config
import mpisppy.agnostic.agnostic as agnostic
import mpisppy.utils.sputils as sputils


def _farmer_parse_args():
# create a config object and parse JUST FOR TESTING
Expand All @@ -23,8 +22,8 @@ def _farmer_parse_args():

cfg.popular_args()
cfg.two_sided_args()
cfg.ph_args()
cfg.aph_args()
cfg.ph_args()
cfg.aph_args()
cfg.xhatlooper_args()
cfg.fwph_args()
cfg.lagrangian_args()
Expand All @@ -43,7 +42,7 @@ def _farmer_parse_args():

scenario_creator = Ag.scenario_creator
scenario_denouement = farmer_ampl_agnostic.scenario_denouement # should we go though Ag?
all_scenario_names = ['scen{}'.format(sn) for sn in range(cfg.num_scens)]
all_scenario_names = scenario_names_creator(cfg.num_scens, prefix="scen")

# Things needed for vanilla cylinders
beans = (cfg, scenario_creator, scenario_denouement, all_scenario_names)
Expand Down
8 changes: 3 additions & 5 deletions examples/farmer/agnostic/agnostic_gurobipy_cylinders.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,8 @@

import farmer_gurobipy_agnostic
from mpisppy.spin_the_wheel import WheelSpinner
import mpisppy.utils.cfg_vanilla as vanilla
import mpisppy.utils.config as config
import mpisppy.agnostic.agnostic as agnostic
import mpisppy.utils.sputils as sputils
from mpisppy.agnostic import agnostic
from mpisppy.utils import cfg_vanilla as vanilla, config, scenario_names_creator, sputils

def _farmer_parse_args():
# create a config object and parse JUST FOR TESTING
Expand Down Expand Up @@ -43,7 +41,7 @@ def _farmer_parse_args():

scenario_creator = Ag.scenario_creator
scenario_denouement = farmer_gurobipy_agnostic.scenario_denouement # should we go though Ag?
all_scenario_names = ['scen{}'.format(sn) for sn in range(cfg.num_scens)]
all_scenario_names = scenario_names_creator(cfg.num_scens, prefix="scen")

# Things needed for vanilla cylinders
beans = (cfg, scenario_creator, scenario_denouement, all_scenario_names)
Expand Down
Loading
Loading