SHOGUN
v3.0.0
Main Page
Related Pages
Modules
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
src
shogun
modelselection
ParameterCombination.h
Go to the documentation of this file.
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
Machine Learning Toolbox - Documentation