/// <summary>
        /// Deffuzificates the specified value.
        /// </summary>
        /// <param name="value">The value.</param>
        /// <param name="deffuzification">The deffuzification.</param>
        /// <returns>
        /// Deffuzzificated value.
        /// </returns>
        public float Deffuzificate(float value, Deffuzification deffuzification)
        {
            float left, right, middle;

            left = right = middle = 0f;

            if (deffuzification == Deffuzification.LM)
            {
                left = value * (this.Middle - this.Left) + this.Left;
                return(left);
            }
            if (deffuzification == Deffuzification.RM)
            {
                right = -value * (this.Right - this.Middle) + this.Right;
                return(right);
            }
            if (deffuzification == Deffuzification.MM)
            {
                left   = value * (this.Middle - this.Left) + this.Left;
                right  = -value * (this.Right - this.Middle) + this.Right;
                middle = (left + right) / 2;
                return(middle);
            }
            return(0f);
        }
        /// <summary>
        /// Deffuzificates the specified value.
        /// </summary>
        /// <param name="value">The value.</param>
        /// <param name="deffuzification">The deffuzification.</param>
        /// <returns>
        /// Deffuzzificated value.
        /// </returns>
        public float Deffuzificate(float value, Deffuzification deffuzification)
        {
            float left, right, middle;

            left = right = middle = 0f;

            float step = 0.5f;

            if (deffuzification == Deffuzification.LM)
            {
                left = this.GetLeftXValue((float)this.Min, value, step, (float)this.Max);
                return(left);
            }
            if (deffuzification == Deffuzification.RM)
            {
                right = this.GetRightXValue((float)this.Max, value, -step, (float)this.Min);
                return(right);
            }
            if (deffuzification == Deffuzification.MM)
            {
                right  = this.GetRightXValue((float)this.Max, value, -step, (float)this.Min);
                left   = this.GetLeftXValue((float)this.Min, value, step, (float)this.Max);
                middle = (left + right) / 2;
                return(middle);
            }
            return(0);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="RuleBlockModel"/> class.
 /// </summary>
 /// <param name="name">The name.</param>
 /// <param name="inputFuzzyVariables">The input fuzzy variables.</param>
 /// <param name="outputFuzzyVariables">The output fuzzy variables.</param>
 /// <param name="normOperator">The norm operator.</param>
 public RuleBlockModel(string name, ObservableCollection <FuzzyVariableModel> inputFuzzyVariables,
                       ObservableCollection <FuzzyVariableModel> outputFuzzyVariables, NormOperator normOperator, Deffuzification deffuzification)
 {
     this.Name = name;
     this.InputFuzzyVariables   = inputFuzzyVariables;
     this.OutputFuzzyVariables  = outputFuzzyVariables;
     this.NormOperator          = normOperator;
     this.DeffuzificationMethod = deffuzification;
 }
 private void SetDeffuzzificationMethod(Deffuzification deffuzification)
 {
     this.comboBoxDeffuzzificationMethod.SelectedItem = deffuzification.ToString();
 }