Exemple #1
0
 /// <summary>
 /// The deep copy constructor
 /// </summary>
 /// <param name="source">Source instance</param>
 public PredictorsSettings(PredictorsSettings source)
 {
     EnablingSwitchCollection = (bool[])source.EnablingSwitchCollection.Clone();
     //Params
     ParamsCfg = (PredictorsParamsSettings)source.ParamsCfg?.DeepClone();
     return;
 }
        /// <summary>
        /// Creates initialized instance using xml element
        /// </summary>
        /// <param name="elem">Xml element containing settings</param>
        public PredictorsParamsSettings(XElement elem)
            : this()
        {
            //Validation
            XElement settingsElem = Validate(elem, XsdTypeName);

            //Parsing
            foreach (PredictorsProvider.PredictorID predictorID in typeof(PredictorsProvider.PredictorID).GetEnumValues())
            {
                XElement predictorElem = settingsElem.Elements(PredictorsSettings.GetXmlName(predictorID)).FirstOrDefault();
                if (predictorElem != null)
                {
                    switch (predictorID)
                    {
                    case PredictorsProvider.PredictorID.ActivationFadingSum:
                        ActivationFadingSumCfg = new ActivationFadingSumSettings(predictorElem);
                        break;

                    case PredictorsProvider.PredictorID.ActivationMWAvg:
                        ActivationMWAvgCfg = new ActivationMWAvgSettings(predictorElem);
                        break;

                    case PredictorsProvider.PredictorID.FiringFadingSum:
                        FiringFadingSumCfg = new FiringFadingSumSettings(predictorElem);
                        break;

                    case PredictorsProvider.PredictorID.FiringMWAvg:
                        FiringMWAvgCfg = new FiringMWAvgSettings(predictorElem);
                        break;

                    case PredictorsProvider.PredictorID.FiringCount:
                        FiringCountCfg = new FiringCountSettings(predictorElem);
                        break;

                    case PredictorsProvider.PredictorID.FiringBinPattern:
                        FiringBinPatternCfg = new FiringBinPatternSettings(predictorElem);
                        break;

                    default:
                        break;
                    }
                }
            }
            return;
        }
Exemple #3
0
 //Constructors
 /// <summary>
 /// Creates initialized instance as a result of L1, L2 and L3 predictors settings.
 /// (L1 overrides L2 overiddes L3)
 /// </summary>
 /// <param name="level1PredictorsCfg">Level1 (lowest level) predictors settings</param>
 /// <param name="level2PredictorsCfg">Level2 predictors settings</param>
 /// <param name="level3PredictorsCfg">Level3 (highest level) predictors settings</param>
 public PredictorsSettings(PredictorsSettings level1PredictorsCfg,
                           PredictorsSettings level2PredictorsCfg,
                           PredictorsSettings level3PredictorsCfg
                           )
 {
     EnablingSwitchCollection = new bool[PredictorsProvider.NumOfSupportedPredictors];
     //Params
     ParamsCfg = level1PredictorsCfg?.ParamsCfg != null ? (PredictorsParamsSettings)level1PredictorsCfg.ParamsCfg.DeepClone() : (level2PredictorsCfg?.ParamsCfg != null ? (PredictorsParamsSettings)level2PredictorsCfg.ParamsCfg.DeepClone() : (level3PredictorsCfg?.ParamsCfg != null ? (PredictorsParamsSettings)level3PredictorsCfg.ParamsCfg.DeepClone() : new PredictorsParamsSettings()));
     //Enabling switches
     foreach (PredictorsProvider.PredictorID predictorID in typeof(PredictorsProvider.PredictorID).GetEnumValues())
     {
         EnablingSwitchCollection[(int)predictorID] = ((level1PredictorsCfg == null ? true : level1PredictorsCfg.EnablingSwitchCollection[(int)predictorID]) &&
                                                       (level2PredictorsCfg == null ? true : level2PredictorsCfg.EnablingSwitchCollection[(int)predictorID]) &&
                                                       (level3PredictorsCfg == null ? true : level3PredictorsCfg.EnablingSwitchCollection[(int)predictorID])
                                                       );
     }
     return;
 }
