The HMS (Hierarchic Memetic Strategy) is a composite global optimization strategy consisting of a multi-population evolutionary strategy and some auxiliary methods. The HMS makes use of a tree with a fixed maximal height and variable internal node degree. Each component population is governed by a particular evolutionary engine. This package provides a simple python implementation with examples of using different population engines.
Project description
pyhms
pyhms
is a Python implementation of Hierarchic Memetic Strategy (HMS).
The Hierarchic Memetic Strategy is a stochastic global optimizer designed to tackle highly multimodal problems. It is a composite global optimization strategy consisting of a multi-population evolutionary strategy and some auxiliary methods. The HMS makes use of a dynamically-evolving data structure that provides an organization among the component populations. It is a tree with a fixed maximal height and variable internal node degree. Each component population is governed by a particular optimization engine. This package provides a simple python implementation.
Installation
Installation can be done using pypi
:
pip install pyhms
It's also possible to install the current main branch:
pip install git+https://github.com/agh-a2s/pyhms.git@main
Quick Start
from pyhms import minimize
import numpy as np
fun = lambda x: sum(x**2)
bounds = np.array([(-20, 20), (-20, 20)])
solution = minimize(
fun=fun,
bounds=bounds,
maxfun=10000,
log_level="debug",
seed=42
)
pyhms
provides an interface similar to scipy.optimize.minimize
. This is the simplest way to run HMS with default parameters.
import numpy as np
from pyhms import (
EALevelConfig,
hms,
get_NBC_sprout,
DontStop,
MetaepochLimit,
SEA,
Problem,
)
square_bounds = np.array([(-20, 20), (-20, 20)])
square_problem = Problem(lambda x: sum(x**2), maximize=False, bounds=square_bounds)
config = [
EALevelConfig(
ea_class=SEA,
generations=2,
problem=square_problem,
pop_size=20,
mutation_std=1.0,
lsc=DontStop(),
),
EALevelConfig(
ea_class=SEA,
generations=4,
problem=square_problem,
pop_size=10,
mutation_std=0.25,
sample_std_dev=1.0,
lsc=DontStop(),
),
]
global_stop_condition = MetaepochLimit(limit=10)
sprout_condition = get_NBC_sprout(level_limit=4)
hms_tree = hms(config, global_stop_condition, sprout_condition)
print(hms_tree.summary())
Relevant literature
- J. Sawicki, M. Łoś, M. Smołka, R. Schaefer. Understanding measure-driven algorithms solving irreversibly ill-conditioned problems. Natural Computing 21:289-315, 2022. doi: 10.1007/s11047-020-09836-w
- J. Sawicki, M. Łoś, M. Smołka, J. Alvarez-Aramberri. Using Covariance Matrix Adaptation Evolutionary Strategy to boost the search accuracy in hierarchic memetic computations. Journal of computational science, 34, 48-54, 2019. doi: 10.1016/j.jocs.2019.04.005
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pyhms-0.1.1.tar.gz
.
File metadata
- Download URL: pyhms-0.1.1.tar.gz
- Upload date:
- Size: 39.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.10.7 Darwin/23.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7e115a042fb729d1d6b473cd5ef3cd321d771fe4c6f3a0e3158b868e26bd06f |
|
MD5 | 1bfff71137f278054d8b9525e2b8e6d8 |
|
BLAKE2b-256 | da47a877603959b1fee809e80353f4103e44e0006401df9f9b09c1c5748a9847 |
File details
Details for the file pyhms-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: pyhms-0.1.1-py3-none-any.whl
- Upload date:
- Size: 55.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.10.7 Darwin/23.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d6eccdb4275a44413b711a42897a883624ed0c2ce14c3bb21895b9f69634b9ef |
|
MD5 | a1ae27ed35de8f7fb5c8c79923349a25 |
|
BLAKE2b-256 | 299e82b01312c51a269d4ba17e23a5991a05bfb1c856762078b1a7170ab89322 |