}
}
2.范围
蚂蚁所在的方格应该包含附近的方格编号、所含食物数量、蚂蚁数量、外激素的浓度、以及坐标等信息。
publicclassSquare
{publicSquareNE;//附近的8个方向的方格
publicSquareN;
publicSquareNW;
publicSquareW;
publicSquareSW;
publicSquareS;
publicSquareSE;
publicSquareE;
publicLinkedListANTS;//本方格中包含的蚂蚁
publicFoodFOOD;//本方格中包含的食物数
publicNestNEST;//方格为蚁穴
publicPheromone_1PHEROMONE_1;//本方格中的外激素含量
publicintX;//本方格的坐标
publicintY;
privateWorldWORLD;//所属的环境
publicbooleanWALL;//是否有障碍物
publicSquare(intx,inty,Worldworld)
{
FOOD=null;
NEST=null;
PHEROMONE_1=null;
X=x;
Y=y;
WORLD=world;
WALL=false;
ANTS=newLinkedList();
}
3.环境
环境是由多个方格组成的,是一个平面,因此用一个方格的二维数组来表示是最合适不过的。
publicclassWorld
{
privateSquare[][]WORLD;//定义环境二维数组
privateintWIDTH;//环境的长宽
privateintHEIGHT;
privatePheromone_1ListP1LIST;//保存所有外激素的
列表 publicWorld(Pheromone_1Listp1list)
{
this.WIDTH=Settings.WIDTH;
this.HEIGHT=Settings.HEIGHT;
this.P1LIST=p1list;
WORLD=newSquare[WIDTH][HEIGHT];
}
4.觅食规则
移动规则和避障规则:这三种规则全都跟蚂蚁的移动方向有关,并在移动前都要先计算周围方格的外激素浓度,选择外激素浓度最高的方格方向移动。
privateSquarechooseBestSquare()
{
Square[]square_list={SQUARE.E,SQUARE.NE,SQUARE.N,SQUARE.NW,SQUARE.W,SQUARE.SW,SQUARE.S,SQUARE.SE};
doublecurrent_best_value=0;
doublevalue=0;
Squaresquare=SQUARE;
//选择最好的方格
for(inti=0;i
{
value=calculateSquareValue(square_list[i]);//计算方格值