Esempio n. 1
0
    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);
    }
Esempio n. 2
0
    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);
    }
Esempio n. 3
0
    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);
    }