def test_dummy_solver_interface(self): solver = DummySolverInterface() self.assertTrue(solver.available()) self.assertEqual(solver.solver_id().name(), "dummy") self.assertIsInstance(solver, SolverInterface) prog = mp.MathematicalProgram() result = mp.MathematicalProgramResult() with self.assertRaises(Exception) as context: solver.Solve(prog, None, None, result) self.assertTrue("Dummy solver cannot solve" in str(context.exception)) self.assertIsInstance(result, mp.MathematicalProgramResult) self.assertTrue(solver.AreProgramAttributesSatisfied(prog))
def Solve(self, prog, initial_guess=None, solver_options=None, result=None): # TODO(jwnimmer-tri) This trampoline for Solve is quite awkward. if result is not None: self._DoSolve(prog, initial_guess, solver_options, result) return else: result = mp.MathematicalProgramResult() self._DoSolve(prog, initial_guess, solver_options, result) return result
def test_dummy_solver_interface(self): solver = DummySolverInterface() self.assertTrue(solver.available()) self.assertTrue(solver.enabled()) self.assertEqual(solver.solver_id().name(), "dummy") self.assertIsInstance(solver, SolverInterface) prog = mp.MathematicalProgram() with self.assertRaisesRegex(Exception, "Dummy.*cannot solve"): unused_result = mp.MathematicalProgramResult() solver.Solve(prog, None, None, unused_result) with self.assertRaisesRegex(Exception, "Dummy.*cannot solve"): _ = solver.Solve(prog) self.assertFalse(solver.AreProgramAttributesSatisfied(prog)) solver.can_solve = True self.assertTrue(solver.AreProgramAttributesSatisfied(prog)) result = solver.Solve(prog) self.assertIsInstance(result, mp.MathematicalProgramResult)