Exemple #4
0
        /// <summary>
        /// Creates new initialized instance.
        /// </summary>
        /// <param name="cfg">Configuration to be used. Note that ParamsCfg member inside the cfg must not be null.</param>
        public PredictorsProvider(PredictorsSettings cfg)
        {
            //Check
            if (cfg.ParamsCfg == null)
            {
                throw new ArgumentException("Invalid configuration. ParamsCfg inside the configuration is null.", "cfg");
            }
            //Store configuration
            _cfg = cfg;
            //Determine necessary size of the activation moving window and instantiate it
            int activationMWSize = 0;

            if (_cfg.IsEnabled(PredictorID.ActivationMWAvg))
            {
                switch (_cfg.ParamsCfg.ActivationMWAvgCfg.Weights)
                {
                case PredictorMWAvgWeightsType.Exponential:
                    _activationMWAvgWeights = _expWeightsCache;
                    activationMWSize        = Math.Min(_cfg.ParamsCfg.ActivationMWAvgCfg.Window, _expWeightsCache.Length);
                    break;

                case PredictorMWAvgWeightsType.Linear:
                    _activationMWAvgWeights = _linWeightsCache;
                    activationMWSize        = Math.Min(_cfg.ParamsCfg.ActivationMWAvgCfg.Window, _linWeightsCache.Length);
                    break;

                case PredictorMWAvgWeightsType.Constant:
                    _activationMWAvgWeights = null;
                    activationMWSize        = _cfg.ParamsCfg.ActivationMWAvgCfg.Window;
                    break;

                default:
                    throw new InvalidOperationException($"Unsupported weights type {_cfg.ParamsCfg.ActivationMWAvgCfg.Weights}.");
                }
            }
            _activationMDW = activationMWSize == 0 ? null : new MovingDataWindow(activationMWSize);

            //Determine necessary size of the firing moving window and instantiate it
            int firingMWSize = 0;

            if (_cfg.IsEnabled(PredictorID.FiringMWAvg))
            {
                switch (_cfg.ParamsCfg.FiringMWAvgCfg.Weights)
                {
                case PredictorMWAvgWeightsType.Exponential:
                    _firingMWAvgWeights = _expWeightsCache;
                    firingMWSize        = Math.Min(_cfg.ParamsCfg.FiringMWAvgCfg.Window, _expWeightsCache.Length);
                    break;

                case PredictorMWAvgWeightsType.Linear:
                    _firingMWAvgWeights = _linWeightsCache;
                    firingMWSize        = Math.Min(_cfg.ParamsCfg.FiringMWAvgCfg.Window, _linWeightsCache.Length);
                    break;

                case PredictorMWAvgWeightsType.Constant:
                    _firingMWAvgWeights = null;
                    firingMWSize        = _cfg.ParamsCfg.FiringMWAvgCfg.Window;
                    break;

                default:
                    throw new InvalidOperationException($"Unsupported weights type {_cfg.ParamsCfg.FiringMWAvgCfg.Weights}.");
                }
            }
            if (_cfg.IsEnabled(PredictorID.FiringBinPattern))
            {
                firingMWSize = Math.Max(firingMWSize, _cfg.ParamsCfg.FiringBinPatternCfg.Window);
            }
            if (_cfg.IsEnabled(PredictorID.FiringCount))
            {
                firingMWSize = Math.Max(firingMWSize, _cfg.ParamsCfg.FiringCountCfg.Window);
            }
            _firingMDW = firingMWSize == 0 ? null : new Bitwise.Window(firingMWSize);
            Reset();
            return;
        }
 /// <summary>
 /// Generates default named xml element containing the settings.
 /// </summary>
 /// <param name="suppressDefaults">Specifies whether to ommit optional nodes having set default values</param>
 /// <returns>XElement containing the settings</returns>
 public override XElement GetXml(bool suppressDefaults)
 {
     return(GetXml(PredictorsSettings.GetXmlName(ID), suppressDefaults));
 }