/*
* (C) 2003-2009 Spolecne s.r.o.
* Author: Tomas Straka
* www.spoledge.com
*
* Written permission must be obtained in advance from Spolecne s.r.o for any form of
* reproduction, use or distribution.
*/
package ants.models.thrakia;
import ants.EventQueue;
import ants.models.thrakia.ZygothicGraph.Mediator;
/**
* The implementation of the ant's network. The connections between the neurons
* can be changed to achieve different behaviour of the ant.
*/
public class ThrakiaNetwork {
/**
* Tentacles
*/
private Tentacle leftTentacle;
private Tentacle rightTentacle;
/**
* Legs
*/
private OutputDBC leftLegFwd;
private OutputDBC leftLegBackwd;
private OutputDBC rightLegFwd;
private OutputDBC rightLegBackwd;
/**
* Accessors for the ant
*/
public Tentacle getLeftTentacle() {
return leftTentacle;
}
public Tentacle getRightTentacle() {
return rightTentacle;
}
public OutputDBC getLeftLegFwd() {
return leftLegFwd;
}
public OutputDBC getLeftLegBackwd() {
return leftLegBackwd;
}
public OutputDBC getRightLegFwd() {
return rightLegFwd;
}
public OutputDBC getRightLegBackwd() {
return rightLegBackwd;
}
/**
* Make the network right in the constructor. Because synapses connects
* towards target (not source), we must build the network from the bottom.<br/>
* Let's have max. # of receptors on a synapse = 100.
*/
public ThrakiaNetwork(EventQueue eq) {
leftLegFwd = new OutputDBC(2000); // numberOfConnectedNeurons x maxNumberOfReceptors per Mediator and Synapse x maxFrequency
leftLegBackwd = new OutputDBC(2000); // 1 x 100 x (0.2 / 0.01) = 2000;
rightLegFwd = new OutputDBC(2000);
rightLegBackwd = new OutputDBC(2000);
// preset named number of receptors
Integer [] i_50_50 = { 50, 50 };
Integer [] i_80_20 = { 80, 20 };
Integer [] i_10_9 = { 10, 9 };
// preset named types of receptors
Mediator [] mBlackRed = { Mediator.BLACK, Mediator.RED };
Mediator [] mOrangeCyan = { Mediator.ORANGE, Mediator.CYAN };
// the network - 11 neurons
Neuron neuron1 = new Neuron("1", eq, new Synapse(leftLegFwd, Mediator.RED, 100));
Neuron neuron2 = new Neuron("2", eq, new Synapse(rightLegFwd, Mediator.RED, 100));
Synapse [] synapse3 = { new Synapse(leftLegFwd, Mediator.ORANGE, 90),
new Synapse(rightLegFwd, Mediator.BLUE, 100),
new Synapse(leftLegBackwd, Mediator.BLUE, 100) };
Neuron neuron3 = new Neuron("3", eq, synapse3);
Synapse [] synapse4 = { new Synapse(rightLegFwd, Mediator.ORANGE, 90),
new Synapse(leftLegFwd, Mediator.BLUE, 100),
new Synapse(rightLegBackwd, Mediator.BLUE, 100) };
Neuron neuron4 = new Neuron("4", eq, synapse4);
Synapse [] synapse5 = { new Synapse(neuron1, Mediator.BLACK, 100),
new Synapse(neuron2, Mediator.BLACK, 100),
new Synapse(neuron3, mBlackRed, i_50_50),
new Synapse(neuron4, mBlackRed, i_50_50) };
Neuron neuron5 = new Neuron("5", eq, synapse5 );
Synapse [] synapse6 = { new Synapse(rightLegBackwd, Mediator.BLACK, 100),
new Synapse(neuron2, Mediator.RED, 50),
new Synapse(neuron5, mBlackRed, i_80_20) };
Neuron neuron6 = new Neuron("6", eq, synapse6);
Synapse [] synapse7 = { new Synapse(leftLegBackwd, Mediator.BLACK, 100),
new Synapse(neuron1, Mediator.RED, 50),
new Synapse(neuron5, mBlackRed, i_80_20) };
Neuron neuron7 = new Neuron("7", eq, synapse7);
Neuron neuron8 = new Neuron("8", eq, new Synapse(neuron4, mOrangeCyan, i_10_9));
Neuron neuron9 = new Neuron("9", eq, new Synapse(neuron3, mOrangeCyan, i_10_9));
Neuron neuron10 = new Neuron("10", eq, new Synapse(neuron4, Mediator.CYAN, 10));
Neuron neuron11 = new Neuron("11", eq, new Synapse(neuron3, Mediator.CYAN, 10));
Synapse [] synapseLeft = { new Synapse(neuron6, mBlackRed, i_80_20),
new Synapse(neuron8, Mediator.ORANGE, 100),
new Synapse(neuron10, Mediator.CYAN, 100) };
leftTentacle = new Tentacle(eq, synapseLeft);
Synapse [] synapseRight = { new Synapse(neuron7, mBlackRed, i_80_20),
new Synapse(neuron9, Mediator.ORANGE, 100),
new Synapse(neuron11, Mediator.CYAN, 100) };
rightTentacle = new Tentacle(eq, synapseRight);
}
}
|