SHOGUN
3.2.1
首页
相关页面
模块
类
文件
文件列表
文件成员
全部
类
命名空间
文件
函数
变量
类型定义
枚举
枚举值
友元
宏定义
组
页
src
shogun
modelselection
ParameterCombination.h
浏览该文件的文档.
1
/*
2
* This program is free software; you can redistribute it and/or modify
3
* it under the terms of the GNU General Public License as published by
4
* the Free Software Foundation; either version 3 of the License, or
5
* (at your option) any later version.
6
*
7
* Written (W) 2011-2012 Heiko Strathmann
8
* Written (W) 2013 Roman Votyakov
9
* Copyright (C) 2011 Berlin Institute of Technology and Max-Planck-Society
10
*/
11
12
#ifndef __PARAMETERCOMBINATION_H__
13
#define __PARAMETERCOMBINATION_H__
14
15
#include <
shogun/lib/DynamicObjectArray.h
>
16
#include <
shogun/lib/Map.h
>
17
18
namespace
shogun
19
{
20
class
CModelSelectionParameters;
21
class
CMachine;
22
class
Parameter;
23
41
class
CParameterCombination
:
public
CSGObject
42
{
43
friend
class
CModelSelectionParameters
;
44
45
public
:
47
CParameterCombination
();
48
53
CParameterCombination
(
Parameter
* param);
54
63
CParameterCombination
(
CSGObject
* obj);
64
68
virtual
~CParameterCombination
();
69
75
void
print_tree
(
int
prefix_num=0)
const
;
76
84
void
apply_to_modsel_parameter
(
Parameter
* parameter)
const
;
85
91
void
apply_to_machine
(
CMachine
* machine)
const
;
92
97
void
append_child
(
CParameterCombination
* child);
98
103
void
merge_with
(
CParameterCombination
*
node
);
104
111
CParameterCombination
*
copy_tree
()
const
;
112
125
static
CDynamicObjectArray
*
leaf_sets_multiplication
(
126
const
CDynamicObjectArray
& sets,
127
const
CParameterCombination
* new_root);
128
138
template
<
typename
T>
139
bool
set_parameter
(
const
char
* name,
140
T value,
CSGObject
* parent,
index_t
index = -1)
141
{
142
bool
match =
false
;
143
144
if
(
m_param
)
145
{
146
for
(
index_t
i = 0; i <
m_param
->
get_num_parameters
(); ++i)
147
{
148
void
* param =
m_param
->
get_parameter
(i)->
m_parameter
;
149
150
if
(
m_param
->
get_parameter
(i)->
m_datatype
.
m_ptype
151
==PT_SGOBJECT)
152
{
153
if
(parent == (*((
CSGObject
**)param)))
154
match =
true
;
155
}
156
157
}
158
159
}
160
161
bool
result =
false
;
162
163
for
(
index_t
i = 0; i <
m_child_nodes
->
get_num_elements
(); ++i)
164
{
165
CParameterCombination
* child = (
CParameterCombination
*)
166
m_child_nodes
->
get_element
(i);
167
168
if
(!match)
169
result |= child->
set_parameter
(name, value, parent, index);
170
171
else
172
result |= child->
set_parameter_helper
(name, value, index);
173
174
SG_UNREF
(child);
175
176
}
177
178
return
result;
179
}
180
188
TParameter
*
get_parameter
(
const
char
* name,
CSGObject
* parent);
189
194
bool
has_children
()
const
195
{
196
return
m_child_nodes
->
get_num_elements
()>0;
197
}
198
206
static
DynArray<Parameter*>
*
parameter_set_multiplication
(
207
const
DynArray<Parameter*>
& set_1,
208
const
DynArray<Parameter*>
& set_2);
209
211
virtual
const
char
*
get_name
()
const
212
{
213
return
"ParameterCombination"
;
214
}
215
220
virtual
uint32_t
get_parameters_length
() {
return
m_parameters_length
; }
221
228
virtual
void
build_parameter_values_map
(
229
CMap
<
TParameter
*,
SGVector<float64_t>
>* values_map);
230
235
virtual
void
build_parameter_parent_map
(
236
CMap<TParameter*, CSGObject*>
* parent_map);
237
238
protected
:
249
static
CDynamicObjectArray
*
non_value_tree_multiplication
(
250
const
CDynamicObjectArray
* sets,
251
const
CParameterCombination
* new_root);
252
261
static
CDynamicObjectArray
*
extract_trees_with_name
(
262
const
CDynamicObjectArray
* sets,
const
char
* desired_name);
263
269
TParameter
*
get_parameter_helper
(
const
char
* name);
270
279
bool
set_parameter_helper
(
const
char
* name,
bool
value,
index_t
index);
280
289
bool
set_parameter_helper
(
const
char
* name, int32_t value,
index_t
index);
290
299
bool
set_parameter_helper
(
const
char
* name,
float64_t
value,
index_t
index);
300
301
private
:
302
void
init();
303
304
protected
:
306
Parameter
*
m_param
;
307
309
CDynamicObjectArray
*
m_child_nodes
;
310
312
uint32_t
m_parameters_length
;
313
};
314
}
315
#endif
/* __PARAMETERCOMBINATION_H__ */
SHOGUN
机器学习工具包 - 项目文档