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

📄 speedtspexchange.cpp

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

#include "stdafx.h"
#include "SpeedTSPExchange.h"

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

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

}

void SpeedTSPExchange::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 *[5*dimension];
	for(int j=0;j<5*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/4;
	double p2=rand->random(1)*2/4;
	for(j=0;j<dimension;j++)
	{
		if(i_optim[j]!=location[j])
		{
			int i=j+1;
			while((int)i_optim[j]!=(int)location[i])
				i++;
			double temp=location[i];
			location[i]=location[j];
			location[j]=temp;
			p=rand->random(1);
			if(p<p1)
			{
				newspeed[newlength][0]=i;
				newspeed[newlength][1]=j;
				newlength++;
			}
		}
	}
	for(j=0;j<dimension;j++)
	{
		if(g_optim[j]!=location1[j])
		{
			int i=j+1;
			while((int)g_optim[j]!=(int)location1[i])
				i++;
			double temp=location1[i];
			location1[i]=location1[j];
			location1[j]=temp;
			p=rand->random(1);
			if(p<p2)
			{
				newspeed[newlength][0]=i;
				newspeed[newlength][1]=j;
				newlength++;
			}
		}
	}
	sworm[i]->SetSpeed(newspeed,newlength);
	for(j=0;j<length;j++)
	{
		delete[] speed[j];
	}
	for(j=0;j<5*dimension;j++)
	{
		delete[] newspeed[j];
	}
	delete[] speed;
	delete[] newspeed;
	delete[] location;
	delete[] location1;
	delete[] i_optim;
	delete[] g_optim;
}

SpeedTSPExchange::~SpeedTSPExchange()
{

}

⌨️ 快捷键说明

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