Equations in antsworld
Variable n
n = int(sqrt(size(World)))
Variable neighbour offsets a
neighbour offsets a = [0,1,1,0,-1,-1]
Variable neighbour offsets b
neighbour offsets b = [1,0,-1,-1,0,1]
Variable neighbour offsets c
neighbour offsets c = [-1,-1,0,1,1,0]
Equations in Ants
Immigration im1
im1 = 0.1
Variable Pheromone output
Pheromone output = 1
Variable my body size
my body size = 2
Variable my direction
my direction = ceil(rand_var(0,6))
Variable my head size
my head size = 1
Variable my space
my space = infront=element(last([neighbour_spaces]),my_direction),if time()==init_time() then 5102 elseif infront>0 then infront else prev(1)
Where:
my_direction=my direction
[neighbour_spaces]=neighbour spaces
Variable neighbour spaces
neighbour spaces = [neighbours_at]
Where:
[neighbours_at]= ../location/neighbours (to Ants in at)
Variable x
x = x_at
Where:
x_at= ../location/x (to Ants in at)
Variable y
y = y_at
Where:
y_at= ../location/y (to Ants in at)
Equations in location
Condition cond1
cond1 = index(1) is my_space_at
Where:
my_space_at= ../Ants/my space (from Ants in at)
Variable Pheromone
Pheromone = Pheromone_output_at
Where:
Pheromone_output_at= ../Ants/Pheromone output (from Ants in at)
Variable neighbours
neighbours = [their_ids_has]
Where:
[their_ids_has]= ../World/neighbours/their ids (from World in has)
Variable x
x = x_has
Where:
x_has= ../World/x (from World in has)
Variable y
y = y_has
Where:
y_has= ../World/y (from World in has)
Equations in World
Compartment Pheromone
Initial value = 0
Rate of change = + Addition
Flow Addition
Addition = sum({Pheromone_has})
Where:
{Pheromone_has}= ../location/Pheromone (to World in has)
Variable a
a = ceil(index(1)/n)-ceil(n/2)
Where:
n= ../n
Variable b
b = index(1)-n*a-ceil(n*n/2)
Where:
n= ../n
Variable c
c = -a-b
Variable my id
my id = index(1)
Variable x
x = 50+(a-c)* 0.866
Variable y
y = 50+b* 1.5
Equations in borders
Variable x
x = off=sqrt(3/4),x+element([0,off,off,0,-off,-off],index(1))
Where:
x= ../x
Variable y
y = y+element([1, 0.5, -0.5,-1, -0.5, 0.5],index(1))
Where:
y= ../y
Equations in neighbours
Variable a
a = a+element([neighbour_offsets_a],index(1))
Where:
a= ../a
[neighbour_offsets_a]= ../../neighbour offsets a
Variable b
b = b+element([neighbour_offsets_b],index(1))
Where:
b= ../b
[neighbour_offsets_b]= ../../neighbour offsets b
Variable c
c = c+element([neighbour_offsets_c],index(1))
Where:
c= ../c
[neighbour_offsets_c]= ../../neighbour offsets c
Variable their ids
their ids = if all([a,b,c]> - (n/2)) and all([a,b,c]