API
=============

Modules description
~~~~~~~~~~~~~~~~~~~

**Macop** offers the following main and basic features: 

- **algorithms:** generic and implemented optimisation research algorithms;
- **callbacks:** callbacks to automatically keep track of the search space advancement;
- **evaluator:** stores problem instance data and implement a `compute` method in order to evaluate a solution;
- **operators:** mutators, crossovers update of solution;
- **policies:** the way you choose the available operators (might be using reinforcement learning);
- **solutions:** representation of the solution;
- **validator:** such as constraint programmig, a `validator` is function which is used for validate or not a solution data state.


Common and base modules
~~~~~~~~~~~~~~~~~~~~~~~

The modules presented in this section are common to all types of optimisation problems. The abstract classes proposed here form the basis of the package's structure.

macop.algorithms
-------------------

.. autosummary::
   :toctree: macop
   
   macop.algorithms.base
      
   macop.algorithms.mono
   macop.algorithms.multi

macop.callbacks
-------------------

.. autosummary::
   :toctree: macop
   
   macop.callbacks.base

   macop.callbacks.classicals
   macop.callbacks.multi
   macop.callbacks.policies

macop.evaluators
-------------------

.. autosummary::
   :toctree: macop
   
   macop.evaluators.base

macop.operators
-------------------

.. autosummary::
   :toctree: macop
   
   macop.operators.base

macop.policies
-------------------

.. autosummary::
   :toctree: macop
   
   macop.policies.base
      
   macop.policies.classicals
   macop.policies.reinforcement

macop.solutions
-------------------

.. autosummary::
   :toctree: macop

   macop.solutions.base

macop.utils
-------------------

.. autosummary::
   :toctree: macop

   macop.utils.progress


Discrete Optimisation
~~~~~~~~~~~~~~~~~~~~~

Some implementations of discrete optimisation problem functionalities are available. They can be used as example implementations or can simply be used by the user.

macop.evaluators
-------------------

.. autosummary::
   :toctree: macop
   
   macop.evaluators.discrete.mono
   macop.evaluators.discrete.multi

macop.operators
-------------------

.. autosummary::
   :toctree: macop
   
   macop.operators.discrete.mutators
   macop.operators.discrete.crossovers

macop.solutions
-------------------

.. autosummary::
   :toctree: macop

   macop.solutions.discrete


Continuous Optimisation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Although continuous optimization is not the priority of this package, the idea is to leave the possibility to any user to implement or even propose implementations related to this kind of problem. The modules are here for the moment empty but present to establish the structure relative to these types of implementations.

If a user wishes to propose these developments so that they can be added in a future version of the package, he can refer to the guidelines_ for contributions of the package.

.. _guidelines: https://github.com/prise-3d/macop/blob/master/CONTRIBUTING.md

macop.evaluators
-------------------

.. autosummary::
   :toctree: macop
   
   macop.evaluators.continuous

macop.operators
-------------------

.. autosummary::
   :toctree: macop
   
   macop.operators.continuous.mutators
   macop.operators.continuous.crossovers

macop.solutions
-------------------

.. autosummary::
   :toctree: macop

   macop.solutions.continuous