00001 // rdStaticTarget.h 00002 00003 00004 //============================================================================== 00005 // INCLUDES 00006 //============================================================================== 00007 #include <math.h> 00008 #include <rdMath.h> 00009 #include <rdFSQP.h> 00010 #include <rdModel.h> 00011 #include "rdStaticTargetDLL.h" 00012 00013 00014 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00015 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00020 class RDSTATICTARGET_API rdStaticTarget 00021 : public rdOptimizationTarget 00022 { 00023 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00024 //============================================================================== 00025 // DATA 00026 //============================================================================== 00027 private: 00028 rdModel *_model; 00029 double *_dpdx,*_dcdx; 00030 double *_q,*_dqdt; 00031 double *_u,*_dudt; 00032 double *_udot; 00033 int *_u2jointMap,*_u2axisMap; 00034 int *_x2uMap,*_c2uMap; 00035 int _ne; 00036 int *_be; 00037 double *_pe,*_fe; 00038 00039 //============================================================================== 00040 // METHODS 00041 //============================================================================== 00042 public: 00043 //--------------------------------------------------------------------------- 00044 // CONSTRUCTION 00045 //--------------------------------------------------------------------------- 00046 virtual ~rdStaticTarget(); 00047 rdStaticTarget(int aNX,rdModel *aModel); 00048 00049 //--------------------------------------------------------------------------- 00050 // SET AND GET 00051 //--------------------------------------------------------------------------- 00052 void setQ(double *q); 00053 void setU(double *u); 00054 void setUDOT(double *udot); 00055 void setX2UMap(int *aX2U); 00056 void setC2UMap(int *aC2U); 00057 void setFE(int aNE,int *aBE,double *aPE,double *aFE); 00058 00059 //-------------------------------------------------------------------------- 00060 // REQUIRED OPTIMIZATION TARGET METHODS 00061 //-------------------------------------------------------------------------- 00062 // PERFORMANCE AND CONSTRAINTS 00063 int compute(double *x,double *p,double *c); 00064 int computeGradients(double *dx,double *x,double *dpdx,double *dcdx); 00065 // PERFORMANCE 00066 int computePerformance(double *x,double *p); 00067 int computePerformanceGradient(double *x,double *dpdx); 00068 // CONSTRAINTS 00069 int computeConstraint(double *x,int i,double *c); 00070 int computeConstraintGradient(double *x,int i,double *dcdx); 00071 00072 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00073 }; // END class rdStaticTarget 00074 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00075 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.3