Recent Releases of cmaes

cmaes - v0.12.0

New Algorithms

CatCMA with Margin (GECCO2025) by @ha-mano

CatCMA with Margin (CatCMAwM) is a method for mixed-variable optimization problems, simultaneously optimizing continuous, integer, and categorical variables. CatCMAwM extends CatCMA by introducing a novel integer handling mechanism, and supports arbitrary combinations of continuous, integer, and categorical variables in a unified framework.

CatCMAwM

Source code ```python import numpy as np from cmaes import CatCMAwM def SphereIntCOM(x, z, c): return sum(x * x) + sum(z * z) + len(c) - sum(c[:, 0]) def SphereInt(x, z): return sum(x * x) + sum(z * z) def SphereCOM(x, c): return sum(x * x) + len(c) - sum(c[:, 0]) def f_cont_int_cat(): # [lower_bound, upper_bound] for each continuous variable X = [[-5, 5], [-5, 5]] # possible values for each integer variable Z = [[-1, 0, 1], [-2, -1, 0, 1, 2]] # number of categories for each categorical variable C = [3, 3] optimizer = CatCMAwM(x_space=X, z_space=Z, c_space=C) for generation in range(50): solutions = [] for _ in range(optimizer.population_size): sol = optimizer.ask() value = SphereIntCOM(sol.x, sol.z, sol.c) solutions.append((sol, value)) print(f"#{generation} {sol} evaluation: {value}") optimizer.tell(solutions) def f_cont_int(): # [lower_bound, upper_bound] for each continuous variable X = [[-np.inf, np.inf], [-np.inf, np.inf]] # possible values for each integer variable Z = [[-2, -1, 0, 1, 2], [-2, -1, 0, 1, 2]] # initial distribution parameters (Optional) # If you know a promising solution for X and Z, set init_mean to that value. init_mean = np.ones(len(X) + len(Z)) init_cov = np.diag(np.ones(len(X) + len(Z))) init_sigma = 1.0 optimizer = CatCMAwM( x_space=X, z_space=Z, mean=init_mean, cov=init_cov, sigma=init_sigma ) for generation in range(50): solutions = [] for _ in range(optimizer.population_size): sol = optimizer.ask() value = SphereInt(sol.x, sol.z) solutions.append((sol, value)) print(f"#{generation} {sol} evaluation: {value}") optimizer.tell(solutions) def f_cont_cat(): # [lower_bound, upper_bound] for each continuous variable X = [[-5, 5], [-5, 5]] # number of categories for each categorical variable C = [3, 5] # initial distribution parameters (Optional) init_cat_param = np.array( [ [0.5, 0.3, 0.2, 0.0, 0.0], # zero-padded at the end [0.2, 0.2, 0.2, 0.2, 0.2], # each row must sum to 1 ] ) optimizer = CatCMAwM(x_space=X, c_space=C, cat_param=init_cat_param) for generation in range(50): solutions = [] for _ in range(optimizer.population_size): sol = optimizer.ask() value = SphereCOM(sol.x, sol.c) solutions.append((sol, value)) print(f"#{generation} {sol} evaluation: {value}") optimizer.tell(solutions) if __name__ == "__main__": f_cont_int_cat() # f_cont_int() # f_cont_cat() ```

We recommend using CatCMAwM for continuous+integer and continuous+categorical settings. In particular, [Hamano et al. 2025] shows that CatCMAwM outperforms CMA-ES with Margin in mixed-integer scenarios. Therefore, we suggest CatCMAwM in place of CMA-ES with Margin or CatCMA.

CMA-ES-SoP by (PPSN 2024) @kento031

CMA-ES on sets of points (CMA-ES-SoP) is a variant of CMA-ES for optimization on sets of points. In the optimization on sets of points, the search space consists of several disjoint subspaces containing multiple possible points where the objective function value can be computed. In the mixed-variable cases, some subspaces are continuous spaces. Note that the discrete subspaces with more than five dimensions require computational cost for the construction of the Voronoi diagrams.

