/// <summary>
 /// Constructor
 /// </summary>
 /// <param name="fuzzyValues">
 /// The fuzzy Values.
 /// </param>
 /// <param name="connectiveAnd">Function for connective and</param>
 /// <param name="degreeOfFulfillment">degree of Fulfillment</param>
 /// <param name="defuzzifier">Defuzzifier</param>
 /// <returns>
 /// New FuzzyAlgorithm
 /// </returns>
 public RuleBuilder(IFuzzyValues fuzzyValues, 
     IGenericElementFromFuzzyElementsFunction connectiveAnd,
     IGenericDegreeOfFulfillmentFunction degreeOfFulfillment,
     IDefuzzifier defuzzifier)
 {
     this.FuzzyAlgorithm = new FuzzyAlgorithm(connectiveAnd, degreeOfFulfillment, defuzzifier);
     this._fuzzyValues = fuzzyValues;
     this._lastRule = new Rule();
 }
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="connectiveAnd">Function for connective and</param>
        /// <param name="degreeOfFulfillment">degree of Fulfillment</param>
        /// <param name="defuzzifier">Defuzzifier</param>
        public FuzzyAlgorithm(IGenericElementFromFuzzyElementsFunction connectiveAnd,
            IGenericDegreeOfFulfillmentFunction degreeOfFulfillment,
            IDefuzzifier defuzzifier)
        {
            this._functions = new List<object> { connectiveAnd, degreeOfFulfillment };

            this.Defuzzifier = defuzzifier;
            this._and = connectiveAnd.Execute;
            this._degreeOfFulfillment = degreeOfFulfillment.Execute;
            this._rules = new List<IRule>();
        }