00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef __INDEPENDENTPARAMETERS_H__
00017 #define __INDEPENDENTPARAMETERS_H__
00018
00019
00020
00021 #include <string>
00022
00023
00024
00025 #include "../utilities/vector.h"
00026 #include "../utilities/matrix.h"
00027
00028
00029
00030 #include "../../parsers/tinyxml/tinyxml.h"
00031
00032
00033 namespace OpenNN
00034 {
00035
00039
00040 class IndependentParameters
00041 {
00042
00043 public:
00044
00045
00046
00047 explicit IndependentParameters(void);
00048
00049
00050
00051 explicit IndependentParameters(const unsigned int&);
00052
00053
00054
00055
00056
00057
00058
00059 IndependentParameters(const IndependentParameters&);
00060
00061
00062
00063 virtual ~IndependentParameters(void);
00064
00065
00066
00067 IndependentParameters& operator = (const IndependentParameters&);
00068
00069
00070
00071 bool operator == (const IndependentParameters&) const;
00072
00073
00074
00076
00077 enum ScalingMethod{MeanStandardDeviation, MinimumMaximum};
00078
00079
00080
00081
00082
00085
00086 inline int count_parameters_number(void) const
00087 {
00088 return(parameters.size());
00089 }
00090
00091 const Vector<double>& get_parameters(void) const;
00092 double get_parameter(const unsigned int&) const;
00093
00094
00095
00096 const Vector<std::string>& get_names(void) const;
00097 const std::string& get_name(const unsigned int&) const;
00098
00099 const Vector<std::string>& get_units(void) const;
00100 const std::string& get_unit(const unsigned int&) const;
00101
00102 const Vector<std::string>& get_descriptions(void) const;
00103 const std::string& get_description(const unsigned int&) const;
00104
00105
00106
00107 const Vector<double>& get_minimums(void) const;
00108 double get_minimum(const unsigned int&) const;
00109
00110 const Vector<double>& get_maximums(void) const;
00111 double get_maximum(const unsigned int&) const;
00112
00113 const Vector<double>& get_means(void) const;
00114 double get_mean(const unsigned int&) const;
00115
00116 const Vector<double>& get_standard_deviations(void) const;
00117 double get_standard_deviation(const unsigned int&) const;
00118
00119
00120
00121 const ScalingMethod& get_scaling_method(void) const;
00122 std::string write_scaling_method(void) const;
00123
00124 const bool& get_scaling_flag(void) const;
00125
00126
00127
00128 const Vector<double>& get_lower_bounds(void) const;
00129 double get_lower_bound(const unsigned int&) const;
00130
00131 const Vector<double>& get_upper_bounds(void) const;
00132 double get_upper_bound(const unsigned int&) const;
00133
00134 Vector< Vector<double>* > get_bounds(void);
00135
00136 bool get_bounding_flag(void) const;
00137
00138
00139
00140 const bool& get_display(void) const;
00141
00142
00143
00144 void set(void);
00145 void set(const unsigned int&);
00146 void set(const Vector<double>&);
00147 void set(const IndependentParameters&);
00148
00149 virtual void set_default(void);
00150
00151
00152
00153 void set_parameters_number(const unsigned int&);
00154
00155 void set_parameters(const Vector<double>&);
00156 void set_parameter(const unsigned int&, const double&);
00157
00158
00159
00160 void set_names(const Vector<std::string>&);
00161 void set_name(const unsigned int&, const std::string&);
00162
00163 void set_units(const Vector<std::string>&);
00164 void set_unit(const unsigned int&, const std::string&);
00165
00166 void set_descriptions(const Vector<std::string>&);
00167 void set_description(const unsigned int&, const std::string&);
00168
00169
00170
00171 void set_minimums(const Vector<double>&);
00172 void set_minimum(const unsigned int&, const double&);
00173
00174 void set_maximums(const Vector<double>&);
00175 void set_maximum(const unsigned int&, const double&);
00176
00177 void set_means(const Vector<double>&);
00178 void set_mean(const unsigned int&, const double&);
00179
00180 void set_standard_deviations(const Vector<double>&);
00181 void set_standard_deviation(const unsigned int&, const double&);
00182
00183
00184
00185 void set_scaling_method(const ScalingMethod&);
00186 void set_scaling_method(const std::string&);
00187
00188 void set_scaling_flag(const bool&);
00189
00190
00191
00192 void set_lower_bounds(void);
00193 void set_lower_bounds(const Vector<double>&);
00194 void set_lower_bound(const unsigned int&, const double&);
00195
00196 void set_upper_bounds(void);
00197 void set_upper_bounds(const Vector<double>&);
00198 void set_upper_bound(const unsigned int&, const double&);
00199
00200 void set_bounds(void);
00201 void set_bounds(const Vector< Vector<double> >&);
00202
00203 void set_bounding_flag(const bool&);
00204
00205
00206
00207 void set_display(const bool&);
00208
00209
00210
00211 bool is_empty(void) const;
00212
00213
00214
00215 void initialize_random(void);
00216
00217 void initialize_parameters(const double&);
00218
00219 void initialize_parameters_uniform(void);
00220 void initialize_parameters_uniform(const double&, const double&);
00221 void initialize_parameters_uniform(const Vector<double>&, const Vector<double>&);
00222 void initialize_parameters_uniform(const Vector< Vector<double> >&);
00223
00224 void initialize_parameters_normal(void);
00225 void initialize_parameters_normal(const double&, const double&);
00226 void initialize_parameters_normal(const Vector<double>&, const Vector<double>&);
00227 void initialize_parameters_normal(const Vector< Vector<double> >&);
00228
00229
00230
00231
00232
00233
00234
00235 Vector<double> calculate_scaled_parameters(void) const;
00236 void unscale_parameters(const Vector<double>&);
00237
00238 void bound_parameters(void);
00239 void bound_parameter(const unsigned int&);
00240
00241
00242
00243 Vector< Vector<std::string> > arrange_information(void);
00244
00245
00246
00247
00248
00249 Vector< Vector<double> > arrange_statistics(void);
00250
00251 Vector< Vector<double> > arrange_minimums_maximums(void);
00252 Vector< Vector<double> > arrange_means_standard_deviations(void);
00253
00254 void set_statistics(const Vector< Vector<double> >&);
00255 void set_minimums_maximums(const Vector< Vector<double> >&);
00256 void set_means_standard_deviations(const Vector< Vector<double> >&);
00257
00258
00259
00260 std::string to_string(void) const;
00261
00262 TiXmlElement* to_XML(void) const;
00263 void from_XML(TiXmlElement*);
00264
00265 protected:
00266
00267
00268
00270
00271 Vector<double> parameters;
00272
00274
00275 Vector<std::string> names;
00276
00278
00279 Vector<std::string> units;
00280
00282
00283 Vector<std::string> descriptions;
00284
00286
00287 Vector<double> minimums;
00288
00290
00291 Vector<double> maximums;
00292
00294
00295 Vector<double> means;
00296
00298
00299 Vector<double> standard_deviations;
00300
00302
00303 Vector<double> lower_bounds;
00304
00306
00307 Vector<double> upper_bounds;
00308
00310
00311 ScalingMethod scaling_method;
00312
00314
00315 bool scaling_flag;
00316
00318
00319 bool bounding_flag;
00320
00322
00323 bool display_range_warning;
00324
00326
00327 bool display;
00328 };
00329
00330 }
00331
00332 #endif
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352