def test_one_edge(self): self.graph = Graph(self.nodes, self.edges[0:1]) self.graph.nodes()[2].update_x(self.graph) self.graph.nodes()[2].update_x(self.graph) self.graph.nodes()[2].update_x(self.graph) problem = MultiAgentProblem(self.graph, 120) problem.solve() self.assertAlmostEqual(self.graph.nodes()[0].x[0], 1.5, 3) self.assertAlmostEqual(self.graph.nodes()[1].x[0], 1.5, 3) self.assertAlmostEqual(self.graph.nodes()[2].x[0], 3.0, 3)
class MultiAgentAdmmTest(unittest.TestCase): def setUp(self): super(MultiAgentAdmmTest, self).setUp() f1 = Problem(lambda x: (x[0] - 1) ** 2, lambda x: 2 * (x - 1)) f2 = Problem(lambda x: (x[0] - 2) ** 2, lambda x: 2 * (x - 2)) f3 = Problem(lambda x: (x[0] - 3) ** 2, lambda x: 2 * (x - 3)) self.nodes = [Node(f, numpy.zeros(1)) for f in [f1, f2, f3]] self.edges = [Edge(self.nodes[l], self.nodes[r], [0], [0]) for l, r in zip([0, 0, 1], [1, 2, 2])] def test_full_graph(self): self.graph = Graph(self.nodes, self.edges) self.assertEqual(len(self.graph.edges()), 3) self.assertEqual(len(self.graph.nodes()), 3) self.assertListEqual([len(self.graph.edges(node)) for node in self.graph.nodes()], [2, 2, 2]) self.assertAlmostEqual(AcceleratedGradient().solve(self.nodes[0].f, numpy.ones(1) * 10), 1.0, 3) self.assertAlmostEqual(AcceleratedGradient().solve(self.nodes[1].f, numpy.ones(1) * 10), 2.0, 3) self.assertAlmostEqual(AcceleratedGradient().solve(self.nodes[2].f, numpy.ones(1) * 10), 3.0, 3) problem = MultiAgentProblem(self.graph, 100) problem.solve() for node in problem.graph.nodes(): self.assertAlmostEqual(node.x, 2.0 * numpy.ones(1), 3) def test_stripped_one(self): self.graph = Graph(self.nodes, self.edges[:-1]) problem = MultiAgentProblem(self.graph, 120) problem.solve() for node in problem.graph.nodes(): self.assertAlmostEqual(node.x, 2.0 * numpy.ones(1), 4) def test_one_edge(self): self.graph = Graph(self.nodes, self.edges[0:1]) self.graph.nodes()[2].update_x(self.graph) self.graph.nodes()[2].update_x(self.graph) self.graph.nodes()[2].update_x(self.graph) problem = MultiAgentProblem(self.graph, 120) problem.solve() self.assertAlmostEqual(self.graph.nodes()[0].x[0], 1.5, 3) self.assertAlmostEqual(self.graph.nodes()[1].x[0], 1.5, 3) self.assertAlmostEqual(self.graph.nodes()[2].x[0], 3.0, 3)
def test_full_graph(self): self.graph = Graph(self.nodes, self.edges) self.assertEqual(len(self.graph.edges()), 3) self.assertEqual(len(self.graph.nodes()), 3) self.assertListEqual([len(self.graph.edges(node)) for node in self.graph.nodes()], [2, 2, 2]) self.assertAlmostEqual(AcceleratedGradient().solve(self.nodes[0].f, numpy.ones(1) * 10), 1.0, 3) self.assertAlmostEqual(AcceleratedGradient().solve(self.nodes[1].f, numpy.ones(1) * 10), 2.0, 3) self.assertAlmostEqual(AcceleratedGradient().solve(self.nodes[2].f, numpy.ones(1) * 10), 3.0, 3) problem = MultiAgentProblem(self.graph, 100) problem.solve() for node in problem.graph.nodes(): self.assertAlmostEqual(node.x, 2.0 * numpy.ones(1), 3)
def test_stripped_one(self): self.graph = Graph(self.nodes, self.edges[:-1]) problem = MultiAgentProblem(self.graph, 120) problem.solve() for node in problem.graph.nodes(): self.assertAlmostEqual(node.x, 2.0 * numpy.ones(1), 4)