allocator 0.1.7__tar.gz → 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. allocator-1.0.0/PKG-INFO +132 -0
  2. allocator-1.0.0/README.md +57 -0
  3. allocator-1.0.0/allocator/__init__.py +154 -0
  4. allocator-1.0.0/allocator/api/__init__.py +32 -0
  5. allocator-1.0.0/allocator/api/cluster.py +126 -0
  6. allocator-1.0.0/allocator/api/distance.py +225 -0
  7. allocator-1.0.0/allocator/api/route.py +256 -0
  8. allocator-1.0.0/allocator/api/types.py +52 -0
  9. allocator-1.0.0/allocator/cli/__init__.py +1 -0
  10. allocator-1.0.0/allocator/cli/cluster_cmd.py +104 -0
  11. allocator-1.0.0/allocator/cli/main.py +170 -0
  12. allocator-1.0.0/allocator/cli/route_cmd.py +164 -0
  13. allocator-1.0.0/allocator/core/__init__.py +1 -0
  14. allocator-1.0.0/allocator/core/algorithms.py +200 -0
  15. allocator-1.0.0/allocator/core/routing.py +242 -0
  16. allocator-1.0.0/allocator/distances/__init__.py +17 -0
  17. allocator-1.0.0/allocator/distances/euclidean.py +80 -0
  18. allocator-1.0.0/allocator/distances/external_apis.py +165 -0
  19. allocator-1.0.0/allocator/distances/factory.py +66 -0
  20. allocator-1.0.0/allocator/distances/haversine.py +43 -0
  21. allocator-1.0.0/allocator/io/__init__.py +1 -0
  22. allocator-1.0.0/allocator/io/data_handler.py +174 -0
  23. allocator-1.0.0/allocator/py.typed +2 -0
  24. allocator-1.0.0/allocator/utils.py +37 -0
  25. allocator-1.0.0/allocator/viz/__init__.py +17 -0
  26. allocator-1.0.0/allocator/viz/plotting.py +206 -0
  27. allocator-1.0.0/pyproject.toml +222 -0
  28. allocator-0.1.7/LICENSE +0 -21
  29. allocator-0.1.7/MANIFEST.in +0 -2
  30. allocator-0.1.7/PKG-INFO +0 -134
  31. allocator-0.1.7/README.rst +0 -115
  32. allocator-0.1.7/allocator/__init__.py +0 -1
  33. allocator-0.1.7/allocator/cluster_kahip.py +0 -226
  34. allocator-0.1.7/allocator/cluster_kmeans.py +0 -164
  35. allocator-0.1.7/allocator/compare_kahip_kmeans.py +0 -136
  36. allocator-0.1.7/allocator/distance_matrix.py +0 -306
  37. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-1.png +0 -0
  38. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-10.png +0 -0
  39. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-11.png +0 -0
  40. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-12.png +0 -0
  41. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-13.png +0 -0
  42. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-14.png +0 -0
  43. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-15.png +0 -0
  44. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-16.png +0 -0
  45. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-17.png +0 -0
  46. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-18.png +0 -0
  47. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-19.png +0 -0
  48. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-2.png +0 -0
  49. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-20.png +0 -0
  50. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-21.png +0 -0
  51. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-22.png +0 -0
  52. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-23.png +0 -0
  53. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-24.png +0 -0
  54. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-25.png +0 -0
  55. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-26.png +0 -0
  56. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-27.png +0 -0
  57. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-28.png +0 -0
  58. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-29.png +0 -0
  59. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-3.png +0 -0
  60. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-30.png +0 -0
  61. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-31.png +0 -0
  62. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-32.png +0 -0
  63. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-33.png +0 -0
  64. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-34.png +0 -0
  65. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-35.png +0 -0
  66. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-36.png +0 -0
  67. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-37.png +0 -0
  68. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-38.png +0 -0
  69. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-39.png +0 -0
  70. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-4.png +0 -0
  71. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-40.png +0 -0
  72. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-41.png +0 -0
  73. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-42.png +0 -0
  74. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-43.png +0 -0
  75. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-44.png +0 -0
  76. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-45.png +0 -0
  77. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-46.png +0 -0
  78. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-47.png +0 -0
  79. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-48.png +0 -0
  80. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-49.png +0 -0
  81. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-5.png +0 -0
  82. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-50.png +0 -0
  83. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-6.png +0 -0
  84. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-7.png +0 -0
  85. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-8.png +0 -0
  86. allocator-0.1.7/allocator/examples/GM-buffoon/chonburi/chonburi-gm-9.png +0 -0
  87. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-1.png +0 -0
  88. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-10.png +0 -0
  89. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-11.png +0 -0
  90. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-12.png +0 -0
  91. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-13.png +0 -0
  92. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-14.png +0 -0
  93. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-15.png +0 -0
  94. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-16.png +0 -0
  95. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-17.png +0 -0
  96. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-18.png +0 -0
  97. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-19.png +0 -0
  98. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-2.png +0 -0
  99. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-20.png +0 -0
  100. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-21.png +0 -0
  101. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-22.png +0 -0
  102. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-23.png +0 -0
  103. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-24.png +0 -0
  104. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-25.png +0 -0
  105. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-26.png +0 -0
  106. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-27.png +0 -0
  107. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-28.png +0 -0
  108. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-29.png +0 -0
  109. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-3.png +0 -0
  110. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-30.png +0 -0
  111. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-31.png +0 -0
  112. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-32.png +0 -0
  113. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-33.png +0 -0
  114. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-34.png +0 -0
  115. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-35.png +0 -0
  116. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-36.png +0 -0
  117. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-37.png +0 -0
  118. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-38.png +0 -0
  119. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-39.png +0 -0
  120. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-4.png +0 -0
  121. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-40.png +0 -0
  122. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-41.png +0 -0
  123. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-42.png +0 -0
  124. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-43.png +0 -0
  125. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-44.png +0 -0
  126. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-45.png +0 -0
  127. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-46.png +0 -0
  128. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-47.png +0 -0
  129. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-48.png +0 -0
  130. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-49.png +0 -0
  131. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-5.png +0 -0
  132. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-50.png +0 -0
  133. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-6.png +0 -0
  134. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-7.png +0 -0
  135. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-8.png +0 -0
  136. allocator-0.1.7/allocator/examples/GM-buffoon/delhi/delhi-9.png +0 -0
  137. allocator-0.1.7/allocator/examples/KaHIP/KaFFPaE-balance-edges.png +0 -0
  138. allocator-0.1.7/allocator/examples/KaHIP/KaFFPaE-without-balance-edges.png +0 -0
  139. allocator-0.1.7/allocator/examples/KaHIP/KaHIP-Buffoon.png +0 -0
  140. allocator-0.1.7/allocator/examples/KaHIP/delhi-kaffpae-balance-edges-output.csv +0 -1001
  141. allocator-0.1.7/allocator/examples/KaHIP/delhi-kaffpae-without-balance-edges-output.csv +0 -1001
  142. allocator-0.1.7/allocator/examples/KaHIP/delhi-kahip-buffoon-output.csv +0 -1001
  143. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-1.html +0 -941
  144. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-10.html +0 -941
  145. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-11.html +0 -941
  146. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-12.html +0 -898
  147. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-13.html +0 -855
  148. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-14.html +0 -941
  149. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-15.html +0 -898
  150. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-16.html +0 -941
  151. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-17.html +0 -812
  152. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-18.html +0 -941
  153. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-19.html +0 -984
  154. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-2.html +0 -941
  155. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-20.html +0 -941
  156. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-21.html +0 -941
  157. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-22.html +0 -898
  158. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-23.html +0 -941
  159. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-24.html +0 -898
  160. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-25.html +0 -941
  161. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-26.html +0 -941
  162. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-27.html +0 -941
  163. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-28.html +0 -941
  164. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-29.html +0 -941
  165. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-3.html +0 -941
  166. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-30.html +0 -941
  167. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-31.html +0 -941
  168. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-32.html +0 -941
  169. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-33.html +0 -941
  170. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-34.html +0 -941
  171. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-35.html +0 -898
  172. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-36.html +0 -941
  173. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-37.html +0 -984
  174. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-38.html +0 -941
  175. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-39.html +0 -941
  176. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-4.html +0 -941
  177. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-40.html +0 -941
  178. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-41.html +0 -941
  179. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-42.html +0 -984
  180. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-43.html +0 -984
  181. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-44.html +0 -941
  182. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-45.html +0 -984
  183. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-46.html +0 -941
  184. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-47.html +0 -984
  185. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-48.html +0 -941
  186. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-49.html +0 -941
  187. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-5.html +0 -941
  188. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-50.html +0 -984
  189. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-6.html +0 -984
  190. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-7.html +0 -941
  191. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-8.html +0 -984
  192. allocator-0.1.7/allocator/examples/OSRM-buffoon/chonburi-osrm-9.html +0 -984
  193. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-1.svg +0 -1208
  194. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-10.svg +0 -1219
  195. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-11.svg +0 -1273
  196. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-12.svg +0 -1145
  197. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-13.svg +0 -1236
  198. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-14.svg +0 -1293
  199. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-15.svg +0 -1232
  200. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-16.svg +0 -1260
  201. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-17.svg +0 -1257
  202. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-18.svg +0 -1289
  203. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-19.svg +0 -1258
  204. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-2.svg +0 -1278
  205. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-20.svg +0 -1193
  206. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-21.svg +0 -1227
  207. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-22.svg +0 -1237
  208. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-23.svg +0 -1259
  209. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-24.svg +0 -1181
  210. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-25.svg +0 -1209
  211. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-26.svg +0 -1274
  212. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-27.svg +0 -1233
  213. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-28.svg +0 -1233
  214. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-29.svg +0 -1191
  215. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-3.svg +0 -1274
  216. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-30.svg +0 -1277
  217. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-31.svg +0 -1219
  218. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-32.svg +0 -1293
  219. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-33.svg +0 -1231
  220. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-34.svg +0 -1225
  221. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-35.svg +0 -1298
  222. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-36.svg +0 -1260
  223. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-37.svg +0 -1191
  224. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-38.svg +0 -1273
  225. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-39.svg +0 -1288
  226. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-4.svg +0 -1278
  227. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-40.svg +0 -1187
  228. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-41.svg +0 -1189
  229. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-42.svg +0 -1265
  230. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-43.svg +0 -1224
  231. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-44.svg +0 -1177
  232. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-45.svg +0 -1169
  233. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-46.svg +0 -1209
  234. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-47.svg +0 -1265
  235. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-48.svg +0 -1299
  236. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-49.svg +0 -1267
  237. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-5.svg +0 -1276
  238. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-50.svg +0 -1199
  239. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-6.svg +0 -1197
  240. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-7.svg +0 -1190
  241. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-8.svg +0 -1262
  242. allocator-0.1.7/allocator/examples/TSP-buffoon/delhi-tsp-9.svg +0 -1297
  243. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-1.svg +0 -1316
  244. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-10.svg +0 -1039
  245. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-11.svg +0 -1399
  246. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-12.svg +0 -1217
  247. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-13.svg +0 -1039
  248. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-14.svg +0 -1519
  249. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-15.svg +0 -1537
  250. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-16.svg +0 -1082
  251. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-17.svg +0 -1244
  252. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-18.svg +0 -1463
  253. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-19.svg +0 -1333
  254. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-2.svg +0 -1562
  255. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-20.svg +0 -1038
  256. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-21.svg +0 -1471
  257. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-22.svg +0 -1105
  258. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-23.svg +0 -1561
  259. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-24.svg +0 -1412
  260. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-25.svg +0 -965
  261. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-26.svg +0 -1163
  262. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-27.svg +0 -1329
  263. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-28.svg +0 -1283
  264. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-29.svg +0 -1083
  265. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-3.svg +0 -1176
  266. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-30.svg +0 -1051
  267. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-31.svg +0 -1305
  268. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-32.svg +0 -1161
  269. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-33.svg +0 -1350
  270. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-34.svg +0 -1418
  271. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-35.svg +0 -1007
  272. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-36.svg +0 -1167
  273. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-37.svg +0 -1316
  274. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-38.svg +0 -1064
  275. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-39.svg +0 -1323
  276. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-4.svg +0 -1387
  277. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-40.svg +0 -1023
  278. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-41.svg +0 -1173
  279. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-42.svg +0 -1170
  280. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-43.svg +0 -1347
  281. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-44.svg +0 -1280
  282. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-45.svg +0 -1137
  283. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-46.svg +0 -1204
  284. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-47.svg +0 -1324
  285. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-48.svg +0 -1309
  286. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-49.svg +0 -1461
  287. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-5.svg +0 -1276
  288. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-50.svg +0 -1081
  289. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-6.svg +0 -1149
  290. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-7.svg +0 -1205
  291. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-8.svg +0 -1352
  292. allocator-0.1.7/allocator/examples/TSP-kmeans/delhi-tsp-9.svg +0 -1004
  293. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-1.png +0 -0
  294. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-10.png +0 -0
  295. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-11.png +0 -0
  296. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-12.png +0 -0
  297. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-13.png +0 -0
  298. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-14.png +0 -0
  299. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-15.png +0 -0
  300. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-16.png +0 -0
  301. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-17.png +0 -0
  302. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-18.png +0 -0
  303. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-19.png +0 -0
  304. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-2.png +0 -0
  305. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-20.png +0 -0
  306. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-21.png +0 -0
  307. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-22.png +0 -0
  308. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-23.png +0 -0
  309. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-24.png +0 -0
  310. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-25.png +0 -0
  311. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-26.png +0 -0
  312. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-27.png +0 -0
  313. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-28.png +0 -0
  314. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-29.png +0 -0
  315. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-3.png +0 -0
  316. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-30.png +0 -0
  317. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-31.png +0 -0
  318. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-32.png +0 -0
  319. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-33.png +0 -0
  320. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-34.png +0 -0
  321. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-35.png +0 -0
  322. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-36.png +0 -0
  323. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-37.png +0 -0
  324. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-38.png +0 -0
  325. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-39.png +0 -0
  326. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-4.png +0 -0
  327. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-40.png +0 -0
  328. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-41.png +0 -0
  329. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-42.png +0 -0
  330. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-43.png +0 -0
  331. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-44.png +0 -0
  332. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-45.png +0 -0
  333. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-46.png +0 -0
  334. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-47.png +0 -0
  335. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-48.png +0 -0
  336. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-49.png +0 -0
  337. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-5.png +0 -0
  338. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-50.png +0 -0
  339. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-6.png +0 -0
  340. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-7.png +0 -0
  341. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-8.png +0 -0
  342. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/chonburi/chonburi-tsp-9.png +0 -0
  343. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-1.png +0 -0
  344. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-10.png +0 -0
  345. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-11.png +0 -0
  346. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-12.png +0 -0
  347. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-13.png +0 -0
  348. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-14.png +0 -0
  349. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-15.png +0 -0
  350. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-16.png +0 -0
  351. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-17.png +0 -0
  352. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-18.png +0 -0
  353. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-19.png +0 -0
  354. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-2.png +0 -0
  355. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-20.png +0 -0
  356. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-21.png +0 -0
  357. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-22.png +0 -0
  358. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-23.png +0 -0
  359. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-24.png +0 -0
  360. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-25.png +0 -0
  361. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-26.png +0 -0
  362. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-27.png +0 -0
  363. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-28.png +0 -0
  364. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-29.png +0 -0
  365. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-3.png +0 -0
  366. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-30.png +0 -0
  367. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-31.png +0 -0
  368. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-32.png +0 -0
  369. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-33.png +0 -0
  370. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-34.png +0 -0
  371. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-35.png +0 -0
  372. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-36.png +0 -0
  373. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-37.png +0 -0
  374. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-38.png +0 -0
  375. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-39.png +0 -0
  376. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-4.png +0 -0
  377. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-40.png +0 -0
  378. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-41.png +0 -0
  379. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-42.png +0 -0
  380. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-43.png +0 -0
  381. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-44.png +0 -0
  382. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-45.png +0 -0
  383. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-46.png +0 -0
  384. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-47.png +0 -0
  385. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-48.png +0 -0
  386. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-49.png +0 -0
  387. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-5.png +0 -0
  388. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-50.png +0 -0
  389. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-6.png +0 -0
  390. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-7.png +0 -0
  391. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-8.png +0 -0
  392. allocator-0.1.7/allocator/examples/TSP-ortools-buffoon/delhi/delhi-tsp-9.png +0 -0
  393. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-1.png +0 -0
  394. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-10.png +0 -0
  395. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-11.png +0 -0
  396. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-12.png +0 -0
  397. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-13.png +0 -0
  398. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-14.png +0 -0
  399. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-15.png +0 -0
  400. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-16.png +0 -0
  401. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-17.png +0 -0
  402. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-18.png +0 -0
  403. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-19.png +0 -0
  404. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-2.png +0 -0
  405. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-20.png +0 -0
  406. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-21.png +0 -0
  407. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-22.png +0 -0
  408. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-23.png +0 -0
  409. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-24.png +0 -0
  410. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-25.png +0 -0
  411. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-26.png +0 -0
  412. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-27.png +0 -0
  413. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-28.png +0 -0
  414. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-29.png +0 -0
  415. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-3.png +0 -0
  416. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-30.png +0 -0
  417. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-31.png +0 -0
  418. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-32.png +0 -0
  419. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-33.png +0 -0
  420. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-34.png +0 -0
  421. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-35.png +0 -0
  422. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-36.png +0 -0
  423. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-37.png +0 -0
  424. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-38.png +0 -0
  425. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-39.png +0 -0
  426. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-4.png +0 -0
  427. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-40.png +0 -0
  428. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-41.png +0 -0
  429. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-42.png +0 -0
  430. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-43.png +0 -0
  431. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-44.png +0 -0
  432. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-45.png +0 -0
  433. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-46.png +0 -0
  434. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-47.png +0 -0
  435. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-48.png +0 -0
  436. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-49.png +0 -0
  437. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-5.png +0 -0
  438. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-50.png +0 -0
  439. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-6.png +0 -0
  440. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-7.png +0 -0
  441. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-8.png +0 -0
  442. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/delhi-tsp-9.png +0 -0
  443. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-1.html +0 -1285
  444. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-10.html +0 -554
  445. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-11.html +0 -1414
  446. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-12.html +0 -1156
  447. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-13.html +0 -382
  448. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-14.html +0 -1414
  449. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-15.html +0 -1758
  450. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-16.html +0 -597
  451. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-17.html +0 -984
  452. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-18.html +0 -1285
  453. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-19.html +0 -1199
  454. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-2.html +0 -1973
  455. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-20.html +0 -382
  456. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-21.html +0 -1414
  457. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-22.html +0 -726
  458. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-23.html +0 -1629
  459. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-24.html +0 -1285
  460. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-25.html +0 -554
  461. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-26.html +0 -812
  462. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-27.html +0 -1156
  463. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-28.html +0 -1199
  464. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-29.html +0 -726
  465. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-3.html +0 -597
  466. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-30.html +0 -468
  467. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-31.html +0 -1285
  468. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-32.html +0 -597
  469. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-33.html +0 -1242
  470. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-34.html +0 -1414
  471. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-35.html +0 -382
  472. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-36.html +0 -898
  473. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-37.html +0 -984
  474. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-38.html +0 -554
  475. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-39.html +0 -1199
  476. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-4.html +0 -1156
  477. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-40.html +0 -339
  478. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-41.html +0 -898
  479. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-42.html +0 -812
  480. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-43.html +0 -1199
  481. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-44.html +0 -1070
  482. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-45.html +0 -597
  483. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-46.html +0 -898
  484. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-47.html +0 -1070
  485. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-48.html +0 -941
  486. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-49.html +0 -1457
  487. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-5.html +0 -1113
  488. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-50.html +0 -769
  489. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-6.html +0 -683
  490. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-7.html +0 -898
  491. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-8.html +0 -1371
  492. allocator-0.1.7/allocator/examples/TSP-ortools-kmeans/map/delhi-tsp-9.html +0 -425
  493. allocator-0.1.7/allocator/examples/chonburi-buffon-shortest-ortools-tsp.csv +0 -51
  494. allocator-0.1.7/allocator/examples/chonburi-buffoon-n50.csv +0 -1001
  495. allocator-0.1.7/allocator/examples/chonburi-buffoon-shortest-gm.csv +0 -51
  496. allocator-0.1.7/allocator/examples/chonburi-buffoon-shortest-ortools-tsp.csv +0 -51
  497. allocator-0.1.7/allocator/examples/chonburi-buffoon-shortest-osrm.csv +0 -51
  498. allocator-0.1.7/allocator/examples/chonburi-roads-1k.csv +0 -1001
  499. allocator-0.1.7/allocator/examples/compare-kahip-kmeans/compare-buffoon-kmean.csv +0 -11
  500. allocator-0.1.7/allocator/examples/compare-kahip-kmeans/compare-kaffpae+balance-edges-kmean.csv +0 -11
  501. allocator-0.1.7/allocator/examples/compare-kahip-kmeans/compare-kaffpae-kmean.csv +0 -11
  502. allocator-0.1.7/allocator/examples/delhi-buffoon-n50.csv +0 -1001
  503. allocator-0.1.7/allocator/examples/delhi-buffoon-shortest-gm.csv +0 -51
  504. allocator-0.1.7/allocator/examples/delhi-buffoon-shortest-ortools-tsp.csv +0 -51
  505. allocator-0.1.7/allocator/examples/delhi-buffoon-shortest.csv +0 -51
  506. allocator-0.1.7/allocator/examples/delhi-kmeans-n50.csv +0 -1001
  507. allocator-0.1.7/allocator/examples/delhi-kmeans-shortest-ortools-tsp.csv +0 -51
  508. allocator-0.1.7/allocator/examples/delhi-kmeans-shortest.csv +0 -51
  509. allocator-0.1.7/allocator/examples/delhi-roads-1k.csv +0 -1001
  510. allocator-0.1.7/allocator/examples/init-location.csv +0 -11
  511. allocator-0.1.7/allocator/examples/kmeans/cluster-kmeans-centroids-output.csv +0 -11
  512. allocator-0.1.7/allocator/examples/kmeans/cluster-kmeans-output.csv +0 -1001
  513. allocator-0.1.7/allocator/examples/kmeans/cluster-kmeans-output.png +0 -0
  514. allocator-0.1.7/allocator/examples/kmeans/delhi-kmeans-centroids.csv +0 -11
  515. allocator-0.1.7/allocator/examples/kmeans/delhi-kmeans-output.csv +0 -1001
  516. allocator-0.1.7/allocator/examples/kmeans/delhi-kmeans-output.png +0 -0
  517. allocator-0.1.7/allocator/examples/mst-graph.png +0 -0
  518. allocator-0.1.7/allocator/examples/mst-shortest-path-output.csv +0 -1001
  519. allocator-0.1.7/allocator/examples/random-output-osrm.csv +0 -1001
  520. allocator-0.1.7/allocator/examples/shortest-path-ortools-output.csv +0 -41
  521. allocator-0.1.7/allocator/examples/shortest-path-trip-output.csv +0 -41
  522. allocator-0.1.7/allocator/examples/sort-by-distance/sort-by-distance-by-worker-output.csv +0 -11
  523. allocator-0.1.7/allocator/examples/sort-by-distance/sort-by-distance-output.csv +0 -1001
  524. allocator-0.1.7/allocator/examples/sort-by-distance/sort-by-distance-output.png +0 -0
  525. allocator-0.1.7/allocator/examples/sort-by-distance/worker-locations.csv +0 -11
  526. allocator-0.1.7/allocator/shortest_path_gm.py +0 -155
  527. allocator-0.1.7/allocator/shortest_path_mst_tsp.py +0 -138
  528. allocator-0.1.7/allocator/shortest_path_ortools.py +0 -266
  529. allocator-0.1.7/allocator/shortest_path_osrm.py +0 -167
  530. allocator-0.1.7/allocator/sort_by_distance.py +0 -142
  531. allocator-0.1.7/allocator/tests/__init__.py +0 -15
  532. allocator-0.1.7/allocator/tests/chonburi-roads-50.csv +0 -51
  533. allocator-0.1.7/allocator/tests/test_cluster_kahip.py +0 -35
  534. allocator-0.1.7/allocator/tests/test_sort_by_distance.py +0 -52
  535. allocator-0.1.7/allocator/tests/worker-locations.csv +0 -11
  536. allocator-0.1.7/allocator/utils.py +0 -50
  537. allocator-0.1.7/allocator.egg-info/PKG-INFO +0 -134
  538. allocator-0.1.7/allocator.egg-info/SOURCES.txt +0 -516
  539. allocator-0.1.7/allocator.egg-info/dependency_links.txt +0 -1
  540. allocator-0.1.7/allocator.egg-info/entry_points.txt +0 -10
  541. allocator-0.1.7/allocator.egg-info/requires.txt +0 -16
  542. allocator-0.1.7/allocator.egg-info/top_level.txt +0 -1
  543. allocator-0.1.7/setup.cfg +0 -8
  544. allocator-0.1.7/setup.py +0 -194
