Exemplo n.º 1
0
 /// <summary>
 /// Setups signal delaying
 /// </summary>
 /// <param name="distancesStat">Distance statistics to be used when synaptic delay method is Distance</param>
 /// <param name="rand">Random object to be used when synaptic delay method is Random</param>
 public void SetupDelay(BasicStat distancesStat, Random rand)
 {
     if (_maxDelay > 0)
     {
         //Set synapse signal delay
         if (DelayMethod == SynapticDelayMethod.Distance)
         {
             double relDistance = (Distance - distancesStat.Min) / distancesStat.Span;
             Delay = (int)Math.Round(_maxDelay * relDistance);
         }
         else
         {
             Delay = rand.Next(_maxDelay + 1);
         }
         if (Delay == 0)
         {
             //No queue will be used
             _signalQueue = null;
         }
         else
         {
             //Delay queue
             _signalQueue = new SimpleQueue <Signal>(Delay + 1);
         }
     }
     return;
 }
Exemplo n.º 2
0
        /// <summary>
        /// Recomputes range
        /// </summary>
        private void RecomputeRange(Interval range, BasicStat stat)
        {
            double min, max;

            if (_standardize)
            {
                double hi = Math.Max(Math.Abs((stat.Min - stat.ArithAvg) / stat.StdDev), Math.Abs((stat.Max - stat.ArithAvg) / stat.StdDev));
                //Following ensures mean at the center of the normalization range but depending on the data
                //it can lead to full utilization of only one half of the normalization interval.
                min = -hi;
                max = hi;
            }
            else
            {
                min = stat.Min;
                max = stat.Max;
            }
            if (_keepReserve)
            {
                double addSpan = ((max - min) / 2d) * RangeReserveCoeff;
                min -= addSpan;
                max += addSpan;
            }
            range.Set(min, max);
            return;
        }
Exemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SilverNeedle.Characters.CharacterSkill"/> class.
 /// </summary>
 /// <param name="baseSkill">Base skill.</param>
 /// <param name="baseScore">Base score.</param>
 /// <param name="isClassSkill">If set to <c>true</c> is class skill.</param>
 public CharacterSkill(Skill baseSkill, AbilityScore baseScore, bool isClassSkill)
 {
     Skill = baseSkill;
     this.baseAbilityScore = baseScore;
     this.ClassSkill       = isClassSkill;
     this.skillStats       = new BasicStat(baseSkill.Name);
 }
Exemplo n.º 4
0
        public FieldUser(GameSocket socket)
        {
            Socket = socket;

            Controlled = new List <IFieldControlledObj>();
            Owned      = new List <IFieldOwnedObj>();
            Pets       = Character.Pets
                         .Where(sn => sn > 0)
                         .Select(sn => Character
                                 .Inventories[ItemInventoryType.Cash].Items.Values
                                 .OfType <ItemSlotPet>()
                                 .FirstOrDefault(i => i.CashItemSN == sn))
                         .Where(item => item != null)
                         .Select(item => new FieldUserPet(
                                     this,
                                     item,
                                     (byte)Character.Pets.IndexOf(item.CashItemSN ?? 0)
                                     ))
                         .ToList();

            BasicStat      = new BasicStat(this);
            ForcedStat     = new ForcedStat(this);
            TemporaryStats = new Dictionary <TemporaryStatType, TemporaryStat>();
            ValidateStat();
        }
Exemplo n.º 5
0
        public void StatsTotalUpAdjustments()
        {
            var stat = new BasicStat("TestStat", 10);

            stat.AddModifier(new ValueStatModifier(5));
            Assert.Equal(15, stat.TotalValue);
        }
Exemplo n.º 6
0
 //Constructor
 /// <summary>
 /// Base constructor
 /// </summary>
 /// <param name="featureType">Feature type</param>
 /// <param name="outputRange">Filter's output range</param>
 protected FeatureFilterBase(FeatureType featureType, Interval outputRange)
 {
     Type        = featureType;
     Stat        = new BasicStat();
     OutputRange = outputRange.DeepClone();
     return;
 }
