public void OverwriteWith(ModelParticle particle)
        {
            this.ModelParameters = (ModelParams)particle.ModelParameters.Clone();
            this.Weight          = particle.Weight;

            this.Size       = particle.Size;
            this.Features   = particle.Features;
            this.ClassLabel = particle.ClassLabel;

            this.MetaDataRef = particle.MetaDataRef;
        }
        public static ModelParticle FromParameters(params double[] arr)
        {
            var mParams = new ModelParams(modelTypeIndex: (int)arr[0], 
                                         scale:         (short)arr[1], 
                                         angle:         (short)arr[2]);

            mParams = ModelRepository.GetMostSimilarTo(mParams);

            var p = new ModelParticle
            {
                ModelParameters = mParams,
                Weight = 0
            };

            var template = mParams.TryGetTemplate();
            p.updateTemplateData(template);

            return p;
        }
        public static ModelParticle FromParameters(params double[] arr)
        {
            var mParams = new ModelParams(modelTypeIndex: (int)arr[0],
                                          scale:         (short)arr[1],
                                          angle:         (short)arr[2]);

            mParams = ModelRepository.GetMostSimilarTo(mParams);

            var p = new ModelParticle
            {
                ModelParameters = mParams,
                Weight          = 0
            };

            var template = mParams.TryGetTemplate();

            p.updateTemplateData(template);

            return(p);
        }
        public void OverwriteWith(ModelParticle particle)
        {
            this.ModelParameters = (ModelParams)particle.ModelParameters.Clone();
            this.Weight = particle.Weight;

            this.Size = particle.Size;
            this.Features = particle.Features;
            this.ClassLabel = particle.ClassLabel;

            this.MetaDataRef = particle.MetaDataRef;
        }