Example #1
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();
}
Example #2
0
void ContinuousProblem::parameterSetting(Problem * rP){
	Problem::parameterSetting(rP);
	
	//m_searchRange=dynamic_cast<ContinuousProblem*>(rP)->m_searchRange;
	m_disAccuracy=dynamic_cast<ContinuousProblem*>(rP)->m_disAccuracy;
	//m_globalOpt=dynamic_cast<ContinuousProblem*>(rP)->m_globalOpt;
	setObjSet();
}
Example #3
0
void DTLZ::generateAdLoadPF()
{
    const string problem_name[]= {"FUN_MOP_DTLZ1", "FUN_MOP_DTLZ2", "FUN_MOP_DTLZ3", "FUN_MOP_DTLZ4"};
	stringstream os;
	os<<Global::g_arg[param_workingDir]<<"Problem/FunctionOpt/Data/PF_"<<Global::g_arg[param_proName]<<"("<<Global::g_arg[param_numObj]<<")"<<"_Opt.txt";

    for (int i=0; i<4; i+=1) // problem
    {
		if(Global::g_arg[param_proName]!=problem_name[i])
			continue;
        const int M[5] = {3, 5, 8, 10, 15};
        for (int j=0; j<5; j+=1) // objectives
        {
			if(Global::g_arg[param_numObj]!=M[j])
				continue;
			ifstream infile(os.str());
			if(infile) 
			{	infile.close(); break; }
            ofstream ofile(os.str());

            if (M[j] <= 5) // #objectives <= 5
            {
                int p[2] = {12, 6}; // Check Section V, Table I in the original paper
                GeneratePF_OneLayer(ofile, problem_name[i], M[j], p[j]);
            }
            else
            {
                int p[3][2] = {{3, 2}, {3, 2}, {2, 1}}; // Check Section V, Table I in the original paper
                GeneratePF_TwoLayers(ofile, problem_name[i], M[j], p[j-2][0], p[j-2][1]);
            }
			ofile.close();
        }
    }
	int numObj=Global::g_arg[param_numObj];
	ifstream infile(os.str());
	if(!infile)
		throw myException("please set your own pareto front @DTLZ::generatePF()");
	string str;
	int line=0;
	while(getline(infile,str))
		++line;
	m_globalOpt.setNumOpts(line);
	m_originalGlobalOpt.setNumOpts(line);
	m_originalGlobalOpt.setFlagLocTrue();
	infile.close();
	infile.clear();
	infile.open(os.str());
	for(int i=0;i<line;i++)
		for(int j=0;j<numObj;j++)
			infile>>m_originalGlobalOpt[i].data().m_obj[j];
	m_globalOpt=m_originalGlobalOpt;
	infile.close();

	setObjSet();
}
Example #4
0
ContinuousProblem& ContinuousProblem::operator=(const ContinuousProblem &rhs){
	if(this==&rhs) return *this;

	Problem::operator=(rhs);

	m_searchRange=rhs.m_searchRange;
	m_disAccuracy=rhs.m_disAccuracy;
	m_globalOpt=rhs.m_globalOpt;

	setObjSet();
	return *this;
}
Example #5
0
void ZDT::generateAdLoadPF()
{
	int num=1000;
	m_globalOpt.setNumOpts(num);
	m_originalGlobalOpt.setNumOpts(num);
	m_originalGlobalOpt.setFlagLocTrue();

	ofstream out;
	ifstream infile;
	stringstream os;
	os<<Global::msp_global->g_arg[param_workingDir]<<"Problem/FunctionOpt/Data/PF_"<<Global::g_arg[param_proName]<<"_Opt_"<<num<<".txt";
	infile.open(os.str());
	if(!infile)
	{
		out.open(os.str());
		double temp;
		for(int i=0;i<num;i++)
		{
			temp=static_cast<double>(i)/num;
			m_originalGlobalOpt[i].data().m_x[0]=temp;
			for(int j=1;j<m_numDim;j++)
				m_originalGlobalOpt[i].data().m_x[j]=0.;
			BenchmarkFunction::evaluate_(m_originalGlobalOpt[i].data(),false);
			out<<m_originalGlobalOpt[i].obj(0)<<" "<<m_originalGlobalOpt[i].obj(1)<<endl;
		}
		out.close();
		m_globalOpt=m_originalGlobalOpt;
	}
	else 
	{
		double temp;
		for(int i=0;i<num;i++)
		{
			temp=static_cast<double>(i)/num;
			m_originalGlobalOpt[i].data().m_x[0]=temp;
			for(int j=1;j<m_numDim;j++)
				m_originalGlobalOpt[i].data().m_x[j]=0.;
			infile>>m_originalGlobalOpt[i].obj()[0];
			infile>>m_originalGlobalOpt[i].obj()[1];
		}
		m_globalOpt=m_originalGlobalOpt;
		infile.close();
	}

	setObjSet();
}
Example #6
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();
}
Example #7
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();
}
Example #8
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();
}