Agents

 

Agents have all the abilities that objects have, and more.

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.

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 dialogue of that particular agent. Otherwise they are given defaulot 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 Whisker Angle, denoted above by θ, which is in degrees. The length of the whiskers can be set by changing the Whisker Length parameter, in pixels. These parameters are set in the Entity Dialogue.

In the Odor World, there is a variable amount of Stimulus Dimensions, set by default to be 8. 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 Input Sensor, 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 either be dragged using the mouse, or controlled using keyboard commands. To control an agent, click on the agent you wish to move. This "selects" the agent, in quotes because there is currently no indication that the agent has been selected in the GUI. The selected agent can now be moved forward, backward, left or right by pressing the arrow keys on the keyboard. Only one command can be entered at a time.

Ability to Bite

If in any iteration an agent is in movement and it is blocked by an agent or object, it performs a bite. If that agent or object is edible, it will take the number of bites as is parameterized by its Bites to die. Edibility is a capable trait of all objects, and thereby agents.