{ "info": { "author": "Gabriel A. Hackebeil", "author_email": "gabe.hackebeil@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Scientific/Engineering :: Mathematics" ], "description": "pybnb\n=====\n\n|PyPI-Status| |PyPI-Versions| |Codacy-Grade|\n\n|Travis-Status| |Appveyor-Status| |Coverage-Status| |Documentation-Status|\n\nA parallel branch-and-bound engine for Python. (https://pybnb.readthedocs.io)\n\nThis software is copyright (c) by Gabriel A. Hackebeil (gabe.hackebeil@gmail.com).\n\nThis software is released under the MIT software license.\nThis license, including disclaimer, is available in the 'LICENSE' file.\n\nQuick Start\n-----------\n\n**Define a problem:**\n\n.. code:: python\n\n # simple.py\n\n import pybnb\n class Simple(pybnb.Problem):\n def __init__(self):\n self.bounds = [0.0,1.0]\n def sense(self):\n return pybnb.minimize\n def objective(self):\n return round(self.bounds[1] - self.bounds[0], 3)\n def bound(self):\n return -(self.bounds[1] - self.bounds[0])**2\n def save_state(self, node):\n node.state = self.bounds\n def load_state(self, node):\n self.bounds = node.state\n def branch(self):\n L, U = self.bounds\n mid = 0.5 * (L + U)\n for l,u in [(L,mid), (mid,U)]:\n child = pybnb.Node()\n child.state = (l,u)\n yield child\n\n**Write a solve script:**\n\n.. code:: python\n\n # solve_simple.py\n\n import simple\n problem = simple.Simple()\n results = pybnb.solve(problem,\n absolute_gap=1e-9)\n\n**Run the script:**\n\n.. code:: bash\n\n $ mpirun -np 4 python solve_simple.py\n\n Using non-default solver options:\n - absolute_gap: 1e-09 (default: 0)\n\n Starting branch & bound solve:\n - dispatcher pid: 34902 (Ozymandias.local)\n - worker processes: 3\n ---------------------------------------------------------------------------------------------------------------------------\n Nodes | Objective Bounds | Work \n Expl Unexpl | Incumbent Bound Rel. Gap Abs. Gap | Time (s) Nodes/Sec Imbalance Idle\n 0 1 | inf -inf inf% inf | 0.0 0.00 0.00% 0\n * 1 2 | 1 -1 200.0000000% 2 | 0.0 1226.99 300.00% 1\n * 2 3 | 0.5 -1 150.0000000% 1.5 | 0.0 2966.04 150.00% 0\n * 4 5 | 0.25 -0.25 50.0000000% 0.5 | 0.0 8081.95 75.00% 0\n * 8 9 | 0.125 -0.0625 18.7500000% 0.1875 | 0.0 12566.90 37.50% 0\n Expl Unexpl | Incumbent Bound Rel. Gap Abs. Gap | Time (s) Nodes/Sec Imbalance Idle\n * 16 17 | 0.062 -0.015625 7.7625000% 0.077625 | 0.0 15352.74 18.75% 0\n * 32 33 | 0.031 -0.00390625 3.4906250% 0.03490625 | 0.0 15981.49 18.75% 0\n * 64 65 | 0.016 -0.0009765625 1.6976563% 0.0169765625 | 0.0 18740.68 18.75% 0\n * 128 129 | 0.008 -0.0002441406 0.8244141% 0.008244140625 | 0.0 21573.51 11.72% 0\n * 256 257 | 0.004 -6.103516e-05 0.4061035% 0.004061035156 | 0.0 22166.96 8.20% 0\n Expl Unexpl | Incumbent Bound Rel. Gap Abs. Gap | Time (s) Nodes/Sec Imbalance Idle\n * 512 513 | 0.002 -1.525879e-05 0.2015259% 0.002015258789 | 0.0 21177.00 5.86% 0\n * 1024 1025 | 0.001 -3.814697e-06 0.1003815% 0.001003814697 | 0.1 19978.42 9.38% 0\n * 2048 2049 | 0 -9.536743e-07 0.0000954% 9.536743164e-07 | 0.1 21606.45 5.42% 0\n 24029 24030 | 0 -1.490116e-08 0.0000015% 1.490116119e-08 | 1.1 21961.03 5.98% 0\n 46159 46160 | 0 -3.72529e-09 0.0000004% 3.725290298e-09 | 2.1 22120.75 5.73% 0\n Expl Unexpl | Incumbent Bound Rel. Gap Abs. Gap | Time (s) Nodes/Sec Imbalance Idle\n 65537 65538 | 0 -9.313226e-10 0.0000001% 9.313225746e-10 | 3.0 22459.50 6.20% 0\n ---------------------------------------------------------------------------------------------------------------------------\n \n Absolute optimality tolerance met\n Optimal solution found!\n \n solver results:\n - solution_status: optimal\n - termination_condition: optimality\n - objective: 0\n - bound: -9.313226e-10\n - absolute_gap: 9.313226e-10\n - relative_gap: 9.313226e-10\n - nodes: 65537\n - wall_time: 2.96 s\n - best_node: Node(objective=0)\n \n Number of Workers: 3\n Load Imbalance: 6.20%\n - min: 21355 (proc rank=3)\n - max: 22710 (proc rank=1)\n Average Worker Timing:\n - queue: 80.78% [avg time: 109.6 us, count: 65537]\n - load_state: 0.44% [avg time: 596.1 ns, count: 65537]\n - bound: 0.59% [avg time: 796.1 ns, count: 65537]\n - objective: 3.52% [avg time: 4.7 us, count: 65537]\n - branch: 3.36% [avg time: 4.6 us, count: 65537]\n - other: 11.31% [avg time: 15.3 us, count: 65537]\n\n\n.. |Travis-Status| image:: https://travis-ci.org/ghackebeil/pybnb.svg?branch=master\n :target: https://travis-ci.org/ghackebeil/pybnb\n.. |Appveyor-Status| image:: https://ci.appveyor.com/api/projects/status/gfbrxja9v08rm7a2?svg=true\n :target: https://ci.appveyor.com/project/ghackebeil/pybnb\n.. |Coverage-Status| image:: https://codecov.io/gh/ghackebeil/pybnb/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/ghackebeil/pybnb\n.. |Documentation-Status| image:: https://readthedocs.org/projects/pybnb/badge/?version=latest\n :target: http://pybnb.readthedocs.io/en/latest/?badge=latest\n.. |PyPI-Status| image:: https://img.shields.io/pypi/v/pybnb.svg\n :target: https://pypi.python.org/pypi/pybnb/\n.. |PyPI-Versions| image:: https://img.shields.io/pypi/pyversions/pybnb.svg\n :target: https://pypi.org/project/pybnb\n.. |Codacy-Grade| image:: https://img.shields.io/lgtm/grade/python/g/ghackebeil/pybnb.svg?logo=lgtm&logoWidth=18\n :target: https://lgtm.com/projects/g/ghackebeil/pybnb/context:python", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ghackebeil/pybnb", "keywords": "optimization,branch and bound", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pybnb", "package_url": "https://pypi.org/project/pybnb/", "platform": "", "project_url": "https://pypi.org/project/pybnb/", "project_urls": { "Homepage": "https://github.com/ghackebeil/pybnb" }, "release_url": "https://pypi.org/project/pybnb/0.6.1/", "requires_dist": null, "requires_python": "", "summary": "A parallel branch-and-bound engine for Python", "version": "0.6.1" }, "last_serial": 5005823, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "a8a419885fcb5229e921687c8e2a8c65", "sha256": "3073564c0081bbe4aebb5c85afe3a3407b79c0ef7085041f3a1035546314b7cc" }, "downloads": -1, "filename": "pybnb-0.1.1.tar.gz", "has_sig": false, "md5_digest": "a8a419885fcb5229e921687c8e2a8c65", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51176, "upload_time": "2018-05-21T05:23:44", "url": "https://files.pythonhosted.org/packages/64/25/91cf2190acfdc5b4377ac8ed5d76e103f2db12e83f9f6f53b96a0b96aa16/pybnb-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "e0bfc997825ccf1638dbfd999fdd47a7", "sha256": "ca4fb9a595374978513bb3109c19caaf3229844dd9261f0fec21afd6aac5553a" }, "downloads": -1, "filename": "pybnb-0.2.0.tar.gz", "has_sig": false, "md5_digest": "e0bfc997825ccf1638dbfd999fdd47a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51111, "upload_time": "2018-05-22T20:17:02", "url": "https://files.pythonhosted.org/packages/96/e8/38c5b8555110d79e801d530ced930cc0cedbcee625e877d8462dd2dd98d0/pybnb-0.2.0.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "8a387198a4c252ea0b1b25ec9f0cd68e", "sha256": "125b94e9f63615a2211b0986fd24531b78613572c8467acea6f0e6a38952a297" }, "downloads": -1, "filename": "pybnb-0.2.2.tar.gz", "has_sig": false, "md5_digest": "8a387198a4c252ea0b1b25ec9f0cd68e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50340, "upload_time": "2018-05-22T21:11:54", "url": "https://files.pythonhosted.org/packages/71/ca/4e666205719b88fba46be4a62e3dee586c6711dddbdf813ffc17a3b2c675/pybnb-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "702afd684f611bd281fd9e6dc09fc30a", "sha256": "f61d63f96fbdeaab30ee73f29b88c6a6e15b8ed6bd1998fd6849ff706fe8eb7f" }, "downloads": -1, "filename": "pybnb-0.2.3.tar.gz", "has_sig": false, "md5_digest": "702afd684f611bd281fd9e6dc09fc30a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51195, "upload_time": "2018-05-22T21:53:22", "url": "https://files.pythonhosted.org/packages/86/b3/75522681fe8218cf55bcd511f1d90de173d3d97302814ad19ac9311984f2/pybnb-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "24bc5d03f8ddbadf190e7d9c1641ed04", "sha256": "9353a06c20ee7481468619f2f2b2ab6d646a8c2e2e15b53e40630f208c9fd76e" }, "downloads": -1, "filename": "pybnb-0.2.4.tar.gz", "has_sig": false, "md5_digest": "24bc5d03f8ddbadf190e7d9c1641ed04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53183, "upload_time": "2018-05-26T23:27:44", "url": "https://files.pythonhosted.org/packages/1a/80/9f8e923e72025129360a07a49a3a5de471a14a41e2ec58160cf13a8cf551/pybnb-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "3a0b6cc93aea74db3a1b89144ee12796", "sha256": "243eec01657c052fbb0b0b87f7316525067c186328ad2c4b4b82c6dedcb2db48" }, "downloads": -1, "filename": "pybnb-0.2.5.tar.gz", "has_sig": false, "md5_digest": "3a0b6cc93aea74db3a1b89144ee12796", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54017, "upload_time": "2018-05-30T04:15:48", "url": "https://files.pythonhosted.org/packages/b0/9f/c8eadacd82db3eb9f97d67f77fc2d5ec65065b0f56d9a1da57b4acc8cf08/pybnb-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "c129f74a14d245ce43621223d225de99", "sha256": "42b8cb99a9ff328d370829a3682293ade91142889f4707036385fa9d69890bb2" }, "downloads": -1, "filename": "pybnb-0.2.6.tar.gz", "has_sig": false, "md5_digest": "c129f74a14d245ce43621223d225de99", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55107, "upload_time": "2018-07-14T00:35:01", "url": "https://files.pythonhosted.org/packages/14/28/6ae04bf2e5888ac6fff569df6b7cc83a491e6e5531b6d3177b89f652b37b/pybnb-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "e54460593f4145f7b04e076d4b054b25", "sha256": "52eb493dc04a244456ac6e474d45969bddbf587c087216bac9fc3279fe08108d" }, "downloads": -1, "filename": "pybnb-0.2.7.tar.gz", "has_sig": false, "md5_digest": "e54460593f4145f7b04e076d4b054b25", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55159, "upload_time": "2018-11-26T21:25:15", "url": "https://files.pythonhosted.org/packages/8c/b9/349460ed6b5c6c7a16d293a13aac64258dc90e54000164d4cac8af12ccf8/pybnb-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "58dfddf748394661a6519a6a7f34c1f9", "sha256": "e3f7dcb82e54c644bc03085d791023fc0fee8ee031308db7b32498f6d443c337" }, "downloads": -1, "filename": "pybnb-0.2.8.tar.gz", "has_sig": false, "md5_digest": "58dfddf748394661a6519a6a7f34c1f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55264, "upload_time": "2018-11-26T22:36:13", "url": "https://files.pythonhosted.org/packages/6d/ed/cf2f9c383b0c223cec428b479fbe7b41982695c57d1b036c28312959b774/pybnb-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "fbabd421f1e5ab539d60c4560d3d6174", "sha256": "dd33be3330e4b67c4de09bba7739468e4a9f3fa5214d096ceb583ee0c5a86633" }, "downloads": -1, "filename": "pybnb-0.2.9.tar.gz", "has_sig": false, "md5_digest": "fbabd421f1e5ab539d60c4560d3d6174", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59364, "upload_time": "2018-12-03T18:51:35", "url": "https://files.pythonhosted.org/packages/ca/51/2b5232d4f12b6d9169b62880f01b1191bb82ab42b6e8ffce3e38a3da79a8/pybnb-0.2.9.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "f6018df289fe58d1e3963b5e6ed6b9eb", "sha256": "c3864dd1c19a0ff13514a3072668ed3caa1f56d476ac56d46e52c9acbed88956" }, "downloads": -1, "filename": "pybnb-0.3.0.tar.gz", "has_sig": false, "md5_digest": "f6018df289fe58d1e3963b5e6ed6b9eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 75841, "upload_time": "2019-01-21T00:52:35", "url": "https://files.pythonhosted.org/packages/61/7d/7ea398bf390f330c1e06b8250fab6a5b26dd8928301fc3a624c74af34c57/pybnb-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "43b136c421f67a0a2a9f5f0d4392b2fc", "sha256": "9185ac91e4105e7109400e3006075396649ce5bd1013d8c2355f56cd05f77595" }, "downloads": -1, "filename": "pybnb-0.4.0.tar.gz", "has_sig": false, "md5_digest": "43b136c421f67a0a2a9f5f0d4392b2fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 78777, "upload_time": "2019-01-31T19:27:42", "url": "https://files.pythonhosted.org/packages/b3/5c/bdd1f7a36ab236355772c4ccb04d2b7eaaa24f52d6305456e0fb621a87d5/pybnb-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "d5912b577fb78088e36d9e3a24442239", "sha256": "5453154f68c09d0a2635f2001979deee51064c2b363eecbf0fb05095d631dc91" }, "downloads": -1, "filename": "pybnb-0.5.0.tar.gz", "has_sig": false, "md5_digest": "d5912b577fb78088e36d9e3a24442239", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89447, "upload_time": "2019-02-10T20:00:19", "url": "https://files.pythonhosted.org/packages/ff/94/f781deb62e2ab123ba5ecb4b24c910c1d4bfde0180122cee8af109ae6cc1/pybnb-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "dbfc90299a9e0de19e69859d4a786884", "sha256": "8334fa60c4083a2f11eb18ccee06a1e0aefd16b1d170396a0cd1db8236d32deb" }, "downloads": -1, "filename": "pybnb-0.5.1.tar.gz", "has_sig": false, "md5_digest": "dbfc90299a9e0de19e69859d4a786884", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 90145, "upload_time": "2019-02-11T21:13:58", "url": "https://files.pythonhosted.org/packages/af/54/ad389b8a10ab7dd5932208c414dea35cd1b81cba406e4e5dc4cc43dc18a6/pybnb-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "d8b19f5acd813a8ec5e50d6cbde951fb", "sha256": "e21e81b080cbd8c1d4f91577431a87f629c0cbd7064b9267b8cad678df5fc800" }, "downloads": -1, "filename": "pybnb-0.5.2.tar.gz", "has_sig": false, "md5_digest": "d8b19f5acd813a8ec5e50d6cbde951fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 92169, "upload_time": "2019-02-13T23:55:38", "url": "https://files.pythonhosted.org/packages/20/77/4743c05afcc62a92a5a92428521ba6ad7b1245cc4cfd05000febeb2a4024/pybnb-0.5.2.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "9667981f9b26ccadfbd8c2dc50306a77", "sha256": "07ce86a19a64625d257e24a52e5d471ececa7df236fcdf619f6e76c5152b1811" }, "downloads": -1, "filename": "pybnb-0.6.0.tar.gz", "has_sig": false, "md5_digest": "9667981f9b26ccadfbd8c2dc50306a77", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 93721, "upload_time": "2019-03-12T19:12:40", "url": "https://files.pythonhosted.org/packages/e5/d3/f5df4c5e584d8225209e85e261789c896be22b910a5b556939a4ab24b599/pybnb-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "b06579ff00a0965aa0c9b6494c5ce6e3", "sha256": "6e27c1c37df2c21ec3ef9b8c03422c67c4d126bbeace597387dd8e5618444dfa" }, "downloads": -1, "filename": "pybnb-0.6.1.tar.gz", "has_sig": false, "md5_digest": "b06579ff00a0965aa0c9b6494c5ce6e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 93977, "upload_time": "2019-03-30T01:28:37", "url": "https://files.pythonhosted.org/packages/d2/40/1e59812443136eecbbe61b1b24667f10a856c35436831eb1a6ca74450aa6/pybnb-0.6.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b06579ff00a0965aa0c9b6494c5ce6e3", "sha256": "6e27c1c37df2c21ec3ef9b8c03422c67c4d126bbeace597387dd8e5618444dfa" }, "downloads": -1, "filename": "pybnb-0.6.1.tar.gz", "has_sig": false, "md5_digest": "b06579ff00a0965aa0c9b6494c5ce6e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 93977, "upload_time": "2019-03-30T01:28:37", "url": "https://files.pythonhosted.org/packages/d2/40/1e59812443136eecbbe61b1b24667f10a856c35436831eb1a6ca74450aa6/pybnb-0.6.1.tar.gz" } ] }