def test_grow_exogenous_regions_queen(self): """Number of regions is exogenous, aka given (Wqueen)""" am = AreaManager(self.Wqueen, self.Y) for regions in xrange(1, max_num_regions): rm = RegionMaker(am, pRegions=regions) self.assertEqual(regions, len(rm.region2Area)) self.assertTrue(am.checkFeasibility(rm.returnRegions()))
def test_azp_gives_at_least_same_obj_func(self): instance = self.map_instance aream = AreaManager(instance.Wrook, instance.Y) rm = RegionMaker(aream, into_regions) ob_before = rm.objInfo rm.AZPImproving() ob_after = rm.objInfo self.assertTrue(ob_before >= ob_after)
def test_true_possible_queen_region_movement(self): """ A region removal yields in fact a feasible solution using queen contiguity. """ am = AreaManager(self.layer.Wqueen, self.layer.Y) rm = RegionMaker(am, initialSolution = self.possible_queen_solution) """ Removing area 49 from region 0 leaves areas attached by a point""" feasible = rm.checkFeasibility(0, 49, rm.region2Area) assert feasible
def test_false_possible_rook_region_movement(self): """ Removing an area that breaks the contiguity constraint. """ am = AreaManager(self.layer.Wrook, self.layer.Y) rm = RegionMaker(am, initialSolution = self.possible_rook_solution) """ Removing area 47 from region 1 leaves area 48 as an island""" feasible = rm.checkFeasibility(1, 47, rm.region2Area) assert not feasible
def test_true_possible_rook_region_movement(self): """ A possible region change is in fact a feasible movement using rook contiguity. """ am = AreaManager(self.layer.Wrook, self.layer.Y) rm = RegionMaker(am, initialSolution = self.possible_rook_solution) """ Removing area 29 from region 1 is an allowed movement""" feasible = rm.checkFeasibility(1, 29, rm.region2Area) assert feasible
def test_false_possible_queen_region_movement(self): """ An infeasible region removal yields an uncontiguos region. Using WQueen. """ am = AreaManager(self.layer.Wqueen, self.layer.Y) rm = RegionMaker(am, initialSolution = self.possible_queen_solution) """ Removing area 47 from region 1 leaves area 58 as an island""" feasible = rm.checkFeasibility(1, 47, rm.region2Area) assert not feasible
def constructPossible(am, pRegions, initialSolution, distanceType, distanceStat, selectionType, objectiveFunctionType): """Create one instance of a region maker""" rm = RegionMaker(am, pRegions, initialSolution=initialSolution, distanceType=distanceType, distanceStat=distanceStat, selectionType=selectionType, objectiveFunctionType=objectiveFunctionType) return rm
def test_azprtabu_gives_at_least_same_obj_func(self): instance = self.map_instance aream = AreaManager(instance.Wrook, instance.Y) rm = RegionMaker(aream, into_regions) convTabu = len(instance.Y) / into_regions ob_before = rm.objInfo rm.reactiveTabuMove(convTabu) ob_after = rm.objInfo self.assertTrue(ob_before >= ob_after)
def test_azptabu_gives_at_least_same_obj_func(self): instance = self.map_instance aream = AreaManager(instance.Wrook, instance.Y) rm = RegionMaker(aream, into_regions) convTabu = max(10, len(instance.Y) / into_regions) tabuLength = 10 ob_before = rm.objInfo rm.AZPTabuMove(tabuLength=tabuLength, convTabu=convTabu) ob_after = rm.objInfo self.assertTrue(ob_before >= ob_after)
def test_azpsa_gives_at_least_same_obj_func(self): instance = self.map_instance aream = AreaManager(instance.Wrook, instance.Y) rm = RegionMaker(aream, into_regions) alpha = 0.85 maxiterations = 3 ob_before = rm.objInfo rm.AZPSA(alpha, maxiterations) ob_after = rm.objInfo self.assertTrue(ob_before >= ob_after)
def test_randomness_on_same_process(self): """This tests that running multiple instances of the region maker on the same script (process) will """ am = AreaManager(self.Wrook, self.Y) regions = [] for _reg in xrange(1, max_num_regions): rm = RegionMaker(am, pRegions=max_num_regions) self.assertEqual(max_num_regions, len(rm.region2Area)) self.assertTrue(am.checkFeasibility(rm.returnRegions())) regions.append(rm.returnRegions()) for regioni in xrange(len(regions) - 1): for regionj in xrange(regioni + 1, len(regions)): self.assertNotEqual(regions[regioni], regions[regionj])
def test_grow_endogenous_range_regions(self): """Number of regions is endogenous with a range value""" am = AreaManager(self.Wqueen, self.Y) rm = RegionMaker(am) self.assertIsNotNone(rm)
def test_grow_exogenous_regions_with_initial_solution(self): """Number of regions is exogenous, aka given, and an initial solution""" am = AreaManager(self.Wqueen, self.Y) rm = RegionMaker(am) self.assertIsNotNone(rm)