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

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

?? jm98b.c

?? 98年全國大學生數學建模競賽B題"水災巡視問題"模擬退火算法。
?? C
字號:
/*
98年全國大學生數學建模競賽B題"水災巡視問題"模擬退火算法。
這是一個推銷員問題,本題有53個點,所有可能性大約為exp(53),目前沒有好方法求出精確解,既然求不出精確解,我們使用模擬退火法求出一個較優解,將所有結點編號為1到53,1到53的排列就是系統的結構,結構的變化規則是:從1到53的排列中隨機選取一個子排列,將其反轉或將其移至另一處,能量E自然是路徑總長度。具體算法描述如下:
步1:設定初始溫度T,給定一個初始的巡視路線。
步2:步3 --8循環K次
步3:步 4--7循環M次
步4:隨機選擇路線的一段
步5:隨機確定將選定的路線反轉或移動,即兩種調整方式:反轉、移動。
步6:計算代價D,即調整前后的總路程的長度之差
步7:按照如下規則確定是否做調整:
如果D<0,則調整
如果D>0,則按照EXP(-D/T)的概率進行調整
步8:T*0.9-->T,降溫
*/

#include <stdio.h>
#include <math.h>
#define TFACTR  0.9
#define MAX 10000.0
#define MBIG 1000000000
#define MSEED 161803398
#define MZ 0
#define FAC (1.0/MBIG)
float weight[54][54];
int iorder[54];
void anneal (int ncity)

{ int irbit(unsigned long *iseed);

int metrop(float de,float t);
float ran(long *idum);
float reverse_len(int ncity,int n[]);
void reverse(int ncity,int n[]);
float transe_len(int ncity,int n[]);
void transe(int ncity,int n[]);
int ans,nover,nlimit,i1,i2;
int i,j,nsucc,nn,idec;
unsigned long k;
static int n[7];
long idum;
unsigned long iseed;
float path,de,t,T;
nlimit=100*ncity;/*max succ try numbers */
path =0.0;

for(i=1;i<ncity;i++){ /* primitive path length */
		 i1=iorder[i];
		 i2=iorder[i+1];
		  path+=weight[i1][i2];
		 }
       i1=iorder[ncity];
       i2=iorder[1];
	 path+=weight[i1][i2];
	idum=-1;
	iseed=111;
      T=2.8 ;
	for(j=1;j<=30;j++){
		     nsucc=0;
	     for(k=1;k<=20000;k++){
				     do { n[1]=1+(int)(ncity*ran(&idum));
				      n[2]=1+(int)((ncity-1)*ran(&idum));
				      if(n[2]>=n[1]) ++n[2];
				      nn=1+((n[1]-n[2]+ncity-1)%ncity);
				      } while (nn<3);
	      idec=irbit(&iseed);

	      if(idec==0){
			 n[3]=n[2]+(int) (abs(nn-2)*ran(&idum))+1;
			 n[3]=1+((n[3]-1)%ncity);
			 de=transe_len(ncity,n);
			 ans=metrop(de,T);
			 if (ans){ ++nsucc;
				   path+=de;
				   transe(ncity,n);
				   }
			    }
		 else {
			       de=reverse_len(ncity,n);
			       ans=metrop(de,T);
			       if (ans) {++nsucc;
				  path+=de;
				  reverse(ncity,n);
				  }
		       }
		if(nsucc>=nlimit) break;
			}

	      printf("\n %s %10.6f %s %10.6f   j=%d","T=",T,"path len=",path,j);
	      printf("successful moves: %6d\n",nsucc);

	     for(i=1;i<=53;i++) printf("\%5d",iorder[i]);




	      T*=TFACTR;
	      if(nsucc==0) return;
	      }


	  }

