def test_p_median(self): """ Test topology: A ---- B ---- C ----[HIGH DIST] --- D --- E --- F Expected facilities: 1, 4 """ t = fnss.Topology() nx.add_path(t, "ABCDEF") fnss.set_weights_constant(t, 1) fnss.set_weights_constant(t, 2, [("C", "D")]) distances = dict(nx.all_pairs_dijkstra_path_length(t, weight='weight')) allocation, facilities, cost = algorithms.compute_p_median( distances, 2) self.assertDictEqual( { "A": "B", "B": "B", "C": "B", "D": "E", "E": "E", "F": "E", }, allocation) self.assertSetEqual(set("BE"), facilities) self.assertEqual(4, cost)
def test_p_median_unsorted(self): """ Test topology: A ---- C ---- B ----[HIGH DIST] --- E --- D --- F Expected facilities: 1, 4 """ t = fnss.Topology() nx.add_path(t, "ACBEDF") fnss.set_weights_constant(t, 1) fnss.set_weights_constant(t, 2, [("B", "E")]) distances = dict(nx.all_pairs_dijkstra_path_length(t, weight='weight')) allocation, facilities, cost = algorithms.compute_p_median( distances, 2) assert { "A": "C", "B": "C", "C": "C", "D": "D", "E": "D", "F": "D", } == allocation assert set("CD") == facilities assert 4 == cost
def test_p_median_3(self): # Test topology: # # A ---- C ---- B ----[HIGH DIST] --- E --- D --- F # # Expected facilities: 1, 4 t = fnss.Topology() nx.add_path(t, "ACBEDF") fnss.set_weights_constant(t, 1) fnss.set_weights_constant(t, 2, [("B", "E")]) distances = dict(nx.all_pairs_dijkstra_path_length(t, weight='weight')) allocation, facilities, cost = algorithms.compute_p_median( distances, 3) assert cost == 3
def test_p_median_4(self): """ Test topology: A ---- C ---- B ----[HIGH DIST] --- E --- D --- F Expected facilities: 1, 4 """ t = fnss.Topology() nx.add_path(t, "ACBEDF") fnss.set_weights_constant(t, 1) fnss.set_weights_constant(t, 2, [("B", "E")]) distances = dict(nx.all_pairs_dijkstra_path_length(t, weight='weight')) allocation, facilities, cost = algorithms.compute_p_median(distances, 4) self.assertEqual(2, cost)
def test_p_median_4(self): """ Test topology: A ---- C ---- B ----[HIGH DIST] --- E --- D --- F Expected facilities: 1, 4 """ t = fnss.Topology() t.add_path("ACBEDF") fnss.set_weights_constant(t, 1) fnss.set_weights_constant(t, 2, [("B", "E")]) distances = dict(nx.all_pairs_dijkstra_path_length(t, weight='weight')) allocation, facilities, cost = algorithms.compute_p_median(distances, 4) self.assertEqual(2, cost)
def test_p_median(self): """ Test topology: A ---- B ---- C ----[HIGH DIST] --- D --- E --- F Expected facilities: 1, 4 """ t = fnss.Topology() nx.add_path(t, "ABCDEF") fnss.set_weights_constant(t, 1) fnss.set_weights_constant(t, 2, [("C", "D")]) distances = dict(nx.all_pairs_dijkstra_path_length(t, weight='weight')) allocation, facilities, cost = algorithms.compute_p_median(distances, 2) self.assertDictEqual({"A": "B", "B": "B", "C": "B", "D": "E", "E": "E", "F": "E", }, allocation) self.assertSetEqual(set("BE"), facilities) self.assertEqual(4, cost)
def test_p_median_6(self): """ Test topology: A ---- C ---- B ----[HIGH DIST] --- E --- D --- F Expected facilities: 1, 4 """ t = fnss.Topology() nx.add_path(t, "ACBEDF") fnss.set_weights_constant(t, 1) fnss.set_weights_constant(t, 2, [("B", "E")]) distances = dict(nx.all_pairs_dijkstra_path_length(t, weight='weight')) allocation, facilities, cost = algorithms.compute_p_median( distances, 6) assert {i: i for i in "ABCDEF"} == allocation assert set("ABCDEF") == facilities assert 0 == cost
def test_p_median_6(self): """ Test topology: A ---- C ---- B ----[HIGH DIST] --- E --- D --- F Expected facilities: 1, 4 """ t = fnss.Topology() t.add_path("ACBEDF") fnss.set_weights_constant(t, 1) fnss.set_weights_constant(t, 2, [("B", "E")]) distances = nx.all_pairs_dijkstra_path_length(t, weight='weight') allocation, facilities, cost = algorithms.compute_p_median( distances, 6) self.assertDictEqual({i: i for i in "ABCDEF"}, allocation) self.assertSetEqual(set("ABCDEF"), facilities) self.assertEqual(0, cost)
def test_p_median(self): # Test topology: # # A ---- B ---- C ----[HIGH DIST] --- D --- E --- F # # Expected facilities: 1, 4 t = fnss.Topology() nx.add_path(t, "ABCDEF") fnss.set_weights_constant(t, 1) fnss.set_weights_constant(t, 2, [("C", "D")]) distances = dict(nx.all_pairs_dijkstra_path_length(t, weight='weight')) allocation, facilities, cost = algorithms.compute_p_median( distances, 2) assert allocation == { "A": "B", "B": "B", "C": "B", "D": "E", "E": "E", "F": "E", } assert facilities == set("BE") assert cost == 4