metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2007-11-26 12:45 am

Йопаный кошмар.

Хочется спрятаться в клетку Фарадея и сидеть там дудеть "Хава Нагилу" на резонаторе Гельмгольца.

Очередные выходные убил на решение донявшей меня до мозга костей задачи разложения поездки на составляющие ее повторяющиеся маршруты.
Как же я ненавижу неточные алгоритмы - у меня от одного вида переменных типа double, влияющих на работу программы, начинается нервный колотун. Всякие долбаные пороговые значения, параметры, подбор, блин, коэффициентов и прочий мрак.

Отклонения точек поездки по порядку сравнимы с размерами участков маршрута,
поездка может содержать части, не относящиеся к маршрутам, короче входные данные представляют собой просто порождение тупой и бессмысленной злобы.

В итоге единственный заработавший (и то с трудом) вариант алгоритма - перебор известных маршрутов, сопоставление их с поездкой и выбор наиболее подходящего по среднему расстоянию от маршрута до поездки. Причем проблема в том, что маршрут задан 2-3-4 точками, а поездка содержит 10-20-30 точек, расположенных неравномерно.
И анализ расстояния между так заданными линиями на двумерной плоскости просто сожрал и переварил мой мозг - примерно полученный алгоритм можно описать как создание из списка точек интерполированной функции, подбор по минимальном расстоянию между краями маршрута и поездки наиболее подходящих интервалов значений переменной для функции поездки и функции маршрута, а затем приблизительный расчет среднего расстояния, типа численного интегрирования площади между поездкой и маршрутом, и деления его на длину поездки.

Подозреваю, что должны быть более культурные методы выкусывания заданных функций из входных последовательностей, что-нибудь вроде построения из маршрутов какого-нибудь мистического многомерного базиса и перевод в него поездки с дальнейшим анализом составляющих, или там подбора функции, свертка с которой дает для разных маршрутов сильно отличающиеся значения, но что-то такой вопрос гуглу я даже сформулировать не могу.

Или же преобразовать входные данные в какую-нибудь более человеческую, ака заданную с постоянным шагом (по расстоянию?) последовательность векторов и анализировать их. Можыд оно и дольше работать будет, зато нагляднее будет в N раз

[identity profile] 1ceheart.livejournal.com 2007-11-25 11:40 pm (UTC)(link)
Да не, нормальный метод. Когда я делал для швейников проект, там была сплошная возня с по-разному заданными контурами. Примерно так же и делалось. Может, и есть какой-нибудь мистический многомерный базис, но это к профессорам все.

[identity profile] dorogoj.livejournal.com 2007-11-26 10:53 am (UTC)(link)
Для маршрутных задач типа комивояжера неплоход подходят генетические алгоритмы. Возможно и к "выкусыванию" функций можно применить...

[identity profile] kong-en-ge.livejournal.com 2007-11-26 11:04 am (UTC)(link)
Ребе, скока за решение дадите? :-)

[identity profile] ktn-zoidberg.livejournal.com 2007-11-26 11:16 am (UTC)(link)
э... может я туплю... но... а чем проверка на корреляцию некатит?
помечаем несколько маршрутов как правильные, а дальше пусть пляшет...
да и вааше можно непомечать и получить массив похожих а там уже видно будет что чаще было - по правильному маршруту или наоборот

[identity profile] merrcy.livejournal.com 2007-11-27 07:33 am (UTC)(link)
сожрал и переварил мой мозг
Я в восхищении от этой фразы!

P.S. Случайно наткнулся на аниме из которого этот юзерпик. Оценил всю глубину! :)