def test_construct_default_tree_error(self): """verify that construction of concrete with default tree name gives error when it should""" with self.assertRaises(AttributeError): stsolver = rapper.StochSolver( "ReferenceModel.py", fsfct="pysp_instance_creation_callback", tree_model=None)
def test_Abstract_Construction(self): """ see if we can create the solver object for an AbstractModel""" stsolver = rapper.StochSolver(self.farmer_ReferencePath, fsfct = None, tree_model = self.farmer_scenarioPath, phopts = None)
def test_ef_cvar_construct(self): """ construct the ef with cvar """ stsolver = rapper.StochSolver("ReferenceModel.py", fsfct="pysp_instance_creation_callback", tree_model=self.farmer_concrete_tree) ef = stsolver.make_ef(generate_weighted_cvar=True, cvar_weight=0.1, risk_alpha=0.9)
def test_Abstract_ef(self): """ see if we can create the solver object for an AbstractModel""" stsolver = rapper.StochSolver(self.farmer_ReferencePath, fsfct = None, tree_model = self.farmer_scenarioPath, phopts = None) ef_sol = stsolver.solve_ef(solvername) assert(ef_sol.solver.termination_condition \ == TerminationCondition.optimal)
def test_ef_solve_with_csvwriter(self): """ solve the ef and report gap""" stsolver = rapper.StochSolver("ReferenceModel.py", fsfct="pysp_instance_creation_callback", tree_model=self.farmer_concrete_tree) res, gap = stsolver.solve_ef(solvername, tee=True, need_gap=True) csvw.write_csv_soln(stsolver.scenario_tree, "testcref") with open("testcref.csv", 'r') as f: line = f.readline() assert (line.split(",")[0] == "FirstStage")
def test_NetX_ef_csvwriter(self): """ solve the ef and report gap""" import NetXReferenceModel as ref tree_model = ref.pysp_scenario_tree_model_callback() stsolver = rapper.StochSolver("NetXReferenceModel.py", fsfct="pysp_instance_creation_callback", tree_model=tree_model) res, gap = stsolver.solve_ef(solvername, tee=True, need_gap=True) csvw.write_csv_soln(stsolver.scenario_tree, "testcref") with open("testcref_StageCostDetail.csv", 'r') as f: line = f.readline() assert (line.split(",")[0] == "Stage1")
def test_ef_solve(self): """ solve the ef and check some post solution code""" stsolver = rapper.StochSolver("ReferenceModel.py", fsfct="pysp_instance_creation_callback", tree_model=self.farmer_concrete_tree) ef_sol = stsolver.solve_ef(solvername) assert(ef_sol.solver.termination_condition \ == TerminationCondition.optimal) for name, varval in stsolver.root_Var_solution(): #print (name, str(varval)) pass self.assertAlmostEqual(varval, 170.0, 1) obj = stsolver.root_E_obj()
def test_famer_netx(self): """ solve the ef and check some post solution code""" shutil.copyfile(self.farmpath + os.sep + "concreteNetX" +\ os.sep + "ReferenceModel.py", self.tdir + os.sep + "ReferenceModel.py") import ReferenceModel as RM g = RM.pysp_scenario_tree_model_callback() stsolver = rapper.StochSolver("ReferenceModel", fsfct="pysp_instance_creation_callback", tree_model=g) ef_sol = stsolver.solve_ef(solvername) assert(ef_sol.solver.termination_condition \ == pyo.TerminationCondition.optimal) obj = stsolver.root_E_obj() assert (abs(-108385 - obj) < 100) # any solver should get this close
def test_ph_solve(self): """ use ph""" phopts = {'--max-iterations': '2'} stsolver = rapper.StochSolver("ReferenceModel.py", tree_model=self.farmer_concrete_tree, fsfct="pysp_instance_creation_callback", phopts=phopts) ph = stsolver.solve_ph(subsolver=solvername, default_rho=1, phopts=phopts) obj = stsolver.root_E_obj() # E[xbar] obj, xhat = rapper.xhat_from_ph(ph) for nodename, varname, varvalue in rapper.xhat_walker(xhat): pass assert (nodename == 'RootNode')
def test_no_fsfct_no_tree(self): """verify that deprecated concrete with no fsfct is an error""" with self.assertRaises(RuntimeError): stsolver = rapper.StochSolver("ReferenceModel.py", fsfct=None, tree_model=None)
def test_fct_contruct(self): """ give a callback function rather than a string""" from ReferenceModel import pysp_instance_creation_callback stsolver = rapper.StochSolver(None, fsfct=pysp_instance_creation_callback, tree_model=self.farmer_concrete_tree)
def test_ef_solve_with_gap(self): """ solve the ef and report gap""" stsolver = rapper.StochSolver("ReferenceModel.py", fsfct="pysp_instance_creation_callback", tree_model=self.farmer_concrete_tree) res, gap = stsolver.solve_ef(solvername, tee=True, need_gap=True)