internal WorkingFuzzySet moValFzyTmp; // Fuzzy working space to hold temp copies

        #endregion Fields

        #region Constructors

        /// <summary>
        /// Create a new Continuous Variable
        /// </summary>
        /// <param name="fuzzyBase">FuzzyBase</param>
        /// <param name="name">Name</param>
        /// <param name="discourseLo">Low</param>
        /// <param name="discourseHi">High</param>
        public ContinuousFuzzyRuleVariable(FuzzyRuleBase fuzzyBase, string name, double discourseLo, double discourseHi)
            : base(EnumFuzzyDataType.ContinuousVariable, fuzzyBase, name)
        {
            mdDiscourseLo = discourseLo;
            mdDiscourseHi = discourseHi;
            moSetList = new Dictionary<string, FuzzySet>();
            bValKnown = false;
            mdValCrisp = 0.0;
            moValFzy = new WorkingFuzzySet(this, name + " Fuzzy Solution Space", moRuleBase.AlphaCut, discourseLo, discourseHi);
            moValFzyTmp = new WorkingFuzzySet(this, name + " Fuzzy Work Space", moRuleBase.AlphaCut, discourseLo, discourseHi);
        }
Exemple #2
0
 /// <summary>
 /// Create a new Fuzzy Rule
 /// </summary>
 /// <param name="rb"></param>
 /// <param name="name"></param>
 /// <param name="lhs"></param>
 /// <param name="rhs"></param>
 internal FuzzyRule(FuzzyRuleBase rb, string name, FuzzyClause lhs, FuzzyClause rhs)
 {
     moRuleBase = rb;
     msName = name;
     moRdRefs = new System.Collections.BitArray(Constants.FUZZY_MAXVALUES);
     moWrRefs = new System.Collections.BitArray(Constants.FUZZY_MAXVALUES);
     mbFiredFlag = false;
     moAntecedents = new List<FuzzyClause>(10);
     moAntecedents.Add(lhs);
     moConsequent = rhs;
     if (moConsequent != null)
     {
         AddWrReference(moConsequent.LhsReferent);
         AddRdReference(moConsequent.RhsReferent);
     }
     moRuleBase.AddConditionalRule(this); // add self to rule list
 }
        /// <summary>
        /// Create the Rule Base
        /// </summary>
        /// <param name="reader"></param>
        private void CreateRulesBase(XmlTextReader reader)
        {
            string sRuleName = reader.GetAttribute("name");
            //1 product, 2 minimize
            EnumFuzzyCorrelationMethod eCorrelation = (EnumFuzzyCorrelationMethod)int.Parse(reader.GetAttribute("correlation"));
            //1 fuzzy add, 2 minmax
            EnumFuzzyInferenceMethod eInference = (EnumFuzzyInferenceMethod)int.Parse(reader.GetAttribute("inference"));
            //1 centroid, 2 maxheight
            EnumFuzzyDefuzzifyMethod eDefuzzify = (EnumFuzzyDefuzzifyMethod)int.Parse(reader.GetAttribute("defuzzify"));

            rb = new FuzzyRuleBase(sRuleName);
            rb.AlphaCut = 0.01;
            rb.CorrelationMethod = eCorrelation;
            rb.InferenceMethod = eInference;
            rb.DefuzzifyMethod = eDefuzzify;
        }