def setUp(self):
        super().setUp()
        random.seed(123)
        low = 0
        high = 100
        pos = {
            i: (random.randint(low, high), random.randint(low, high))
            for i in range(4)
        }
        self.graph = nx.random_geometric_graph(
            4, np.hypot(high - low, high - low) + 1, pos=pos)
        for w, v in self.graph.edges:
            delta = [
                self.graph.nodes[w]["pos"][i] - self.graph.nodes[v]["pos"][i]
                for i in range(2)
            ]
            self.graph.edges[w, v]["weight"] = np.rint(
                np.hypot(delta[0], delta[1]))

        op = QuadraticProgram()
        for i in range(16):
            op.binary_var()
        self.result = OptimizationResult(
            x=[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],
            fval=272,
            variables=op.variables,
            status=OptimizationResultStatus.SUCCESS,
        )
    def test_prettyprint(self):
        """test prettyprint"""

        with self.subTest("success"):
            q_p = QuadraticProgram()
            q_p.integer_var_list(3)
            result = OptimizationResult(
                x=[1.0, 2.0, 3.0],
                fval=10.1,
                variables=q_p.variables,
                status=OptimizationResultStatus.SUCCESS,
            )
            expected = "\n".join([
                "objective function value: 10.1",
                "variable values: x0=1.0, x1=2.0, x2=3.0",
                "status: SUCCESS",
            ])
            self.assertEqual(result.prettyprint(), expected)

        with self.subTest("failure"):
            q_p = QuadraticProgram()
            q_p.integer_var_list(3)
            result = OptimizationResult(
                x=[-1.0, 2.0, -3.0],
                fval=10.0,
                variables=q_p.variables,
                status=OptimizationResultStatus.FAILURE,
            )
            expected = "\n".join([
                "objective function value: 10.0",
                "variable values: x0=-1.0, x1=2.0, x2=-3.0",
                "status: FAILURE",
            ])
            self.assertEqual(result.prettyprint(), expected)

        with self.subTest("infeasible"):
            q_p = QuadraticProgram()
            q_p.integer_var_list(3, name="y", key_format="_{}")
            result = OptimizationResult(
                x=[1.0, 2.0, -3.0],
                fval=11.0,
                variables=q_p.variables,
                status=OptimizationResultStatus.INFEASIBLE,
            )
            expected = "\n".join([
                "objective function value: 11.0",
                "variable values: y_0=1.0, y_1=2.0, y_2=-3.0",
                "status: INFEASIBLE",
            ])
            self.assertEqual(result.prettyprint(), expected)
 def setUp(self):
     """Set up for the test"""
     super().setUp()
     self.num_set = [8, 7, 6, 5, 4]
     op = QuadraticProgram()
     for _ in range(5):
         op.binary_var()
     self.result = OptimizationResult(
         x=[1, 1, 0, 0, 0], fval=0, variables=op.variables,
         status=OptimizationResultStatus.SUCCESS)
 def setUp(self):
     """Set up for the tests"""
     super().setUp()
     self.graph = nx.gnm_random_graph(5, 8, 123)
     op = QuadraticProgram()
     for _ in range(5):
         op.binary_var()
     self.result = OptimizationResult(
         x=[1, 0, 1, 1, 1],
         fval=4,
         variables=op.variables,
         status=OptimizationResultStatus.SUCCESS,
     )
     self.result_c3 = OptimizationResult(
         x=[1, 0, 1, 1, 0],
         fval=0,
         variables=op.variables,
         status=OptimizationResultStatus.SUCCESS,
     )
Esempio n. 5
0
 def setUp(self):
     """set up the test class"""
     super().setUp()
     self.graph = nx.gnm_random_graph(5, 4, 3)
     op = QuadraticProgram()
     for _ in range(5):
         op.binary_var()
     self.result = OptimizationResult(
         x=[0, 0, 0, 0, 1], fval=1, variables=op.variables,
         status=OptimizationResultStatus.SUCCESS)
