Agents in Biology
211
#define nestYUpperBorder 240.0
#define nestYLowerBorder 260.0
#define antStepSize 2.0
#define antMinPheromoneDetectionUnit 1.0
#define antFoodLevelDecay 0.02
#define antFoodFound 100
#define antPheromoneDepositionUnit 2.0
#define minPheromoneDistance 1.0
#define pheromoneDecay 0.0248
#define stateWalk 1
#define stateFindNest 2
#define stateStayInNest 0
struct Data {
int maxIndex;
double information1[1000];
double information2[1000];
};
struct PheromoneData {
double pheromoneX;
double pheromoneY;
double pheromoneLife;
int direction;
};
int getDirection(double, double, double, double);
double getDistance(double x, double y, double tx, double ty) {
return sqrt(pow(tx - x, 2) + pow(ty - y, 2));
}
//Environment: 500, 500
double checkAntPositionY(double antPosition) {
double newPosition = antPosition;
if (antPosition < yUpperBorder) {
newPosition = yUpperBorder;
}
if (antPosition > yLowerBorder) {
newPosition = yLowerBorder;
}
return newPosition;
}
double checkAntPositionX(double antPosition) {
double newPosition = antPosition;
if (antPosition < xLeftBorder) {
newPosition = xLeftBorder;
}
if (antPosition > xRightBorder) {
211
#define nestYUpperBorder 240.0
#define nestYLowerBorder 260.0
#define antStepSize 2.0
#define antMinPheromoneDetectionUnit 1.0
#define antFoodLevelDecay 0.02
#define antFoodFound 100
#define antPheromoneDepositionUnit 2.0
#define minPheromoneDistance 1.0
#define pheromoneDecay 0.0248
#define stateWalk 1
#define stateFindNest 2
#define stateStayInNest 0
struct Data {
int maxIndex;
double information1[1000];
double information2[1000];
};
struct PheromoneData {
double pheromoneX;
double pheromoneY;
double pheromoneLife;
int direction;
};
int getDirection(double, double, double, double);
double getDistance(double x, double y, double tx, double ty) {
return sqrt(pow(tx - x, 2) + pow(ty - y, 2));
}
//Environment: 500, 500
double checkAntPositionY(double antPosition) {
double newPosition = antPosition;
if (antPosition < yUpperBorder) {
newPosition = yUpperBorder;
}
if (antPosition > yLowerBorder) {
newPosition = yLowerBorder;
}
return newPosition;
}
double checkAntPositionX(double antPosition) {
double newPosition = antPosition;
if (antPosition < xLeftBorder) {
newPosition = xLeftBorder;
}
if (antPosition > xRightBorder) {
