blob: ecab0fc4f0a7627e0685aafd87ee840f91a5e399 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>org.apache.commons.math3.optim (Apache Commons Math 3.3 API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="org.apache.commons.math3.optim (Apache Commons Math 3.3 API)";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-use.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/commons/math3/ode/sampling/package-summary.html">Prev Package</a></li>
<li><a href="../../../../../org/apache/commons/math3/optim/linear/package-summary.html">Next Package</a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/commons/math3/optim/package-summary.html" target="_top">Frames</a></li>
<li><a href="package-summary.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip-navbar_top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 title="Package" class="title">Package&nbsp;org.apache.commons.math3.optim</h1>
<div class="docSummary">
<div class="block">
Generally, optimizers are algorithms that will either
<a href="../../../../../org/apache/commons/math3/optim/nonlinear/scalar/GoalType.html#MINIMIZE"><code>minimize</code></a> or
<a href="../../../../../org/apache/commons/math3/optim/nonlinear/scalar/GoalType.html#MAXIMIZE"><code>maximize</code></a>
a scalar function, called the
<a href="../../../../../org/apache/commons/math3/optim/nonlinear/scalar/ObjectiveFunction.html" title="class in org.apache.commons.math3.optim.nonlinear.scalar"><code><em>objective
function</em></code></a>.</div>
</div>
<p>See:&nbsp;<a href="#package_description">Description</a></p>
</div>
<div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<table class="packageSummary" border="0" cellpadding="3" cellspacing="0" summary="Interface Summary table, listing interfaces, and an explanation">
<caption><span>Interface Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Interface</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/commons/math3/optim/ConvergenceChecker.html" title="interface in org.apache.commons.math3.optim">ConvergenceChecker</a>&lt;PAIR&gt;</td>
<td class="colLast">
<div class="block">This interface specifies how to check if an optimization algorithm has
converged.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/commons/math3/optim/OptimizationData.html" title="interface in org.apache.commons.math3.optim">OptimizationData</a></td>
<td class="colLast">
<div class="block">Marker interface.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/commons/math3/optim/OptimizationProblem.html" title="interface in org.apache.commons.math3.optim">OptimizationProblem</a>&lt;PAIR&gt;</td>
<td class="colLast">
<div class="block">Common settings for all optimization problems.</div>
</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList">
<table class="packageSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/commons/math3/optim/AbstractConvergenceChecker.html" title="class in org.apache.commons.math3.optim">AbstractConvergenceChecker</a>&lt;PAIR&gt;</td>
<td class="colLast">
<div class="block">Base class for all convergence checker implementations.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/commons/math3/optim/AbstractOptimizationProblem.html" title="class in org.apache.commons.math3.optim">AbstractOptimizationProblem</a>&lt;PAIR&gt;</td>
<td class="colLast">
<div class="block">Base class for implementing optimization problems.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/commons/math3/optim/BaseMultiStartMultivariateOptimizer.html" title="class in org.apache.commons.math3.optim">BaseMultiStartMultivariateOptimizer</a>&lt;PAIR&gt;</td>
<td class="colLast">
<div class="block">Base class multi-start optimizer for a multivariate function.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/commons/math3/optim/BaseMultivariateOptimizer.html" title="class in org.apache.commons.math3.optim">BaseMultivariateOptimizer</a>&lt;PAIR&gt;</td>
<td class="colLast">
<div class="block">Base class for implementing optimizers for multivariate functions.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/commons/math3/optim/BaseOptimizer.html" title="class in org.apache.commons.math3.optim">BaseOptimizer</a>&lt;PAIR&gt;</td>
<td class="colLast">
<div class="block">Base class for implementing optimizers.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/commons/math3/optim/InitialGuess.html" title="class in org.apache.commons.math3.optim">InitialGuess</a></td>
<td class="colLast">
<div class="block">Starting point (first guess) of the optimization procedure.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/commons/math3/optim/MaxEval.html" title="class in org.apache.commons.math3.optim">MaxEval</a></td>
<td class="colLast">
<div class="block">Maximum number of evaluations of the function to be optimized.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/commons/math3/optim/MaxIter.html" title="class in org.apache.commons.math3.optim">MaxIter</a></td>
<td class="colLast">
<div class="block">Maximum number of iterations performed by an (iterative) algorithm.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/commons/math3/optim/PointValuePair.html" title="class in org.apache.commons.math3.optim">PointValuePair</a></td>
<td class="colLast">
<div class="block">This class holds a point and the value of an objective function at
that point.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/commons/math3/optim/PointVectorValuePair.html" title="class in org.apache.commons.math3.optim">PointVectorValuePair</a></td>
<td class="colLast">
<div class="block">This class holds a point and the vectorial value of an objective function at
that point.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/commons/math3/optim/SimpleBounds.html" title="class in org.apache.commons.math3.optim">SimpleBounds</a></td>
<td class="colLast">
<div class="block">Simple optimization constraints: lower and upper bounds.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/commons/math3/optim/SimplePointChecker.html" title="class in org.apache.commons.math3.optim">SimplePointChecker</a>&lt;PAIR extends <a href="../../../../../org/apache/commons/math3/util/Pair.html" title="class in org.apache.commons.math3.util">Pair</a>&lt;double[],? extends <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&gt;</td>
<td class="colLast">
<div class="block">Simple implementation of the <a href="../../../../../org/apache/commons/math3/optim/ConvergenceChecker.html" title="interface in org.apache.commons.math3.optim"><code>ConvergenceChecker</code></a> interface using
only point coordinates.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/commons/math3/optim/SimpleValueChecker.html" title="class in org.apache.commons.math3.optim">SimpleValueChecker</a></td>
<td class="colLast">
<div class="block">Simple implementation of the <a href="../../../../../org/apache/commons/math3/optim/ConvergenceChecker.html" title="interface in org.apache.commons.math3.optim"><code>ConvergenceChecker</code></a> interface using
only objective function values.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/commons/math3/optim/SimpleVectorValueChecker.html" title="class in org.apache.commons.math3.optim">SimpleVectorValueChecker</a></td>
<td class="colLast">
<div class="block">Simple implementation of the <a href="../../../../../org/apache/commons/math3/optim/ConvergenceChecker.html" title="interface in org.apache.commons.math3.optim"><code>ConvergenceChecker</code></a> interface using
only objective function values.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="package_description">
<!-- -->
</a>
<h2 title="Package org.apache.commons.math3.optim Description">Package org.apache.commons.math3.optim Description</h2>
<div class="block"><p>
Generally, optimizers are algorithms that will either
<a href="../../../../../org/apache/commons/math3/optim/nonlinear/scalar/GoalType.html#MINIMIZE"><code>minimize</code></a> or
<a href="../../../../../org/apache/commons/math3/optim/nonlinear/scalar/GoalType.html#MAXIMIZE"><code>maximize</code></a>
a scalar function, called the
<a href="../../../../../org/apache/commons/math3/optim/nonlinear/scalar/ObjectiveFunction.html" title="class in org.apache.commons.math3.optim.nonlinear.scalar"><code><em>objective
function</em></code></a>.
<br/>
For some scalar objective functions the gradient can be computed (analytically
or numerically). Algorithms that use this knowledge are defined in the
<a href="../../../../../org/apache/commons/math3/optim/nonlinear/scalar/gradient/package-summary.html"><code>org.apache.commons.math3.optim.nonlinear.scalar.gradient</code></a> package.
The algorithms that do not need this additional information are located in
the <a href="../../../../../org/apache/commons/math3/optim/nonlinear/scalar/noderiv/package-summary.html"><code>org.apache.commons.math3.optim.nonlinear.scalar.noderiv</code></a> package.
</p>
<p>
Some problems are solved more efficiently by algorithms that, instead of an
objective function, need access to a
<a href="../../../../../org/apache/commons/math3/optim/nonlinear/vector/ModelFunction.html" title="class in org.apache.commons.math3.optim.nonlinear.vector"><code><em>model function</em></code></a>: such a model predicts a set of values which the
algorithm tries to match with a set of given
<a href="../../../../../org/apache/commons/math3/optim/nonlinear/vector/Target.html" title="class in org.apache.commons.math3.optim.nonlinear.vector"><code>target values</code></a>.
Those algorithms are located in the
<a href="../../../../../org/apache/commons/math3/optim/nonlinear/vector/package-summary.html"><code>org.apache.commons.math3.optim.nonlinear.vector</code></a> package.
<br/>
Algorithms that also require the
<a href="../../../../../org/apache/commons/math3/optim/nonlinear/vector/ModelFunctionJacobian.html" title="class in org.apache.commons.math3.optim.nonlinear.vector"><code>Jacobian matrix of the model</code></a> are located in the
<a href="../../../../../org/apache/commons/math3/optim/nonlinear/vector/jacobian/package-summary.html"><code>org.apache.commons.math3.optim.nonlinear.vector.jacobian</code></a> package.
<br/>
The <a href="../../../../../org/apache/commons/math3/optim/nonlinear/vector/jacobian/AbstractLeastSquaresOptimizer.html" title="class in org.apache.commons.math3.optim.nonlinear.vector.jacobian"><code>non-linear least-squares optimizers</code></a> are a specialization of the the latter,
that minimize the distance (called <em>cost</em> or <em>&chi;<sup>2</sup></em>)
between model and observations.
<br/>
For cases where the Jacobian cannot be provided, a utility class will
<a href="../../../../../org/apache/commons/math3/optim/nonlinear/scalar/LeastSquaresConverter.html" title="class in org.apache.commons.math3.optim.nonlinear.scalar"><code>convert</code></a> a (vector) model into a (scalar) objective function.
</p>
<p>
This package provides common functionality for the optimization algorithms.
Abstract classes (<a href="../../../../../org/apache/commons/math3/optim/BaseOptimizer.html" title="class in org.apache.commons.math3.optim"><code>BaseOptimizer</code></a> and
<a href="../../../../../org/apache/commons/math3/optim/BaseMultivariateOptimizer.html" title="class in org.apache.commons.math3.optim"><code>BaseMultivariateOptimizer</code></a>) contain
boiler-plate code for storing <a href="../../../../../org/apache/commons/math3/optim/MaxEval.html" title="class in org.apache.commons.math3.optim"><code>evaluations</code></a> and <a href="../../../../../org/apache/commons/math3/optim/MaxIter.html" title="class in org.apache.commons.math3.optim"><code>iterations</code></a>
counters and a user-defined
<a href="../../../../../org/apache/commons/math3/optim/ConvergenceChecker.html" title="interface in org.apache.commons.math3.optim"><code>convergence checker</code></a>.
</p>
<p>
For each of the optimizer types, there is a special implementation that
wraps an optimizer instance and provides a "multi-start" feature: it calls
the underlying optimizer several times with different starting points and
returns the best optimum found, or all optima if so desired.
This could be useful to avoid being trapped in a local extremum.
</p></div>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-use.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/commons/math3/ode/sampling/package-summary.html">Prev Package</a></li>
<li><a href="../../../../../org/apache/commons/math3/optim/linear/package-summary.html">Next Package</a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/commons/math3/optim/package-summary.html" target="_top">Frames</a></li>
<li><a href="package-summary.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip-navbar_bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2003&#x2013;2014 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>