示例#1
0
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)
示例#2
0
    '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()
示例#3
0
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()