CR-FM-NES for numerical optimization in Python
Project description
CR-FM-NES [slide]
CR-FM-NES [1] implementation. The main feature of CR-FM-NES is that 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},
}
News
- (2022/07) The paper Fast Moving Natural Evolution Strategy for High-Dimensional Problems has been accepted at IEEE CEC'22.
- (2022/12) CR-FM-NES has been integrated into evosax, which provides JAX-based evolution strategies implementation. Thanks @RobertTLange and @Obliman!
Getting Started
Prerequisites
You need only NumPy that is the package for scientific computing.
Installing
Please run the following command.
$ pip install crfmnes
Example
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
For Constrained Problems
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.
Other Versions of CR-FM-NES
I really appreciate that CR-FM-NES is implemented in other settings.
- C# Implementation: bakanaouji/CRFMNES_CS
- C++ Implementation: dietmarwo/fast-cma-es
- Jax(Python) Implementation: RobertTLange/evosax
References
- [1] M. Nomura, I. Ono, Fast Moving Natural Evolution Strategy for High-Dimensional Problems, IEEE CEC, 2022.
- [2] M. Nomura, I. Ono, Natural Evolution Strategy for Unconstrained and Implicitly Constrained Problems with Ridge Structure, IEEE SSCI, 2021.
- [3] M. Nomura, N. Sakai, N. Fukushima, and I. Ono, Distance-weighted Exponential Natural Evolution Strategy for Implicitly Constrained Black-Box Function Optimization, IEEE CEC, 2021.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.