linprog(method='revised simplex')#

scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, границы=(0, None), метод='highs', callback=None, опции=None, x0=None, integrality=None)

Линейное программирование: минимизация линейной целевой функции при линейных ограничениях равенства и неравенства с использованием пересмотренного симплекс-метода.

Устарело с версии 1.9.0: method='revised simplex' будет удалён в SciPy 1.11.0. Заменён на method='highs' потому что последний быстрее и надежнее.

Линейное программирование решает задачи следующего вида:

\[\begin{split}\min_x \ & c^T x \\ \mbox{such that} \ & A_{ub} x \leq b_{ub},\\ & A_{eq} x = b_{eq},\\ & l \leq x \leq u ,\end{split}\]

где \(x\) является вектором переменных решения; \(c\), \(b_{ub}\), \(b_{eq}\), \(l\), и \(u\) являются векторами; и \(A_{ub}\) и \(A_{eq}\) являются матрицами.

Альтернативно, это:

минимизировать:

c @ x

такой, что:

A_ub @ x <= b_ub
A_eq @ x == b_eq
lb <= x <= ub

Обратите внимание, что по умолчанию lb = 0 и ub = None если не указано с помощью bounds.

Параметры:
cОдномерный массив

Коэффициенты линейной целевой функции для минимизации.

A_ub2-D массив, опционально

Матрица ограничений неравенства. Каждая строка A_ub определяет коэффициенты линейного ограничения-неравенства на x.

b_ub1-D массив, необязательный

Вектор ограничений-неравенств. Каждый элемент представляет верхнюю границу соответствующего значения A_ub @ x.

A_eq2-D массив, опционально

Матрица ограничений равенства. Каждая строка A_eq задает коэффициенты линейного ограничения равенства на x.

b_eq1-D массив, необязательный

Вектор ограничения равенства. Каждый элемент A_eq @ x должен равняться соответствующему элементу b_eq.

границыsequence, optional

Последовательность (min, max) пары для каждого элемента в x, определяя минимальное и максимальное значения этой переменной решения. Используйте None чтобы указать, что ограничения отсутствуют. По умолчанию ограничения (0, None) (все переменные решения неотрицательны). Если одиночный кортеж (min, max) предоставляется, тогда min и max будет служить границами для всех переменных решения.

методstr

Это специфическая для метода документация для 'revised simplex'. ‘highs’, ‘highs-ds’, 'highs-ipm', ‘interior-point’ (по умолчанию), и 'simplex' (устаревший) также доступны.

callbackвызываемый объект, необязательный

Функция обратного вызова, выполняемая один раз за итерацию.

x01-D массив, необязательный

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

Возвращает:
resOptimizeResult

A scipy.optimize.OptimizeResult состоящий из полей:

xОдномерный массив

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

funfloat

Оптимальное значение целевой функции c @ x.

slackОдномерный массив

(Номинально положительные) значения переменных ослабления, b_ub - A_ub @ x.

conОдномерный массив

(Номинально нулевые) невязки ограничений-равенств, b_eq - A_eq @ x.

successbool

True когда алгоритму удается найти оптимальное решение.

statusint

Целое число, представляющее статус завершения алгоритма.

0 : Оптимизация успешно завершена.

1 : Достигнут предел итераций.

2 : Проблема, по-видимому, неразрешима.

3 : Проблема, по-видимому, неограничена.

4 : Возникли численные трудности.

5 : Задача не имеет ограничений; включите предварительное решение.

6 : Предоставлено неверное начальное приближение.

messagestr

Строковый дескриптор статуса завершения алгоритма.

nitint

Общее количество итераций, выполненных на всех этапах.

Смотрите также

Для документации по остальным параметрам см. scipy.optimize.linprog

Опции:
——-
maxiterint (по умолчанию: 5000)

Максимальное количество итераций для выполнения в любой фазе.

dispbool (по умолчанию: False)

Установить в True если индикаторы статуса оптимизации должны выводиться в консоль на каждой итерации.

предварительное решениеbool (по умолчанию: True)

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

tolfloat (по умолчанию: 1e-12)

Допуск, который определяет, когда решение в Фазе 1 является «достаточно близким» к нулю, чтобы считаться базовым допустимым решением, или достаточно близким к положительному, чтобы служить оптимальным решением.

autoscalebool (по умолчанию: False)

Установить в True для автоматического выполнения уравновешивания. Рассмотрите использование этой опции, если числовые значения в ограничениях различаются на несколько порядков величины.

rrbool (по умолчанию: True)

Установить в False чтобы отключить автоматическое удаление избыточности.

maxupdateint (по умолчанию: 10)

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

mastbool (по умолчанию: False)

Минимизировать амортизированное время решения. Если включено, измеряется среднее время решения линейной системы с использованием факторизации базиса. Обычно среднее время решения будет уменьшаться с каждым последующим решением после начальной факторизации, так как факторизация занимает гораздо больше времени, чем операция решения (и обновления). Однако в конечном итоге обновленная факторизация становится достаточно сложной, что среднее время решения начинает увеличиваться. Когда это обнаруживается, базис перефакторизуется с нуля. Включите эту опцию для максимизации скорости с риском недетерминированного поведения. Игнорируется, если maxupdate равен 0.

сводная таблица“mrc” или “bland” (по умолчанию: “mrc”)

Правило выбора ведущего элемента: Минимальная приведенная стоимость (“mrc”) или правило Бленда (“bland”). Выберите правило Бленда, если достигнут предел итераций и подозревается зацикливание.

unknown_optionsdict

Дополнительные аргументы, не используемые этим конкретным решателем. Если unknown_options не пусто, выдаётся предупреждение со списком всех неиспользуемых опций.

Примечания

Метод пересмотренный симплекс использует пересмотренный симплекс-метод, как описано в [9], за исключением того, что факторизация [11] базисной матрицы, а не её обратной, эффективно поддерживается и используется для решения линейных систем на каждой итерации алгоритма.

Ссылки

[9]

Bertsimas, Dimitris, и J. Tsitsiklis. «Введение в линейное программирование.» Athena Scientific 1 (1997): 997.

[11]

Бартельс, Ричард Х. «Стабилизация симплекс-метода.» Журнал Numerische Mathematik 16.5 (1971): 414-434.