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); }
/// <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; }