1.1. Линейное программирование (ЛП).
1.2 Системы линейных уравнений.
1.3. Симплекс-метод в общем виде.
1.4. Метод искусственного базиса.
1.5. Двойственные задачи линейного программирования.
Линейное программирование — математическая дисциплина, посвящённая теории и методам решения экстремальных задач на множествах
-мерного векторного пространства, задаваемых системами линейных уравнений и неравенств.
Линейное программирование является частным случаем выпуклого программирования, которое в свою очередь является частным случаем математического программирования. Одновременно оно — основа нескольких методов решения задач целочисленного и нелинейного программирования. Одним из обобщений линейного программирования является дробно-линейное программирование.
Многие свойства задач линейного программирования можно интерпретировать также как свойства многогранников и таким образом геометрически формулировать и доказывать их.
Системы линейных уравнений: основные понятия
Определение. Система линейных уравнений — это объединение из nлинейных уравнений, каждое из которых содержит k переменных. Записывается это так:

Многие, впервые сталкиваясь с высшей алгеброй, ошибочно полагают, что число уравнений обязательно должно совпадать с числом переменных. В школьной алгебре так обычно и бывает, однако для высшей алгебры это, вообще говоря, неверно.
Определение. Решение системы уравнений — это последовательность чисел (k1, k2, ..., kn), которая является решением каждого уравнения системы, т.е. при подстановке в это уравнение вместо переменных x1,x2, ..., xn дает верное числовое равенство.
Соответственно, решить систему уравнений — значит найти множество всех ее решений или доказать, что это множество пусто. Поскольку число уравнений и число неизвестных может не совпадать, возможны три случая:
- Система несовместна, т.е. множество всех решений пусто. Достаточно редкий случай, который легко обнаруживается независимо от того, каким методом решать систему.
- Система совместна и определена, т.е. имеет ровно одно решение. Классический вариант, хорошо известный еще со школьной скамьи.
- Система совместна и не определена, т.е. имеет бесконечно много решений. Это самый жесткий вариант. Недостаточно указать, что «система имеет бесконечное множество решений» — надо описать, как устроено это множество.
В общем виде, когда в задаче линейного программирования участвуют N-неизвестных, можно сказать, что область допустимых решений, задаваемая системой ограничивающих условий, представляется выпуклым многогранником в n-мерном пространстве и оптимальное значение целевой функции достигается в одной или нескольких вершинах. Решить данные задачи графически, когда количество переменных более 3, весьма затруднительно. Существует универсальный способ решения задач линейного программирования, называемый симплекс-методом.
Симплекс-метод является основным в линейном программировании. Решение задачи начинается с рассмотрений одной из вершин многогранника условий. Если исследуемая вершина не соответствует максимуму (минимуму), то переходят к соседней, увеличивая значение целевой функции при решении задачи на максимум и уменьшая при решении задачи на минимум. Таким образом, переход от одной вершины к другой улучшает значение целевой функции. Так как число вершин многогранника ограничено, то за конечное число шагов гарантируется нахождение оптимального значения или установление того факта, что задача неразрешима. [5]
Этот метод является универсальным, применимым к любой задаче линейного программирования в канонической форме. Система ограничений здесь - система линейных уравнений, в которой количество неизвестных больше количества уравнений. Если ранг системы равен r, то мы можем выбрать r неизвестных, которые выразим через остальные неизвестные. Для определенности предположим, что выбраны первые, идущие подряд, неизвестные х1, х2, ..., хr. Тогда наша система уравнений может быть записана как
(1)
Переменные x1, x2,…, xr называются базисными, а весь набор {x1, x2,…, xr} - базисом, остальные переменные называются свободными, система ограничений (1) называется системой, приведенной к единичному базису. [2]
Придавая определенные значения свободным переменным и вычисляя значения базисных (выраженных через свободные), мы будем получать различные решения нашей системы ограничений. Таким образом, можно получить любое ее решение. Нас будут интересовать особые решения, получаемые в случае, когда свободные переменные равны нулю. Такие решения и являются базисными, их столько же, сколько различных базисных видов у данной системы ограничений. Базисное решение называется допустимым базисным решением или опорным решением, если в нем значения переменных неотрицательны. Если в качестве базисных взяты переменные х1, х2, ..., хr, то решение {b1, b2,..., br, 0, ..., 0} будет опорным при условии, что b1, b2,..., br ? 0.
Симплекс-метод основан на теореме, которая называется фундаментальной теоремой симплекс-метода. Среди оптимальных планов задачи линейного программирования в канонической форме обязательно есть опорное решение ее системы ограничений. Если оптимальный план задачи единственен, то он совпадает с некоторым опорным решением. Различных опорных решений системы ограничений конечное число. Поэтому решение задачи в канонической форме можно было бы искать перебором опорных решений и выбором среди них того, для которого значение f самое большое. Но, во-первых, все опорные решения неизвестны и их нужно находить, a, во-вторых, в реальных задачах этих решений очень много и прямой перебор вряд ли возможен. Симплекс-метод представляет собой некоторую процедуру направленного перебора опорных решений. Исходя из некоторого, найденного заранее опорного решения по определенному алгоритму симплекс-метода мы подсчитываем новое опорное решение, на котором значение целевой функции f не меньше, чем на старом. После ряда шагов мы приходим к опорному решению, которое является оптимальным планом.
Метод искусственного базиса
Данный метод решения применяется при наличии в системе ограничений и условий-равенств, и условий-неравенств, и является модификацией табличного метода. Решение системы производится путём ввода искусственных переменных Ri со знаком, зависящим от типа оптимума, т.е. для исключения из базиса этих переменных последние вводятся в целевую функцию с большими отрицательными коэффициентами M, имеющими смысл "штрафов" за ввод искусственных переменных, а в задачи минимизации - с положительными M. Таким образом из исходной получается новая M-задача (поэтому метод искусственного базиса так же называют M-методом).
Если в оптимальном решении М-задачи нет искусственных переменных, это решение есть оптимальное решение исходной задачи. Если же в оптимальном решении M-задачи хоть одна из искусственных переменных будет отлична от нуля, то система ограничений исходной задачи несовместна и исходная задача неразрешима.
Симплекс-таблица, которая составляется в процессе решения, используя метод искусственного базиса, называется расширенной. Она отличается от обычной тем, что содержит две строки для функции цели: одна – для составляющей F, а другая – для составляющей M. При составлении симплекс таблицы полагают что исходные переменные являются небазисными, адополнительные (xn+m) и искусственные (Ri)- базисными.
Исходная таблица для "Метода искусственного базиса" имеет следующий вид:
| x1 | x2 | ... | xn-1 | xn | b | |
| F | -a0,1 | -a0,2 | ... | -a0,n-1 | -a0,n | -b0 |
| xn+1 | a1,1 | a1,2 | ... | a1,n-1 | a1,n | b1 |
| xn+2 | a2,1 | a2,2 | ... | a2,n-1 | a2,n | b2 |
| Ri | ai,1 | ai,2 | ... | ai,n-1 | ai,n | bi |
| ... | ... | ... | ... | ... | ... | ... |
| xn+m | am,1 | am,2 | ... | am,n-1 | am,n | bm |
| M | -∑ai,1 | -∑ai,2 | ... | -∑ai,n-1 | -∑ai,n | -∑bi |
Элементы дополнительной строки M расчитываются как сумма соответствующих коэффициентов условий-равенств (условий в которые после приведения к каноническому виду введены переменные Ri) взятая с противоположным знаком.
Двойственная задача линейного программирования.
Важную роль в линейном программировании имеет понятие двойственности. Рассмотрим две задачи линейного программирования:
max{F(x) = CT x| Ax≤B, xi≥0, i =1,n} (1)
и
min{F(y) = BT y| AT y≥C, yj ≥0, j = 1,m}. (2)
Задачу (1) называют прямой, а связанную с ней задачу (2) – двойственной. Вместе они образуют симметрическую пару двойственных задач. Число переменных двойственной задачи равно количеству ограничений прямой. Кроме того, при переходе от прямой задачи к двойственной вектора B и C меняют местами, матрица A коэффициентов системы ограничений прямой задачи транспонируется, а знак неравенств в ограничениях меняют на противоположный. Смысл экстремума F(x) противоположен смыслу экстремума F(y) . Связь между задачами (1) и (2) взаимна, т.е. если прямой считать задачу (2), то в качестве двойственной ей будет соответствовать задача (1). Возможность перехода от прямой задачи к двойственной (и наоборот) устанавливается теоремой двойственности: если одна из задач (1) или (2) имеет оптимальное решение, то и другая также имеет оптимальное решение, причем оптимальные значения функции цели прямой и двойственной задач совпадают, т.е. max F(x) = min F( y) .
Если среди ограничений прямой задачи имеются равенства или на некоторые переменные не наложено условие неотрицательности, то построив двойственную ей задачу, получим пару несимметричных двойственных задач:

