亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? actsp.cpp

?? 一個很好的蟻群算法程序,我讀研的時候寫的.
?? CPP
字號:
#include <iostream>
#include <fstream>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include "MapClass.h"
//#include "AntClass.h"


using namespace std;


const int iMaxLoop=2000;


int iCount=0;


const int  iAntNumber=30;
const double dAlpha=1;
const double dBeta=5;
const double Q=100.0;
double  P_0;




class Ant{
private:
	double PathLength;
	int iA_Tabu[iCityNumber];
	
	//MapInfo * Map;
	
public:
	int iCityCount;
	Ant();
    int iA_Allowed[iCityNumber];
    void NextCity(MapInfo * Map);
	void NextCity_opt2(MapInfo * Map);
	void AddCity(int CityIndex);
	double GetOneDirectProbility(MapInfo * Map,int i,int j);
	double GetPathLength(void);
	void SetPathLength(MapInfo * Map);
	void  UpDateDeltaPheromone(MapInfo * Map);
	void  LocalUpdating(MapInfo * Map,int from,int to);
	void  GlobeUpdating(MapInfo * Map);
	int getTabu(int index);
	void clear();
	void Reset();
	void operator=( Ant  & srcAnt )
	{
		PathLength=srcAnt.GetPathLength();
		
		for(int i=0;i<iCityNumber;i++ )
		{
			iA_Tabu[i]=srcAnt.getTabu(i);
			iA_Allowed[i]=srcAnt.iA_Allowed[i];

		}
		
	}

   
};
Ant::Ant(){
  
   for(int i=0;i<iCityNumber;i++){

	    iA_Tabu[i]=0;
	    iA_Allowed[i]=1;
   }

	PathLength=0.0;
	iCityCount=0;
	
   

}

void Ant::AddCity(int CityIndex)
{

	
	iA_Tabu[iCityCount]=CityIndex;
	iCityCount++;
	iA_Allowed[CityIndex]=0;
}

double Ant::GetOneDirectProbility(MapInfo * Map,int i,int j){
      double p=0.0;
	  p=pow((1.0/ Map->GetDistance(i,j)  ),dBeta)*pow((Map->GetPheromone(i,j)),dAlpha);	
	  if( p<=0)p=rnd(0,1)*pow( (1.0 / Map->GetDistance(i,j)), dBeta);  
	   return p;
	  

	

}

void Ant::NextCity_opt2(MapInfo * Map)
{
	int curCity=iA_Tabu[iCityCount-1];
	double maxPathInfo=0.0;
	double  p=rnd(0,1);
	double temp;
	int index;

	if(p<=P_0)
	{

		for (int i=0;i<iCityNumber;i++) {
			if((iA_Allowed[i]==1)) {
				
				temp=GetOneDirectProbility(Map,curCity,i);
				if( maxPathInfo<temp ){
					maxPathInfo=temp;
					index=i;
					//cout<<" "<<index;


				}
			}
		}
	
			AddCity(index);
		 	LocalUpdating(Map,curCity,index);

	}	
	
	else NextCity(Map);
}


void Ant::NextCity(MapInfo * Map){
	int i,to=-1;
	double TotalP=0.0;	
	int curCity=iA_Tabu[iCityCount-1];	

	//if(iCount<6)	
//	{
		for (i=0;i<iCityNumber;i++) {
			if((iA_Allowed[i]==1)) {
				
				TotalP += GetOneDirectProbility(Map,curCity,i);
			}
		}

		if(TotalP==0.0)
		{
			to=rand()%iCityNumber;
		}
		else
		{
			for(to=0;to<iCityNumber;to++)
			{
				double p;
				if(iA_Allowed[to]==1)
				{
					p=GetOneDirectProbility(Map,curCity,to)/TotalP;
					if(rnd(0,1)<p)	
						break;
				}
			}
		}
		if(to==iCityNumber)
		{
			TotalP=-1;
			for(i=0;i<iCityNumber;i++)
				if(iA_Allowed[i]==1)
				{
					if (TotalP<GetOneDirectProbility(Map,curCity,i)) {
						TotalP=GetOneDirectProbility(Map,curCity,i);	
						to=i;
					}
				}
		}
//	}
	
//	if(iCount>=6)	//當連續6代都沒有產生更短的路徑,則
//	{
//		for ( i=0;i<iCityCount;i++) {
//			if((iA_Allowed[i]==1)) {
//				to=i;
//				iCount=0;
//				dRou=0.5;
//				if(rnd(0.0,1.0)>0.5)	//隨機選擇一個還沒訪問的城市
//				{
//					break;
//				}
//			}
//		}
//	}

	AddCity(to);
 	LocalUpdating(Map,curCity,to);
     

}

