⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nextactiontsp.cpp

📁 c++语言实现的遗传算法的例子,需要的快下啊
💻 CPP
字号:
// NextActionTsp.cpp: implementation of the NextActionTsp class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "NextActionTsp.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

NextActionTsp::NextActionTsp(Ant * * a,RouteInfo * r,UpdateInfo * u,int s,int d,double ed,double ep):NextAction(a,r,u,s,d,ed,ep)
{

}

void NextActionTsp::NewRoute(Rand * rand)
{
	double * temp=new double[dimension];
	int * s=new int[dimension];
	double * prop=new double[dimension];
	double p;
	for(int i=0;i<scale;i++)
	{
		for(int j=0;j<dimension;j++)
			s[j]=0;
		temp[0]=rand->randint(dimension);
		s[(int)temp[0]]=1;
		for(j=1;j<dimension;j++)
		{
//	FILE * f;
//	f=fopen("2.zn","w");
			p=0;
			for(int k=0;k<dimension;k++)
			{
				prop[k]=0;
				if(s[k]!=1)
				{
					prop[k]=proportion[(int)temp[j-1]][k];
					p=p+proportion[(int)temp[j-1]][k];
				}
//	fprintf(f,"%f   \n",prop[k]);
			}
			double mm=rand->random(p);
//	fprintf(f,"%f   \n",mm);
			k=0;
			do
			{
				mm=mm-prop[k];
				k++;
			}while((mm>0)||(prop[k-1]==0));
//	fprintf(f,"%d   \n",k);
			temp[j]=k-1;
			s[k-1]=1;//fclose(f);
		}
		antcolony[i]->SetRoute(temp);
		double temp=antcolony[i]->GetAdaptation();
		if(gb<temp)
			gb=temp;
	}
	delete[] temp;
	delete[] s;
	delete[] prop;
}

void NextActionTsp::InitProportion()
{
	double a,b;
	double c=rinfo->GetMaxDist();
//	FILE * f;
//	f=fopen("2.zn","w");
//	fprintf(f,"%f   \n",c);
	for(int i=0;i<dimension;i++)
	{
		for(int j=0;j<dimension;j++)
		{
			if(i<j)
			{
				a=c/rinfo->GetDistance(i,j);
				b=rinfo->GetPheromone(i,j);
				a=pow(a,expd);
				b=pow(b,expp);
				proportion[i][j]=a*b;
			}
			if(i==j)
				proportion[i][j]=0;
			if(i>j)
				proportion[i][j]=proportion[j][i];
//	fprintf(f,"%f   ",proportion[i][j]);
		}
//		fprintf(f,"\n");
	}//fclose(f);
}


NextActionTsp::~NextActionTsp()
{

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -