public double BinaryFactorFunction(Factorable adjFactorable) { double sum = 0.0; foreach (KeyValuePair <int, object> pair in FactorDictionary) { byte factorValue = GetBinaryFactor(pair.Key, adjFactorable); if (factorValue != double.NaN) { sum += Graph.GetLambda(pair.Key, factorValue) * factorValue; } } return(Math.Exp(sum)); }
public byte GetBinaryFactor(int factorLabel, Factorable adjFactorable) { if (!FactorDictionary.ContainsKey(factorLabel)) { return(byte.MaxValue); } if (!FactorEnabled[factorLabel]) { return(byte.MaxValue); } switch (FactorTypes[factorLabel]) { case FactorType.Binary: return(((BinaryFactor)FactorDictionary[factorLabel])(this, adjFactorable, DataSource)); default: return(byte.MaxValue); } }
public int CheckBinaryFactor(int factorLabel, Factorable adjFactorable, byte value) { return((value == GetBinaryFactor(factorLabel, adjFactorable)) ? 1 : 0); }