double Ant::GetPathLength(){

	return PathLength;
}

void Ant::SetPathLength(MapInfo * Map){

	for(int i=0;i<iCityNumber-1;i++)
	{
		PathLength+=Map->GetDistance(iA_Tabu[i],iA_Tabu[i+1]);
	}
	PathLength+=Map->GetDistance(iA_Tabu[iCityNumber-1],iA_Tabu[0]);
}

void Ant::UpDateDeltaPheromone(MapInfo * Map){
     
	int from,to;
	for (int j=0;j<iCityNumber-1;j++) { 
			from=iA_Tabu[j];
			to=iA_Tabu[j+1];
			Map->AddDeltaPheromone(from,to,Q/PathLength);
			Map->AddDeltaPheromone(to,from,Q/PathLength);
			//Map->w_dDeltaPheromone[from][to]+=Q/PathLength;  
			//Map->w_dDeltaPheromone[to][from]=Map->w_dDeltaPheromone[from][to]; //兩個方向的信息量相等
		}
		from=iA_Tabu[iCityNumber-1];
		to=iA_Tabu[0];
		Map->w_dDeltaPheromone[from][to]+=Q/PathLength ;	//加上起點和終點之間的信息量
		Map->w_dDeltaPheromone[to][from]=Map->w_dDeltaPheromone[from][to]; //兩個方向的信息量相等

    
}
void Ant::LocalUpdating(MapInfo * Map,int from,int to){//not finished

    double DeltaPheromone;
	DeltaPheromone=100.0/(52*8000);/////////not finished
	
	Map->LocalUpdating(from,to,DeltaPheromone);


}

void Ant::GlobeUpdating(MapInfo * Map){

	int from,to;
	for(int i=0;i<iCityNumber-1;i++){
	
		from=iA_Tabu[i];
		to=iA_Tabu[i+1];
		Map->LocalUpdating(from,to,Q/PathLength);
		//Map->LocalUpdating(to,from,Q/PathLength);
	}
	from=iA_Tabu[iCityNumber-1];
	to=iA_Tabu[0];
	Map->LocalUpdating(from,to,Q/PathLength);
	//Map->LocalUpdating(to,from,Q/PathLength);

}


int Ant::getTabu(int index)
{
	return iA_Tabu[index];
}

void Ant::clear(){

	iCityCount=0;
	for(int i=0;i<iCityNumber;i++){
	
		
		iA_Allowed[i]=1;
	}
	PathLength=0.0;

}

void Ant::Reset(){

	iCityCount=0;
    
	for(int i=0;i<iCityNumber;i++){
	
		
		iA_Allowed[i]=1;
	}
	
	PathLength=0.0;

    AddCity(iA_Tabu[iCityNumber-1]);


}


