linprog(method='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='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

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

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

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

Возвращает:
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 : Возникли численные трудности.

messagestr

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

nitint

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

blandbool

Если True, используйте правило Бланда против циклов [3] для выбора опорных элементов, чтобы предотвратить зацикливание. Если False, выбирать опорные элементы, которые должны быстрее привести к сходящемуся решению. Последний метод подвержен зацикливанию (не сходимости) в редких случаях.

unknown_optionsdict

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

Ссылки

[1]

Dantzig, George B., Linear programming and extensions. Rand Corporation Research Study Princeton Univ. Press, Princeton, NJ, 1963

[2]

Хиллер, С.Х. и Либерман, Г.Дж. (1995), «Введение в математическое программирование», McGraw-Hill, глава 4.

[3]

Блэнд, Роберт Г. Новые конечные правила выбора опорного элемента для симплекс-метода. Математика операционных исследований (2), 1977: стр. 103-107.