Skip to content

Instantly share code, notes, and snippets.

@yogabonito
Created August 29, 2017 15:12
Show Gist options
  • Save yogabonito/f653e4cc027915d497d40fc406aefc72 to your computer and use it in GitHub Desktop.
Save yogabonito/f653e4cc027915d497d40fc406aefc72 to your computer and use it in GitHub Desktop.
Max-P-Regions exact
Display the source blob
Display the rendered blob
Raw
{
"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