Йопаный кошмар.
Nov. 26th, 2007 12:45 amХочется спрятаться в клетку Фарадея и сидеть там дудеть "Хава Нагилу" на резонаторе Гельмгольца.
Очередные выходные убил на решение донявшей меня до мозга костей задачи разложения поездки на составляющие ее повторяющиеся маршруты.
Как же я ненавижу неточные алгоритмы - у меня от одного вида переменных типа double, влияющих на работу программы, начинается нервный колотун. Всякие долбаные пороговые значения, параметры, подбор, блин, коэффициентов и прочий мрак.
Отклонения точек поездки по порядку сравнимы с размерами участков маршрута,
поездка может содержать части, не относящиеся к маршрутам, короче входные данные представляют собой просто порождение тупой и бессмысленной злобы.
В итоге единственный заработавший (и то с трудом) вариант алгоритма - перебор известных маршрутов, сопоставление их с поездкой и выбор наиболее подходящего по среднему расстоянию от маршрута до поездки. Причем проблема в том, что маршрут задан 2-3-4 точками, а поездка содержит 10-20-30 точек, расположенных неравномерно.
И анализ расстояния между так заданными линиями на двумерной плоскости просто сожрал и переварил мой мозг - примерно полученный алгоритм можно описать как создание из списка точек интерполированной функции, подбор по минимальном расстоянию между краями маршрута и поездки наиболее подходящих интервалов значений переменной для функции поездки и функции маршрута, а затем приблизительный расчет среднего расстояния, типа численного интегрирования площади между поездкой и маршрутом, и деления его на длину поездки.
Подозреваю, что должны быть более культурные методы выкусывания заданных функций из входных последовательностей, что-нибудь вроде построения из маршрутов какого-нибудь мистического многомерного базиса и перевод в него поездки с дальнейшим анализом составляющих, или там подбора функции, свертка с которой дает для разных маршрутов сильно отличающиеся значения, но что-то такой вопрос гуглу я даже сформулировать не могу.
Или же преобразовать входные данные в какую-нибудь более человеческую, ака заданную с постоянным шагом (по расстоянию?) последовательность векторов и анализировать их. Можыд оно и дольше работать будет, зато нагляднее будет в N раз
Очередные выходные убил на решение донявшей меня до мозга костей задачи разложения поездки на составляющие ее повторяющиеся маршруты.
Как же я ненавижу неточные алгоритмы - у меня от одного вида переменных типа double, влияющих на работу программы, начинается нервный колотун. Всякие долбаные пороговые значения, параметры, подбор, блин, коэффициентов и прочий мрак.
Отклонения точек поездки по порядку сравнимы с размерами участков маршрута,
поездка может содержать части, не относящиеся к маршрутам, короче входные данные представляют собой просто порождение тупой и бессмысленной злобы.
В итоге единственный заработавший (и то с трудом) вариант алгоритма - перебор известных маршрутов, сопоставление их с поездкой и выбор наиболее подходящего по среднему расстоянию от маршрута до поездки. Причем проблема в том, что маршрут задан 2-3-4 точками, а поездка содержит 10-20-30 точек, расположенных неравномерно.
И анализ расстояния между так заданными линиями на двумерной плоскости просто сожрал и переварил мой мозг - примерно полученный алгоритм можно описать как создание из списка точек интерполированной функции, подбор по минимальном расстоянию между краями маршрута и поездки наиболее подходящих интервалов значений переменной для функции поездки и функции маршрута, а затем приблизительный расчет среднего расстояния, типа численного интегрирования площади между поездкой и маршрутом, и деления его на длину поездки.
Подозреваю, что должны быть более культурные методы выкусывания заданных функций из входных последовательностей, что-нибудь вроде построения из маршрутов какого-нибудь мистического многомерного базиса и перевод в него поездки с дальнейшим анализом составляющих, или там подбора функции, свертка с которой дает для разных маршрутов сильно отличающиеся значения, но что-то такой вопрос гуглу я даже сформулировать не могу.
Или же преобразовать входные данные в какую-нибудь более человеческую, ака заданную с постоянным шагом (по расстоянию?) последовательность векторов и анализировать их. Можыд оно и дольше работать будет, зато нагляднее будет в N раз