New in version 1.0.
Generate random regions
Randomly form regions given various types of constraints on cardinality and composition.
Randomly combine a given set of areas into two or more regions based on various constraints.
| Parameters: | area_ids : list
num_regions : integer
cardinality : list
contiguity : W
maxiter : int
|
|---|
Examples
>>> import random
>>> import numpy as np
>>> nregs = 13
>>> cards = range(2,14) + [10]
>>> w = pysal.weights.lat2W(10,10,rook=False)
>>> ids = w.id_order
>>>
>>> # unconstrained
>>> random.seed(10)
>>> np.random.seed(10)
>>> t0 = Random_Region(ids)
>>> t0.regions[0]
[19, 14, 43, 37, 66, 3, 79, 41, 38, 68, 2, 1, 60]
>>> # cardinality and contiguity constrained (num_regions implied)
>>> random.seed(60)
>>> np.random.seed(60)
>>> t1 = Random_Region(ids, num_regions=nregs, cardinality=cards, contiguity=w)
>>> t1.regions[0]
[7, 18, 29, 17, 38, 48, 19, 28, 39, 37, 47, 36, 57]
>>> # cardinality constrained (num_regions implied)
>>> random.seed(100)
>>> np.random.seed(100)
>>> t2 = Random_Region(ids, num_regions=nregs, cardinality=cards)
>>> t2.regions[0]
[37, 62]
>>> # number of regions and contiguity constrained
>>> random.seed(100)
>>> np.random.seed(100)
>>> t3 = Random_Region(ids, num_regions=nregs, contiguity=w)
>>> t3.regions[1]
[79, 68, 57, 89, 47, 98, 36, 56, 69, 58, 78, 26, 48]
>>> # cardinality and contiguity constrained
>>> random.seed(60)
>>> np.random.seed(60)
>>> t4 = Random_Region(ids, cardinality=cards, contiguity=w)
>>> t4.regions[0]
[7, 18, 29, 17, 38, 48, 19, 28, 39, 37, 47, 36, 57]
>>> # number of regions constrained
>>> random.seed(100)
>>> np.random.seed(100)
>>> t5 = Random_Region(ids, num_regions=nregs)
>>> t5.regions[0]
[37, 62, 26, 41, 35, 25, 36]
>>> # cardinality constrained
>>> random.seed(100)
>>> np.random.seed(100)
>>> t6 = Random_Region(ids, cardinality=cards)
>>> t6.regions[0]
[37, 62]
>>> # contiguity constrained
>>> random.seed(100)
>>> np.random.seed(100)
>>> t7 = Random_Region(ids, contiguity=w)
>>> t7.regions[0]
[37, 27, 38, 29]
>>>
Attributes
| feasible | boolean | if True then solution was found |
| regions | list | list of lists of regions (each list has the ids of areas in that region) |
Methods
| build_contig_regions | |
| build_noncontig_regions | |
| cards2breaks | |
| get_cards | |
| get_num_regions | |
| get_region_breaks |
Generate a list of Random_Region instances.
| Parameters: | area_ids : list
num_regions : integer
cardinality : list
contiguity : W
maxiter : int
permutations : int
|
|---|
Examples
>>> import random
>>> import numpy as np
>>> nregs = 13
>>> cards = range(2,14) + [10]
>>> w = pysal.lat2W(10,10,rook=False)
>>> ids = w.id_order
>>>
>>> # unconstrained
>>> random.seed(10)
>>> np.random.seed(10)
>>> t0 = Random_Regions(ids, permutations=2)
>>> t0.solutions[0].regions[0]
[19, 14, 43, 37, 66, 3, 79, 41, 38, 68, 2, 1, 60]
>>> # cardinality and contiguity constrained (num_regions implied)
>>> random.seed(60)
>>> np.random.seed(60)
>>> t1 = Random_Regions(ids, num_regions=nregs, cardinality=cards, contiguity=w, permutations=2)
>>> t1.solutions[0].regions[0]
[7, 18, 29, 17, 38, 48, 19, 28, 39, 37, 47, 36, 57]
>>> # cardinality constrained (num_regions implied)
>>> random.seed(100)
>>> np.random.seed(100)
>>> t2 = Random_Regions(ids, num_regions=nregs, cardinality=cards, permutations=2)
>>> t2.solutions[0].regions[0]
[37, 62]
>>> # number of regions and contiguity constrained
>>> random.seed(100)
>>> np.random.seed(100)
>>> t3 = Random_Regions(ids, num_regions=nregs, contiguity=w, permutations=2)
>>> t3.solutions[0].regions[1]
[79, 68, 57, 89, 47, 98, 36, 56, 69, 58, 78, 26, 48]
>>> # cardinality and contiguity constrained
>>> random.seed(60)
>>> np.random.seed(60)
>>> t4 = Random_Regions(ids, cardinality=cards, contiguity=w, permutations=2)
>>> t4.solutions[0].regions[0]
[7, 18, 29, 17, 38, 48, 19, 28, 39, 37, 47, 36, 57]
>>> # number of regions constrained
>>> random.seed(100)
>>> np.random.seed(100)
>>> t5 = Random_Regions(ids, num_regions=nregs, permutations=2)
>>> t5.solutions[0].regions[0]
[37, 62, 26, 41, 35, 25, 36]
>>> # cardinality constrained
>>> random.seed(100)
>>> np.random.seed(100)
>>> t6 = Random_Regions(ids, cardinality=cards, permutations=2)
>>> t6.solutions[0].regions[0]
[37, 62]
>>> # contiguity constrained
>>> random.seed(100)
>>> np.random.seed(100)
>>> t7 = Random_Regions(ids, contiguity=w, permutations=2)
>>> t7.solutions[0].regions[1]
[62, 63, 54, 71]
>>>
Attributes
| solutions | list | list of length permutations containing all Random_Region instances generated |
| solutions_feas | list | list of the Random_Region instances that resulted in feasible solutions |