public static NeuronGene Interpret(RawGene gene)
    {
        int     Threshold = gene[12];
        int     RestState = gene[14];
        int     Leakage   = gene[13];
        RawGene SVRule    = new RawGene(gene.GetRange(16, 12).ToArray());
        var     StateRule = SVRuleBuilder.Build(SVRuleInterpreter.Interpret(SVRule));

        return(new NeuronGene(Threshold, RestState, Leakage, StateRule));
    }
    public IEnumerator Interpret()
    {
        RawGene gene   = new RawGene(new byte[] { 0x23, 0x31, 0x22 });
        var     SVRule = SVRuleInterpreter.Interpret(gene);

        Assert.AreEqual((OpCodeType)0x23, SVRule.OpCodes[0]);
        Assert.AreEqual((OpCodeType)0x31, SVRule.OpCodes[1]);
        Assert.AreEqual((OpCodeType)0x22, SVRule.OpCodes[2]);

        yield return(null);
    }
    public IEnumerator Build()
    {
        RawGene gene       = new RawGene(new byte[] { 1, 22, 31 });
        var     SVRuleGene = SVRuleInterpreter.Interpret(gene);
        var     SVRule     = SVRuleBuilder.Build(SVRuleGene);

        Assert.IsInstanceOf(typeof(Zero), SVRule.OpCodes[0]);
        Assert.IsInstanceOf(typeof(ThirtyTwo), SVRule.OpCodes[1]);
        Assert.IsInstanceOf(typeof(Plus), SVRule.OpCodes[2]);

        yield return(null);
    }
Exemple #4
0
    public static LobeGene Interpret(RawGene gene)
    {
        BrainLobeID LobeID               = (BrainLobeID)gene[2];
        Vector2Int  Location             = new Vector2Int(gene[7], gene[8]);
        Vector2Int  Dimension            = new Vector2Int(gene[9], gene[10]);
        int         CopyToPerceptionLobe = gene[11];
        int         WinnerTakesAll       = gene[28];
        var         Dendrites            = GetDendrites(gene);
        var         Neuron               = GetNeuron(gene);

        return(new LobeGene(LobeID, Location, Dimension, Dendrites[0], Dendrites[1], Neuron, CopyToPerceptionLobe, WinnerTakesAll));
    }
Exemple #5
0
    public static SVRuleGene Interpret(RawGene gene)
    {
        if (gene == null)
        {
            return(new SVRuleGene(new List <OpCodeType>()));
        }
        List <OpCodeType> OpCodes = new List <OpCodeType>();

        foreach (var Byte in gene)
        {
            OpCodes.Add((OpCodeType)Byte);
        }
        return(new SVRuleGene(OpCodes));
    }
Exemple #6
0
    public static Gene InterpretGene(RawGene rawGene)
    {
        var GeneTypes = new
        {
            BrainLobe = new byte[] { 0x0, 0x0 }
        };

        byte[] GeneType = { rawGene[0], rawGene[1] };

        if (GeneType.SequenceEqual(GeneTypes.BrainLobe))
        {
            return(LobeInterpreter.Interpret(rawGene));
        }
        else
        {
            return(null);
        }
    }
    public static List <DendriteGene> Interpret(RawGene gene)
    {
        List <DendriteGene> Genes = new List <DendriteGene>();

        int[] Offsets = { 29, 116 };

        for (int i = 0; i < Offsets.Length; i++)
        {
            var                     Offset                  = Offsets[i];
            BrainLobeType           SourceLobeIndex         = (BrainLobeType)gene[Offset];
            Vector2Int              DendriteRange           = new Vector2Int(gene[Offset + 1], gene[Offset + 2]);
            DendriteGene.SpreadType Spread                  = (DendriteGene.SpreadType)gene[Offset + 3];
            int                     Fanout                  = gene[Offset + 4];
            Vector2Int              LTWRange                = new Vector2Int(gene[Offset + 5], gene[Offset + 6]);
            Vector2Int              StrengthRange           = new Vector2Int(gene[Offset + 7], gene[Offset + 8]);
            int                     LTWGainRate             = gene[Offset + 12];
            int                     STWGainRate             = gene[Offset + 11];
            int                     SusceptibilityRelaxRate = gene[Offset + 10];
            RawGene                 SusceptRule             = new RawGene(gene.GetRange(Offset + 39, 12).ToArray());
            var                     SusceptibilitySVRule    = SVRuleBuilder.Build(SVRuleInterpreter.Interpret(SusceptRule));
            var                     StrengthGain            = gene[Offset + 13];
            RawGene                 StrengthRule            = new RawGene(gene.GetRange(Offset + 14, 12).ToArray());
            var                     StrengthSVRule          = SVRuleBuilder.Build(SVRuleInterpreter.Interpret(StrengthRule));
            var                     StrengthLoss            = gene[Offset + 26];
            StrengthRule = new RawGene(gene.GetRange(Offset + 27, 12).ToArray());
            var StrengthLossSVRule  = SVRuleBuilder.Build(SVRuleInterpreter.Interpret(StrengthRule));
            var ReinforcementRule   = new RawGene(gene.GetRange(Offset + 51, 12).ToArray());
            var ReinforcementSVRule = SVRuleBuilder.Build(SVRuleInterpreter.Interpret(ReinforcementRule));
            var MigrateWhen         = gene[Offset + 9];

            var DendriteDynamics = new DendriteDynamicsGene(LTWGainRate, STWGainRate, SusceptibilityRelaxRate, SusceptibilitySVRule, StrengthGain, StrengthSVRule, StrengthLoss, StrengthLossSVRule, ReinforcementSVRule, MigrateWhen);

            Genes.Add(new DendriteGene(i, SourceLobeIndex, Spread, Fanout, DendriteRange, LTWRange, StrengthRange, DendriteDynamics));
        }

        return(Genes);
    }
Exemple #8
0
 public void SetUp()
 {
     LobeGene = new RawGene(Enumerable.Repeat <byte>(0, 200).ToArray <byte>());
 }
Exemple #9
0
 private void CheckGene(RawGene gene, int geneLength, byte[] expectedBytes)
 {
     Assert.AreEqual(geneLength, gene.Count);
     Assert.AreEqual(expectedBytes, gene);
 }
Exemple #10
0
 private static NeuronGene GetNeuron(RawGene gene)
 {
     return(NeuronInterpreter.Interpret(gene));
 }
Exemple #11
0
 private static List <DendriteGene> GetDendrites(RawGene gene)
 {
     return(DendriteInterpreter.Interpret(gene));
 }