class Test_sizes_abstract(unittest.TestCase): """ Test PySPModel using abstract sizes case """ def setUp(self): self.pysp_sizes3 = PySPModel( os.path.join(sizes_dir, 'ReferenceModel.py'), os.path.join(sizes_dir, 'SIZES3', 'ScenarioStructure.dat')) def tearDown(self): self.pysp_sizes3.close() def test_ph_constructor(self): pysp_sizes = self.pysp_sizes3 options = _get_ph_base_options() options['PHIterLimit'] = 0 ph = mpisppy.opt.ph.PH( options, pysp_sizes.all_scenario_names, pysp_sizes.scenario_creator, lambda *args: None, ) def test_ef_constructor(self): pysp_sizes = self.pysp_sizes3 options = {"solver": "cplex"} ef = mpisppy.opt.ef.ExtensiveForm( options, pysp_sizes.all_scenario_names, pysp_sizes.scenario_creator, ) @unittest.skipIf(not solver_available, "no solver is available") def test_ef_solve(self): pysp_sizes = self.pysp_sizes3 options = _get_ph_base_options() options = {"solver": options["solvername"]} ef = mpisppy.opt.ef.ExtensiveForm( options, pysp_sizes.all_scenario_names, pysp_sizes.scenario_creator, ) results = ef.solve_extensive_form(tee=False) sig2eobj = round_pos_sig(pyo.value(ef.ef.EF_Obj), 2) self.assertEqual(220000.0, sig2eobj)
'verbose': False, 'display_progress': True, 'display_timing': False, 'iter0_solver_options': None, 'iterk_solver_options': None } ph = PH( options=phoptions, all_scenario_names=farmer.all_scenario_names, scenario_creator=farmer.scenario_creator, scenario_denouement=farmer.scenario_denouement, ) ph.ph_main() ef = sputils.create_EF(farmer.all_scenario_names, farmer.scenario_creator) solver = pyo.SolverFactory(solver_name) if 'persistent' in solver_name: solver.set_instance(ef, symbolic_solver_labels=True) solver.solve(tee=True) else: solver.solve( ef, tee=True, symbolic_solver_labels=True, ) print(f"EF objective: {pyo.value(ef.EF_Obj)}") farmer.close()
elif int(sys.argv[1]) not in [3,10]: _print_usage() sys.exit() try: solver_avail = SolverFactory(sys.argv[2]).available() if not solver_avail: print(f"Cannot find solver {sys.argv[2]}") sys.exit() except: print(f"Cannot find solver {sys.argv[2]}") _print_usage() sys.exit() num_scen = int(sys.argv[1]) solver = sys.argv[2] sizes = PySPModel(model='./models/ReferenceModel.py', scenario_tree=f'./SIZES{num_scen}/ScenarioStructure.dat', ) ef = ExtensiveForm(options={'solver':solver}, all_scenario_names=sizes.all_scenario_names, scenario_creator=sizes.scenario_creator, model_name='sizes_EF') ef.solve_extensive_form(tee=True) sizes.close()