blob: 8550a806c057984517040da2b7dcef166aedee22 [file] [log] [blame]
Raymonddee08492015-04-02 10:43:13 -07001<html>
2<!--
3 Licensed to the Apache Software Foundation (ASF) under one or more
4 contributor license agreements. See the NOTICE file distributed with
5 this work for additional information regarding copyright ownership.
6 The ASF licenses this file to You under the Apache License, Version 2.0
7 (the "License"); you may not use this file except in compliance with
8 the License. You may obtain a copy of the License at
9
10 http://www.apache.org/licenses/LICENSE-2.0
11
12 Unless required by applicable law or agreed to in writing, software
13 distributed under the License is distributed on an "AS IS" BASIS,
14 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 See the License for the specific language governing permissions and
16 limitations under the License.
17 -->
18 <!-- $Revision: 758074 $ -->
19<body>
20<p>
21This package provides common interfaces for the optimization algorithms
22provided in sub-packages. The main interfaces defines optimizers and convergence
23checkers. The functions that are optimized by the algorithms provided by this
24package and its sub-packages are a subset of the one defined in the <code>analysis</code>
25package, namely the real and vector valued functions. These functions are called
26objective function here. When the goal is to minimize, the functions are often called
27cost function, this name is not used in this package.
28</p>
29
30<p>
31Optimizers are the algorithms that will either minimize or maximize, the objective function
32by changing its input variables set until an optimal set is found. There are only four
33interfaces defining the common behavior of optimizers, one for each supported type of objective
34function:
35<ul>
36 <li>{@link org.apache.commons.math.optimization.UnivariateRealOptimizer
37 UnivariateRealOptimizer} for {@link org.apache.commons.math.analysis.UnivariateRealFunction
38 univariate real functions}</li>
39 <li>{@link org.apache.commons.math.optimization.MultivariateRealOptimizer
40 MultivariateRealOptimizer} for {@link org.apache.commons.math.analysis.MultivariateRealFunction
41 multivariate real functions}</li>
42 <li>{@link org.apache.commons.math.optimization.DifferentiableMultivariateRealOptimizer
43 DifferentiableMultivariateRealOptimizer} for {@link
44 org.apache.commons.math.analysis.DifferentiableMultivariateRealFunction
45 differentiable multivariate real functions}</li>
46 <li>{@link org.apache.commons.math.optimization.DifferentiableMultivariateVectorialOptimizer
47 DifferentiableMultivariateVectorialOptimizer} for {@link
48 org.apache.commons.math.analysis.DifferentiableMultivariateVectorialFunction
49 differentiable multivariate vectorial functions}</li>
50</ul>
51</p>
52
53<p>
54Despite there are only four types of supported optimizers, it is possible to optimize a
55transform a {@link org.apache.commons.math.analysis.MultivariateVectorialFunction
56non-differentiable multivariate vectorial function} by converting it to a {@link
57org.apache.commons.math.analysis.MultivariateRealFunction non-differentiable multivariate
58real function} thanks to the {@link
59org.apache.commons.math.optimization.LeastSquaresConverter LeastSquaresConverter} helper class.
60The transformed function can be optimized using any implementation of the {@link
61org.apache.commons.math.optimization.MultivariateRealOptimizer MultivariateRealOptimizer} interface.
62</p>
63
64<p>
65For each of the four types of supported optimizers, there is a special implementation which
66wraps a classical optimizer in order to add it a multi-start feature. This feature call the
67underlying optimizer several times in sequence with different starting points and returns
68the best optimum found or all optima if desired. This is a classical way to prevent being
69trapped into a local extremum when looking for a global one.
70</p>
71</body>
72</html>