Files
ortools-clone/docs/cpp/classoperations__research_1_1_demon.html
2021-04-27 23:00:03 +02:00

340 lines
20 KiB
HTML

<!-- HTML header for doxygen 1.8.18-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>OR-Tools: Demon</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="styleSheet.tmp.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="orLogo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">OR-Tools
&#160;<span id="projectnumber">9.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classoperations__research_1_1_demon.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classoperations__research_1_1_demon-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Demon<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A <a class="el" href="classoperations__research_1_1_demon.html" title="A Demon is the base element of a propagation queue.">Demon</a> is the base element of a propagation queue. </p>
<p>It is the main object responsible for implementing the actual propagation of the constraint and pruning the inconsistent values in the domains of the variables. The main concept is that demons are listeners that are attached to the variables and listen to their modifications. There are two methods:</p><ul>
<li><a class="el" href="classoperations__research_1_1_demon.html#aff915cd1c182d7e7ce5c9d15e9ae1da7" title="This is the main callback of the demon.">Run()</a> is the actual method called when the demon is processed.</li>
<li><a class="el" href="classoperations__research_1_1_demon.html#ae47aecad15d101db52a7d6bd114565d3" title="This method returns the priority of the demon.">priority()</a> returns its priority. Standard priorities are slow, normal or fast. "immediate" is reserved for variables and is treated separately. </li>
</ul>
<p class="definition">Definition at line <a class="el" href="constraint__solver_8h_source.html#l03303">3303</a> of file <a class="el" href="constraint__solver_8h_source.html">constraint_solver.h</a>.</p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a18542ce967b086b67c5b0e2b1c025bcf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_demon.html#a18542ce967b086b67c5b0e2b1c025bcf">Demon</a> ()</td></tr>
<tr class="memdesc:a18542ce967b086b67c5b0e2b1c025bcf"><td class="mdescLeft">&#160;</td><td class="mdescRight">This indicates the priority of a demon. <a href="classoperations__research_1_1_demon.html#a18542ce967b086b67c5b0e2b1c025bcf">More...</a><br /></td></tr>
<tr class="separator:a18542ce967b086b67c5b0e2b1c025bcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c1d752bf5b8c6e57bd7defbdbc3e0d8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_demon.html#a5c1d752bf5b8c6e57bd7defbdbc3e0d8">~Demon</a> () override</td></tr>
<tr class="separator:a5c1d752bf5b8c6e57bd7defbdbc3e0d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff915cd1c182d7e7ce5c9d15e9ae1da7"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_demon.html#aff915cd1c182d7e7ce5c9d15e9ae1da7">Run</a> (<a class="el" href="classoperations__research_1_1_solver.html">Solver</a> *const s)=0</td></tr>
<tr class="memdesc:aff915cd1c182d7e7ce5c9d15e9ae1da7"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is the main callback of the demon. <a href="classoperations__research_1_1_demon.html#aff915cd1c182d7e7ce5c9d15e9ae1da7">More...</a><br /></td></tr>
<tr class="separator:aff915cd1c182d7e7ce5c9d15e9ae1da7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae47aecad15d101db52a7d6bd114565d3"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classoperations__research_1_1_solver.html#a293233c46e5eaa308f65c7c2350553f7">Solver::DemonPriority</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_demon.html#ae47aecad15d101db52a7d6bd114565d3">priority</a> () const</td></tr>
<tr class="memdesc:ae47aecad15d101db52a7d6bd114565d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method returns the priority of the demon. <a href="classoperations__research_1_1_demon.html#ae47aecad15d101db52a7d6bd114565d3">More...</a><br /></td></tr>
<tr class="separator:ae47aecad15d101db52a7d6bd114565d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed804747c45a7e1caf81461f9e45dd91"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_demon.html#aed804747c45a7e1caf81461f9e45dd91">DebugString</a> () const override</td></tr>
<tr class="separator:aed804747c45a7e1caf81461f9e45dd91"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c1ff1e86b1eb08d0f87eab2943dac2a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_demon.html#a0c1ff1e86b1eb08d0f87eab2943dac2a">inhibit</a> (<a class="el" href="classoperations__research_1_1_solver.html">Solver</a> *const s)</td></tr>
<tr class="memdesc:a0c1ff1e86b1eb08d0f87eab2943dac2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method inhibits the demon in the search tree below the current position. <a href="classoperations__research_1_1_demon.html#a0c1ff1e86b1eb08d0f87eab2943dac2a">More...</a><br /></td></tr>
<tr class="separator:a0c1ff1e86b1eb08d0f87eab2943dac2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2baabc490b7cd5aa80136e07b358cb21"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_demon.html#a2baabc490b7cd5aa80136e07b358cb21">desinhibit</a> (<a class="el" href="classoperations__research_1_1_solver.html">Solver</a> *const s)</td></tr>
<tr class="memdesc:a2baabc490b7cd5aa80136e07b358cb21"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method un-inhibits the demon that was previously inhibited. <a href="classoperations__research_1_1_demon.html#a2baabc490b7cd5aa80136e07b358cb21">More...</a><br /></td></tr>
<tr class="separator:a2baabc490b7cd5aa80136e07b358cb21"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a18542ce967b086b67c5b0e2b1c025bcf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a18542ce967b086b67c5b0e2b1c025bcf">&#9670;&nbsp;</a></span>Demon()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_demon.html">Demon</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This indicates the priority of a demon. </p>
<p>Immediate demons are treated separately and corresponds to variables. </p>
<p class="definition">Definition at line <a class="el" href="constraint__solver_8h_source.html#l03307">3307</a> of file <a class="el" href="constraint__solver_8h_source.html">constraint_solver.h</a>.</p>
</div>
</div>
<a id="a5c1d752bf5b8c6e57bd7defbdbc3e0d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c1d752bf5b8c6e57bd7defbdbc3e0d8">&#9670;&nbsp;</a></span>~Demon()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">~<a class="el" href="classoperations__research_1_1_demon.html">Demon</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="constraint__solver_8h_source.html#l03308">3308</a> of file <a class="el" href="constraint__solver_8h_source.html">constraint_solver.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aed804747c45a7e1caf81461f9e45dd91"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed804747c45a7e1caf81461f9e45dd91">&#9670;&nbsp;</a></span>DebugString()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::string DebugString </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reimplemented from <a class="el" href="classoperations__research_1_1_base_object.html#a8eba5d533fa9df4617c1868d3ec2afc4">BaseObject</a>.</p>
<p>Reimplemented in <a class="el" href="classoperations__research_1_1_delayed_call_method2.html#aed804747c45a7e1caf81461f9e45dd91">DelayedCallMethod2&lt; T, P, Q &gt;</a>, <a class="el" href="classoperations__research_1_1_delayed_call_method1.html#aed804747c45a7e1caf81461f9e45dd91">DelayedCallMethod1&lt; T, P &gt;</a>, <a class="el" href="classoperations__research_1_1_delayed_call_method0.html#aed804747c45a7e1caf81461f9e45dd91">DelayedCallMethod0&lt; T &gt;</a>, <a class="el" href="classoperations__research_1_1_call_method3.html#aed804747c45a7e1caf81461f9e45dd91">CallMethod3&lt; T, P, Q, R &gt;</a>, <a class="el" href="classoperations__research_1_1_call_method2.html#aed804747c45a7e1caf81461f9e45dd91">CallMethod2&lt; T, P, Q &gt;</a>, <a class="el" href="classoperations__research_1_1_call_method1.html#aed804747c45a7e1caf81461f9e45dd91">CallMethod1&lt; T, P &gt;</a>, <a class="el" href="classoperations__research_1_1_call_method0.html#aed804747c45a7e1caf81461f9e45dd91">CallMethod0&lt; T &gt;</a>, <a class="el" href="class_swig_director___demon.html#a8eba5d533fa9df4617c1868d3ec2afc4">SwigDirector_Demon</a>, and <a class="el" href="class_swig_director___demon.html#a764be64f3029f8b8e23511061d8de355">SwigDirector_Demon</a>.</p>
<p class="definition">Definition at line <a class="el" href="constraint__solver_8cc_source.html#l00200">200</a> of file <a class="el" href="constraint__solver_8cc_source.html">constraint_solver.cc</a>.</p>
</div>
</div>
<a id="a2baabc490b7cd5aa80136e07b358cb21"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2baabc490b7cd5aa80136e07b358cb21">&#9670;&nbsp;</a></span>desinhibit()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void desinhibit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classoperations__research_1_1_solver.html">Solver</a> *const&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This method un-inhibits the demon that was previously inhibited. </p>
<p class="definition">Definition at line <a class="el" href="constraint__solver_8cc_source.html#l00208">208</a> of file <a class="el" href="constraint__solver_8cc_source.html">constraint_solver.cc</a>.</p>
</div>
</div>
<a id="a0c1ff1e86b1eb08d0f87eab2943dac2a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c1ff1e86b1eb08d0f87eab2943dac2a">&#9670;&nbsp;</a></span>inhibit()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void inhibit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classoperations__research_1_1_solver.html">Solver</a> *const&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This method inhibits the demon in the search tree below the current position. </p>
<p class="definition">Definition at line <a class="el" href="constraint__solver_8cc_source.html#l00202">202</a> of file <a class="el" href="constraint__solver_8cc_source.html">constraint_solver.cc</a>.</p>
</div>
</div>
<a id="ae47aecad15d101db52a7d6bd114565d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae47aecad15d101db52a7d6bd114565d3">&#9670;&nbsp;</a></span>priority()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_solver.html#a293233c46e5eaa308f65c7c2350553f7">Solver::DemonPriority</a> priority </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This method returns the priority of the demon. </p>
<p>Usually a demon is fast, slow or normal. Immediate demons are reserved for internal use to maintain variables. </p>
<p>Reimplemented in <a class="el" href="classoperations__research_1_1_delayed_call_method2.html#a0a34701cff1b1ac2fabd11e27c7cebc9">DelayedCallMethod2&lt; T, P, Q &gt;</a>, <a class="el" href="classoperations__research_1_1_delayed_call_method1.html#a0a34701cff1b1ac2fabd11e27c7cebc9">DelayedCallMethod1&lt; T, P &gt;</a>, <a class="el" href="classoperations__research_1_1_delayed_call_method0.html#a0a34701cff1b1ac2fabd11e27c7cebc9">DelayedCallMethod0&lt; T &gt;</a>, <a class="el" href="class_swig_director___demon.html#a61b6e4481cb6e9de147448ee116abca5">SwigDirector_Demon</a>, and <a class="el" href="class_swig_director___demon.html#acd0bad5695abf935e6d24866143d3930">SwigDirector_Demon</a>.</p>
<p class="definition">Definition at line <a class="el" href="constraint__solver_8cc_source.html#l00196">196</a> of file <a class="el" href="constraint__solver_8cc_source.html">constraint_solver.cc</a>.</p>
</div>
</div>
<a id="aff915cd1c182d7e7ce5c9d15e9ae1da7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff915cd1c182d7e7ce5c9d15e9ae1da7">&#9670;&nbsp;</a></span>Run()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void Run </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classoperations__research_1_1_solver.html">Solver</a> *const&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This is the main callback of the demon. </p>
<p>Implemented in <a class="el" href="classoperations__research_1_1_delayed_call_method2.html#ac863f0fdd6a476ca003c99f58f14e623">DelayedCallMethod2&lt; T, P, Q &gt;</a>, <a class="el" href="classoperations__research_1_1_delayed_call_method1.html#ac863f0fdd6a476ca003c99f58f14e623">DelayedCallMethod1&lt; T, P &gt;</a>, <a class="el" href="classoperations__research_1_1_delayed_call_method0.html#ac863f0fdd6a476ca003c99f58f14e623">DelayedCallMethod0&lt; T &gt;</a>, <a class="el" href="classoperations__research_1_1_call_method3.html#ac863f0fdd6a476ca003c99f58f14e623">CallMethod3&lt; T, P, Q, R &gt;</a>, <a class="el" href="classoperations__research_1_1_call_method2.html#ac863f0fdd6a476ca003c99f58f14e623">CallMethod2&lt; T, P, Q &gt;</a>, <a class="el" href="classoperations__research_1_1_call_method1.html#ac863f0fdd6a476ca003c99f58f14e623">CallMethod1&lt; T, P &gt;</a>, <a class="el" href="classoperations__research_1_1_call_method0.html#ac863f0fdd6a476ca003c99f58f14e623">CallMethod0&lt; T &gt;</a>, <a class="el" href="class_swig_director___demon.html#a7a5af0b2d337197fef796e0a19100f54">SwigDirector_Demon</a>, and <a class="el" href="class_swig_director___demon.html#ac3d083a68bb17cd40db47fea66e692f3">SwigDirector_Demon</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="constraint__solver_8h_source.html">constraint_solver.h</a></li>
<li><a class="el" href="constraint__solver_8cc_source.html">constraint_solver.cc</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.18-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceoperations__research.html">operations_research</a></li><li class="navelem"><a class="el" href="classoperations__research_1_1_demon.html">Demon</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.9.1 </li>
</ul>
</div>
</body>
</html>