static double ConditionHappened(HashSet<IOTPhenomemon> observedPhenomemons, IOTPhenomemonType type, int node, double starttime, double endtime, IOTPhenomemon p1, ComparePhenomemon comparer) { foreach (IOTPhenomemon p in observedPhenomemons) { if (p.nodeId == node && p.type == type && p.start >= starttime && p.end <= endtime && comparer(p1, p)) { return p.likehood; } } return global.SmallValue; }
static double ConditionHappened(HashSet<IOTPhenomemon> observedPhenomemons, IOTPhenomemonType type, int node, double starttime, double endtime, IOTPhenomemon p1, List<IOTPhenomemon> list, ComparePhenomemon comparer) { double likehood = global.SmallValue; foreach (IOTPhenomemon p in observedPhenomemons) { if (p.nodeId == node && p.type == type && p.start >= starttime && p.end <= endtime && comparer(p1, p)) { list.Add(p); likehood = Math.Max(p.likehood, likehood); } } return likehood; }
public static bool ComparePhenomemonBySimiliarTag(IOTPhenomemon p1, IOTPhenomemon p2) { if (p1.pkg == null || p1.pkg.Type != PacketType.COMMAND) return false; //使用PacketSeq判断两个数据包是否为同一个 return (p1.pkg.Command.tag == p2.pkg.Dst); }
public static double SimiliarCommand(IOTPhenomemon p, List<IOTPhenomemon> list) { double likehood = 0; foreach (IOTPhenomemon p1 in list) { likehood = Math.Max(likehood, 1 - global.SmallValue - Math.Abs(p1.pkg.SrcSenderSeq - p.pkg.SrcSenderSeq) / 100); } return likehood; }
public static bool ComparePhenomemonByExactTag(IOTPhenomemon p1, IOTPhenomemon p2) { if (p1.pkg == null || p1.pkg.Type != PacketType.COMMAND) return false; //使用PacketSeq判断两个数据包是否为同一个 return (p1.pkg.Command.tag == p2.pkg.Dst && p1.pkg.SrcSenderSeq == p2.pkg.SrcSenderSeq); }