Source code ```python import numpy as np from cmaes.cma_sop import CMASoP # numbers of dimensions in each subspace subspace_dim_list = [2, 3, 5] cont_dim = 10 # numbers of points in each subspace point_num_list = [10, 20, 40] # number of total dimensions dim = int(np.sum(subspace_dim_list) + cont_dim) # objective function def quadratic(x): coef = 1000 ** (np.arange(dim) / float(dim - 1)) return np.sum((coef * x) ** 2) # sets_of_points (on [-5, 5]) discrete_subspace_num = len(subspace_dim_list) sets_of_points = [( 2 * np.random.rand(point_num_list[i], subspace_dim_list[i]) - 1) * 5 for i in range(discrete_subspace_num)] # add the optimal solution (for benchmark function) for i in range(discrete_subspace_num): sets_of_points[i][-1] = np.zeros(subspace_dim_list[i]) np.random.shuffle(sets_of_points[i]) # optimizer (CMA-ES-SoP) optimizer = CMASoP( sets_of_points=sets_of_points, mean=np.random.rand(dim) * 4 + 1, sigma=2.0, ) best_eval = np.inf eval_count = 0 for generation in range(400): solutions = [] for _ in range(optimizer.population_size): # Ask a parameter x, enc_x = optimizer.ask() value = quadratic(enc_x) # save best eval best_eval = np.min((best_eval, value)) eval_count += 1 solutions.append((x, value)) # Tell evaluation values. optimizer.tell(solutions) print(f"#{generation} ({best_eval} {eval_count})") if best_eval < 1e-4 or optimizer.should_stop(): break ```

Maximum a Posteriori CMA-ES (PPSN 2024) by @ha-mano

MAP-CMA is a method that is introduced to interpret the rank-one update in the CMA-ES from the perspective of the natural gradient. The rank-one update derived from the natural gradient perspective is extensible, and an additional term, called momentum update, appears in the update of the mean vector. The performance of MAP-CMA is not significantly different from that of CMA-ES, as the primary motivation for MAP-CMA comes from the theoretical understanding of CMA-ES.

Source code ```python import numpy as np from cmaes import MAPCMA def rosenbrock(x): dim = len(x) if dim < 2: raise ValueError("dimension must be greater one") return sum(100 * (x[:-1] ** 2 - x[1:]) ** 2 + (x[:-1] - 1) ** 2) if __name__ == "__main__": dim = 20 optimizer = MAPCMA(mean=np.zeros(dim), sigma=0.5, momentum_r=dim) print(" evals f(x)") print("====== ==========") evals = 0 while True: solutions = [] for _ in range(optimizer.population_size): x = optimizer.ask() value = rosenbrock(x) evals += 1 solutions.append((x, value)) if evals % 1000 == 0: print(f"{evals:5d} {value:10.5f}") optimizer.tell(solutions) if optimizer.should_stop(): break ```

Safe CMA-ES (GECCO 2024) by @kento031

Safe CMA-ES is a variant of CMA-ES for safe optimization. Safe optimization is formulated as a special type of constrained optimization problem aiming to solve the optimization problem with fewer evaluations of the solutions whose safety function values exceed the safety thresholds. The safe CMA-ES requires safe seeds that do not violate the safety constraints. Note that the safe CMA-ES is designed for noiseless safe optimization. This module needs torch and gpytorch.

