SHOGUN
4.1.0
首页
相关页面
模块
类
文件
文件列表
文件成员
全部
类
命名空间
文件
函数
变量
类型定义
枚举
枚举值
友元
宏定义
组
页
src
shogun
optimization
NLOPTMinimizer.h
浏览该文件的文档.
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
机器学习工具包 - 项目文档