我的软件从多个传感器接收信息。传感器的数量不是固定的 - 它们可以添加和移除,每个传感器都有自己的唯一标识符。传感器不定期地发送数据——它们可以保持沉默数周或每秒推送数据。每个传感器从一组固定的值中生成一个值——因此传感器是离散的。我的程序将来自每个传感器的每条消息记录到 SQL 数据库表(sensorId、时间、值)中。
任务是过滤信息。我只需要从此日志中选择一条记录,我认为它是实际信息。例如,如果我从单个传感器获得最新记录,它说值为 A,但在此之前有 10 个不同的传感器告诉我值为 B,那么我仍然会认为 B 是实际信息。同时,问题不仅仅是通常的噪声过滤,因为如果有一个传感器在一个月内每秒告诉我值为 C,然后最近有五个传感器告诉我实际上值为 D,我将立即尽管历史悠久,但将 D 视为实际数据 - 我想说独立来源的数量也必须具有权重。
所以,我想我得到了一个由两个变量组成的函数——时间(老化)和瞬间独特传感器的数量。所以,我想,我必须以某种方式计算每条记录的权重,然后选择权重最大的一条。而且我认为要计算记录权重,我不仅应该使用当前记录中的信息,还应该使用之前所有记录中的信息。
我需要一些关于算法的帮助。也许实际上有一些我不知道的众所周知的解决方案?