Exemplo n.º 1
0
        public static TInterference Import <TInterference, TRef, TNei>(
            this IInterferenceRecord <TInterference> record,
            TNei neiCell, TRef refCell, Func <TNei, bool> FrequencyValidation,
            Func <TNei, TInterference> InterferenceGenerator)
            where TInterference : class, IInterference
            where TRef : class, IRefCell, new()
            where TNei : class, INeiCell, new()
        {
            record.MeasuredTimes++;

            //这里的逻辑是邻区信号强度足够强的时候才算干扰小区,这时才会纳入干扰小区列表
            if (!FrequencyValidation(neiCell) ||
                !(neiCell.Strength > refCell.Strength -
                  RuInterferenceRecord.InterferenceThreshold))
            {
                return(null);
            }
            TInterference interference =
                record.Interferences.FirstOrDefault(x =>
                                                    x.CellId == neiCell.CellId && x.SectorId == neiCell.SectorId);

            if (interference == null)
            {
                interference = InterferenceGenerator(neiCell);
                record.Interferences.Add(interference);
            }
            interference.InterferenceTimes++;
            return(interference);
        }
Exemplo n.º 2
0
        public static double GetInterferenceRatio <TInterference>(this IInterferenceRecord <TInterference> record, ICell cell)
            where TInterference : class, IInterference
        {
            TInterference interference =
                record.Interferences.FirstOrDefault(x => x.CellId == cell.CellId && x.SectorId == cell.SectorId);

            return(interference == null ? 0 :
                   interference.InterferenceTimes / (double)record.MeasuredTimes);
        }
Exemplo n.º 3
0
 public static double GetInterferenceRatio <TInterference>(this IInterferenceRecord <TInterference> record, int i)
     where TInterference : class, IInterference
 {
     return(record.MeasuredTimes == 0 ? 0 :
            record.Interferences[i].InterferenceTimes / (double)record.MeasuredTimes);
 }