Exemplo n.º 7
0
    public void StatsTotalUpAdjustments()
    {
        var stat = new BasicStat(10);

        stat.AddModifier(new BasicStatModifier(5, "Foo"));
        Assert.AreEqual(15, stat.TotalValue);
    }
        /// <inheritdoc/>
        public double Compute(BasicStat continuousActivationStat,
                              BasicStat continuousActivationDiffStat,
                              MovingDataWindow activationMDW,
                              SimpleQueue <byte> firingMDW,
                              double activation,
                              double normalizedActivation,
                              bool spike
                              )
        {
            PredictorActivationDiffStatFigureSettings cfg = (PredictorActivationDiffStatFigureSettings)Cfg;

            if (cfg.Window == PredictorActivationDiffStatFigureSettings.NAWindowNum)
            {
                return(continuousActivationDiffStat.Get(cfg.Figure));
            }
            else
            {
                if (activationMDW.UsedCapacity >= cfg.Window)
                {
                    return(activationMDW.GetDataDiffStat(cfg.Window).Get(cfg.Figure));
                }
                else
                {
                    return(0d);
                }
            }
        }
Exemplo n.º 9
0
        public WeaponAttack(OffenseStats offense, CharacterSize size, IWeaponAttackStatistics weapon)
        {
            this.offenseAbilities = offense;
            this.size             = size;
            this.Weapon           = weapon;
            this.Name             = weapon.Name;
            this.Range            = weapon.Range;
            this.DamageType       = weapon.DamageType.ToString();
            this.CriticalThreat   = weapon.CriticalThreat;

            this.CriticalModifier = new BasicStat(string.Format("{0} Critical Modifier", weapon.Name), weapon.CriticalModifier);

            this.attackBonus = new BasicStat(string.Format("{0} Attack Bonus", weapon.Name), weapon.AttackModifier);
            this.attackBonus.AddModifier(new WeaponProficiencyAttackModifier(this.offenseAbilities, this.Weapon));
            this.attackBonus.AddModifiers(MultipleAttackBonusModifier.GetConditionalMultipleAttackModifiers());

            this.DamageModifier = new BasicStat(string.Format("{0} Damage Modifier", weapon.Name), 0);
            foreach (var weaponModifier in offense.WeaponModifiers)
            {
                if (weaponModifier.WeaponQualifies(weapon))
                {
                    weaponModifier.ApplyModifier(this);
                }
            }
        }
Exemplo n.º 10
0
 //Constructor
 /// <summary>
 /// Creates initialized instance
 /// </summary>
 /// <param name="sourceNeuron">Source neuron</param>
 /// <param name="targetNeuron">Target neuron</param>
 /// <param name="weight">Synapse initial weight</param>
 public BaseSynapse(INeuron sourceNeuron,
                    INeuron targetNeuron,
                    double weight
                    )
 {
     //Neurons to be connected
     SourceNeuron = sourceNeuron;
     TargetNeuron = targetNeuron;
     //Euclidean distance
     Distance = EuclideanDistance.Compute(SourceNeuron.Placement.ReservoirCoordinates, TargetNeuron.Placement.ReservoirCoordinates);
     //Weight sign rules
     if (SourceNeuron.Role == NeuronCommon.NeuronRole.Input)
     {
         if (TargetNeuron.TypeOfActivation == ActivationType.Analog)
         {
             //No change of the weight sign
             Weight = weight;
         }
         else
         {
             //Target is spiking neuron
             //Weight must be always positive
             Weight = Math.Abs(weight);
         }
     }
     else
     {
         //Weight sign is dependent on source neuron role
         Weight = Math.Abs(weight) * (SourceNeuron.Role == NeuronCommon.NeuronRole.Excitatory ? 1d : -1d);
     }
     //Efficacy statistics
     EfficacyStat = new BasicStat(false);
     return;
 }
Exemplo n.º 11
0
        /// <inheritdoc/>
        public double Compute(BasicStat continuousActivationStat,
                              BasicStat continuousActivationDiffStat,
                              MovingDataWindow activationMDW,
                              SimpleQueue <byte> firingMDW,
                              double activation,
                              double normalizedActivation,
                              bool spike
                              )
        {
            PredictorFiringTraceSettings cfg = (PredictorFiringTraceSettings)Cfg;

            if (cfg.Window == PredictorFiringTraceSettings.NAWindowNum)
            {
                return(_continuousTrace);
            }
            else
            {
                if (firingMDW.Count >= cfg.Window)
                {
                    double trace = 0d;
                    for (int i = cfg.Window - 1; i >= 0; i--)
                    {
                        trace *= (1d - cfg.Fading);
                        trace += firingMDW.GetElementAt(i, true);
                    }
                    return(trace);
                }
                else
                {
                    return(0d);
                }
            }
        }
