Skip to main content

NSMA: A Memetic Procedure for Global Multi-Objective Optimization.

Project description

Python 3.10 license DOI

Alt Text

NSMA: A Memetic Procedure for Global Multi-Objective Optimization

Implementation of the NSMA Algorithm proposed in

Lapucci, M., Mansueto, P. & Schoen, F. A memetic procedure for global multi-objective optimization. Math. Prog. Comp. (2022).

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.9
  • pip v22.2.2
  • numpy v1.22.3
  • scipy v1.7.3
  • matplotlib Windows: v3.5.3, Linux: v3.5.2, MacOSX: v3.6.1
  • tensorflow Windows: v2.9.1, Linux: v2.8.2, MacOSX: v2.10.0
  • gurobipy v9.5.2
  • progressbar2 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nsma-1.0.16.tar.gz (38.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nsma-1.0.16-py3-none-any.whl (57.0 kB view details)

Uploaded Python 3

File details

Details for the file nsma-1.0.16.tar.gz.

File metadata

  • Download URL: nsma-1.0.16.tar.gz
  • Upload date:
  • Size: 38.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.3

File hashes

Hashes for nsma-1.0.16.tar.gz
Algorithm Hash digest
SHA256 9eb94cdbb9ce194b4c8a493a661d6e6df3e9d9cf79b84eb2f47bc4dc7dc12bd4
MD5 e978c4b7e7256436dc7e843fc6a0710c
BLAKE2b-256 ad5f85c17d78a5b9dddd0305689614b6813293f10d0cb980ff71dd539309bc52

See more details on using hashes here.

File details

Details for the file nsma-1.0.16-py3-none-any.whl.

File metadata

  • Download URL: nsma-1.0.16-py3-none-any.whl
  • Upload date:
  • Size: 57.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.3

File hashes

Hashes for nsma-1.0.16-py3-none-any.whl
Algorithm Hash digest
SHA256 33e4ba3e88ed603c1f49e5d2f9d581e0b27d2bf0ed3cc0ff960dddb18d7cb328
MD5 9566d94453e59decf0effddfbfca1327
BLAKE2b-256 6d4c483109531dce8c24a47bbc80a574587e81f1ca4bb00e713beccf122c5a57

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page