def test_osqp_solver(self): prog = mp.MathematicalProgram() x = prog.NewContinuousVariables(2, "x") prog.AddLinearConstraint(x[0] >= 1) prog.AddLinearConstraint(x[1] >= 1) prog.AddQuadraticCost(np.eye(2), np.zeros(2), x) solver = OsqpSolver() self.assertTrue(solver.available()) self.assertEqual(solver.solver_type(), mp.SolverType.kOsqp) result = solver.Solve(prog) self.assertEqual(result, mp.SolutionResult.kSolutionFound) x_expected = np.array([1, 1]) self.assertTrue(np.allclose(prog.GetSolution(x), x_expected))
def test_osqp_solver(self): prog = mp.MathematicalProgram() x = prog.NewContinuousVariables(2, "x") prog.AddLinearConstraint(x[0] >= 1) prog.AddLinearConstraint(x[1] >= 1) prog.AddQuadraticCost(np.eye(2), np.zeros(2), x) solver = OsqpSolver() self.assertTrue(solver.available()) self.assertEqual(solver.solver_type(), mp.SolverType.kOsqp) result = solver.Solve(prog, None, None) self.assertTrue(result.is_success()) x_expected = np.array([1, 1]) self.assertTrue(np.allclose(result.GetSolution(x), x_expected)) self.assertEqual(result.get_solver_details().status_val, 1)
def test(self): prog = mp.MathematicalProgram() x = prog.NewContinuousVariables(2) b = prog.NewBinaryVariables(2) prog.AddLinearConstraint(x[0] + 2 * x[1] + b[0] == 2.) prog.AddLinearConstraint(x[0] - 3.1 * b[1] >= 1) prog.AddLinearConstraint(b[1] + 1.2 * x[1] - b[0] <= 5) prog.AddQuadraticCost(x[0] * x[0]) dut = bnb.MixedIntegerBranchAndBound(prog, OsqpSolver().solver_id()) solution_result = dut.Solve() self.assertEqual(solution_result, mp.SolutionResult.kSolutionFound) self.assertAlmostEqual(dut.GetOptimalCost(), 1.) self.assertAlmostEqual(dut.GetSubOptimalCost(0), 1.) self.assertAlmostEqual(dut.GetSolution(x[0], 0), 1.) self.assertAlmostEqual(dut.GetSolution(x[0], 1), 1.) np.testing.assert_allclose(dut.GetSolution(x, 0), [1., 0.], atol=1e-12)
def unavailable(self): """Per the BUILD file, this test is only run when OSQP is disabled.""" solver = OsqpSolver() self.assertFalse(solver.available())