{ "info": { "author": "Jon Lund Steffensen", "author_email": "jonlst@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Programming Language :: Cython", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Topic :: Scientific/Engineering :: Mathematics" ], "description": "QSopt\\_ex Python bindings\n=========================\n\n.. image:: https://travis-ci.org/jonls/python-qsoptex.svg?branch=master\n :alt: Build Status\n :target: https://travis-ci.org/jonls/python-qsoptex\n\n.. image:: https://badge.fury.io/py/python-qsoptex.svg\n :alt: PyPI badge\n :target: http://badge.fury.io/py/python-qsoptex\n\nUsage\n-----\n\nThe Python module does not yet expose the full interface of the library\nbut just enough is available to be able to build problems or load\nproblems from a file and solve it. After solving, the values of\nvariables can be obtained, as shown below.\n\nThese values will be returned as ``fractions.Fraction`` or (if the value\nis an integer) ``int``. Similarly, when building a problem the\nparameters can be given as ``fractions.Fraction`` or ``int`` (or any\nother ``numbers.Rational``) or anything that can be converted to\n``Fraction`` using the ``Fraction`` constructor (i.e. ``float``,\n``Decimal``, etc.).\n\n.. code:: python\n\n import qsoptex\n import logging\n\n logging.basicConfig(level=logging.DEBUG)\n\n p = qsoptex.ExactProblem()\n\n p.add_variable(name='x', objective=2, lower=3.5, upper=17.5)\n p.add_variable(name='y', objective=-1, lower=None, upper=2)\n p.add_linear_constraint(qsoptex.ConstraintSense.EQUAL,\n {'x': 1, 'y': 1}, rhs=0)\n p.set_objective_sense(qsoptex.ObjectiveSense.MAXIMIZE)\n\n p.set_param(qsoptex.Parameter.SIMPLEX_DISPLAY, 1)\n status = p.solve()\n if status == qsoptex.SolutionStatus.OPTIMAL:\n print('Optimal solution')\n print(p.get_objective_value())\n print(p.get_value('x'))\n\nThe module is also able to load problems from external files:\n\n.. code:: python\n\n p = qsoptex.ExactProblem()\n p.read('netlib/cycle.mps', filetype='MPS') # 'LP' is also supported\n p.set_param(qsoptex.Parameter.SIMPLEX_DISPLAY, 1)\n status = p.solve()\n\nKnown issues\n------------\n\nWhen creating a problem with the QSopt\\_ex library, the variables and\nconstraints will be assigned a default name if no name is specified by the\nuser. Variables will be named ``xN`` or ``x_N`` and constraints will be named\n``cN`` or ``c_N`` (where ``N`` is an integer). If the user later adds a named\nvariable or constraint which uses a name that is already in use, the name of\nthe new variable or constraint will be silently changed by the QSopt\\_ex\nlibrary. For example, the last line of the following code will remove the\nfirst constraint from the problem, not the second.\n\n.. code:: python\n\n p = qsoptex.ExactProblem()\n p.add_variable(name='x', objective=2, lower=3.5, upper=17.5)\n p.add_variable(name='y', objective=-1, lower=None, upper=2)\n p.add_linear_constraint(qsoptex.ConstraintSense.EQUAL,\n {'x': 1, 'y': 1}, rhs=0)\n p.add_linear_constraint(qsoptex.ConstraintSense.LESS,\n {'x': 1}, rhs=15, name='c1')\n # Deletes the first constraint, not the second\n p.delete_linear_constraint('c1')\n\nThis issue can be avoided by always assigning names to variables and\nconstraints, or by avoiding using the same names as QSopt\\_ex uses as default\nnames.\n\nBuilding\n--------\n\nThe module requires the QSopt\\_ex library to be installed. Currently,\nthe modified version at https://github.com/jonls/qsopt-ex is required at\nversion 2.5.10.3 or later.\n\nUse ``setup.py`` to build the extension. The setup script is based on\n``setuptools``.\n\n.. code:: shell\n\n $ ./setup install\n\nIf GnuMP or QSopt\\_ex is installed non-standard locations, the include\nand library paths can be set using the environment variables\n\n- GnuMP: ``GMP_INCLUDE_DIR`` and ``GMP_LIBRARY_DIR``\n- QSopt\\_ex: ``QSOPTEX_INCLUDE_DIR`` and ``QSOPTEX_LIBRARY_DIR``\n\nFor example, if GnuMP is installed in the ``/opt/local`` prefix\n\n.. code:: shell\n\n $ GMP_INCLUDE_DIR=/opt/local/include GMP_LIBRARY_DIR=/opt/local/lib \\\n ./setup.py install", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jonls/python-qsoptex", "keywords": "", "license": "GPLv3+", "maintainer": "", "maintainer_email": "", "name": "python-qsoptex", "package_url": "https://pypi.org/project/python-qsoptex/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/python-qsoptex/", "project_urls": { "Homepage": "https://github.com/jonls/python-qsoptex" }, "release_url": "https://pypi.org/project/python-qsoptex/0.5/", "requires_dist": [ "six" ], "requires_python": "", "summary": "Python bindings for QSopt_ex, an exact linear programming solver", "version": "0.5" }, "last_serial": 1801349, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "1b54ca9506cc424145bf01ed2e0092bb", "sha256": "d1f748a623a958d84259d4c6b2ef40e123d2cafc7e3fd487464f1f854a2c68c5" }, "downloads": -1, "filename": "python-qsoptex-0.2.tar.gz", "has_sig": false, "md5_digest": "1b54ca9506cc424145bf01ed2e0092bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53946, "upload_time": "2015-05-01T03:32:43", "url": "https://files.pythonhosted.org/packages/80/9c/57eb70c05ed937261350b5de106f9fee7123ad060f1aaac702dd099b34cc/python-qsoptex-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "edbbf99f44f01686b95e4a579edcdbf5", "sha256": "2df73c896253dad294f2b212f4d1127a1e500b13b2ca3d3f71110888a90bef9d" }, "downloads": -1, "filename": "python_qsoptex-0.3-cp27-none-macosx_10_10_x86_64.whl", "has_sig": false, "md5_digest": "edbbf99f44f01686b95e4a579edcdbf5", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 42117, "upload_time": "2015-05-28T05:36:10", "url": "https://files.pythonhosted.org/packages/c9/98/b10809c328d344a95973fd5acf67ba5da0a3cbe58213c1f770f530e16473/python_qsoptex-0.3-cp27-none-macosx_10_10_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "ffd653a9b669b32ab5f4bab548b95a34", "sha256": "494569ccc33f771dc40b8ef30e72c6f3bf13ca5504dd820ae1dd72cde3abd3ab" }, "downloads": -1, "filename": "python_qsoptex-0.3-cp34-cp34m-macosx_10_10_x86_64.whl", "has_sig": false, "md5_digest": "ffd653a9b669b32ab5f4bab548b95a34", "packagetype": "bdist_wheel", "python_version": "cp34", "requires_python": null, "size": 41432, "upload_time": "2015-05-28T05:37:44", "url": "https://files.pythonhosted.org/packages/da/a1/3c97c116a5443cb335f2414fc34a28f85b4f6a6e2641a919398634e1cec5/python_qsoptex-0.3-cp34-cp34m-macosx_10_10_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "e476789b60f10528953aa34d086c1f2c", "sha256": "2e72181d0e7edc343a25f7be7f374b947f70cabf16936495864a5b9be4efcd76" }, "downloads": -1, "filename": "python-qsoptex-0.3.tar.gz", "has_sig": false, "md5_digest": "e476789b60f10528953aa34d086c1f2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55562, "upload_time": "2015-05-01T03:59:22", "url": "https://files.pythonhosted.org/packages/86/11/1723ae5f10b473c2c231180a9f8dca75a1419598fd97dfc6f6a66557d10d/python-qsoptex-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "fb4244923c351dae80d6111781bb610a", "sha256": "b3d0d1898c19cc10544ce5b6732a808926cfa2ff320709b75e73ae6bb7aac02c" }, "downloads": -1, "filename": "python_qsoptex-0.4-cp27-none-macosx_10_10_x86_64.whl", "has_sig": false, "md5_digest": "fb4244923c351dae80d6111781bb610a", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 45335, "upload_time": "2015-07-22T16:31:31", "url": "https://files.pythonhosted.org/packages/34/2f/3b79775f4a5bc374c92ed7a9b55d96e1ad75d01bb0cfa3a09badb4fb2d33/python_qsoptex-0.4-cp27-none-macosx_10_10_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "a88a556c1a6862fc8f83ad0c2446576b", "sha256": "285e5e57a2c9a7e9e7479724e9c667f3344a267886c5e585f2734bca40cd95f5" }, "downloads": -1, "filename": "python_qsoptex-0.4-cp34-cp34m-macosx_10_10_x86_64.whl", "has_sig": false, "md5_digest": "a88a556c1a6862fc8f83ad0c2446576b", "packagetype": "bdist_wheel", "python_version": "cp34", "requires_python": null, "size": 44682, "upload_time": "2015-07-22T16:31:35", "url": "https://files.pythonhosted.org/packages/15/d9/8ed4adc372775aba5bd6286a1ceabca2d12ff19bf6e23ed9a42babbf3eab/python_qsoptex-0.4-cp34-cp34m-macosx_10_10_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "a77f56869f7fce3ed53d369deed67da6", "sha256": "2cd1623020fd6b52f948577c4ca89c8149a6239ddb848d5e53c539f9422dc7f9" }, "downloads": -1, "filename": "python-qsoptex-0.4.tar.gz", "has_sig": false, "md5_digest": "a77f56869f7fce3ed53d369deed67da6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59559, "upload_time": "2015-07-22T16:31:26", "url": "https://files.pythonhosted.org/packages/a4/d7/add489cca51fe5a3bcaea40c53dcc7359726e59c1eeb0b8d35ccdf702d66/python-qsoptex-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "f20151290abf519a99e41c644f32894a", "sha256": "0ff7b7381413ac8b55eb0c9c9d11979f80d60438bddde28586863a04d7b109de" }, "downloads": -1, "filename": "python_qsoptex-0.5-cp27-none-macosx_10_11_x86_64.whl", "has_sig": false, "md5_digest": "f20151290abf519a99e41c644f32894a", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 46507, "upload_time": "2015-11-04T20:11:06", "url": "https://files.pythonhosted.org/packages/07/28/b761112d3da3e1edf039efbee862355d5e26adafb26248599ea05f21e0b3/python_qsoptex-0.5-cp27-none-macosx_10_11_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "f162c083ac077fb227d6205674ddd8e9", "sha256": "53f90f03613be6a673b6e22ce55296c99cdcffb625eac5869a6bf842668f49c1" }, "downloads": -1, "filename": "python_qsoptex-0.5-cp34-cp34m-macosx_10_11_x86_64.whl", "has_sig": false, "md5_digest": "f162c083ac077fb227d6205674ddd8e9", "packagetype": "bdist_wheel", "python_version": "cp34", "requires_python": null, "size": 45911, "upload_time": "2015-11-04T20:10:21", "url": "https://files.pythonhosted.org/packages/84/41/66a7d17a5437e2c3524fdf4135f97a670cae8c222b37b45c690b4353f67f/python_qsoptex-0.5-cp34-cp34m-macosx_10_11_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "760b8c399d05169ee88508e943274442", "sha256": "7705dc95277b5b70e9a38c8fdc251213b677bf75dc87159b8deb7a6617132503" }, "downloads": -1, "filename": "python-qsoptex-0.5.tar.gz", "has_sig": false, "md5_digest": "760b8c399d05169ee88508e943274442", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60870, "upload_time": "2015-11-04T20:10:13", "url": "https://files.pythonhosted.org/packages/e7/e7/e0b69c7f4ac7398ef4e845d090abcfe6009ca0a6823e79fca795fb02ff52/python-qsoptex-0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f20151290abf519a99e41c644f32894a", "sha256": "0ff7b7381413ac8b55eb0c9c9d11979f80d60438bddde28586863a04d7b109de" }, "downloads": -1, "filename": "python_qsoptex-0.5-cp27-none-macosx_10_11_x86_64.whl", "has_sig": false, "md5_digest": "f20151290abf519a99e41c644f32894a", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 46507, "upload_time": "2015-11-04T20:11:06", "url": "https://files.pythonhosted.org/packages/07/28/b761112d3da3e1edf039efbee862355d5e26adafb26248599ea05f21e0b3/python_qsoptex-0.5-cp27-none-macosx_10_11_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "f162c083ac077fb227d6205674ddd8e9", "sha256": "53f90f03613be6a673b6e22ce55296c99cdcffb625eac5869a6bf842668f49c1" }, "downloads": -1, "filename": "python_qsoptex-0.5-cp34-cp34m-macosx_10_11_x86_64.whl", "has_sig": false, "md5_digest": "f162c083ac077fb227d6205674ddd8e9", "packagetype": "bdist_wheel", "python_version": "cp34", "requires_python": null, "size": 45911, "upload_time": "2015-11-04T20:10:21", "url": "https://files.pythonhosted.org/packages/84/41/66a7d17a5437e2c3524fdf4135f97a670cae8c222b37b45c690b4353f67f/python_qsoptex-0.5-cp34-cp34m-macosx_10_11_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "760b8c399d05169ee88508e943274442", "sha256": "7705dc95277b5b70e9a38c8fdc251213b677bf75dc87159b8deb7a6617132503" }, "downloads": -1, "filename": "python-qsoptex-0.5.tar.gz", "has_sig": false, "md5_digest": "760b8c399d05169ee88508e943274442", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60870, "upload_time": "2015-11-04T20:10:13", "url": "https://files.pythonhosted.org/packages/e7/e7/e0b69c7f4ac7398ef4e845d090abcfe6009ca0a6823e79fca795fb02ff52/python-qsoptex-0.5.tar.gz" } ] }