/// <summary>
        /// Adding new precedents
        /// </summary>
        /// <param name="ageSize">Size of one age</param>
        /// <param name="maxAgeIterations">Limit count of ages</param>
        /// <param name="goodTeachingRatio">convergence condition</param>
        /// <param name="errorPiece">maximum piece of errors</param>
        /// <returns>train successeful? </returns>
        public CommonTrainInfo Train(int ageSize, int maxAgeIterations, double goodTeachingPiece, double errorPiece)
        {
            int             maxAgeNumber     = Math.Min(maxAgeIterations, TrainingSignatura.Count / ageSize);
            int             errorLimitPerAge = (int)errorPiece * ageSize;
            int             convergenceNum   = (int)goodTeachingPiece * ageSize;
            CommonTrainInfo TeachInformation = new CommonTrainInfo(errorLimitPerAge, convergenceNum);

            for (int ageNumber = 0; ageNumber < maxAgeNumber; ageNumber++)
            {
                AgeTrainInfo ageInfo = TrainOneAge(ageSize, ageNumber * ageSize);
                TeachInformation.AddAge(ageInfo);
                if (TeachInformation.IsFailedLearning())
                {
                    return(TeachInformation);
                }

                if (TeachInformation.IsConvergence())
                {
                    TeachInformation.IsTrained = true;
                    return(TeachInformation);
                }
            }
            TeachInformation.IsTrained = true;//!!!mb temp!!!
            return(TeachInformation);
        }
 public void AddAge(AgeTrainInfo ageInfo)
 {
     Info.Add(ageInfo);
 }