Last active
April 21, 2020 01:23
-
-
Save yogabonito/9612dc53d2a313561c59dacdbe839f97 to your computer and use it in GitHub Desktop.
Max-p-Regions heuristic
This file contains hidden or 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": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from region.max_p_regions.heuristics import MaxPHeu\n", | |
"from region.p_regions.azp import *" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"%matplotlib inline" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import geopandas as gpd\n", | |
"import numpy as np\n", | |
"import pandas as pd\n", | |
"from matplotlib import pyplot as plt\n", | |
"from shapely.geometry import Polygon\n", | |
"import libpysal.api as ps_api" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def convert_from_geodataframe(gdf):\n", | |
" w = ps_api.Rook.from_dataframe(gdf)\n", | |
" graph = w.to_networkx()\n", | |
" adj = nx.to_scipy_sparse_matrix(graph)\n", | |
" neighbor_dict = w.neighbors\n", | |
" return adj, graph, neighbor_dict, w" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def draw_results(azp, gdf, invert_y_axis=True):\n", | |
" gdf[\"region\"] = azp.labels_\n", | |
" gdf.plot(column=\"region\", cmap='tab20c')\n", | |
" if invert_y_axis:\n", | |
" plt.gca().invert_yaxis()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Example 1: 3x3 lattice" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Inputs" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nCfg/Oqq8QAVy9TUAAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f0557522f28>" | |
] | |
}, | |
"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", | |
"areas_gdf = gpd.GeoDataFrame(geometry=geometry)\n", | |
"\n", | |
"attr = np.array([350.2, 400.5, 430.8,\n", | |
" 490.4, 410.9, 450.4,\n", | |
" 560.1, 500.7, 498.6])\n", | |
"attr_dict = {area: value \n", | |
" for area, value in zip(areas_gdf.index,\n", | |
" attr)}\n", | |
"\n", | |
"spatially_extensive_attr = np.array([30, 25, 31,\n", | |
" 28, 32, 30,\n", | |
" 35, 27, 33])\n", | |
"spatially_extensive_attr_dict = {area: value\n", | |
" for area, value in zip(areas_gdf.index,\n", | |
" spatially_extensive_attr)}\n", | |
"\n", | |
"areas_gdf[\"attr\"] = attr\n", | |
"areas_gdf[\"spatially_extensive_attr\"] = spatially_extensive_attr\n", | |
"\n", | |
"areas_gdf.plot(column=\"attr\")\n", | |
"plt.gca().invert_yaxis()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"adj, graph, neighbor_dict, w = convert_from_geodataframe(areas_gdf)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Solving the Max-p-Regions Problem" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Local Search: AZP" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n6zdDIvbbAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f0557534da0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"maxp = MaxPHeu(random_state=1)\n", | |
"maxp.fit_from_scipy_sparse_matrix(adj=adj,\n", | |
" attr=attr,\n", | |
" spatially_extensive_attr=spatially_extensive_attr,\n", | |
" threshold=120,\n", | |
" max_it=3)\n", | |
"draw_results(maxp, areas_gdf)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Local Search: AZP-SA" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n6zdDIvbbAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f0557534390>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"local_search = AZPSimulatedAnnealing(\n", | |
" init_temperature=1, max_iterations=float(\"inf\"),\n", | |
" min_sa_moves=0, nonmoving_steps_before_stop=3,\n", | |
" random_state=None)\n", | |
"maxp = MaxPHeu(local_search=local_search, random_state=1)\n", | |
"maxp.fit_from_scipy_sparse_matrix(adj=adj,\n", | |
" attr=attr,\n", | |
" spatially_extensive_attr=spatially_extensive_attr,\n", | |
" threshold=120,\n", | |
" max_it=3)\n", | |
"draw_results(maxp, areas_gdf)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Local Search: AZP-Basic-Tabu" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAQIAAAD8CAYAAACcoKqNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADUlJREFUeJzt3V+oHvWdx/H3Z2NsF5QamgeUJMdYG1i02GoPadwuS9hS\niKGYi1qIF7UWS6hbWYXe2C6krDdLbyy4inKoUi2i7qrIaYkUoRbbC1NjNmr+rMtRKEYCxqRNlLa6\nWb578Uzs2eOJz2hmnnOOvl8wZP78zsw3v+T5nJl5hvmlqpD00fZXC12ApIVnEEgyCCQZBJIwCCRh\nEEjCIJCEQSAJg0AScMZCHXjlypW1du3ahTq89JHw7LPPvl5Vg1HtFiwI1q5dy65duxbq8NJHQpLf\ntWnnpYEkg0CSQSAJg0ASBoEkWgZBkk1JXkwyk+TmebZ/LMlDzfadSdZ2Xaik/owMgiTLgDuAK4CL\ngKuTXDSn2XXA76vq08CPgB92Xaik/rQ5I1gPzFTVy1X1NvAgsGVOmy3Avc38w8CXkqS7MiX1qc0D\nRauAV2YtHwS+cKo2VXUiyTHgk8Drsxsl2QZsA5iYmGhVoHkivduKFSs4evRoZ/sb65OFVTUFTAFM\nTk62fmvq4cOHe6tpqRgMBvYD9sNJg8HIp4bflzaXBq8Ca2Ytr27WzdsmyRnAJ4AjXRQoqX9tguAZ\nYF2SC5KcCWwFpue0mQa+0cxfBfyyfE+6tGSMvDRorvlvAH4BLAPuqap9SW4BdlXVNHA38NMkM8BR\nhmEhaYlodY+gqnYAO+as2z5r/s/A17otTdK4+GShJINAkkEgCYNAEgaBJAwCSRgEkjAIJGEQSMIg\nkIRBIAmDQBIGgSQMAkkYBJIwCCRhEEjCIJCEQSAJg0ASBoEkDAJJGASSMAgk0TIIkmxK8mKSmSQ3\nz7P92iSHk+xppm91X6qkvowc6SjJMuAO4MsMh0R/Jsl0Ve2f0/Shqrqhhxol9azNGcF6YKaqXq6q\nt4EHgS39liVpnNoEwSrglVnLB5t1c301yfNJHk6yZp7tJNmWZFeSXY5xLy0eXd0s/BmwtqouAZ4A\n7p2vUVVNVdVkVU0OBoOODi3pdLUJgleB2b/hVzfr3lFVR6rqrWbxx8DnuylP0ji0CYJngHVJLkhy\nJrAVmJ7dIMl5sxavBA50V6Kkvo381qCqTiS5AfgFsAy4p6r2JbkF2FVV08A/JbkSOAEcBa7tsWZJ\nHRsZBABVtQPYMWfd9lnz3wO+121pksbFJwslGQSSDAJJGASSMAgkYRBIwiCQhEEgCYNAEgaBJAwC\nSRgEkjAIJGEQSMIgkIRBIAmDQBIGgSQMAkkYBJIwCCRhEEjCIJBEiyBIck+S15LsPcX2JLktyUwz\nCOpl3ZcpqU9tzgh+Amx6j+1XAOuaaRtw5+mXJWmcRgZBVT3FcBizU9kC3FdDTwPnzBkLUdIi18U9\nglXAK7OWDzbrJC0RrcY+7EqSbQwvH5iYmGj9c4PBoK+SlhT7Ych+gCSd7q+LIHgVWDNreXWz7l2q\nagqYApicnKy2B7jzVy+dTn0fCtdvvJDDhw8vdBkLbjAY2A90H4ZdXBpMA9c03x5sAI5V1aEO9itp\nTEaeESR5ANgIrExyEPgBsBygqu5iOFz6ZmAG+CPwzb6KldSPkUFQVVeP2F7AdzqrSNLY+WShJINA\nkkEgCYNAEgaBJAwCSRgEkjAIJGEQSMIgkIRBIAmDQBIGgSQMAkkYBJIwCCRhEEjCIJCEQSAJg0AS\nBoEkDAJJGASSMAgk0SIIktyT5LUke0+xfWOSY0n2NNP27suU1Kc2g6D+BLgduO892vy6qr7SSUWS\nxm7kGUFVPQUcHUMtkhZIV/cILk/yXJLHk1zc0T4ljUmbS4NRdgPnV9WbSTYDjwHr5muYZBuwDWBi\nYqKDQ0vqwmmfEVTV8ap6s5nfASxPsvIUbaeqarKqJgeDwekeWlJHTjsIkpybJM38+mafR053v5LG\nZ+SlQZIHgI3AyiQHgR8AywGq6i7gKuD6JCeAPwFbq6p6q1hS50YGQVVdPWL77Qy/XpS0RPlkoSSD\nQJJBIAmDQBIGgSQMAkkYBJIwCCRhEEjCIJCEQSAJg0ASBoEkDAJJGASSMAgkYRBIwiCQhEEgCYNA\nEgaBJAwCSRgEkjAIJNEiCJKsSfJkkv1J9iW5cZ42SXJbkpkkzye5rJ9yJfWhzWjIJ4DvVtXuJGcD\nzyZ5oqr2z2pzBcMRkNcBXwDubP6UtASMPCOoqkNVtbuZfwM4AKya02wLcF8NPQ2ck+S8zquV1Iv3\ndY8gyVrgUmDnnE2rgFdmLR/k3WEhaZFqc2kAQJKzgEeAm6rq+Ac5WJJtwDaAiYmJ1j93/cYLP8jh\nPnQGg8FCl7Ao2A+QpNP9tQqCJMsZhsD9VfXoPE1eBdbMWl7drPt/qmoKmAKYnJxsPXT6nb96qW3T\nD63rN15oP2A/nNT1L8c23xoEuBs4UFW3nqLZNHBN8+3BBuBYVR3qsE5JPWpzRvBF4OvAC0n2NOu+\nD0wAVNVdwA5gMzAD/BH4ZvelSurLyCCoqt8A73lBUlUFfKeroiSNl08WSjIIJBkEkjAIJGEQSMIg\nkIRBIAmDQBIGgSQMAkkYBJIwCCRhEEjCIJCEQSAJg0ASBoEkDAJJGASSMAgkYRBIwiCQhEEgCYNA\nEu2GPFuT5Mkk+5PsS3LjPG02JjmWZE8zbe+nXEl9aDPk2Qngu1W1O8nZwLNJnqiq/XPa/bqqvtJ9\niZL6NvKMoKoOVdXuZv4N4ACwqu/CJI3P+7pHkGQtcCmwc57Nlyd5LsnjSS7uoDZJY9Lm0gCAJGcB\njwA3VdXxOZt3A+dX1ZtJNgOPAevm2cc2YBvAxMTEBy5aUrdanREkWc4wBO6vqkfnbq+q41X1ZjO/\nA1ieZOU87aaqarKqJgeDwWmWLqkrbb41CHA3cKCqbj1Fm3ObdiRZ3+z3SJeFSupPm0uDLwJfB15I\nsqdZ931gAqCq7gKuAq5PcgL4E7C1qqqHeiX1YGQQVNVvgIxocztwe1dFSRovnyyUZBBIMggkYRBI\nwiCQhEEgCYNAEgaBJAwCSRgEkjAIJGEQSMIgkIRBIAmDQBIGgSQMAkkYBJIwCCRhEEjCIJCEQSAJ\ng0ASBoEk2g159vEkv21GOt6X5F/mafOxJA8lmUmysxk1WdIS0eaM4C3gH6rqs8DngE1JNsxpcx3w\n+6r6NPAj4IfdlimpTyODoIbebBaXN9PccQ23APc28w8DXzo5KKqkxa/tsOjLmgFQXwOeqKqdc5qs\nAl4BqKoTwDHgk10WKqlHVdV6As4BngQ+M2f9XmD1rOWXgJXz/Pw2YBewa2JiotpYsWJFMTwD+UhP\nSRa8hsUw2Q/DacWKFa0+P8CuNp/tNsOiv6Oq/pDkSWATww//Sa8Ca4CDSc4APgEcmefnp4ApgMnJ\nyWpzzKNHj76fEiV9AG2+NRgkOaeZ/2vgy8B/zWk2DXyjmb8K+GWTRpKWgDZnBOcB9yZZxjA4/r2q\nfp7kFoanHdPA3cBPk8wAR4GtvVUsqXMjg6CqngcunWf99lnzfwa+1m1pksbFJwslGQSSDAJJGASS\nMAgkAVmor/uTHAZ+16LpSuD1nsuxBmv4sNZwflUNRjVasCBoK8muqpq0Bmuwhv5q8NJAkkEgaWkE\nwdRCF4A1nGQNQx+6Ghb9PQJJ/VsKZwSSerZogiDJpiQvNi9AvXme7b2/ILVFDdcmOZxkTzN9q+Pj\n35PktSR7T7E9SW5r6ns+yWVdHr9lDRuTHJvVB9vna3eaNaxJ8mSS/c0Lc2+cp02vfdGyhl77Yqwv\nDn4/byjqawKWMXyr0aeAM4HngIvmtPlH4K5mfivw0ALUcC1we4/98PfAZcDeU2zfDDwOBNgA7FyA\nGjYCP+/5/8N5wGXN/NnAf8/zb9FrX7Ssode+aP5uZzXzy4GdwIY5bTr5XCyWM4L1wExVvVxVbwMP\nMnwh6mx9vyC1TQ29qqqnGL7P4VS2APfV0NPAOUnOG3MNvauqQ1W1u5l/AzjA8L2Ys/XaFy1r6FXz\ndxvLi4MXSxC88/LTxkHe3el9vyC1TQ0AX21ORR9OsqbD47fRtsa+Xd6crj6e5OI+D9Sc6l7K8Lfh\nbGPri/eoAXrui3G9OHixBMFS8TNgbVVdAjzBX5L4o2Q3w8dWPwv8G/BYXwdKchbwCHBTVR3v6zin\nUUPvfVFV/1tVnwNWA+uTfKbrY8DiCYKTLz89aXWzbt427/WC1D5rqKojVfVWs/hj4PMdHr+NNv3U\nq6o6fvJ0tap2AMuTrOz6OEmWM/wA3l9Vj87TpPe+GFXDuPqi2f8fGL5BfNOcTZ18LhZLEDwDrEty\nQZIzGd70mJ7Tpu8XpI6sYc416JUMrxvHaRq4prljvgE4VlWHxllAknNPXoMmWc/w/1CXgUyz/7uB\nA1V16yma9doXbWrouy8yzhcH93XH8wPcId3M8M7sS8A/N+tuAa5s5j8O/AcwA/wW+NQC1PCvwD6G\n3yg8CfxNx8d/ADgE/A/Da97rgG8D366/3EW+o6nvBWCyhz4YVcMNs/rgaeBve6jh7xjeFHse2NNM\nm8fZFy1r6LUvgEuA/2xq2Ats7+tz4ZOFkhbNpYGkBWQQSDIIJBkEkjAIJGEQSMIgkIRBIAn4P0Zi\n6zdDIvbbAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f0553a99a58>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"local_search = AZPBasicTabu(\n", | |
" tabu_length=3,\n", | |
" repetitions_before_termination=5,\n", | |
" random_state=None)\n", | |
"maxp = MaxPHeu(local_search=local_search, random_state=1)\n", | |
"maxp.fit_from_scipy_sparse_matrix(adj=adj,\n", | |
" attr=attr,\n", | |
" spatially_extensive_attr=spatially_extensive_attr,\n", | |
" threshold=120,\n", | |
" max_it=3)\n", | |
"draw_results(maxp, areas_gdf)" | |
] | |
}, | |
{ | |
"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