CR-FM-NES [1] is an efficient black-box optimization method for high-dimensional problems. In CR-FM-NES, both time and space complexity are linear, with partially considering variable dependencies. Therefore, it is especially suitable for high-dimensional problems (about hundreds to thousands of dimensions). On the other hand, it often achieves high performance even on low-dimensional problems. This is an extension of FM-NES (Fast Moving Natural Evolution Strategy) [2] to be applicable in high-dimensional problems. Please e-mail at masahironomura5325@gmail.com if you have any issue.
If you find this code useful in your research then please cite:
@INPROCEEDINGS{nomura2022fast,
title={Fast Moving Natural Evolution Strategy for High-Dimensional Problems},
author={Nomura, Masahiro and Ono, Isao},
booktitle={2022 IEEE Congress on Evolutionary Computation (CEC)},
pages={1-8},
year={2022},
}
crfmnes
in January 2023. You can install it via pip install crfmnes
.You need only NumPy that is the package for scientific computing.
Please run the following command.
$ pip install crfmnes
This is a simple example that objective function is sphere function. Note that the optimization problem is formulated as minimization problem.
import numpy as np
from crfmnes import CRFMNES
dim = 3
f = lambda x: np.sum(x**2)
mean = np.ones([dim, 1]) * 0.5
sigma = 0.2
lamb = 6
crfmnes = CRFMNES(dim, f, mean, sigma, lamb)
x_best, f_best = crfmnes.optimize(100)
print("x_best:{}, f_best:{}".format(x_best, f_best))
# x_best:[1.64023896e-05 2.41682149e-05 3.40657594e-05], f_best:2.0136169613476005e-09
CR-FM-NES can be applied to (implicitly) constrained black-box optimization problems.
Please set the objective function value of the infeasible solution to np.inf
.
CR-FM-NES reflects the information and performs an efficient search.
Please refer to [3] for the details of the constraint handling methods implemented in this repository.
I really appreciate that CR-FM-NES is implemented in other settings.