public void MakeBrain() { var OpCodes = new List <OpCode.IOpCode> { new OpCode.Type0() }; var Type0SVRule = new SVRule(OpCodes); var StateSVRule = new SVRule(new List <OpCode.IOpCode> { new OpCode.State() }); var Type0NeuronGene = new NeuronGene(0, 0, 255, Type0SVRule); var StateNeuronGene = new NeuronGene(0, 0, 255, StateSVRule); var DendriteDynamics = new DendriteDynamicsGene(0, 0, 0, StateSVRule, 0, null, 0, null, null, 0); DendriteGene DendriteGene = new DendriteGene(0, BrainLobeType.Drive, DendriteGene.SpreadType.Flat, 0, new Vector2Int(1, 1), new Vector2Int(255, 255), new Vector2Int(255, 255), DendriteDynamics); DendriteGene DendriteGeneNoDendrites = new DendriteGene(0, BrainLobeType.Perception, DendriteGene.SpreadType.Flat, 0, new Vector2Int(0, 0), new Vector2Int(1, 1), new Vector2Int(1, 1), DendriteDynamics); // Destination lobe var LobeGene1 = new LobeGene(BrainLobeID.Perception, new Vector2Int(1, 1), new Vector2Int(1, 1), DendriteGene, DendriteGene, Type0NeuronGene, 0, 0); // Source lobe var LobeGene2 = new LobeGene(BrainLobeID.Drive, new Vector2Int(1, 1), new Vector2Int(1, 1), DendriteGeneNoDendrites, DendriteGeneNoDendrites, StateNeuronGene, 0, 0); Brain = new Brain(); DestLobe = LobeBuilder.BuildFromGene(LobeGene1, 1, 1); SourceLobe = LobeBuilder.BuildFromGene(LobeGene2, 1, 1); Brain.AddLobe(DestLobe); Brain.AddLobe(SourceLobe); DestLobe.SetUpDendrites(Brain); }
public IEnumerator FireStimulus() { GameObject go = new GameObject("dummy"); Brain Brain = go.AddComponent <Brain>(); var Neurons = Enumerable.Range(0, 100).Select(n => new Neuron(n, new NeuronGene(0, 0, 0, null))).ToList <Neuron>(); Brain.AddLobe(new Lobe(BrainLobeID.Perception, null, new Vector2Int(0, 0), new Vector2Int(10, 10), Neurons, false, false)); Brain.AddLobe(new Lobe(BrainLobeID.Drive, null, new Vector2Int(0, 0), new Vector2Int(10, 10), Neurons, false, false)); Brain.AddLobe(new Lobe(BrainLobeID.StimulusSource, null, new Vector2Int(0, 0), new Vector2Int(10, 10), Neurons, false, false)); Brain.AddStimulus(StimulusGenus.Critter); yield return(null); // wait one tick for processing var Stim = Brain.GetHighestStimulus(); Assert.AreEqual(StimulusGenus.Critter, Stim); yield return(null); }
public static Brain Build(GameObject go, List <LobeGene> genes) { Brain Brain = go.AddComponent <Brain>(); foreach (var LobeGene in genes) { int NumNeurons0 = 0; int NumNeurons1 = 0; try { NumNeurons0 = genes[(int)LobeGene.Dendrite0.SourceLobeIndex].NumNeurons; NumNeurons1 = genes[(int)LobeGene.Dendrite1.SourceLobeIndex].NumNeurons; } catch (Exception e) { // OK - we have no source lobe - probably from a test } var Lobe = LobeBuilder.BuildFromGene(LobeGene, NumNeurons0, NumNeurons1); Brain.AddLobe(Lobe); } Brain.SetUpLobes(); return(Brain); }