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


}
Example #2
0
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;

 }
Example #3
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;
}