float reverse_len(int ncity,int n[])
	{
	 float de;
         int xx[5],yy[5];
	 int j,ii;
	 n[3]=1+((n[1]+ncity-2)%ncity);
	 n[4]=1+(n[2]%ncity);
	 for(j=1;j<=4;j++) {
			     xx[j]=iorder[n[j]];
			}
		     de=-weight[xx[1]][xx[3]];
		     de-=weight[xx[2]][xx[4]];
		     de+=weight[xx[1]][xx[4]];
		     de+=weight[xx[2]][xx[3]];

		      return de;
		      }

  void reverse (int ncity,int n[])
  {  int nn,j,k,l,itmp;
   nn=(1+((n[2]-n[1]+ncity)%ncity))/2;
   for(j=1;j<=nn;j++){ k=1+((n[1]+j-2)%ncity);
		       l=1+((n[2]-j+ncity)%ncity);
		       itmp=iorder[k];
		       iorder[k]=iorder[l];
		       iorder[l]=itmp;
		       }
    }

   float transe_len(int ncity,int n[])
   {
       float /*xx[7],yy[7],*/ de;
       int j,ii,xx[7];
       n[4]=1+(n[3]%ncity);
       n[5]=1+((n[1]+ncity-2)%ncity);
       n[6]=1+(n[2]%ncity);
       for(j=1;j<=6;j++){
			 /*ii=iorder[n[j]];
			 xx[j]=x[ii];
			 yy[j]=y[ii];*/
                     xx[j]=iorder[n[j]];
			 }
    de=-weight[xx[2]][xx[6]];
    de-=weight[xx[1]][xx[5]];
    de-=weight[xx[3]][xx[4]];
    de+=weight[xx[1]][xx[3]];
    de+=weight[xx[2]][xx[4]];
    de+=weight[xx[5]][xx[6]];
       return de;
       }
    void transe(int ncity,int n[])
    {
      int m1,m2,m3,nn,j,jj,jorder[100];
      m1=1+((n[2]-n[1]+ncity) %ncity); /* n[1] to n[2] city numbers*/
      m2=1+((n[5]-n[4]+ncity) %ncity); /*n[4] to n[5]  */

      m3=1+((n[3]-n[6]+ncity) %ncity);  /*n[3].. n[6]  .....*/
      nn=1;
      for(j=1;j<=m1;j++)
		     {jj=1+((j+n[1]-2)%ncity);
		     jorder[nn++]=iorder[jj];
		     }
       if(m2>0) for(j=1;j<=m2;j++)
			 { jj=1+((j+n[4]-2)%ncity);
			 jorder[nn++]=iorder[jj];
			 }
	if(m3>0) for(j=1;j<=m3;j++){ jj=1+((j+n[6]-2)%ncity);
				     jorder[nn++]=iorder[jj];
				     }
	 for(j=1;j<=ncity;j++)
	 iorder[j]=jorder[j];
	 }
 int metrop(float de,float t)
 {
      float ran(long *idum);
      static long gljdum=1;
      return de<0.0 ||ran(&gljdum)<exp(-de/t);
  }
