/// <summary>
        /// Композиция
        /// </summary>
        private UnionOfTerms Composite(Problem problem, double[] aggregationResult)
        {
            var result = new UnionOfTerms();

            InMemoryLogger.PrintMessage("Начало процедуры композиции");

            int i = 0;

            foreach (var rule in problem.ProblemConditions.Rules)
            {
                var term = rule.Conclusion.Term.Clone();
                term.AccessoryFunc.SetActivatedValue(aggregationResult[i]);
                result.Add(term);
                i++;
            }

            InMemoryLogger.PrintMessage("Процедура композиции завершена");
            return(result);
        }
        /// <summary>
        /// Дефаззификация
        /// </summary>
        private double Defuzzificate(UnionOfTerms compositionResult)
        {
            double x, y1 = 0.0, y2 = 0.0, step = 0.01;

            InMemoryLogger.PrintMessage("Начало процедуры дефаззификации");

            for (x = 0.0; x <= 1.0; x += step)
            {
                y1 += x * compositionResult.MaxValue(x);
            }
            for (x = 0.0; x <= 1.0; x += step)
            {
                y2 += compositionResult.MaxValue(x);
            }

            InMemoryLogger.PrintMessage("Результат: " + (y1 / y2));
            InMemoryLogger.PrintMessage("Процедура дефаззификации завершена");

            return(y1 / y2);
        }