@@ -0,0 +1,132 @@
1
+ Metadata-Version: 2.4
2
+ Name: allocator
3
+ Version: 1.0.0
4
+ Summary: Modern Python package for geographic task allocation, clustering, and routing optimization
5
+ Keywords: geographic,allocation,clustering,routing,optimization,tsp,kmeans,geospatial,logistics,shortest-path
6
+ Author: Suriyan Laohaprapanon, Gaurav Sood
7
+ Author-email: Suriyan Laohaprapanon <suriyant@gmail.com>, Gaurav Sood <gsood07@gmail.com>
8
+ License-Expression: MIT
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Intended Audience :: Science/Research
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
19
+ Classifier: Topic :: Scientific/Engineering :: GIS
20
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
21
+ Classifier: Topic :: Utilities
22
+ Classifier: Typing :: Typed
23
+ Requires-Dist: pandas>=2.0.0
24
+ Requires-Dist: numpy>=1.24.0
25
+ Requires-Dist: scikit-learn>=1.3.0
26
+ Requires-Dist: utm>=0.7.0
27
+ Requires-Dist: haversine>=2.8.0
28
+ Requires-Dist: networkx>=3.0
29
+ Requires-Dist: click>=8.0.0
30
+ Requires-Dist: rich>=13.0.0
31
+ Requires-Dist: requests>=2.28.0
32
+ Requires-Dist: googlemaps>=4.6.0
33
+ Requires-Dist: ortools>=9.5.0
34
+ Requires-Dist: matplotlib>=3.6.0
35
+ Requires-Dist: seaborn>=0.13.2
36
+ Requires-Dist: scipy>=1.10.0 ; extra == 'algorithms'
37
+ Requires-Dist: christofides>=1.0.0 ; extra == 'algorithms'
38
+ Requires-Dist: allocator[algorithms,geo] ; extra == 'all'
39
+ Requires-Dist: allocator[all,dev,test,docs] ; extra == 'complete'
40
+ Requires-Dist: ruff>=0.1.0 ; extra == 'dev'
41
+ Requires-Dist: mypy>=1.5.0 ; extra == 'dev'
42
+ Requires-Dist: black>=23.0.0 ; extra == 'dev'
43
+ Requires-Dist: isort>=5.12.0 ; extra == 'dev'
44
+ Requires-Dist: pre-commit>=3.0.0 ; extra == 'dev'
45
+ Requires-Dist: sphinx>=7.0.0 ; extra == 'docs'
46
+ Requires-Dist: furo>=2023.9.10 ; extra == 'docs'
47
+ Requires-Dist: myst-parser>=2.0.0 ; extra == 'docs'
48
+ Requires-Dist: linkify-it-py>=2.0.0 ; extra == 'docs'
49
+ Requires-Dist: sphinx-autodoc-typehints>=1.24.0 ; extra == 'docs'
50
+ Requires-Dist: sphinx-design>=0.5.0 ; extra == 'docs'
51
+ Requires-Dist: folium>=0.14.0 ; extra == 'geo'
52
+ Requires-Dist: polyline>=2.0.0 ; extra == 'geo'
53
+ Requires-Dist: pytest>=7.4.0 ; extra == 'test'
54
+ Requires-Dist: pytest-cov>=4.1.0 ; extra == 'test'
55
+ Requires-Dist: pytest-xdist>=3.3.0 ; extra == 'test'
56
+ Requires-Dist: coverage>=7.2.0 ; extra == 'test'
57
+ Requires-Dist: hypothesis>=6.82.0 ; extra == 'test'
58
+ Maintainer: Gaurav Sood
59
+ Maintainer-email: Gaurav Sood <gsood07@gmail.com>
60
+ Requires-Python: >=3.11
61
+ Project-URL: Bug Reports, https://github.com/geosensing/allocator/issues
62
+ Project-URL: Changelog, https://github.com/geosensing/allocator/blob/main/CHANGELOG.md
63
+ Project-URL: Documentation, https://geosensing.github.io/allocator/
64
+ Project-URL: Homepage, https://github.com/geosensing/allocator
65
+ Project-URL: Repository, https://github.com/geosensing/allocator.git
66
+ Project-URL: Source Code, https://github.com/geosensing/allocator
67
+ Provides-Extra: algorithms
68
+ Provides-Extra: all
69
+ Provides-Extra: complete
70
+ Provides-Extra: dev
71
+ Provides-Extra: docs
72
+ Provides-Extra: geo
73
+ Provides-Extra: test
74
+ Description-Content-Type: text/markdown
75
+
76
+ # allocator: Efficiently collect data from geographically distributed locations
77
+
78
+ [![PyPI version](https://img.shields.io/pypi/v/allocator.svg)](https://pypi.python.org/pypi/allocator)
79
+ [![Downloads](https://pepy.tech/badge/allocator)](https://pepy.tech/project/allocator)
80
+ [![CI](https://github.com/geosensing/allocator/actions/workflows/ci.yml/badge.svg)](https://github.com/geosensing/allocator/actions/workflows/ci.yml)
81
+ [![Documentation](https://img.shields.io/badge/docs-github.io-blue)](https://geosensing.github.io/allocator/)
82
+
83
+ **Allocator** provides a modern, Pythonic API for geographic task allocation, clustering, and routing optimization.
84
+
85
+ ## Key Features
86
+
87
+ - **🎯 Clustering**: Group geographic points into balanced zones
88
+ - **🛣️ Routing**: Find optimal paths through locations (TSP solving)
89
+ - **📍 Assignment**: Connect points to closest workers/centers
90
+ - **🚀 Performance**: Optimized algorithms with NumPy and scikit-learn
91
+ - **📦 Modern API**: Clean Python interface + unified CLI
92
+
93
+ ## Quick Start
94
+
95
+ ```bash
96
+ pip install allocator
97
+ ```
98
+
99
+ ```python
100
+ import allocator
101
+ import pandas as pd
102
+
103
+ # Geographic locations
104
+ locations = pd.DataFrame({
105
+ 'longitude': [100.5018, 100.5065, 100.5108],
106
+ 'latitude': [13.7563, 13.7590, 13.7633]
107
+ })
108
+
109
+ # Group into zones
110
+ clusters = allocator.cluster(locations, n_clusters=2)
111
+
112
+ # Find optimal route
113
+ route = allocator.shortest_path(locations)
114
+
115
+ # Assign to service centers
116
+ centers = pd.DataFrame({
117
+ 'longitude': [100.50, 100.52],
118
+ 'latitude': [13.75, 13.77]
119
+ })
120
+ assignments = allocator.assign(locations, centers)
121
+ ```
122
+
123
+ ## Documentation & Examples
124
+
125
+ - **📖 [Full Documentation](https://geosensing.github.io/allocator/)**
126
+ - **🚀 [Installation & Tutorial](https://geosensing.github.io/allocator/quickstart.html)**
127
+ - **🔧 [API Reference](https://geosensing.github.io/allocator/api/clustering.html)**
128
+ - **💡 [Real-World Examples](https://geosensing.github.io/allocator/examples/overview.html)**
129
+
130
+ ## License & Contributing
131
+
132
+ MIT License. Contributions welcome - see [Contributing Guide](https://geosensing.github.io/allocator/contributing.html).
@@ -0,0 +1,57 @@
1
+ # allocator: Efficiently collect data from geographically distributed locations
2
+
3
+ [![PyPI version](https://img.shields.io/pypi/v/allocator.svg)](https://pypi.python.org/pypi/allocator)
4
+ [![Downloads](https://pepy.tech/badge/allocator)](https://pepy.tech/project/allocator)
5
+ [![CI](https://github.com/geosensing/allocator/actions/workflows/ci.yml/badge.svg)](https://github.com/geosensing/allocator/actions/workflows/ci.yml)
6
+ [![Documentation](https://img.shields.io/badge/docs-github.io-blue)](https://geosensing.github.io/allocator/)
7
+
8
+ **Allocator** provides a modern, Pythonic API for geographic task allocation, clustering, and routing optimization.
9
+
10
+ ## Key Features
11
+
12
+ - **🎯 Clustering**: Group geographic points into balanced zones
13
+ - **🛣️ Routing**: Find optimal paths through locations (TSP solving)
14
+ - **📍 Assignment**: Connect points to closest workers/centers
15
+ - **🚀 Performance**: Optimized algorithms with NumPy and scikit-learn
16
+ - **📦 Modern API**: Clean Python interface + unified CLI
17
+
18
+ ## Quick Start
19
+
20
+ ```bash
21
+ pip install allocator
22
+ ```
23
+
24
+ ```python
25
+ import allocator
26
+ import pandas as pd
27
+
28
+ # Geographic locations
29
+ locations = pd.DataFrame({
30
+ 'longitude': [100.5018, 100.5065, 100.5108],
31
+ 'latitude': [13.7563, 13.7590, 13.7633]
32
+ })
33
+
34
+ # Group into zones
35
+ clusters = allocator.cluster(locations, n_clusters=2)
36
+
37
+ # Find optimal route
38
+ route = allocator.shortest_path(locations)
39
+
40
+ # Assign to service centers
41
+ centers = pd.DataFrame({
42
+ 'longitude': [100.50, 100.52],
43
+ 'latitude': [13.75, 13.77]
44
+ })
45
+ assignments = allocator.assign(locations, centers)
46
+ ```
47
+
48
+ ## Documentation & Examples
49
+
50
+ - **📖 [Full Documentation](https://geosensing.github.io/allocator/)**
51
+ - **🚀 [Installation & Tutorial](https://geosensing.github.io/allocator/quickstart.html)**
52
+ - **🔧 [API Reference](https://geosensing.github.io/allocator/api/clustering.html)**
53
+ - **💡 [Real-World Examples](https://geosensing.github.io/allocator/examples/overview.html)**
54
+
55
+ ## License & Contributing
56
+
57
+ MIT License. Contributions welcome - see [Contributing Guide](https://geosensing.github.io/allocator/contributing.html).
@@ -0,0 +1,154 @@
1
+ """
2
+ Allocator v1.0: Optimally Allocate Geographically Distributed Tasks
3
+
4
+ A modern Python package for geographic task allocation, clustering, and routing optimization.
5
+
6
+ Key Features:
7
+ - Cluster geographic points into balanced groups
8
+ - Find optimal routes through locations (TSP solving)
9
+ - Assign points to closest workers/centers
10
+ - Multiple distance metrics (euclidean, haversine, OSRM, Google Maps)
11
+ - Clean API with structured results and rich metadata
12
+ - Unified CLI with beautiful terminal output
13
+
14
+ Quick Start:
15
+ >>> import allocator
16
+ >>> import pandas as pd
17
+ >>>
18
+ >>> # Create sample data
19
+ >>> data = pd.DataFrame({
20
+ ... 'longitude': [101.0, 101.1, 101.2],
21
+ ... 'latitude': [13.0, 13.1, 13.2]
22
+ ... })
23
+ >>>
24
+ >>> # Cluster locations
25
+ >>> result = allocator.cluster(data, n_clusters=2)
26
+ >>> print(result.labels)
27
+ >>>
28
+ >>> # Find optimal route
29
+ >>> route = allocator.shortest_path(data, method='ortools')
30
+ >>> print(route.route)
31
+
32
+ For more examples: https://geosensing.github.io/allocator/
33
+ """
34
+
35
+ import logging
36
+ import sys
37
+
38
+ # Import modern API
39
+ from .api import (
40
+ ClusterResult,
41
+ ComparisonResult,
42
+ RouteResult,
43
+ SortResult,
44
+ assign_to_closest,
45
+ cluster,
46
+ distance_assignment,
47
+ kmeans,
48
+ shortest_path,
49
+ sort_by_distance,
50
+ tsp_christofides,
51
+ tsp_google,
52
+ tsp_ortools,
53
+ tsp_osrm,
54
+ )
55
+
56
+ # Import utilities for advanced users
57
+ from .distances import (
58
+ euclidean_distance_matrix,
59
+ get_distance_matrix,
60
+ google_distance_matrix,
61
+ haversine_distance_matrix,
62
+ latlon2xy,
63
+ osrm_distance_matrix,
64
+ xy2latlog,
65
+ )
66
+
67
+ # Import visualization functions
68
+ from .viz.plotting import plot_assignments, plot_clusters, plot_comparison, plot_route
69
+
70
+ # Version
71
+ __version__ = "1.0.0"
72
+
73
+ # Export public API
74
+ __all__ = [
75
+ # Result types
76
+ "ClusterResult",
77
+ "ComparisonResult",
78
+ "RouteResult",
79
+ "SortResult",
80
+ "assign_to_closest",
81
+ # Main functions
82
+ "cluster",
83
+ "distance_assignment",
84
+ "euclidean_distance_matrix",
85
+ # Distance utilities
86
+ "get_distance_matrix",
87
+ "get_logger",
88
+ "google_distance_matrix",
89
+ "haversine_distance_matrix",
90
+ # Specific methods
91
+ "kmeans",
92
+ "latlon2xy",
93
+ "osrm_distance_matrix",
94
+ "plot_assignments",
95
+ # Visualization
96
+ "plot_clusters",
97
+ "plot_comparison",
98
+ "plot_route",
99
+ # Logging utilities
100
+ "setup_logging",
101
+ "shortest_path",
102
+ "sort_by_distance",
103
+ "tsp_christofides",
104
+ "tsp_google",
105
+ "tsp_ortools",
106
+ "tsp_osrm",
107
+ "xy2latlog",
108
+ ]
109
+
110
+
111
+ def setup_logging(level=logging.INFO):
112
+ """
113
+ Set up logging configuration for the allocator package.
114
+
115
+ Args:
116
+ level: Logging level (DEBUG, INFO, WARNING, ERROR)
117
+ """
118
+ # Create formatter
119
+ formatter = logging.Formatter(
120
+ "%(asctime)s - %(name)s - %(levelname)s - %(message)s", datefmt="%Y-%m-%d %H:%M:%S"
121
+ )
122
+
123
+ # Get root logger for allocator package
124
+ logger = logging.getLogger("allocator")
125
+ logger.setLevel(level)
126
+
127
+ # Remove existing handlers to avoid duplicates
128
+ for handler in logger.handlers[:]:
129
+ logger.removeHandler(handler)
130
+
131
+ # Console handler
132
+ console_handler = logging.StreamHandler(sys.stdout)
133
+ console_handler.setLevel(level)
134
+ console_handler.setFormatter(formatter)
135
+ logger.addHandler(console_handler)
136
+
137
+ return logger
138
+
139
+
140
+ def get_logger(name):
141
+ """
142
+ Get a logger instance for a specific module.
143
+
144
+ Args:
145
+ name: Module name (typically __name__)
146
+
147
+ Returns:
148
+ Logger instance
149
+ """
150
+ return logging.getLogger(f"allocator.{name}")
151
+
152
+
153
+ # Set up default logging
154
+ setup_logging()
@@ -0,0 +1,32 @@
1
+ """
2
+ Public API for allocator package.
3
+
4
+ This module provides a modern, Pythonic interface to the allocator package.
5
+ """
6
+
7
+ from .cluster import cluster, kmeans
8
+ from .distance import assign_to_closest, distance_assignment, sort_by_distance
9
+ from .route import shortest_path, tsp_christofides, tsp_google, tsp_ortools, tsp_osrm
10
+ from .types import ClusterResult, ComparisonResult, RouteResult, SortResult
11
+
12
+ __all__ = [
13
+ # Result types
14
+ "ClusterResult",
15
+ "ComparisonResult",
16
+ "RouteResult",
17
+ "SortResult",
18
+ # Distance assignment methods
19
+ "assign_to_closest",
20
+ # Main high-level functions
21
+ "cluster",
22
+ "distance_assignment",
23
+ # Specific clustering methods
24
+ "kmeans",
25
+ "shortest_path",
26
+ "sort_by_distance",
27
+ # Specific routing methods
28
+ "tsp_christofides",
29
+ "tsp_google",
30
+ "tsp_ortools",
31
+ "tsp_osrm",
32
+ ]
@@ -0,0 +1,126 @@
1
+ """
2
+ Modern clustering API for allocator package.
3
+ """
4
+
5
+ from __future__ import annotations
6
+
7
+ from pathlib import Path
8
+
9
+ import numpy as np
10
+ import pandas as pd
11
+
12
+ from ..core.algorithms import kmeans_cluster as _kmeans_cluster
13
+ from ..io.data_handler import DataHandler
14
+ from .types import ClusterResult
15
+
16
+
17
+ def cluster(
18
+ data: str | pd.DataFrame | np.ndarray | list,
19
+ n_clusters: int = 3,
20
+ method: str = "kmeans",
21
+ distance: str = "euclidean",
22
+ random_state: int | None = None,
23
+ **kwargs,
24
+ ) -> ClusterResult:
25
+ """
26
+ Cluster geographic data points.
27
+
28
+ Args:
29
+ data: Input data (file path, DataFrame, numpy array, or list)
30
+ n_clusters: Number of clusters to create
31
+ method: Clustering method ('kmeans')
32
+ distance: Distance metric ('euclidean', 'haversine', 'osrm', 'google')
33
+ random_state: Random seed for reproducibility
34
+ **kwargs: Additional arguments for specific methods
35
+
36
+ Returns:
37
+ ClusterResult with labels, centroids, and metadata
38
+
39
+ Example:
40
+ >>> result = cluster('data.csv', n_clusters=5, method='kmeans')
41
+ >>> print(result.labels) # Cluster assignments
42
+ >>> print(result.centroids) # Cluster centers
43
+ """
44
+ # Load and standardize data
45
+ df = DataHandler.load_data(data)
46
+
47
+ if method == "kmeans":
48
+ return kmeans(
49
+ df, n_clusters=n_clusters, distance=distance, random_state=random_state, **kwargs
50
+ )
51
+ else:
52
+ raise ValueError(f"Unknown clustering method: {method}. Available methods: 'kmeans'")
53
+
54
+
55
+ def kmeans(
56
+ data: pd.DataFrame | np.ndarray | list,
57
+ n_clusters: int = 3,
58
+ distance: str = "euclidean",
59
+ max_iter: int = 300,
60
+ random_state: int | None = None,
61
+ **kwargs,
62
+ ) -> ClusterResult:
63
+ """
64
+ K-means clustering of geographic data.
65
+
66
+ Args:
67
+ data: Input data as DataFrame or numpy array
68
+ n_clusters: Number of clusters
69
+ distance: Distance metric ('euclidean', 'haversine', 'osrm', 'google')
70
+ max_iter: Maximum iterations
71
+ random_state: Random seed for reproducibility
72
+ **kwargs: Additional distance-specific arguments
73
+
74
+ Returns:
75
+ ClusterResult with clustering information
76
+ """
77
+ # Ensure we have a DataFrame for output
78
+ if isinstance(data, np.ndarray):
79
+ df = DataHandler._from_numpy(data)
80
+ elif isinstance(data, list):
81
+ df = DataHandler._from_list(data)
82
+ elif isinstance(data, (str, Path)):
83
+ df = DataHandler.load_data(data)
84
+ else:
85
+ df = data.copy()
86
+
87
+ # Run clustering algorithm
88
+ result = _kmeans_cluster(
89
+ df,
90
+ n_clusters=n_clusters,
91
+ distance_method=distance,
92
+ max_iter=max_iter,
93
+ random_state=random_state,
94
+ **kwargs,
95
+ )
96
+
97
+ # Add cluster assignments to DataFrame
98
+ df_result = df.copy()
99
+ df_result["cluster"] = result["labels"]
100
+
101
+ # Calculate inertia (sum of squared distances to centroids)
102
+ inertia = None
103
+ if distance == "euclidean":
104
+ from ..distances import euclidean_distance_matrix
105
+
106
+ coords = df[["longitude", "latitude"]].values
107
+ distances = euclidean_distance_matrix(coords, result["centroids"])
108
+ inertia = np.sum(
109
+ [distances[i, result["labels"][i]] ** 2 for i in range(len(result["labels"]))]
110
+ )
111
+
112
+ return ClusterResult(
113
+ labels=result["labels"],
114
+ centroids=result["centroids"],
115
+ n_iter=result["iterations"],
116
+ inertia=inertia,
117
+ data=df_result,
118
+ converged=result["converged"],
119
+ metadata={
120
+ "method": "kmeans",
121
+ "distance": distance,
122
+ "n_clusters": n_clusters,
123
+ "max_iter": max_iter,
124
+ "random_state": random_state,
125
+ },
126
+ )