www.pudn.com > dcx_final.rar > dcx.cpp


#include  
#include  
 
double fxy1(double *p)   //目标函数外部给出,变量用指针表示:*(p+i),i=0,1,2…… 
{ 
	return(4*(*p-5)*(*p-5)+(*(p+1)-6)*(*(p+1)-6)+((*(p+2)-10)*(*(p+2)-10))); 
} 
 
double fxy2(double *p) 
{ 
	return(10*(*p+*(p+1)-5)*(*p+*(p+1)-5)+(*p-*(p+1))*(*p-*(p+1))); 
} 
 
double fxy3(double *p) 
{ 
	return(*p**p+4**(p+1)**(p+1)); 
} 
double fxy4(double *p) 
{ 
	return(*p**p+*(p+1)**(p+1)-*p**(p+1)-10**p-4**(p+1)+60); 
} 
 
double fxy(double *p) 
{ 
	return(4*(*p)*(*p)+(*(p+1)-1)*(*(p+1)-1)+1.0/(*p+*(p+1)-6)); 
} 
 
class dcx 
{ 
private: 
	double xl,xh,xg,xc; 
	int n,f_xl,f_xh,f_xg,k; 
public: 
	void paixu(double *m) 
	{ 
		int i; 
		xl = *m; 
		xh = *m; 
		xg = *m; 
		f_xl = 0; 
		f_xh = 0; 
		f_xg = 0; 
		for(i=0;ixh) 
			{ 
				xh = *(m+i); 
				f_xh = i; 
			} 
		} 
		xg = xl; 
		f_xg = f_xl; 
		for(i=0;ijing)   //sqrt(1.0/(n+1)*ass) 
	 { 
 
		 
 
		for(j=0;jxh) 
			{ 
				for(i=0;i