float ran(long *idum)
{static int inext,inextp;
 static long ma[56];
 static int iff=0;
 long mj,mk;
 int i,ii,k;
 if(*idum<0||iff==0) {
		      iff=1;
		      mj=MSEED-(*idum<0?-*idum:*idum);
		      mj%=MBIG;
		      ma[55]=mj;
		      mk=1;
		      for(i=1;i<54;i++){
					ii=(21*i)%55;
					ma[ii]=mk;
					mk=mj-mk;
					if(mk<MZ)mk+=MBIG;
					mj=ma[ii];
			}
			for(k=1;k<=4;k++)
			     for(i=1;i<=55;i++){
				   ma[i]-=ma[1+(i+30)%55];
				   if(ma[i]<MZ) ma[i]+=MBIG;
				   }
			 inext=0;
			 inextp=31;
			 *idum=1;
		     }
    if(++inext==56)inext=1;
    if(++inextp==56) inextp=1;
    mj=ma[inext]-ma[inextp];
    if(mj<MZ) mj+=MBIG;
    ma[inext]=mj;
    return mj*FAC;
    }
 int irbit(unsigned long *iseed)
 {
     unsigned long newbit;
      newbit=(*iseed &131072)>>17
	    ^(*iseed&16)>>4
	      ^(*iseed &2)>>1
	      ^(*iseed &1);
	      *iseed=(*iseed<<1)|newbit;
	      return newbit;
}
main()
{

    int ncity=53;
  int i,j,k,l;
  for(i=0;i<=53;i++) iorder[i]=i;
  for(i=1;i<=53;i++)
  for(j=1;j<=53;j++)
  weight[i][j]=0;

weight[53][1]=6;
weight[53][50]=10.1;
weight[1][38]=11.2;
weight[3][39]=8.2;
 weight[5][39]=11.3;
 weight[6][48]=9.5;
 weight[8][40]=8;
weight[11][40]=14.2;
weight[12][42]=7.8;
weight[13][44]=16.4;
weight[15][44]=8.8;
weight[17][46]=9.8;
weight[19][20]=9.3;
weight[20][25]=6.5;
weight[21][46]=4.1;
weight[23][49]=7.9;
weight[25][49]=8.8;
weight[27][28]=7.9;
weight[29][51]=7.2;
weight[31][32]=8.1;
weight[33][35]=20.3;
weight[34][37]=17.6;
weight[44][45]=15.8;
weight[53][2]=9.2;
weight[53][52]=12.9;
weight[2][3]=4.8;
weight[4][8]=20.4;
weight[5][48]=11.4;
weight[7][39]=15.1;
weight[9][40]=7.8;
weight[11][42]=6.8;
weight[12][43]=10.2;
weight[13][45]=9.8;
weight[16][17]=6.8;
weight[18][44]=8.2;
weight[19][45]=8.1;
weight[20][47]=5.5;
weight[22][23]=10;
weight[24][27]=18.8;
weight[26][27]=7.8;
weight[28][50]=12.1;
weight[29][52]=7.9;
weight[31][33]=7.3;
weight[33][36]=7.4;
weight[36][37]=12.2;
weight[48][49]=14.2;
weight[53][38]=11.5;
weight[1][36]=10.3;
weight[2][5]=8.3;
weight[4][39]=12.7;
weight[6][7]=7.3;
weight[7][40]=7.2;
weight[9][41]=5.6;
weight[11][45]=13.2;
weight[13][14]=8.6;
weight[14][15]=15;
weight[16][44]=11.8;
weight[18][45]=8.2;
weight[19][47]=7.2;
weight[21][23]=9.1;
weight[22][46]=10.1;
weight[24][49]=13.2;
weight[26][49]=10.5;
weight[28][51]=8.3;
weight[30][32]=10.3;
weight[31][52]=9.2;
weight[34][35]=8.2;
weight[36][52]=8.8;
weight[53][48]=19.8;
weight[1][37]=5.9;
weight[3][38]=7.9;
weight[5][6]=9.7;
weight[6][47]=11.8;
weight[7][47]=14.5;
weight[10][41]=10.8;
weight[12][41]=12.2;
weight[13][42]=8.6;
weight[14][43]=9.9;
weight[17][22]=6.7;
weight[18][46]=9.2;
weight[20][21]=7.9;
weight[21][25]=7.8;
weight[23][24]=8.9;
weight[25][48]=12;
weight[26][50]=10.5;
weight[29][50]=15.2;
weight[30][51]=7.7;
weight[32][35]=14.9;
weight[34][36]=11.5;
weight[37][38]=11;
for(i=1;i<=53;i++)
for(j=1;j<=53;j++)
if(weight[i][j]!=0)weight[j][i]=weight[i][j];
for(i=1;i<=53;i++)
for(j=1;j<=53;j++)
if(weight[i][j]==0) weight[i][j]=MAX;
  for(k=1;k<=53;k++)
   for(i=1;i<=53;i++)
   for(j=1;j<=53;j++)

if(!(i==j)&&!(i==k)&&!(k==j))
  if( weight[i][k]+weight[k][j]<weight[i][j])
    weight[i][j]=weight[i][k]+weight[k][j] ;
 printf("\n");



anneal(ncity);

for(i=1;i<=53;i++) printf("\%5d",iorder[i]);
}








