Example #1
0
        public List <double> GetSamplesForCOL(SymbolicValue COL)
        {
            if (SamplesForCOL.ContainsKey(COL))
            {
                return(SamplesForCOL[COL]);
            }

            IEnumerable <double> samples = null;

            if (AmountByCOL.ContainsKey(COL))
            {
                samples = AmountByCOL[COL];
            }

            if (!COLEquivalencyMap.ContainsKey(COL))
            {
                SamplesForCOL.Add(COL, samples.ToList <double>());

                return(SamplesForCOL[COL]);
            }

            foreach (SymbolicValue EquivalentCOL in COLEquivalencyMap[COL])
            {
                if (EquivalentCOL.Equals(COL))
                {
                    continue;
                }
                if (AmountByCOL.ContainsKey(EquivalentCOL))
                {
                    if (samples == null)
                    {
                        samples = AmountByCOL[EquivalentCOL];
                    }
                    else
                    {
                        samples = samples.Zip(AmountByCOL[EquivalentCOL], (a, b) => a + b);
                    }
                }
            }

            SamplesForCOL.Add(COL, samples.ToList <double>());

            return(SamplesForCOL[COL]);
        }
Example #2
0
        public double this[SymbolicValue COL]
        {
            get
            {
                if (TotalGUForCOL.ContainsKey(COL))
                {
                    return(TotalGUForCOL[COL]);
                }

                double total = 0.0;

                if (AmountByCOL.ContainsKey(COL))
                {
                    total += AmountByCOL[COL].Zip(FactorArray, (x, y) => x * y).Sum();
                }
                // @FACTORARRAY REPLACE
                //if (AmountByCOL.ContainsKey(COL))
                //    total += AmountByCOL[COL].Sum() * Factor;

                if (COLEquivalencyMap.ContainsKey(COL))
                {
                    foreach (SymbolicValue EquivalentCOL in COLEquivalencyMap[COL])
                    {
                        if (EquivalentCOL.Equals(COL))
                        {
                            continue;
                        }
                        if (AmountByCOL.ContainsKey(EquivalentCOL))
                        {
                            total += AmountByCOL[EquivalentCOL].Zip(FactorArray, (x, y) => x * y).Sum();
                            // @FACTORARRAY REPLACE
                            //total += AmountByCOL[EquivalentCOL].Sum() * Factor;
                        }
                    }
                }

                TotalGUForCOL.Add(COL, total);

                return(TotalGUForCOL[COL]);
            }
        }