示例#1
0
        } //end of Initialize

        public override LossTimeSeries GetNodeSubjectLoss(GraphNode node)
        {
            if (node.SubjectLoss != null)
            {
                return(node.SubjectLoss);
            }

            LossTimeSeries subjectLoss = new LossTimeSeries(1);

            //Recursively gets subject loss for a Node
            foreach (GraphNode childnode in GetChildrenForNode(node))
            {
                subjectLoss.MergeTimeSeries(GetNodeSubjectLoss(childnode), Aggregation.Summed);
            }

            foreach (AtomicRITE rite in node.ResidualAtomicRITEs)
            {
                subjectLoss.MergeTimeSeries(rite.OriginalSubjectLoss, Aggregation.Summed);
            }

            return(subjectLoss);
        }
示例#2
0
        //public override void BuildAtomicRITEs()
        //{
        //    _atomicCoverageRITEs = RecursiveGetAtomicRITEs(TopNode);
        //}

        //private HashSet<CoverageAtomicRITE> RecursiveGetAtomicRITEs(GraphNode node)
        //{
        //    if (node.AtomicRITEsAdded == true)
        //        return new HashSet<CoverageAtomicRITE>(node.AllAtomicRITEs.Cast<CoverageAtomicRITE>());

        //    //Get AtomicRites from Children
        //    HashSet<CoverageAtomicRITE> ARITEsFromChildren = new HashSet<CoverageAtomicRITE>();

        //    if (node.Subject.IsDerived)
        //    {
        //        foreach (GraphNode childNode in GetChildrenForNode(node))
        //        {
        //            ARITEsFromChildren.UnionWith(RecursiveGetAtomicRITEs(childNode));
        //        }

        //        node.ResidualAtomicRITEs = new HashSet<AtomicRITE>();
        //        node.AllAtomicRITEs = new HashSet<AtomicRITE>(ARITEsFromChildren.Cast<AtomicRITE>().ToList());
        //        node.AtomicRITEsAdded = true;

        //        return ARITEsFromChildren;
        //    }
        //    else
        //    {
        //        foreach (GraphNode childNode in GetChildrenForNode(node))
        //        {
        //            ARITEsFromChildren.UnionWith(RecursiveGetAtomicRITEs(childNode));
        //        }

        //        //Get Atomic Rites for subject of Node
        //        HashSet<CoverageAtomicRITE> SubjectARITEs = node.Subject.GetAtomicRites();
        //        //var ResidualARITEs = SubjectARITEs.Except(ARITEsFromChildren);
        //        HashSet<CoverageAtomicRITE> ResidualARITEs =  new HashSet<CoverageAtomicRITE>(SubjectARITEs.Except(ARITEsFromChildren));
        //        HashSet<CoverageAtomicRITE> AllARITEs = new HashSet<CoverageAtomicRITE>(ResidualARITEs.Union(ARITEsFromChildren));

        //        node.ResidualAtomicRITEs = new HashSet<AtomicRITE>(ResidualARITEs.Cast<AtomicRITE>());
        //        node.AllAtomicRITEs = new HashSet<AtomicRITE>(AllARITEs.Cast<AtomicRITE>());
        //        node.AtomicRITEsAdded = true;

        //        return AllARITEs;
        //    }
        //}

        public override LossTimeSeries GetNodeSubjectLoss(GraphNode node)
        {
            if (node.SubjectLoss != null)
            {
                return(node.SubjectLoss);
            }

            PrimarySubject priSub      = (PrimarySubject)node.Subject;
            Aggregation    aggType     = priSub.Schedule.IsLocation ? Aggregation.PerBuilding : Aggregation.Summed;
            LossTimeSeries subjectLoss = new LossTimeSeries(priSub.Schedule.ActNumOfBldgs);

            //Recursively gets subject loss for a Node

            foreach (AtomicRITE rite in node.AllAtomicRITEs)
            {
                subjectLoss.MergeTimeSeries(rite.SubjectLoss, aggType);
            }

            return(subjectLoss);
        }