Source code ```python import numpy as np from cmaes.safe_cma import SafeCMA # objective function def quadratic(x): coef = 1000 ** (np.arange(dim) / float(dim - 1)) return np.sum((x * coef) ** 2) # safety function def safe_function(x): return x[0] """ example with a single safety function """ if __name__ == "__main__": # number of dimensions dim = 5 # safe seeds safe_seeds_num = 10 safe_seeds = (np.random.rand(safe_seeds_num, dim) * 2 - 1) * 5 safe_seeds[:,0] = - np.abs(safe_seeds[:,0]) # evaluation of safe seeds (with a single safety function) seeds_evals = np.array([ quadratic(x) for x in safe_seeds ]) seeds_safe_evals = np.stack([ [safe_function(x)] for x in safe_seeds ]) safety_threshold = np.array([0]) # optimizer (safe CMA-ES) optimizer = SafeCMA( sigma=1., safety_threshold=safety_threshold, safe_seeds=safe_seeds, seeds_evals=seeds_evals, seeds_safe_evals=seeds_safe_evals, ) unsafe_eval_counts = 0 best_eval = np.inf for generation in range(400): solutions = [] for _ in range(optimizer.population_size): # Ask a parameter x = optimizer.ask() value = quadratic(x) safe_value = np.array([safe_function(x)]) # save best eval best_eval = np.min((best_eval, value)) unsafe_eval_counts += (safe_value > safety_threshold) solutions.append((x, value, safe_value)) # Tell evaluation values. optimizer.tell(solutions) print(f"#{generation} ({best_eval} {unsafe_eval_counts})") if optimizer.should_stop(): break ```

What's Changed

  • Fix the broken link to Katib documentation by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/188
  • MAP-CMA (PPSN2024) by @ha-mano in https://github.com/CyberAgentAILab/cmaes/pull/186
  • Add tests for free-threaded python by @porink0424 in https://github.com/CyberAgentAILab/cmaes/pull/189
  • [Proposal] Support 1D search space in CMA-ES by @y0z in https://github.com/CyberAgentAILab/cmaes/pull/190
  • Fix mypy type error in workflow by @ha-mano in https://github.com/CyberAgentAILab/cmaes/pull/195
  • Safe CMA-ES (GECCO 2024) by @kento031 in https://github.com/CyberAgentAILab/cmaes/pull/187
  • Update README.md by @nomuramasahir0 in https://github.com/CyberAgentAILab/cmaes/pull/198
  • Update pyproject.toml by @nomuramasahir0 in https://github.com/CyberAgentAILab/cmaes/pull/199
  • fix the discretization process of CMA-ESwM by @ha-mano in https://github.com/CyberAgentAILab/cmaes/pull/191
  • Remove unnecessary 'global' declarations causing flake8 F824 errors by @ha-mano in https://github.com/CyberAgentAILab/cmaes/pull/200
  • Update pyproject.toml by @ha-mano in https://github.com/CyberAgentAILab/cmaes/pull/201
  • CatCMA with Margin (GECCO2025) by @ha-mano in https://github.com/CyberAgentAILab/cmaes/pull/203
  • CMA-ES-SoP (PPSN 2024) by @kento031 in https://github.com/CyberAgentAILab/cmaes/pull/196
  • Remove <details> tags hiding variant algorithm descriptions by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/205
  • Update supported Python versions by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/206
  • Bump up the version to v0.12.0 by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/204

New Contributors

  • @y0z made their first contribution in https://github.com/CyberAgentAILab/cmaes/pull/190
  • @kento031 made their first contribution in https://github.com/CyberAgentAILab/cmaes/pull/187

Full Changelog: https://github.com/CyberAgentAILab/cmaes/compare/v0.11.1...v0.12.0

- Python
Published by github-actions[bot] 10 months ago

cmaes - v0.11.1

What's Changed

  • fix the weight of CatCMA by @ha-mano in https://github.com/CyberAgentAILab/cmaes/pull/184
  • Bump the version up to v0.11.1 by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/185

Full Changelog: https://github.com/CyberAgentAILab/cmaes/compare/v0.11.0...v0.11.1

PyPI: https://pypi.org/project/cmaes/0.11.1/

- Python
Published by github-actions[bot] almost 2 years ago

cmaes - v0.11.0

Highlights

