Metadata-Version: 2.1
Name: jmetalpy
Version: 1.5.4
Summary: Python version of the jMetal framework
Home-page: https://github.com/jMetal/jMetalPy
Author: Antonio J. Nebro
Author-email: antonio@lcc.uma.es
Maintainer: Antonio J. Nebro, Antonio Benitez-Hidalgo
Maintainer-email: antonio@lcc.uma.es, antonio.benitez@lcc.uma.es
License: MIT
Description: ![jMetalPy](docs/source/jmetalpy.png)
        
        [![Build Status](https://img.shields.io/travis/jMetal/jMetalPy/master.svg?style=flat-square)](https://travis-ci.org/jMetal/jMetalPy)
        [![Documentation](https://img.shields.io/badge/docs-online-success?style=flat-square)](https://jmetal.github.io/jMetalPy/index.html)
        [![PyPI License](https://img.shields.io/pypi/l/jMetalPy.svg?style=flat-square)]()
        [![PyPI version](https://img.shields.io/pypi/v/jMetalPy.svg?style=flat-square)]()
        [![PyPI Python version](https://img.shields.io/pypi/pyversions/jMetalPy.svg?style=flat-square)]()
        
        A paper introducing jMetalPy is available at: https://doi.org/10.1016/j.swevo.2019.100598
        
        ### Table of Contents
        - [Installation](#installation)
        - [Usage](#hello-world-)
        - [Features](#features)
        - [Changelog](#changelog)
        - [License](#license)
        
        ## Installation
        
        You can install the latest version of jMetalPy with `pip`, 
        
        ```console
        pip install jmetalpy  # or "jmetalpy[distributed]"
        ```
        
        <details><summary><b>Notes on installing with <tt>pip</tt></b></summary>
        <p>
        
        jMetalPy includes features for parallel and distributed computing based on [pySpark](https://spark.apache.org/docs/latest/api/python/index.html) and [Dask](https://dask.org/).
        
        These (extra) dependencies are *not* automatically installed when running `pip`, which only comprises the core functionality of the framework (enough for most users):
        
        ```console
        pip install jmetalpy
        ```
        
        This is the equivalent of running: 
        
        ```console
        pip install "jmetalpy[core]"
        ```
        
        Other supported commands are listed next:
        
        ```console
        pip install "jmetalpy[docs]"  # Install requirements for building docs
        pip install "jmetalpy[distributed]"  # Install requirements for parallel/distributed computing
        pip install "jmetalpy[complete]"  # Install all requirements
        ```
        
        </p>
        </details>
        
        ## Hello, world! 👋
        
        Examples of configuring and running all the included algorithms are located [in the documentation](https://jmetal.github.io/jMetalPy/multiobjective.algorithms.html).
        
        ```python
        from jmetal.algorithm.multiobjective import NSGAII
        from jmetal.operator import SBXCrossover, PolynomialMutation
        from jmetal.problem import ZDT1
        from jmetal.util.termination_criterion import StoppingByEvaluations
        
        problem = ZDT1()
        
        algorithm = NSGAII(
            problem=problem,
            population_size=100,
            offspring_population_size=100,
            mutation=PolynomialMutation(probability=1.0 / problem.number_of_variables, distribution_index=20),
            crossover=SBXCrossover(probability=1.0, distribution_index=20),
            termination_criterion=StoppingByEvaluations(max_evaluations=25000)
        )
        
        algorithm.run()
        ```
        
        We can then proceed to explore the results:
        
        ```python
        from jmetal.util.solution import get_non_dominated_solutions, print_function_values_to_file, \ 
            print_variables_to_file
        
        front = get_non_dominated_solutions(algorithm.get_result())
        
        # save to files
        print_function_values_to_file(front, 'FUN.NSGAII.ZDT1')
        print_variables_to_file(front, 'VAR.NSGAII.ZDT1')
        ```
        
        Or visualize the Pareto front approximation produced by the algorithm:
        
        ```python
        from jmetal.lab.visualization import Plot
        
        plot_front = Plot(title='Pareto front approximation', axis_labels=['x', 'y'])
        plot_front.plot(front, label='NSGAII-ZDT1', filename='NSGAII-ZDT1', format='png')
        ```
        
        <img src=docs/source/_static/NSGAII-ZDT1.png width=450 alt="Pareto front approximation">
        
        ## Features
        The current release of jMetalPy (v1.5.4) contains the following components:
        
        * Algorithms: local search, genetic algorithm, evolution strategy, simulated annealing, random search, NSGA-II, NSGA-III, SMPSO, OMOPSO, MOEA/D, MOEA/D-DRA, MOEA/D-IEpsilon, GDE3, SPEA2, HYPE, IBEA. Preference articulation-based algorithms (G-NSGA-II, G-GDE3, G-SPEA2, SMPSO/RP); Dynamic versions of NSGA-II, SMPSO, and GDE3.
        * Parallel computing based on Apache Spark and Dask.
        * Benchmark problems: ZDT1-6, DTLZ1-2, FDA, LZ09, LIR-CMOP, unconstrained (Kursawe, Fonseca, Schaffer, Viennet2), constrained (Srinivas, Tanaka).
        * Encodings: real, binary, permutations.
        * Operators: selection (binary tournament, ranking and crowding distance, random, nary random, best solution), crossover (single-point, SBX), mutation (bit-blip, polynomial, uniform, random).
        * Quality indicators: hypervolume, additive epsilon, GD, IGD.
        * Pareto front approximation plotting in real-time, static or interactive.
        * Experiment class for performing studies either alone or alongside [jMetal](https://github.com/jMetal/jMetal).
        * Pairwise and multiple hypothesis testing for statistical analysis, including several frequentist and Bayesian testing methods, critical distance plots and posterior diagrams.
        
        | ![Scatter plot 2D](docs/source/_static/2D.gif) | ![Scatter plot 3D](docs/source/_static/3D.gif) |
        |-------------- | ----------------  |
        | ![Parallel coordinates](docs/source/_static/p-c.gif) | ![Interactive chord plot](docs/source/_static/chordplot.gif) |
        
        ## Changelog
        
        * [v1.5.4] Refactored quality indicators to accept numpy array as input parameter.
        * [v1.5.4] Added [CompositeSolution](https://github.com/jMetal/jMetalPy/blob/master/jmetal/core/solution.py#L111) class to support mixed combinatorial problems. [#69](https://github.com/jMetal/jMetalPy/issues/69)
        
        ## License
        This project is licensed under the terms of the MIT - see the [LICENSE](LICENSE) file for details.
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Programming Language :: Python :: 3.6
Description-Content-Type: text/markdown
Provides-Extra: core
Provides-Extra: docs
Provides-Extra: distributed
Provides-Extra: complete