Exemplo n.º 12
0
 public void Initialize(ComponentContainer components)
 {
     sorcererLevels   = components.Get <ClassLevel>();
     CriticalModifier = new BasicStat("Elemental Ray Critical Modifier", 2);
     elementalType    = components.Get <ElementalType>();
     charisma         = components.Get <AbilityScores>().GetAbility(AbilityScoreTypes.Charisma);
     AttackBonus      = components.Get <OffenseStats>().RangeAttackBonus;
 }
Exemplo n.º 13
0
        public void FormatNiceStringVersionOfStat()
        {
            var stat = new BasicStat("TestStat", 20);
            IValueStatModifier mod = new ConditionalStatModifier(new ValueStatModifier("Attack Bonus", 3, "bonus"), "vs. Thor");

            stat.AddModifier(mod);
            Assert.Equal("Fight +20 (+23 vs. Thor)", stat.ToString("Fight"));
        }
Exemplo n.º 14
0
 /// <summary>
 /// The deep copy constructor.
 /// </summary>
 /// <param name="source">The source instance.</param>
 public ClusterErrStatistics(ClusterErrStatistics source)
 {
     ClusterName          = source.ClusterName;
     NatPrecissionErrStat = new BasicStat(source.NatPrecissionErrStat);
     NrmPrecissionErrStat = new BasicStat(source.NrmPrecissionErrStat);
     BinaryErrStat        = source.BinaryErrStat?.DeepClone();
     return;
 }
Exemplo n.º 15
0
    public void FormatNiceStringVersionOfStat()
    {
        var stat = new BasicStat(20);
        BasicStatModifier mod = new ConditionalStatModifier("vs. Thor", "Attack Bonus", 3, "bonus", "Food");

        stat.AddModifier(mod);
        Assert.AreEqual("Fight +20 (+23 vs. Thor)", stat.ToString("Fight"));
    }
Exemplo n.º 16
0
 public void Initialize(ComponentContainer components)
 {
     this.usesPerDayStatistic = new BasicStat(this.UsesPerDayStatName());
     this.healingDice         = new DiceStatistic("Lay On Hands Dice", "1d6");
     components.Add(usesPerDayStatistic);
     components.Add(healingDice);
     paladinLevel = components.Get <ClassLevel>();
 }
Exemplo n.º 17
0
 //Constructor
 /// <summary>
 /// Creates an initialized instance.
 /// </summary>
 public StandardStatSet()
 {
     MinStat  = new BasicStat();
     MaxStat  = new BasicStat();
     AvgStat  = new BasicStat();
     SpanStat = new BasicStat();
     return;
 }
Exemplo n.º 18
0
        public void WorksOffOfTheAbilityModifierIfAbilityScoreIsUsed()
        {
            var ability = new AbilityScore(AbilityScoreTypes.Strength, 18);
            var limit   = new BasicStat("Foo", 10);
            var mod     = new LimitStatModifier(ability, limit);

            Assert.Equal(mod.Modifier, 4);
        }
Exemplo n.º 19
0
        public void AlwaysRoundDownStats()
        {
            var stat = new BasicStat("TestStat", 2);

            stat.AddModifier(new ValueStatModifier(-1));
            stat.AddModifier(new ValueStatModifier(0.667f));
            Assert.Equal(-1, stat.SumBasicModifiers());
            Assert.Equal(1, stat.TotalValue);
        }
Exemplo n.º 20
0
 //Constructor
 /// <summary>
 /// Creates an initialized instance
 /// </summary>
 public NeuronStatistics(Interval neuronStateRange)
 {
     TStimuliStat                  = new BasicStat();
     RStimuliStat                  = new BasicStat();
     ActivationStateRange          = neuronStateRange.DeepClone();
     NormalizedActivationStateStat = new BasicStat();
     OutputSignalStat              = new BasicStat();
     return;
 }
Exemplo n.º 21
0
 //Constructor
 /// <summary>
 /// Creates an initialized instance
 /// </summary>
 /// <param name="inputFieldIdx">Index of correspondent reservoir input field.</param>
 /// <param name="inputRange">
 /// Range of input value.
 /// It is very recommended to have input values normalized and standardized before
 /// they are passed as an input.
 /// </param>
 public InputAnalogNeuron(int inputFieldIdx, Interval inputRange)
 {
     Placement            = new NeuronPlacement(inputFieldIdx, -1, inputFieldIdx, inputFieldIdx, 0, 0);
     _inputRange          = inputRange.DeepClone();
     StimuliStat          = new BasicStat();
     TransmissionFreqStat = new BasicStat();
     Reset(false);
     return;
 }
