void StorgeSelect::createButton() { exportButton=new QPushButton(tr("导出excel"),this); exportButton->setGeometry(800,60,100,40); connect(exportButton,SIGNAL(clicked()),this,SLOT(exportFun())); /*printButton=new QPushButton(tr("打印"),this); printButton->setGeometry(640,60,100,40); connect(printButton,SIGNAL(clicked()),this,SLOT(printFun()));*/ selectButton=new QPushButton(this); selectButton->setStyleSheet("background-image:url(:/mainImag/search.png);"); selectButton->setGeometry(538,19,35,32); connect(selectButton,SIGNAL(clicked()),this,SLOT(selectFun())); }
void CompositionDBG::initialize(const ChangeType rT, const ComDBGFuncID rF,double const rChangingRatio,const bool rFlagDimChange, const bool rFlagNumPeakChange, const int peakNumChangeMode,const bool flagNoise, const bool flagTimelinkage){ RealDBG::initialize(rT,rFlagDimChange,rFlagNumPeakChange,peakNumChangeMode,flagNoise,flagTimelinkage); setOptType(MIN_OPT); setNumberofChanges(rChangingRatio); if(!ms_funID.get()) ms_funID.reset(new ComDBGFuncID()); *CompositionDBG::ms_funID=rF; setAccuracy(1.0); setDisAccuracy(0.1); m_globalOpt.setFlagLocTrue(); ProblemTag *basic_fun=new ProblemTag[m_numPeaks]; switch(*CompositionDBG::ms_funID){ case COMDBG_SPHERE: for(int i=0;i<m_numPeaks;i++) basic_fun[i]=Sphere; break; case COMDBG_RASTRIGIN: for(int i=0;i<m_numPeaks;i++) basic_fun[i]=Rastrigin; break; case COMDBG_GRIEWANK: for(int i=0;i<m_numPeaks;i++) basic_fun[i]=Griewank; break; case COMDBG_ACKLEY: for(int i=0;i<m_numPeaks;i++) basic_fun[i]=Ackley; break; case COMDBG_HYBRID: basic_fun[0]=Sphere; basic_fun[5]=Sphere; basic_fun[1]=Rastrigin; basic_fun[6]=Rastrigin; basic_fun[2]=Weierstrass; basic_fun[7]=Weierstrass; basic_fun[3]=Griewank; basic_fun[8]=Griewank; basic_fun[4]=Ackley; basic_fun[9]=Ackley; for(int i=10;i<m_numPeaks;i++) basic_fun[i]=Sphere; break; } setBasicFunction(basic_fun); delete []basic_fun; basic_fun=0; double *t=new double[m_numPeaks]; for(int i=0;i<m_numPeaks;i++)t[i]=1.; setCovergeSevrity(t); setStretchSeverity(); setRotationMatrix(); Matrix m(m_numDim,1); double *gene=new double[m_numDim]; for(int i=0;i<m_numPeaks;i++){ for(int j=0;j<m_numDim;j++){ // calculate the estimate max value of funciton i gene[j]=m_searchRange[j].m_upper; gene[j]/=mp_stretchSeverity[i]; } m.setDataRow(gene,m_numDim); m*=mp_rotationMatrix[i]; copy(m[0].begin(),m[0].end(),gene); correctSolution(mp_comFunction[i],gene); mp_fmax[i]=selectFun(mp_comFunction[i],gene); if(mp_fmax[i]==0) throw myException("the estimation max value must be greater not equal to 0@CompositionDBG::initialize"); } calculateGlobalOptima(); updateTimeLinkage(); delete [] t; delete [] gene; t=0; gene=0; }
ReturnFlag CompositionDBG::evaluate_(VirtualEncoding &ss, bool rFlag, ProgramMode mode, bool flag_){ CodeVReal &s=dynamic_cast<CodeVReal &>(ss); double *x=new double[m_numDim]; copy(s.m_x.begin(),s.m_x.end(),x); if(this->m_noiseFlag) addNoise(x); vector<double> width(m_numPeaks,0),fit(m_numPeaks); for(int i=0;i<m_numPeaks;i++){ // calculate weight for each function for(int j=0;j<m_numDim;j++) width[i]+=(x[j]-mpp_peak[i][j])*(x[j]-mpp_peak[i][j]); if(width[i]!=0) width[i]=exp(-sqrt(width[i]/(2*m_numDim*mp_convergeSeverity[i]*mp_convergeSeverity[i]))); } for(int i=0;i<m_numPeaks;i++){ // calculate objective value for each function for(int j=0;j<m_numDim;j++) // calculate the objective value of tranformation function i x[j]=(x[j]-mpp_peak[i][j])/mp_stretchSeverity[i];//((1+fabs(mpp_peak[i][j]/mp_searchRange[j].m_upper))* Matrix m(m_numDim,1); m.setDataRow(x,m_numDim); m*=mp_rotationMatrix[i]; copy(m[0].begin(),m[0].end(),x); correctSolution(mp_comFunction[i],x); fit[i]=selectFun(mp_comFunction[i],x); fit[i]=m_heightNormalizeSeverity*fit[i]/fabs(mp_fmax[i]); copy(s.m_x.begin(),s.m_x.end(),x); } double sumw=0,wmax; wmax=*max_element(width.begin(),width.end()); for(int i=0;i<m_numPeaks;i++) if(width[i]!=wmax) width[i]=width[i]*(1-pow(wmax,10)); for(int i=0;i<m_numPeaks;i++) sumw+=width[i]; for(int i=0;i<m_numPeaks;i++) width[i]/=sumw; double obj=0; for(int i=0;i<m_numPeaks;i++) obj+=width[i]*(fit[i]+mp_height[i]); s.m_obj[0]=obj; if(rFlag&&m_evals%m_changeFre==0) Solution<CodeVReal>::initilizeWB(s); if(rFlag){ isTracked(x,s.m_obj); m_evals++; } bool flag; #ifdef OFEC_CONSOLE if(Global::msp_global->mp_algorithm!=nullptr) flag=!Global::msp_global->mp_algorithm->ifTerminating(); else flag=true; #endif #ifdef OFEC_DEMON flag=true; #endif if(rFlag&&m_evals%m_changeFre==0&&flag) { DynamicProblem::change(); if(m_timeLinkageFlag) updateTimeLinkage(); } delete []x; x=0; ReturnFlag rf=Return_Normal; if(rFlag){ if(Global::msp_global->mp_algorithm!=nullptr){ if(Global::msp_global->mp_algorithm->ifTerminating()){ rf=Return_Terminate; } else if(Global::msp_global->mp_problem->isProTag(DOP)){ if(CAST_PROBLEM_DYN->getFlagTimeLinkage()&&CAST_PROBLEM_DYN->getTriggerTimelinkage()){ rf=Return_Change_Timelinkage; } if((Global::msp_global->mp_problem->getEvaluations()+1)%(CAST_PROBLEM_DYN->getChangeFre())==0){ rf=Return_ChangeNextEval; } if(Global::msp_global->mp_problem->getEvaluations()%(CAST_PROBLEM_DYN->getChangeFre())==0){ if(CAST_PROBLEM_DYN->getFlagDimensionChange()){ rf=Return_Change_Dim; } rf=Return_Change; } } } } return rf; }