예제 #1
0
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);
}
예제 #2
0
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);
}
예제 #3
0
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();
}
예제 #4
0
파일: OneMax.cpp 프로젝트: Changhe160/OFEC
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;
}
예제 #5
0
파일: OneMax.cpp 프로젝트: Changhe160/OFEC
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;

}
예제 #6
0
파일: FValleys.cpp 프로젝트: dcshen/OFEC
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);
}
예제 #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);
}
예제 #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();
}
예제 #9
0
파일: FWaves.cpp 프로젝트: dcshen/OFEC
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);
}
예제 #10
0
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();
}
예제 #11
0
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);
}
예제 #12
0
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();
}
예제 #13
0
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);		
}