實現(xiàn)了蟻群算法求解TSP問題。注釋詳細(xì)
function[R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=ACATSP(C,NC_max,m,Alpha,Beta,Rho,Q)
-------------------------------------------------------------------------
主要符號說明
C n個城市的坐標(biāo),n×2的矩陣
NC_max最大迭代次數(shù)
m螞蟻個數(shù)
Alpha表征信息素重要程度的參數(shù)
Beta表征啟發(fā)式因子重要程度的參數(shù)
Rho信息素蒸發(fā)系數(shù)
Q信息素增加強度系數(shù)
R_best各代最佳路線
L_best各代最佳路線的長度
=========================================================================
標(biāo)簽:
Shortest_Length
Shortest_Route
function
R_best
上傳時間:
2014-01-17
上傳用戶:lunshaomo
# include<stdio.h>
# include<math.h>
# define N 3
main(){
float NF2(float *x,float *y);
float A[N][N]={{10,-1,-2},{-1,10,-2},{-1,-1,5}};
float b[N]={7.2,8.3,4.2},sum=0;
float x[N]= {0,0,0},y[N]={0},x0[N]={};
int i,j,n=0;
for(i=0;i<N;i++)
{
x[i]=x0[i];
}
for(n=0;;n++){
//計算下一個值
for(i=0;i<N;i++){
sum=0;
for(j=0;j<N;j++){
if(j!=i){
sum=sum+A[i][j]*x[j];
}
}
y[i]=(1/A[i][i])*(b[i]-sum);
//sum=0;
}
//判斷誤差大小
if(NF2(x,y)>0.01){
for(i=0;i<N;i++){
x[i]=y[i];
}
}
else
break;
}
printf("經(jīng)過%d次雅可比迭代解出方程組的解:\n",n+1);
for(i=0;i<N;i++){
printf("%f ",y[i]);
}
}
//求兩個向量差的二范數(shù)函數(shù)
float NF2(float *x,float *y){
int i;
float z,sum1=0;
for(i=0;i<N;i++){
sum1=sum1+pow(y[i]-x[i],2);
}
z=sqrt(sum1);
return z;
}
標(biāo)簽:
C語言
編寫
迭代
上傳時間:
2019-10-13
上傳用戶:大萌萌撒