CatCMA [Hamano+, GECCO2024]

arXiv: https://arxiv.org/pdf/2405.09962

CatCMA is a method for mixed-category optimization problems, which is the problem of simultaneously optimizing continuous and categorical variables. CatCMA employs the joint probability distribution of multivariate Gaussian and categorical distributions as the search distribution.

CatCMA

Usage is like below:

```python import numpy as np from cmaes import CatCMA

def spherecom(x, c): dimco = len(x) dimca = len(c) if dimco < 2: raise ValueError("dimension must be greater one") sphere = sum(x * x) com = dim_ca - sum(c[:, 0]) return sphere + com

def rosenbrockclo(x, c): dimco = len(x) dimca = len(c) if dimco < 2: raise ValueError("dimension must be greater one") rosenbrock = sum(100 * (x[:-1] ** 2 - x[1:]) ** 2 + (x[:-1] - 1) ** 2) clo = dimca - (c[:, 0].argmin() + c[:, 0].prod() * dimca) return rosenbrock + clo

def mcproximity(x, c, catnum): dimco = len(x) dimca = len(c) if dimco < 2: raise ValueError("dimension must be greater one") if dimco != dimca: raise ValueError( "number of dimensions of continuous and categorical variables " "must be equal in mcproximity" )

c_index = np.argmax(c, axis=1) / cat_num
return sum((x - c_index) ** 2) + sum(c_index)

if name == "main": contdim = 5 catdim = 5 catnum = np.array([3, 4, 5, 5, 5]) # catnum = 3 * np.ones(catdim, dtype=np.int64) optimizer = CatCMA(mean=3.0 * np.ones(contdim), sigma=1.0, catnum=catnum)

for generation in range(200):
    solutions = []
    for _ in range(optimizer.population_size):
        x, c = optimizer.ask()
        value = mc_proximity(x, c, cat_num)
        if generation % 10 == 0:
            print(f"#{generation} {value}")
        solutions.append(((x, c), value))
    optimizer.tell(solutions)

    if optimizer.should_stop():
        break

```

What's Changed

  • Add support for Python 3.12 by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/153
  • Remove setup.py and use build module by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/154
  • Fix CI failures by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/158
  • get mean by @nomuramasahir0 in https://github.com/CyberAgentAILab/cmaes/pull/159
  • add question template by @nomuramasahir0 in https://github.com/CyberAgentAILab/cmaes/pull/162
  • fix sigma setting by @nomuramasahir0 in https://github.com/CyberAgentAILab/cmaes/pull/160
  • Add GitHub action setting for continuous benchmark by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/168
  • fix typo by @nomuramasahir0 in https://github.com/CyberAgentAILab/cmaes/pull/169
  • fix BIPOP-CMA in visualization by @nomuramasahir0 in https://github.com/CyberAgentAILab/cmaes/pull/170
  • update readme by @nomuramasahir0 in https://github.com/CyberAgentAILab/cmaes/pull/171
  • update by @nomuramasahir0 in https://github.com/CyberAgentAILab/cmaes/pull/172
  • fix the oldsigma assertion when lradapt=True by @Kreyparion in https://github.com/CyberAgentAILab/cmaes/pull/174
  • remove kurobako dependency by @nomuramasahir0 in https://github.com/CyberAgentAILab/cmaes/pull/175
  • Support for numpy v2.0 by @porink0424 in https://github.com/CyberAgentAILab/cmaes/pull/177
  • catcma (GECCO2024) by @ha-mano in https://github.com/CyberAgentAILab/cmaes/pull/178
  • fix CatCMA by @ha-mano in https://github.com/CyberAgentAILab/cmaes/pull/179
  • Update README.md by @ha-mano in https://github.com/CyberAgentAILab/cmaes/pull/181
  • Bump the version up to v0.11.0 by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/183

