Pull to refresh

Comments 8

А в питоне точно нет другого способа решения задач линейного программирования?
чтобы он в одно действие щелкнул эту матрицу?

Если говорить о компактности записи модели, то, конечно, можно с помощью матрицы инициализировать ограничения, а через вектор весов - целевую функцию. Но это не с pulp, он не поддерживает матричные формы. Можно в таких целях использовать, например, scipy.optimize.milp или ortools.

Ещё интереснее механизмы многомерной оптимизации в динамических системах (изменяющаяся топология, изменяющиеся веса/"нагрузка"), когда есть, к примеру, базовая оптимальная модель и далее происходит оптимизация различных отклонений целевых показателей. Также можно рассматривать более сложную модель с грузоперевозками/такси, когда не только надо минимум по расходам, но и минимум по "штрафам", при невозможности или задержках доставки при динамической маршрутизации. Один авто только с одним пассажиром, только с точками A и B - это относительно просто.

Продолжайте эту тему, при желании и возможности. Большое спасибо за статью.

В перспективе, планировал добавить разбор более сложных моделей. Спасибо за идеи!

моделировать можно без глубокого математического фундамента.

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

Лучший - нет, универсальный и доступный - да. В статье не утверждается, что все задачи можно и нужно решать с помощью линейного программирования (ЛП). Приводится решение только одной задачи, которая решается в том числе методами ЛП. Этот пример можно использовать как шаблон/паттерн для разработки своего решения аналогичной задачи с помощью ЛП. Кроме того, есть различные решатели задач MILP (cbc, SCIP, cplex, gurobi и др.), которые отличаются по производительности и открытости кода. Что является еще одной размерностью (доступность готовых пакетов с алгоритмами) для выбора подхода к решению задачи.

Лучший — нет, универсальный и доступный — да.

На самом деле я не спрашивал, я знаю что такое линейное программирование. Я говорю, что вы в тексте ничем не обосновали его выбор.


Нет, про все задачи не утверждается, тут вы правы.


Утверждается, что можно решать задачи без математического фундамента — но при этом вы не объяснили выбор конкретного метода в своем примере. Но без фундамента человек просто не поймет, какие задачи являются аналогичными, и почему вон тут нельзя решать методами ЛП. В целом-то статья скорее хорошая, и может быть вы дальше разберете все что нужно — но пока вот это место заканчивает вводную часть:


также выбрав подходящий метод оптимизации

а дальше сразу следует переход к конкретной задаче, а хотя бы краткое описание того, какие собственно задачи и методы бывают — его не хватает. Между тем как раз выбор метода, по крайней мере на мой взгляд, это тот самый фундамент и есть. И математическая оптимизация — это вполне себе раздел прикладной математики. Во всяком случае в наше время был, прямо в программе ВУЗа.

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

По поводу математической оптимизации. Сейчас существует множество различных пакетов с реализацией различных методов оптимизации (линейное/нелинейное программирование, мета-эвристические методы, различные градиентные методы, методы поиска кратчайшего пути и др.). Эти сборники алгоритмов реализованы на хорошем уровне и позволяют проводить проверку гипотез, решать задачи быстрее и экономнее по ресурсам. Яркий пример из другой области - нейросети. Мало кто готов и может натренировать свой GPT4, даже если структура сети будет в общем доступе.

В статье демонстрируется "что" необходимо подать на вход и "как" применять готовые наборы оптимизационных алгоритмов для решения прикладных задач. Аналогично тому, как разметка и подготовка данных используется для finetuning нейросетей под локальные нужды. Мало кто вдается в детали структуры и организации нейросети при их обучении - черный ящик.

И математическая оптимизация — это вполне себе раздел прикладной математики.

Согласен. Добавлю, что стоит предоставить этот инструмент более широкому кругу лиц, чтобы все могли подумать над его применением.

Sign up to leave a comment.

Articles