aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorastrojhgu <astrojhgu@gmail.com>2013-01-29 19:34:06 +0800
committerastrojhgu <astrojhgu@gmail.com>2013-01-29 19:34:06 +0800
commitf181503af2c41daa1126062cd44cb4133e0c5d79 (patch)
tree09cf7f9ceaddbe599718ae648b82a09189d03318
parentd612b6b17e16042e59e220722dbf64d46f5fd760 (diff)
downloadopt-utilities-f181503af2c41daa1126062cd44cb4133e0c5d79.tar.bz2
modified: core/fitter.hpp
modified: core/optimizer.hpp
-rw-r--r--core/fitter.hpp146
-rw-r--r--core/optimizer.hpp59
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<Ty,Tx,Tp,Tstr>& 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<Ty,Tx,Tp,Tstr>& 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<Ty,Tx,Tp,Tstr>& 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<Ty,Tx>& 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<Ty,Tx>& 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<Ty,Tx,Tp,Tstr>& get_model()
{
- if(p_model==0)
+ if(p_model==NULL_PTR)
{
throw model_not_defined();
}
@@ -1259,7 +1259,7 @@ namespace opt_utilities
*/
const model<Ty,Tx,Tp,Tstr>& get_model()const
{
- if(p_model==0)
+ if(p_model==NULL_PTR)
{
throw model_not_defined();
}
@@ -1272,7 +1272,7 @@ namespace opt_utilities
*/
statistic<Ty,Tx,Tp,Ts,Tstr>& get_statistic()
{
- if(p_statistic==0)
+ if(p_statistic==NULL_PTR)
{
throw statistic_not_defined();
}
@@ -1285,7 +1285,7 @@ namespace opt_utilities
*/
const statistic<Ty,Tx,Tp,Ts,Tstr>& 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<Ty,Tx,Tp,Tstr>& 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<Ty,Tx,Tp,Tstr>& 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<Tp>::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<Tp>::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<Tp>::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<Tp,Tstr>& 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<Tp,Tstr>& 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<Ty,Tx,Tp,Tstr>& 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<Ty,Tx,Tp,Ts,Tstr>& 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<Ty,Tx,Tp,Tstr>& 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<Ty,Tx>& 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<Tp>::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<Tp>::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<Tp>::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<Tp,Tstr>& 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<Ts,Tp>& 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<<start_point.size()<<std::endl;
- //for(int i=0;i<(int)start_point.size();++i)
+ //for(int i=NULL_PTR;i<(int)start_point.size();++i)
// {
// std::cout<<start_point[i]<<",";
// }
//std::cout<<std::endl;
- //assert(start_point.size()!=0);
+ //assert(start_point.size()!=NULL_PTR);
if(get_size(start_point)==0)
{
//return start_point;
@@ -1800,7 +1800,7 @@ namespace opt_utilities
default construct
*/
statistic()
- :p_fitter(0)
+ :p_fitter(NULL_PTR)
{}
/**
@@ -1875,7 +1875,7 @@ namespace opt_utilities
*/
virtual const fitter<Ty,Tx,Tp,Ts,Tstr>& 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<Ty,Tx>& 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<Ty,Tx,Tp,Tstr>& 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 <typename rT,typename pT>
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<rT,pT>& 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<rT,pT>& 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<rT,pT>& 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<rT,pT>& 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<rT,pT>& 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<rT,pT>& get_func_obj()const
{
- if(p_func_obj==0)
+ if(p_func_obj==NULL_PTR)
{
throw object_function_not_defined();
}