dxnesici


Namedxnesici JSON
Version 1.0.3 PyPI version JSON
download
home_pagehttps://github.com/ono-lab/dxnesici
SummaryDX-NES-ICI for numerical optimization in Python
upload_time2023-12-09 03:28:09
maintainerKoki Ikeda
docs_urlNone
authorKoki Ikeda
requires_python
licenseMIT
keywords optimization dx-nes-ici mixed-integer black-box
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # DX-NES-ICI
[DX-NES-ICI](https://doi.org/10.1145/3583131.3590518) [1] is a Natural Evolution Strategy (NES) for Mixed-Integer Black-Box Optimization (MI-BBO).
DX-NES-ICI reportedly improves the performance of DX-NES-IC [2], one of the most promising continuous BBO methods, on MI-BBO problems.
Simultaneously, DX-NES-ICI outperforms CMA-ES w. Margin [3], one of the most leading MI-BBO methods.


## Getting Started
### Prerequisites
You need [NumPy](https://numpy.org/) and [SciPy](https://scipy.org/) that are the packages for scientific computing.

### Installing
Please install via pip.
```bash
$ pip install dxnesici
```


## Usage
### Problem setting
Set the number of dimensions (dim), dimensions of continuous variables (dim_co), and dimensions of integer variables (dim_int).
Then, set objective function and the domains of integer variables, where
the decision variables must be arranged in such a way as to concatenate a (dim_co)-dimensional continuous vector and a (dim_int)-dimensional integer vector.
Note that the number of elements of the domain in an integer variable must be greater than or equal to 2.
```python
dim = 20
dim_co = dim // 2
dim_int = dim // 2
domain_int = [list(range(-10, 11)) for _ in range(dim_int)]
def n_int_tablet(x):
    xbar = np.array(x)
    xbar[dim_co:] = np.round(xbar[dim_co:])
    xbar[:dim_co] *= 100
    return np.sum(xbar**2)
```

### The hyperparameters of DX-NES-ICI
Set initial mean vector (m), initial step size (sigma), and population size (lamb).
Note that population size should be an even number.
Set the minimum marginal probability (margin).
 1.0 / (dim * lamb) [3] is the recommended value of minimum marginal probability.
```python
m = np.ones([dim, 1]) * 2.
sigma = 1.0
lamb = 6
margin = 1.0 / (dim * lamb)
```

### Running DX-NES-ICI
Pass variables to construct DXNESICI.
You must pass the maximal number of evaluations and a target evaluation value to run the optimizer.
Return values are a success flag, the best solution in the last generation, and the best evaluation value in the last generation.
```python
dxnesici = DXNESICI(dim_co, domain_int, n_int_tablet, m, sigma, lamb, margin)
success, x_best, f_best = dxnesici.optimize(dim * 1e4, 1e-10)
```


## Version History
* Version 1.0.3 (2023-12-09)
    - Update README.
* Version 1.0.2 (2023-12-09)
    - Fixed a bug in the return value of the best solution.
    - Fixed misleading implementations of functions in sample programs. Note that in these sample programs, benchmark functions return exactly the same values before and after this fix.
    - Add stdout of #Eval when DX-NES-ICI finish.
* Version 1.0.1 (2023-4-20)
    - First implementation.


## Reference
1. Koki Ikeda and Isao Ono. 2023. Natural Evolution Strategy for Mixed-Integer Black-Box Optimization. In Proceedings of the Genetic and Evolutionary Computation Conference (GECCO ’23). 8 pages. https://doi.org/10.1145/3583131.3590518

2. Masahiro Nomura, Nobuyuki Sakai, Nobusumi Fukushima, and Isao Ono. 2021. Distance-weighted Exponential Natural Evolution Strategy for Implicitly Constrained Black-Box Function Optimization. In IEEE Congress on Evolutionary Computation (CEC ’21). 1099–1106. https://doi.org/10.1109/CEC45853.2021.9504865

3. Ryoki Hamano, Shota Saito, Masahiro Nomura, and Shinichi Shirakawa. 2022. CMA-ES with Margin: Lower-Bounding Marginal Probability for Mixed-Integer Black-Box Optimization. In Proceedings of the Genetic and Evolutionary Computation Conference (GECCO ’22). 639–647. https://doi.org/10.1145/3512290.3528827



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/ono-lab/dxnesici",
    "name": "dxnesici",
    "maintainer": "Koki Ikeda",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "ikeda.k@ic.c.titech.ac.jp",
    "keywords": "optimization,DX-NES-ICI,mixed-integer,black-box",
    "author": "Koki Ikeda",
    "author_email": "ikeda.k@ic.c.titech.ac.jp",
    "download_url": "https://files.pythonhosted.org/packages/2b/99/dec0a91972c0f5fbac6035b0dbc332650c54498e08f53c0dcbb91e6196e4/dxnesici-1.0.3.tar.gz",
    "platform": null,
    "description": "# DX-NES-ICI\n[DX-NES-ICI](https://doi.org/10.1145/3583131.3590518) [1] is a Natural Evolution Strategy (NES) for Mixed-Integer Black-Box Optimization (MI-BBO).\nDX-NES-ICI reportedly improves the performance of DX-NES-IC [2], one of the most promising continuous BBO methods, on MI-BBO problems.\nSimultaneously, DX-NES-ICI outperforms CMA-ES w. Margin [3], one of the most leading MI-BBO methods.\n\n\n## Getting Started\n### Prerequisites\nYou need [NumPy](https://numpy.org/) and [SciPy](https://scipy.org/) that are the packages for scientific computing.\n\n### Installing\nPlease install via pip.\n```bash\n$ pip install dxnesici\n```\n\n\n## Usage\n### Problem setting\nSet the number of dimensions (dim), dimensions of continuous variables (dim_co), and dimensions of integer variables (dim_int).\nThen, set objective function and the domains of integer variables, where\nthe decision variables must be arranged in such a way as to concatenate a (dim_co)-dimensional continuous vector and a (dim_int)-dimensional integer vector.\nNote that the number of elements of the domain in an integer variable must be greater than or equal to 2.\n```python\ndim = 20\ndim_co = dim // 2\ndim_int = dim // 2\ndomain_int = [list(range(-10, 11)) for _ in range(dim_int)]\ndef n_int_tablet(x):\n    xbar = np.array(x)\n    xbar[dim_co:] = np.round(xbar[dim_co:])\n    xbar[:dim_co] *= 100\n    return np.sum(xbar**2)\n```\n\n### The hyperparameters of DX-NES-ICI\nSet initial mean vector (m), initial step size (sigma), and population size (lamb).\nNote that population size should be an even number.\nSet the minimum marginal probability (margin).\n 1.0 / (dim * lamb) [3] is the recommended value of minimum marginal probability.\n```python\nm = np.ones([dim, 1]) * 2.\nsigma = 1.0\nlamb = 6\nmargin = 1.0 / (dim * lamb)\n```\n\n### Running DX-NES-ICI\nPass variables to construct DXNESICI.\nYou must pass the maximal number of evaluations and a target evaluation value to run the optimizer.\nReturn values are a success flag, the best solution in the last generation, and the best evaluation value in the last generation.\n```python\ndxnesici = DXNESICI(dim_co, domain_int, n_int_tablet, m, sigma, lamb, margin)\nsuccess, x_best, f_best = dxnesici.optimize(dim * 1e4, 1e-10)\n```\n\n\n## Version History\n* Version 1.0.3 (2023-12-09)\n    - Update README.\n* Version 1.0.2 (2023-12-09)\n    - Fixed a bug in the return value of the best solution.\n    - Fixed misleading implementations of functions in sample programs. Note that in these sample programs, benchmark functions return exactly the same values before and after this fix.\n    - Add stdout of #Eval when DX-NES-ICI finish.\n* Version 1.0.1 (2023-4-20)\n    - First implementation.\n\n\n## Reference\n1. Koki Ikeda and Isao Ono. 2023. Natural Evolution Strategy for Mixed-Integer Black-Box Optimization. In Proceedings of the Genetic and Evolutionary Computation Conference (GECCO \u201923). 8 pages. https://doi.org/10.1145/3583131.3590518\n\n2. Masahiro Nomura, Nobuyuki Sakai, Nobusumi Fukushima, and Isao Ono. 2021. Distance-weighted Exponential Natural Evolution Strategy for Implicitly Constrained Black-Box Function Optimization. In IEEE Congress on Evolutionary Computation (CEC \u201921). 1099\u20131106. https://doi.org/10.1109/CEC45853.2021.9504865\n\n3. Ryoki Hamano, Shota Saito, Masahiro Nomura, and Shinichi Shirakawa. 2022. CMA-ES with Margin: Lower-Bounding Marginal Probability for Mixed-Integer Black-Box Optimization. In Proceedings of the Genetic and Evolutionary Computation Conference (GECCO \u201922). 639\u2013647. https://doi.org/10.1145/3512290.3528827\n\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "DX-NES-ICI for numerical optimization in Python",
    "version": "1.0.3",
    "project_urls": {
        "Homepage": "https://github.com/ono-lab/dxnesici"
    },
    "split_keywords": [
        "optimization",
        "dx-nes-ici",
        "mixed-integer",
        "black-box"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c8b4f1f2d2311c2009664d5c3cd590e32aa9f5da584fa375568b84e2a464cfbb",
                "md5": "8d4a2993ee482bd9a72ef9d186ab5af2",
                "sha256": "f0879a93233f119d136a2fb6a908cec858a322b890dd4867b7b519f01b9d4372"
            },
            "downloads": -1,
            "filename": "dxnesici-1.0.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8d4a2993ee482bd9a72ef9d186ab5af2",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 6596,
            "upload_time": "2023-12-09T03:28:07",
            "upload_time_iso_8601": "2023-12-09T03:28:07.504502Z",
            "url": "https://files.pythonhosted.org/packages/c8/b4/f1f2d2311c2009664d5c3cd590e32aa9f5da584fa375568b84e2a464cfbb/dxnesici-1.0.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2b99dec0a91972c0f5fbac6035b0dbc332650c54498e08f53c0dcbb91e6196e4",
                "md5": "9fee1ecefc5bddfd04417ee5f23d3879",
                "sha256": "dc190f9e037d64e9e707cad410ba34b0059bcb6724a6c11c81e0675b597c9163"
            },
            "downloads": -1,
            "filename": "dxnesici-1.0.3.tar.gz",
            "has_sig": false,
            "md5_digest": "9fee1ecefc5bddfd04417ee5f23d3879",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 6469,
            "upload_time": "2023-12-09T03:28:09",
            "upload_time_iso_8601": "2023-12-09T03:28:09.427762Z",
            "url": "https://files.pythonhosted.org/packages/2b/99/dec0a91972c0f5fbac6035b0dbc332650c54498e08f53c0dcbb91e6196e4/dxnesici-1.0.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-09 03:28:09",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ono-lab",
    "github_project": "dxnesici",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "dxnesici"
}
        
Elapsed time: 0.15462s