У меня есть проблема оптимизации, которую я уже решил. Однако я думаю, что может быть более надежное решение, которое я не совсем знаю, как реализовать. Может быть, у кого-то здесь есть какие-то идеи.
Описание проблемы
Мне нужно объединить события из двух отдельных записей. У события есть имя, время t , в которое оно произошло, и амплитуда a с условием, что следующее событие произойдет в t_next = t + a . Две записи должны генерировать события в одно и то же время и по амплитуде, но есть ошибки записи, с которыми приходится иметь дело, например, смещение.
Задача состоит в том, чтобы сгруппировать одинаковые события в пары по 2.
Вот пример:
Event Name t a t a
39770 155648.16 41.96 154726.4 41.75
39780 155690.12 42.01 154768.15 41.78
39790 155732.13 41.24 154809.94 41.13
39800 154851.06 5.74
39810 155773.37 1.55
39815 155774.03 1.55
39820 155774.92 3.75
39830 155778.67 0.65
39840 155779.32 22.35 154856.81 22.24
39850 155801.67 1.36 154879.04 1.27
39855 155802.4 1.36 154879.66 1.27
39860 155803.04 12.79 154880.31 12.74
Как видите, значения t и a не совпадают в одной паре (одной строке), поэтому мне приходится работать с допусками. Иногда в записи 1 есть события, которых нет в записи 2 и наоборот. Так как я могу их спарить?
Идея для решения
Я как-то думал о подходе с "резинкой". По сути, вы группируете события по амплитуде в пределах допустимого отклонения таким образом, чтобы максимизировать количество спаренных событий. Но я не уверен, как бороться с отсутствующими событиями в одной записи против другой. Так или иначе, я должен игнорировать их, и я не уверен, как лучше всего сделать это без взрыва этой проблемы из-за непомерных комбинаций, чтобы попытаться.
Кто-нибудь сталкивался с такой проблемой и знает надежное решение для нее?