void main()
{
	srand( (unsigned)time( NULL ));
	MapInfo *Map=new MapInfo();
	Map->ReadCityInfo();

	
	Ant  ants[iAntNumber],bestsofar;
	int i,j,k,minant,last,loop=0;


	double minLength;
	double temp;
	int tempant;
	FILE * outresult=fopen("result.txt","w+");
	for(int v=0;v<100;v++)
	{
		Map->clear();
		
		for(i=0;i<iAntNumber;i++)
		{
			ants[i].clear();
		    k=rand()%iCityNumber;
            ants[i].AddCity(k);
		}
		minLength=10000000.0;
		loop=0;
		P_0=0.9;
		iCount=0;
       while(loop<iMaxLoop)
	   {
          temp=10000000.0;
	 	
		  for(i=0;i<iCityNumber-1;i++)
		  {
              for(j=0;j<iAntNumber;j++){
			
				  ants[j].NextCity_opt2(Map);

			  }

		  }
		
	 
		   for(j=0;j<iAntNumber;j++){

			    ants[j].SetPathLength(Map);
                if(temp>ants[j].GetPathLength()){
				 temp=ants[j].GetPathLength();
				 tempant=j;
                 
				}		

		   }	
	
		 if(temp<minLength){
			 iCount=0;
             P_0=P_0+0.1;
			 if(P_0>0.9)P_0=0.9;
			 minLength=temp;
			 minant=tempant;
			 last=loop;
			 ants[minant].GlobeUpdating(Map);			 
			 bestsofar=ants[minant];   
		 }

		 else{
			 iCount++;	
			 bestsofar.GlobeUpdating(Map);
		 	
		 } 
		 if(iCount>3)
		 {
             P_0=P_0-0.1;
			 if(P_0<0.5)P_0=0.5;
		 }
	

		 for(j=0;j<iAntNumber;j++){
			 ants[j].Reset();
			}

         // printf("\n%d\t%.9f",loop,minLength);
		 
		 
	 loop++;

	} 

	fprintf(outresult,"\n%d\t%.9f",v,minLength);
	printf("\n%d\t%d\t%.9f",v,last,minLength);
	//cout<<endl<<"the best route is :"<<endl; 
   // for(j=0;j<iAntNumber;j++){
	
    // cout<<" "<<bestsofar.getTabu(j);
	//}
	}

	fclose(outresult);
	

}


 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久精品国产导航| 国产精品人人做人人爽人人添| 日韩一级在线观看| 国产精品久99| 激情深爱一区二区| 欧美在线你懂得| 国产精品高清亚洲| 国产福利一区二区三区视频 | 欧美一级视频精品观看| 国产精品网站在线| 精品一区二区综合| 欧美视频中文一区二区三区在线观看| 久久一留热品黄| 麻豆精品视频在线观看免费| 色伊人久久综合中文字幕| 中文字幕av一区 二区| 久久国产夜色精品鲁鲁99| 91麻豆精品国产综合久久久久久| 一区二区三区在线观看视频 | 国产亚洲欧美在线| 激情六月婷婷久久| 亚洲精品一区二区精华| 蜜桃一区二区三区四区| 7878成人国产在线观看| 1024成人网| 97se亚洲国产综合自在线观| 中文字幕亚洲一区二区av在线 | 91亚洲永久精品| 中文字幕亚洲在| av资源网一区| 亚洲欧美激情小说另类| www.成人在线| 成人欧美一区二区三区白人| 99免费精品视频| 亚洲丝袜自拍清纯另类| 91麻豆蜜桃一区二区三区| 亚洲美女视频在线| 欧美人xxxx| 美女高潮久久久| 久久影视一区二区| av一二三不卡影片| 亚洲老妇xxxxxx| 欧美精选午夜久久久乱码6080| 丝袜国产日韩另类美女| 日韩一区二区在线免费观看| 蜜臀91精品一区二区三区| 2023国产精品视频| 岛国一区二区三区| 亚洲自拍偷拍网站| 日韩欧美国产wwwww| 丁香激情综合国产| 亚洲最新视频在线观看| 日韩亚洲欧美在线观看| 国产综合成人久久大片91| 中文字幕av一区二区三区高| 色哦色哦哦色天天综合| 丝袜美腿亚洲一区二区图片| 久久综合国产精品| 91福利视频久久久久| 日韩高清国产一区在线| 国产日本欧美一区二区| 欧美伊人久久大香线蕉综合69| 奇米色一区二区三区四区| 国产精品污www在线观看| 欧美性猛交xxxx乱大交退制版| 久久精品国产亚洲5555| 亚洲视频小说图片| 日韩三级免费观看| 色综合中文字幕国产| 美女一区二区三区在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 欧美在线视频全部完| 国产成人av影院| 日韩黄色在线观看| 日韩码欧中文字| 久久―日本道色综合久久| 欧美在线免费观看视频| 国产ts人妖一区二区| 日日夜夜免费精品视频| 亚洲欧洲av在线| 久久在线免费观看| 欧美一级xxx| 色偷偷一区二区三区| 国产91综合一区在线观看| 亚洲国产成人精品视频| 国产精品女主播在线观看| 日韩欧美在线1卡| 在线看一区二区| 成人av网址在线| 国产原创一区二区三区| 奇米影视在线99精品| 亚洲一区二区三区四区不卡| 中文字幕制服丝袜成人av | 欧美丰满高潮xxxx喷水动漫| 国产精品资源网站| 日本不卡视频在线观看| 亚洲成人免费观看| 一区二区三区在线看| 1024国产精品| ...xxx性欧美| 中文字幕 久热精品 视频在线| 26uuu亚洲综合色欧美| 91麻豆精品国产| 欧美精品欧美精品系列| 欧美日韩一二区| 欧美日韩免费一区二区三区| 一本久久综合亚洲鲁鲁五月天 | 激情图区综合网| 裸体健美xxxx欧美裸体表演| 日韩高清不卡在线| 日本女人一区二区三区| 免费三级欧美电影| 老鸭窝一区二区久久精品| 久久精品av麻豆的观看方式| 男男视频亚洲欧美| 久久99久久99小草精品免视看| 麻豆国产欧美一区二区三区| 蜜桃视频免费观看一区| 久久99精品久久只有精品| 免费看欧美女人艹b| 韩国精品久久久| 成人一区二区三区视频在线观看| 成人av综合在线| 在线国产亚洲欧美| 欧美日韩国产一二三| 538在线一区二区精品国产| 日韩欧美激情一区| 久久久久成人黄色影片| 国产精品进线69影院| 一区二区三区加勒比av| 三级久久三级久久久| 国产一区二区主播在线| av中文一区二区三区| 在线视频你懂得一区二区三区| 欧美日韩视频在线第一区| 欧美精品色综合| 久久久久久久免费视频了| 久久精品网站免费观看| 亚洲精品v日韩精品| 蜜臀av一区二区| 成人精品视频一区二区三区| 欧美日韩一区二区在线观看视频| 日韩免费一区二区三区在线播放| 欧美国产综合一区二区| 亚洲精选视频免费看| 青青草91视频| 97se狠狠狠综合亚洲狠狠| 欧美伦理影视网| 中文字幕欧美日韩一区| 日韩影院免费视频| 国产福利一区在线观看| 欧美日韩不卡在线| 中文字幕第一区二区| 亚洲风情在线资源站| 国产精品一级片在线观看| 欧美特级限制片免费在线观看| xnxx国产精品| 五月天久久比比资源色| 国产精品一级黄| 欧美精品九九99久久| 中文字幕日本乱码精品影院| 男女激情视频一区| 一本一道久久a久久精品| 久久综合久久99| 视频一区二区不卡| 色综合久久天天| 久久精品在线观看| 日韩在线卡一卡二| 色欧美片视频在线观看| 国产欧美一区二区精品秋霞影院 | 国产91精品在线观看| 4438x亚洲最大成人网| 亚洲免费观看在线观看| 国产高清久久久| 久久久久国产免费免费| 日韩高清不卡一区二区三区| 一本色道久久综合精品竹菊| 国产欧美日韩在线| 精品一区二区三区免费| 欧美一区二区三区免费大片 | 国内成+人亚洲+欧美+综合在线| 色婷婷av一区二区三区gif| 国产精品国产三级国产| 久久99久国产精品黄毛片色诱| 欧美日本一区二区在线观看| 亚洲精品乱码久久久久久日本蜜臀| 高清不卡在线观看| 国产片一区二区| 夫妻av一区二区| 久久综合久久综合久久| 国产毛片精品一区| 久久久一区二区| 成人永久免费视频| 国产无遮挡一区二区三区毛片日本 | 日韩**一区毛片| 欧美另类久久久品| 日韩精品三区四区| 日韩一卡二卡三卡国产欧美| 精品无人区卡一卡二卡三乱码免费卡| 欧美精选午夜久久久乱码6080|