New Contributors

  • @Kreyparion made their first contribution in https://github.com/CyberAgentAILab/cmaes/pull/174
  • @porink0424 made their first contribution in https://github.com/CyberAgentAILab/cmaes/pull/177
  • @ha-mano made their first contribution in https://github.com/CyberAgentAILab/cmaes/pull/178

Full Changelog: https://github.com/CyberAgentAILab/cmaes/compare/v0.10.0...v0.11.0

- Python
Published by github-actions[bot] almost 2 years ago

cmaes - v0.10.0

What's Changed

  • add DX-NES-IC by @nomuramasahir0 in https://github.com/CyberAgentAILab/cmaes/pull/149
  • xNES implementation by @nomuramasahir0 in https://github.com/CyberAgentAILab/cmaes/pull/150
  • add LRA-CMA-ES by @nomuramasahir0 in https://github.com/CyberAgentAILab/cmaes/pull/151
  • Bump the version up to v0.10.0 by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/152

Full Changelog: https://github.com/CyberAgentAILab/cmaes/compare/v0.9.1...v0.10.0

  • PyPI: https://github.com/CyberAgentAILab/cmaes/blob/main/.github/workflows/pypi-publish.yml

- Python
Published by github-actions[bot] almost 3 years ago

cmaes - v0.9.1

What's Changed

  • Remove tox.ini by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/131
  • Fix a broken link to Optuna's documentation by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/132
  • Drop Python 3.6 support. by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/130
  • Reuse CMA inside CMAwM by @knshnb in https://github.com/CyberAgentAILab/cmaes/pull/133
  • Add rng related methods by @knshnb in https://github.com/CyberAgentAILab/cmaes/pull/135
  • Fix correction of out-of-range continuous params of CMAwM by @knshnb in https://github.com/CyberAgentAILab/cmaes/pull/134
  • Fix correction of out-of-range discrete params of CMAwM by @knshnb in https://github.com/CyberAgentAILab/cmaes/pull/136
  • Avoid to use typing.List, typing.Dict, and typing.Tuple. by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/139
  • Check feasibility of sampled discrete parameters in CMAwM by @knshnb in https://github.com/CyberAgentAILab/cmaes/pull/140
  • Refactor CMAwM by @knshnb in https://github.com/CyberAgentAILab/cmaes/pull/141
  • Add a test case for no discrete spaces. by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/143
  • Allow no discrete spaces in CMAwM by @knshnb in https://github.com/CyberAgentAILab/cmaes/pull/142
  • Remove warnings in CMAwM class by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/144
  • Revert handling of infeasible discrete parameters by @knshnb in https://github.com/CyberAgentAILab/cmaes/pull/145
  • Bump the version up to v0.9.1 by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/138

Full Changelog: https://github.com/CyberAgentAILab/cmaes/compare/v0.9.0...v0.9.1

- Python
Published by github-actions[bot] over 3 years ago

cmaes - v0.9.0

Highlights

CMA-ES with Margin is now available. It introduces a lower bound on the marginal probability associated with each discrete dimension so that samples can avoid being fixed to a single point. It can be applied to mixed spaces of continuous (float) and discrete (including integer and binary). This algorithm is proposed by Hamano, Saito, @nomuramasahir0 (a maintainer of this library), and Shirakawa, has been nominated as best paper at GECCO'22 ENUM track.

R. Hamano, S. Saito, M. Nomura, S. Shirakawa, CMA-ES with Margin: Lower-Bounding Marginal Probability for Mixed-Integer Black-Box Optimization, GECCO, 2022.

|CMA-ES|CMA-ESwM| |---|---| |CMA-ES|CMA-ESwM|

The above figures are taken from EvoConJP/CMA-ESwithMargin.

Please check out the following examples for the usage.

