{ "info": { "author": "Niels Wouda", "author_email": "nielswouda@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Topic :: Scientific/Engineering", "Topic :: Software Development" ], "description": "[![PyPI version](https://badge.fury.io/py/alns.svg)](https://badge.fury.io/py/alns)\n[![Build Status](https://travis-ci.com/N-Wouda/ALNS.svg?branch=master)](https://travis-ci.com/N-Wouda/ALNS)\n[![codecov](https://codecov.io/gh/N-Wouda/ALNS/branch/master/graph/badge.svg)](https://codecov.io/gh/N-Wouda/ALNS)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/0c573395b313403b96c26054973dec34)](https://www.codacy.com/app/N-Wouda/ALNS)\n\nThis package offers a general, well-documented and tested\nimplementation of the adaptive large neighbourhood search (ALNS)\nmeta-heuristic, based on the description given in [Pisinger and Ropke\n(2010)][1]. It may be installed in the usual way as,\n\n```\npip install alns\n```\n\n## How to use\nThe `alns` package exposes two classes, `ALNS` and `State`. The first\nmay be used to run the ALNS algorithm, the second may be subclassed to\nstore a solution state - all it requires is to define an `objective`\nmember function.\n\nThe ALNS algorithm must be supplied with an acceptance criterion, to\ndetermine the acceptance of a new solution state at each iteration.\nAn overview of common acceptance criteria is given in [Santini et al.\n(2018)][3]. Several have already been implemented for you, in\n`alns.criteria`,\n\n- `HillClimbing`. The simplest acceptance criterion, hill-climbing\n solely accepts solutions improving the objective value.\n- `RecordToRecordTravel`. This criterion only accepts solutions when\n the improvement meets some updating threshold.\n- `SimulatedAnnealing`. This criterion accepts solutions when the\n scaled probability is bigger than some random number, using an\n updating temperature.\n\nEach acceptance criterion inherits from `AcceptanceCriterion`, which may\nbe used to write your own.\n\n### Examples\nThe `examples/` directory features some example notebooks showcasing\nhow the ALNS library may be used. Of particular interest are,\n\n- The travelling salesman problem (TSP), [here][2]. We solve an\n instance of 131 cities to within 2.1% of optimality, using simple\n destroy and repair heuristics with a post-processing step.\n- The cutting-stock problem (CSP), [here][4]. We solve an instance with\n 180 beams over 165 distinct sizes to within 1.35% of optimality in\n only a very limited number of iterations.\n\n## References\n- Pisinger, D., and Ropke, S. (2010). Large Neighborhood Search. In M.\n Gendreau (Ed.), _Handbook of Metaheuristics_ (2 ed., pp. 399-420).\n Springer.\n- Santini, A., Ropke, S. & Hvattum, L.M. (2018). A comparison of\n acceptance criteria for the adaptive large neighbourhood search\n metaheuristic. *Journal of Heuristics* 24 (5): 783-815.\n\n[1]: http://orbit.dtu.dk/en/publications/large-neighborhood-search(61a1b7ca-4bf7-4355-96ba-03fcdf021f8f).html\n[2]: https://github.com/N-Wouda/ALNS/blob/master/examples/travelling_salesman_problem.ipynb\n[3]: https://link.springer.com/article/10.1007%2Fs10732-018-9377-x\n[4]: https://github.com/N-Wouda/ALNS/blob/master/examples/cutting_stock_problem.ipynb\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/N-Wouda/ALNS", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "alns", "package_url": "https://pypi.org/project/alns/", "platform": "", "project_url": "https://pypi.org/project/alns/", "project_urls": { "Homepage": "https://github.com/N-Wouda/ALNS", "Source": "https://github.com/N-Wouda/ALNS", "Tracker": "https://github.com/N-Wouda/ALNS/issues" }, "release_url": "https://pypi.org/project/alns/1.1.1/", "requires_dist": [ "numpy (>=1.15.2)", "matplotlib (>=2.2.0)" ], "requires_python": "~=3.4", "summary": "A flexible implementation of the adaptive large neighbourhood search (ALNS) algorithm.", "version": "1.1.1" }, "last_serial": 5991066, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "5a40e21cd7d38c28012c320f21c60f64", "sha256": "389e8002c68b8a196765eed841c0d36a86e88b7464a3d3529333623b1116a025" }, "downloads": -1, "filename": "alns-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5a40e21cd7d38c28012c320f21c60f64", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 20078, "upload_time": "2019-07-05T12:58:28", "url": "https://files.pythonhosted.org/packages/88/34/08e1b7cbe24753206ce277bfb5841737a785e46f15674e2f1d64e2b82c28/alns-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ad1a5eb770aeae5386edfd9ec1b027b0", "sha256": "c21c9e667321dc3d683538d7bbd38501d53c2b2c5fb7fe250c2419293e78e44f" }, "downloads": -1, "filename": "alns-1.0.0.tar.gz", "has_sig": false, "md5_digest": "ad1a5eb770aeae5386edfd9ec1b027b0", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 13708, "upload_time": "2019-07-05T12:58:29", "url": "https://files.pythonhosted.org/packages/de/71/417df849d4567917967f6b3a8bdaeadfc3ccfb34728886949efa7938be2a/alns-1.0.0.tar.gz" } ], "1.0.0a1": [ { "comment_text": "", "digests": { "md5": "d98716fc0a8aacc78e1b7ff7e3119972", "sha256": "6845cb62d3121f0ddc7647d798faa60b27ada5ee30f3c7a20d2e39462fd1b861" }, "downloads": -1, "filename": "alns-1.0.0a1-py3-none-any.whl", "has_sig": false, "md5_digest": "d98716fc0a8aacc78e1b7ff7e3119972", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 20076, "upload_time": "2019-07-05T12:12:53", "url": "https://files.pythonhosted.org/packages/9b/fa/497454956b6b0ec195f3d00458387b57011f9d54599694cd91d6d38d3674/alns-1.0.0a1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "94c9e4c3b20bff3302961b1da4790203", "sha256": "524aaae4cf750f555970b1d084a398b9bd41eee2f0cd4e3bd5a6ba87eaef745b" }, "downloads": -1, "filename": "alns-1.0.0a1.tar.gz", "has_sig": false, "md5_digest": "94c9e4c3b20bff3302961b1da4790203", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 12161, "upload_time": "2019-07-05T12:12:55", "url": "https://files.pythonhosted.org/packages/ba/0b/0ae8001624294104c945f715c3cc6bdf7c09425a421e077006e0ee77108a/alns-1.0.0a1.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "bcd34cd1f7814f1bed98e60ec86a2842", "sha256": "78b0aad2700ff9410293dbf8d49e1f91315034ccc92abb7d5018ad32fba6dd6c" }, "downloads": -1, "filename": "alns-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "bcd34cd1f7814f1bed98e60ec86a2842", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 20115, "upload_time": "2019-07-05T13:38:51", "url": "https://files.pythonhosted.org/packages/8a/7a/1fd7473fdfe064199748201bd71d862dd3d8157cee1e91fd8920163697ec/alns-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "91472060fc44ce1c33d9814be4250065", "sha256": "2b2c269622be6608e66a9a4c4368129921be8217b61ad392a564d8c97271fa8c" }, "downloads": -1, "filename": "alns-1.0.1.tar.gz", "has_sig": false, "md5_digest": "91472060fc44ce1c33d9814be4250065", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 12316, "upload_time": "2019-07-05T13:38:52", "url": "https://files.pythonhosted.org/packages/3e/3e/d3931a8958324707b84c3293a7cb0f822385dce07f153cdc57fe29f29fcd/alns-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "cc8ba0c21e9d006a9d44afe128b935a8", "sha256": "29167cfa4e816861a176d877c47b72e0984bf3304a84694f3030d1b27749e758" }, "downloads": -1, "filename": "alns-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "cc8ba0c21e9d006a9d44afe128b935a8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 20442, "upload_time": "2019-07-25T14:47:11", "url": "https://files.pythonhosted.org/packages/50/72/6673dbc611f4fc00c46838acc857b3b13675ed24a7e6de1cc7c344c72aa1/alns-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "00d02c248c0499b1a1b8da3ecf995246", "sha256": "b01bfc4744470ce359a084c178bbf2f43102b00792727a729140c725f95a185a" }, "downloads": -1, "filename": "alns-1.0.2.tar.gz", "has_sig": false, "md5_digest": "00d02c248c0499b1a1b8da3ecf995246", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 12644, "upload_time": "2019-07-25T14:47:12", "url": "https://files.pythonhosted.org/packages/03/29/2f7458a522d55611d3c8e15752e4f16cff1174497510ee14eb8328ae8430/alns-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "b2bf37ba5ac715042e58694112e6b473", "sha256": "7790262f928ce43d8bb80dbbe9362f7018a1c089db29f92c37656a80cc4934af" }, "downloads": -1, "filename": "alns-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "b2bf37ba5ac715042e58694112e6b473", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 20435, "upload_time": "2019-07-29T09:34:55", "url": "https://files.pythonhosted.org/packages/e9/e3/7c62c8ee66a8c32b8bb95e80c05659eb34b085a420d4f5c040cfec058406/alns-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bf68d005000dd440caee3e5a4172a924", "sha256": "ac823c0682857a68ae178779c54e940c3e3db3aa790340f53a651ffbf9ba289b" }, "downloads": -1, "filename": "alns-1.0.3.tar.gz", "has_sig": false, "md5_digest": "bf68d005000dd440caee3e5a4172a924", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 12643, "upload_time": "2019-07-29T09:34:56", "url": "https://files.pythonhosted.org/packages/f6/69/2ce4f4f19606b63d13cf6dc706258955289b5823020b8a58872c213f5f3f/alns-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "5753facba831e47cd9c5e38881b3e3bc", "sha256": "ab901104de6a1bc5781d384595eeaf33441b7ff9ed0807d8fad19f20a84b255c" }, "downloads": -1, "filename": "alns-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "5753facba831e47cd9c5e38881b3e3bc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 20387, "upload_time": "2019-07-29T09:51:11", "url": "https://files.pythonhosted.org/packages/fc/49/9b4622ac2e1bb8f960900b6c86e2ae616b041428330d5e1c030560e55c8f/alns-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "74e37d1c107457de596d4286984eee89", "sha256": "4d7cd8db2710261cce42bb4de7bdf293361c1c2f9f9b455cd3119202486dd07b" }, "downloads": -1, "filename": "alns-1.0.4.tar.gz", "has_sig": false, "md5_digest": "74e37d1c107457de596d4286984eee89", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 12596, "upload_time": "2019-07-29T09:51:13", "url": "https://files.pythonhosted.org/packages/6e/17/f0f8551e47fd27ac3059344f03fec24d2f39aaf2492fef537e91e8f2701f/alns-1.0.4.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "c315e76d5bd89c4c50e9d95921027daf", "sha256": "755846d8d4972b9c88ef1a57572e1cbebce463fc7a339bdb5eb67156987f95e7" }, "downloads": -1, "filename": "alns-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c315e76d5bd89c4c50e9d95921027daf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 25612, "upload_time": "2019-10-17T12:47:31", "url": "https://files.pythonhosted.org/packages/23/b5/0a116b8960d85d3fadc8add5fe010a10bc3699ae43eb05320d81871cbb8b/alns-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d202e45c2d4ac579a76913b4fb9b2e1a", "sha256": "0e337d09dc7deebea671c177aec16440cc12396ad15151f547bf984733a57088" }, "downloads": -1, "filename": "alns-1.1.0.tar.gz", "has_sig": false, "md5_digest": "d202e45c2d4ac579a76913b4fb9b2e1a", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 16625, "upload_time": "2019-10-17T12:47:34", "url": "https://files.pythonhosted.org/packages/5c/2c/47bf85161b0c33dbdf4e1c51f6f3d24bcf2a31de29f1a9969f3173e1bbfd/alns-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "55264b4ed26f13358956463c81d5f0b5", "sha256": "3b24a887e7f1a8bed57f5ce98dd5cdee8ad00a14f192ee29c3af2797994487db" }, "downloads": -1, "filename": "alns-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "55264b4ed26f13358956463c81d5f0b5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 25617, "upload_time": "2019-10-17T16:13:10", "url": "https://files.pythonhosted.org/packages/12/be/e2675a01930cc75437c8681534af7af139ba1a05d2ef9e0b8befc1fea47f/alns-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d897511287864c7ec6f26d10128e1298", "sha256": "e361d75afe48bb1215118f45d6b960db269b75eccea70764027db2438b29553e" }, "downloads": -1, "filename": "alns-1.1.1.tar.gz", "has_sig": false, "md5_digest": "d897511287864c7ec6f26d10128e1298", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 16689, "upload_time": "2019-10-17T16:13:12", "url": "https://files.pythonhosted.org/packages/fc/42/3a18dfe1cbdf998418140fa4dfc505f5494b4d735da6b4f07c5292bf17fd/alns-1.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "55264b4ed26f13358956463c81d5f0b5", "sha256": "3b24a887e7f1a8bed57f5ce98dd5cdee8ad00a14f192ee29c3af2797994487db" }, "downloads": -1, "filename": "alns-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "55264b4ed26f13358956463c81d5f0b5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 25617, "upload_time": "2019-10-17T16:13:10", "url": "https://files.pythonhosted.org/packages/12/be/e2675a01930cc75437c8681534af7af139ba1a05d2ef9e0b8befc1fea47f/alns-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d897511287864c7ec6f26d10128e1298", "sha256": "e361d75afe48bb1215118f45d6b960db269b75eccea70764027db2438b29553e" }, "downloads": -1, "filename": "alns-1.1.1.tar.gz", "has_sig": false, "md5_digest": "d897511287864c7ec6f26d10128e1298", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 16689, "upload_time": "2019-10-17T16:13:12", "url": "https://files.pythonhosted.org/packages/fc/42/3a18dfe1cbdf998418140fa4dfc505f5494b4d735da6b4f07c5292bf17fd/alns-1.1.1.tar.gz" } ] }