In a forest, there is a fox and four hounds. The goal of the hounds is to trap the fox. In order to
do this they must either surround the fox on all four sides, trap him in a corner or against the edge
of the forest. When the fox can no longer move it is trapped.
The forest is a rectangular grid containing no obstacles. I have worked with two forest sizes:
50 by 25 and 75 by 30. The size is mostly dictated by the visualization tool being used because
30 rows is all that can be seen on the screen. The forest is controlled by a configuration file
that sets the original placement of the fox and the hounds as well as the size of the forest.
The fox can only move in four directions: up, down, left, and right. The hounds can move in eight
directions by allowing diagonal moves as well. This makes the hounds a little faster than the fox.
The fox has two modes: normal and evasion. In normal mode the fox moves randomly, just wandering
around the forest. The fox looks before every move. In normal mode, its viewing area starts at two
squares in each direction so the total area that can be seen is a five by five square in the grid.
Once the fox has spotted a hound it goes into evasion mode and can now see all the hounds. It plans
its escape accordingly. Once the hounds are out of its viewing area it returns to normal mode.
The hounds have a larger viewing area of five squares in each direction for an eleven by eleven
square. This allows a hound to see the fox before the fox can see the hound. A smart hound can
stay out of the fox's sight range.
Both the hounds and the fox have smaller sensing areas as they tire. The fox's sensing area will
diminish depending on how many times it has gone into evasion mode. The hound's sensing area depends
on the number of moves it has made and the number of messages it has sent.
The hounds can communicate with each other but only indirectly. They send a message to the forest
and the forest passes it on to the other hound or hounds. The size and number of messages is limited
by the forest.
The forest operates in cycles. In each cycle the hound can look, send messages and make one move.
The forest process all messages, sends them to the appropriate parties, updates the counts of moves
and message information, and records the moves of the fox and the hounds. This process is repeated
every cycle. The forest also records the activities in a log file.
The original forest was noiseless, lossless, and without delay in regards to the passing of messages.
I have introduced mechanisms into the forest that create disturbances in the message passing cycle.
These values can be set through the forest configuration file that sets up the forest at the beginning
of each game.
There are three flags that can be set LOSS, NOISE, and DELAY. The range of allowed values for each
of these flags is 0 - 5. If a value outside this range is entered, the flag will be set to 0.
The LOSS flag controls how many messages between hounds are lost. The forest counts how many messages
are sent between any of the hounds. Every ten messages the forest calculates randomly which messages
will be lost. For example if the LOSS flag is set at 2, the forest will select two random messages
out of every ten messages sent. These messages will not be relayed to the hounds.
The NOISE flag controls what the hound sees. When this flag is set to a value greater than zero, the
hounds will receive innacurate coordinates for the fox's location. The forest counts the number
of looks that any of the hounds make. Every ten looks the forest calculates randomly which look
will receive a distorted value. For example if the LOSS flag is set at 3, the forest will select three
random looks out of every ten looks that are requested. If the hound can see the fox during the
selected look, the forest will give inaccurate coordinates. The inaccuracy is also random. A random
number is generated to determine which of the eight directions from the fox's actual position will
be reported to the hound. The distortion can be just in the x-direction, just in the y-direction, or
The DELAY flag controls if messages between hounds will be delayed. For every message that is sent
through the forest, a random number between zero and the flag value will be generated. If this number
is greater than zero, the message will not be processed during that cycle. The forest decrements the
delay value of that particular message and goes on to look at the next message.