Files
mlpack/doc/html/classmlpack_1_1optimization_1_1SA.html
T

1429 lines
76 KiB
HTML

<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>mlpack: mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="extra-stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">mlpack
&#160;<span id="projectnumber">master</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacemlpack.html">mlpack</a></li><li class="navelem"><a class="el" href="namespacemlpack_1_1optimization.html">optimization</a></li><li class="navelem"><a class="el" href="classmlpack_1_1optimization_1_1SA.html">SA</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classmlpack_1_1optimization_1_1SA-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Simulated Annealing is an stochastic optimization algorithm which is able to deliver near-optimal results quickly without knowing the gradient of the function being optimized.
<a href="classmlpack_1_1optimization_1_1SA.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a2ca61632969fb1051ccf9d488aec3f41"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a2ca61632969fb1051ccf9d488aec3f41">SA</a> (FunctionType &amp;<a class="el" href="classmlpack_1_1optimization_1_1SA.html#a63e3c83351af4bc9e7b53c45f0f26fb7">function</a>, CoolingScheduleType &amp;<a class="el" href="classmlpack_1_1optimization_1_1SA.html#a5720990dca1f66e518ed68d81faca18e">coolingSchedule</a>, const size_t <a class="el" href="classmlpack_1_1optimization_1_1SA.html#a169f1210650ef941c1365278612a4b61">maxIterations</a>=1000000, const double initT=10000., const size_t <a class="el" href="classmlpack_1_1optimization_1_1SA.html#a671c770cf908bcbc6a965e80c4c7d667">initMoves</a>=1000, const size_t <a class="el" href="classmlpack_1_1optimization_1_1SA.html#a78a4dbd2f0d93e5ebdf65c2cf9006ab9">moveCtrlSweep</a>=100, const double <a class="el" href="classmlpack_1_1optimization_1_1SA.html#a9f7142c175ad3c2fc37ecf89ba339cad">tolerance</a>=1e-5, const size_t maxToleranceSweep=3, const double maxMoveCoef=20, const double initMoveCoef=0.3, const double gain=0.3)</td></tr>
<tr class="memdesc:a2ca61632969fb1051ccf9d488aec3f41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct the <a class="el" href="classmlpack_1_1optimization_1_1SA.html" title="Simulated Annealing is an stochastic optimization algorithm which is able to deliver near-optimal res...">SA</a> optimizer with the given function and parameters. <a href="#a2ca61632969fb1051ccf9d488aec3f41">More...</a><br /></td></tr>
<tr class="separator:a2ca61632969fb1051ccf9d488aec3f41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae12e0bbacda10e3053623091f8cb1854"><td class="memItemLeft" align="right" valign="top">const FunctionType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#ae12e0bbacda10e3053623091f8cb1854">Function</a> () const </td></tr>
<tr class="memdesc:ae12e0bbacda10e3053623091f8cb1854"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the instantiated function to be optimized. <a href="#ae12e0bbacda10e3053623091f8cb1854">More...</a><br /></td></tr>
<tr class="separator:ae12e0bbacda10e3053623091f8cb1854"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40c103988fc59a1edce6362cf354f651"><td class="memItemLeft" align="right" valign="top">FunctionType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a40c103988fc59a1edce6362cf354f651">Function</a> ()</td></tr>
<tr class="memdesc:a40c103988fc59a1edce6362cf354f651"><td class="mdescLeft">&#160;</td><td class="mdescRight">Modify the instantiated function. <a href="#a40c103988fc59a1edce6362cf354f651">More...</a><br /></td></tr>
<tr class="separator:a40c103988fc59a1edce6362cf354f651"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d6f61a4cbb87f1dd18e55d7ea9a3127"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a5d6f61a4cbb87f1dd18e55d7ea9a3127">Gain</a> () const </td></tr>
<tr class="memdesc:a5d6f61a4cbb87f1dd18e55d7ea9a3127"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the gain. <a href="#a5d6f61a4cbb87f1dd18e55d7ea9a3127">More...</a><br /></td></tr>
<tr class="separator:a5d6f61a4cbb87f1dd18e55d7ea9a3127"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad33516557c8fd42cb684cfb8a032232f"><td class="memItemLeft" align="right" valign="top">double &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#ad33516557c8fd42cb684cfb8a032232f">Gain</a> ()</td></tr>
<tr class="memdesc:ad33516557c8fd42cb684cfb8a032232f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Modify the gain. <a href="#ad33516557c8fd42cb684cfb8a032232f">More...</a><br /></td></tr>
<tr class="separator:ad33516557c8fd42cb684cfb8a032232f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34476b8d0f8eeb2392642e9140f266b5"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a34476b8d0f8eeb2392642e9140f266b5">InitMoves</a> () const </td></tr>
<tr class="memdesc:a34476b8d0f8eeb2392642e9140f266b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the initial moves. <a href="#a34476b8d0f8eeb2392642e9140f266b5">More...</a><br /></td></tr>
<tr class="separator:a34476b8d0f8eeb2392642e9140f266b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac42b4a324aac463aaecd9d3003ffe97c"><td class="memItemLeft" align="right" valign="top">size_t &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#ac42b4a324aac463aaecd9d3003ffe97c">InitMoves</a> ()</td></tr>
<tr class="memdesc:ac42b4a324aac463aaecd9d3003ffe97c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Modify the initial moves. <a href="#ac42b4a324aac463aaecd9d3003ffe97c">More...</a><br /></td></tr>
<tr class="separator:ac42b4a324aac463aaecd9d3003ffe97c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0db130af9740a8d6e7f11b2693888fc"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#af0db130af9740a8d6e7f11b2693888fc">MaxIterations</a> () const </td></tr>
<tr class="memdesc:af0db130af9740a8d6e7f11b2693888fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum number of iterations. <a href="#af0db130af9740a8d6e7f11b2693888fc">More...</a><br /></td></tr>
<tr class="separator:af0db130af9740a8d6e7f11b2693888fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba854b79ce23e8ca848e0059f07baea2"><td class="memItemLeft" align="right" valign="top">size_t &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#aba854b79ce23e8ca848e0059f07baea2">MaxIterations</a> ()</td></tr>
<tr class="memdesc:aba854b79ce23e8ca848e0059f07baea2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Modify the maximum number of iterations. <a href="#aba854b79ce23e8ca848e0059f07baea2">More...</a><br /></td></tr>
<tr class="separator:aba854b79ce23e8ca848e0059f07baea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3296ad3e7ae1cadac0f3460b9c376f9f"><td class="memItemLeft" align="right" valign="top">arma::mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a3296ad3e7ae1cadac0f3460b9c376f9f">MaxMove</a> () const </td></tr>
<tr class="memdesc:a3296ad3e7ae1cadac0f3460b9c376f9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum move size of each parameter. <a href="#a3296ad3e7ae1cadac0f3460b9c376f9f">More...</a><br /></td></tr>
<tr class="separator:a3296ad3e7ae1cadac0f3460b9c376f9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83b0d63c4940b266f7a629c36533d7a6"><td class="memItemLeft" align="right" valign="top">arma::mat &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a83b0d63c4940b266f7a629c36533d7a6">MaxMove</a> ()</td></tr>
<tr class="memdesc:a83b0d63c4940b266f7a629c36533d7a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Modify the maximum move size of each parameter. <a href="#a83b0d63c4940b266f7a629c36533d7a6">More...</a><br /></td></tr>
<tr class="separator:a83b0d63c4940b266f7a629c36533d7a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41371fc54ac1dcd9162a3bd99000fbb5"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a41371fc54ac1dcd9162a3bd99000fbb5">MaxToleranceSweep</a> () const </td></tr>
<tr class="memdesc:a41371fc54ac1dcd9162a3bd99000fbb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maxToleranceSweep. <a href="#a41371fc54ac1dcd9162a3bd99000fbb5">More...</a><br /></td></tr>
<tr class="separator:a41371fc54ac1dcd9162a3bd99000fbb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0f04c9db4ef72fa884dbd8bb3287091"><td class="memItemLeft" align="right" valign="top">size_t &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#af0f04c9db4ef72fa884dbd8bb3287091">MaxToleranceSweep</a> ()</td></tr>
<tr class="memdesc:af0f04c9db4ef72fa884dbd8bb3287091"><td class="mdescLeft">&#160;</td><td class="mdescRight">Modify the maxToleranceSweep. <a href="#af0f04c9db4ef72fa884dbd8bb3287091">More...</a><br /></td></tr>
<tr class="separator:af0f04c9db4ef72fa884dbd8bb3287091"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0b9c35eaab0c3de53bd72cd5ba428b8"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#ab0b9c35eaab0c3de53bd72cd5ba428b8">MoveCtrlSweep</a> () const </td></tr>
<tr class="memdesc:ab0b9c35eaab0c3de53bd72cd5ba428b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get sweeps per move control. <a href="#ab0b9c35eaab0c3de53bd72cd5ba428b8">More...</a><br /></td></tr>
<tr class="separator:ab0b9c35eaab0c3de53bd72cd5ba428b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6127a6347a81512148f48ac765fbad37"><td class="memItemLeft" align="right" valign="top">size_t &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a6127a6347a81512148f48ac765fbad37">MoveCtrlSweep</a> ()</td></tr>
<tr class="memdesc:a6127a6347a81512148f48ac765fbad37"><td class="mdescLeft">&#160;</td><td class="mdescRight">Modify sweeps per move control. <a href="#a6127a6347a81512148f48ac765fbad37">More...</a><br /></td></tr>
<tr class="separator:a6127a6347a81512148f48ac765fbad37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac503f379aa1037e0fd0ce31da5d4ec45"><td class="memItemLeft" align="right" valign="top">arma::mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#ac503f379aa1037e0fd0ce31da5d4ec45">MoveSize</a> () const </td></tr>
<tr class="memdesc:ac503f379aa1037e0fd0ce31da5d4ec45"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get move size of each parameter. <a href="#ac503f379aa1037e0fd0ce31da5d4ec45">More...</a><br /></td></tr>
<tr class="separator:ac503f379aa1037e0fd0ce31da5d4ec45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82c2d5c36d2dea7aa249c2cb754beff0"><td class="memItemLeft" align="right" valign="top">arma::mat &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a82c2d5c36d2dea7aa249c2cb754beff0">MoveSize</a> ()</td></tr>
<tr class="memdesc:a82c2d5c36d2dea7aa249c2cb754beff0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Modify move size of each parameter. <a href="#a82c2d5c36d2dea7aa249c2cb754beff0">More...</a><br /></td></tr>
<tr class="separator:a82c2d5c36d2dea7aa249c2cb754beff0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07611d66e8b7539c381fc1009af0d429"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a07611d66e8b7539c381fc1009af0d429">Optimize</a> (arma::mat &amp;iterate)</td></tr>
<tr class="memdesc:a07611d66e8b7539c381fc1009af0d429"><td class="mdescLeft">&#160;</td><td class="mdescRight">Optimize the given function using simulated annealing. <a href="#a07611d66e8b7539c381fc1009af0d429">More...</a><br /></td></tr>
<tr class="separator:a07611d66e8b7539c381fc1009af0d429"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ed3b9c3a5790ca696f18c1a60cec130"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a9ed3b9c3a5790ca696f18c1a60cec130">Temperature</a> () const </td></tr>
<tr class="memdesc:a9ed3b9c3a5790ca696f18c1a60cec130"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the temperature. <a href="#a9ed3b9c3a5790ca696f18c1a60cec130">More...</a><br /></td></tr>
<tr class="separator:a9ed3b9c3a5790ca696f18c1a60cec130"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80ab0c7b3b0906fcc5ab074065e838a3"><td class="memItemLeft" align="right" valign="top">double &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a80ab0c7b3b0906fcc5ab074065e838a3">Temperature</a> ()</td></tr>
<tr class="memdesc:a80ab0c7b3b0906fcc5ab074065e838a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Modify the temperature. <a href="#a80ab0c7b3b0906fcc5ab074065e838a3">More...</a><br /></td></tr>
<tr class="separator:a80ab0c7b3b0906fcc5ab074065e838a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a359d47d27aee0ffd4a668d02c2613ae4"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a359d47d27aee0ffd4a668d02c2613ae4">Tolerance</a> () const </td></tr>
<tr class="memdesc:a359d47d27aee0ffd4a668d02c2613ae4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the tolerance. <a href="#a359d47d27aee0ffd4a668d02c2613ae4">More...</a><br /></td></tr>
<tr class="separator:a359d47d27aee0ffd4a668d02c2613ae4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a924d5dd42245401769b2d6e3e797b721"><td class="memItemLeft" align="right" valign="top">double &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a924d5dd42245401769b2d6e3e797b721">Tolerance</a> ()</td></tr>
<tr class="memdesc:a924d5dd42245401769b2d6e3e797b721"><td class="mdescLeft">&#160;</td><td class="mdescRight">Modify the tolerance. <a href="#a924d5dd42245401769b2d6e3e797b721">More...</a><br /></td></tr>
<tr class="separator:a924d5dd42245401769b2d6e3e797b721"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:aa775231810898c9e26d04a6645bda66d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#aa775231810898c9e26d04a6645bda66d">GenerateMove</a> (arma::mat &amp;iterate, arma::mat &amp;accept, double &amp;energy, size_t &amp;idx, size_t &amp;sweepCounter)</td></tr>
<tr class="memdesc:aa775231810898c9e26d04a6645bda66d"><td class="mdescLeft">&#160;</td><td class="mdescRight">GenerateMove proposes a move on element iterate(idx), and determines if that move is acceptable or not according to the Metropolis criterion. <a href="#aa775231810898c9e26d04a6645bda66d">More...</a><br /></td></tr>
<tr class="separator:aa775231810898c9e26d04a6645bda66d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5a4321e8048dc36ecbc173de5a54a11"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#ae5a4321e8048dc36ecbc173de5a54a11">MoveControl</a> (const size_t nMoves, arma::mat &amp;accept)</td></tr>
<tr class="memdesc:ae5a4321e8048dc36ecbc173de5a54a11"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#ae5a4321e8048dc36ecbc173de5a54a11" title="MoveControl() uses a proportional feedback control to determine the size parameter to pass to the mov...">MoveControl()</a> uses a proportional feedback control to determine the size parameter to pass to the move generation distribution. <a href="#ae5a4321e8048dc36ecbc173de5a54a11">More...</a><br /></td></tr>
<tr class="separator:ae5a4321e8048dc36ecbc173de5a54a11"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a5720990dca1f66e518ed68d81faca18e"><td class="memItemLeft" align="right" valign="top">CoolingScheduleType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a5720990dca1f66e518ed68d81faca18e">coolingSchedule</a></td></tr>
<tr class="memdesc:a5720990dca1f66e518ed68d81faca18e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The cooling schedule being used. <a href="#a5720990dca1f66e518ed68d81faca18e">More...</a><br /></td></tr>
<tr class="separator:a5720990dca1f66e518ed68d81faca18e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63e3c83351af4bc9e7b53c45f0f26fb7"><td class="memItemLeft" align="right" valign="top">FunctionType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a63e3c83351af4bc9e7b53c45f0f26fb7">function</a></td></tr>
<tr class="memdesc:a63e3c83351af4bc9e7b53c45f0f26fb7"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function to be optimized. <a href="#a63e3c83351af4bc9e7b53c45f0f26fb7">More...</a><br /></td></tr>
<tr class="separator:a63e3c83351af4bc9e7b53c45f0f26fb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae42e1095aa711a40246f7650a731b5fd"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#ae42e1095aa711a40246f7650a731b5fd">gain</a></td></tr>
<tr class="memdesc:ae42e1095aa711a40246f7650a731b5fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Proportional control in feedback move control. <a href="#ae42e1095aa711a40246f7650a731b5fd">More...</a><br /></td></tr>
<tr class="separator:ae42e1095aa711a40246f7650a731b5fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a671c770cf908bcbc6a965e80c4c7d667"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a671c770cf908bcbc6a965e80c4c7d667">initMoves</a></td></tr>
<tr class="memdesc:a671c770cf908bcbc6a965e80c4c7d667"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of initial moves before reducing the temperature. <a href="#a671c770cf908bcbc6a965e80c4c7d667">More...</a><br /></td></tr>
<tr class="separator:a671c770cf908bcbc6a965e80c4c7d667"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a169f1210650ef941c1365278612a4b61"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a169f1210650ef941c1365278612a4b61">maxIterations</a></td></tr>
<tr class="memdesc:a169f1210650ef941c1365278612a4b61"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum number of iterations. <a href="#a169f1210650ef941c1365278612a4b61">More...</a><br /></td></tr>
<tr class="separator:a169f1210650ef941c1365278612a4b61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab01cb1116e883d40eda68c968740a9be"><td class="memItemLeft" align="right" valign="top">arma::mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#ab01cb1116e883d40eda68c968740a9be">maxMove</a></td></tr>
<tr class="memdesc:ab01cb1116e883d40eda68c968740a9be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum move size of each parameter. <a href="#ab01cb1116e883d40eda68c968740a9be">More...</a><br /></td></tr>
<tr class="separator:ab01cb1116e883d40eda68c968740a9be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa4dd0d6bfc54e5075c5a08cf41a4312"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#afa4dd0d6bfc54e5075c5a08cf41a4312">maxToleranceSweep</a></td></tr>
<tr class="memdesc:afa4dd0d6bfc54e5075c5a08cf41a4312"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of sweeps in tolerance before system is considered frozen. <a href="#afa4dd0d6bfc54e5075c5a08cf41a4312">More...</a><br /></td></tr>
<tr class="separator:afa4dd0d6bfc54e5075c5a08cf41a4312"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78a4dbd2f0d93e5ebdf65c2cf9006ab9"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a78a4dbd2f0d93e5ebdf65c2cf9006ab9">moveCtrlSweep</a></td></tr>
<tr class="memdesc:a78a4dbd2f0d93e5ebdf65c2cf9006ab9"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of sweeps before a <a class="el" href="classmlpack_1_1optimization_1_1SA.html#ae5a4321e8048dc36ecbc173de5a54a11" title="MoveControl() uses a proportional feedback control to determine the size parameter to pass to the mov...">MoveControl()</a> call. <a href="#a78a4dbd2f0d93e5ebdf65c2cf9006ab9">More...</a><br /></td></tr>
<tr class="separator:a78a4dbd2f0d93e5ebdf65c2cf9006ab9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93f6721d1e636414a6f9602d4ebf6741"><td class="memItemLeft" align="right" valign="top">arma::mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a93f6721d1e636414a6f9602d4ebf6741">moveSize</a></td></tr>
<tr class="memdesc:a93f6721d1e636414a6f9602d4ebf6741"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move size of each parameter. <a href="#a93f6721d1e636414a6f9602d4ebf6741">More...</a><br /></td></tr>
<tr class="separator:a93f6721d1e636414a6f9602d4ebf6741"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1295a33ebdeebedc19f58850822204a5"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a1295a33ebdeebedc19f58850822204a5">temperature</a></td></tr>
<tr class="memdesc:a1295a33ebdeebedc19f58850822204a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The current temperature. <a href="#a1295a33ebdeebedc19f58850822204a5">More...</a><br /></td></tr>
<tr class="separator:a1295a33ebdeebedc19f58850822204a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f7142c175ad3c2fc37ecf89ba339cad"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmlpack_1_1optimization_1_1SA.html#a9f7142c175ad3c2fc37ecf89ba339cad">tolerance</a></td></tr>
<tr class="memdesc:a9f7142c175ad3c2fc37ecf89ba339cad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tolerance for convergence. <a href="#a9f7142c175ad3c2fc37ecf89ba339cad">More...</a><br /></td></tr>
<tr class="separator:a9f7142c175ad3c2fc37ecf89ba339cad"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename FunctionType, typename CoolingScheduleType = ExponentialSchedule&gt;<br />
class mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;</h3>
<p>Simulated Annealing is an stochastic optimization algorithm which is able to deliver near-optimal results quickly without knowing the gradient of the function being optimized. </p>
<p>It has unique hill climbing capability that makes it less vulnerable to local minima. This implementation uses exponential cooling schedule and feedback move control by default, but the cooling schedule can be changed via a template parameter.</p>
<p>The algorithm keeps the temperature at initial temperature for initMove steps to get rid of the dependency on the initial condition. After that, it cools every step until the system is considered frozen or maxIterations is reached.</p>
<p>At each step, <a class="el" href="classmlpack_1_1optimization_1_1SA.html" title="Simulated Annealing is an stochastic optimization algorithm which is able to deliver near-optimal res...">SA</a> only perturbs one parameter at a time. When <a class="el" href="classmlpack_1_1optimization_1_1SA.html" title="Simulated Annealing is an stochastic optimization algorithm which is able to deliver near-optimal res...">SA</a> has perturbed all parameters in a problem, a sweep has been completed. Every moveCtrlSweep sweeps, the algorithm does feedback move control to change the average move size depending on the responsiveness of each parameter. Parameter gain controls the proportion of the feedback control.</p>
<p>The system is considered "frozen" when its score fails to change more then tolerance for maxToleranceSweep consecutive sweeps.</p>
<p>For <a class="el" href="classmlpack_1_1optimization_1_1SA.html" title="Simulated Annealing is an stochastic optimization algorithm which is able to deliver near-optimal res...">SA</a> to work, the FunctionType parameter must implement the following two methods:</p>
<p>double Evaluate(const arma::mat&amp; coordinates); arma::mat&amp; GetInitialPoint();</p>
<p>and the CoolingScheduleType parameter must implement the following method:</p>
<p>double NextTemperature(const double currentTemperature, const double currentValue);</p>
<p>which returns the next temperature given current temperature and the value of the function being optimized.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">FunctionType</td><td>objective function type to be minimized. </td></tr>
<tr><td class="paramname">CoolingScheduleType</td><td>type for cooling schedule </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00065">65</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a2ca61632969fb1051ccf9d488aec3f41"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::<a class="el" href="classmlpack_1_1optimization_1_1SA.html">SA</a> </td>
<td>(</td>
<td class="paramtype">FunctionType &amp;&#160;</td>
<td class="paramname"><em>function</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">CoolingScheduleType &amp;&#160;</td>
<td class="paramname"><em>coolingSchedule</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const size_t&#160;</td>
<td class="paramname"><em>maxIterations</em> = <code>1000000</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>initT</em> = <code>10000.</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const size_t&#160;</td>
<td class="paramname"><em>initMoves</em> = <code>1000</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const size_t&#160;</td>
<td class="paramname"><em>moveCtrlSweep</em> = <code>100</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>tolerance</em> = <code>1e-5</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const size_t&#160;</td>
<td class="paramname"><em>maxToleranceSweep</em> = <code>3</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>maxMoveCoef</em> = <code>20</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>initMoveCoef</em> = <code>0.3</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>gain</em> = <code>0.3</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Construct the <a class="el" href="classmlpack_1_1optimization_1_1SA.html" title="Simulated Annealing is an stochastic optimization algorithm which is able to deliver near-optimal res...">SA</a> optimizer with the given function and parameters. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">function</td><td>Function to be minimized. </td></tr>
<tr><td class="paramname">coolingSchedule</td><td>Instantiated cooling schedule. </td></tr>
<tr><td class="paramname">maxIterations</td><td>Maximum number of iterations allowed (0 indicates no limit). </td></tr>
<tr><td class="paramname">initT</td><td>Initial temperature. </td></tr>
<tr><td class="paramname">initMoves</td><td>Number of initial iterations without changing temperature. </td></tr>
<tr><td class="paramname">moveCtrlSweep</td><td>Sweeps per feedback move control. </td></tr>
<tr><td class="paramname">tolerance</td><td>Tolerance to consider system frozen. </td></tr>
<tr><td class="paramname">maxToleranceSweep</td><td>Maximum sweeps below tolerance to consider system frozen. </td></tr>
<tr><td class="paramname">maxMoveCoef</td><td>Maximum move size. </td></tr>
<tr><td class="paramname">initMoveCoef</td><td>Initial move size. </td></tr>
<tr><td class="paramname">gain</td><td>Proportional control in feedback move control. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="ae12e0bbacda10e3053623091f8cb1854"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const FunctionType&amp; <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::Function </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the instantiated function to be optimized. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00107">107</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
</div>
</div>
<a class="anchor" id="a40c103988fc59a1edce6362cf354f651"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">FunctionType&amp; <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::Function </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Modify the instantiated function. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00109">109</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
</div>
</div>
<a class="anchor" id="a5d6f61a4cbb87f1dd18e55d7ea9a3127"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::Gain </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the gain. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00137">137</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00174">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::gain</a>.</p>
</div>
</div>
<a class="anchor" id="ad33516557c8fd42cb684cfb8a032232f"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double&amp; <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::Gain </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Modify the gain. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00139">139</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00174">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::gain</a>.</p>
</div>
</div>
<a class="anchor" id="aa775231810898c9e26d04a6645bda66d"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::GenerateMove </td>
<td>(</td>
<td class="paramtype">arma::mat &amp;&#160;</td>
<td class="paramname"><em>iterate</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">arma::mat &amp;&#160;</td>
<td class="paramname"><em>accept</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double &amp;&#160;</td>
<td class="paramname"><em>energy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t &amp;&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t &amp;&#160;</td>
<td class="paramname"><em>sweepCounter</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>GenerateMove proposes a move on element iterate(idx), and determines if that move is acceptable or not according to the Metropolis criterion. </p>
<p>After that it increments idx so the next call will make a move on next parameters. When all elements of the state have been moved (a sweep), it resets idx and increments sweepCounter. When sweepCounter reaches moveCtrlSweep, it performs <a class="el" href="classmlpack_1_1optimization_1_1SA.html#ae5a4321e8048dc36ecbc173de5a54a11" title="MoveControl() uses a proportional feedback control to determine the size parameter to pass to the mov...">MoveControl()</a> and resets sweepCounter.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">iterate</td><td>Current optimization position. </td></tr>
<tr><td class="paramname">accept</td><td>Matrix representing which parameters have had accepted moves. </td></tr>
<tr><td class="paramname">energy</td><td>Current energy of the system. </td></tr>
<tr><td class="paramname">idx</td><td>Current parameter to modify. </td></tr>
<tr><td class="paramname">sweepCounter</td><td>Current counter representing how many sweeps have been completed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a34476b8d0f8eeb2392642e9140f266b5"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::InitMoves </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the initial moves. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00117">117</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00166">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::initMoves</a>.</p>
</div>
</div>
<a class="anchor" id="ac42b4a324aac463aaecd9d3003ffe97c"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t&amp; <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::InitMoves </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Modify the initial moves. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00119">119</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00166">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::initMoves</a>.</p>
</div>
</div>
<a class="anchor" id="af0db130af9740a8d6e7f11b2693888fc"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::MaxIterations </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the maximum number of iterations. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00142">142</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00162">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::maxIterations</a>.</p>
</div>
</div>
<a class="anchor" id="aba854b79ce23e8ca848e0059f07baea2"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t&amp; <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::MaxIterations </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Modify the maximum number of iterations. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00144">144</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00162">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::maxIterations</a>.</p>
</div>
</div>
<a class="anchor" id="a3296ad3e7ae1cadac0f3460b9c376f9f"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">arma::mat <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::MaxMove </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the maximum move size of each parameter. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00147">147</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00177">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::maxMove</a>.</p>
</div>
</div>
<a class="anchor" id="a83b0d63c4940b266f7a629c36533d7a6"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">arma::mat&amp; <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::MaxMove </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Modify the maximum move size of each parameter. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00149">149</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00177">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::maxMove</a>.</p>
</div>
</div>
<a class="anchor" id="a41371fc54ac1dcd9162a3bd99000fbb5"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::MaxToleranceSweep </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the maxToleranceSweep. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00132">132</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00172">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::maxToleranceSweep</a>.</p>
</div>
</div>
<a class="anchor" id="af0f04c9db4ef72fa884dbd8bb3287091"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t&amp; <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::MaxToleranceSweep </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Modify the maxToleranceSweep. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00134">134</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00172">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::maxToleranceSweep</a>.</p>
</div>
</div>
<a class="anchor" id="ae5a4321e8048dc36ecbc173de5a54a11"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::MoveControl </td>
<td>(</td>
<td class="paramtype">const size_t&#160;</td>
<td class="paramname"><em>nMoves</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">arma::mat &amp;&#160;</td>
<td class="paramname"><em>accept</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="classmlpack_1_1optimization_1_1SA.html#ae5a4321e8048dc36ecbc173de5a54a11" title="MoveControl() uses a proportional feedback control to determine the size parameter to pass to the mov...">MoveControl()</a> uses a proportional feedback control to determine the size parameter to pass to the move generation distribution. </p>
<p>The target of such move control is to make the acceptance ratio, accept/nMoves, be as close to 0.44 as possible. Generally speaking, the larger the move size is, the larger the function value change of the move will be, and less likely such move will be accepted by the Metropolis criterion. Thus, the move size is controlled by</p>
<p>log(moveSize) = log(moveSize) + gain * (accept/nMoves - target)</p>
<p>For more theory and the mysterious 0.44 value, see Jimmy K.-C. Lam and Jean-Marc Delosme. `An efficient simulated annealing schedule: derivation'. Technical Report 8816, Yale University, 1988.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">nMoves</td><td>Number of moves since last call. </td></tr>
<tr><td class="paramname">accept</td><td>Matrix representing which parameters have had accepted moves. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ab0b9c35eaab0c3de53bd72cd5ba428b8"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::MoveCtrlSweep </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get sweeps per move control. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00122">122</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00168">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::moveCtrlSweep</a>.</p>
</div>
</div>
<a class="anchor" id="a6127a6347a81512148f48ac765fbad37"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t&amp; <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::MoveCtrlSweep </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Modify sweeps per move control. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00124">124</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00168">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::moveCtrlSweep</a>.</p>
</div>
</div>
<a class="anchor" id="ac503f379aa1037e0fd0ce31da5d4ec45"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">arma::mat <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::MoveSize </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get move size of each parameter. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00152">152</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00179">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::moveSize</a>.</p>
</div>
</div>
<a class="anchor" id="a82c2d5c36d2dea7aa249c2cb754beff0"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">arma::mat&amp; <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::MoveSize </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Modify move size of each parameter. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00154">154</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00179">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::moveSize</a>.</p>
</div>
</div>
<a class="anchor" id="a07611d66e8b7539c381fc1009af0d429"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="memname">
<tr>
<td class="memname">double <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::Optimize </td>
<td>(</td>
<td class="paramtype">arma::mat &amp;&#160;</td>
<td class="paramname"><em>iterate</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Optimize the given function using simulated annealing. </p>
<p>The given starting point will be modified to store the finishing point of the algorithm, and the final objective value is returned.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">iterate</td><td>Starting point (will be modified). </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Objective value of the final point. </dd></dl>
</div>
</div>
<a class="anchor" id="a9ed3b9c3a5790ca696f18c1a60cec130"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::Temperature </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the temperature. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00112">112</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00164">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::temperature</a>.</p>
</div>
</div>
<a class="anchor" id="a80ab0c7b3b0906fcc5ab074065e838a3"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double&amp; <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::Temperature </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Modify the temperature. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00114">114</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00164">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::temperature</a>.</p>
</div>
</div>
<a class="anchor" id="a359d47d27aee0ffd4a668d02c2613ae4"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::Tolerance </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the tolerance. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00127">127</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00170">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::tolerance</a>.</p>
</div>
</div>
<a class="anchor" id="a924d5dd42245401769b2d6e3e797b721"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double&amp; <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::Tolerance </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Modify the tolerance. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00129">129</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>References <a class="el" href="sa_8hpp_source.html#l00170">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::tolerance</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a5720990dca1f66e518ed68d81faca18e"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">CoolingScheduleType&amp; <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::coolingSchedule</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The cooling schedule being used. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00160">160</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
</div>
</div>
<a class="anchor" id="a63e3c83351af4bc9e7b53c45f0f26fb7"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">FunctionType&amp; <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::function</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The function to be optimized. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00158">158</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
</div>
</div>
<a class="anchor" id="ae42e1095aa711a40246f7650a731b5fd"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::gain</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Proportional control in feedback move control. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00174">174</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>Referenced by <a class="el" href="sa_8hpp_source.html#l00137">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::Gain()</a>.</p>
</div>
</div>
<a class="anchor" id="a671c770cf908bcbc6a965e80c4c7d667"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::initMoves</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The number of initial moves before reducing the temperature. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00166">166</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>Referenced by <a class="el" href="sa_8hpp_source.html#l00117">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::InitMoves()</a>.</p>
</div>
</div>
<a class="anchor" id="a169f1210650ef941c1365278612a4b61"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::maxIterations</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The maximum number of iterations. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00162">162</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>Referenced by <a class="el" href="sa_8hpp_source.html#l00142">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::MaxIterations()</a>.</p>
</div>
</div>
<a class="anchor" id="ab01cb1116e883d40eda68c968740a9be"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">arma::mat <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::maxMove</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Maximum move size of each parameter. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00177">177</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>Referenced by <a class="el" href="sa_8hpp_source.html#l00147">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::MaxMove()</a>.</p>
</div>
</div>
<a class="anchor" id="afa4dd0d6bfc54e5075c5a08cf41a4312"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::maxToleranceSweep</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Number of sweeps in tolerance before system is considered frozen. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00172">172</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>Referenced by <a class="el" href="sa_8hpp_source.html#l00132">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::MaxToleranceSweep()</a>.</p>
</div>
</div>
<a class="anchor" id="a78a4dbd2f0d93e5ebdf65c2cf9006ab9"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::moveCtrlSweep</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The number of sweeps before a <a class="el" href="classmlpack_1_1optimization_1_1SA.html#ae5a4321e8048dc36ecbc173de5a54a11" title="MoveControl() uses a proportional feedback control to determine the size parameter to pass to the mov...">MoveControl()</a> call. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00168">168</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>Referenced by <a class="el" href="sa_8hpp_source.html#l00122">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::MoveCtrlSweep()</a>.</p>
</div>
</div>
<a class="anchor" id="a93f6721d1e636414a6f9602d4ebf6741"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">arma::mat <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::moveSize</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Move size of each parameter. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00179">179</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>Referenced by <a class="el" href="sa_8hpp_source.html#l00152">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::MoveSize()</a>.</p>
</div>
</div>
<a class="anchor" id="a1295a33ebdeebedc19f58850822204a5"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::temperature</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The current temperature. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00164">164</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>Referenced by <a class="el" href="sa_8hpp_source.html#l00112">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::Temperature()</a>.</p>
</div>
</div>
<a class="anchor" id="a9f7142c175ad3c2fc37ecf89ba339cad"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename FunctionType , typename CoolingScheduleType = ExponentialSchedule&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double <a class="el" href="classmlpack_1_1optimization_1_1SA.html">mlpack::optimization::SA</a>&lt; FunctionType, CoolingScheduleType &gt;::tolerance</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Tolerance for convergence. </p>
<p>Definition at line <a class="el" href="sa_8hpp_source.html#l00170">170</a> of file <a class="el" href="sa_8hpp_source.html">sa.hpp</a>.</p>
<p>Referenced by <a class="el" href="sa_8hpp_source.html#l00127">mlpack::optimization::SA&lt; FunctionType, CoolingScheduleType &gt;::Tolerance()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/mlpack/core/optimizers/sa/<a class="el" href="sa_8hpp_source.html">sa.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
<script type="text/javascript">
var x = document.getElementsByClassName("formulaDsp");
var i;
for (i = 0; i < x.length; i++)
{
x[i].width /= 4;
}
</script>
</html>