<!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>macop.algorithms.Algorithm — macop v1.0.3 documentation</title> <script type="text/javascript" src="../_static/js/modernizr.min.js"></script> <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> <script type="text/javascript" src="../_static/jquery.js"></script> <script type="text/javascript" src="../_static/underscore.js"></script> <script type="text/javascript" src="../_static/doctools.js"></script> <script type="text/javascript" src="../_static/language_data.js"></script> <script type="text/javascript" src="../_static/js/theme.js"></script> <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> <link rel="next" title="macop.algorithms.mono.IteratedLocalSearch" href="macop.algorithms.mono.IteratedLocalSearch.html" /> <link rel="prev" title="Documentation" href="../macop.html" /> </head> <body class="wy-body-for-nav"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-scroll"> <div class="wy-side-nav-search" > <a href="../index.html" class="icon icon-home"> macop </a> <div class="version"> 1.0.3 </div> <div role="search"> <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <p class="caption"><span class="caption-text">Contents:</span></p> <ul class="current"> <li class="toctree-l1"><a class="reference internal" href="../description.html">Description</a></li> <li class="toctree-l1 current"><a class="reference internal" href="../macop.html">Documentation</a><ul class="current"> <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop">macop</a></li> <li class="toctree-l2 current"><a class="reference internal" href="../macop.html#macop-algorithms">macop.algorithms</a><ul class="current"> <li class="toctree-l3 current"><a class="current reference internal" href="#">macop.algorithms.Algorithm</a></li> <li class="toctree-l3"><a class="reference internal" href="macop.algorithms.mono.IteratedLocalSearch.html">macop.algorithms.mono.IteratedLocalSearch</a></li> <li class="toctree-l3"><a class="reference internal" href="macop.algorithms.mono.HillClimberFirstImprovment.html">macop.algorithms.mono.HillClimberFirstImprovment</a></li> <li class="toctree-l3"><a class="reference internal" href="macop.algorithms.mono.HillClimberBestImprovment.html">macop.algorithms.mono.HillClimberBestImprovment</a></li> <li class="toctree-l3"><a class="reference internal" href="macop.algorithms.multi.MOEAD.html">macop.algorithms.multi.MOEAD</a></li> <li class="toctree-l3"><a class="reference internal" href="macop.algorithms.multi.MOSubProblem.html">macop.algorithms.multi.MOSubProblem</a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-callbacks">macop.callbacks</a></li> <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-evaluators">macop.evaluators</a></li> <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-operators">macop.operators</a></li> <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-solution">macop.solution</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="../examples.html">Some examples</a></li> <li class="toctree-l1"><a class="reference internal" href="../contributing.html">Contributing</a></li> </ul> </div> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="../index.html">macop</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="../index.html">Docs</a> »</li> <li><a href="../macop.html">Documentation</a> »</li> <li>macop.algorithms.Algorithm</li> <li class="wy-breadcrumbs-aside"> <a href="https://github.com/prise-3d/macop/blob/master/docs/source/macop/macop.algorithms.Algorithm.rst" class="fa fa-github"> Edit on GitHub</a> </li> </ul> <hr/> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <div class="section" id="module-macop.algorithms.Algorithm"> <span id="macop-algorithms-algorithm"></span><h1>macop.algorithms.Algorithm<a class="headerlink" href="#module-macop.algorithms.Algorithm" title="Permalink to this headline">¶</a></h1> <p>Abstract Algorithm class used as basic algorithm implementation with some specific initialization</p> <p class="rubric">Classes</p> <table class="longtable docutils align-default"> <colgroup> <col style="width: 10%" /> <col style="width: 90%" /> </colgroup> <tbody> <tr class="row-odd"><td><p><a class="reference internal" href="#macop.algorithms.Algorithm.Algorithm" title="macop.algorithms.Algorithm.Algorithm"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Algorithm</span></code></a>(initalizer, evaluator, operators, …)</p></td> <td><p>Algorithm class used as basic algorithm</p></td> </tr> </tbody> </table> <dl class="class"> <dt id="macop.algorithms.Algorithm.Algorithm"> <em class="property">class </em><code class="sig-prename descclassname">macop.algorithms.Algorithm.</code><code class="sig-name descname">Algorithm</code><span class="sig-paren">(</span><em class="sig-param">initalizer</em>, <em class="sig-param">evaluator</em>, <em class="sig-param">operators</em>, <em class="sig-param">policy</em>, <em class="sig-param">validator</em>, <em class="sig-param">maximise=True</em>, <em class="sig-param">parent=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/algorithms/Algorithm.html#Algorithm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm" title="Permalink to this definition">¶</a></dt> <dd><p>Algorithm class used as basic algorithm</p> <p>This class enables to manage some common usages of operation research algorithms: - initialization function of solution - validator function to check if solution is valid or not (based on some criteria) - evaluation function to give fitness score to a solution - operators used in order to update solution during search process - policy process applied when choosing next operator to apply - callbacks function in order to do some relative stuff every number of evaluation or reload algorithm state - parent algorithm associated to this new algorithm instance (hierarchy management)</p> <dl class="attribute"> <dt id="macop.algorithms.Algorithm.Algorithm.initalizer"> <code class="sig-name descname">initalizer</code><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.initalizer" title="Permalink to this definition">¶</a></dt> <dd><p>{function} – basic function strategy to initialize solution</p> </dd></dl> <dl class="attribute"> <dt id="macop.algorithms.Algorithm.Algorithm.evaluator"> <code class="sig-name descname">evaluator</code><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.evaluator" title="Permalink to this definition">¶</a></dt> <dd><p>{function} – basic function in order to obtained fitness (mono or multiple objectives)</p> </dd></dl> <dl class="attribute"> <dt id="macop.algorithms.Algorithm.Algorithm.operators"> <code class="sig-name descname">operators</code><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.operators" title="Permalink to this definition">¶</a></dt> <dd><p>{[Operator]} – list of operator to use when launching algorithm</p> </dd></dl> <dl class="attribute"> <dt id="macop.algorithms.Algorithm.Algorithm.policy"> <code class="sig-name descname">policy</code><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.policy" title="Permalink to this definition">¶</a></dt> <dd><p>{Policy} – Policy class implementation strategy to select operators</p> </dd></dl> <dl class="attribute"> <dt id="macop.algorithms.Algorithm.Algorithm.validator"> <code class="sig-name descname">validator</code><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.validator" title="Permalink to this definition">¶</a></dt> <dd><p>{function} – basic function to check if solution is valid or not under some constraints</p> </dd></dl> <dl class="attribute"> <dt id="macop.algorithms.Algorithm.Algorithm.maximise"> <code class="sig-name descname">maximise</code><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.maximise" title="Permalink to this definition">¶</a></dt> <dd><p>{bool} – specify kind of optimisation problem</p> </dd></dl> <dl class="attribute"> <dt id="macop.algorithms.Algorithm.Algorithm.currentSolution"> <code class="sig-name descname">currentSolution</code><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.currentSolution" title="Permalink to this definition">¶</a></dt> <dd><p>{Solution} – current solution managed for current evaluation comparison</p> </dd></dl> <dl class="attribute"> <dt id="macop.algorithms.Algorithm.Algorithm.bestSolution"> <code class="sig-name descname">bestSolution</code><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.bestSolution" title="Permalink to this definition">¶</a></dt> <dd><p>{Solution} – best solution found so far during running algorithm</p> </dd></dl> <dl class="attribute"> <dt id="macop.algorithms.Algorithm.Algorithm.callbacks"> <code class="sig-name descname">callbacks</code><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.callbacks" title="Permalink to this definition">¶</a></dt> <dd><p>{[Callback]} – list of Callback class implementation to do some instructions every number of evaluations and <cite>load</cite> when initializing algorithm</p> </dd></dl> <dl class="attribute"> <dt id="macop.algorithms.Algorithm.Algorithm.parent"> <code class="sig-name descname">parent</code><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.parent" title="Permalink to this definition">¶</a></dt> <dd><p>{Algorithm} – parent algorithm reference in case of inner Algorithm instance (optional)</p> </dd></dl> <dl class="method"> <dt id="macop.algorithms.Algorithm.Algorithm.addCallback"> <code class="sig-name descname">addCallback</code><span class="sig-paren">(</span><em class="sig-param">_callback</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/algorithms/Algorithm.html#Algorithm.addCallback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.addCallback" title="Permalink to this definition">¶</a></dt> <dd><p>Add new callback to algorithm specifying usefull parameters</p> <dl class="field-list simple"> <dt class="field-odd">Parameters</dt> <dd class="field-odd"><p><strong>_callback</strong> – {Callback} – specific Callback instance</p> </dd> </dl> </dd></dl> <dl class="method"> <dt id="macop.algorithms.Algorithm.Algorithm.end"> <code class="sig-name descname">end</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/algorithms/Algorithm.html#Algorithm.end"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.end" title="Permalink to this definition">¶</a></dt> <dd><p>Display end message into <cite>run</cite> method</p> </dd></dl> <dl class="method"> <dt id="macop.algorithms.Algorithm.Algorithm.evaluate"> <code class="sig-name descname">evaluate</code><span class="sig-paren">(</span><em class="sig-param">_solution</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/algorithms/Algorithm.html#Algorithm.evaluate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.evaluate" title="Permalink to this definition">¶</a></dt> <dd><p>Evaluate a solution using evaluator passed when intialize algorithm</p> <dl class="field-list simple"> <dt class="field-odd">Parameters</dt> <dd class="field-odd"><p><strong>solution</strong> – {Solution} – solution to evaluate</p> </dd> <dt class="field-even">Returns</dt> <dd class="field-even"><p>fitness score of solution which is not already evaluated or changed</p> </dd> </dl> <div class="admonition note"> <p class="admonition-title">Note</p> <p>if multi-objective problem this method can be updated using array of <cite>evaluator</cite></p> </div> </dd></dl> <dl class="method"> <dt id="macop.algorithms.Algorithm.Algorithm.getGlobalEvaluation"> <code class="sig-name descname">getGlobalEvaluation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/algorithms/Algorithm.html#Algorithm.getGlobalEvaluation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.getGlobalEvaluation" title="Permalink to this definition">¶</a></dt> <dd><p>Get the global number of evaluation (if inner algorithm)</p> <dl class="field-list simple"> <dt class="field-odd">Returns</dt> <dd class="field-odd"><p>{int} – current global number of evaluation</p> </dd> </dl> </dd></dl> <dl class="method"> <dt id="macop.algorithms.Algorithm.Algorithm.getGlobalMaxEvaluation"> <code class="sig-name descname">getGlobalMaxEvaluation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/algorithms/Algorithm.html#Algorithm.getGlobalMaxEvaluation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.getGlobalMaxEvaluation" title="Permalink to this definition">¶</a></dt> <dd><p>Get the global max number of evaluation (if inner algorithm)</p> <dl class="field-list simple"> <dt class="field-odd">Returns</dt> <dd class="field-odd"><p>{int} – current global max number of evaluation</p> </dd> </dl> </dd></dl> <dl class="method"> <dt id="macop.algorithms.Algorithm.Algorithm.getParent"> <code class="sig-name descname">getParent</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/algorithms/Algorithm.html#Algorithm.getParent"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.getParent" title="Permalink to this definition">¶</a></dt> <dd><p>Recursively find the main parent algorithm attached of the current algorithm</p> <dl class="field-list simple"> <dt class="field-odd">Returns</dt> <dd class="field-odd"><p>{Algorithm} – main algorithm set for this algorithm</p> </dd> </dl> </dd></dl> <dl class="method"> <dt id="macop.algorithms.Algorithm.Algorithm.increaseEvaluation"> <code class="sig-name descname">increaseEvaluation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/algorithms/Algorithm.html#Algorithm.increaseEvaluation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.increaseEvaluation" title="Permalink to this definition">¶</a></dt> <dd><p>Increase number of evaluation once a solution is evaluated for each dependant algorithm (parents hierarchy)</p> </dd></dl> <dl class="method"> <dt id="macop.algorithms.Algorithm.Algorithm.initRun"> <code class="sig-name descname">initRun</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/algorithms/Algorithm.html#Algorithm.initRun"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.initRun" title="Permalink to this definition">¶</a></dt> <dd><p>Initialize the current solution and best solution using the <cite>initialiser</cite> function</p> </dd></dl> <dl class="method"> <dt id="macop.algorithms.Algorithm.Algorithm.isBetter"> <code class="sig-name descname">isBetter</code><span class="sig-paren">(</span><em class="sig-param">_solution</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/algorithms/Algorithm.html#Algorithm.isBetter"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.isBetter" title="Permalink to this definition">¶</a></dt> <dd><p>Check if solution is better than best found</p> <dl class="field-list simple"> <dt class="field-odd">Parameters</dt> <dd class="field-odd"><p><strong>solution</strong> – {Solution} – solution to compare with best one</p> </dd> <dt class="field-even">Returns</dt> <dd class="field-even"><p>{bool} – <cite>True</cite> if better</p> </dd> </dl> </dd></dl> <dl class="method"> <dt id="macop.algorithms.Algorithm.Algorithm.progress"> <code class="sig-name descname">progress</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/algorithms/Algorithm.html#Algorithm.progress"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.progress" title="Permalink to this definition">¶</a></dt> <dd><p>Log progress and apply callbacks if necessary</p> </dd></dl> <dl class="method"> <dt id="macop.algorithms.Algorithm.Algorithm.resume"> <code class="sig-name descname">resume</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/algorithms/Algorithm.html#Algorithm.resume"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.resume" title="Permalink to this definition">¶</a></dt> <dd><p>Resume algorithm using Callback instances</p> </dd></dl> <dl class="method"> <dt id="macop.algorithms.Algorithm.Algorithm.run"> <code class="sig-name descname">run</code><span class="sig-paren">(</span><em class="sig-param">_evaluations</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/algorithms/Algorithm.html#Algorithm.run"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.run" title="Permalink to this definition">¶</a></dt> <dd><p>Run the specific algorithm following number of evaluations to find optima</p> </dd></dl> <dl class="method"> <dt id="macop.algorithms.Algorithm.Algorithm.stop"> <code class="sig-name descname">stop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/algorithms/Algorithm.html#Algorithm.stop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.stop" title="Permalink to this definition">¶</a></dt> <dd><p>Global stopping criteria (check for parents algorithm hierarchy too)</p> </dd></dl> <dl class="method"> <dt id="macop.algorithms.Algorithm.Algorithm.update"> <code class="sig-name descname">update</code><span class="sig-paren">(</span><em class="sig-param">_solution</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/algorithms/Algorithm.html#Algorithm.update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.update" title="Permalink to this definition">¶</a></dt> <dd><p>Apply update function to solution using specific <cite>policy</cite> Check if solution is valid after modification and returns it</p> <dl class="field-list simple"> <dt class="field-odd">Parameters</dt> <dd class="field-odd"><p><strong>solution</strong> – {Solution} – solution to update using current policy</p> </dd> <dt class="field-even">Returns</dt> <dd class="field-even"><p>{Solution} – updated solution obtained by the selected operator</p> </dd> </dl> </dd></dl> </dd></dl> </div> </div> </div> <footer> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <a href="macop.algorithms.mono.IteratedLocalSearch.html" class="btn btn-neutral float-right" title="macop.algorithms.mono.IteratedLocalSearch" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="../macop.html" class="btn btn-neutral float-left" title="Documentation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> <hr/> <div role="contentinfo"> <p> © Copyright 2020, Jérôme BUISINE </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.Navigation.enable(true); }); </script> </body> </html>