bool HybridComp::loadRotation(){ string s; char a[100]; sprintf(a,"%d",m_numDim); strcat(a,"Dim.txt"); s=a; s.insert(0,m_name+"_RotM_"); s.insert(0,"Problem/FunctionOpt/Data/");//probDataPath s.insert(0,Global::g_arg[param_workingDir]); ifstream in; in.open(s.c_str()); if(in.fail()){ for(int i=0;i<m_numFuncs;i++){ if(IS_PROBLEM_NAME(m_id,"FUN_Com")||IS_PROBLEM_NAME(m_id,"FUN_Com_CEC05")){ mpp_f[i]->getRotation()->identity(); }else{ mpp_f[i]->getRotation()->randomize(Program_Problem); mpp_f[i]->getRotation()->generateRotationMatrix(mpp_f[i]->getConditionNumber(),Program_Problem); } } ofstream out(s.c_str()); for(int i=0;i<m_numFuncs;i++) mpp_f[i]->getRotation()->Print(out); out.close(); }else{ for(int i=0;i<m_numFuncs;i++) mpp_f[i]->getRotation()->Read_Data(in); } for(int i=0;i<m_numFuncs;i++) mpp_f[i]->setRotationFlag(true); in.close(); return true; }
void FWeierstrass::initialize(){ setOriginalGlobalOpt(); if(IS_PROBLEM_NAME(m_id,"FUN_Weierstrass")){ }else if(IS_PROBLEM_NAME(m_id,"FUN_R_Weierstrass")){ setConditionNumber(2); loadRotation(); }else if(IS_PROBLEM_NAME(m_id,"FUN_RS_Weierstrass")){ setConditionNumber(5); loadTranslation(); loadRotation(); }else if(IS_PROBLEM_NAME(m_id,"FUN_RS_Weierstrass_CEC05")){ setConditionNumber(5); loadTranslation(); loadRotation(); setBias(90); }else { throw myException("Error: please check the problem ID@FWeierstrass::initialize"); } setGlobalOpt(); setAccuracy(1.0e-2); }
void FAckley::initialize(){ setOriginalGlobalOpt(); if(IS_PROBLEM_NAME(m_id,"FUN_Ackley")||IS_PROBLEM_NAME(m_id,"FUN_Ackley_Noisy")){ } else if(IS_PROBLEM_NAME(m_id,"FUN_S_Ackley")){ loadTranslation(); }else if(IS_PROBLEM_NAME(m_id,"FUN_R_Ackley")){ setConditionNumber(2); loadRotation(); }else if(IS_PROBLEM_NAME(m_id,"FUN_RS_Ackley")){ setConditionNumber(100); loadTranslation(); loadRotation(); }else if(IS_PROBLEM_NAME(m_id,"FUN_RS_Ackley_Bound_CEC05")){ setConditionNumber(100); loadTranslation(); loadRotation(); setBias(-140); }else if(IS_PROBLEM_NAME(m_id,"FUN_S_Ackley_CEC08")){ setBias(-140); loadTranslation(); }else{ throw myException("Error: please check the problem ID@FAckley::initialize()"); } setGlobalOpt(); }
HybridComp::HybridComp(const int rId, const int rDimNumber, string& rName):Problem(rId,rDimNumber,rName,1),\ BenchmarkFunction(rId,rDimNumber,rName,1){ allocateMemory(m_numDim,m_numFuncs); if(IS_PROBLEM_NAME(m_id,"FUN_RH_Com_noBounds_F25_CEC05")) { setSearchRange(2, 5); for(int i=0;i<m_numDim; ++i) m_searchRange[i].m_flag = false; } else setSearchRange(-5,5); m_heightNormalizeSeverity=2000.; initialize(); }
HybridComp::HybridComp(ParamMap &v):Problem((v[param_proId]), (v[param_numDim]),(v[param_proName]),1),\ BenchmarkFunction((v[param_proId]), (v[param_numDim]),(v[param_proName]),1){ allocateMemory(m_numDim,m_numFuncs); if(IS_PROBLEM_NAME(m_id,"FUN_RH_Com_noBounds_F25_CEC05")) { setSearchRange(2, 5); for(int i=0;i<m_numDim; ++i) m_searchRange[i].m_flag = false; } else setSearchRange(-5,5); m_heightNormalizeSeverity=2000.; initialize(); }
void FSchwefel_2_22::initialize() { setOriginalGlobalOpt(); if(IS_PROBLEM_NAME(m_id,"FUN_Schwefel_2_22")||IS_PROBLEM_NAME(m_id,"FUN_Schwefel_2_22_Noisy")) { } else if(IS_PROBLEM_NAME(m_id,"FUN_S_Schwefel_2_22")) { loadTranslation(); } else if(IS_PROBLEM_NAME(m_id,"FUN_R_Schwefel_2_22")) { setConditionNumber(2); loadRotation(); } else if(IS_PROBLEM_NAME(m_id,"FUN_RS_Schwefel_2_22")) { setConditionNumber(2); loadTranslation(); loadRotation(); } else { throw myException("Error: please check the problem ID@FSchwefel_2_22::initialize"); } setGlobalOpt(); }
void FSchwefel::initialize() { vector<double> v(m_numDim,420.9687); setOriginalGlobalOpt(0,&v); if(IS_PROBLEM_NAME(m_id,"FUN_Schwefel")||IS_PROBLEM_NAME(m_id,"FUN_Schwefel_Noisy")){ }else if(IS_PROBLEM_NAME(m_id,"FUN_S_Schwefel")){ loadTranslation(); }else if(IS_PROBLEM_NAME(m_id,"FUN_R_Schwefel")){ setConditionNumber(2); loadRotation(); }else if(IS_PROBLEM_NAME(m_id,"FUN_RS_Schwefel")){ setConditionNumber(2); loadTranslation(); loadRotation(); }else{ throw myException("Error: please check the problem ID@FSchwefel::initialize"); } setGlobalOpt(0,&v); setAccuracy(1.0e-2); }
CPSORSwarm::CPSORSwarm(ParamMap &v):Swarm(),MultiPopulationCont<CPSORSubSwarm>((v[param_subPopSize]),(v[param_overlapDgre])),\ m_subSize(7){ m_name="ALG_CPSOR"; if(IS_PROBLEM_NAME(Global::ms_curProId,"DYN_CONT_MovingPeak")){ m_diversityDegree=1-exp(-0.2*pow(CAST_PROBLEM_DYN_CONT->getNumberofPeak(),0.45)); m_initialSize =300*(1-exp(-0.33*pow(CAST_PROBLEM_DYN_CONT->getNumberofPeak(),0.5))); }else{ m_diversityDegree=0.8; m_initialSize =100; } initialize(); m_algPar<<"Initial population size: "<<m_initialSize<<"; sub-population size: "<<m_subSize<<"; Overlap degree:"<<v[param_overlapDgre]<<";"<<"; Diversity degree:"<<m_diversityDegree<<";"; }
void FSchwefel_1_2::evaluate__(double const *x,vector<double>& obj){ double s1=0,s2=0; if(IS_PROBLEM_NAME(m_id,"FUN_Schwefel_1_2_Noisy") ||IS_PROBLEM_NAME(m_id,"FUN_S_Schwefel_1_2_Noisy")){ double noise; for(int i=0;i<m_numDim;i++){ for(int j=0;j<=i;j++){ noise=0.01*Global::msp_global->mp_uniformPro->Next(); s1+=(x[j]+noise); } s2+=s1*s1; s1=0; } } else if(IS_PROBLEM_NAME(m_id,"FUN_S_Schwefel_1_2_Noisy_CEC05") ) { for(int i=0;i<m_numDim;i++){ for(int j=0;j<=i;j++) s1+=x[j]; s2+=s1*s1; s1=0; } s2 *= (1.0 + 0.4 * fabs(Global::msp_global->mp_normalPro->Next())); } else{ for(int i=0;i<m_numDim;i++){ for(int j=0;j<=i;j++) s1+=x[j]; s2+=s1*s1; s1=0; } } obj[0]= s2+m_bias; }
void HybridComp::SetUpFRH_Com_CEC05(){ string fname[m_numFuncs]; unsigned fid[m_numFuncs]; for(int i=0;i<m_numFuncs;i++){ mp_height[i]=100*i; } fname[0]="FUN_Ackley"; fname[1]="FUN_Ackley"; fname[2]="FUN_Rastrigin"; fname[3]="FUN_Rastrigin"; fname[4]="FUN_Sphere"; fname[5]="FUN_Sphere"; fname[6]="FUN_Weierstrass"; fname[7]="FUN_Weierstrass"; fname[8]="FUN_Griewank"; fname[9]="FUN_Griewank"; if(IS_PROBLEM_NAME( m_id,"FUN_RH_Com_NarrowBasin_CEC05")) { mp_stretchSeverity[0]=0.1*5./32; mp_convergeSeverity[0]=0.1; }else{ mp_stretchSeverity[0]=2.*5./32; mp_convergeSeverity[0]=1.; } for(int i=0;i<m_numFuncs;i++) fid[i]=Global::msm_pro[fname[i]]; setFunction(fid,fname); mpp_f[0]->setSearchRange(-32,32); mpp_f[1]->setSearchRange(-32,32); mpp_f[2]->setSearchRange(-5,5); mpp_f[3]->setSearchRange(-5,5); mpp_f[4]->setSearchRange(-100,100); mpp_f[5]->setSearchRange(-100,100); mpp_f[6]->setSearchRange(-0.5,0.5); mpp_f[7]->setSearchRange(-0.5,0.5); mpp_f[8]->setSearchRange(-60,60); mpp_f[9]->setSearchRange(-60,60); mp_stretchSeverity[1]=5./32; mp_stretchSeverity[2]=2.; mp_stretchSeverity[3]=1.; mp_stretchSeverity[4]=2*5./100; mp_stretchSeverity[5]=5./100; mp_stretchSeverity[6]=20.; mp_stretchSeverity[7]=10.; mp_stretchSeverity[8]=2.*5/60; mp_stretchSeverity[9]=5./60; mp_convergeSeverity[1]=2.; mp_convergeSeverity[2]=1.5; mp_convergeSeverity[3]=1.5; mp_convergeSeverity[4]=1.; mp_convergeSeverity[5]=1.; mp_convergeSeverity[6]=1.5; mp_convergeSeverity[7]=1.5; mp_convergeSeverity[8]=2.; mp_convergeSeverity[9]=2.; for(int i=0;i<m_numFuncs;i++){ mpp_f[i]->setScale(mp_stretchSeverity[i]); } setBias(10.); }
void FSchwefel_2_22::evaluate__(double const *x,vector<double>& obj) { double s1=0,s2=1.; if(IS_PROBLEM_NAME(m_id,"FUN_Schwefel_2_22_Noisy")) { double noise; for(int i=0; i<m_numDim; i++) { noise=0.01*Global::msp_global->mp_uniformPro->Next(); s1+=fabs(x[i]+noise); s2*=fabs(x[i]+noise); } } else { for(int i=0; i<m_numDim; i++) { s1+=fabs(x[i]); s2*=fabs(x[i]); } } obj[0]= s1+s2+m_bias; }
void FAckley::evaluate__(double const *x,vector<double>& obj){ double s1=0,s2=0; if(IS_PROBLEM_NAME(m_id,"FUN_Ackley_Noisy")){ double noise; for(int i=0;i<m_numDim;i++){ noise=0.01*Global::msp_global->mp_uniformPro->Next(); s1+=(x[i]+noise)*(x[i]+noise); s2+=cos(2*OFEC_PI*(x[i]+noise)); } }else{ for(int i=0;i<m_numDim;i++){ s1+=x[i]*x[i]; s2+=cos(2*OFEC_PI*x[i]); } } obj[0]= -20*exp(-0.2*sqrt(s1/m_numDim))-exp(s2/m_numDim)+20+OFEC_E+m_bias; }
void DynamicProblem::change(){ m_changeCounter++; switch(getChangeType()){ case CT_Random: randomChange(); break; case CT_Recurrent: recurrentChange(); break; case CT_RecurrentNoisy: recurrentNoisyChange(); break; case CT_SmallStep: smallStepChange(); break; case CT_LargeStep: largeStepChange(); break; case CT_Chaotic: chaoticChange(); break; default : break; } if(m_flagDimensionChange){ if(m_numDim==msc_MinDimensionNumber) m_dirDimensionChange=true; if(m_numDim==msc_MaxDimensionNumber) m_dirDimensionChange=false; if(m_dirDimensionChange==true) { m_dimNumberTemp+=1; }else { m_dimNumberTemp-=1; } changeDimension(); } if(m_flagNumPeaksChange){ if(m_numPeaksChangeMode==1||m_numPeaksChangeMode==2){ if((unsigned int)m_numPeaks>=msc_MaxNumPeaks-1) m_dirNumPeaksChange=false; if((unsigned int)m_numPeaks<=msc_MinNumPeaks+1) m_dirNumPeaksChange=true; int step=0; if(IS_PROBLEM_NAME(m_id,"DYN_CONT_CompositionDBG")) step=2; else if(IS_PROBLEM_NAME(m_id,"DYN_CONT_RotationDBG")) step=2; else if(IS_PROBLEM_NAME(m_id,"DYN_CONT_MovingPeak")) step=2; else step=2; if(m_numPeaksChangeMode==2){ step=Global::msp_global->getRandInt(step/2,5*step/2,Program_Problem); } if(m_dirNumPeaksChange==true){ if(m_numPeaks+step<=msc_MaxNumPeaks) m_numPeaksTemp=m_numPeaks+step; else m_numPeaksTemp=msc_MaxNumPeaks; }else{ if(m_numPeaks-step>=msc_MinNumPeaks) m_numPeaksTemp=m_numPeaks-step; else m_numPeaksTemp=msc_MinNumPeaks; } }else{ //random change m_numPeaksTemp=Global::msp_global->getRandInt(msc_MinNumPeaks,msc_MaxNumPeaks,Program_Problem); } changeNumPeaks(); } if(mSingleObj::getSingleObj()!=nullptr){ vector<double> gOpt; if(Global::msp_global->mp_problem->getObjGlobalOpt(gOpt)){ mSingleObj::getSingleObj()->addGOpt(Global::msp_global->m_runId,gOpt[0]); }else{ cout<<"err"<<endl; } } #ifdef OFEC_DEMON msp_buffer->updateFitnessLandsacpe_(); #endif }
void HybridComp::setFunction(unsigned * rId, string rFucs[]){ BasicFunc f; if(IS_PROBLEM_NAME(m_id,"FUN_RH_Com_F21_CEC05")||IS_PROBLEM_NAME(m_id,"FUN_RH_Com_HighConNumMatrix_F22_CEC05")\ ||IS_PROBLEM_NAME(m_id,"FUN_Noncont_RH_Com_F23_CEC05")){ f["FUN_Expanded_Scaffer_F6_CEC05"]=&createFunction<FScaffer_F6>; f["FUN_Rastrigin"]=&createFunction<FRastrigin>; f["FUN_Griewank_Rosenbrock_F13_CEC05"]=&createFunction<FGriewank>; f["FUN_Weierstrass"]=&createFunction<FWeierstrass>; f["FUN_Griewank"]=&createFunction<FGriewank>; }else if(IS_PROBLEM_NAME(m_id,"FUN_RH_Com_F24_CEC05")||IS_PROBLEM_NAME(m_id,"FUN_RH_Com_noBounds_F25_CEC05")){ f["FUN_Weierstrass"]=&createFunction<FWeierstrass>; f["FUN_Expanded_Scaffer_F6_CEC05"]=&createFunction<FScaffer_F6>; f["FUN_Griewank_Rosenbrock_F13_CEC05"]=&createFunction<FGriewank>; f["FUN_Ackley"]=&createFunction<FAckley>; f["FUN_Rastrigin"]=&createFunction<FRastrigin>; f["FUN_Griewank"]=&createFunction<FGriewank>; f["FUN_Noncont_Expanded_Scaffer_F6_CEC05"]=&createFunction<FScaffer_F6>; f["FUN_Noncont_Rastrigin"]=&createFunction<FNoncont_Rastrigin>; f["FUN_Elliptic"]=&createFunction<FElliptic>; f["FUN_Sphere_Noisy_CEC05"]=&createFunction<FSphere>; }else { f["FUN_Sphere"]=&createFunction<FSphere>; f["FUN_Rastrigin"]=&createFunction<FRastrigin>; f["FUN_Weierstrass"]=&createFunction<FWeierstrass>; f["FUN_Griewank"]=&createFunction<FGriewank>; f["FUN_Ackley"]=&createFunction<FAckley>; // f["Scaffer"]=&createFunction<FScaffer>; } for(int i=0;i<m_numFuncs;i++){ mpp_f[i]=dynamic_cast<BenchmarkFunction*>(f[rFucs[i]](rId[i],m_numDim,rFucs[i])); mpp_f[i]->setBias(0); } if(IS_PROBLEM_NAME(m_id,"FUN_R_Com")||IS_PROBLEM_NAME(m_id,"FUN_H_Com_CEC05")||IS_PROBLEM_NAME(m_id,"FUN_H_Com_Noisy_CEC05")||\ IS_PROBLEM_NAME(m_id,"FUN_RH_Com_F21_CEC05")||IS_PROBLEM_NAME(m_id,"FUN_Noncont_RH_Com_F23_CEC05")){ for(int i=0;i<m_numFuncs;i++) mpp_f[i]->setConditionNumber(2.); }else if(IS_PROBLEM_NAME(m_id,"FUN_RH_Com_HighConNumMatrix_F22_CEC05")){ mpp_f[0]->setConditionNumber(10); mpp_f[1]->setConditionNumber(20); mpp_f[2]->setConditionNumber(50);mpp_f[3]->setConditionNumber(100); mpp_f[4]->setConditionNumber(200);mpp_f[5]->setConditionNumber(1000); mpp_f[6]->setConditionNumber(2000);mpp_f[7]->setConditionNumber(3000); mpp_f[8]->setConditionNumber(4000);mpp_f[9]->setConditionNumber(5000); }else if(IS_PROBLEM_NAME(m_id,"FUN_RH_Com_CEC05")||IS_PROBLEM_NAME(m_id,"FUN_RH_Com_NarrowBasin_CEC05")||IS_PROBLEM_NAME(m_id,"FUN_RH_Com_Bound_CEC05")){ mpp_f[0]->setConditionNumber(2); mpp_f[1]->setConditionNumber(3); mpp_f[2]->setConditionNumber(2);mpp_f[3]->setConditionNumber(3); mpp_f[4]->setConditionNumber(2);mpp_f[5]->setConditionNumber(3); mpp_f[6]->setConditionNumber(20);mpp_f[7]->setConditionNumber(30); mpp_f[8]->setConditionNumber(200);mpp_f[9]->setConditionNumber(300); }else if(IS_PROBLEM_NAME(m_id,"FUN_RH_Com_F24_CEC05")||IS_PROBLEM_NAME(m_id,"FUN_RH_Com_noBounds_F25_CEC05")){ mpp_f[0]->setConditionNumber(100); mpp_f[1]->setConditionNumber(50); mpp_f[2]->setConditionNumber(30);mpp_f[3]->setConditionNumber(10); mpp_f[4]->setConditionNumber(5);mpp_f[5]->setConditionNumber(5); mpp_f[6]->setConditionNumber(4);mpp_f[7]->setConditionNumber(3); mpp_f[8]->setConditionNumber(2);mpp_f[9]->setConditionNumber(2); }else{ for(int i=0;i<m_numFuncs;i++) mpp_f[i]->setConditionNumber(2.); } }
void HybridComp::evaluate__(double const *x,vector<double>& obj_){ double * x_ = new double[m_numDim]; if(IS_PROBLEM_NAME(m_id,"FUN_Noncont_RH_Com_F23_CEC05")) { for(int j=0;j<m_numDim; ++j) { double trans = mpp_f[0]->getTranslation()[j]; if(fabs(x[j] - trans) >= 0.5) { double xTemp = 2.0 * x[j]; int intPart = int(xTemp); double decimalPart = xTemp - intPart; if(xTemp <= 0 && decimalPart >= 0.5) xTemp = intPart - 1; else if(decimalPart < 0.5) xTemp = intPart; else xTemp = intPart + 1; x_[j] = xTemp / 2.0; } else x_[j] = x[j]; } } else copy(x,x+m_numDim,x_); vector<double> weight(m_numFuncs,0); for(int i=0;i<m_numFuncs;i++){ // calculate mp_weight for each function for(int j=0;j<m_numDim;j++) { weight[i]+=(x_[j]-mpp_f[i]->getTranslation()[j])*(x_[j]-mpp_f[i]->getTranslation()[j]); } weight[i]=exp(-sqrt(weight[i]/(2*m_numDim*mp_convergeSeverity[i]*mp_convergeSeverity[i]))); } vector<double> fit(m_numFuncs); CodeVReal s(m_numDim,m_numObj); for(int i=0;i<m_numFuncs;i++){ // calculate objective value for each function copy(x_,x_+m_numDim,s.m_x.begin()); mpp_f[i]->BenchmarkFunction::evaluate_(s,false); fit[i]=s.m_obj[0]; if(mp_fmax[i]!=0) fit[i]=m_heightNormalizeSeverity*fit[i]/fabs(mp_fmax[i]); } double sumw=0,wmax; wmax=*max_element(weight.begin(),weight.end()); for(int i=0;i<m_numFuncs;i++) { if(weight[i]!=wmax) { weight[i]=weight[i]*(1-pow(wmax,10)); } } int sameWmax_N = 0; for(int i=0; i<m_numFuncs; ++i) { if(weight[i] == wmax) ++sameWmax_N; } int i=m_numFuncs-1; while(sameWmax_N > 1 && i >= 0) { if(wmax == weight[i]) { weight[i] = 0; --sameWmax_N; } --i; } for(int i=0;i<m_numFuncs;i++) sumw+=weight[i]; for(int i=0;i<m_numFuncs;i++) weight[i]/=sumw; double obj=0; for(int i=0;i<m_numFuncs;i++) { obj+=weight[i]*(fit[i]+mp_height[i]); } delete[] x_; x_=0; if(IS_PROBLEM_NAME(m_id,"FUN_H_Com_Noisy_CEC05")) obj_[0]= obj*(1+0.2*fabs(Global::msp_global->mp_normalPro->Next()))+m_bias; else obj_[0]=obj+m_bias; }
void HybridComp::initialize(){ m_originalGlobalOpt.flagGloObj()=false; m_originalGlobalOpt.flagLoc()=false; if(IS_PROBLEM_NAME(m_id,"FUN_Com")||IS_PROBLEM_NAME(m_id,"FUN_R_Com")){ setUpFCom(); }else if(IS_PROBLEM_NAME(m_id,"FUN_Com_CEC05")||IS_PROBLEM_NAME(m_id,"FUN_H_Com_CEC05")||IS_PROBLEM_NAME(m_id,"FUN_H_Com_Noisy_CEC05")){ SetUpFCom_CEC05(); }else if(IS_PROBLEM_NAME(m_id,"FUN_RH_Com_CEC05")||IS_PROBLEM_NAME(m_id,"FUN_RH_Com_NarrowBasin_CEC05")||\ IS_PROBLEM_NAME(m_id,"FUN_RH_Com_Bound_CEC05")){ SetUpFRH_Com_CEC05(); }else if(IS_PROBLEM_NAME(m_id,"FUN_RH_Com_F21_CEC05")||IS_PROBLEM_NAME(m_id,"FUN_RH_Com_HighConNumMatrix_F22_CEC05")||\ IS_PROBLEM_NAME(m_id,"FUN_Noncont_RH_Com_F23_CEC05")){ SetUpFRH001_Com_CEC05(); }else if(IS_PROBLEM_NAME(m_id,"FUN_RH_Com_F24_CEC05")||IS_PROBLEM_NAME(m_id,"FUN_RH_Com_noBounds_F25_CEC05")){ SetUpFRH002_Com_CEC05(); }else { throw myException("Error: please check the problem ID@HybridComp::initialize"); } loadTranslation(); loadRotation(); CodeVReal x(m_numDim,m_numObj); for(int i=0;i<m_numFuncs;i++){ for(int j=0;j<m_numDim;j++){ // calculate the estimate max value of funciton i x[j]=m_searchRange[j].m_upper; x[j]/=mp_stretchSeverity[i]; } mpp_f[i]->BenchmarkFunction::evaluate_(x,false); mp_fmax[i]=x.m_obj[0]; } vector<double> v(m_numDim,0); m_globalOpt.setNumOpts(1); setGlobalOpt(0,&v,mpp_f[0]->getTranslation()); setAccuracy(1.0e-3); setDisAccuracy(0.1); }
bool HybridComp::loadTranslation(){ string s; stringstream ss; ss<<m_numDim<<"Dim.txt"; s=ss.str(); s.insert(0,m_name+"_Opt_"); s.insert(0,"Problem/FunctionOpt/Data/");//probDataPath s.insert(0,Global::g_arg[param_workingDir]); ifstream in; in.open(s.c_str()); if(in.fail()){ if(IS_PROBLEM_NAME(m_id,"FUN_RH_Com_CEC05")||IS_PROBLEM_NAME(m_id,"FUN_RH_Com_NarrowBasin_CEC05")){ for(int i=0;i<m_numFuncs-1;i++) for(int j=0;j<m_numDim;j++){ mpp_f[i]->getTranslation()[j]=m_searchRange[j].m_lower +(m_searchRange[j].m_upper-m_searchRange[j].m_lower)*(1-Global::msp_global->mp_uniformPro->Next()); } for(int j=0;j<m_numDim;j++){ mpp_f[m_numFuncs-1]->getTranslation()[j]=0; } }else if(IS_PROBLEM_NAME(m_id,"FUN_RH_Com_Bound_CEC05")){ for(int i=0;i<m_numFuncs-1;i++) for(int j=0;j<m_numDim;j++){ if(i==0&&(j+1)%2==0) mpp_f[i]->getTranslation()[j]=m_searchRange[j].m_upper; else mpp_f[i]->getTranslation()[j]=m_searchRange[j].m_lower +(m_searchRange[j].m_upper-m_searchRange[j].m_lower)*(1-Global::msp_global->mp_uniformPro->Next()); } for(int j=0;j<m_numDim;j++){ mpp_f[m_numFuncs-1]->getTranslation()[j]=0; } }else if(IS_PROBLEM_NAME(m_id,"FUN_RH_Com_noBounds_F25_CEC05")){ for(int j=0;j<m_numDim;j++){ mpp_f[0]->getTranslation()[j]= -5.0 +(7.0)*(Global::msp_global->mp_uniformPro->Next()); } for(int i=1;i<m_numFuncs-1;i++) for(int j=0;j<m_numDim;j++){ mpp_f[i]->getTranslation()[j]=m_searchRange[j].m_lower +(m_searchRange[j].m_upper-m_searchRange[j].m_lower)*(1-Global::msp_global->mp_uniformPro->Next()); } for(int j=0;j<m_numDim;j++){ mpp_f[m_numFuncs-1]->getTranslation()[j]=0; } }else{ for(int i=0;i<m_numFuncs;i++) for(int j=0;j<m_numDim;j++){ mpp_f[i]->getTranslation()[j]=m_searchRange[j].m_lower +(m_searchRange[j].m_upper-m_searchRange[j].m_lower)*(1-Global::msp_global->mp_uniformPro->Next()); } } ofstream out(s.c_str()); for(int i=0;i<m_numFuncs;i++){ for(int j=0;j<m_numDim;j++) out<<mpp_f[i]->getTranslation()[j]<<" "; out<<endl; } out.close(); }else{ for(int i=0;i<m_numFuncs;i++){ for(int j=0;j<m_numDim;j++) { in>>mpp_f[i]->getTranslation()[j]; } } } in.close(); for(int i=0;i<m_numFuncs;i++) mpp_f[i]->setTranlationFlag(true); return true; }