What's Changed

  • Running benchmark of Warm Starting CMA-ES on GitHub Actions. by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/99
  • Validate bounds domain contains mean by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/100
  • Fix overflow errors uncovered by Coverage-guided Fuzzing. by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/104
  • Fuzzing for sep-CMA-ES by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/105
  • Set license_file on setup.cfg by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/106
  • fix sep-CMA description by @nomuramasahir0 in https://github.com/CyberAgentAILab/cmaes/pull/107
  • Temporarily disable a GitHub action for kurobako benchmarks by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/113
  • Fix mutable by @nomuramasahir0 in https://github.com/CyberAgentAILab/cmaes/pull/112
  • Run tests with Python 3.10 by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/109
  • Update author and maintainer package info. by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/116
  • Introduce some related projects on README by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/118
  • Migrate the project metadata to pyproject.toml by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/119
  • Revert #119 to support Python 3.6. by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/122
  • Support CMA-ES with Margin. by @knshnb in https://github.com/CyberAgentAILab/cmaes/pull/121
  • Add integer examples for CMA-ES with Margin by @nomuramasahir0 in https://github.com/CyberAgentAILab/cmaes/pull/125
  • Support Python 3.11 by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/123
  • Add README of CMA-ES with margin by @knshnb in https://github.com/CyberAgentAILab/cmaes/pull/124
  • Follow-up #126: Remove Scipy dependency by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/127
  • Remove SciPy dependency by @amylase in https://github.com/CyberAgentAILab/cmaes/pull/126
  • Use gh instead of ghr by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/128
  • Bump the version up to v0.9.0 by @c-bata in https://github.com/CyberAgentAILab/cmaes/pull/129

New Contributors

  • @knshnb made their first contribution in https://github.com/CyberAgentAILab/cmaes/pull/121
  • @amylase made their first contribution in https://github.com/CyberAgentAILab/cmaes/pull/126

References

Full Changelog: https://github.com/CyberAgentAILab/cmaes/compare/v0.8.2...v0.9.0

- Python
Published by github-actions[bot] over 3 years ago

cmaes - v0.8.2

