СТОЛП (Стандартные Технологии Организации Линейного Программирования) или
Быстрый поиск ошибки в задаче ЦЛП.
#алгоритмы #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
🔥13👍12
#mip #алгоритмы #мысль
Линейное программирование может работать с мультивселенными.
Когда люди планируют какие-либо работы, все думают (что смешно, включая самих планировщиков), что планируется один конкретный план.
На самом деле планируется сразу множество вариантов с учетом рисков. Прямо как доктор Стрэднж :))
Математики оптимизаторы этого не осознают и обычно планируют только один вариант. А на самом деле оказывается, что планировать мультиреальность не так уж и сложно. Расскажу один пример из жизни.
Мы писали планирование для одной авиакомпании бизнесджетов.
Бизнес джеты как такси - большая часть заказов делается за 1-2 дня, а то и в последний момент. Пилоты в свой рабочий день приезжают в аэропорт и сидят ждут заказа - в резерве.
Наша задача была планировать резервы - то есть когда пилоты работают, а когда отдыхают.
По европейским законам пилот не имеет права летать больше 7 дней подряд и 8 летать уже нельзя.
Если есть скажем 5 самолетов и экипажей, то не каждый день заказывается по 5 самолетов. В результате в некоторые дни пилоты не летает и отдыхает.
Если не пользоваться этим обстоятельством и заранее планировать дни отдыха, то мы используем пилотов менее эффективно.
И дни пропуска нам нужны. Но мы их не знаем заранее.
Мы ввели переменную - возможный выходной, написали на нее несколько ограничений.
Он случается с вероятностью 25% . Алгоритм раздавал по 1 возможному выходному каждый день, который соответствовал 0.25 нормального выходного. И у каждого пилота в каждые 8 дней подряд должен был случиться либо настоящий выходной либо 4 возможных выходных.
Во втором случае в расписании у пилота было запланировано 4 возможных дырочки. И в одну с высокой вероятностью выходной попадал.
При этом эти четвертинки отдыха сами раскладывались по пилотам и закрывали самых загруженных.
Если же в реальности такой выходной не случался, то тоже ничего страшного. Наоборот - это отличная ситуация для компании, когда самолеты не простаивают. Просто в один день заказывался подменный пилот, а основной уходил на отдых.
Линейное программирование может работать с мультивселенными.
Когда люди планируют какие-либо работы, все думают (что смешно, включая самих планировщиков), что планируется один конкретный план.
На самом деле планируется сразу множество вариантов с учетом рисков. Прямо как доктор Стрэднж :))
Математики оптимизаторы этого не осознают и обычно планируют только один вариант. А на самом деле оказывается, что планировать мультиреальность не так уж и сложно. Расскажу один пример из жизни.
Мы писали планирование для одной авиакомпании бизнесджетов.
Бизнес джеты как такси - большая часть заказов делается за 1-2 дня, а то и в последний момент. Пилоты в свой рабочий день приезжают в аэропорт и сидят ждут заказа - в резерве.
Наша задача была планировать резервы - то есть когда пилоты работают, а когда отдыхают.
По европейским законам пилот не имеет права летать больше 7 дней подряд и 8 летать уже нельзя.
Если есть скажем 5 самолетов и экипажей, то не каждый день заказывается по 5 самолетов. В результате в некоторые дни пилоты не летает и отдыхает.
Если не пользоваться этим обстоятельством и заранее планировать дни отдыха, то мы используем пилотов менее эффективно.
И дни пропуска нам нужны. Но мы их не знаем заранее.
Мы ввели переменную - возможный выходной, написали на нее несколько ограничений.
Он случается с вероятностью 25% . Алгоритм раздавал по 1 возможному выходному каждый день, который соответствовал 0.25 нормального выходного. И у каждого пилота в каждые 8 дней подряд должен был случиться либо настоящий выходной либо 4 возможных выходных.
Во втором случае в расписании у пилота было запланировано 4 возможных дырочки. И в одну с высокой вероятностью выходной попадал.
При этом эти четвертинки отдыха сами раскладывались по пилотам и закрывали самых загруженных.
Если же в реальности такой выходной не случался, то тоже ничего страшного. Наоборот - это отличная ситуация для компании, когда самолеты не простаивают. Просто в один день заказывался подменный пилот, а основной уходил на отдых.
👍15🔥6
#математика #мысль
Математики делятся на две категории - медвежатники и буратины.
Медвежатник решает задачу как взламывают сейфы. Попробует тут покрутить, стукнуть тут, залить сюда кислоты, попробовать прожечь сваркой и т.п.
Буратино же добыл золотой ключ, а дальше бегает и пробует вставить его во все дырочки.
Со стартапами и бизнесом та же аналогия работает. Часто люди мыслят по медвежачьи, когда у них в руке есть золотой ключик.
В бизнесе должна быть ровно одна ключевая идея, вокруг которой все строится. Любая дополнительная идея просто сужает размер рынка.
Но нужно уметь эту идею применять в разных случаях.
Математики делятся на две категории - медвежатники и буратины.
Медвежатник решает задачу как взламывают сейфы. Попробует тут покрутить, стукнуть тут, залить сюда кислоты, попробовать прожечь сваркой и т.п.
Буратино же добыл золотой ключ, а дальше бегает и пробует вставить его во все дырочки.
Со стартапами и бизнесом та же аналогия работает. Часто люди мыслят по медвежачьи, когда у них в руке есть золотой ключик.
В бизнесе должна быть ровно одна ключевая идея, вокруг которой все строится. Любая дополнительная идея просто сужает размер рынка.
Но нужно уметь эту идею применять в разных случаях.
👍14❤🔥3🤔2
#мысль
Узнал вчера про так называемое "заблуждение париков". Люди думают, что все парики выглядят плохо, потому что они не замечают хорошие парики.
Узнал вчера про так называемое "заблуждение париков". Люди думают, что все парики выглядят плохо, потому что они не замечают хорошие парики.
🔥18👍3🤔2
#ai #новости
ИИ продолжает быстро прогрессировать. ИИ уже стал доказывать математические теоремы.
Улучшил умножение матриц 4x4.
Даже в kissing number problem сделал улучшение.
https://deepmind.google/discover/blog/alphaevolve-a-gemini-powered-coding-agent-for-designing-advanced-algorithms/
ИИ продолжает быстро прогрессировать. ИИ уже стал доказывать математические теоремы.
Улучшил умножение матриц 4x4.
Даже в kissing number problem сделал улучшение.
https://deepmind.google/discover/blog/alphaevolve-a-gemini-powered-coding-agent-for-designing-advanced-algorithms/
Google DeepMind
AlphaEvolve: A Gemini-powered coding agent for designing advanced algorithms
New AI agent evolves algorithms for math and practical applications in computing by combining the creativity of large language models with automated evaluators
👍2🔥1
#бизнес_аналитика #касдев #мысль
Заказчик спрашивает, когда будут поправлены все ошибки в программе. 🤣 Интересно, что отвечать на такой вопрос. Напоминает задачку из школьного учебника. Докажите что у квадрата больше всего свойств.
Можно пытаться объяснить что ошибки имманентны. По крайней мере тебе важны сроки и деньги, и ты используешь системы автоматического доказательства корректности работы программы.
Но во первых не понятно, во вторых заказчик же хочет просто чтобы ему было хорошо. Но как ответить, чтобы ответ не был похож на продажу души в вечное рабство ? :)))
Заказчик спрашивает, когда будут поправлены все ошибки в программе. 🤣 Интересно, что отвечать на такой вопрос. Напоминает задачку из школьного учебника. Докажите что у квадрата больше всего свойств.
Можно пытаться объяснить что ошибки имманентны. По крайней мере тебе важны сроки и деньги, и ты используешь системы автоматического доказательства корректности работы программы.
Но во первых не понятно, во вторых заказчик же хочет просто чтобы ему было хорошо. Но как ответить, чтобы ответ не был похож на продажу души в вечное рабство ? :)))
😁12🤷♂2
#алгоритмы #mip #opensource
Месяц назад сделал библиотечку Столп. И она реально работает! Вообще инфизиблы валятся не так уж и часто, в основном на этапе разработки прототипа. Но вот сейчас клиент гоняет алгоритм нагрязных живых данных и регулярно прилетают инфизблы. Какой же кайф, когда тебе даже делать ничего не надо, а ошибка сама находится. Как я раньше без неё жил. Макс, ты прав, её надо было сделать еще 5 лет назад, кучу крови вы сэкономила :)
Не всегда правда работает моментально, иногда тормозит. И принты надо чуть чуть подчистить, а то иногда задумывается и не ясно что делает. Но пока максимум 2-5 минут приходится ждать а потом видно что делом занята библиотечку.
Месяц назад сделал библиотечку Столп. И она реально работает! Вообще инфизиблы валятся не так уж и часто, в основном на этапе разработки прототипа. Но вот сейчас клиент гоняет алгоритм на
Не всегда правда работает моментально, иногда тормозит. И принты надо чуть чуть подчистить, а то иногда задумывается и не ясно что делает. Но пока максимум 2-5 минут приходится ждать а потом видно что делом занята библиотечку.
Telegram
Блог о математике и бизнесе Алексея Тарасова
СТОЛП (Стандартные Технологии Организации Линейного Программирования) или
Быстрый поиск ошибки в задаче ЦЛП.
При разработке ЦЛП есть такая проблема, что их очень неудобно отлаживать. Нельзя дебаггером пройтись и понять, в каком уравнении сделал ошибку.…
Быстрый поиск ошибки в задаче ЦЛП.
При разработке ЦЛП есть такая проблема, что их очень неудобно отлаживать. Нельзя дебаггером пройтись и понять, в каком уравнении сделал ошибку.…
👍4🏆4❤1🔥1👏1
Всем привет! Интересно узнать, кто и как в программировании использует ИИ уже сейчас.
В июне буду выступать с докладом про перспективы ПО с учетом ИИ, хочу статистику привести. Да и просто интересно.
https://docs.google.com/forms/d/e/1FAIpQLSdDbc2hf4A_DH_eRCKMuJIuaVwX2iF6CR-KNFlWF9tGZgAC6A/viewform?usp=dialog
#ai #статистика
В июне буду выступать с докладом про перспективы ПО с учетом ИИ, хочу статистику привести. Да и просто интересно.
https://docs.google.com/forms/d/e/1FAIpQLSdDbc2hf4A_DH_eRCKMuJIuaVwX2iF6CR-KNFlWF9tGZgAC6A/viewform?usp=dialog
#ai #статистика
Google Docs
Как IT компании используют ИИ
А давайте посмотрим как сейчас компании используют ИИ при написании кода
👍2
Напишу результаты опроса.
Ускорение в общем заметное. Освоение при этом начальное.
По моим ощущениям ИИ развивается настолько быстро, что IT сфера отстает в освоении. Интересно, что в мелких компаниях всё равномерно, есть прирост. А в больших компаниях где то вообще не используется, а где-то в полный рост.
Ну конечно все эти выводы надо делать с учетом, что было всего 13 ответов, и опрос это не измерение.
Ускорение в общем заметное. Освоение при этом начальное.
По моим ощущениям ИИ развивается настолько быстро, что IT сфера отстает в освоении. Интересно, что в мелких компаниях всё равномерно, есть прирост. А в больших компаниях где то вообще не используется, а где-то в полный рост.
Ну конечно все эти выводы надо делать с учетом, что было всего 13 ответов, и опрос это не измерение.
😁7
Я сейчас на форуме время цифры. Если кто тут есть - давайте пообщаемся.
👍1
Неожиданно вручили вчера премию за проект DeepWhale как лучший AI-стартап в номинации архитектура и проектирование. :) Фотку попозже выложу.
#ai #новостройки #награды
#ai #новостройки #награды
🔥19👍8❤4👏3
В чем сила ИИ, брат?
#ai #мысль
Общался тут со старым заказчиком на новую тему. И возник вопрос. Вот есть специалисты, которые уже классно работают. И если ИИ (в широком смысле: алгоритмы, ML, ну и LLM) может лучше, то это надо обосновать. А если люди в чем-то лучше, то надо понять, что в целом человек делает лучше ИИ. Я сформулировал мысль:
ИИ широкий, а человек глубокий.
Человек имеет опыт, может учитывать кучу факторов, в том числе не оцифрованных, которых просто нет у алгоритма. ИИ в этом смысле поверхностный, но зато может ворочать большими объёмами данных. Например, если в фирме 10 продажников и у каждого есть свое направление, то они будут отлично разбираться в своем направлении, но их восприятие будет фрагментированным. А ИИ может молотить сразу все данные. Например, можно делать гипотезы и проверять их сразу на всем объёме продаж.
#ai #мысль
Общался тут со старым заказчиком на новую тему. И возник вопрос. Вот есть специалисты, которые уже классно работают. И если ИИ (в широком смысле: алгоритмы, ML, ну и LLM) может лучше, то это надо обосновать. А если люди в чем-то лучше, то надо понять, что в целом человек делает лучше ИИ. Я сформулировал мысль:
ИИ широкий, а человек глубокий.
Человек имеет опыт, может учитывать кучу факторов, в том числе не оцифрованных, которых просто нет у алгоритма. ИИ в этом смысле поверхностный, но зато может ворочать большими объёмами данных. Например, если в фирме 10 продажников и у каждого есть свое направление, то они будут отлично разбираться в своем направлении, но их восприятие будет фрагментированным. А ИИ может молотить сразу все данные. Например, можно делать гипотезы и проверять их сразу на всем объёме продаж.
👍9🤔3🔥1
#текучка #opensource #сотрудники
О пользе опенсорса.
Я делал библиотеку Столп, чтобы повышать репутацию в сообществе и таким образом получать резюме и новых сотрудников.
Метод и правда работает, вчера новый человек вышел на работу!!🍾
Нас уже 8 человек, правда не все фултайм. Задач перегруз, так что надо продолжать расти.
О пользе опенсорса.
Я делал библиотеку Столп, чтобы повышать репутацию в сообществе и таким образом получать резюме и новых сотрудников.
Метод и правда работает, вчера новый человек вышел на работу!!
Нас уже 8 человек, правда не все фултайм. Задач перегруз, так что надо продолжать расти.
Please open Telegram to view this post
VIEW IN TELEGRAM
GitLab
Alexey Tarasov / stolp · GitLab
STOLP — Стандартные Технологии Организации Линейного Программирования. Пакет stolp предназначен для расширения возможностей работы с оптимизационными моделями на Pyomo
🔥10👍2
#текучка
Не успел доделать алгоритм а коллеги уже его продают. 😁
Не успел доделать алгоритм а коллеги уже его продают. 😁
👍3😁2
Forwarded from РИВЦ-Пулково — IT в гражданской авиации
Знакомьтесь – Rivc.RMS! 🕐
Дорогие друзья, коллеги! Приглашаем вас принять участие в демонстрации новых решений от РИВЦ-Пулково. В соответствие с планом компании по разработке и внедрению инновационных продуктов мы сделали современный мощный роботизированный комплекс Rivc.RMS. Rivc.RMS позволяет существенно сократить время диспетчера при распределении работ, подсветить конфликты и показать те периоды, где ресурсов не достаточно и потребуется оперативное вмешательство.
Оптимизатор Rivc.RMS позволяет гибко настраивать процесс распределения ресурсов:
- определять период контроля распределения работ диспетчером
- определять глубину работы оптимизатора
- распределять работы в соответствие с уникальными алгоритмами
- определять приоритетность распределения по вылетным рейсам
Rivc.RMS позволяет диспетчеру сосредоточиться на обработке ближайших вылетов. При этом контроль за распределением работ сохраняется на весь период, возможен ручной вариант перераспределения работ, закрепление работ, распределенных вручную и многое другое.
Обо всех возможностях Rivc.RMS вы сможете узнать, приняв участие в Вебинаре.
Зарегистрироваться на Вебинар можно по ссылке
👉🏻 Дата и время начала Вебинара 19 июня 2025 года 10:30 МСК.
Ждём вас!
#РИВЦ #50ЛетНаКрыльяхТехнологий #RMS #Управлениересурсами #РМС #Ресурсы
Дорогие друзья, коллеги! Приглашаем вас принять участие в демонстрации новых решений от РИВЦ-Пулково. В соответствие с планом компании по разработке и внедрению инновационных продуктов мы сделали современный мощный роботизированный комплекс Rivc.RMS. Rivc.RMS позволяет существенно сократить время диспетчера при распределении работ, подсветить конфликты и показать те периоды, где ресурсов не достаточно и потребуется оперативное вмешательство.
- определять период контроля распределения работ диспетчером
- определять глубину работы оптимизатора
- распределять работы в соответствие с уникальными алгоритмами
- определять приоритетность распределения по вылетным рейсам
Rivc.RMS позволяет диспетчеру сосредоточиться на обработке ближайших вылетов. При этом контроль за распределением работ сохраняется на весь период, возможен ручной вариант перераспределения работ, закрепление работ, распределенных вручную и многое другое.
Обо всех возможностях Rivc.RMS вы сможете узнать, приняв участие в Вебинаре.
Зарегистрироваться на Вебинар можно по ссылке
👉🏻 Дата и время начала Вебинара 19 июня 2025 года 10:30 МСК.
Ждём вас!
#РИВЦ #50ЛетНаКрыльяхТехнологий #RMS #Управлениересурсами #РМС #Ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1