# tsp-grasp
Welcome to `tsp-grasp`! A Python package with Heuristics for solving the Traveling Salesman Problem (TSP).
[Documentation](https://tsp-grasp.readthedocs.io/en/latest/)
<p align="center">
<img src="./assets/grasp_arc_horizontal.gif" width="600" title="icon tsp">
</p>
## Install
The package `tspgrasp` is available on PyPI, so you can install it via `pip` by running the following command line:
```
pip install tspgrasp
```
To install the package in development versions, clone it from github using:
```
git clone https://github.com/bruscalia/tsp-grasp.git
```
And run one of the two following commands:
```
pip install .
```
```
python setup.py install
```
Make sure Cython and numpy are also available in your python environment.
Alternatively, you can directly run:
```
pip install git+https://github.com/bruscalia/tsp-grasp.git
```
Here is a minimum working example in which a symmetric distance matrix is produced from 2-dimensional coordinates.
## Use
```python
# Imports
import numpy as np
from scipy.spatial.distance import pdist, squareform
from tspgrasp import Grasp
```
```python
# Create distance matrix
X = np.random.random((100, 2))
D = squareform(pdist(X))
# Instantiate algorithm and solve problem
grasp = Grasp(seed=12)
sol = grasp(D, time_limit=10, max_iter=100)
# Display cost and tour
print(f"Cost: {sol.cost}")
print(f"Tour: {sol.tour}")
```
## Theory
Greedy Randomized Adaptive Search Procedures (GRASP) are metaheuristics constituted by a hybridization of a semi-greedy procedure with a local search method. For more details please refer to Resende & Ribeiro (2016).
Local search moves implemented were based on the work of Vidal (2022).
## Contact
You can reach out to me at bruscalia12@gmail.com
## References
Resende, M. G., & Ribeiro, C. C. (2016). Optimization by GRASP. Springer Science+ Business Media New York. https://doi.org/10.1007/978-1-4939-6530-4
Vidal, T. (2022). Hybrid genetic search for the CVRP: Open-source implementation and SWAP* neighborhood. Computers & Operations Research, 140, 105643. https://doi.org/10.1016/j.cor.2021.105643
Raw data
{
"_id": null,
"home_page": "https://github.com/bruscalia/tsp-grasp",
"name": "tspgrasp",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "Traveling Salesman Problem,TSP,Greedy Randomized Adaptive Search Procedures,Heuristics,Metaheuristics,Meta-heuristics,Greedy Algorithms,Local Search,Variable Neighborhood Search,Simulated Annealing",
"author": "Bruno Scalia C. F. Leite",
"author_email": "bruscalia12@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/11/37/6312b2005f94bb791ae0ed1ac8c416989af2cedd885e7e1e0c8229293167/tspgrasp-0.1.1.tar.gz",
"platform": null,
"description": "# tsp-grasp\n\nWelcome to `tsp-grasp`! A Python package with Heuristics for solving the Traveling Salesman Problem (TSP).\n\n[Documentation](https://tsp-grasp.readthedocs.io/en/latest/)\n\n<p align=\"center\">\n <img src=\"./assets/grasp_arc_horizontal.gif\" width=\"600\" title=\"icon tsp\">\n</p>\n\n## Install\n\nThe package `tspgrasp` is available on PyPI, so you can install it via `pip` by running the following command line:\n\n```\npip install tspgrasp\n```\n\nTo install the package in development versions, clone it from github using:\n\n```\ngit clone https://github.com/bruscalia/tsp-grasp.git\n```\n\nAnd run one of the two following commands:\n\n```\npip install .\n```\n\n```\npython setup.py install\n```\n\nMake sure Cython and numpy are also available in your python environment.\n\nAlternatively, you can directly run:\n\n```\npip install git+https://github.com/bruscalia/tsp-grasp.git\n```\n\nHere is a minimum working example in which a symmetric distance matrix is produced from 2-dimensional coordinates.\n\n## Use\n\n```python\n# Imports\nimport numpy as np\nfrom scipy.spatial.distance import pdist, squareform\nfrom tspgrasp import Grasp\n```\n\n```python\n# Create distance matrix\nX = np.random.random((100, 2))\nD = squareform(pdist(X))\n\n# Instantiate algorithm and solve problem\ngrasp = Grasp(seed=12)\nsol = grasp(D, time_limit=10, max_iter=100)\n\n# Display cost and tour\nprint(f\"Cost: {sol.cost}\")\nprint(f\"Tour: {sol.tour}\")\n```\n\n## Theory\n\nGreedy Randomized Adaptive Search Procedures (GRASP) are metaheuristics constituted by a hybridization of a semi-greedy procedure with a local search method. For more details please refer to Resende & Ribeiro (2016).\n\nLocal search moves implemented were based on the work of Vidal (2022).\n\n\n## Contact\n\nYou can reach out to me at bruscalia12@gmail.com\n\n## References\n\nResende, M. G., & Ribeiro, C. C. (2016). Optimization by GRASP. Springer Science+ Business Media New York. https://doi.org/10.1007/978-1-4939-6530-4\n\nVidal, T. (2022). Hybrid genetic search for the CVRP: Open-source implementation and SWAP* neighborhood. Computers & Operations Research, 140, 105643. https://doi.org/10.1016/j.cor.2021.105643\n",
"bugtrack_url": null,
"license": "Apache License 2.0",
"summary": "GRASP for TSP",
"version": "0.1.1",
"project_urls": {
"Download": "https://github.com/bruscalia/tsp-grasp",
"Homepage": "https://github.com/bruscalia/tsp-grasp"
},
"split_keywords": [
"traveling salesman problem",
"tsp",
"greedy randomized adaptive search procedures",
"heuristics",
"metaheuristics",
"meta-heuristics",
"greedy algorithms",
"local search",
"variable neighborhood search",
"simulated annealing"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3656f83c7a6e9d04d6c9df0bcc85f5823dbe2c9cb8113972406ee600fff9cb55",
"md5": "8d0eb3686bafa0baa3479c79f430cde7",
"sha256": "671868834d4f33cd8c7fb141240bb7debfc5fc6c02b2586a9f56241c2502c3aa"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1-cp310-cp310-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "8d0eb3686bafa0baa3479c79f430cde7",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 584241,
"upload_time": "2023-11-19T20:33:53",
"upload_time_iso_8601": "2023-11-19T20:33:53.200061Z",
"url": "https://files.pythonhosted.org/packages/36/56/f83c7a6e9d04d6c9df0bcc85f5823dbe2c9cb8113972406ee600fff9cb55/tspgrasp-0.1.1-cp310-cp310-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "04098f5c671f15db3ea002afc7b03a3be60b1068689772ffe2aed7bb45c10f92",
"md5": "355bf35c253f813a343060a7202c8d1b",
"sha256": "2915d5079414c1e97c94ca16adf632c78ce7be4291c7e9d585e2ec070a5ccecd"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "355bf35c253f813a343060a7202c8d1b",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 3523821,
"upload_time": "2023-11-19T20:33:55",
"upload_time_iso_8601": "2023-11-19T20:33:55.551546Z",
"url": "https://files.pythonhosted.org/packages/04/09/8f5c671f15db3ea002afc7b03a3be60b1068689772ffe2aed7bb45c10f92/tspgrasp-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "dcb3467fc24ce8849dab218a47c5cdc99ee6eb8b2f08136aa02d600d4e0d9b94",
"md5": "2179e47672490866fdc06b29d9deb34f",
"sha256": "8deb10cd2035a188be2bbb1fb1fa735dc72ceda45bd1974620891aa28f6be556"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "2179e47672490866fdc06b29d9deb34f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 516488,
"upload_time": "2023-11-19T20:33:57",
"upload_time_iso_8601": "2023-11-19T20:33:57.588154Z",
"url": "https://files.pythonhosted.org/packages/dc/b3/467fc24ce8849dab218a47c5cdc99ee6eb8b2f08136aa02d600d4e0d9b94/tspgrasp-0.1.1-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "40494bc4c6df6bbaa4d1e5621366ed7f1de2a5f9d277cf03301a9a7faee93bd9",
"md5": "b4203a31c8ee0e33e2165d15efcb030c",
"sha256": "517f1b86a0ca3a7460c4d1d8975769c2d3fd3bdd86228327bb76aa3ba98e3ba7"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1-cp311-cp311-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "b4203a31c8ee0e33e2165d15efcb030c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 1117016,
"upload_time": "2023-11-19T20:33:59",
"upload_time_iso_8601": "2023-11-19T20:33:59.837263Z",
"url": "https://files.pythonhosted.org/packages/40/49/4bc4c6df6bbaa4d1e5621366ed7f1de2a5f9d277cf03301a9a7faee93bd9/tspgrasp-0.1.1-cp311-cp311-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "93d5f01d4953ac0807eaa5d40ce16ea276f2d8645d57df5e055c27198ca1f811",
"md5": "8cd273348f666dc29f792cad9fa1bff6",
"sha256": "4b72cd37775bc2c75f75902cce62bbb39623b8cef18c0a70121dc5a51bdd69a6"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "8cd273348f666dc29f792cad9fa1bff6",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 3800453,
"upload_time": "2023-11-19T20:34:02",
"upload_time_iso_8601": "2023-11-19T20:34:02.726658Z",
"url": "https://files.pythonhosted.org/packages/93/d5/f01d4953ac0807eaa5d40ce16ea276f2d8645d57df5e055c27198ca1f811/tspgrasp-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "592abab471eb4713d3559bc1e8c4d9e21437c05b685e0bf95d022ebd93062642",
"md5": "f7c2ae66825d222e736a335e124d36b6",
"sha256": "1a80505f9fd3d9208515ebf10a449ea6a231a6a2ce3a155f18ca0b4588e0dc84"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "f7c2ae66825d222e736a335e124d36b6",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 517008,
"upload_time": "2023-11-19T20:34:04",
"upload_time_iso_8601": "2023-11-19T20:34:04.465558Z",
"url": "https://files.pythonhosted.org/packages/59/2a/bab471eb4713d3559bc1e8c4d9e21437c05b685e0bf95d022ebd93062642/tspgrasp-0.1.1-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "accdbf04ebc6598761d37dec90d3ccb69090a28f15b41283df134ba3d25ce98a",
"md5": "06940515c7dbb383946698078e41f210",
"sha256": "ce99a15a67b8294a5f333e1381a1e5cceee906aa40cbf3a68a2cc049587d4426"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1-cp312-cp312-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "06940515c7dbb383946698078e41f210",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 1126138,
"upload_time": "2023-11-19T20:34:06",
"upload_time_iso_8601": "2023-11-19T20:34:06.642279Z",
"url": "https://files.pythonhosted.org/packages/ac/cd/bf04ebc6598761d37dec90d3ccb69090a28f15b41283df134ba3d25ce98a/tspgrasp-0.1.1-cp312-cp312-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9c3aab1d3b65c3f78b8a5fc19485e344f78f4dfd96c796a2e23f15e77e0b98a4",
"md5": "d17883028ae9a1e6b6b7cf5aea180ea3",
"sha256": "ed310570b0c8d87b47ab2514982f2099e3378a50fd6f29e8d158e96e063e0fa1"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "d17883028ae9a1e6b6b7cf5aea180ea3",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 520461,
"upload_time": "2023-11-19T20:34:08",
"upload_time_iso_8601": "2023-11-19T20:34:08.199836Z",
"url": "https://files.pythonhosted.org/packages/9c/3a/ab1d3b65c3f78b8a5fc19485e344f78f4dfd96c796a2e23f15e77e0b98a4/tspgrasp-0.1.1-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7ed2ab857c2e113e6d5fd520bcf923a83049ede7721ffc35626a4766acbec65a",
"md5": "32db9a09a14b069ff6e1d4922be9e477",
"sha256": "194dd4faf7056a1c382bd2a1efb3f63673710aa2d6349152ab31a5bed2cb6429"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1-cp37-cp37m-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "32db9a09a14b069ff6e1d4922be9e477",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 591559,
"upload_time": "2023-11-19T20:34:09",
"upload_time_iso_8601": "2023-11-19T20:34:09.879395Z",
"url": "https://files.pythonhosted.org/packages/7e/d2/ab857c2e113e6d5fd520bcf923a83049ede7721ffc35626a4766acbec65a/tspgrasp-0.1.1-cp37-cp37m-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ede896db27f0b15b597e8857f8a87f6023343222eb41cea1962a698d158ef15e",
"md5": "6146b550742925b3a006a4e06b4b224b",
"sha256": "a24212bf2924975ec30422d6d42acc927cc142dc69f741b47564f0861c3ef89c"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "6146b550742925b3a006a4e06b4b224b",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 3348401,
"upload_time": "2023-11-19T20:34:12",
"upload_time_iso_8601": "2023-11-19T20:34:12.364405Z",
"url": "https://files.pythonhosted.org/packages/ed/e8/96db27f0b15b597e8857f8a87f6023343222eb41cea1962a698d158ef15e/tspgrasp-0.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1a85a6d1e7071d838188a68cdad81d1622620b0cdff55f0adc1152ef266d070e",
"md5": "8cb55296695290e41b0380ad21f840c9",
"sha256": "96e73ff53e0afc9bd4697918d487c8cec858f30ec4fed6e2bcd214a679a1e29b"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1-cp37-cp37m-win_amd64.whl",
"has_sig": false,
"md5_digest": "8cb55296695290e41b0380ad21f840c9",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 601671,
"upload_time": "2023-11-19T20:34:14",
"upload_time_iso_8601": "2023-11-19T20:34:14.447493Z",
"url": "https://files.pythonhosted.org/packages/1a/85/a6d1e7071d838188a68cdad81d1622620b0cdff55f0adc1152ef266d070e/tspgrasp-0.1.1-cp37-cp37m-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "aa09162b17ada60b30b8dd61047845ef2175d95330d6e3f899452eee923d2588",
"md5": "10ad3a72f108d25a8bab57960c2b4064",
"sha256": "14c3c19c62c69d95f89aed2d4a50a9a1bae3833905515898804b0a35e56e4409"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1-cp38-cp38-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "10ad3a72f108d25a8bab57960c2b4064",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 587936,
"upload_time": "2023-11-19T20:34:15",
"upload_time_iso_8601": "2023-11-19T20:34:15.943930Z",
"url": "https://files.pythonhosted.org/packages/aa/09/162b17ada60b30b8dd61047845ef2175d95330d6e3f899452eee923d2588/tspgrasp-0.1.1-cp38-cp38-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "138a00b05486bd3cf38ee9798fa555cc7a80838cad531dda25b60fb0d18d47aa",
"md5": "709029f75f4903c4916d32b341959581",
"sha256": "d7dd14d822e4d051729398892f3d6b33bf180d566a7634524c4c7122554ab34e"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "709029f75f4903c4916d32b341959581",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 3601038,
"upload_time": "2023-11-19T20:34:18",
"upload_time_iso_8601": "2023-11-19T20:34:18.941886Z",
"url": "https://files.pythonhosted.org/packages/13/8a/00b05486bd3cf38ee9798fa555cc7a80838cad531dda25b60fb0d18d47aa/tspgrasp-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c6e9d2fa9205ff019b3ecb73be38fa5e67faf412b50d7017b31b5b8ef1043be2",
"md5": "f5791b0dc61f4d689cd626f69ee3ddba",
"sha256": "fbc58b77b95d07d38268645c1e95671535baf742c0630e25b778d8a610072dd4"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "f5791b0dc61f4d689cd626f69ee3ddba",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 610416,
"upload_time": "2023-11-19T20:34:21",
"upload_time_iso_8601": "2023-11-19T20:34:21.023226Z",
"url": "https://files.pythonhosted.org/packages/c6/e9/d2fa9205ff019b3ecb73be38fa5e67faf412b50d7017b31b5b8ef1043be2/tspgrasp-0.1.1-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "913b4fb66f6e4e6bc904afaf1f5da0eeeb0c99db67e9aa46080c101dc46e1939",
"md5": "b622bd9370abedd79e02e1fd2cfa5c91",
"sha256": "5a1e6d4ea901f9e326e44e21e1e1bec943fc4750f053df26c5a30cc1c8d4a6a7"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1-cp39-cp39-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "b622bd9370abedd79e02e1fd2cfa5c91",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 590027,
"upload_time": "2023-11-19T20:34:22",
"upload_time_iso_8601": "2023-11-19T20:34:22.679018Z",
"url": "https://files.pythonhosted.org/packages/91/3b/4fb66f6e4e6bc904afaf1f5da0eeeb0c99db67e9aa46080c101dc46e1939/tspgrasp-0.1.1-cp39-cp39-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c73576271c9ee0a26072a5ca60d9502ca4e7c17701f8300406269d7a474bb619",
"md5": "3bd55dbb29ef1a008ab6866b48546e2c",
"sha256": "640096e0a46fb297eb9a02592e53e15ee1685a414a7320317e3d02b4363b2871"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "3bd55dbb29ef1a008ab6866b48546e2c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 3551890,
"upload_time": "2023-11-19T20:34:25",
"upload_time_iso_8601": "2023-11-19T20:34:25.178576Z",
"url": "https://files.pythonhosted.org/packages/c7/35/76271c9ee0a26072a5ca60d9502ca4e7c17701f8300406269d7a474bb619/tspgrasp-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "98fd60423ee64c63bcc62b75baf6e99e2794f6ca16ad844f09638ace428a23f5",
"md5": "549f65452652fcb0da34850cc40670f4",
"sha256": "f61033355f86050097e59bc2439c3204cbb34697a0a2c279743097e23d136c6c"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "549f65452652fcb0da34850cc40670f4",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 605147,
"upload_time": "2023-11-19T20:34:27",
"upload_time_iso_8601": "2023-11-19T20:34:27.006688Z",
"url": "https://files.pythonhosted.org/packages/98/fd/60423ee64c63bcc62b75baf6e99e2794f6ca16ad844f09638ace428a23f5/tspgrasp-0.1.1-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "11376312b2005f94bb791ae0ed1ac8c416989af2cedd885e7e1e0c8229293167",
"md5": "c0fa6c17842028fb02574edd830be295",
"sha256": "509d3225ada9f593317637420a0a9c8d82d64289190e718c52e1cb2153e02822"
},
"downloads": -1,
"filename": "tspgrasp-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "c0fa6c17842028fb02574edd830be295",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 14515,
"upload_time": "2023-11-19T20:34:28",
"upload_time_iso_8601": "2023-11-19T20:34:28.360091Z",
"url": "https://files.pythonhosted.org/packages/11/37/6312b2005f94bb791ae0ed1ac8c416989af2cedd885e7e1e0c8229293167/tspgrasp-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-11-19 20:34:28",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "bruscalia",
"github_project": "tsp-grasp",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "tspgrasp"
}