CHANGES

  • Fix dimensions of Warm starting CMA-ES (#98).
    • Thank you @Yibinjiang for reporting the bug.

- Python
Published by github-actions[bot] over 5 years ago

cmaes - v0.8.1

CHANGES

  • Unset version constraint of numpy.
  • Remove extra_requires for development.

- Python
Published by github-actions[bot] over 5 years ago

cmaes - v0.8.0

CHANGES

New features

Warm-starting CMA-ES is now available. It estimates a promising distribution, then generates parameters of the multivariate gaussian distribution used for the initialization of CMA-ES, so that you can exploit optimization results from a similar optimization task. This algorithm is proposed by @nmasahiro, a maintainer of this library, and accepted at AAAI 2021.

| Rot Ellipsoid | Ellipsoid | | ---------------------- | ------------------ | | rot-ellipsoid | quadratic |

Link

  • PyPI: https://pypi.org/project/cmaes/0.8.0/

- Python
Published by github-actions[bot] over 5 years ago

cmaes - v0.7.1

CHANGES

  • Support Python 3.9 (#84)
  • Refactor constants definitions (#85)
  • Add tox.ini (#86)
  • Remove numpy from setup_requires (#90)

- Python
Published by c-bata over 5 years ago

cmaes - v0.7.0

CHANGES

New features

Separable CMA-ES is added at https://github.com/CyberAgent/cmaes/pull/82. It accelerates the search by ignoring the dependency of variables. This is inefficient if there is a strong dependency between variables; however, this technique significantly improves the performance if the dependency can be ignored.

| Benchmark | | --- | | 68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f6b75726f62616b6f2d7265706f7274732f43796265724167656e742f636d6165732f7369782d68756d702d63616d656c2d34383231326238303339373266353830656439316335633838343262666631303331623136373336 |

Dependency

  • Drop Python 3.5 support (#74)

Links

  • PyPI: https://pypi.org/project/cmaes/0.7.0/

- Python
Published by c-bata over 5 years ago

cmaes - v0.6.1

CHANGES

Bug fixes

  • Fix coordinate rotation (#77).
    • This bug leads to serious performance degradation on ill-conditioned problems.

Links

  • PyPI: https://pypi.org/project/cmaes/0.6.1/

- Python
Published by c-bata over 5 years ago

cmaes - Release v0.6.0

CHANGES

New features

should_stop() method which checks some termination criterion is added. You can easily implement IPOP-CMA-ES (#50) and BIPOP-CMA-ES (#54) by using this API. These algorithms performs well on multi-modal functions (See the benchmark of #58).

| IPOP-CMA-ES | BIPOP-CMA-ES | | --- | --- | | visualize-ipop-cmaes-himmelblau | visualize-bipop-cmaes-himmelblau |

Remove Optuna sampler.

Remove CMASampler(deprecated at v0.4.0) and monkeypatch (deprecated at v0.5.0) for Optuna.

Please use Optuna's official CMA-ES sampler which will be stabled at v2.0.0. You can quickly migrated to Optuna's official sampler by replacing your imports with optuna.samplers.CmaEsSampler(). See the documentation for details.

Deprecate cmaes.cma module.

cmaes.cma module is now deprecated. Please import CMA class from the package root (#46).

python from cmaes.cma import CMA # Deprecated! ↓ from cmaes import CMA # Do this!

Link

  • PyPI: https://pypi.org/project/cmaes/0.6.0/

- Python
Published by c-bata almost 6 years ago

cmaes - Release v0.5.1

CHANGES

Bug fixes

  • Fix numerical overflow errors (simplified version of #34) (#41, thanks @HideakiImamura).

Links

  • PyPI: https://pypi.org/project/cmaes/0.5.1/

- Python
Published by c-bata almost 6 years ago

cmaes - Release v0.5.0

CHANGES

Bug fixes

  • Fix numerical overflow errors (#31)

Optuna's sampler interface

  • Deprecate patch_fast_itersection_search_space (#28)
  • Use suggest_float() APIs (#25)

Links

  • PyPI: https://pypi.org/project/cmaes/0.5.0/

- Python
Published by c-bata about 6 years ago

cmaes - Release v0.4.0

CHANGES

CMASampler is deprecated because it is ported to optuna.samplers.CmaEsSampler from Optuna v1.3.0.

optuna.samplers.CmaEsSampler is about 2-times slower than CMASampler. If you want to make it faster, please call cmaes.monkeypatch.patch_fast_intersection_search_space() before running study.optimize().

New features

  • Monkeypatch for faster intersection search space (#20)
  • Support step argument on IntUniformDistribution (#21)

API Changes

  • Deprecate CMASampler (#22)

Bug fixes

  • Fix scale of log uniform distribution of CMASampler (#16)

- Python
Published by c-bata about 6 years ago

cmaes - Release v0.3.2

PyPI: https://pypi.org/project/cmaes/0.3.2/

CHANGES

API changes

  • CMA provides dim property method for the number of dimensions.
  • CMA provides set_bounds method to update boundary constraints.

Bug fixes

  • Disable when search_space is changed.

- Python
Published by c-bata about 6 years ago

cmaes - Release v0.3.1

PyPI: https://pypi.org/project/cmaes/0.3.1/

CHANGES

Improvements

  • Python 3.5 support.
  • Add docstring.

- Python
Published by c-bata over 6 years ago

cmaes - Release v0.3.0

CHANGES

PyPI: https://pypi.org/project/cmaes/0.3.0/

Improvements

  • Reduce memory usage.
  • Repair infeasible parameters when exceeds a resampling limit.

Bug fixes

  • Fixed a bug when using RDB storage.
  • Fixed an arithmetic overflow of the covariance matrix.

- Python
Published by c-bata over 6 years ago

cmaes - Release v0.2.0

- Python
Published by c-bata over 6 years ago