Agents
An agent is a creature in Odor World that can be controlled by a neural network. The neural network can be thought of as the brain of the agent; without a network controlling the agent, it does nothing. For a network to control an agent, it must be coupled to an agent by Output Commands and Input Sensors. Output commands are the motor controls of an agent, like moving forward or backward, and turning left or right. An agent's input sensors abstractly model reaction to stimuli, though they were created with olfaction in mind. Sensors at three positions relative to the agent detect stimulus values associated with different objects and other agents. Agents can "smell" other agents, but not themselves.
Output Commands
Output Commands are essentially the motor controls of the agent. When coupling a neuron to an agent, one can choose between two styles of movement: relative movement, and absolute movement. Relative movements are motor commands that tell the agent how to move relative to its current orientation: e.g. move forward or to the right. Absolute movements tell the agent to move in directions that are independent of its orientation, such as move to the north or to the south-west. See Attributes to set the visibility of absolute movements.
All movements are scaled based on the activity of the coupled neuron and a fixed movement factor (one for moving straight, one for turning) set in the entity dialog. The larger the activation, the faster the agent. If a neuron is coupled with an agent and its activation becomes negative, the neuron will command the agent to do the opposite of what it would normally do. This is such that when a neuron that normally turns the agent right becomes negative, it will instead start telling the agent to turn left.
Coupling of Output Commands
This section describes how to couple networks to agents.
Before selecting an Output Command, one must first select an agent. If there are multiple agents, one must differentiate between agents by their name, which can be changed in the dialog of that particular agent. Otherwise they are given default names "Agent 1," "Agent 2," etc. Once an agent as been highlighted, another popup menu will appear with the following output commands:
North, South, East, West, North-east, North-west, South-east, South-west. These move the creature in absolute directions.
Left, Right, Forward, Backward.. These move the creature relative to its orientation. These are particularly useful for programming AI.
Input Sensors
Each agent in an Odor World has a left whisker, a central nose, and a right whisker, each of which can sense independently. Each of these sensors can detect parts of a broadcasted stimulus pattern, and depending on how well the signal is picked up, the neuron to which the neuron is coupled will be come active. Although they are called whiskers, they are really just abstract sensors, which can respond to, e.g., olfactory stimuli.
The location of the left and right whiskers can be set. The location of the whiskers can be visualized as follows:
The Center Input Sensor is located at the center of the agent. The left and right whiskers shoot off symmetrically from this center of perspective at an angle determined by the parameter Sensor Angle, denoted above by θ, which is in degrees. The length of the whiskers can be set by changing the Sensor Length parameter, in pixels. These parameters are set in the Entity Dialog.
In the Odor World, there is a variable amount of Stimulus Dimensions . All agents and objects broadcast customizable stimulus patterns during each iteration. An agent can pick up on these broadcasted signals, using its nose or whiskers, when a neuron is coupled with the agent to receive that input. A sensor can only receive one dimension of the stimulus pattern at a time from one input sensor; this is to say, when coupling a neuron to an agent, a whisker/nose must be specified, and a stimulus dimension must be specified.
Coupling of Input Sensors
If one were to couple a neuron to an agent as an Input Sensor, one would first right-click on the neuron, highlight Send Scalar Coupling to, highlight the agent for the neuron to be coupled with, then select either:
Left, Right, or Center. Where Left and Right denote the left and right whisker, and Center denotes the central nose.
Then, one would select which stimulus dimension the sensor should receive.
1, 2, 3, 4, ..., n-th stimulus dimension. Where the number refers to the stimulus dimension index set in each entitity dialog. Each dimension can be thought of as a unique signal; where one signal may represent saltiness, another might represent bitterness. The meaning of each signal is entirely dependent on how the network is designed to interpret that signal.
Moving of Agents
Agents can be moved about using a mouse or trackpad . To control an agent, click on the agent you wish to move and drag it around in the window. Only one agent can be dragged at a time.