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); }
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); }