示例#1
0
 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)
示例#2
0
 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)
示例#3
0
 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)
示例#4
0
 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)
示例#5
0
 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")
示例#6
0
 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")
示例#7
0
 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()
示例#8
0
 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
示例#9
0
    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')
示例#10
0
 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)
示例#11
0
 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)
示例#12
0
 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)