示例#1
0
 public DendriteGene(int type, BrainLobeType sourceLobeIndex, SpreadType spread, int fanout, Vector2Int dendriteNumber, Vector2Int ltwRange, Vector2Int strengthRange, DendriteDynamicsGene dynamicsGene)
 {
     Type            = type;
     SourceLobeIndex = sourceLobeIndex;
     Spread          = spread;
     Fanout          = fanout;
     DendriteNumber  = dendriteNumber;
     LTWRange        = ltwRange;
     StrengthRange   = strengthRange;
     Dynamics        = dynamicsGene;
 }
示例#2
0
 public Dendrite(BrainLobeType sourceLobeIndex, int sourceNeuronIndex, DendriteGene gene, bool noStrength = false)
 {
     SourceLobeIndex   = sourceLobeIndex;
     SourceNeuronIndex = sourceNeuronIndex;
     DendriteGene      = gene;
     LTW = gene.InitialLTW;
     STW = gene.InitialLTW;
     if (noStrength)
     {
         Strength = 0;
     }
     else
     {
         Strength = gene.InitialStrength;
     }
 }
    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);
    }
示例#4
0
 public override Lobe LobeFromIndex(BrainLobeType index)
 {
     return(new Lobe(BrainLobeID.Attention, null, new Vector2Int(0, 0), new Vector2Int(0, 0), null, false, false));
 }
示例#5
0
 public TestDendrite(BrainLobeType sourceLobeIndex, int sourceNeuronIndex, DendriteGene gene) : base(sourceLobeIndex, sourceNeuronIndex, gene)
 {
 }
示例#6
0
 public virtual Lobe LobeFromIndex(BrainLobeType index)
 {
     return(Lobes[(int)index]);
 }