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(); }
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(); }
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(); }
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; }
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(); }
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 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 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(); }