{ "info": { "author": "Giacomo Nannicini", "author_email": "nannicini@us.ibm.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering :: Mathematics" ], "description": "..\n\tFile: README.rst\n\tAuthor(s): Giacomo Nannicini\n International Business Machines Corporation\n nannicini@us.ibm.com\n\n\t(C) Copyright Singapore University of Technology and Design 2015.\n\t(C) Copyright International Business Machines Corporation 2016.\n\tYou should have received a copy of the license with this code.\n\tResearch partially supported by SUTD-MIT International Design Center.\n\n=================\nTable of contents\n=================\n\nThis software is released under the Revised BSD License. By using\nthis software, you are implicitly accepting the terms of the license.\n\nRBFOpt is a Python library for black-box optimization (also known as\nderivative-free optimization). It supports Python 2.7 and Python 3.\nThis README contains installation instructions and a brief\noverview. More details can be found in the user manual.\n\nContents of this directory:\n\n* AUTHORS: Authors of the library.\n* CHANGELOG: Changelog.\n* LICENSE: Licensing information.\n* MANIFEST.in: List of additional files to be included in archives.\n* README.rst: This file.\n* VERSION: Version of the library.\n* manual.pdf: User manual.\n* requirements.txt: List of dependencies for this project.\n* setup.cfg: Configuration file for setup.py\n* setup.py: Setup file.\n* bin/\n\n * rbfopt_cl_interface.py: Script for the command-line interface,\n to run the library on a user-defined black-box function\n implemented in a user-specified file.\n * rbfopt_test_interface.py: Script to test the library on a\n global optimization test set.\n\n* src/\n\n * rbfopt/\n\n * rbfopt_black_box.py: Description of an abstract black-box\n function.\n * rbfopt_algorithm.py: Main optimization algorithm, both\n serial and parallel.\n * rbfopt_aux_problems.py: Interface for the auxiliary problems\n solved during the optimization process.\n * rbfopt_degreeX_models.py: PyOmo models for the auxiliary\n problems necessary for RBF functions with minimum required\n polynomial degree X.\n * rbfopt_refinement: Routines for trust-region based refinement\n phase.\n * rbfopt_settings.py: Global and algorithmic settings.\n * rbfopt_test_functions.py: Mathematical test functions.\n * rbfopt_user_black_box.py: A black-box class constructed from\n user data.\n * rbfopt_utils.py: Utility routines.\n\n * doc/\n\n * conf.py: Configuration file for Sphinx.\n * Makefile: Makefile (for Linux/Mac) to build the\n\tdocumentation.\n * make.bat: Batch file (for Windows) to build the\n\tdocumentation.\n * \\*.rst: ReStructured Text files for the documentation.\n\n * examples/\n\n * rbfopt_black_box_example.py: Example of an implementation\n\tof a simple black-box function.\n\n* tests/\n\n * context.py: Configuration file for nose.\n * test_functions.py: Global optimization test functions.\n * test_rbfopt_algorithm.py: Testing module for\n rbfopt_algorithm.py (regular unit tests).\n * test_rbfopt_algorithm_slow.py: Testing module for\n rbfopt_algorithm.py (additional, slow tests).\n * test_rbfopt_aux_problems.py: Testing module for\n rbfopt_aux_problems.py.\n * test_rbfopt_degreeX_models.py: Testing module for\n rbfopt_degreeX_models.py.\n * test_rbfopt_env.py: Environment variables for testing\n environment.\n * test_rbfopt_mwe.py: Test the minimal working example given in the\n documentation.\n * test_rbfopt_refinement: Testing module for rbfopt_refinement.py\n * test_rbfopt_settings.py: Testing module for rbfopt_settings.py.\n * test_rbfopt_utils.py Testing module for rbfopt_utils.py.\n\n=========================\nInstallation requirements\n=========================\n\nThis package requires the following software:\n\n* Python version >= 2.7 \n* NumPy version >= 1.11.0\n* SciPy version >= 0.17.0\n* Pyomo version >= 5.1.1\n\nThe software has been tested with the versions indicated above. It may\nwork with earlier version and should work with subsequent version, if\nthey are backward compatible. In particular, the software is known to\nwork with Pyomo version 4 and earlier versions of Scipy.\n\nThe code is mainly developed for Python 3, but it also runs on Python\n2.7. We recommend using Python 3 if possible.\n\nThe easiest, and recommended, way to install the package is via the\nPython module manager pip. The code is on PyPI, therefore it can be\ninstalled from PyPI using::\n\n pip install rbfopt\n\nYou can install from source, downloading an archive or cloning from\ngit (for example if you want to use a development version that is not\nreleased on PyPI yet), using the command::\n\n pip install .\n\nYou may need the -e switch to install in a virtual environment. To\nbuild the documentation, you also need numpydoc::\n\n pip install numpydoc\n\nOn Windows systems, we recommend `WinPython\n`, which comes with NumPy, SciPy\nand pip already installed. After installing WinPython, it is typically\nnecessary to update the PATH environment variable. The above command\nusing pip to install missing libraries has been successfully tested on\na fresh WinPython installation.\n\nRBFOpt requires the solution of convex and nonconvex nonlinear\nprograms (NLPs), as well as nonconvex mixed-integer nonlinear programs\n(MINLPs) if some of the decision variables (design parameters) are\nconstrained to be integer. Solution of these subproblems is performed\nthrough Pyomo, which in principle supports any solver with an AMPL\ninterface (.nl file format). The code is setup to employ Bonmin and\nIpopt, that are open-source, with a permissive license, and available\nthrough the COIN-OR repository. The end-users are responsible for\nchecking that they have the right to use these solvers. To use\ndifferent solvers, a few lines of the source code have to be modified:\nask for help on GitHub or on the mailing list, see below.\n\nTo obtain pre-compiled binaries for Bonmin and Ipopt for several\nplatforms, we suggest having a look at the AMPL `opensource solvers\n` (also `here\n`) for static binaries. **Note:** These\nbinaries might be outdated: better performance can sometimes be\nobtained compiling Bonmin from scratch (Bonmin contains Ipopt as\nwell), especially if compiling with a different solver for linear\nsystems rather than the default Mumps, e.g., ma27. Bonmin and Ipopt\nmust be compiled with ASL support.\n\nIn case any of the packages indicated above is missing, some features\nmay be disabled, not function properly, or the software may not run at\nall.\n\n=============================================\nInstallation instructions and getting started\n=============================================\n\n1) Install the package with pip as indicated above. This will install\n the two executable Python scripts rbfopt_cl_interface.py and\n rbfopt_test_interface.py in your bin/ directory (whatever is used\n by pip for this purpose), as well as the module files in your\n site-packages directory.\n\n2) Make sure Bonmin and Ipopt are in your path; otherwise, use the\n options minlp_solver_path and nlp_solver_path in RbfoptSettings to\n indicate the full path to the solvers. If you use RBFOpt as a\n library and create your own RbfoptSettings object, these options\n can be given as::\n\n import rbfopt\n settings = rbfopt.RbfoptSettings(minlp_solver_path='full/path/to/bonmin', nlp_solver_path='full/path/to/ipopt')\n\n If you use the command-line tools, you can simply provide the option preceded by double hyphen, as in::\n\n rbfopt_test_interface.py --minlp_solver_path='full/path/to/bonmin' branin\n\n3) Enjoy!\n\n4) You can test the installation by running::\n\n rbfopt_test_interface.py branin\n\n See::\n\n rbfopt_test_interface.py --help\n\n for more details on command-line options for the testing tool.\n\n Many more test functions, with different characteristics, are\n implemented in the file rbfopt_test_functions.py. They can all be\n used for testing.\n\n5) Unit tests for the library can be executed by running::\n\n python setup.py test\n\n or::\n\n python setup.py nosetests\n\n or::\n\n nosetests\n\n from the current (main) directory. If some of the tests fail, the\n library may or may not work correctly. Some of the test failures\n are relatively harmless. You are advised to contact the mailing\n list (see below) if you are unsure about some test failure.\n\n Additional slow tests, that check if various parametrizations of\n the optimization algorithm can solve some global optimization\n problems, are found in the file test_rbfopt_algorithm_slow.py,\n which is ignored by nosetests by default. To execute these tests,\n run::\n\n python -m nose tests/test_rbfopt_algorithm_slow.py\n\n=======================\nMinimal working example\n=======================\n\nAfter installation, the easiest way to optimize a function is to use\nthe RbfoptUserBlackBox class to define a black-box, and execute\nRbfoptAlgorithm on it. This is a minimal example to optimize the\n3-dimensional function defined below::\n\n import rbfopt\n import numpy as np\n def obj_funct(x):\n return x[0]*x[1] - x[2]\n\n bb = rbfopt.RbfoptUserBlackBox(3, np.array([0] * 3), np.array([10] * 3),\n np.array(['R', 'I', 'R']), obj_funct)\n settings = rbfopt.RbfoptSettings(max_evaluations=50)\n alg = rbfopt.RbfoptAlgorithm(settings, bb)\n val, x, itercount, evalcount, fast_evalcount = alg.optimize()\n\nAnother possibility is to define your own class derived from\nRbfoptBlackBox in a separate file, and execute the command-line\ninterface on the file. An example is provided under\nsrc/rbfopt/examples, in the file rbfopt_black_box_example.py. This can\nbe executed with::\n\n rbfopt_cl_interface.py src/rbfopt/examples/rbfopt_black_box_example.py\n\n=====================\nParallel optimization\n=====================\n\nRBFOpt supports asynchronous parallel optimization using Python's\nmultiprocessing library. This mode is enabled whenever the parameter\nnum_cpus is set to a value greater than 1. Black-box function\nevaluations as well as some of the heaviest computatations carried out\nby the algorithm will then be executed in parallel. Since the parallel\ncomputations are asynchronous, determinism cannot be guaranteed: in\nother words, if you execute the parallel optimizer twice in a row, you\nmay (and often will) get different results, even if you provide the\nsame random seed. This is because the order in which the computations\nwill be completed may change, and this may impact the course of the\nalgorithm.\n\nThe default parameters of the algorithm are optimized for the serial\noptimization mode. For recommendations on what parameters to use with\nthe parallel optimizer, feel free to ask on the mailing list.\n\nNote that the parallel optimizer is oblivious of the system-wide\nsettings for executing linear algebra routines (BLAS) in parallel. We\nrecommend setting the number of threads for BLAS to 1 when using the\nparallel optimizer, see the next section.\n\n==========================\nKnown issues with OpenBLAS\n==========================\n\nWe are aware of an issue when launching multiple distinct processes\nthat use RBFOpt and the NumPy implementation is configured to use\nOpenBLAS in parallel: in this case, on rare occasions we have observed\nthat some processes may get stuck forever when computing matrix-vector\nmultiplications. The problem can be fixed by setting the number of\nthreads for OpenBLAS to 1. We do not know if the same issue occurs\nwith other parallel implementations of BLAS.\n\nFor this reason, and because parallel BLAS uses resources suboptimally\nwhen used in conjunction with the parallel optimizer of RBFOpt (if\nBLAS runs in parallel, each thread of the parallel optimizer would\nspawn multiple threads to run BLAS, therefore disregarding the option\nnum_cpus), RBFOpt attempts to set the number of BLAS threads to 1 at\nrun time.\n\nAll scripts (rbfopt_cl_interface.py and rbfopt_test_interface.py) set\nthe environment variables OMP_NUM_THREADS to 1. Furthermore, the\nrbfopt module does the same when imported for the first time.\n\nNote that these settings are only effective if the environment\nvariable is set *before* NumPy is imported; otherwise, they are\nignored. If you are facing the same issue, we recommend setting\nenvironment variable OMP_NUM_THREADS to 1. In Python, this can be done\nwith::\n\n import os\n os.environ['OMP_NUM_THREADS'] = '1'\n\n=============\nDocumentation\n=============\n\nThe documentation for the code can be built using Sphinx with the\nnumpydoc extension. numpydoc can be installed with pip::\n\n pip install numpydoc\n\nAfter that, the directory src/rbfopt/doc/ contains a Makefile (on\nWindows, use make.bat) and the Sphinx configuration file conf.py.\n\nYou can build the HTML documentation (recommended) with::\n\n make html\n\nThe output will be located in _build/html/ and the index can be found\nin _build/html/index.html.\n\nA PDF version of the documentation (much less readable than the HTML\nversion) can be built using the command::\n\n make latexpdf\n\nAn online version of the documentation for the latest master branch of\nthe code, and for the latest stable release, are available on\nReadTheDocs for the `latest\n` and `stable\n` version.\n\n=============\nCiting RBFOpt\n=============\n\nIf you use RBFOpt in one of your projects or papers, it would be great\nif you could cite the following paper:\n\n* A. Costa and G. Nannicini. RBFOpt: an open-source library for\n black-box optimization with costly function\n evaluations. Mathematical Programming Computation, online\n first, 2018. (The paper can be downloaded as: `Optimization Online\n paper 4538\n `)\n\nThe paper above describes version 1.0 of RBFOpt. Some of the\nimprovements introduced later are described in the following papers.\n\n* A. Fokoue, G. Diaz, G. Nannicini, H. Samulowitz. An effective\n algorithm for hyperparameter optimization of neural networks. IBM\n Journal of Research and Development, 61(4-5), 2017.\n\n* A. Costa, E. Di Buccio, M. Melucci, G. Nannicini. Efficient\n parameter estimation for information retrieval using black-box\n optimization. IEEE Transactions on Knowledge and Data Engineering,\n 30(7):1240-1253, 2018.\n\n=======\nSupport\n=======\n\nThe best place to ask question is the mailing list:\n\nrbfopt@list.coin-or.org\n\n`Subscription page `\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/coin-or/rbfopt", "keywords": "", "license": "Revised BSD", "maintainer": "", "maintainer_email": "", "name": "rbfopt", "package_url": "https://pypi.org/project/rbfopt/", "platform": "", "project_url": "https://pypi.org/project/rbfopt/", "project_urls": { "Homepage": "https://github.com/coin-or/rbfopt" }, "release_url": "https://pypi.org/project/rbfopt/4.1.1/", "requires_dist": [ "numpy", "pyomo", "scipy" ], "requires_python": "", "summary": "Library for black-box (derivative-free) optimization", "version": "4.1.1" }, "last_serial": 5115182, "releases": { "4.0.0": [ { "comment_text": "", "digests": { "md5": "8fbc03f0dc45dd62351a5499f429bace", "sha256": "649f1283f805c5a4e617d7099d355f8b4bd715fe77939e99318f494e711ff1cc" }, "downloads": -1, "filename": "rbfopt-4.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8fbc03f0dc45dd62351a5499f429bace", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 121124, "upload_time": "2017-09-04T22:48:02", "url": "https://files.pythonhosted.org/packages/46/b9/7dd72f89986ad8c227a3f01c7be6c9f6fc3c5e997564f2d319edc5dda30e/rbfopt-4.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4b65efc3464ff53de69151abddd0c330", "sha256": "cc9bf2dae0595b48dc94f4dadc889d0303b1781ee7ccaaba892b9e79b6cb9c85" }, "downloads": -1, "filename": "rbfopt-4.0.0.tar.gz", "has_sig": false, "md5_digest": "4b65efc3464ff53de69151abddd0c330", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 127263, "upload_time": "2017-09-04T22:39:55", "url": "https://files.pythonhosted.org/packages/e1/76/88de9c3cbc99135e974512548ae634c53ec944f8087a2dde211a31344fe0/rbfopt-4.0.0.tar.gz" } ], "4.0.0.post1": [ { "comment_text": "", "digests": { "md5": "205080de8d5cb1c843cf5def88ad66c0", "sha256": "e402aaf42aea8f13562f1324ad455040a01cbf11440cd0221b4c21cb7aa8dc48" }, "downloads": -1, "filename": "rbfopt-4.0.0.post1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "205080de8d5cb1c843cf5def88ad66c0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 121267, "upload_time": "2017-09-04T23:00:08", "url": "https://files.pythonhosted.org/packages/77/d9/b393d8b0e50639ba77ecc4100219d53770256150466154eb73c2d4970584/rbfopt-4.0.0.post1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af10dbabc7dfacce1eaab89c830a6305", "sha256": "1e0eb32937a465cc5ddc1a7dfda20fb0e1f9a6dd8ba9ec28791dbd5fa981e605" }, "downloads": -1, "filename": "rbfopt-4.0.0.post1.tar.gz", "has_sig": false, "md5_digest": "af10dbabc7dfacce1eaab89c830a6305", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 127333, "upload_time": "2017-09-04T23:00:13", "url": "https://files.pythonhosted.org/packages/59/d4/e313f9f9e47e2551f773949c2b7dbbff1df189a5958ca7323a859c0ccfa4/rbfopt-4.0.0.post1.tar.gz" } ], "4.0.0.post2": [ { "comment_text": "", "digests": { "md5": "30ab40ca97b45236a6137c8327cf55a4", "sha256": "eaaaa25e99d2c0e8b33e00da163b07f48ba488af66ba07e5169f362f96187de1" }, "downloads": -1, "filename": "rbfopt-4.0.0.post2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "30ab40ca97b45236a6137c8327cf55a4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 121259, "upload_time": "2017-09-06T09:30:08", "url": "https://files.pythonhosted.org/packages/73/01/8f165907f4d20333d30601e7cd17d81c3999df71e6c4e0bc906e6aa3c58e/rbfopt-4.0.0.post2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3c726f573f934f63a98296fc8b184bf8", "sha256": "7851352b60319112b7c1d8c0b8dd56a4e6e946a589b9ac84d9914d1530b9de16" }, "downloads": -1, "filename": "rbfopt-4.0.0.post2.tar.gz", "has_sig": false, "md5_digest": "3c726f573f934f63a98296fc8b184bf8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 127343, "upload_time": "2017-09-06T09:30:13", "url": "https://files.pythonhosted.org/packages/08/7e/4b95a16478bcaa7c75e1c04690b192d672bf8609f92ffe07679aceaa4f64/rbfopt-4.0.0.post2.tar.gz" } ], "4.0.1": [ { "comment_text": "", "digests": { "md5": "1620d060d9c2f9ee9897c365e8c0ee56", "sha256": "f77e3a39879a5c0261a248cd15ece0f04197ce017cb4819fd9ef5395249f402d" }, "downloads": -1, "filename": "rbfopt-4.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1620d060d9c2f9ee9897c365e8c0ee56", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 121361, "upload_time": "2018-03-17T02:28:01", "url": "https://files.pythonhosted.org/packages/f8/ae/b2a8bd5d173385cf96766e16ac94d52a7c81830b1228c6342a05a8de903b/rbfopt-4.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1556873aa58d6a9a929c5850c95eb7a8", "sha256": "50f780a4c0c706714de1e67927903b906d4cd2f6d11ac2b9d3047f61cb845954" }, "downloads": -1, "filename": "rbfopt-4.0.1.tar.gz", "has_sig": false, "md5_digest": "1556873aa58d6a9a929c5850c95eb7a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 127611, "upload_time": "2018-03-17T02:28:03", "url": "https://files.pythonhosted.org/packages/2a/7a/abfc1b378bd826e5be9f05255bfd25b016bef279fbffe1bdb45c848607f9/rbfopt-4.0.1.tar.gz" } ], "4.0.2": [ { "comment_text": "", "digests": { "md5": "e0e31ef8b73f275ecf692ac0120b253b", "sha256": "bfb59a0b5bf3b0c54ffef43cce181a96c61eb38da01d18f3c8055ec35dc9ca4f" }, "downloads": -1, "filename": "rbfopt-4.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e0e31ef8b73f275ecf692ac0120b253b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 122238, "upload_time": "2018-05-29T13:12:55", "url": "https://files.pythonhosted.org/packages/3a/22/e71e15bcb6431456dca67d53dc5858185932720f0483c472fe1f8c8f4f4d/rbfopt-4.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f43fc88f7b8e5a7a6d08d4fc7a0a1d90", "sha256": "f2e2011d3ce04a2c05be9b446949174a17cfb212044aa4b11b33a719c372c941" }, "downloads": -1, "filename": "rbfopt-4.0.2.tar.gz", "has_sig": false, "md5_digest": "f43fc88f7b8e5a7a6d08d4fc7a0a1d90", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 404804, "upload_time": "2018-05-29T13:12:57", "url": "https://files.pythonhosted.org/packages/1c/db/05e80b7465ebc4dac7614f65f0b9c03d55de614c02ab4d3854f4b7a08c80/rbfopt-4.0.2.tar.gz" } ], "4.0.3": [ { "comment_text": "", "digests": { "md5": "4e113fb4cc794a696ae04518030cc389", "sha256": "0f1d20400fb7c49a55456b49dd8f61772523125c29a7f14e5667b2ce3d8256a4" }, "downloads": -1, "filename": "rbfopt-4.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4e113fb4cc794a696ae04518030cc389", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 123667, "upload_time": "2018-10-06T16:30:23", "url": "https://files.pythonhosted.org/packages/18/f1/494df1795bf69fcd65b68eda71531693bf9d1ae786162e0b37b72e8140c3/rbfopt-4.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "09a10f981b275a83845c6f59bd277820", "sha256": "d46d802ded7c488b7303abf9bf925707a147085bf415fff011e0919ac3e4785e" }, "downloads": -1, "filename": "rbfopt-4.0.3.tar.gz", "has_sig": false, "md5_digest": "09a10f981b275a83845c6f59bd277820", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 411255, "upload_time": "2018-10-06T16:30:27", "url": "https://files.pythonhosted.org/packages/6c/90/06f4e611d28230a433033531fc07086cb6fc09831a2a87122a7b90c3af28/rbfopt-4.0.3.tar.gz" } ], "4.1.0": [ { "comment_text": "", "digests": { "md5": "38bc630cde7fc447aa13ec96bf2008ed", "sha256": "82a414fcbb049f14f4d5c43987d36ddaa5098152f6f2b9e8459564e18c24beb6" }, "downloads": -1, "filename": "rbfopt-4.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "38bc630cde7fc447aa13ec96bf2008ed", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 124924, "upload_time": "2019-03-14T19:20:55", "url": "https://files.pythonhosted.org/packages/65/5b/91e998fcf796d5e666836980cd51d3651f4d7c9c3714c004cb56e5bc5389/rbfopt-4.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9e42b8fe6245f3e8fa889965ddcab339", "sha256": "0388b9d814f1d06ec076c6b1712fa5f4b427f362559acc4a3c9b4e138f763617" }, "downloads": -1, "filename": "rbfopt-4.1.0.tar.gz", "has_sig": false, "md5_digest": "9e42b8fe6245f3e8fa889965ddcab339", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 415097, "upload_time": "2019-03-14T19:20:58", "url": "https://files.pythonhosted.org/packages/f8/9d/506526e569ee0b447cbb25cda6b3988e39398cefac1748f6b77289e43971/rbfopt-4.1.0.tar.gz" } ], "4.1.1": [ { "comment_text": "", "digests": { "md5": "e8c6d4c6dd13f669647e9e41e9ba7893", "sha256": "83e5f865166bd19e35a0e02479e7f183ea257d6551d8717ef9ecb1a1894fe3cc" }, "downloads": -1, "filename": "rbfopt-4.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e8c6d4c6dd13f669647e9e41e9ba7893", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 124934, "upload_time": "2019-04-08T19:25:31", "url": "https://files.pythonhosted.org/packages/05/4d/eb13a985cba623641a2e2f7eed38faa98d68fea90384aa682bc205a8af7e/rbfopt-4.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "318af11a1841ad5bc1482f711931a68e", "sha256": "fdcef4ca8272f3467d38fb061ce362fc372cc3494f5e75e84c91c9bdeb0db295" }, "downloads": -1, "filename": "rbfopt-4.1.1.tar.gz", "has_sig": false, "md5_digest": "318af11a1841ad5bc1482f711931a68e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 415156, "upload_time": "2019-04-08T19:25:33", "url": "https://files.pythonhosted.org/packages/43/8e/5510efd67b18917da7fb40ce181762dc18224e36dc05ca760228889a804e/rbfopt-4.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e8c6d4c6dd13f669647e9e41e9ba7893", "sha256": "83e5f865166bd19e35a0e02479e7f183ea257d6551d8717ef9ecb1a1894fe3cc" }, "downloads": -1, "filename": "rbfopt-4.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e8c6d4c6dd13f669647e9e41e9ba7893", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 124934, "upload_time": "2019-04-08T19:25:31", "url": "https://files.pythonhosted.org/packages/05/4d/eb13a985cba623641a2e2f7eed38faa98d68fea90384aa682bc205a8af7e/rbfopt-4.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "318af11a1841ad5bc1482f711931a68e", "sha256": "fdcef4ca8272f3467d38fb061ce362fc372cc3494f5e75e84c91c9bdeb0db295" }, "downloads": -1, "filename": "rbfopt-4.1.1.tar.gz", "has_sig": false, "md5_digest": "318af11a1841ad5bc1482f711931a68e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 415156, "upload_time": "2019-04-08T19:25:33", "url": "https://files.pythonhosted.org/packages/43/8e/5510efd67b18917da7fb40ce181762dc18224e36dc05ca760228889a804e/rbfopt-4.1.1.tar.gz" } ] }