From f181503af2c41daa1126062cd44cb4133e0c5d79 Mon Sep 17 00:00:00 2001 From: astrojhgu Date: Tue, 29 Jan 2013 19:34:06 +0800 Subject: modified: core/fitter.hpp modified: core/optimizer.hpp --- core/fitter.hpp | 146 ++++++++++++++++++++++++++--------------------------- core/optimizer.hpp | 59 ++++++++++++---------- 2 files changed, 106 insertions(+), 99 deletions(-) diff --git a/core/fitter.hpp b/core/fitter.hpp index 0bd2e2e..4e170ca 100644 --- a/core/fitter.hpp +++ b/core/fitter.hpp @@ -586,7 +586,7 @@ namespace opt_utilities default construct function */ model() - :p_param_modifier(0) + :p_param_modifier(NULL_PTR) {} @@ -594,10 +594,10 @@ namespace opt_utilities copy construct */ model(const model& rhs) - :p_param_modifier(0) + :p_param_modifier(NULL_PTR) { param_info_list=rhs.param_info_list; - if(rhs.p_param_modifier!=0) + if(rhs.p_param_modifier!=NULL_PTR) { set_param_modifier(*(rhs.p_param_modifier)); } @@ -616,7 +616,7 @@ namespace opt_utilities return *this; } param_info_list=rhs.param_info_list; - if(rhs.p_param_modifier!=0) + if(rhs.p_param_modifier!=NULL_PTR) { set_param_modifier(*(rhs.p_param_modifier)); } @@ -630,7 +630,7 @@ namespace opt_utilities */ virtual ~model() { - if(p_param_modifier) + if(p_param_modifier!=NULL_PTR) { //delete p_param_modifier; p_param_modifier->destroy(); @@ -673,7 +673,7 @@ namespace opt_utilities */ param_modifier& get_param_modifier() { - if(p_param_modifier==0) + if(p_param_modifier==NULL_PTR) { throw param_modifier_not_defined(); } @@ -685,7 +685,7 @@ namespace opt_utilities */ const param_modifier& get_param_modifier()const { - if(p_param_modifier==0) + if(p_param_modifier==NULL_PTR) { throw param_modifier_not_defined(); } @@ -698,7 +698,7 @@ namespace opt_utilities */ Tstr report_param_status(const Tstr& s)const { - if(p_param_modifier==0) + if(p_param_modifier==NULL_PTR) { return Tstr(); } @@ -803,7 +803,7 @@ namespace opt_utilities */ size_t get_num_free_params()const { - if(p_param_modifier) + if(p_param_modifier!=NULL_PTR) { return p_param_modifier->get_num_free_params(); } @@ -854,7 +854,7 @@ namespace opt_utilities */ void set_param_modifier(const param_modifier& pm) { - if(p_param_modifier!=0) + if(p_param_modifier!=NULL_PTR) { //delete p_param_modifier; p_param_modifier->destroy(); @@ -868,12 +868,12 @@ namespace opt_utilities */ void clear_param_modifier() { - if(p_param_modifier!=0) + if(p_param_modifier!=NULL_PTR) { //delete p_param_modifier; p_param_modifier->destroy(); } - p_param_modifier=0; + p_param_modifier=NULL_PTR; } /** @@ -1039,7 +1039,7 @@ namespace opt_utilities */ Tp reform_param(const Tp& p)const { - if(p_param_modifier==0) + if(p_param_modifier==NULL_PTR) { return p; } @@ -1052,7 +1052,7 @@ namespace opt_utilities */ Tp deform_param(const Tp& p)const { - if(p_param_modifier==0) + if(p_param_modifier==NULL_PTR) { return p; } @@ -1105,7 +1105,7 @@ namespace opt_utilities default construct function */ fitter() - :p_model(0),p_statistic(0),p_data_set(0),optengine() + :p_model(NULL_PTR),p_statistic(NULL_PTR),p_data_set(NULL_PTR),optengine() {} @@ -1113,18 +1113,18 @@ namespace opt_utilities copy construct function */ fitter(const fitter& rhs) - :p_model(0),p_statistic(0),p_data_set(0),optengine() + :p_model(NULL_PTR),p_statistic(NULL_PTR),p_data_set(NULL_PTR),optengine() { - if(rhs.p_model!=0) + if(rhs.p_model!=NULL_PTR) { set_model(*(rhs.p_model)); } - if(rhs.p_statistic!=0) + if(rhs.p_statistic!=NULL_PTR) { set_statistic(*(rhs.p_statistic)); //assert(p_statistic->p_fitter!=0); } - if(rhs.p_data_set!=0) + if(rhs.p_data_set!=NULL_PTR) { set_data_set(*(rhs.p_data_set)); } @@ -1141,15 +1141,15 @@ namespace opt_utilities { return *this; } - if(rhs.p_model!=0) + if(rhs.p_model!=NULL_PTR) { set_model(*(rhs.p_model)); } - if(rhs.p_statistic!=0) + if(rhs.p_statistic!=NULL_PTR) { set_statistic(*(rhs.p_statistic)); } - if(rhs.p_data_set!=0) + if(rhs.p_data_set!=NULL_PTR) { set_data_set(*(rhs.p_data_set)); } @@ -1164,17 +1164,17 @@ namespace opt_utilities */ virtual ~fitter() { - if(p_model!=0) + if(p_model!=NULL_PTR) { //delete p_model; p_model->destroy(); } - if(p_statistic!=0) + if(p_statistic!=NULL_PTR) { //delete p_statistic; p_statistic->destroy(); } - if(p_data_set!=0) + if(p_data_set!=NULL_PTR) { //delete p_data_set; p_data_set->destroy(); @@ -1190,7 +1190,7 @@ namespace opt_utilities */ Ty eval_model(const Tx& x,const Tp& p) { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1206,7 +1206,7 @@ namespace opt_utilities Ty eval_model_raw(const Tx& x,const Tp& p) { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1219,7 +1219,7 @@ namespace opt_utilities */ data_set& get_data_set() { - if(p_data_set==0) + if(p_data_set==NULL_PTR) { throw data_not_loaded(); } @@ -1233,7 +1233,7 @@ namespace opt_utilities */ const data_set& get_data_set()const { - if(p_data_set==0) + if(p_data_set==NULL_PTR) { throw data_not_loaded(); } @@ -1246,7 +1246,7 @@ namespace opt_utilities */ model& get_model() { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1259,7 +1259,7 @@ namespace opt_utilities */ const model& get_model()const { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1272,7 +1272,7 @@ namespace opt_utilities */ statistic& get_statistic() { - if(p_statistic==0) + if(p_statistic==NULL_PTR) { throw statistic_not_defined(); } @@ -1285,7 +1285,7 @@ namespace opt_utilities */ const statistic& get_statistic()const { - if(p_statistic==0) + if(p_statistic==NULL_PTR) { throw statistic_not_defined(); } @@ -1326,7 +1326,7 @@ namespace opt_utilities */ param_modifier& get_param_modifier() { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1339,7 +1339,7 @@ namespace opt_utilities */ const param_modifier& get_param_modifier()const { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1353,7 +1353,7 @@ namespace opt_utilities */ Tstr report_param_status(const Tstr& s)const { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1369,7 +1369,7 @@ namespace opt_utilities */ typename element_type_trait::element_type get_param_value(const Tstr& pname)const { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1383,7 +1383,7 @@ namespace opt_utilities */ typename element_type_trait::element_type get_param_lower_limit(const Tstr& pname)const { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1397,7 +1397,7 @@ namespace opt_utilities */ typename element_type_trait::element_type get_param_upper_limit(const Tstr& pname)const { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1411,7 +1411,7 @@ namespace opt_utilities */ const param_info& get_param_info(const Tstr& pname)const { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1425,7 +1425,7 @@ namespace opt_utilities */ const param_info& get_param_info(size_t n)const { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1439,7 +1439,7 @@ namespace opt_utilities */ size_t get_param_order(const Tstr& pname)const { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1452,7 +1452,7 @@ namespace opt_utilities */ size_t get_num_params()const { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1465,7 +1465,7 @@ namespace opt_utilities */ Tp get_all_params()const { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1482,7 +1482,7 @@ namespace opt_utilities */ void set_model(const model& m) { - if(p_model!=0) + if(p_model!=NULL_PTR) { //delete p_model; p_model->destroy(); @@ -1499,7 +1499,7 @@ namespace opt_utilities */ void set_statistic(const statistic& s) { - if(p_statistic!=0) + if(p_statistic!=NULL_PTR) { //delete p_statistic; p_statistic->destroy(); @@ -1515,7 +1515,7 @@ namespace opt_utilities */ void set_param_modifier(const param_modifier& pm) { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1527,7 +1527,7 @@ namespace opt_utilities */ void clear_param_modifier() { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1540,13 +1540,13 @@ namespace opt_utilities */ void load_data(const data_set& da) { - if(p_data_set!=0) + if(p_data_set!=NULL_PTR) { //delete p_data_set; p_data_set->destroy(); } p_data_set=da.clone(); - if(p_statistic!=0) + if(p_statistic!=NULL_PTR) { p_statistic->set_fitter(*this); } @@ -1570,7 +1570,7 @@ namespace opt_utilities void set_param_value(const Tstr& pname, const typename element_type_trait::element_type& v) { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1585,7 +1585,7 @@ namespace opt_utilities void set_param_lower_limit(const Tstr& pname, const typename element_type_trait::element_type& v) { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1600,7 +1600,7 @@ namespace opt_utilities void set_param_upper_limit(const Tstr& pname, const typename element_type_trait::element_type& v) { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1615,7 +1615,7 @@ namespace opt_utilities void set_param_value(const Tp& param) { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1628,7 +1628,7 @@ namespace opt_utilities */ void set_param_lower_limit(const Tp& param) { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1641,7 +1641,7 @@ namespace opt_utilities */ void set_param_upper_limit(const Tp& param) { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1656,7 +1656,7 @@ namespace opt_utilities void set_param_info(const param_info& pinfo) { - if(p_model==0) + if(p_model==NULL_PTR) { throw model_not_defined(); } @@ -1671,7 +1671,7 @@ namespace opt_utilities */ void set_opt_method(const opt_method& pm) { - //assert(p_optimizer!=0); + //assert(p_optimizer!=NULL_PTR); optengine.set_opt_method(pm); } @@ -1690,19 +1690,19 @@ namespace opt_utilities */ Tp fit() { - // assert(p_model!=0); - if(p_model==0) + // assert(p_model!=NULL_PTR); + if(p_model==NULL_PTR) { throw model_not_defined(); } - if(p_data_set==0) + if(p_data_set==NULL_PTR) { throw data_not_loaded(); } - //assert(p_optimizer!=0); - //assert(p_data_set!=0); - //assert(p_statistic!=0); - if(p_statistic==0) + //assert(p_optimizer!=NULL_PTR); + //assert(p_data_set!=NULL_PTR); + //assert(p_statistic!=NULL_PTR); + if(p_statistic==NULL_PTR) { throw statistic_not_defined(); } @@ -1724,12 +1724,12 @@ namespace opt_utilities // std::cout<& get_fitter()const { - if(p_fitter==0) + if(p_fitter==NULL_PTR) { throw fitter_not_set(); } @@ -1890,7 +1890,7 @@ namespace opt_utilities */ Ty eval_model(const Tx& x,const Tp& p) { - if(p_fitter==0) + if(p_fitter==NULL_PTR) { throw fitter_not_set(); } @@ -1903,7 +1903,7 @@ namespace opt_utilities */ const data_set& get_data_set()const { - if(p_fitter==0) + if(p_fitter==NULL_PTR) { throw fitter_not_set(); } @@ -1962,7 +1962,7 @@ namespace opt_utilities the default construct function */ param_modifier() - :p_model(0) + :p_model(NULL_PTR) {} /** @@ -2052,7 +2052,7 @@ namespace opt_utilities */ const model& get_model()const { - if(p_model==0) + if(p_model==NULL_PTR) { std::cout<<"dajf;asdjfk;"; throw model_not_defined(); diff --git a/core/optimizer.hpp b/core/optimizer.hpp index 63e4edd..3b7f0f4 100644 --- a/core/optimizer.hpp +++ b/core/optimizer.hpp @@ -24,6 +24,13 @@ using namespace std; */ namespace opt_utilities { + /////////NULL_PTR////////////////////////////////////////// +#if __cplusplus<201103L +#define NULL_PTR 0 +#else + const std::nullptr_t NULL_PTR=nullptr; +#endif + /////////Forward declare/////////////////////////////////// template class optimizer; @@ -367,7 +374,7 @@ namespace opt_utilities default construct function */ optimizer() - :p_opt_method(0),p_func_obj(0) + :p_opt_method(NULL_PTR),p_func_obj(NULL_PTR) {} /** @@ -385,13 +392,13 @@ namespace opt_utilities copy construct function */ optimizer(const optimizer& rhs) - :p_opt_method(0),p_func_obj(0) + :p_opt_method(NULL_PTR),p_func_obj(NULL_PTR) { - if(rhs.p_func_obj!=0) + if(rhs.p_func_obj!=NULL_PTR) { set_func_obj(*(rhs.p_func_obj)); } - if(rhs.p_opt_method!=0) + if(rhs.p_opt_method!=NULL_PTR) { set_opt_method(*(rhs.p_opt_method)); } @@ -407,11 +414,11 @@ namespace opt_utilities { return *this; } - if(rhs.p_func_obj!=0) + if(rhs.p_func_obj!=NULL_PTR) { set_func_obj(*(rhs.p_func_obj)); } - if(rhs.p_opt_method!=0) + if(rhs.p_opt_method!=NULL_PTR) { set_opt_method(*(rhs.p_opt_method)); } @@ -423,12 +430,12 @@ namespace opt_utilities */ virtual ~optimizer() { - if(p_func_obj!=0) + if(p_func_obj!=NULL_PTR) { //delete p_func_obj; p_func_obj->destroy(); } - if(p_opt_method!=0) + if(p_opt_method!=NULL_PTR) { //delete p_opt_method; p_opt_method->destroy(); @@ -442,13 +449,13 @@ namespace opt_utilities */ void set_func_obj(const func_obj& fc) { - if(p_func_obj!=0) + if(p_func_obj!=NULL_PTR) { //delete p_func_obj; p_func_obj->destroy(); } p_func_obj=fc.clone(); - if(p_opt_method!=0) + if(p_opt_method!=NULL_PTR) { p_opt_method->set_optimizer(*this); } @@ -460,7 +467,7 @@ namespace opt_utilities */ void set_opt_method(const opt_method& om) { - if(p_opt_method!=0) + if(p_opt_method!=NULL_PTR) { //delete p_opt_method; p_opt_method->destroy(); @@ -475,7 +482,7 @@ namespace opt_utilities */ opt_method& get_opt_method() { - if(p_opt_method==0) + if(p_opt_method==NULL_PTR) { throw opt_method_not_defined(); } @@ -488,7 +495,7 @@ namespace opt_utilities */ const opt_method& get_opt_method()const { - if(p_opt_method==0) + if(p_opt_method==NULL_PTR) { throw opt_method_not_defined(); } @@ -502,7 +509,7 @@ namespace opt_utilities */ void set_precision(rT x) { - if(p_opt_method==0) + if(p_opt_method==NULL_PTR) { throw opt_method_not_defined(); } @@ -515,7 +522,7 @@ namespace opt_utilities rT get_precision()const { - if(p_opt_method==0) + if(p_opt_method==NULL_PTR) { throw opt_method_not_defined(); } @@ -529,7 +536,7 @@ namespace opt_utilities */ void set_start_point(const pT& x) { - if(p_opt_method==0) + if(p_opt_method==NULL_PTR) { throw opt_method_not_defined(); } @@ -542,7 +549,7 @@ namespace opt_utilities pT get_start_point()const { - if(p_opt_method==0) + if(p_opt_method==NULL_PTR) { throw opt_method_not_defined(); } @@ -556,7 +563,7 @@ namespace opt_utilities */ void set_lower_limit(const pT& x) { - if(p_opt_method==0) + if(p_opt_method==NULL_PTR) { throw opt_method_not_defined(); } @@ -569,7 +576,7 @@ namespace opt_utilities */ pT get_lower_limit()const { - if(p_opt_method==0) + if(p_opt_method==NULL_PTR) { throw opt_method_not_defined(); } @@ -583,7 +590,7 @@ namespace opt_utilities */ void set_upper_limit(const pT& x) { - if(p_opt_method==0) + if(p_opt_method==NULL_PTR) { throw opt_method_not_defined(); } @@ -596,7 +603,7 @@ namespace opt_utilities pT get_upper_limit()const { - if(p_opt_method==0) + if(p_opt_method==NULL_PTR) { throw opt_method_not_defined(); } @@ -611,7 +618,7 @@ namespace opt_utilities */ rT eval(const pT& x) { - if(p_func_obj==0) + if(p_func_obj==NULL_PTR) { throw object_function_not_defined(); } @@ -626,11 +633,11 @@ namespace opt_utilities */ pT optimize() { - if(p_opt_method==0) + if(p_opt_method==NULL_PTR) { throw opt_method_not_defined(); } - if(p_func_obj==0) + if(p_func_obj==NULL_PTR) { throw object_function_not_defined(); } @@ -663,7 +670,7 @@ namespace opt_utilities */ func_obj& get_func_obj() { - if(p_func_obj==0) + if(p_func_obj==NULL_PTR) { throw object_function_not_defined(); } @@ -675,7 +682,7 @@ namespace opt_utilities */ const func_obj& get_func_obj()const { - if(p_func_obj==0) + if(p_func_obj==NULL_PTR) { throw object_function_not_defined(); } -- cgit v1.2.2