Exemplo n.º 22
0
        public FieldUser(WvsGameSocket socket, Character character)
        {
            Socket    = socket;
            Character = character;

            BasicStat  = new BasicStat(this);
            ForcedStat = new ForcedStat();
            ValidateStat();
        }
Exemplo n.º 23
0
    public void AlwaysRoundDownStats()
    {
        var stat = new BasicStat(2);

        stat.AddModifier(new BasicStatModifier(-1, "Food"));
        stat.AddModifier(new BasicStatModifier(0.667f, "Because"));
        Assert.AreEqual(-1, stat.SumBasicModifiers);
        Assert.AreEqual(1, stat.TotalValue);
    }
Exemplo n.º 24
0
        public void StatsCanHaveAMinimumValueThatClampTheResult()
        {
            var stat = new BasicStat("Stat!");

            stat.Minimum = 3;
            var mod = new ValueStatModifier(-20);

            stat.AddModifier(mod);
            Assert.Equal(stat.TotalValue, 3);
        }
Exemplo n.º 25
0
 //Constructor
 /// <summary>
 /// Creates an initialized instance
 /// </summary>
 /// <param name="inputFieldIdx">Index of corresponding reservoir input field.</param>
 /// <param name="inputRange">
 /// Range of input value.
 /// It is very recommended to have input values normalized and standardized before
 /// they are passed to input neuron.
 /// </param>
 /// <param name="inputCodingFractions">Number of coding fractions (see SpikeTrainConverter to understand)</param>
 public InputSpikingNeuron(int inputFieldIdx, Interval inputRange, int inputCodingFractions)
 {
     Placement              = new NeuronPlacement(inputFieldIdx, -1, inputFieldIdx, inputFieldIdx, 0, 0);
     _inputRange            = new Interval(inputRange.Min.Bound(), inputRange.Max.Bound());
     _signalConverter       = new SignalConverter(_inputRange, inputCodingFractions);
     StimuliStat            = new BasicStat();
     TransmissionSignalStat = new BasicStat();
     Reset(false);
     return;
 }
Exemplo n.º 26
0
 //Constructor
 /// <summary>
 /// Creates an initialized instance
 /// </summary>
 public NeuronStatistics()
 {
     InputStimuliStat     = new BasicStat();
     ReservoirStimuliStat = new BasicStat();
     TotalStimuliStat     = new BasicStat();
     ActivationStat       = new BasicStat();
     AnalogSignalStat     = new BasicStat();
     FiringStat           = new BasicStat();
     return;
 }
Exemplo n.º 27
0
        public void CastingDoesntBreakConditionalModifiers()
        {
            var stat = new BasicStat("TestStat", 10);
            IValueStatModifier mod = new ConditionalStatModifier(new ValueStatModifier("Attack Bonus", 3, "bonus"), "vs. Thor");

            stat.AddModifier(mod);
            Assert.Equal(1, stat.GetConditions().Count());
            Assert.Equal(10, stat.TotalValue);
            Assert.Equal(13, stat.GetConditionalValue("vs. Thor"));
        }
Exemplo n.º 28
0
        public void StatsCanHaveMaximumValuesThatClampTheResult()
        {
            var stat = new BasicStat("Stat 1");

            stat.Maximum = 29;
            var mod = new ValueStatModifier(30);

            stat.AddModifier(mod);
            Assert.Equal(stat.TotalValue, 29);
        }
Exemplo n.º 29
0
 //Constructor
 /// <summary>
 /// Creates an initialized instance.
 /// </summary>
 /// <param name="role">The role of the synapses.</param>
 public SynapseStat(Synapse.SynRole role)
 {
     Role     = role;
     Count    = 0;
     Distance = new BasicStat();
     Delay    = new BasicStat();
     Weight   = new BasicStat();
     Efficacy = new StandardStatSet();
     return;
 }
Exemplo n.º 30
0
 //Constructors
 /// <summary>
 /// Creates an uninitialized instance.
 /// </summary>
 /// <param name="unitCfg">The configuration of the readout unit.</param>
 /// <param name="unitIndex">An index of the readout unit within the readout layer.</param>
 /// <param name="memberIndex">An index within the "One Takes All" group.</param>
 public MemberErrorStat(ReadoutUnitSettings unitCfg, int unitIndex, int memberIndex)
 {
     UnitCfg     = (ReadoutUnitSettings)unitCfg.DeepClone();
     UnitIndex   = unitIndex;
     MemberIndex = memberIndex;
     ErrStat     = new BasicStat();
     NumOfCorrectButBellowBorderSelections      = 0;
     NumOfOverbeatedAboveBorderRawProbabilities = 0;
     return;
 }