Exemplo n.º 1
0
OneMax::OneMax(ParamMap& v) :Problem((v[param_proId]), (v[param_numDim]), (v[param_proName]), 1) {
	setOptType(MAX_OPT);
	addProTag(ONEMAX);
	m_globalOpt.setNumOpts(1);
	for (int i = 0; i < m_numDim; i++)	m_globalOpt[0].data().m_x[i] = 1;
	m_globalOpt[0].data().m_obj[0] = m_numDim;
}
Exemplo n.º 2
0
ZDT::ZDT(ParamMap &v):BenchmarkFunction((v[param_proId]),(v[param_numDim]),(v[param_proName]),2)
{
    setSearchRange(0.,1.);
	set<ProTag> p_tag = { MOP, CONT };
	setProTag(p_tag);
	setOptType(MIN_OPT,-1);
	m_popInitialMode=POP_INIT_UNIFORM;
}
Exemplo n.º 3
0
OneMax::OneMax(const int rId, const int rDimNumber, string rName, const int numObj) :Problem(rId, rDimNumber, rName, numObj) {

	setOptType(MAX_OPT);
	addProTag(ONEMAX);
	m_globalOpt.setNumOpts(1);
	for (int i = 0; i < m_numDim; i++)	m_globalOpt[0].data().m_x[i] = 1;
	m_globalOpt[0].data().m_obj[0] = m_numDim;

}
Exemplo n.º 4
0
DTLZ::DTLZ(int ID, int numDim, const string &proName, int numObj) :BenchmarkFunction(ID, numDim, proName, numObj)
{
	if (m_numObj > m_numDim) throw myException("the number of dim must be greater or eaqual to the number of obj for DTLZ pros");
    setSearchRange(0.,1.);
	set<ProTag> p_tag = { MOP, CONT };
	setProTag(p_tag);
	setOptType(MIN_OPT,-1);
	m_popInitialMode=POP_INIT_UNIFORM;
	generateAdLoadPF();
}
Exemplo n.º 5
0
void FShaffer::initialize(){
	setAccuracy(1.e-6);
	setDisAccuracy(0.1);
	setOptType(MAX_OPT);
	 m_globalOpt.setFlagLocTrue();
	 m_originalGlobalOpt.setFlagLocTrue();
	 m_globalOpt.setNumOpts(1);
	 m_originalGlobalOpt.setNumOpts(1);

	 CodeVReal x(m_numDim,1);
	 x.m_x[0]=0.0;x.m_x[1]=0.0; x.m_obj[0]=0.9999;
	 m_globalOpt[0].data()=m_originalGlobalOpt[0].data()=x;
}
Exemplo n.º 6
0
void FValleys::initialize(){
	setOptType(MAX_OPT); 
	setAccuracy(1.e-4);
	setDisAccuracy(0.5);
	m_globalOpt.setFlagLocTrue();
	m_globalOpt.setNumOpts(2); //1 gopt + 1 lopt
	 
	CodeVReal x(m_numDim,1);
	x.m_x[0]=1.69714;x.m_x[1]=0.0; x.m_obj[0]=4.8168;
	m_globalOpt[0].data()=x;
	x.m_x[0]=-1.44446;x.m_x[1]=0.0; x.m_obj[0]=3.2460;
	m_globalOpt[1].data()=x;

	m_originalGlobalOpt=m_globalOpt;
	addProTag(MMP);
}
Exemplo n.º 7
0
void MovingPeak::initialize(){
    int i=0;
	setAccuracy(0.1);
	setDisAccuracy(0.2);
	setSearchRange(0,100);
    setOptType(MAX_OPT);
	m_globalOpt.setRecordFlag(false);
	updateTimeLinkage();
	for ( i=0; i< m_numPeaks; i++)
		for ( int j=0;j<m_numDim; j++){
	  mpp_peak[i][j] = 100.0*Global::msp_global->mp_uniformPro->Next();
	  mpp_prevMovement[i][j] = Global::msp_global->mp_uniformPro->Next()-0.5;
	}

	if (m_standardHeight <= 0.0){
        for ( i=0; i< m_numPeaks; i++) mp_height[i]=(m_maxHeight-m_minHeight)*Global::msp_global->mp_uniformPro->Next()+m_minHeight;
	}else{
        for (i=0; i< m_numPeaks; i++) mp_height[i]= m_standardHeight;
	}

	if (m_standardWidth <= 0.0){
        for (i=0; i< m_numPeaks; i++)
            mp_width[i]= (m_maxWidth-m_minWidth)*Global::msp_global->mp_uniformPro->Next()+m_minWidth;
	}else{
	for (i=0; i< m_numPeaks; i++)
	  mp_width[i]= m_standardWidth;
	}

	calculateGlobalOptima();
	/*for (i=0; i< m_numPeaks; i++) {
		mp_heightOrder[i]=i;
		mp_found[i]=false;
	}
	vector<int> idx(m_numPeaks);
	gQuickSort(mp_height,m_numPeaks,idx);
	copy(idx.begin(),idx.end(),mp_heightOrder);
	gAmendSortedOrder<double*>(mp_height,mp_heightOrder,mp_amendedHeightOrder,m_numPeaks);*/
	for ( i=0; i< m_numPeaks; i++) mp_isTracked[i]=0;

	for (i=0;i<m_numPeaks; i++) 
	copy(mpp_peak[i],mpp_peak[i]+m_numDim,mpp_prePeak[i]);
	copy(mp_height,mp_height+m_numPeaks,mp_preHeight);
	copy(mp_width,mp_width+m_numPeaks,mp_preWidth);
	//calculateAssociateRadius();
	m_peakQaulity=0;
	addProTag(MMP);
}
Exemplo n.º 8
0
void FBraninRCOS::initialize(){
	setOptType(MIN_OPT);
	setDisAccuracy(1.0);
	setAccuracy(1.e-5);
	m_globalOpt.setFlagLocTrue();	 
	m_globalOpt.setNumOpts(3);
	
	CodeVReal x(m_numDim,1);
	x.m_x[0]=-OFEC_PI;x.m_x[1]=12.275; x.m_obj[0]=0.397887;
	evaluate_(x,false);
	m_globalOpt[0].data()=x;
	x.m_x[0]=OFEC_PI;x.m_x[1]=2.275; 
	m_globalOpt[1].data()=x;
	x.m_x[0]=9.42478;x.m_x[1]=2.475; 
	m_globalOpt[2].data()=x;
	m_originalGlobalOpt=m_globalOpt;
	addProTag(MMP);
	setObjSet();
}
Exemplo n.º 9
0
void FWaves::initialize(){
	setOptType(MAX_OPT); 
	setDisAccuracy(0.15);
	setAccuracy(1.e-3);
	m_globalOpt.setFlagLocTrue();
	m_globalOpt.setNumOpts(10);	//one global optimum+9 local optimum

	ifstream in;
	stringstream ss;
	ss<<Global::g_arg[param_workingDir]<<"Problem/FunctionOpt/Data/"<<m_name<<"_Opt_"<<m_numDim<<"Dim.txt";
	in.open(ss.str().c_str());
	if(!in)		throw myException("cannot open data file@FShubert::initialize()");

	for(int i=0;i<10;++i){
		double x0,x1,obj;
		in>>x0>>x1>>obj;
		m_globalOpt[i].data().m_x[0]=x0; m_globalOpt[i].data().m_x[1]=x1; m_globalOpt[i].data().m_obj[0]=obj;
	}
	in.close();
	m_originalGlobalOpt=m_globalOpt;
	addProTag(MMP);
}
Exemplo n.º 10
0
Arquivo: FSzu.cpp Projeto: dcshen/OFEC
void FSzu::initialize(){
	setOptType(MIN_OPT);

	 m_originalGlobalOpt.setNumOpts(1);
	 vector<vector<double>> gobj;

	 if(m_numDim==2){
		 gobj.push_back(vector<double>(1,-156.66));	 
	 }else if(m_numDim==3) {
		 gobj.push_back(vector<double>(1,-235.0));
	 }else if(m_numDim==4) {
		 gobj.push_back(vector<double>(1,-313.33));
	 }else if(m_numDim==5) {
		 gobj.push_back(vector<double>(1,-391.66));
	 }else if(m_numDim==6) {
		 gobj.push_back(vector<double>(1,-469.99));
	 }else if(m_numDim==7) {
		 gobj.push_back(vector<double>(1,-548.33));	
	 }else if(m_numDim==8) {
		 gobj.push_back(vector<double>(1,-626.66));	
	 }else if(m_numDim==9) {
		 gobj.push_back(vector<double>(1,-704.99));		
	 }

	 if(m_numDim>=2&&m_numDim<=9){
		 m_originalGlobalOpt.setGloObj(gobj);
		 m_originalGlobalOpt.flagGloObj()=true;
		 m_originalGlobalOpt.flagLoc()=false;
	 }
	 else{
		m_originalGlobalOpt.flagGloObj()=false;
		m_originalGlobalOpt.flagLoc()=false;
	 } 
	 m_globalOpt=m_originalGlobalOpt;
	 setDisAccuracy(0.1);
	 setAccuracy(1.e-2);
}
Exemplo n.º 11
0
void CompositionDBG::initialize(const ChangeType rT, const ComDBGFuncID rF,double const rChangingRatio,const bool rFlagDimChange, const bool rFlagNumPeakChange,
	const int peakNumChangeMode,const bool flagNoise, const bool flagTimelinkage){

    RealDBG::initialize(rT,rFlagDimChange,rFlagNumPeakChange,peakNumChangeMode,flagNoise,flagTimelinkage);
    setOptType(MIN_OPT);
    setNumberofChanges(rChangingRatio);
	if(!ms_funID.get()) ms_funID.reset(new ComDBGFuncID());
    *CompositionDBG::ms_funID=rF;
	setAccuracy(1.0);
	setDisAccuracy(0.1);
	m_globalOpt.setFlagLocTrue();
    ProblemTag *basic_fun=new ProblemTag[m_numPeaks];

	switch(*CompositionDBG::ms_funID){
		case COMDBG_SPHERE:
			for(int i=0;i<m_numPeaks;i++) basic_fun[i]=Sphere;
			break;
		case COMDBG_RASTRIGIN:
			for(int i=0;i<m_numPeaks;i++) basic_fun[i]=Rastrigin;
			break;
		case COMDBG_GRIEWANK:
			for(int i=0;i<m_numPeaks;i++) basic_fun[i]=Griewank;
			break;
		case COMDBG_ACKLEY:
			for(int i=0;i<m_numPeaks;i++) basic_fun[i]=Ackley;
			break;
		case COMDBG_HYBRID:
			basic_fun[0]=Sphere;		basic_fun[5]=Sphere;
			basic_fun[1]=Rastrigin;		basic_fun[6]=Rastrigin;
			basic_fun[2]=Weierstrass;	basic_fun[7]=Weierstrass;
			basic_fun[3]=Griewank;		basic_fun[8]=Griewank;
			basic_fun[4]=Ackley;		basic_fun[9]=Ackley;
			for(int i=10;i<m_numPeaks;i++) basic_fun[i]=Sphere;
			break;
	}
	setBasicFunction(basic_fun);
    delete []basic_fun;
	basic_fun=0;

	double *t=new double[m_numPeaks];
	for(int i=0;i<m_numPeaks;i++)t[i]=1.;
	setCovergeSevrity(t);
	setStretchSeverity();
	setRotationMatrix();
	
	Matrix m(m_numDim,1);
	double *gene=new double[m_numDim];
	for(int i=0;i<m_numPeaks;i++){
		for(int j=0;j<m_numDim;j++){ // calculate the estimate max value of funciton i
			gene[j]=m_searchRange[j].m_upper;
			gene[j]/=mp_stretchSeverity[i];
		}
		m.setDataRow(gene,m_numDim);
		m*=mp_rotationMatrix[i];
		copy(m[0].begin(),m[0].end(),gene);
		correctSolution(mp_comFunction[i],gene);
		mp_fmax[i]=selectFun(mp_comFunction[i],gene);
		if(mp_fmax[i]==0)   throw myException("the estimation max value must be greater not equal to 0@CompositionDBG::initialize");

	}
	
	calculateGlobalOptima();
	updateTimeLinkage();

	delete [] t;
	delete [] gene;
	t=0;
	gene=0;

 }