Example #1
0
    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()))
Example #2
0
    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()))
Example #3
0
    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)
Example #4
0
    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
Example #5
0
    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
Example #6
0
    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
Example #7
0
    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
Example #8
0
    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)
Example #9
0
    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)
Example #10
0
    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)
Example #11
0
    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)
Example #12
0
    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])
Example #13
0
    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])
Example #14
0
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
Example #15
0
    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)
Example #16
0
    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)