nsma


Namensma JSON
Version 1.0.12 PyPI version JSON
download
home_page
SummaryNSMA: A Memetic Procedure for Global Multi-Objective Optimization.
upload_time2023-12-01 08:53:14
maintainer
docs_urlNone
author
requires_python>=3.9
licenseApache License 2.0
keywords multi-objective optimization memetic algorithm nsga-ii descent method pareto front approximation
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![Python 3.10](https://img.shields.io/badge/python-3.10.6-blue.svg)](https://www.python.org/downloads/release/python-3106/)
[![license](https://img.shields.io/badge/license-apache_2.0-orange.svg)](https://opensource.org/licenses/Apache-2.0)
[![DOI](https://zenodo.org/badge/562917525.svg)](https://zenodo.org/badge/latestdoi/562917525)

![Alt Text](https://github.com/pierlumanzu/nsma/raw/main/README_Front_Image.gif)
## 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).](
https://doi.org/10.1007/s12532-022-00231-3)

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](https://www.gurobi.com/) 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](https://scipy.org/) 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:
```python
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](https://webgol.dinfo.unifi.it/pierluigi-mansueto/)<br>
Global Optimization Laboratory ([GOL](https://webgol.dinfo.unifi.it/))<br>
University of Florence<br>
Email: pierluigi dot mansueto at unifi dot it

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "nsma",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "",
    "keywords": "Multi-objective optimization,Memetic algorithm,NSGA-II,Descent method,Pareto front approximation",
    "author": "",
    "author_email": "Mansueto Pierluigi <pierluigimansueto@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/8b/55/824271ac29684dd15193cd93096710b30c949af29454fe476223a420baff/nsma-1.0.12.tar.gz",
    "platform": null,
    "description": "[![Python 3.10](https://img.shields.io/badge/python-3.10.6-blue.svg)](https://www.python.org/downloads/release/python-3106/)\n[![license](https://img.shields.io/badge/license-apache_2.0-orange.svg)](https://opensource.org/licenses/Apache-2.0)\n[![DOI](https://zenodo.org/badge/562917525.svg)](https://zenodo.org/badge/latestdoi/562917525)\n\n![Alt Text](https://github.com/pierlumanzu/nsma/raw/main/README_Front_Image.gif)\n## NSMA: A Memetic Procedure for Global Multi-Objective Optimization\n\nImplementation of the NSMA Algorithm proposed in\n\n[Lapucci, M., Mansueto, P. & Schoen, F. A memetic procedure for global multi-objective optimization. Math. Prog. Comp. (2022).](\nhttps://doi.org/10.1007/s12532-022-00231-3)\n\nIf you have used our code for research purposes, please cite the publication mentioned above.\nFor the sake of simplicity, we provide the Bibtex format:\n\n```\n@Article{Lapucci2022,\n    author={Lapucci, Matteo and Mansueto, Pierluigi and Schoen, Fabio},\n    title={A memetic procedure for global multi-objective optimization},\n    journal={Mathematical Programming Computation},\n    year={2022},\n    month={Nov},\n    day={22},\n    issn={1867-2957},\n    doi={10.1007/s12532-022-00231-3},\n    url={https://doi.org/10.1007/s12532-022-00231-3}\n}\n```\n\n#### Main Dependencies\n\n* ```python v3.9```\n* ```pip v22.2.2```\n* ```numpy v1.22.3```\n* ```scipy v1.7.3```\n* ```matplotlib``` Windows: ```v3.5.3```, Linux: ```v3.5.2```, MacOSX: ```v3.6.1```\n* ```tensorflow``` Windows: ```v2.9.1```, Linux: ```v2.8.2```, MacOSX: ```v2.10.0```\n* ```gurobipy v9.5.2```\n* ```progressbar2 v4.2.0```\n\n#### Gurobi Optimizer\n\nIn order to run some parts of the code, the [Gurobi](https://www.gurobi.com/) Optimizer needs to be installed and, in addition, a valid Gurobi licence is required. \nHowever, the employment of the Gurobi Optimizer is not mandatory to execute the code. \nIndeed, we provide alternative scripts where the HiGHS dual simplex solver implementation by [SciPy](https://scipy.org/) is used.\n\n### Usage\n\nWe refer to the code documentation and the related GitHub repository for all the information. \n\nAn usage example could be the following:\n```python\nimport tensorflow as tf\nfrom nsma.algorithms.memetic.nsma import NSMA\nfrom nsma.problems.man.man_instance import MAN1\nfrom nsma.general_utils.pareto_utils import points_initialization\n\ntf.compat.v1.disable_eager_execution()\n\nsession = tf.compat.v1.Session()\nwith session.as_default():\n    algorithm = NSMA(max_iter=None, \n                     max_time=2, \n                     max_f_evals=None, \n                     verbose=True, \n                     verbose_interspace=10, \n                     plot_pareto_front=True, \n                     plot_pareto_solutions=False, \n                     plot_dpi=100, \n                     pop_size=100, \n                     crossover_probability=0.9, \n                     crossover_eta=20, \n                     mutation_eta=20, \n                     shift=10, \n                     crowding_quantile=0.9, \n                     n_opt=5, \n                     FMOPG_max_iter=5, \n                     theta_for_stationarity=-1e-10, \n                     theta_tol=-1e-1, \n                     theta_dec_factor=10**(-0.5), \n                     gurobi=True, \n                     gurobi_method=1, \n                     gurobi_verbose=False, \n                     ALS_alpha_0=1, \n                     ALS_delta=0.5, \n                     ALS_beta=10**-4, \n                     ALS_min_alpha=1e-7)\n    problem = MAN1(n=5)\n    initial_p_list, initial_f_list, n_initial_points = points_initialization(problem, 'hyper', 5)\n    p_list, f_list, elapsed_time = algorithm.search(initial_p_list, initial_f_list, problem)\n```\n\n### Contact\n\nIf you have any question, feel free to contact me:\n\n[Pierluigi Mansueto](https://webgol.dinfo.unifi.it/pierluigi-mansueto/)<br>\nGlobal Optimization Laboratory ([GOL](https://webgol.dinfo.unifi.it/))<br>\nUniversity of Florence<br>\nEmail: pierluigi dot mansueto at unifi dot it\n",
    "bugtrack_url": null,
    "license": "Apache License 2.0",
    "summary": "NSMA: A Memetic Procedure for Global Multi-Objective Optimization.",
    "version": "1.0.12",
    "project_urls": {
        "Homepage": "https://github.com/pierlumanzu/nsma",
        "Tracker": "https://github.com/pierlumanzu/nsma/issues"
    },
    "split_keywords": [
        "multi-objective optimization",
        "memetic algorithm",
        "nsga-ii",
        "descent method",
        "pareto front approximation"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4783a884a31bf52ae2ea0406850a798cd967f62b6329866a09ffa1d0b19b06b0",
                "md5": "02125e1bcf15b5f965f942414f5cf508",
                "sha256": "03614402024584d7644742294a115ca44621b1bde204546ea237ac807a3ec720"
            },
            "downloads": -1,
            "filename": "nsma-1.0.12-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "02125e1bcf15b5f965f942414f5cf508",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 56784,
            "upload_time": "2023-12-01T08:53:12",
            "upload_time_iso_8601": "2023-12-01T08:53:12.292813Z",
            "url": "https://files.pythonhosted.org/packages/47/83/a884a31bf52ae2ea0406850a798cd967f62b6329866a09ffa1d0b19b06b0/nsma-1.0.12-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8b55824271ac29684dd15193cd93096710b30c949af29454fe476223a420baff",
                "md5": "602b5a7026e2c913ed39412073e6191a",
                "sha256": "1f2fdc03c8943a844873cdc3dd4f609525055cd9a9a3fe5f6ac128d26e5206bf"
            },
            "downloads": -1,
            "filename": "nsma-1.0.12.tar.gz",
            "has_sig": false,
            "md5_digest": "602b5a7026e2c913ed39412073e6191a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 37891,
            "upload_time": "2023-12-01T08:53:14",
            "upload_time_iso_8601": "2023-12-01T08:53:14.669265Z",
            "url": "https://files.pythonhosted.org/packages/8b/55/824271ac29684dd15193cd93096710b30c949af29454fe476223a420baff/nsma-1.0.12.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-01 08:53:14",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "pierlumanzu",
    "github_project": "nsma",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "nsma"
}
        
Elapsed time: 0.15561s