<!doctype html> <html lang="en"> <head> <meta charset="iso-8859-1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <title>basic/color.py example — DOcplex.CP: Constraint Programming Modeling for Python V2.30 documentation</title> <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=03e43079" /> <link rel="stylesheet" type="text/css" href="_static/bizstyle.css?v=c92c1228" /> <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=dd09d6e6"></script> <script src="_static/doctools.js?v=888ff710"></script> <script src="_static/sphinx_highlight.js?v=4825356b"></script> <script src="_static/bizstyle.js"></script> <link rel="index" title="Index" href="genindex.html" /> <link rel="search" title="Search" href="search.html" /> <meta name="viewport" content="width=device-width,initial-scale=1.0" /> <!--[if lt IE 9]> <script src="_static/css3-mediaqueries.js"></script> <![endif]--> </head><body> <div class="related" role="navigation" aria-label="related navigation"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="genindex.html" title="General Index" accesskey="I">index</a></li> <li class="right" > <a href="py-modindex.html" title="Python Module Index" >modules</a> |</li> <li class="nav-item nav-item-0"><a href="index.html">DOcplex.CP: Constraint Programming Modeling for Python V2.30 documentation</a> »</li> <li class="nav-item nav-item-this"><a href="">basic/color.py example</a></li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body" role="main"> <section id="basic-color-py-example"> <h1>basic/color.py example<a class="headerlink" href="#basic-color-py-example" title="Permalink to this heading">¶</a></h1> <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="c1"># --------------------------------------------------------------------------</span> <span class="linenos"> 2</span><span class="c1"># Source file provided under Apache License, Version 2.0, January 2004,</span> <span class="linenos"> 3</span><span class="c1"># http://www.apache.org/licenses/</span> <span class="linenos"> 4</span><span class="c1"># (c) Copyright IBM Corp. 2015, 2022</span> <span class="linenos"> 5</span><span class="c1"># --------------------------------------------------------------------------</span> <span class="linenos"> 6</span> <span class="linenos"> 7</span><span class="sd">"""</span> <span class="linenos"> 8</span><span class="sd">The problem involves choosing colors for the countries on a map in</span> <span class="linenos"> 9</span><span class="sd">such a way that at most four colors (blue, white, yellow, green) are</span> <span class="linenos">10</span><span class="sd">used and no neighboring countries are the same color. In this exercise,</span> <span class="linenos">11</span><span class="sd">you will find a solution for a map coloring problem with six countries:</span> <span class="linenos">12</span><span class="sd">Belgium, Denmark, France, Germany, Luxembourg, and the Netherlands.</span> <span class="linenos">13</span> <span class="linenos">14</span><span class="sd">Please refer to documentation for appropriate setup of solving configuration.</span> <span class="linenos">15</span><span class="sd">"""</span> <span class="linenos">16</span> <span class="linenos">17</span><span class="kn">from</span><span class="w"> </span><span class="nn">docplex.cp.model</span><span class="w"> </span><span class="kn">import</span> <span class="n">CpoModel</span> <span class="linenos">18</span> <span class="linenos">19</span><span class="c1"># Create CPO model</span> <span class="linenos">20</span><span class="n">mdl</span> <span class="o">=</span> <span class="n">CpoModel</span><span class="p">()</span> <span class="linenos">21</span> <span class="linenos">22</span><span class="c1"># Create model variables containing colors of the countries</span> <span class="linenos">23</span><span class="n">Belgium</span> <span class="o">=</span> <span class="n">mdl</span><span class="o">.</span><span class="n">integer_var</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="s2">"Belgium"</span><span class="p">)</span> <span class="linenos">24</span><span class="n">Denmark</span> <span class="o">=</span> <span class="n">mdl</span><span class="o">.</span><span class="n">integer_var</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="s2">"Denmark"</span><span class="p">)</span> <span class="linenos">25</span><span class="n">France</span> <span class="o">=</span> <span class="n">mdl</span><span class="o">.</span><span class="n">integer_var</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="s2">"France"</span><span class="p">)</span> <span class="linenos">26</span><span class="n">Germany</span> <span class="o">=</span> <span class="n">mdl</span><span class="o">.</span><span class="n">integer_var</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="s2">"Germany"</span><span class="p">)</span> <span class="linenos">27</span><span class="n">Luxembourg</span> <span class="o">=</span> <span class="n">mdl</span><span class="o">.</span><span class="n">integer_var</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="s2">"Luxembourg"</span><span class="p">)</span> <span class="linenos">28</span><span class="n">Netherlands</span> <span class="o">=</span> <span class="n">mdl</span><span class="o">.</span><span class="n">integer_var</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="s2">"Netherlands"</span><span class="p">)</span> <span class="linenos">29</span><span class="n">ALL_COUNTRIES</span> <span class="o">=</span> <span class="p">(</span><span class="n">Belgium</span><span class="p">,</span> <span class="n">Denmark</span><span class="p">,</span> <span class="n">France</span><span class="p">,</span> <span class="n">Germany</span><span class="p">,</span> <span class="n">Luxembourg</span><span class="p">,</span> <span class="n">Netherlands</span><span class="p">)</span> <span class="linenos">30</span> <span class="linenos">31</span><span class="c1"># Create constraints</span> <span class="linenos">32</span><span class="n">mdl</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Belgium</span> <span class="o">!=</span> <span class="n">France</span><span class="p">)</span> <span class="linenos">33</span><span class="n">mdl</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Belgium</span> <span class="o">!=</span> <span class="n">Germany</span><span class="p">)</span> <span class="linenos">34</span><span class="n">mdl</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Belgium</span> <span class="o">!=</span> <span class="n">Netherlands</span><span class="p">)</span> <span class="linenos">35</span><span class="n">mdl</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Belgium</span> <span class="o">!=</span> <span class="n">Luxembourg</span><span class="p">)</span> <span class="linenos">36</span><span class="n">mdl</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Denmark</span> <span class="o">!=</span> <span class="n">Germany</span><span class="p">)</span> <span class="linenos">37</span><span class="n">mdl</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">France</span> <span class="o">!=</span> <span class="n">Germany</span><span class="p">)</span> <span class="linenos">38</span><span class="n">mdl</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">France</span> <span class="o">!=</span> <span class="n">Luxembourg</span><span class="p">)</span> <span class="linenos">39</span><span class="n">mdl</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Germany</span> <span class="o">!=</span> <span class="n">Luxembourg</span><span class="p">)</span> <span class="linenos">40</span><span class="n">mdl</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Germany</span> <span class="o">!=</span> <span class="n">Netherlands</span><span class="p">)</span> <span class="linenos">41</span> <span class="linenos">42</span><span class="c1"># Solve model</span> <span class="linenos">43</span><span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">Solving model...."</span><span class="p">)</span> <span class="linenos">44</span><span class="n">msol</span> <span class="o">=</span> <span class="n">mdl</span><span class="o">.</span><span class="n">solve</span><span class="p">(</span><span class="n">TimeLimit</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span> <span class="linenos">45</span> <span class="linenos">46</span><span class="k">if</span> <span class="n">msol</span><span class="p">:</span> <span class="linenos">47</span> <span class="nb">print</span><span class="p">(</span><span class="s2">"Solution status: "</span> <span class="o">+</span> <span class="n">msol</span><span class="o">.</span><span class="n">get_solve_status</span><span class="p">())</span> <span class="linenos">48</span> <span class="n">colors</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"Yellow"</span><span class="p">,</span> <span class="s2">"Red"</span><span class="p">,</span> <span class="s2">"Green"</span><span class="p">,</span> <span class="s2">"Blue"</span><span class="p">)</span> <span class="linenos">49</span> <span class="k">for</span> <span class="n">country</span> <span class="ow">in</span> <span class="n">ALL_COUNTRIES</span><span class="p">:</span> <span class="linenos">50</span> <span class="nb">print</span><span class="p">(</span><span class="s2">" "</span> <span class="o">+</span> <span class="n">country</span><span class="o">.</span><span class="n">get_name</span><span class="p">()</span> <span class="o">+</span> <span class="s2">": "</span> <span class="o">+</span> <span class="n">colors</span><span class="p">[</span><span class="n">msol</span><span class="p">[</span><span class="n">country</span><span class="p">]])</span> <span class="linenos">51</span><span class="k">else</span><span class="p">:</span> <span class="linenos">52</span> <span class="nb">print</span><span class="p">(</span><span class="s2">"No solution found"</span><span class="p">)</span> <span class="linenos">53</span> <span class="linenos">54</span><span class="c1"># Print solver log</span> <span class="linenos">55</span><span class="c1"># print("\nSolver log:")</span> <span class="linenos">56</span><span class="c1"># print(msol.get_solver_log())</span> </pre></div> </div> </section> <div class="clearer"></div> </div> </div> </div> <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> <div class="sphinxsidebarwrapper"> <div id="searchbox" style="display: none" role="search"> <h3 id="searchlabel">Quick search</h3> <div class="searchformwrapper"> <form class="search" action="search.html" method="get"> <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/> <input type="submit" value="Go" /> </form> </div> </div> <script>document.getElementById('searchbox').style.display = "block"</script> </div> </div> <div class="clearer"></div> </div> <div class="related" role="navigation" aria-label="related navigation"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="genindex.html" title="General Index" >index</a></li> <li class="right" > <a href="py-modindex.html" title="Python Module Index" >modules</a> |</li> <li class="nav-item nav-item-0"><a href="index.html">DOcplex.CP: Constraint Programming Modeling for Python V2.30 documentation</a> »</li> <li class="nav-item nav-item-this"><a href="">basic/color.py example</a></li> </ul> </div> <div class="footer" role="contentinfo"> © Copyright 2022, IBM. </div> </body> </html>