Created
August 29, 2017 15:12
-
-
Save yogabonito/f653e4cc027915d497d40fc406aefc72 to your computer and use it in GitHub Desktop.
Max-P-Regions exact
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"%matplotlib inline\n", | |
"from matplotlib import pyplot as plt\n", | |
"import libpysal as ps\n", | |
"import geopandas as gpd\n", | |
"from shapely.geometry import Polygon" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Making the lattice" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We are generating a 3x3 lattice: " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"{0: [3, 1],\n", | |
" 1: [0, 4, 2],\n", | |
" 2: [1, 5],\n", | |
" 3: [0, 6, 4],\n", | |
" 4: [1, 3, 7, 5],\n", | |
" 5: [2, 4, 8],\n", | |
" 6: [3, 7],\n", | |
" 7: [4, 6, 8],\n", | |
" 8: [5, 7]}" | |
] | |
}, | |
"execution_count": 2, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lat_w = ps.weights.util.lat2W(nrows=3, ncols=3, rook=True, id_type=\"int\")\n", | |
"neighbor_dict = lat_w.neighbors\n", | |
"neighbor_dict" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Defining the data (_hardcoded_)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"{0: 350.2,\n", | |
" 1: 400.5,\n", | |
" 2: 430.8,\n", | |
" 3: 490.4,\n", | |
" 4: 410.9,\n", | |
" 5: 450.4,\n", | |
" 6: 560.1,\n", | |
" 7: 500.7,\n", | |
" 8: 498.6}" | |
] | |
}, | |
"execution_count": 3, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"value_list = [350.2, 400.5, 430.8,\n", | |
" 490.4, 410.9, 450.4,\n", | |
" 560.1, 500.7, 498.6]\n", | |
"value_dict = {area: value \n", | |
" for area, value in zip(neighbor_dict.keys(),\n", | |
" value_list)}\n", | |
"value_dict" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"{0: 30, 1: 25, 2: 31, 3: 28, 4: 32, 5: 30, 6: 35, 7: 27, 8: 33}" | |
] | |
}, | |
"execution_count": 4, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"spatially_extensive_attr_list = [30, 25, 31,\n", | |
" 28, 32, 30,\n", | |
" 35, 27, 33]\n", | |
"spatially_extensive_attr_dict = {area: value \n", | |
" for area, value in zip(neighbor_dict.keys(),\n", | |
" spatially_extensive_attr_list)}\n", | |
"spatially_extensive_attr_dict" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nCfg/Oqq8QAVy9TUAAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f509123acc0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"geometry = [\n", | |
" Polygon([(x, y),\n", | |
" (x, y+1),\n", | |
" (x+1, y+1),\n", | |
" (x+1, y)]) for y in range(3) for x in range(3)\n", | |
"]\n", | |
"\n", | |
"gdf = gpd.GeoDataFrame(\n", | |
" {\"values\": value_list},\n", | |
" geometry=geometry)\n", | |
"gdf.plot(column=\"values\")\n", | |
"plt.gca().invert_yaxis()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Solving the Max-p-Regions Problem" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from region.max_p_regions.exact import MaxPExact" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"start solving with <pulp.solvers.COIN_CMD object at 0x7f5092f37278>\n", | |
"solved\n" | |
] | |
} | |
], | |
"source": [ | |
"maxp = MaxPExact()\n", | |
"#%timeit -n1 maxp.fit_from_dict(neighbor_dict, value_dict, spatially_extensive_attr_dict, threshold=120, solver=\"cbc\")\n", | |
"maxp.fit_from_dict(neighbor_dict, value_dict, spatially_extensive_attr_dict, threshold=120, solver=\"cbc\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"{0: 0, 1: 0, 2: 0, 3: 7, 4: 0, 5: 0, 6: 7, 7: 7, 8: 7}" | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"maxp.labels_" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f509118e3c8>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"from region.util import array_from_dict_values\n", | |
"labels_arr = array_from_dict_values(maxp.labels_)\n", | |
"gdf[\"region\"] = labels_arr\n", | |
"gdf.plot(column=\"region\", cmap='tab20c')\n", | |
"plt.gca().invert_yaxis()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.5.2" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment