Beispiel #1
0
    public static Lobe BuildFromGene(LobeGene gene, int numSourceNeurons0, int numSourceNeurons1)
    {
        var Neurons = Enumerable.Range(0, gene.Dimension.x * gene.Dimension.y).Select(n => new Neuron(n, gene.NeuronGene)).ToList();

        Neurons = SetUpDendrites(Neurons, gene.Dendrite0, gene.Dendrite1, numSourceNeurons0, numSourceNeurons1);
        Type NeuronEnumType = null;

        switch (gene.LobeID)
        {
        case BrainLobeID.StimulusSource:
            NeuronEnumType = typeof(StimulusGenus);
            break;

        case BrainLobeID.Drive:
            NeuronEnumType = typeof(DriveGenus);
            break;

        case BrainLobeID.Verb:
            NeuronEnumType = typeof(VerbGenus);
            break;

        case BrainLobeID.Noun:
            NeuronEnumType = typeof(StimulusGenus);
            break;

        case BrainLobeID.Decision:
            NeuronEnumType = typeof(VerbGenus);
            break;

        case BrainLobeID.Attention:
            NeuronEnumType = typeof(StimulusGenus);
            break;
        }
        return(new Lobe(gene.LobeID, NeuronEnumType, gene.Location, gene.Dimension, Neurons, gene.CopyToPerceptionLobe, gene.WinnerTakesAll));
    }
Beispiel #2
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);
    }
Beispiel #3
0
    public IEnumerator BuildBrain()
    {
        LobeGene        Gene  = new LobeGene(0, new Vector2Int(0, 0), new Vector2Int(1, 2), null, null, null, 0, 0);
        List <LobeGene> Genes = new List <LobeGene> {
            Gene
        };

        GameObject go = new GameObject("Dummy game object");

        Brain Brain = BrainBuilder.Build(go, Genes);

        Assert.AreEqual(1, Brain.NumLobes);
        yield return(null);
    }
    public IEnumerator BuildLobe()
    {
        DummyBrain Brain     = new DummyBrain();
        var        Location  = new Vector2Int(1, 2);
        var        Dimension = new Vector2Int(3, 4);
        LobeGene   Gene      = new LobeGene(BrainLobeID.Concept, Location, Dimension, null, null, null, 0, 0);
        var        Lobe      = LobeBuilder.BuildFromGene(Gene, 25, 25);

        Assert.AreEqual(BrainLobeID.Concept, Lobe.LobeID);
        Assert.AreEqual(Location, Lobe.Location);
        Assert.AreEqual(Dimension, Lobe.Dimension);
        Assert.AreEqual(Dimension.x * Dimension.y, Lobe.NumNeurons);

        yield return(null);
    }