При этом выполняются следующие правила:
1. Если на переменную xi прямой задачи наложено условие неотрицательности, то i-е условие системы ограничений двойственной задачи является неравенством и наоборот.
2. Если на переменную xi прямой задачи не наложено условие неотрицательности, то i-е ограничение двойственной задачи записывается в виде строгого равенства.
3. Если в прямой задаче имеются ограничения равенства, то на соответствующие переменные двойственной задачи не накладывается условие неотрицательности.
Линейное программирование находит широкое применение при решении многих практических задач организационно-экономического управления. Цель, как правило, заключается в том, чтобы максимизировать прибыль либо минимизировать расходы.
Рассмотрим задачу рационального использования ресурсов.
Пусть предприятие располагает ресурсами b1,b2,...,bm, которые могут использоваться для выпуска n видов продукции. Известны нормы потребления j-го ресурса на производство единицы i-й продукции – aij , а также прибыль от реализации единицы i-го вида продукции ci (i = 1, n; j = 1,m) . Найти объем производства продукции каждого вида x*i, максимизирующий суммарную прибыль предприятия F(x) = ∑cixi , при этом расход ресурсов не должен превышать их наличия. Математическая модель задачи имеет вид
max{F(x)=∑cixi|∑ajixi≤bj, j=1,m; xi≥0, i=1,n}
Транспортная задача (задача Монжа — Канторовича) — математическая задача линейного программирования специального вида о поиске оптимального распределения однородных объектов из аккумулятора к приемникам с минимизацией затрат на перемещение. Для простоты понимания рассматривается как задача об оптимальном плане перевозок грузов из пунктов отправления в пункты потребления, с минимальными затратами на перевозки. Транспортная задача по теории сложности вычислений входит в класс сложности P. Когда суммарный объём предложений (грузов, имеющихся в пунктах отправления) не равен общему объёму спроса на товары (грузы), запрашиваемые пунктами потребления, транспортная задача называется несбалансированной (открытой).