私のソフトウェアは、複数のセンサーから情報を受け取ります。センサーの数は固定されていません。センサーは追加および削除でき、各センサーには独自の一意の識別子があります。センサーは不定期にデータを送信します。何週間も黙っていたり、毎秒データをプッシュしたりできます。各センサーは、固定された一連の値から値を生成するため、センサーは個別です。私のプログラムは、各センサーからの各メッセージを SQL データベース テーブル (sensorId、time、value) に記録します。
タスクは、情報をフィルタリングすることです。このログから 1 つのレコードのみを選択する必要がありますが、これが実際の情報であると考えています。たとえば、値が A であることを示す 1 つのセンサーから最新のレコードを取得した場合でも、その前に 10 個の異なるセンサーが値が B であることを通知した場合でも、B が実際の情報であると見なします。同時に、問題は通常のノイズフィルタリングだけではありません.1つのセンサーが1か月間毎秒値がCであることを教えてくれ、最近5つのセンサーが実際には値がDであることを教えてくれた場合、私はすぐに長い歴史にもかかわらず、D は実際のデータであると考えてください。独立したソースの数にも重みが必要であると言いたいです。
つまり、時間 (エージング) とその瞬間の固有センサーの数という 2 つの変数の関数のようなものを得ることができると思います。したがって、どうにかして各レコードの重みを計算し、重みが最大のものを選択する必要があると思います。そして、レコードの重みを計算するには、現在のレコードからの情報だけでなく、以前のすべてのレコードからの情報を使用する必要があると思います。
アルゴリズムの助けが必要です。たぶん、私が気付いていないよく知られた解決策が実際にありますか?