📄 speedtspexchange.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 + -