00001 // This is gel/pop/pop_manager.h 00002 #ifndef pop_manager_h_ 00003 #define pop_manager_h_ 00004 #ifdef VCL_NEEDS_PRAGMA_INTERFACE 00005 #pragma interface 00006 #endif 00007 //: 00008 // \file 00009 // \brief this class keeps track of all parameterized objects. 00010 // 00011 // \author 00012 // Peter Tu April 2003 00013 // General Electric 00014 // 00015 //------------------------------------------------------------------------------- 00016 #include <pop/pop_parameter.h> 00017 #include <pop/pop_object.h> 00018 #include <vcl_vector.h> 00019 #include <vcl_list.h> 00020 #include <pop/pop_geometric_cost_function.h> 00021 00022 //: A class for keeping track of parameterized objects 00023 class pop_manager 00024 { 00025 public: 00026 //: constructor 00027 pop_manager(); 00028 00029 //: destructor 00030 ~pop_manager(); 00031 00032 //: create a new parameter 00033 pop_parameter* new_parameter(); 00034 00035 //: create a vector of parameters 00036 vcl_vector<pop_parameter*> new_parameters(int num_param); 00037 00038 //: add a new parameter object 00039 void add_object(pop_object *obj); 00040 00041 //: update all the objects 00042 void update(); 00043 00044 //: get a vector of changeable parameters 00045 vcl_vector<pop_parameter*> get_changeable_parameters(); 00046 00047 //: optimize the parameters using Levenberg Marquardt 00048 void optimize(vcl_vector<pop_geometric_cost_function*> &obs_costs); 00049 00050 private: 00051 vcl_list<pop_parameter*> params_; 00052 vcl_list<pop_object*> objects_; 00053 }; 00054 00055 #endif // pop_manager_h_
1.5.1