?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品电影一区二区| 精品一区二区三区av| 青青草97国产精品免费观看| 九九九精品视频| 日本韩国欧美三级| 国产欧美日韩亚州综合| 免费在线看一区| 91麻豆视频网站| 久久精品亚洲精品国产欧美kt∨| 亚洲国产视频一区| voyeur盗摄精品| 久久久噜噜噜久久人人看| 亚洲一区成人在线| 日本道在线观看一区二区| 国产精品视频一二三区| 奇米影视一区二区三区| 色婷婷综合中文久久一本| 国产精品久久免费看| 极品少妇xxxx精品少妇| 欧美一卡二卡在线观看| 视频在线观看一区| 欧美日精品一区视频| 亚洲欧美一区二区视频| 成人黄色小视频| 亚洲国产精华液网站w| 极品美女销魂一区二区三区免费| 欧美电视剧免费全集观看| 亚洲第一激情av| 欧美欧美欧美欧美| 亚洲第一会所有码转帖| 欧美无人高清视频在线观看| 亚洲素人一区二区| 色综合久久66| 亚洲自拍欧美精品| 欧美色精品天天在线观看视频| 亚洲精品国产成人久久av盗摄 | 午夜精品aaa| 欧美日韩一区二区三区四区五区 | 日本道精品一区二区三区 | 久久久久久99精品| 国产高清精品久久久久| 中文字幕的久久| 不卡欧美aaaaa| 一区二区三区在线看| 欧美视频一区二区三区| 成人sese在线| 亚洲精品视频在线观看免费| 99久久精品国产一区二区三区 | 日韩亚洲欧美综合| 激情六月婷婷综合| 国产精品大尺度| 欧美性一二三区| 天天亚洲美女在线视频| 欧美成人一区二区三区| 国产成人综合精品三级| 最近中文字幕一区二区三区| 色综合中文字幕| 日产国产欧美视频一区精品| 欧美videos大乳护士334| 懂色av一区二区三区免费观看 | 午夜精品久久久久久久久久| 555www色欧美视频| 国产成人免费在线| 亚洲最新在线观看| 欧美成人女星排行榜| 成人sese在线| 日韩高清电影一区| 国产欧美日产一区| 欧美精品乱码久久久久久按摩| 国产一本一道久久香蕉| 亚洲精品中文在线| 久久理论电影网| 欧美日韩一本到| 国产mv日韩mv欧美| 日韩一区精品视频| 《视频一区视频二区| 日韩欧美一级在线播放| av午夜一区麻豆| 久久精品72免费观看| 综合精品久久久| 久久久电影一区二区三区| 在线观看视频一区二区欧美日韩| 国产一区二区调教| 午夜av电影一区| 亚洲乱码一区二区三区在线观看| 精品国产免费一区二区三区四区 | 欧美高清性hdvideosex| 成人av电影免费观看| 久久精品国产久精国产爱| 亚洲人精品午夜| 欧美激情一区二区三区| 91麻豆精品国产91久久久久久久久| 成人av一区二区三区| 国模冰冰炮一区二区| 午夜在线成人av| 一区二区三区.www| 中文字幕亚洲综合久久菠萝蜜| 久久一夜天堂av一区二区三区| 欧美日韩国产欧美日美国产精品| 99re热这里只有精品免费视频| 韩国av一区二区三区在线观看 | 亚洲欧洲日韩综合一区二区| 日韩精品一区国产麻豆| 欧美视频一区在线| 日本韩国欧美一区二区三区| 91啪亚洲精品| 成人动漫一区二区三区| 国产99精品视频| 国产成人免费av在线| 激情伊人五月天久久综合| 麻豆极品一区二区三区| kk眼镜猥琐国模调教系列一区二区| 国产精品影视在线| 狠狠色丁香婷婷综合久久片| 麻豆极品一区二区三区| 精品一区二区免费| 国产在线乱码一区二区三区| 捆绑调教一区二区三区| 美女精品自拍一二三四| 麻豆传媒一区二区三区| 久久疯狂做爰流白浆xx| 蜜臀av一区二区在线观看 | 粉嫩一区二区三区性色av| 国产乱码精品一区二区三区五月婷| 国产一区二三区| 国产成人免费视频精品含羞草妖精 | 亚洲精品国产a| 亚洲高清免费观看高清完整版在线观看| 亚洲精品福利视频网站| 亚洲成人精品在线观看| 亚洲国产精品天堂| 久久激情五月婷婷| 福利一区在线观看| 日本道色综合久久| 欧美日本乱大交xxxxx| 日韩一区二区三区四区| 久久久久久久性| 欧美一级欧美三级| 久久精品一区二区三区不卡牛牛| 欧美国产日本韩| 午夜久久久影院| 国精产品一区一区三区mba视频 | 中文字幕视频一区| 亚洲精品久久7777| 麻豆成人综合网| 精品国免费一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w | 日韩美女主播在线视频一区二区三区 | 欧美日韩另类国产亚洲欧美一级| 欧美一区国产二区| 国产精品国产三级国产a| 午夜影院久久久| 国产精品99久久久久久似苏梦涵| 99久久久国产精品| 日韩精品综合一本久道在线视频| 国产欧美一区二区三区在线看蜜臀 | 日韩国产高清影视| 成人手机电影网| 欧美一区二区在线免费观看| 国产精品麻豆一区二区| 婷婷久久综合九色综合伊人色| 国产福利一区二区三区视频在线 | 国产91清纯白嫩初高中在线观看| 91色综合久久久久婷婷| 日韩一区二区电影在线| 亚洲欧美日韩国产手机在线| 麻豆精品新av中文字幕| 欧美在线一区二区| 久久久久久综合| 日本亚洲欧美天堂免费| 97se亚洲国产综合自在线| 久久综合资源网| 午夜欧美电影在线观看| 92国产精品观看| 国产性天天综合网| 久久99久久久久| 欧美日韩精品专区| 亚洲视频一区在线观看| 国产成人精品一区二区三区四区 | 亚洲超碰97人人做人人爱| 成人黄色小视频在线观看| 精品国一区二区三区| 亚洲成人免费在线| 色呦呦国产精品| 亚洲丝袜精品丝袜在线| 不卡一二三区首页| 国产网站一区二区三区| 精品一区二区国语对白| 91精品国产一区二区人妖| 亚洲网友自拍偷拍| 色综合久久天天| 亚洲欧美视频一区| 99久久精品国产导航| 国产精品久久久久久久久快鸭| 国内精品久久久久影院色| 精品免费国产二区三区| 久久精品国产**网站演员| 日韩视频永久免费| 麻豆视频观看网址久久| 精品欧美久久久|