Beispiel #1
0
 internal void AddValue(DfRecord rec)
 {
     Accumulator += rec.GenValue;
 }
Beispiel #2
0
            internal WorkerData(BetweenWorkerModel parent)
            {
                this.parentModel     = parent;
                this.logNormalDistrn = this.parentModel.OutcomeIsLogNormallyDistributed;
                Data          = parent.Data;
                workerDigests = new WorkerDigest[Data.NWorkers];
                int i = 0;

                this.MeasureCountByWorker = new int[Data.NWorkers];

                foreach (Worker w in Data.WorkersByOrdinal)
                {
                    MeasureCountByWorker[i] = Data.MeasuresByWorker[w].Count;
                    workerDigests[i]        = new WorkerDigest(ordinal: i, mean: 0, measureCount: Data.MeasuresByWorker[w].Count);
                    i++;
                }

                DFRecordByMeasureType.Add(Measure.MeasureType.Uncensored, new List <DfRecord>());
                DFRecordByMeasureType.Add(Measure.MeasureType.GreaterThan, new List <DfRecord>());
                DFRecordByMeasureType.Add(Measure.MeasureType.LessThan, new List <DfRecord>());
                DFRecordByMeasureType.Add(Measure.MeasureType.Interval, new List <DfRecord>());

                df = new DfRecord[Data.N];
                int j = 0;

                Positions[(int)Measure.MeasureType.Uncensored] = new Position(j, Data.UncensoredMeasures.Length);
                for (i = 0; i < Data.UncensoredMeasures.Length; i++)
                {
                    int     workerOrdinal = Data.UncensoredMeasures[i].Worker.Ordinal;
                    Measure m             = Data.UncensoredMeasures[i];
                    m.WorkerDataOrdinal = j;
                    df[j] = new DfRecord(
                        measureOrdinal: j,
                        genValue: this.logNormalDistrn ? Math.Log(m.A) : m.A,
                        workerOrdinal: workerOrdinal,
                        workerDigest: workerDigests[workerOrdinal]);
                    DFRecordByMeasureType[Measure.MeasureType.Uncensored].Add(df[j]);
                    j++;
                }

                Positions[(int)Measure.MeasureType.GreaterThan] = new Position(j, Data.GT.Length);
                for (i = 0; i < Data.GTMeasures.Length; i++)
                {
                    int     workerOrdinal = Data.GTMeasures[i].Worker.Ordinal;
                    Measure m             = Data.GTMeasures[i];
                    m.WorkerDataOrdinal = j;
                    df[j] = new DfRecord(
                        measureOrdinal: j,
                        genValue: Tools.ND,
                        workerOrdinal: workerOrdinal,
                        workerDigest: workerDigests[workerOrdinal]);
                    DFRecordByMeasureType[Measure.MeasureType.GreaterThan].Add(df[j]);
                    j++;
                }

                Positions[(int)Measure.MeasureType.LessThan] = new Position(j, Data.LT.Length);
                for (i = 0; i < Data.LTMeasures.Length; i++)
                {
                    int     workerOrdinal = Data.LTMeasures[i].Worker.Ordinal;
                    Measure m             = Data.LTMeasures[i];
                    m.WorkerDataOrdinal = j;
                    df[j] = new DfRecord(
                        measureOrdinal: j,
                        genValue: Tools.ND,
                        workerOrdinal: workerOrdinal,
                        workerDigest: workerDigests[workerOrdinal]);
                    DFRecordByMeasureType[Measure.MeasureType.LessThan].Add(df[j]);
                    j++;
                }

                Positions[(int)Measure.MeasureType.Interval] = new Position(j, Data.IntervalGT.Length);
                for (i = 0; i < Data.IntervalMeasures.Length; i++)
                {
                    int     workerOrdinal = Data.IntervalMeasures[i].Worker.Ordinal;
                    Measure m             = Data.IntervalMeasures[i];
                    m.WorkerDataOrdinal = j;
                    df[j] = new DfRecord(
                        measureOrdinal: j,
                        genValue: Tools.ND,
                        workerOrdinal: workerOrdinal,
                        workerDigest: workerDigests[workerOrdinal]);
                    DFRecordByMeasureType[Measure.MeasureType.Interval].Add(df[j]);
                    j++;
                }

                this.WorkerIds = df.Select(rec => rec.WorkerOrdinal).ToArray();
                UpdatePublicProperties();
            }