SHOGUN
4.1.0
Main Page
Related Pages
Modules
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
src
shogun
optimization
NLOPTMinimizer.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) The Shogun Machine Learning Toolbox
3
* Written (w) 2015 Wu Lin
4
* All rights reserved.
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions are met:
8
*
9
* 1. Redistributions of source code must retain the above copyright notice, this
10
* list of conditions and the following disclaimer.
11
* 2. Redistributions in binary form must reproduce the above copyright notice,
12
* this list of conditions and the following disclaimer in the documentation
13
* and/or other materials provided with the distribution.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
19
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
*
26
* The views and conclusions contained in the software and documentation are those
27
* of the authors and should not be interpreted as representing official policies,
28
* either expressed or implied, of the Shogun Development Team.
29
*
30
*/
31
32
#ifndef NLOPTMINIMIZER_H
33
#define NLOPTMINIMIZER_H
34
#include <
shogun/optimization/FirstOrderMinimizer.h
>
35
36
#ifdef HAVE_NLOPT
37
#include <nlopt.h>
38
#endif
39
namespace
shogun
40
{
47
class
NLOPTMinimizer
:
public
FirstOrderMinimizer
48
{
49
public
:
51
NLOPTMinimizer
();
52
56
NLOPTMinimizer
(
FirstOrderCostFunction
*fun);
57
59
virtual
~NLOPTMinimizer
();
60
65
virtual
float64_t
minimize
();
66
71
virtual
bool
supports_batch_update
()
const
{
return
true
;}
72
78
virtual
CMinimizerContext
*
save_to_context
() {
return
new
CMinimizerContext
();}
79
85
virtual
void
load_from_context
(
CMinimizerContext
* context) {}
86
87
#ifdef HAVE_NLOPT
88
/* Set parameters used in NLOPT
89
* For details please see http://ab-initio.mit.edu/wiki/index.php/NLopt_C-plus-plus_Reference
90
*
91
* @param algorithm provided by NLOPT for minimization
92
* @param max_iterations the number of cost function evaluations
93
* @param variable_tolerance absolute tolerance on optimization parameters
94
* @param function_tolerance absolute tolerance on function value.
95
*/
96
virtual
void
set_nlopt_parameters
(nlopt_algorithm algorithm=NLOPT_LD_LBFGS,
97
float64_t
max_iterations=1000,
98
float64_t
variable_tolerance=1e-6,
99
float64_t
function_tolerance=1e-6);
100
private
:
101
/* A helper function will be called by the NLOPT library
102
* Note that this function should be static and
103
* private.
104
* */
105
static
double
nlopt_function(
unsigned
dim,
const
double
* variable,
106
double
* gradient,
void
* func_data);
107
108
protected
:
109
110
/* Target variable */
111
SGVector<float64_t>
m_target_variable
;
112
113
/* Init before minimization */
114
virtual
void
init_minimization
();
115
117
float64_t
m_max_iterations
;
118
120
float64_t
m_variable_tolerance
;
121
123
float64_t
m_function_tolerance
;
124
126
nlopt_algorithm
m_nlopt_algorithm
;
127
#endif
/* HAVE_NLOPT */
128
129
private
:
130
/* init */
131
void
init();
132
};
133
134
}
135
#endif
/* NLOPTMINIMIZER_H */
shogun::NLOPTMinimizer::m_target_variable
SGVector< float64_t > m_target_variable
Definition:
NLOPTMinimizer.h:111
shogun::NLOPTMinimizer::~NLOPTMinimizer
virtual ~NLOPTMinimizer()
Definition:
NLOPTMinimizer.cpp:43
shogun::NLOPTMinimizer::load_from_context
virtual void load_from_context(CMinimizerContext *context)
Definition:
NLOPTMinimizer.h:85
shogun::CMinimizerContext
The class is used to serialize and deserialize variables for the optimization framework.
Definition:
MinimizerContext.h:45
shogun::NLOPTMinimizer::init_minimization
virtual void init_minimization()
Definition:
NLOPTMinimizer.cpp:163
shogun::NLOPTMinimizer::m_nlopt_algorithm
nlopt_algorithm m_nlopt_algorithm
Definition:
NLOPTMinimizer.h:126
shogun::NLOPTMinimizer::m_variable_tolerance
float64_t m_variable_tolerance
Definition:
NLOPTMinimizer.h:120
shogun::NLOPTMinimizer::minimize
virtual float64_t minimize()
Definition:
NLOPTMinimizer.cpp:65
shogun::NLOPTMinimizer::m_function_tolerance
float64_t m_function_tolerance
Definition:
NLOPTMinimizer.h:123
shogun::SGVector< float64_t >
float64_t
double float64_t
Definition:
common.h:50
shogun::FirstOrderCostFunction
The first order cost function base class.
Definition:
FirstOrderCostFunction.h:50
shogun::NLOPTMinimizer::NLOPTMinimizer
NLOPTMinimizer()
Definition:
NLOPTMinimizer.cpp:37
shogun
all of classes and functions are contained in the shogun namespace
Definition:
class_list.h:18
shogun::NLOPTMinimizer::m_max_iterations
float64_t m_max_iterations
Definition:
NLOPTMinimizer.h:117
shogun::NLOPTMinimizer::supports_batch_update
virtual bool supports_batch_update() const
Definition:
NLOPTMinimizer.h:71
shogun::NLOPTMinimizer::save_to_context
virtual CMinimizerContext * save_to_context()
Definition:
NLOPTMinimizer.h:78
shogun::NLOPTMinimizer
The class wraps the external NLOPT library.
Definition:
NLOPTMinimizer.h:47
shogun::NLOPTMinimizer::set_nlopt_parameters
virtual void set_nlopt_parameters(nlopt_algorithm algorithm=NLOPT_LD_LBFGS, float64_t max_iterations=1000, float64_t variable_tolerance=1e-6, float64_t function_tolerance=1e-6)
Definition:
NLOPTMinimizer.cpp:133
shogun::FirstOrderMinimizer
The first order minimizer base class.
Definition:
FirstOrderMinimizer.h:54
FirstOrderMinimizer.h
SHOGUN
Machine Learning Toolbox - Documentation