Esempio n. 6
0
 def setUp(self):
     super().setUp()
     self.graph = nx.gnm_random_graph(5, 4, 3)
     op = QuadraticProgram()
     for _ in range(5):
         op.binary_var()
     self.result = OptimizationResult(
         x=[1, 1, 1, 1, 0],
         fval=4,
         variables=op.variables,
         status=OptimizationResultStatus.SUCCESS)
    def test_str_repr(self):
        """test str and repr"""

        with self.subTest("success"):
            q_p = QuadraticProgram()
            q_p.integer_var_list(3)
            result = OptimizationResult(
                x=[1.0, 2.0, 3.0],
                fval=10.1,
                variables=q_p.variables,
                status=OptimizationResultStatus.SUCCESS,
            )
            expected = "fval=10.1, x0=1.0, x1=2.0, x2=3.0, status=SUCCESS"
            self.assertEqual(str(result), expected)
            self.assertEqual(repr(result), f"<OptimizationResult: {expected}>")

        with self.subTest("failure"):
            q_p = QuadraticProgram()
            q_p.integer_var_list(3)
            result = OptimizationResult(
                x=[-1.0, 2.0, -3.0],
                fval=10.0,
                variables=q_p.variables,
                status=OptimizationResultStatus.FAILURE,
            )
            expected = "fval=10.0, x0=-1.0, x1=2.0, x2=-3.0, status=FAILURE"
            self.assertEqual(str(result), expected)
            self.assertEqual(repr(result), f"<OptimizationResult: {expected}>")

        with self.subTest("infeasible"):
            q_p = QuadraticProgram()
            q_p.integer_var_list(3, name="y", key_format="_{}")
            result = OptimizationResult(
                x=[1.0, 2.0, -3.0],
                fval=11.0,
                variables=q_p.variables,
                status=OptimizationResultStatus.INFEASIBLE,
            )
            expected = "fval=11.0, y_0=1.0, y_1=2.0, y_2=-3.0, status=INFEASIBLE"
            self.assertEqual(str(result), expected)
            self.assertEqual(repr(result), f"<OptimizationResult: {expected}>")
Esempio n. 8
0
 def setUp(self):
     """Set up for the tests"""
     super().setUp()
     self.values = [10, 40, 30, 50]
     self.weights = [5, 4, 6, 3]
     self.max_weight = 10
     op = QuadraticProgram()
     for _ in range(4):
         op.binary_var()
     self.result = OptimizationResult(
         x=[0, 1, 0, 1], fval=90, variables=op.variables,
         status=OptimizationResultStatus.SUCCESS)
Esempio n. 9
0
 def setUp(self):
     super().setUp()
     self.total_set = [1, 2, 3, 4, 5]
     self.list_of_subsets = [[1, 2, 3], [2, 3, 4], [4, 5], [1, 3], [2]]
     op = QuadraticProgram()
     for _ in range(5):
         op.binary_var()
     self.result = OptimizationResult(
         x=[0, 0, 1, 1, 1],
         fval=3,
         variables=op.variables,
         status=OptimizationResultStatus.SUCCESS)
 def setUp(self):
     """Set up for the tests"""
     super().setUp()
     self.total_set = [1, 2, 3, 4, 5]
     self.list_of_subsets = [[1, 4], [2, 3, 4], [1, 5], [2, 3]]
     op = QuadraticProgram()
     for _ in range(4):
         op.binary_var()
     self.result = OptimizationResult(
         x=[0, 1, 1, 0],
         fval=2,
         variables=op.variables,
         status=OptimizationResultStatus.SUCCESS)
 def setUp(self):
     """Set up for the tests"""
     super().setUp()
     self.weights = [16, 9, 23]
     self.max_weight = 40
     self.max_number_of_bins = 2
     op = QuadraticProgram()
     for _ in range(12):
         op.binary_var()
     self.result = OptimizationResult(
         x=[1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1],
         fval=2.0,
         variables=op.variables,
         status=OptimizationResultStatus.SUCCESS,
     )
 def test_init(self):
     """test init"""
     q_p = QuadraticProgram()
     q_p.integer_var_list(3)
     result = OptimizationResult(x=[1, 2, 3],
                                 fval=10,
                                 variables=q_p.variables,
                                 status=OptimizationResultStatus.SUCCESS)
     np.testing.assert_allclose(result.x, [1, 2, 3])
     self.assertAlmostEqual(result.fval, 10)
     self.assertEqual(result.status, OptimizationResultStatus.SUCCESS)
     self.assertIsNone(result.raw_results)
     self.assertEqual(len(result.samples), 1)
     sample = result.samples[0]
     np.testing.assert_allclose(sample.x, [1, 2, 3])
     self.assertAlmostEqual(sample.fval, 10)
     self.assertEqual(sample.status, OptimizationResultStatus.SUCCESS)
     self.assertAlmostEqual(sample.probability, 1)
Esempio n. 13
0
    def setUp(self):
        super().setUp()
        self._num_of_sites = 2
        self._seed = 0
        self._graph = nx.convert_matrix.from_numpy_matrix(
            np.array([[0, -1], [-1, 0]]))
        self._new_disorder_graph = nx.convert_matrix.from_numpy_matrix(
            np.array([[0, 1], [1, 0]]))

        op = QuadraticProgram()
        for _ in range(2):
            op.binary_var()

        self._result = OptimizationResult(
            x=[0, 0],
            fval=-1 / np.sqrt(2),
            variables=op.variables,
            status=OptimizationResultStatus.SUCCESS,
        )