<!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 &#8212; 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> &#187;</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">&para;</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">&quot;&quot;&quot;</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">&quot;&quot;&quot;</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">&quot;Belgium&quot;</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">&quot;Denmark&quot;</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">&quot;France&quot;</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">&quot;Germany&quot;</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">&quot;Luxembourg&quot;</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">&quot;Netherlands&quot;</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">&quot;</span><span class="se">\n</span><span class="s2">Solving model....&quot;</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">&quot;Solution status: &quot;</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">&quot;Yellow&quot;</span><span class="p">,</span> <span class="s2">&quot;Red&quot;</span><span class="p">,</span> <span class="s2">&quot;Green&quot;</span><span class="p">,</span> <span class="s2">&quot;Blue&quot;</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">&quot;   &quot;</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">&quot;: &quot;</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">&quot;No solution found&quot;</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(&quot;\nSolver log:&quot;)</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> &#187;</li>
        <li class="nav-item nav-item-this"><a href="">basic/color.py example</a></li> 
      </ul>
    </div>
    <div class="footer" role="contentinfo">
    &#169; Copyright 2022, IBM.
    </div>
  </body>
</html>