{ "info": { "author": "Gunnstein T. Fr\u00f8seth", "author_email": "gunnstein@mailbox.org", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: ISC License (ISCL)", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Scientific/Engineering" ], "description": "|lahc_logo|\n=============================\nLate Acceptance Hill Climbing\n=============================\n\nImplementation of Late Acceptance Hill Climbing (LAHC) algorithm by\nBurke and Bykov [Burke2017]_ in python.\n\n\nInstallation\n------------\n\nEither download the repository to your computer and install, e.g. by **pip**\n\n::\n\n pip install .\n\n\nor install directly from the python package index.\n\n::\n\n pip install lahc\n\n\nUsage\n-----\n\nThe package provides a base class for subclassing to a specific\nproblem. The ``move`` and ``energy`` methods must be implemented by the\nuser before the algorithm is applied.\n\nThe user controls the algorithm by adjusting a single algorithmic\nparameter, the ``history length``, and the termination criteria for\nthe algorithm. See subsection on each of the topics below.\n\nThe search is started by calling the ``run`` method.\n\nThe example is a good place to start using of the package.\n\nNote\n The implementation relies heavily on copying the state. The\n default copy strategy (``copy_strategy='deepcopy'``) relies on the\n STL ``copy.deepcopy`` method which works for most data structures,\n but is typically quite slow. **Large** performance gains can be\n easily obtained by adapting a different copying strategy, see the\n documentation of the ``copy_state`` method.\n\n\nThe history length\n------------------\n\nThe behaviour of the LAHC algorithm is governed by a single parameter,\nthe history length. To alter the history length of the algorithm,\nadjust the ``history_length`` parameter of the class.\n\nIf the history length is set to one, the LAHC algorithm is equivalent\nto a greedy Hill Climbing algorithm. Increasing the history length\ngenerally improves the solution quality, but also increases the time to\nconvergence.\n\nSelection of the history length should therefore be based on\nrequirements for the quality of the solution and time available for\nthe analysis.\n\nA useful characteristic of the LAHC heuristic is that the runtime to\nconvergence is roughly proportional to the history length. The runtime\nat any history length can therefore be estimated after applying the\nalgorithm at a few different history lengths.\n\nAs a general recommendation, start at a low history length and\ngradually increase it to determine the runtime and variation in the\nestimated results. Select a shorter history length that allows\nmultiple runs in the time allocated for simulations rather than a\nlonger history length with a single run.\n\n\nTermination criteria\n--------------------\n\nThe algorithm terminates when the ``terminate_search`` method evaluates\nto `True` or when a interupt signal (``Ctrl-C``) is sent to the process.\n\nThe default behaviour of the ``terminate_search`` method is to\nterminate the algorithm when a minimum number of attempts has been\nmade and the algorithm has not been able to improve the solution for a\ncertain number of steps. The minimum number of steps and necessary\nnumber of idle iterations can be adjusted with the ``steps_minimum``\nand ``steps_idle_fraction`` parameters, respectively.\n\nThe default value of the ``steps_idle_fraction`` (0.02) is generally a\ngood choice for a variety of problems, but the default\n``steps_minimum`` value (100000) may have to be adjusted depending on\nthe problem. As a general recommendation, the user should reduce the\n``steps_minimum`` parameter if the algorithm consistently terminates at\n``steps_minimum`` after running for a long period without improving\nthe solution.\n\n\nAcknowledgements\n----------------\n\nBoth the structure and parts of the source code for the\n``LateAcceptanceHillClimber`` class is copied from the ``Annealer``\nclass in the simanneal_ python project. All contributions from the\nsimanneal_ project is hereby gratefully acknowledged. Check out the\nsimanneal_ project at\n\n https://github.com/perrygeo/simanneal\n\nwhich implements the widely used and sucessful Simulated Annealing\nmetaheuristic.\n\n\nSupport\n-------\n\nPlease `open an issue `_\nfor support.\n\n\nContributing\n------------\n\nPlease contribute using `Github Flow\n`_.\nCreate a branch, add commits, and\n`open a pull request `_.\n\n.. |lahc_logo| image:: https://github.com/Gunnstein/lahc/blob/master/logo.png\n :target: https://github.com/gunnstein/lahc\n\n\nBibliography\n------------\n.. [BURKE2017] E. K. Burke, Y. Bykov, The late acceptance Hill-Climbing heuristic.\n\t European Journal of Operational Research. 258, 70\u201378 (2017).\n\n\n\n\n.. _simanneal: https://github.com/perrygeo/simanneal\n\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/gunnstein/lahc", "keywords": "", "license": "ISC", "maintainer": "", "maintainer_email": "", "name": "lahc", "package_url": "https://pypi.org/project/lahc/", "platform": "", "project_url": "https://pypi.org/project/lahc/", "project_urls": { "Homepage": "https://github.com/gunnstein/lahc" }, "release_url": "https://pypi.org/project/lahc/1.0.5/", "requires_dist": null, "requires_python": "", "summary": "Late Acceptance Hill Climbing in Python", "version": "1.0.5" }, "last_serial": 4475029, "releases": { "1.0.5": [ { "comment_text": "", "digests": { "md5": "9beaf6c408d8da44428b80723f55b9eb", "sha256": "c2899a6863928fd255e274194af7ea96b7d94a2e303c2bb8378cff99c260576d" }, "downloads": -1, "filename": "lahc-1.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9beaf6c408d8da44428b80723f55b9eb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7930, "upload_time": "2018-11-11T19:40:58", "url": "https://files.pythonhosted.org/packages/e7/23/a4abfca877e0426e5f1e59e2d728614fba049473946a81cde86efb51c422/lahc-1.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0d096a31bf86f4b2387eadcf44b088eb", "sha256": "7053246cff238492ab3415a7e1ae993854bae6694d5a96b75b8f5d2d8b34fe0d" }, "downloads": -1, "filename": "lahc-1.0.5.tar.gz", "has_sig": false, "md5_digest": "0d096a31bf86f4b2387eadcf44b088eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6739, "upload_time": "2018-11-11T19:40:59", "url": "https://files.pythonhosted.org/packages/36/35/77047f955dcbe7ffb2ac27e0b4f1eda2052048a73a447512e9c7752e1a4c/lahc-1.0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9beaf6c408d8da44428b80723f55b9eb", "sha256": "c2899a6863928fd255e274194af7ea96b7d94a2e303c2bb8378cff99c260576d" }, "downloads": -1, "filename": "lahc-1.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9beaf6c408d8da44428b80723f55b9eb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7930, "upload_time": "2018-11-11T19:40:58", "url": "https://files.pythonhosted.org/packages/e7/23/a4abfca877e0426e5f1e59e2d728614fba049473946a81cde86efb51c422/lahc-1.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0d096a31bf86f4b2387eadcf44b088eb", "sha256": "7053246cff238492ab3415a7e1ae993854bae6694d5a96b75b8f5d2d8b34fe0d" }, "downloads": -1, "filename": "lahc-1.0.5.tar.gz", "has_sig": false, "md5_digest": "0d096a31bf86f4b2387eadcf44b088eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6739, "upload_time": "2018-11-11T19:40:59", "url": "https://files.pythonhosted.org/packages/36/35/77047f955dcbe7ffb2ac27e0b4f1eda2052048a73a447512e9c7752e1a4c/lahc-1.0.5.tar.gz" } ] }