Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 54cac1c2268db633d66eeff1b4faa585 > files > 449

frepple-doc-0.8.1-3.fc15.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>C++ API frePPLe: frepple::SolverMRP Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="../styles.css" rel="stylesheet"  type="text/css">
</head>
<body>
<div id="container">

<div id="menubar"> 
<div id="logo" align="center">
<br/><img src='../frepple.bmp' alt="frepple" /><br/>
<a href='http://www.frepple.com/'>
<strong>a Free<br/>Production Planning<br/>Library</strong>
</a>
</div>
<div id="menu">
<br/>
<h3><a href='../Main/HomePage.html'>Main</a></h3>
<h3><a href='../UI/Main.html'>User Manual</a></h3>
<h3><a href='../Tutorial/Main.html'>Tutorial</a></h3>
<h3><a href='../Frepple/Main.html'>Reference Manual</a></h3>
<h3><a href='../Main/FAQ.html'>FAQ</a></h3>
<h3><a href='index.html'>C++ API</a></h3>
<br/>
</div>  
</div>

<div id="content">
<br/>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="classes.html"><span>Class&nbsp;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="a00256.html">frepple</a>::<a class="el" href="a00173.html">SolverMRP</a>
  </div>
</div>
<div class="contents">
<h1>frepple::SolverMRP Class Reference</h1><!-- doxytag: class="frepple::SolverMRP" --><!-- doxytag: inherits="frepple::Solver" -->
<p>This solver implements a heuristic algorithm for planning demands.  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="a00239_source.html">solver.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for frepple::SolverMRP:</div>
<div class="dynsection">
<div class="center"><img src="a00540.png" border="0" usemap="#frepple_1_1_solver_m_r_p_inherit__map" alt="Inheritance graph"/></div>
<map name="frepple_1_1_solver_m_r_p_inherit__map" id="frepple_1_1_solver_m_r_p_inherit__map">
<area shape="rect" id="node2" href="a00171.html" title="This class is an implementation of the &quot;visitor&quot; design pattern. It is..." alt="" coords="248,238,349,266"/>
<area shape="rect" id="node4" href="a00085.html" title="frepple::utils::HasName\&lt; Solver \&gt;" alt="" coords="191,161,407,189"/>
<area shape="rect" id="node6" href="a00119.html" title="Class NonCopyable is a base class. Derive your own class from it when you want to..." alt="" coords="5,83,181,111"/>
<area shape="rect" id="node8" href="a00182.html" title="This class represents a node in the tree." alt="" coords="205,83,392,111"/>
<area shape="rect" id="node10" href="a00120.html" title="Object is the abstract base class for the main entities." alt="" coords="416,83,552,111"/>
<area shape="rect" id="node12" href="a00151.html" title="This is a base class for all Python extension types." alt="" coords="371,6,597,34"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="a00541.html">List of all members.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00174.html">SolverMRPdata</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This class is a helper class of the <a class="el" href="a00173.html" title="This solver implements a heuristic algorithm for planning demands.">SolverMRP</a> class.  <a href="a00174.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00175.html">State</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This class is used to store the solver status during the ask-reply calls of the solver.  <a href="a00175.html#_details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#ace591189b4cce0a842d7ca10a224988c">endElement</a> (<a class="el" href="a00186.html">XMLInput</a> &amp;pIn, const <a class="el" href="a00002.html">Attribute</a> &amp;pAttr, const <a class="el" href="a00047.html">DataElement</a> &amp;pElement)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual PyObject *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a7cde63ea91a5b9a65e2454093c160b70">getattro</a> (const <a class="el" href="a00002.html">Attribute</a> &amp;)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#afe90ff4ad851caa35b2e55b4bcd13ac8">getAutocommit</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a5af37d44aeae58f324d2b2b97eabef0f">getConstraints</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00179.html">TimePeriod</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a6cbfff22e0badfcd1bf5dd59b37ee4e8">getLazyDelay</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a3678855c17eb7320e0b7eb0066e416c4">getMaxParallel</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#aa79ce0df49103c6cc5088b161e79bda3">getPlanType</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a75ef102b24b5bc2f037c371141101176">getSize</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual const <a class="el" href="a00115.html">MetaClass</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#ae304221980e02fc4d5acca0618beddbb">getType</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00152.html">PythonFunction</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a1f39dd7ced78fa651731e05baa16fc0b">getUserExitBuffer</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00152.html">PythonFunction</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a14b1cb5f34384352cf0851e7ad5154ae">getUserExitDemand</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00152.html">PythonFunction</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#ad622af357dee0cea251769851ce25d15">getUserExitFlow</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00152.html">PythonFunction</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a1f5a9da34c0d59bcb2ef6c8fad5d2140">getUserExitOperation</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00152.html">PythonFunction</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#af2cab8daee66acd958c672860cf8cfa9">getUserExitResource</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a390ddc1912146f9b835d154f77dc2d05">isCapacityConstrained</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a4bc4f05f9f0d4e153dde779a8fd4154f">isConstrained</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a1e53acb4eafd521ea81a99f08e8e95ae">isFenceConstrained</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a984cf92a5d2fdfbfe91f3d349fd903b2">isLeadtimeConstrained</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a8abcb4e32ffb3663bb1cf42d94c96ddc">isMaterialConstrained</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a0ff1f4d1312dca29b36e01ac052643ae">setattro</a> (const <a class="el" href="a00002.html">Attribute</a> &amp;, const <a class="el" href="a00154.html">PythonObject</a> &amp;)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#ae951a19e8064a82cc153c007232ef699">setAutocommit</a> (const bool b)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a2a08ac5234b79aa2c1b2d846784f976c">setConstraints</a> (short i)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a30901c61445056059017ca8450a91587">setLazyDelay</a> (<a class="el" href="a00179.html">TimePeriod</a> l)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#ac65f4614ff1262897bebf56144ec4a4f">setMaxParallel</a> (int i)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#ae75727c286b4ab0b5fe71d6fb25fac56">setPlanType</a> (short b)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#aab43f9100d9214b09e084985ad74ed4a">setUserExitBuffer</a> (PyObject *p)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#aaff934ce3d755804b9bd48e54e9ebd3f">setUserExitBuffer</a> (const string &amp;n)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a2415120269473d8306fe307bee588fd1">setUserExitDemand</a> (PyObject *p)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#af09e81e3b2ea8c3f0c7b9022a617d146">setUserExitDemand</a> (const string &amp;n)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a38dc8408b30f216ccdcc5b359209ca27">setUserExitFlow</a> (PyObject *p)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#ad29440d03599171908fe82b63f97aab8">setUserExitFlow</a> (const string &amp;n)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a43f01241a8b9b53a0a66647f2b0a556a">setUserExitOperation</a> (PyObject *p)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#ab8793421e04af5750b8f21bf4bfd168d">setUserExitOperation</a> (const string &amp;n)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a24e5339a80fd51a2e9dac1368cc7833d">setUserExitResource</a> (PyObject *p)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#aa0727c098fbe25ba45cb0ba19e2d148e">setUserExitResource</a> (const string &amp;n)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#aa2c15022c8853a62bd83e4ab8a0902e5">solve</a> (void *v=NULL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a70364e4d12007366263a2b9e21cd0f71">SolverMRP</a> (const string &amp;n)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a8eefc9113d28d22731cbe1d3013f4948">writeElement</a> (<a class="el" href="a00189.html">XMLOutput</a> *, const <a class="el" href="a00096.html">Keyword</a> &amp;, <a class="el" href="a00257.html#a20c2c7e4c6b668e71c154ae3eb18f398">mode</a>=DEFAULT) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a3ac05fe2e045f824ad11d3d36f25e4a6">~SolverMRP</a> ()</td></tr>
<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static PyObject *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a68d0f5b398ced2a94c2495b09cdd2632">commit</a> (PyObject *, PyObject *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a3a53347a65ba93402d3d1de0b14ce0e1">demand_comparison</a> (const <a class="el" href="a00051.html">Demand</a> *, const <a class="el" href="a00051.html">Demand</a> *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a4789a0e47176fdf3dfdd30cc8965b08a">initialize</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static PyObject *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#aa1a936a6dab4db293a96509cafe6b3b6">solve</a> (PyObject *, PyObject *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static PyObject *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#aef91f162235173fcbd3a7e99c418a32c">undo</a> (PyObject *, PyObject *)</td></tr>
<tr><td colspan="2"><h2>Static Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a16373c09882eef654b42c433935356d3">CAPACITY</a> = 4</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a01576b564e09170b5537e1abad2f46f3">FENCE</a> = 8</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a3367b53a8d0ce95af1e3c8aa284bed66">LEADTIME</a> = 1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a053bfcd159ef9a2311ddb545fa32bd36">MATERIAL</a> = 2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="a00115.html">MetaClass</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a8b5bca7cd0d37393e1b20a5b08613a56">metadata</a></td></tr>
<tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#ab41595b46bdbc8b508b9d7dedad0362f">checkOperation</a> (<a class="el" href="a00125.html">OperationPlan</a> *, <a class="el" href="a00174.html">SolverMRPdata</a> &amp;data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a030da5fc169a8fe91c80f4d17e854d54">checkOperationCapacity</a> (<a class="el" href="a00125.html">OperationPlan</a> *, <a class="el" href="a00174.html">SolverMRPdata</a> &amp;)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a1be57e20c66257efcc51c61669bdec1c">checkOperationLeadtime</a> (<a class="el" href="a00125.html">OperationPlan</a> *, <a class="el" href="a00174.html">SolverMRPdata</a> &amp;, bool)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a45b15f36c3d23ab1ed15997e072f2153">scanExcess</a> (<a class="el" href="a00025.html">Command</a> *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a8552e53484b925c03fcb1d65efefc658">solve</a> (const <a class="el" href="a00051.html">Demand</a> *, void *=NULL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a77fb02a5ece53f1af485196a572f473c">solve</a> (const <a class="el" href="a00103.html">Load</a> *, void *=NULL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#afcb6c1c13399ef632d3eac4c21accd63">solve</a> (const <a class="el" href="a00158.html">ResourceInfinite</a> *, void *=NULL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#ac1008471ead60a51f3aca2b94464a3db">solve</a> (const <a class="el" href="a00156.html">Resource</a> *, void *=NULL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a07bb4bc46446999572f77d94b8c33b35">solve</a> (const <a class="el" href="a00065.html">Flow</a> *, void *=NULL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a54b16830f089156c69c901bb44aaf488">solve</a> (const <a class="el" href="a00012.html">BufferProcure</a> *, void *=NULL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a36f15b9cf822b9977b1a5f855274b698">solve</a> (const <a class="el" href="a00008.html">Buffer</a> *, void *=NULL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#aa96ce440189661df023927d5b8f6cb6c">solve</a> (const <a class="el" href="a00010.html">BufferInfinite</a> *, void *=NULL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a580fb211c927dc18df88fae9e7ce1c8d">solve</a> (const <a class="el" href="a00122.html">OperationAlternate</a> *, void *=NULL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#af2c3898fc34e77c303b54f2bf1d41ac6">solve</a> (const <a class="el" href="a00128.html">OperationRouting</a> *, void *=NULL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#aed1d08dd6ece530ed9229d463e31cca3">solve</a> (const <a class="el" href="a00121.html">Operation</a> *, void *=NULL)</td></tr>
<tr><td colspan="2"><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00174.html">SolverMRPdata</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#a2c81fc731c11b888376e05e8e6068ef8">commands</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html#aba7f9976dce31fdd088ac17aec600fd9">constrts</a></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>This solver implements a heuristic algorithm for planning demands. </p>
<p>One by one the demands are processed. The demand will consume step by step any upstream materials, respecting all constraints on its path.<br/>
 The solver supports all planning constraints as defined in <a class="el" href="a00171.html" title="This class is an implementation of the &quot;visitor&quot; design pattern. It is...">Solver</a> class.<br/>
 See the documentation of the different solve methods to understand the functionality in more detail.</p>
<p>The logging levels have the following meaning:</p>
<ul>
<li>0: Silent operation. Default logging level.</li>
<li>1: Show solver progress for each demand.</li>
<li>2: Show the complete ask&amp;reply communication of the solver.</li>
<li>3: Trace the status of all entities. </li>
</ul>

<p>Definition at line <a class="el" href="a00239_source.html#l00055">55</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a70364e4d12007366263a2b9e21cd0f71"></a><!-- doxytag: member="frepple::SolverMRP::SolverMRP" ref="a70364e4d12007366263a2b9e21cd0f71" args="(const string &amp;n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">frepple::SolverMRP::SolverMRP </td>
          <td>(</td>
          <td class="paramtype">const string &amp;&nbsp;</td>
          <td class="paramname"> <em>n</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Constructor. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00198">198</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a3ac05fe2e045f824ad11d3d36f25e4a6"></a><!-- doxytag: member="frepple::SolverMRP::~SolverMRP" ref="a3ac05fe2e045f824ad11d3d36f25e4a6" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual frepple::SolverMRP::~SolverMRP </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Destructor. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00203">203</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="ab41595b46bdbc8b508b9d7dedad0362f"></a><!-- doxytag: member="frepple::SolverMRP::checkOperation" ref="ab41595b46bdbc8b508b9d7dedad0362f" args="(OperationPlan *, SolverMRPdata &amp;data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool frepple::SolverMRP::checkOperation </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00125.html">OperationPlan</a> *&nbsp;</td>
          <td class="paramname"> <em>opplan</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00174.html">SolverMRP::SolverMRPdata</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This function will check all constraints for an operationplan and propagate it upstream. The check does NOT check eventual sub operationplans.<br/>
 The return value is a flag whether the operationplan is acceptable (sometimes in reduced quantity) or not. </p>

<p>Definition at line <a class="el" href="a00244_source.html#l00075">75</a> of file <a class="el" href="a00244_source.html">solveroperation.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a030da5fc169a8fe91c80f4d17e854d54"></a><!-- doxytag: member="frepple::SolverMRP::checkOperationCapacity" ref="a030da5fc169a8fe91c80f4d17e854d54" args="(OperationPlan *, SolverMRPdata &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::checkOperationCapacity </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00125.html">OperationPlan</a> *&nbsp;</td>
          <td class="paramname"> <em>opplan</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00174.html">SolverMRP::SolverMRPdata</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Verifies whether this operationplan violates the capacity constraint.<br/>
 In case it does the operationplan is moved to an earlier or later feasible date. </p>

<p>Definition at line <a class="el" href="a00244_source.html#l00035">35</a> of file <a class="el" href="a00244_source.html">solveroperation.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a1be57e20c66257efcc51c61669bdec1c"></a><!-- doxytag: member="frepple::SolverMRP::checkOperationLeadtime" ref="a1be57e20c66257efcc51c61669bdec1c" args="(OperationPlan *, SolverMRPdata &amp;, bool)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool frepple::SolverMRP::checkOperationLeadtime </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00125.html">OperationPlan</a> *&nbsp;</td>
          <td class="paramname"> <em>opplan</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00174.html">SolverMRP::SolverMRPdata</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>extra</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Verifies whether this operationplan violates the leadtime constraints. </p>

<p>Definition at line <a class="el" href="a00244_source.html#l00308">308</a> of file <a class="el" href="a00244_source.html">solveroperation.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a68d0f5b398ced2a94c2495b09cdd2632"></a><!-- doxytag: member="frepple::SolverMRP::commit" ref="a68d0f5b398ced2a94c2495b09cdd2632" args="(PyObject *, PyObject *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PyObject * frepple::SolverMRP::commit </td>
          <td>(</td>
          <td class="paramtype">PyObject *&nbsp;</td>
          <td class="paramname"> <em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">PyObject *&nbsp;</td>
          <td class="paramname"> <em>args</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Python method for commiting the plan changes. </p>

<p>Definition at line <a class="el" href="a00245_source.html#l00369">369</a> of file <a class="el" href="a00245_source.html">solverplan.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a3a53347a65ba93402d3d1de0b14ce0e1"></a><!-- doxytag: member="frepple::SolverMRP::demand_comparison" ref="a3a53347a65ba93402d3d1de0b14ce0e1" args="(const Demand *, const Demand *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool frepple::SolverMRP::demand_comparison </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00051.html">Demand</a> *&nbsp;</td>
          <td class="paramname"> <em>l1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00051.html">Demand</a> *&nbsp;</td>
          <td class="paramname"> <em>l2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This function defines the order in which the demands are being planned.<br/>
 The following sorting criteria are appplied in order:</p>
<ul>
<li>demand priority: smaller priorities first</li>
<li>demand due date: earlier due dates first</li>
<li>demand quantity: smaller quantities first </li>
</ul>

<p>Definition at line <a class="el" href="a00245_source.html#l00068">68</a> of file <a class="el" href="a00245_source.html">solverplan.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="ace591189b4cce0a842d7ca10a224988c"></a><!-- doxytag: member="frepple::SolverMRP::endElement" ref="ace591189b4cce0a842d7ca10a224988c" args="(XMLInput &amp;pIn, const Attribute &amp;pAttr, const DataElement &amp;pElement)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::endElement </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00186.html">XMLInput</a> &amp;&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00002.html">Attribute</a> &amp;&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00047.html">DataElement</a> &amp;&nbsp;</td>
          <td class="paramname"></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Called while restoring the model from an XML-file.<br/>
 This is called when the corresponding close element tag is encountered, and the Data() member of pElement is valid. </p>

<p>Reimplemented from <a class="el" href="a00171.html#ab301716662e85f733e8529d305bcc259">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00245_source.html#l00257">257</a> of file <a class="el" href="a00245_source.html">solverplan.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a7cde63ea91a5b9a65e2454093c160b70"></a><!-- doxytag: member="frepple::SolverMRP::getattro" ref="a7cde63ea91a5b9a65e2454093c160b70" args="(const Attribute &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PyObject * frepple::SolverMRP::getattro </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00002.html">Attribute</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>attr</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Default getattro method. <br/>
 Subclasses are expected to implement an override if the type supports gettattro. </p>

<p>Reimplemented from <a class="el" href="a00171.html#adfd5b71beb06efcdd5f382734df6dcd9">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00245_source.html#l00282">282</a> of file <a class="el" href="a00245_source.html">solverplan.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="afe90ff4ad851caa35b2e55b4bcd13ac8"></a><!-- doxytag: member="frepple::SolverMRP::getAutocommit" ref="afe90ff4ad851caa35b2e55b4bcd13ac8" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool frepple::SolverMRP::getAutocommit </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return whether or not we automatically commit the changes after planning a demand. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00343">343</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a5af37d44aeae58f324d2b2b97eabef0f"></a><!-- doxytag: member="frepple::SolverMRP::getConstraints" ref="a5af37d44aeae58f324d2b2b97eabef0f" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">short frepple::SolverMRP::getConstraints </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the constraints considered by the solve. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00252">252</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a6cbfff22e0badfcd1bf5dd59b37ee4e8"></a><!-- doxytag: member="frepple::SolverMRP::getLazyDelay" ref="a6cbfff22e0badfcd1bf5dd59b37ee4e8" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00179.html">TimePeriod</a> frepple::SolverMRP::getLazyDelay </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return the time increment between requests when the answered reply date isn't usable. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00331">331</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a3678855c17eb7320e0b7eb0066e416c4"></a><!-- doxytag: member="frepple::SolverMRP::getMaxParallel" ref="a3678855c17eb7320e0b7eb0066e416c4" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int frepple::SolverMRP::getMaxParallel </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return the number of threads used for planning. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00321">321</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa79ce0df49103c6cc5088b161e79bda3"></a><!-- doxytag: member="frepple::SolverMRP::getPlanType" ref="aa79ce0df49103c6cc5088b161e79bda3" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">short frepple::SolverMRP::getPlanType </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the plan type:</p>
<ul>
<li>1: Constrained plan.<br/>
 This plan doesn't not violate any constraints.<br/>
 In case of material or capacity shortages the demand is delayed or planned short.</li>
<li>2: Unconstrained plan with alternate search.<br/>
 This unconstrained plan leaves material, capacity and operation problems when shortages are found. Availability is searched across alternates and the remaining shortage is shown on the primary alternate.<br/>
 The demand is always fully met on time.</li>
<li>3: Unconstrained plan without alternate search.<br/>
 This unconstrained plan leaves material, capacity and operation problems when shortages are found. It doesn't evaluate availability on alternates.<br/>
 The demand is always fully met on time. </li>
</ul>

<p>Definition at line <a class="el" href="a00239_source.html#l00293">293</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a75ef102b24b5bc2f037c371141101176"></a><!-- doxytag: member="frepple::SolverMRP::getSize" ref="a75ef102b24b5bc2f037c371141101176" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual size_t frepple::SolverMRP::getSize </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return the memory size of the object in bytes. </p>

<p>Implements <a class="el" href="a00120.html#ae381655a0e700d1e0d9ef72379792872">frepple::utils::Object</a>.</p>

<p>Definition at line <a class="el" href="a00239_source.html#l00213">213</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="ae304221980e02fc4d5acca0618beddbb"></a><!-- doxytag: member="frepple::SolverMRP::getType" ref="ae304221980e02fc4d5acca0618beddbb" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const <a class="el" href="a00115.html">MetaClass</a>&amp; frepple::SolverMRP::getType </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This returns the type information on the object, a bit similar to the standard type_info information. </p>

<p>Reimplemented from <a class="el" href="a00171.html#aa616e2bc3ea78ac9fbf467544032fdc5">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00239_source.html#l00211">211</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a1f39dd7ced78fa651731e05baa16fc0b"></a><!-- doxytag: member="frepple::SolverMRP::getUserExitBuffer" ref="a1f39dd7ced78fa651731e05baa16fc0b" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00152.html">PythonFunction</a> frepple::SolverMRP::getUserExitBuffer </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return the Python function that is called before solving a buffer. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00374">374</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a14b1cb5f34384352cf0851e7ad5154ae"></a><!-- doxytag: member="frepple::SolverMRP::getUserExitDemand" ref="a14b1cb5f34384352cf0851e7ad5154ae" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00152.html">PythonFunction</a> frepple::SolverMRP::getUserExitDemand </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return the Python function that is called before solving a demand. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00365">365</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="ad622af357dee0cea251769851ce25d15"></a><!-- doxytag: member="frepple::SolverMRP::getUserExitFlow" ref="ad622af357dee0cea251769851ce25d15" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00152.html">PythonFunction</a> frepple::SolverMRP::getUserExitFlow </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return the Python function that is called before solving a flow. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00356">356</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a1f5a9da34c0d59bcb2ef6c8fad5d2140"></a><!-- doxytag: member="frepple::SolverMRP::getUserExitOperation" ref="a1f5a9da34c0d59bcb2ef6c8fad5d2140" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00152.html">PythonFunction</a> frepple::SolverMRP::getUserExitOperation </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return the Python function that is called before solving a operation. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00392">392</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="af2cab8daee66acd958c672860cf8cfa9"></a><!-- doxytag: member="frepple::SolverMRP::getUserExitResource" ref="af2cab8daee66acd958c672860cf8cfa9" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00152.html">PythonFunction</a> frepple::SolverMRP::getUserExitResource </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return the Python function that is called before solving a resource. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00383">383</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a4789a0e47176fdf3dfdd30cc8965b08a"></a><!-- doxytag: member="frepple::SolverMRP::initialize" ref="a4789a0e47176fdf3dfdd30cc8965b08a" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int frepple::SolverMRP::initialize </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Reimplemented from <a class="el" href="a00171.html#a9410da1315fa0ea25e61b7e867c34bac">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00245_source.html#l00054">54</a> of file <a class="el" href="a00245_source.html">solverplan.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a390ddc1912146f9b835d154f77dc2d05"></a><!-- doxytag: member="frepple::SolverMRP::isCapacityConstrained" ref="a390ddc1912146f9b835d154f77dc2d05" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool frepple::SolverMRP::isCapacityConstrained </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns true if the solver respects capacity constraints. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00271">271</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a4bc4f05f9f0d4e153dde779a8fd4154f"></a><!-- doxytag: member="frepple::SolverMRP::isConstrained" ref="a4bc4f05f9f0d4e153dde779a8fd4154f" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool frepple::SolverMRP::isConstrained </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns true if any constraint is relevant for the solver. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00274">274</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a1e53acb4eafd521ea81a99f08e8e95ae"></a><!-- doxytag: member="frepple::SolverMRP::isFenceConstrained" ref="a1e53acb4eafd521ea81a99f08e8e95ae" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool frepple::SolverMRP::isFenceConstrained </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns true if this solver respects the operation release fences. The solver isn't allowed to create any operation plans within the release fence. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00258">258</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a984cf92a5d2fdfbfe91f3d349fd903b2"></a><!-- doxytag: member="frepple::SolverMRP::isLeadtimeConstrained" ref="a984cf92a5d2fdfbfe91f3d349fd903b2" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool frepple::SolverMRP::isLeadtimeConstrained </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns true if the solver respects the current time of the plan. The solver isn't allowed to create any operation plans in the past. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00263">263</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a8abcb4e32ffb3663bb1cf42d94c96ddc"></a><!-- doxytag: member="frepple::SolverMRP::isMaterialConstrained" ref="a8abcb4e32ffb3663bb1cf42d94c96ddc" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool frepple::SolverMRP::isMaterialConstrained </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns true if the solver respects the material procurement constraints on procurement buffers. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00268">268</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a45b15f36c3d23ab1ed15997e072f2153"></a><!-- doxytag: member="frepple::SolverMRP::scanExcess" ref="a45b15f36c3d23ab1ed15997e072f2153" args="(Command *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::scanExcess </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00025.html">Command</a> *&nbsp;</td>
          <td class="paramname"> <em>cmd</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Scan the operationplans that are about to be committed to verify that they are not creating any excess. </p>

<p>Definition at line <a class="el" href="a00241_source.html#l00270">270</a> of file <a class="el" href="a00241_source.html">solverdemand.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a0ff1f4d1312dca29b36e01ac052643ae"></a><!-- doxytag: member="frepple::SolverMRP::setattro" ref="a0ff1f4d1312dca29b36e01ac052643ae" args="(const Attribute &amp;, const PythonObject &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int frepple::SolverMRP::setattro </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00002.html">Attribute</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>attr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00154.html">PythonObject</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>field</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Default setattro method. <br/>
 Subclasses are expected to implement an override if the type supports settattro. </p>

<p>Reimplemented from <a class="el" href="a00171.html#a238d13fba4132fee44d612f3e2d5b335">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00245_source.html#l00306">306</a> of file <a class="el" href="a00245_source.html">solverplan.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="ae951a19e8064a82cc153c007232ef699"></a><!-- doxytag: member="frepple::SolverMRP::setAutocommit" ref="ae951a19e8064a82cc153c007232ef699" args="(const bool b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::setAutocommit </td>
          <td>(</td>
          <td class="paramtype">const bool&nbsp;</td>
          <td class="paramname"> <em>b</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Update whether or not we automatically commit the changes after planning a demand. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00347">347</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a2a08ac5234b79aa2c1b2d846784f976c"></a><!-- doxytag: member="frepple::SolverMRP::setConstraints" ref="a2a08ac5234b79aa2c1b2d846784f976c" args="(short i)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::setConstraints </td>
          <td>(</td>
          <td class="paramtype">short&nbsp;</td>
          <td class="paramname"> <em>i</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Update the constraints to be considered by this solver. This field may not be applicable for all solvers. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00249">249</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a30901c61445056059017ca8450a91587"></a><!-- doxytag: member="frepple::SolverMRP::setLazyDelay" ref="a30901c61445056059017ca8450a91587" args="(TimePeriod l)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::setLazyDelay </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00179.html">TimePeriod</a>&nbsp;</td>
          <td class="paramname"> <em>l</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Update the time increment between requests when the answered reply date isn't usable. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00335">335</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="ac65f4614ff1262897bebf56144ec4a4f"></a><!-- doxytag: member="frepple::SolverMRP::setMaxParallel" ref="ac65f4614ff1262897bebf56144ec4a4f" args="(int i)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::setMaxParallel </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>i</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Update the number of parallel solver threads.<br/>
 The default value depends on whether the solver is run in verbose mode or not:</p>
<ul>
<li>In normal mode the solver uses as many threads as specified by the environment variable NUMBER_OF_PROCESSORS.</li>
<li>In verbose mode the solver runs in a single thread to avoid mangling the debugging output of different threads. </li>
</ul>

<p>Definition at line <a class="el" href="a00239_source.html#l00314">314</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="ae75727c286b4ab0b5fe71d6fb25fac56"></a><!-- doxytag: member="frepple::SolverMRP::setPlanType" ref="ae75727c286b4ab0b5fe71d6fb25fac56" args="(short b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::setPlanType </td>
          <td>(</td>
          <td class="paramtype">short&nbsp;</td>
          <td class="paramname"> <em>b</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="a00239_source.html#l00295">295</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="aab43f9100d9214b09e084985ad74ed4a"></a><!-- doxytag: member="frepple::SolverMRP::setUserExitBuffer" ref="aab43f9100d9214b09e084985ad74ed4a" args="(PyObject *p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::setUserExitBuffer </td>
          <td>(</td>
          <td class="paramtype">PyObject *&nbsp;</td>
          <td class="paramname"> <em>p</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Specify a Python function that is called before solving a buffer. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00371">371</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="aaff934ce3d755804b9bd48e54e9ebd3f"></a><!-- doxytag: member="frepple::SolverMRP::setUserExitBuffer" ref="aaff934ce3d755804b9bd48e54e9ebd3f" args="(const string &amp;n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::setUserExitBuffer </td>
          <td>(</td>
          <td class="paramtype">const string &amp;&nbsp;</td>
          <td class="paramname"> <em>n</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Specify a Python function that is called before solving a buffer. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00368">368</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a2415120269473d8306fe307bee588fd1"></a><!-- doxytag: member="frepple::SolverMRP::setUserExitDemand" ref="a2415120269473d8306fe307bee588fd1" args="(PyObject *p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::setUserExitDemand </td>
          <td>(</td>
          <td class="paramtype">PyObject *&nbsp;</td>
          <td class="paramname"> <em>p</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Specify a Python function that is called before solving a demand. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00362">362</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="af09e81e3b2ea8c3f0c7b9022a617d146"></a><!-- doxytag: member="frepple::SolverMRP::setUserExitDemand" ref="af09e81e3b2ea8c3f0c7b9022a617d146" args="(const string &amp;n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::setUserExitDemand </td>
          <td>(</td>
          <td class="paramtype">const string &amp;&nbsp;</td>
          <td class="paramname"> <em>n</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Specify a Python function that is called before solving a demand. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00359">359</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a38dc8408b30f216ccdcc5b359209ca27"></a><!-- doxytag: member="frepple::SolverMRP::setUserExitFlow" ref="a38dc8408b30f216ccdcc5b359209ca27" args="(PyObject *p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::setUserExitFlow </td>
          <td>(</td>
          <td class="paramtype">PyObject *&nbsp;</td>
          <td class="paramname"> <em>p</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Specify a Python function that is called before solving a flow. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00353">353</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="ad29440d03599171908fe82b63f97aab8"></a><!-- doxytag: member="frepple::SolverMRP::setUserExitFlow" ref="ad29440d03599171908fe82b63f97aab8" args="(const string &amp;n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::setUserExitFlow </td>
          <td>(</td>
          <td class="paramtype">const string &amp;&nbsp;</td>
          <td class="paramname"> <em>n</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Specify a Python function that is called before solving a flow. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00350">350</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a43f01241a8b9b53a0a66647f2b0a556a"></a><!-- doxytag: member="frepple::SolverMRP::setUserExitOperation" ref="a43f01241a8b9b53a0a66647f2b0a556a" args="(PyObject *p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::setUserExitOperation </td>
          <td>(</td>
          <td class="paramtype">PyObject *&nbsp;</td>
          <td class="paramname"> <em>p</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Specify a Python function that is called before solving a operation. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00389">389</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="ab8793421e04af5750b8f21bf4bfd168d"></a><!-- doxytag: member="frepple::SolverMRP::setUserExitOperation" ref="ab8793421e04af5750b8f21bf4bfd168d" args="(const string &amp;n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::setUserExitOperation </td>
          <td>(</td>
          <td class="paramtype">const string &amp;&nbsp;</td>
          <td class="paramname"> <em>n</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Specify a Python function that is called before solving a operation. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00386">386</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a24e5339a80fd51a2e9dac1368cc7833d"></a><!-- doxytag: member="frepple::SolverMRP::setUserExitResource" ref="a24e5339a80fd51a2e9dac1368cc7833d" args="(PyObject *p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::setUserExitResource </td>
          <td>(</td>
          <td class="paramtype">PyObject *&nbsp;</td>
          <td class="paramname"> <em>p</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Specify a Python function that is called before solving a resource. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00380">380</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa0727c098fbe25ba45cb0ba19e2d148e"></a><!-- doxytag: member="frepple::SolverMRP::setUserExitResource" ref="aa0727c098fbe25ba45cb0ba19e2d148e" args="(const string &amp;n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::setUserExitResource </td>
          <td>(</td>
          <td class="paramtype">const string &amp;&nbsp;</td>
          <td class="paramname"> <em>n</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Specify a Python function that is called before solving a resource. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00377">377</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa1a936a6dab4db293a96509cafe6b3b6"></a><!-- doxytag: member="frepple::SolverMRP::solve" ref="aa1a936a6dab4db293a96509cafe6b3b6" args="(PyObject *, PyObject *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PyObject * frepple::SolverMRP::solve </td>
          <td>(</td>
          <td class="paramtype">PyObject *&nbsp;</td>
          <td class="paramname"> <em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">PyObject *&nbsp;</td>
          <td class="paramname"> <em>args</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Python method for running the solver. </p>

<p>Reimplemented from <a class="el" href="a00171.html#a6a52d1bf3db700368c4ed5ca9de8d296">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00245_source.html#l00332">332</a> of file <a class="el" href="a00245_source.html">solverplan.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="aa2c15022c8853a62bd83e4ab8a0902e5"></a><!-- doxytag: member="frepple::SolverMRP::solve" ref="aa2c15022c8853a62bd83e4ab8a0902e5" args="(void *v=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::solve </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>v</em> = <code>NULL</code></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This is the main solver method that will appropriately call the other solve methods.<br/>
 The demands in the model will all be sorted with the criteria defined in the <a class="el" href="a00173.html#a3a53347a65ba93402d3d1de0b14ce0e1">demand_comparison()</a> method. For each of demand the solve(Demand*) method is called to plan it. </p>

<p>Implements <a class="el" href="a00171.html#aa24859d5719ee02c89188323f9c47e56">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00245_source.html#l00172">172</a> of file <a class="el" href="a00245_source.html">solverplan.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a8552e53484b925c03fcb1d65efefc658"></a><!-- doxytag: member="frepple::SolverMRP::solve" ref="a8552e53484b925c03fcb1d65efefc658" args="(const Demand *, void *=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::solve </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00051.html">Demand</a> *&nbsp;</td>
          <td class="paramname"> <em>l</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>v</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Behavior of this solver method:</p>
<ul>
<li>Respects the following demand planning policies:<br/>
 1) Maximum allowed lateness 2) Minimum shipment quantity This method is normally called from within the main solve method, but it can also be called independently to plan a certain demand. <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00173.html#aed1d08dd6ece530ed9229d463e31cca3">solve</a> </dd></dl>
</li>
</ul>

<p>Reimplemented from <a class="el" href="a00171.html#a156a608f426159a7cda58117a713a66c">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00241_source.html#l00036">36</a> of file <a class="el" href="a00241_source.html">solverdemand.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a77fb02a5ece53f1af485196a572f473c"></a><!-- doxytag: member="frepple::SolverMRP::solve" ref="a77fb02a5ece53f1af485196a572f473c" args="(const Load *, void *=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::solve </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00103.html">Load</a> *&nbsp;</td>
          <td class="paramname"> <em>l</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>v</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Behavior of this solver method:</p>
<ul>
<li>This method simply passes on the request to the referenced resource. With the current model structure it could easily be avoided (and thus gain a bit in performance), but we wanted to include it anyway to make the solver as generic and future-proof as possible. <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00173.html#a030da5fc169a8fe91c80f4d17e854d54">checkOperationCapacity</a> </dd></dl>
</li>
</ul>

<p>Reimplemented from <a class="el" href="a00171.html#af219e2dfe374f1e5f6198cf59a473b30">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00243_source.html#l00041">41</a> of file <a class="el" href="a00243_source.html">solverload.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="afcb6c1c13399ef632d3eac4c21accd63"></a><!-- doxytag: member="frepple::SolverMRP::solve" ref="afcb6c1c13399ef632d3eac4c21accd63" args="(const ResourceInfinite *, void *=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::solve </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00158.html">ResourceInfinite</a> *&nbsp;</td>
          <td class="paramname"> <em>res</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>v</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Behavior of this solver method:</p>
<ul>
<li>Always return OK. </li>
</ul>

<p>Reimplemented from <a class="el" href="a00171.html#ae69201536d38f7512d9e3e38c7e9c5c8">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00247_source.html#l00463">463</a> of file <a class="el" href="a00247_source.html">solverresource.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="ac1008471ead60a51f3aca2b94464a3db"></a><!-- doxytag: member="frepple::SolverMRP::solve" ref="ac1008471ead60a51f3aca2b94464a3db" args="(const Resource *, void *=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::solve </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00156.html">Resource</a> *&nbsp;</td>
          <td class="paramname"> <em>res</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>v</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Behavior of this solver method:</p>
<ul>
<li>The operationplan is checked for a capacity overload. When detected it is moved to an earlier date.</li>
<li>This move can be repeated until no capacity is found till a suitable time slot is found. If the fence and/or leadtime constraints are enabled they can restrict the feasible moving time.<br/>
 If a feasible timeslot is found, the method exits here.</li>
<li>If no suitable time slot can be found at all, the operation plan is put on its original date and we now try to move it to a feasible later date. Again, successive moves are possible till a suitable slot is found or till we reach the end of the horizon. The result of the search is returned as the answer-date to the solver.</li>
</ul>

<p>Reimplemented from <a class="el" href="a00171.html#a6ae179fd8274b46658ae51dd172850e8">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00247_source.html#l00036">36</a> of file <a class="el" href="a00247_source.html">solverresource.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a07bb4bc46446999572f77d94b8c33b35"></a><!-- doxytag: member="frepple::SolverMRP::solve" ref="a07bb4bc46446999572f77d94b8c33b35" args="(const Flow *, void *=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::solve </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00065.html">Flow</a> *&nbsp;</td>
          <td class="paramname"> <em>fl</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>v</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Behavior of this solver method:</p>
<ul>
<li>This method simply passes on the request to the referenced buffer. It is called from a solve(Operation*) method and passes on the control to a solve(Buffer*) method. <dl class="see"><dt><b>See also:</b></dt><dd>checkOperationMaterial </dd></dl>
</li>
</ul>

<p>Reimplemented from <a class="el" href="a00171.html#a0d0e44c5ccf65e0a3efd98d6fc969ba2">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00242_source.html#l00040">40</a> of file <a class="el" href="a00242_source.html">solverflow.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a54b16830f089156c69c901bb44aaf488"></a><!-- doxytag: member="frepple::SolverMRP::solve" ref="a54b16830f089156c69c901bb44aaf488" args="(const BufferProcure *, void *=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::solve </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00012.html">BufferProcure</a> *&nbsp;</td>
          <td class="paramname"> <em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>v</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Behavior of this solver method:</p>
<ul>
<li>When the inventory drops below the minimum inventory level, a new replenishment is triggered. The replenishment brings the inventory to the maximum level again.</li>
<li>The minimum and maximum inventory are soft-constraints. The actual inventory can go lower than the minimum or exceed the maximum.</li>
<li>The minimum, maximum and multiple size of the replenishment are hard constraints, and will always be respected.</li>
<li>A minimum and maximum interval between replenishment is also respected as a hard constraint.</li>
<li>No propagation to upstream buffers at all, even if a producing operation has been specified.</li>
<li>The minimum calendar isn't used by the solver.</li>
</ul>

<p>Reimplemented from <a class="el" href="a00171.html#ac42b050aa4bfc94e21f957cea88608a4">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00246_source.html#l00084">84</a> of file <a class="el" href="a00246_source.html">solverprocure.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a36f15b9cf822b9977b1a5f855274b698"></a><!-- doxytag: member="frepple::SolverMRP::solve" ref="a36f15b9cf822b9977b1a5f855274b698" args="(const Buffer *, void *=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::solve </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00008.html">Buffer</a> *&nbsp;</td>
          <td class="paramname"> <em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>v</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Behavior of this solver method:</p>
<ul>
<li>Consider 0 as the hard minimum limit. It is not possible to plan with a 'hard' safety stock reservation.</li>
<li>Minimum inventory is treated as a 'wish' inventory. When replenishing a buffer we try to satisfy the minimum target. If that turns out not to be possible we use whatever available supply for satisfying the demand first.</li>
<li>Planning for the minimum target is part of planning a demand. There is no planning run independent of demand to satisfy the minimum target.<br/>
 E.g. If a buffer has no demand on it, the solver won't try to replenish to the minimum target.<br/>
 E.g. If the minimum target increases after the latest date required for satisfying a certain demand that change will not be considered.</li>
<li>The solver completely ignores the maximum target.</li>
</ul>

<p>Reimplemented from <a class="el" href="a00171.html#afb6133fc6d0b98cfad750711657e18c9">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00240_source.html#l00042">42</a> of file <a class="el" href="a00240_source.html">solverbuffer.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="aa96ce440189661df023927d5b8f6cb6c"></a><!-- doxytag: member="frepple::SolverMRP::solve" ref="aa96ce440189661df023927d5b8f6cb6c" args="(const BufferInfinite *, void *=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::solve </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00010.html">BufferInfinite</a> *&nbsp;</td>
          <td class="paramname"> <em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>v</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Behavior of this solver method:</p>
<ul>
<li>No propagation to upstream buffers at all, even if a producing operation has been specified.</li>
<li>Always give an answer for the full quantity on the requested date. </li>
</ul>

<p>Reimplemented from <a class="el" href="a00171.html#a5bd70647cfd5fd0a5524837186b1e6bd">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00240_source.html#l00285">285</a> of file <a class="el" href="a00240_source.html">solverbuffer.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a580fb211c927dc18df88fae9e7ce1c8d"></a><!-- doxytag: member="frepple::SolverMRP::solve" ref="a580fb211c927dc18df88fae9e7ce1c8d" args="(const OperationAlternate *, void *=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::solve </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00122.html">OperationAlternate</a> *&nbsp;</td>
          <td class="paramname"> <em>oper</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>v</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Behavior of this solver method is:</p>
<ul>
<li>The solver loops through each alternate operation in order of priority. On each alternate operation, the solver will try to plan the quantity that hasn't been planned on higher priority alternates.</li>
<li>As a special case, operations with zero priority are skipped in the loop. These operations are considered to be temporarily unavailable.</li>
<li>The requested operation can be planned over multiple alternates. We don't garantuee that a request is planned using a single alternate operation.</li>
<li>The solver properly considers the quantity_per of all flows producing into the requested buffer, if such a buffer is specified. </li>
</ul>

<p>Reimplemented from <a class="el" href="a00171.html#a8e98f85c6f99fbda9ffda9f07f07fbdd">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00244_source.html#l00645">645</a> of file <a class="el" href="a00244_source.html">solveroperation.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="af2c3898fc34e77c303b54f2bf1d41ac6"></a><!-- doxytag: member="frepple::SolverMRP::solve" ref="af2c3898fc34e77c303b54f2bf1d41ac6" args="(const OperationRouting *, void *=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::solve </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00128.html">OperationRouting</a> *&nbsp;</td>
          <td class="paramname"> <em>oper</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>v</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Behavior of this solver method is:</p>
<ul>
<li>Asks each of the routing steps for the requested quantity, starting with the last routing step.<br/>
 The time requested for the operation is based on the start date of the next routing step. </li>
</ul>

<p></p>

<p>Reimplemented from <a class="el" href="a00171.html#a27bc758ece06d7859f20dbfa44ae543f">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00244_source.html#l00518">518</a> of file <a class="el" href="a00244_source.html">solveroperation.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="aed1d08dd6ece530ed9229d463e31cca3"></a><!-- doxytag: member="frepple::SolverMRP::solve" ref="aed1d08dd6ece530ed9229d463e31cca3" args="(const Operation *, void *=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::solve </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00121.html">Operation</a> *&nbsp;</td>
          <td class="paramname"> <em>oper</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>v</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Behavior of this solver method is:</p>
<ul>
<li>It will ask the consuming flows for the required quantity.</li>
<li>The quantity asked for takes into account the quantity_per of the producing flow.</li>
<li>The date asked for takes into account the post-operation time of the operation. </li>
</ul>

<p>Reimplemented from <a class="el" href="a00171.html#a1d346012ac2f95d6e5fa0d32d969ddba">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00244_source.html#l00423">423</a> of file <a class="el" href="a00244_source.html">solveroperation.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="aef91f162235173fcbd3a7e99c418a32c"></a><!-- doxytag: member="frepple::SolverMRP::undo" ref="aef91f162235173fcbd3a7e99c418a32c" args="(PyObject *, PyObject *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PyObject * frepple::SolverMRP::undo </td>
          <td>(</td>
          <td class="paramtype">PyObject *&nbsp;</td>
          <td class="paramname"> <em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">PyObject *&nbsp;</td>
          <td class="paramname"> <em>args</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Python method for undoing the plan changes. </p>

<p>Definition at line <a class="el" href="a00245_source.html#l00389">389</a> of file <a class="el" href="a00245_source.html">solverplan.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a8eefc9113d28d22731cbe1d3013f4948"></a><!-- doxytag: member="frepple::SolverMRP::writeElement" ref="a8eefc9113d28d22731cbe1d3013f4948" args="(XMLOutput *, const Keyword &amp;, mode=DEFAULT) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void frepple::SolverMRP::writeElement </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00189.html">XMLOutput</a> *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00096.html">Keyword</a> &amp;&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00257.html#a20c2c7e4c6b668e71c154ae3eb18f398">mode</a>&nbsp;</td>
          <td class="paramname"> = <code>DEFAULT</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Called while writing the model into an XML-file. The user class should write itself out, using the IOutStream members for its "simple" members and calling writeElement recursively for any contained objects. Not all classes are expected to implement this method. In instances of such a class can be created but can't be persisted. E.g. Command </p>

<p>Reimplemented from <a class="el" href="a00171.html#a710cb60097e6931be16ff0d842e1cb3b">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00245_source.html#l00222">222</a> of file <a class="el" href="a00245_source.html">solverplan.cpp</a>.</p>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="a16373c09882eef654b42c433935356d3"></a><!-- doxytag: member="frepple::SolverMRP::CAPACITY" ref="a16373c09882eef654b42c433935356d3" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const short <a class="el" href="a00173.html#a16373c09882eef654b42c433935356d3">frepple::SolverMRP::CAPACITY</a> = 4<code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Static constant for the CAPACITY constraint type.<br/>
 The numeric value is 4. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00173.html#a053bfcd159ef9a2311ddb545fa32bd36">MATERIAL</a> </dd>
<dd>
<a class="el" href="a00173.html#a3367b53a8d0ce95af1e3c8aa284bed66">LEADTIME</a> </dd>
<dd>
<a class="el" href="a00173.html#a01576b564e09170b5537e1abad2f46f3">FENCE</a> </dd></dl>

<p>Definition at line <a class="el" href="a00239_source.html#l00237">237</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a2c81fc731c11b888376e05e8e6068ef8"></a><!-- doxytag: member="frepple::SolverMRP::commands" ref="a2c81fc731c11b888376e05e8e6068ef8" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00174.html">SolverMRPdata</a> <a class="el" href="a00173.html#a2c81fc731c11b888376e05e8e6068ef8">frepple::SolverMRP::commands</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>When autocommit is switched off, this command structure will contain all plan changes. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00636">636</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="aba7f9976dce31fdd088ac17aec600fd9"></a><!-- doxytag: member="frepple::SolverMRP::constrts" ref="aba7f9976dce31fdd088ac17aec600fd9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">short <a class="el" href="a00173.html#aba7f9976dce31fdd088ac17aec600fd9">frepple::SolverMRP::constrts</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This variable stores the constraint which the solver should respect. By default no constraints are enabled. </p>

<p>Definition at line <a class="el" href="a00239_source.html#l00060">60</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a01576b564e09170b5537e1abad2f46f3"></a><!-- doxytag: member="frepple::SolverMRP::FENCE" ref="a01576b564e09170b5537e1abad2f46f3" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const short <a class="el" href="a00173.html#a01576b564e09170b5537e1abad2f46f3">frepple::SolverMRP::FENCE</a> = 8<code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Static constant for the FENCE constraint type.<br/>
 The numeric value is 8. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00173.html#a053bfcd159ef9a2311ddb545fa32bd36">MATERIAL</a> </dd>
<dd>
<a class="el" href="a00173.html#a16373c09882eef654b42c433935356d3">CAPACITY</a> </dd>
<dd>
<a class="el" href="a00173.html#a3367b53a8d0ce95af1e3c8aa284bed66">LEADTIME</a> </dd></dl>

<p>Definition at line <a class="el" href="a00239_source.html#l00245">245</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a3367b53a8d0ce95af1e3c8aa284bed66"></a><!-- doxytag: member="frepple::SolverMRP::LEADTIME" ref="a3367b53a8d0ce95af1e3c8aa284bed66" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const short <a class="el" href="a00173.html#a3367b53a8d0ce95af1e3c8aa284bed66">frepple::SolverMRP::LEADTIME</a> = 1<code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Static constant for the LEADTIME constraint type.<br/>
 The numeric value is 1. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00173.html#a053bfcd159ef9a2311ddb545fa32bd36">MATERIAL</a> </dd>
<dd>
<a class="el" href="a00173.html#a16373c09882eef654b42c433935356d3">CAPACITY</a> </dd>
<dd>
<a class="el" href="a00173.html#a01576b564e09170b5537e1abad2f46f3">FENCE</a> </dd></dl>

<p>Definition at line <a class="el" href="a00239_source.html#l00221">221</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a053bfcd159ef9a2311ddb545fa32bd36"></a><!-- doxytag: member="frepple::SolverMRP::MATERIAL" ref="a053bfcd159ef9a2311ddb545fa32bd36" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const short <a class="el" href="a00173.html#a053bfcd159ef9a2311ddb545fa32bd36">frepple::SolverMRP::MATERIAL</a> = 2<code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Static constant for the MATERIAL constraint type.<br/>
 The numeric value is 2. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00173.html#a3367b53a8d0ce95af1e3c8aa284bed66">LEADTIME</a> </dd>
<dd>
<a class="el" href="a00173.html#a16373c09882eef654b42c433935356d3">CAPACITY</a> </dd>
<dd>
<a class="el" href="a00173.html#a01576b564e09170b5537e1abad2f46f3">FENCE</a> </dd></dl>

<p>Definition at line <a class="el" href="a00239_source.html#l00229">229</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<a class="anchor" id="a8b5bca7cd0d37393e1b20a5b08613a56"></a><!-- doxytag: member="frepple::SolverMRP::metadata" ref="a8b5bca7cd0d37393e1b20a5b08613a56" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="a00115.html">MetaClass</a> * <a class="el" href="a00173.html#a8b5bca7cd0d37393e1b20a5b08613a56">frepple::SolverMRP::metadata</a><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Reimplemented from <a class="el" href="a00171.html#a71e7d22ae04bc1aa927b489f1f022745">frepple::Solver</a>.</p>

<p>Definition at line <a class="el" href="a00239_source.html#l00212">212</a> of file <a class="el" href="a00239_source.html">solver.h</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="a00239_source.html">solver.h</a></li>
<li><a class="el" href="a00240_source.html">solverbuffer.cpp</a></li>
<li><a class="el" href="a00241_source.html">solverdemand.cpp</a></li>
<li><a class="el" href="a00242_source.html">solverflow.cpp</a></li>
<li><a class="el" href="a00243_source.html">solverload.cpp</a></li>
<li><a class="el" href="a00244_source.html">solveroperation.cpp</a></li>
<li><a class="el" href="a00245_source.html">solverplan.cpp</a></li>
<li><a class="el" href="a00246_source.html">solverprocure.cpp</a></li>
<li><a class="el" href="a00247_source.html">solverresource.cpp</a></li>
</ul>
</div>
<hr size="1"/><address style="align: right;"><small>Documentation generated for frePPLe by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"/></a></small></address>
</div>
</div>
</body>
</html>