Skip to main content

DX-NES-ICI

DX-NES-ICI [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 and SciPy that are the packages for scientific computing.

Installing

Please install via pip.

$ 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.

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.

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.

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.4 (2024-6-22)
    • Fixed bugs in the DX-NES-ICI implementation. This fix improves the search performance on high-dimensional ReversedEllipsoidInt and EllipsoidInt functions [1].
    • Please note that the corrected implementation has been verified to be identical to the implementation used to obtain the experimental results reported in [1].
  • 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

Release files for dxnesici 1.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dxnesici 1.0.4
File Size Uploaded
dxnesici-1.0.4.tar.gz 6.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dxnesici 1.0.4
File Interpreter ABI Platform
dxnesici-1.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 13.5 kB

Release files / dxnesici-1.0.4.tar.gz

Download URL dxnesici-1.0.4.tar.gz
Size 6.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ad0380b37071bb666bdaa0e1f46a59b6a8a05f8b7b8698ff4e15522c40be05b7
BLAKE2b-256 checksum
How to use checksums
67e0c0f391883fedb9b7489f26710a5c4a1355df94d59ef27d7860662427164d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.11.0

Release files / dxnesici-1.0.4-py3-none-any.whl

Download URL dxnesici-1.0.4-py3-none-any.whl
Size 6.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
283f37d7d345cf2b0281498750464bcb4a80d858ad2ccfa4c742a9c3a5695470
BLAKE2b-256 checksum
How to use checksums
fd7467230c25fbba5e905d4a02266a561fc2fc36ce30805561dc2fabe75623d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.11.0

Release history Release notifications | RSS feed

This release

1.0.4 This release

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page