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

📄 speedtspbatch.cpp

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

#include "stdafx.h"
#include "SpeedTSPBatch.h"

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

SpeedTSPBatch::SpeedTSPBatch(int d,double e1,double e2,double e3):SpeedTSP(d,e1,e2,e3)
{

}

void SpeedTSPBatch::NewSpeed(ParticleTSP * * sworm,int i,int pmax,Rand * rand,int gen)
{
//	int * * speed=sworm[i]->GetSpeed();
//	int length=sworm[i]->GetSL();
	double * location=sworm[i]->GetLocation();
//	double * location1=sworm[i]->GetLocation();
	double * i_optim=sworm[i]->GetIOL();
	double * g_optim=sworm[pmax]->GetIOL();
	int * * newspeed=new int *[3*dimension];
	for(int j=0;j<3*dimension;j++)
		newspeed[j]=new int[2];
	int newlength=0;
	double p;
/*	for(j=0;j<length;j++)
	{
		p=rand->random(1);
		if(p<E1)
		{
			newspeed[newlength][0]=speed[j][0];
			newspeed[newlength][1]=speed[j][1];
			newlength++;
		}
	}*/
	double p1=rand->random(1)*2.8/4.1;
	double p2=rand->random(1)*1.3/4.1;
	for(j=0;j<dimension;j++)
	{
		if(i_optim[j]!=location[j])
		{
			int i=0;
			while((int)i_optim[j]!=(int)location[i])
				i++;
			p=rand->random(1);
			if(p<p1)
			{
				double temp=location[i];
				location[i]=location[j];
				location[j]=temp;
			}
			else
			{
				newspeed[newlength][0]=i;
				newspeed[newlength][1]=j;
				newlength++;
			}
		}
	}
	for(j=0;j<dimension;j++)
	{
		if(g_optim[j]!=location[j])
		{
			int i=0;
			while((int)g_optim[j]!=(int)location[i])
				i++;
			p=rand->random(1);
			if(p<p1)
			{
				double temp=location[i];
				location[i]=location[j];
				location[j]=temp;
			}
			else
			{
				newspeed[newlength][0]=i;
				newspeed[newlength][1]=j;
				newlength++;
			}
		}
	}
	sworm[i]->SetSpeed(newspeed,newlength);
	sworm[i]->SetLocation(location);
/*	for(j=0;j<length;j++)
	{
		delete[] speed[j];
	}
	delete[] speed;*/
	for(j=0;j<3*dimension;j++)
	{
		delete[] newspeed[j];
	}
	delete[] newspeed;
	delete[] location;
//	delete[] location1;
	delete[] i_optim;
	delete[] g_optim;
}

SpeedTSPBatch::~SpeedTSPBatch()
{

}

⌨️ 快捷键说明

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