DynamicProblem::DynamicProblem(const int rId, const int rDimNumber, const int rNumPeaks,const int runId,const unsigned numObj):Problem(rId,rDimNumber, string(),numObj),m_changeCounter(0) ,m_dimNumberTemp(rDimNumber),m_numPeaks(rNumPeaks),m_numPeaksTemp(rNumPeaks),m_noiseFlag(false),m_timeLinkageFlag(false),m_flagTriggerTimeLinkage(false){ //ctor m_changeFre=5000; m_changeType.type=CT_Random; m_changeType.counter=0; m_period=0; m_flagDimensionChange=false; m_dirDimensionChange=true; m_synchronize=true; m_noisySeverity=0.8; m_alpha=0.04; m_maxAlpha=0.1; m_chaoticConstant=3.67; //in [3.57,4] m_flagNumPeaksChange=false; m_dirNumPeaksChange=true; m_numPeaksChangeMode=1; m_noiseSeverity_=0.01; m_timeLinkageSeverity=0.1; m_proPar<<"Change frequency:"<<m_changeFre<<"; "<<"TotalEvals:"<<Global::g_arg[param_maxEvals]<<"; "<<"Peaks:"<<m_numPeaks<<"; "<<"NumPeaksChange:"<<m_flagNumPeaksChange<<"-"<<m_numPeaksChangeMode<<"; "<< "NoisyEnvioronments:"<<m_noiseFlag<<"; NoiseSeverity:"<<m_noiseSeverity_<<"; TimeLinkageEnvironments:"<<m_timeLinkageFlag<<"; TimeLinkageSeverity:"<<m_timeLinkageSeverity<<"; DimensionalChange:"<<m_flagDimensionChange<<"; "; if(!ms_numInstance.get()) ms_numInstance.reset(new int(0)); if(!ms_initNumPeaks.get()) ms_initNumPeaks.reset(new int); if(!ms_initNumDim.get())ms_initNumDim.reset(new int); (*ms_numInstance)++; if(*ms_numInstance==1){ *ms_initNumPeaks=m_numPeaks; *ms_initNumDim=m_numDim; } addProTag(DOP); }
void FSix_humpCamelBack::initialize(){ vector<double> lower, upper; upper.push_back (1.9); upper.push_back (1.1); lower.push_back (-1.9); lower.push_back (-1.1); setSearchRange(lower,upper); setAccuracy(1.e-4); setDisAccuracy(0.1); m_globalOpt.setFlagLocTrue(); m_globalOpt.setNumOpts(6);// 2gopt+ 4 lopt CodeVReal x(m_numDim,1); x.m_x[0]=-0.089842; x.m_x[1]=0.712656 ; x.m_obj[0]=-1.0316; m_globalOpt[0].data()=x; x.m_x[0]=0.089842; x.m_x[1]=-0.712656 ; m_globalOpt[1].data()=x; x.m_x[0]=-1.70361;x.m_x[1]=0.796084; x.m_obj[0]=-0.21546; m_globalOpt[2].data()=x; x.m_x[0]=1.70361;x.m_x[1]=-0.796084; x.m_obj[0]=-0.21546; m_globalOpt[3].data()=x; x.m_x[0]=-1.6071;x.m_x[1]=-0.56865; x.m_obj[0]=2.10425; m_globalOpt[4].data()=x; x.m_x[0]=1.6071;x.m_x[1]=0.56865; x.m_obj[0]=2.10425; m_globalOpt[5].data()=x; m_originalGlobalOpt=m_globalOpt; addProTag(MMP); }
void FHimmenblau::initialize(){ setDisAccuracy(0.5); setAccuracy(1.e-4); m_globalOpt.setFlagLocTrue(); m_globalOpt.setNumOpts(4); // 1 gopt+3 lopt CodeVReal x(m_numDim,1); x.m_x[0]=3.0;x.m_x[1]=2.0; evaluate_(x,false); m_globalOpt[0].data()=x; x.m_x[0]=3.58149;x.m_x[1]=-1.8208 ; evaluate_(x,false); m_globalOpt[1].data()=x; x.m_x[0]=-2.78706 ;x.m_x[1]=3.1282 ; evaluate_(x,false); m_globalOpt[2].data()=x; x.m_x[0]=-3.76343;x.m_x[1]=-3.26605; evaluate_(x,false); m_globalOpt[3].data()=x; m_originalGlobalOpt=m_globalOpt; addProTag(MMP); setObjSet(); }
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; }
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; }
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); }
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); }
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(); }
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); }
void FMAX_global1::initialize(){ m_OptMode[0]=MAX_OPT; m_globalOpt.setFlagLocTrue(); m_globalOpt.setNumOpts(5); //5 gopt setDisAccuracy(0.1); setAccuracy(1.e-5); CodeVReal x(1,1); x.m_x[0]=0.5; x.m_obj[0]=1.; m_globalOpt[0].data()=x; x.m_x[0]=0.1; m_globalOpt[1].data()=x; x.m_x[0]=0.3; m_globalOpt[2].data()=x; x.m_x[0]=0.7; m_globalOpt[3].data()=x; x.m_x[0]=0.9; m_globalOpt[4].data()=x; m_originalGlobalOpt=m_globalOpt; addProTag(MMP); setObjSet(); }
void FModified_Rastrigin::initialize(){ // note m_k[0]=3;m_k[1]=4; setDisAccuracy(0.1); setAccuracy(1.e-5); m_globalOpt.setFlagLocTrue(); m_globalOpt.setNumOpts(12); //production of m_ki ifstream in; stringstream ss; ss<<Global::g_arg[param_workingDir]<<"Problem/FunctionOpt/Data/"<<m_name<<"_Opt_"<<m_numDim<<"D.txt"; in.open(ss.str().c_str()); if(in.fail()){ throw myException("cannot open data file@FModified_Rastrigin::initialize()"); } for(int i=0;i<12;++i){ double x0,x1; in>>x0>>x1; m_globalOpt[i].data().m_x[0]=x0; m_globalOpt[i].data().m_x[1]=x1; m_globalOpt[i].data().m_obj[0]=2.0; } in.close(); m_originalGlobalOpt=m_globalOpt; addProTag(MMP); }
void FMAX_global4::initialize(){ m_OptMode[0]=MAX_OPT; m_globalOpt.setFlagLocTrue(); m_globalOpt.setNumOpts(5); //1 gopt + 4 lopt setDisAccuracy(0.1); setAccuracy(1.e-5); CodeVReal x(1,1); x.m_x[0]=0.0796998; x.m_obj[0]=1.; m_globalOpt[0].data()=x; x.m_x[0]=0.930153; x.m_obj[0]=0.25161; m_globalOpt[1].data()=x; x.m_x[0]=0.246279; x.m_obj[0]=0.94868; m_globalOpt[2].data()=x; x.m_x[0]=0.679166; x.m_obj[0]=0.50411; m_globalOpt[3].data()=x; x.m_x[0]=0.449496; x.m_obj[0]=0.77081; m_globalOpt[4].data()=x; m_originalGlobalOpt=m_globalOpt; addProTag(MMP); setObjSet(); }
ContinuousProblem::ContinuousProblem(const int rId, const int rDimNumber, string rName, int numObj):\ Problem(rId,rDimNumber,rName,numObj),m_disAccuracy(0.1),m_searchRange(rDimNumber),m_globalOpt(rDimNumber,numObj){ addProTag(CONT); if (m_id==Global::ms_curProId) Solution<CodeVReal>::allocateMemoryWB(rDimNumber,numObj); }