示例#1
0
        /// <summary>
        /// For the List of Arc Calculate the Conjunctive value (min)
        /// </summary>
        /// <param name="voArcs">List of Arc</param>
        /// <returns>Calculated Lambda</returns>
        public float CalculateCombinedConjunctive(BeliefNode voBeliefNode, Arcs voArcs)
        {
            float fValue = float.MaxValue;

            if (voArcs.InnerArcs != null)
            {
                foreach (Arcs arcs in voArcs.InnerArcs)
                {
                    float fTest = EvaluateArcExpression(voBeliefNode, arcs);
                    fValue = (fValue <= fTest ? fValue : fTest);
                }
            }
            foreach (Arc arc in voArcs.ArcList)
            {
                float fTest = CalculateEffectiveArcLambda(voBeliefNode, arc);
                fValue = (fValue <= fTest ? fValue : fTest);
            }
            return fValue;
        }
示例#2
0
        /// <summary>
        /// Construct the Belief Node given the input Xml
        /// </summary>
        /// <param name="vsXml">Xml Data</param>
        public BeliefNode(string vsXml)
        {
            XmlTextReader reader = new XmlTextReader(new StringReader(vsXml));
            reader.Read();

            Name = reader.GetAttribute("name");
            PriorProbability = float.Parse(reader.GetAttribute("priorprob"));
            CurrentProbability = float.Parse(reader.GetAttribute("currentprob"));

            while(reader.Read())
            {
                switch (reader.Name)
                {
                    case "Arcs" :
                        moArcs = new Arcs(reader.ReadOuterXml());
                        break;
                }
            }
        }
示例#3
0
 /// <summary>
 /// For a single Arc, this evalulate the expressions
 /// </summary>
 /// <param name="voArcs">Arcs</param>
 /// <returns>Arc Expression</returns>
 public float EvaluateArcExpression(BeliefNode voBeliefNode, Arcs voArcs)
 {
     switch (voArcs.ArcType)
     {
         case EnumArcType.Independent :
             return CalculateCombinedIndependent(voBeliefNode, voArcs);
         case EnumArcType.Conjunctive:
             return CalculateCombinedConjunctive(voBeliefNode, voArcs);
         case EnumArcType.Disjunctive :
             return CalculateCombinedDisjunctive(voBeliefNode, voArcs);
         default:
             throw new Exception(string.Format("Invalid arc type {0}",voArcs.ArcType.ToString()));
     }
 }
示例#4
0
 /// <summary>
 /// For the List of Arc Calculate the Combined Independent value
 /// </summary>
 /// <param name="voArcs">List of Arc</param>
 /// <returns>Calculated Lambda</returns>
 public float CalculateCombinedIndependent(BeliefNode voBeliefNode, Arcs voArcs)
 {
     float fCombined = 1.0f;
     if (voArcs.InnerArcs != null)
     {
         foreach (Arcs arcs in voArcs.InnerArcs)
         {
             fCombined *= EvaluateArcExpression(voBeliefNode, arcs);
         }
     }
     foreach (Arc arc in voArcs.ArcList)
     {
         fCombined *= CalculateEffectiveArcLambda(voBeliefNode, arc);
     }
     return fCombined;
 }