public class inFo{
static int n = 5;
static int m = 5;
static int h = 5;
static float huifayizi = (float)0.2;
static float[][][] a = new float[n][m][h];
static float Q = 1;
public void chushihua(){ //信息素的初始化;
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
for(int k = 0; k < h; k++)
a[i][j][k] =0;
}
public void changInfo(int i, int j, int k, float newinfo){//改变i个服务类的第j个原子服务到第i+1个服务类的第k个原子服务路径上的信息素;
a[i][j][k] = newinfo;
}
private float gailv(int i, int j ,int k){//计算下一步转移到a[i][j][k]的概率;
float si = 0;
float s = 0;
si = a[i][j][k] * a[i][j][k] / ( dist.dist[i][j][k] * dist.dist[i][j][k] );
for(int t = 0; t < h; t++)
s += a[i][j][k] * a[i][j][k] / ( dist.dist[i][j][k] * dist.dist[i][j][k] );
return si / s;
}
public int maxInfo(int i, int j){//记录第i和第j类原子服务之间的最大信息量通路
int s = 0;
if(i < n - 1){
for(int k = 0; k < h - 1; k++){
if( gailv(i, i + 1, s) < gailv(i, i + 1 ,k) )
s = k;
}
}
else
System.out.println("您所输入的数已越界 !");
return s;
}
public void showInFo(){//现实整个过程的信息素;
for(int i = 0; i < n; i++)
{ for(int j = 0; j < m; j++)
for(int k = 0; k < h; k++){
System.out.print(" " + a[i][j][k] + " ");
System.out.println("");
}
System.out.println("");
}
}
}