#рецензия #алгоритм #opensource
Когда-то давно мне рекомендовали алгоритм маршрутизации автомобилей LKH-3 http://webhotel4.ruc.dk/~keld/research/LKH-3/ реализация классической эвристики Лина Кернигана.
Оказалась кривой опенсорсной поделкой.
Потеряли время, деньги, срочно переезжаем на http://vroom-project.org/ тоже опенсорс, но гораздо приличней.
Когда-то давно мне рекомендовали алгоритм маршрутизации автомобилей LKH-3 http://webhotel4.ruc.dk/~keld/research/LKH-3/ реализация классической эвристики Лина Кернигана.
Оказалась кривой опенсорсной поделкой.
Потеряли время, деньги, срочно переезжаем на http://vroom-project.org/ тоже опенсорс, но гораздо приличней.
vroom-project.org
VROOM - Vehicle Routing Open-source Optimization Machine
👍16🔥7
СТОЛП (Стандартные Технологии Организации Линейного Программирования) или
Быстрый поиск ошибки в задаче ЦЛП.
#алгоритмы #mip #opensource
При разработке ЦЛП есть такая проблема, что их очень неудобно отлаживать. Нельзя дебаггером пройтись и понять, в каком уравнении сделал ошибку.
При написании модели они часто оказываются несовместными (infeasible), и надо искать, где именно произошла ошибка. У коммерческих солверов для этого есть механизм поиска минимального набора несовместных ограничений. Но это очень неудобная штука. Они там просто в каждое ограничение добавляют слак переменную, и дальше минимизируют их набор. Задача оказывается почти всегда сильно более сложной, и я почти никогда не дожидался, когда она доработает.
А я придумал другой подход. Я просто беру lp файл и ищу какое-нибудь несовместное ограничение бинарным поиском. То есть удаляю половину ограничений и смотрю есть ли решение или нет. Если нет, удаляю половину оставшихся ограничений и т.д.
Этот метод оказывается на практике очень быстрым и полезным. Задачки обычно считаются моментально и можно быстро найти ограничение, на котором падает и это часто наводит на мысли.
Я пошел дальше и сделал функцию, которая это делает за меня автоматически. Увидеть как программа сама находит некорректное ограничение, это просто кайф❤️🔥 .
А потом я пошел еще немного дальше и сделал свободную библиотеку СТОЛП, куда положил эту функцию.
https://gitlab.com/tarasov.alexey/stolp/
Если кто так же настрадался копаясь в инфизиблах, милости прошу использовать. Буду очень рад, если эта штука еще кому-то пригодится.
P.S. У меня есть еще разные ноухау, которыми я планирую делиться и выкладывать их в этот проект. По мере свободного времени буду это делать.
Быстрый поиск ошибки в задаче ЦЛП.
#алгоритмы #mip #opensource
При разработке ЦЛП есть такая проблема, что их очень неудобно отлаживать. Нельзя дебаггером пройтись и понять, в каком уравнении сделал ошибку.
При написании модели они часто оказываются несовместными (infeasible), и надо искать, где именно произошла ошибка. У коммерческих солверов для этого есть механизм поиска минимального набора несовместных ограничений. Но это очень неудобная штука. Они там просто в каждое ограничение добавляют слак переменную, и дальше минимизируют их набор. Задача оказывается почти всегда сильно более сложной, и я почти никогда не дожидался, когда она доработает.
А я придумал другой подход. Я просто беру lp файл и ищу какое-нибудь несовместное ограничение бинарным поиском. То есть удаляю половину ограничений и смотрю есть ли решение или нет. Если нет, удаляю половину оставшихся ограничений и т.д.
Этот метод оказывается на практике очень быстрым и полезным. Задачки обычно считаются моментально и можно быстро найти ограничение, на котором падает и это часто наводит на мысли.
Я пошел дальше и сделал функцию, которая это делает за меня автоматически. Увидеть как программа сама находит некорректное ограничение, это просто кайф
А потом я пошел еще немного дальше и сделал свободную библиотеку СТОЛП, куда положил эту функцию.
https://gitlab.com/tarasov.alexey/stolp/
Если кто так же настрадался копаясь в инфизиблах, милости прошу использовать. Буду очень рад, если эта штука еще кому-то пригодится.
P.S. У меня есть еще разные ноухау, которыми я планирую делиться и выкладывать их в этот проект. По мере свободного времени буду это делать.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍7👏3
#алгоритмы #mip #opensource
Месяц назад сделал библиотечку Столп. И она реально работает! Вообще инфизиблы валятся не так уж и часто, в основном на этапе разработки прототипа. Но вот сейчас клиент гоняет алгоритм нагрязных живых данных и регулярно прилетают инфизблы. Какой же кайф, когда тебе даже делать ничего не надо, а ошибка сама находится. Как я раньше без неё жил. Макс, ты прав, её надо было сделать еще 5 лет назад, кучу крови вы сэкономила :)
Не всегда правда работает моментально, иногда тормозит. И принты надо чуть чуть подчистить, а то иногда задумывается и не ясно что делает. Но пока максимум 2-5 минут приходится ждать а потом видно что делом занята библиотечку.
Месяц назад сделал библиотечку Столп. И она реально работает! Вообще инфизиблы валятся не так уж и часто, в основном на этапе разработки прототипа. Но вот сейчас клиент гоняет алгоритм на
Не всегда правда работает моментально, иногда тормозит. И принты надо чуть чуть подчистить, а то иногда задумывается и не ясно что делает. Но пока максимум 2-5 минут приходится ждать а потом видно что делом занята библиотечку.
Telegram
Блог о математике и бизнесе Алексея Тарасова
СТОЛП (Стандартные Технологии Организации Линейного Программирования) или
Быстрый поиск ошибки в задаче ЦЛП.
При разработке ЦЛП есть такая проблема, что их очень неудобно отлаживать. Нельзя дебаггером пройтись и понять, в каком уравнении сделал ошибку.…
Быстрый поиск ошибки в задаче ЦЛП.
При разработке ЦЛП есть такая проблема, что их очень неудобно отлаживать. Нельзя дебаггером пройтись и понять, в каком уравнении сделал ошибку.…
👍4🏆4❤1🔥1👏1
#текучка #opensource #сотрудники
О пользе опенсорса.
Я делал библиотеку Столп, чтобы повышать репутацию в сообществе и таким образом получать резюме и новых сотрудников.
Метод и правда работает, вчера новый человек вышел на работу!!🍾
Нас уже 8 человек, правда не все фултайм. Задач перегруз, так что надо продолжать расти.
О пользе опенсорса.
Я делал библиотеку Столп, чтобы повышать репутацию в сообществе и таким образом получать резюме и новых сотрудников.
Метод и правда работает, вчера новый человек вышел на работу!!
Нас уже 8 человек, правда не все фултайм. Задач перегруз, так что надо продолжать расти.
Please open Telegram to view this post
VIEW IN TELEGRAM
GitLab
Alexey Tarasov / stolp · GitLab
STOLP — Стандартные Технологии Организации Линейного Программирования. Пакет stolp предназначен для расширения возможностей работы с оптимизационными моделями на Pyomo
🔥10👍2