NSMA: A Memetic Procedure for Global Multi-Objective Optimization
Implementation of the NSMA Algorithm proposed in
If you have used our code for research purposes, please cite the publication mentioned above. For the sake of simplicity, we provide the Bibtex format:
@Article{Lapucci2022,
author={Lapucci, Matteo and Mansueto, Pierluigi and Schoen, Fabio},
title={A memetic procedure for global multi-objective optimization},
journal={Mathematical Programming Computation},
year={2022},
month={Nov},
day={22},
issn={1867-2957},
doi={10.1007/s12532-022-00231-3},
url={https://doi.org/10.1007/s12532-022-00231-3}
}
Main Dependencies
python v3.9pip v22.2.2numpy v1.22.3scipy v1.7.3matplotlibWindows:v3.5.3, Linux:v3.5.2, MacOSX:v3.6.1tensorflowWindows:v2.9.1, Linux:v2.8.2, MacOSX:v2.10.0gurobipy v9.5.2progressbar2 v4.2.0
Gurobi Optimizer
In order to run some parts of the code, the Gurobi Optimizer needs to be installed and, in addition, a valid Gurobi licence is required. However, the employment of the Gurobi Optimizer is not mandatory to execute the code. Indeed, we provide alternative scripts where the HiGHS dual simplex solver implementation by SciPy is used.
Usage
We refer to the code documentation and the related GitHub repository for all the information.
An usage example could be the following:
import tensorflow as tf
from nsma.algorithms.memetic.nsma import NSMA
from nsma.problems.man.man_instance import MAN1
from nsma.general_utils.pareto_utils import points_initialization
tf.compat.v1.disable_eager_execution()
session = tf.compat.v1.Session()
with session.as_default():
algorithm = NSMA(max_iter=None,
max_time=2,
max_f_evals=None,
verbose=True,
verbose_interspace=10,
plot_pareto_front=True,
plot_pareto_solutions=False,
plot_dpi=100,
pop_size=100,
crossover_probability=0.9,
crossover_eta=20,
mutation_eta=20,
shift=10,
crowding_quantile=0.9,
n_opt=5,
FMOPG_max_iter=5,
theta_for_stationarity=-1e-10,
theta_tol=-1e-1,
theta_dec_factor=10**(-0.5),
gurobi=True,
gurobi_method=1,
gurobi_verbose=False,
ALS_alpha_0=1,
ALS_delta=0.5,
ALS_beta=10**-4,
ALS_min_alpha=1e-7)
problem = MAN1(n=5)
initial_p_list, initial_f_list, n_initial_points = points_initialization(problem, 'hyper', 5)
p_list, f_list, elapsed_time = algorithm.search(initial_p_list, initial_f_list, problem)
Contact
If you have any question, feel free to contact me:
Pierluigi Mansueto
Global Optimization Laboratory (GOL)
University of Florence
Email: pierluigi dot mansueto at unifi dot it
Metadata
Release files for nsma 1.0.16
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| nsma-1.0.16.tar.gz | 38.0 kB | Without provenance | Details for nsma-1.0.16.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| nsma-1.0.16-py3-none-any.whl | Python 3 | none | any | Details for nsma-1.0.16-py3-none-any.whl |
Total release size: 95.0 kB
Release files / nsma-1.0.16.tar.gz
| Download URL | nsma-1.0.16.tar.gz |
|---|---|
| Size | 38.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9eb94cdbb9ce194b4c8a493a661d6e6df3e9d9cf79b84eb2f47bc4dc7dc12bd4
|
|
BLAKE2b-256 checksum How to use checksums |
ad5f85c17d78a5b9dddd0305689614b6813293f10d0cb980ff71dd539309bc52
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.7.3
|
Release files / nsma-1.0.16-py3-none-any.whl
| Download URL | nsma-1.0.16-py3-none-any.whl |
|---|---|
| Size | 57.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
33e4ba3e88ed603c1f49e5d2f9d581e0b27d2bf0ed3cc0ff960dddb18d7cb328
|
|
BLAKE2b-256 checksum How to use checksums |
6d4c483109531dce8c24a47bbc80a574587e81f1ca4bb00e713beccf122c5a57
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.7.3
|
Security for nsma 1.0.16
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.