SHOGUN  3.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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/config.h>
16 
18 #include <shogun/lib/Map.h>
19 
20 namespace shogun
21 {
22 class CModelSelectionParameters;
23 class CMachine;
24 class Parameter;
25 
44 {
46 
47 public:
50 
56 
66 
70  virtual ~CParameterCombination();
71 
77  void print_tree(int prefix_num=0) const;
78 
86  void apply_to_modsel_parameter(Parameter* parameter) const;
87 
93  void apply_to_machine(CMachine* machine) const;
94 
100 
106 
114 
128  const CDynamicObjectArray& sets,
129  const CParameterCombination* new_root);
130 
140  template <typename T>
141  bool set_parameter(const char* name,
142  T value, CSGObject* parent, index_t index = -1)
143  {
144  bool match = false;
145 
146  if (m_param)
147  {
148  for (index_t i = 0; i < m_param->get_num_parameters(); ++i)
149  {
150  void* param = m_param->get_parameter(i)->m_parameter;
151 
153  ==PT_SGOBJECT)
154  {
155  if (parent == (*((CSGObject**)param)))
156  match = true;
157  }
158 
159  }
160 
161  }
162 
163  bool result = false;
164 
165  for (index_t i = 0; i < m_child_nodes->get_num_elements(); ++i)
166  {
169 
170  if (!match)
171  result |= child->set_parameter(name, value, parent, index);
172 
173  else
174  result |= child->set_parameter_helper(name, value, index);
175 
176  SG_UNREF(child);
177 
178  }
179 
180  return result;
181  }
182 
190  TParameter* get_parameter(const char* name, CSGObject* parent);
191 
196  bool has_children() const
197  {
198  return m_child_nodes->get_num_elements()>0;
199  }
200 
209  const DynArray<Parameter*>& set_1,
210  const DynArray<Parameter*>& set_2);
211 
213  virtual const char* get_name() const
214  {
215  return "ParameterCombination";
216  }
217 
222  virtual uint32_t get_parameters_length() { return m_parameters_length; }
223 
230  virtual void build_parameter_values_map(
231  CMap<TParameter*, SGVector<float64_t> >* values_map);
232 
237  virtual void build_parameter_parent_map(
238  CMap<TParameter*, CSGObject*>* parent_map);
239 
240 protected:
252  const CDynamicObjectArray* sets,
253  const CParameterCombination* new_root);
254 
264  const CDynamicObjectArray* sets, const char* desired_name);
265 
271  TParameter* get_parameter_helper(const char* name);
272 
281  bool set_parameter_helper(const char* name, bool value, index_t index);
282 
291  bool set_parameter_helper(const char* name, int32_t value, index_t index);
292 
301  bool set_parameter_helper(const char* name, float64_t value, index_t index);
302 
303 private:
304  void init();
305 
306 protected:
309 
312 
315 };
316 }
317 #endif /* __PARAMETERCOMBINATION_H__ */

SHOGUN Machine Learning Toolbox - Documentation