Экономические задачи линейного программирования и их решение с испол
..pdf6x |
3x |
60, |
l |
|
|
1 |
2 |
|
1 |
1x1 |
2x2 |
20, |
l2 |
|
0x |
2x |
20. |
l |
|
|
1 |
2 |
|
3 |
Координаты прямых приведены в табл. 1.2.
|
|
|
|
|
|
|
Таблица 1.2 |
|
|
|
|
|
|
|
|
|
|
|
l1 |
|
l2 |
|
l3 |
|||
x1 |
|
x2 |
x1 |
|
x2 |
x1 |
|
x2 |
0 |
|
20 |
0 |
|
10 |
0 |
|
10 |
10 |
|
0 |
20 |
|
0 |
10 |
|
10 |
Определим полуплоскости, соответствующие каждому неравенству системы. Для этого достаточно взять произвольную точку, не лежащую на граничной прямой, и подставить ее координаты в соответствующее неравенство. Областью определения будет выпуклый многоугольник (общая часть всех полуплоскостей).
Построим вектор n (3; 2,5). Перпендикулярно к нему прово-
дим линию уровня α = 0. Параллельным перемещением прямой α в направлении вектора n находим крайнюю точку области определения Х*, в которой целевая функция достигает максимума (рис. 1.8).
Рис. 1.8
21
Решим совместно уравнения граничных прямых l1 и l2:
6x |
3x |
|
|
60, |
|
6x |
3x |
|
60, |
|
6(20 |
|
2x |
|
) 3x |
|
60, |
|
||||||||
|
|
1 |
|
2 |
|
|
|
|
|
1 |
|
|
2 |
|
|
|
|
|
|
2 |
|
2 |
|
|||
|
x1 2x2 |
20 |
|
|
x1 20 2x2 |
|
|
|
x1 20 2x2 |
|
|
|||||||||||||||
|
120 12x |
2 |
3x |
2 |
60, |
|
|
9x |
2 |
60, |
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
x1 20 2x2 |
|
|
x1 20 2x2 . |
|
|
|
|
|
|
|
Получаем х1 = 6,6, х2 = 6,7.
Оптимальное решение: x1 = 6,6, x2 = 6,7, z = 6,6 · 3 + 6,7 · 2,5 = = 36,55.
Анализ
Для достижения максимальной прибыли необходимо производить продукцию А в количестве 6,6 ед. и продукцию В количестве 6,7 ед. Максимальная прибыль равна 36,55 руб.
1.4. Симплекс-метод
Симплекс-метод – это метод последовательного улучшения опорного плана. В соответствии с основной теоремой линейного программирования целевая функция достигает своего экстремального значения в одной из крайних точек области определения, поэтому, если найти какую-нибудь крайнюю точку многогранника решений, то можно перейти от нее к другой крайней точке, в которой значение целевой функции лучше (в смысле критерия оптимальности), чем в предыдущей. Продолжив целенаправленный перебор крайних точек, мы в конце концов найдем точку, в которой целевая функция примет экстремальное значение. Для этого нужно иметь признак того, что целевая функция в одной крайней точке лучше, чем в другой. Идея симплекс-метода – в переходе от одного опорного плана к не худшему (в смысле критерия оптимальности). Таким образом, дело сводится к перебору опорных планов задачи.
Для использования симплекс-метода необходимо, чтобы задача была представлена в канонической форме: как задача на максимум (минимум), ограничения – в виде равенств, свободные члены неотрицательны. Кроме того, должно быть задано исходное опор-
22
ное решение. Если задача задана в стандартной или общей форме, то необходимо ее преобразовать в каноническую форму.
Опорное решение задано, если среди коэффициентов системы ограничений можно выделить единичный минор порядка ( m m ), где m – число уравнений. Допустим, что условия выполнены: задача имеет n переменных, m ограничений, и при первых m переменных коэффициенты составляют единичный минор ( m m ).
Таким образом, решение задач линейного программирования симплекс-методом состоит из двух этапов: 1) нахождение исходного опорного плана; 2) переход от исходного опорного плана к другому, более близкому к оптимальному опорному плану, затем к следующему, и так до тех пор, пока задача не будет решена.
С геометрической точки зрения перебор опорных планов можно толковать как переход по ребрам от одной вершины многогранника планов в другую по направлению к вершине, в которой целевая функция достигает экстремального значения.
Симплексный метод позволяет переходить от одного опорного плана к другому так, чтобы значение целевой функции увеличивалось (уменьшалось) в задаче на максимум (минимум).
Рассмотрим задачу линейного программирования в канонической форме:
z c1x1 c2 x2 ... cn xn max,
x1 ... a1,m 1xm 1 ... a1 j x j ... a1n xn b1,x2 ... a2,m 1xm 1 ... a2 j x j ... a2n xn b2 ,
... ... ... ... ... ... ... ... ... ... ... ... ... ...,
xm ... am,m 1xm 1 ... amj x j ... amn xn bm ,
x1, x2 , ..., xn 0.
Исходный опорный план: х1 = b1, x2 = b2, xm = bm, xm+1 = 0, xn = 0. Ненулевые переменные называют базисными, нулевые переменные –
свободными.
23
На практике для решения задач симплекс-методом используют симплекс-таблицы (каждой таблице соответствует свое опорное решение). Составим симплекс-таблицу (табл. 1.3):
Таблица 1.3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
… |
|
|
|
… |
|
|
|
|
Базис- |
|
|
|
|
|
P1 |
|
|
|
… |
|
Pm |
|
|
Pm 1 |
|
|
Pj |
Pn |
|
||||||||||
ные |
План |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
С |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
перемен- |
|
|
|
|
x1 |
|
|
… |
xm |
|
xm+1 |
|
… |
xj |
… |
xn |
bi/aij |
|||||||||||||
ные |
|
|
|
|
|
|
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x1 |
b1 |
|
0 |
|
1 |
|
|
|
… |
0 |
|
|
a1, |
|
… |
a1j |
… |
a1n |
b1/a1j |
|||||||||||
|
|
|
|
|
|
|
m+1 |
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
x2 |
b2 |
|
0 |
|
0 |
|
|
|
… |
0 |
|
|
a2, |
|
… |
a2j |
… |
a2n |
b2/a2j |
|||||||||||
|
|
|
|
|
|
|
m+1 |
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
… |
… |
… |
… |
|
… |
… |
… |
… |
… |
… |
… |
… |
||||||||||||||||||
xi |
bi |
|
0 |
|
0 |
|
|
|
… |
0 |
|
|
ai, |
|
… |
[aij] |
… |
ain |
bi/aij |
|||||||||||
|
|
|
|
|
|
|
m+1 |
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
… |
… |
… |
… |
|
… |
… |
… |
… |
… |
… |
… |
… |
||||||||||||||||||
xm |
bm |
|
0 |
|
0 |
|
|
|
… |
1 |
|
|
am, |
|
… |
amj |
… |
amn |
bm/amj |
|||||||||||
|
|
|
|
|
|
|
m+1 |
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
j |
0 |
0 |
|
0 |
|
|
|
… |
0 |
–cm+1 |
|
… |
–cj |
… |
–cn |
|
||||||||||||||
|
|
|
|
|
j |
|
|
|
|
|
( j 1, 2, |
...,u), |
|
|
|
|
(1.5) |
|||||||||||||
|
|
|
|
|
PjC c j |
|
|
|
|
где j – оценка j-й переменной;
x1, x2 , ..., xm – базисные переменные;
b1,b2 , ...,bm – значения базисных переменных, остальные переменные равны 0;
C – вектор коэффициентов целевой функции при базисных переменных;
P j – вектор коэффициентов системы ограничений при j-й переменной xj.
24
Алгоритм симплекс-метода состоит в следующем:
1.Анализ опорного плана на оптимальность. Если все оценки
∆j 0, то план оптимален. Если хотя бы одна оценка ∆j < 0, то необходим переход к другому плану, т.е. пересчет всех коэффициентов.
2.Выбор разрешающего элемента. Решаем вопрос о том, какую переменную ввести, а какую вывести из базиса: вводим переменную, у которой ∆j < 0. Если таких несколько, то вводим ту,
у которой j наибольшее по модулю. Допустим, это переменная xj. Рассматриваем отношение элементов вектора плана к соответствующим положительным коэффициентам вводимой переменной:
b1/a1j , b2/a2j , …, bm/amj (см. последний столбец табл. 1.3). Минимальное отношение покажет строку выводимой пере-
менной, например bi/aij – минимальное, тогда выводим хi, а вводим хj; аij – разрешающий элемент, находится на пересечении i-й строки j-го столбца.
3. Пересчет симплекс-таблицы. В новой таблице записываем новые базисные переменные (заменяем хi на хj) и новый вектор-
столбец C . Вектор-план P и векторы-коэффициенты Pj пересчи-
тываются следующим образом:
а) строка с разрешающим элементом делится на этот элемент, записывается соответствующая строка в новой таблице;
б) все остальные элементы таблицы пересчитываются по мнемоническому «правилу прямоугольника»;
в) оценочная строка пересчитывается двумя способами: по формуле (1.5) или по мнемоническому «правилу прямоугольника».
Затем переходим к п. 1 данного алгоритма.
Напомним мнемоническое «правило прямоугольника». По двум точкам (разрешающий элемент aij и пересчитываемый элемент akl ) строится прямоугольник (рис. 1.9).
25
Новое значение элемента равно старому значению элемента минус произведение элементов противоположной диагонали прямоугольника, деленное на разрешающий элемент:
Рис. 1.9
akl |
akl |
ail akj |
, k i, |
l j, |
(1.6) |
|
|||||
|
|
aij |
|
|
где akl – старое значение элемента; akl – новое значение элемента.
Возможно возникновение различных ситуаций решения:
1)единственное решение: если в оптимальном плане для всех небазисных переменных оценки больше нуля;
2)множество решений: если все оценки неотрицательны, но для небазисных переменных есть хотя бы одна оценка, равная нулю, тогда эту переменную можно вводить в базис и получить другое оптимальное решение;
3)нет решений: если только одна переменная имеет отрица-
тельную оценку j , но среди коэффициентов вектора Pj нет ни
одного положительного, т.е. мы не можем перейти к другому опорному плану.
Исходное опорное решение не всегда задано, его можно найти, используя метод Гаусса решения системы линейных уравнений. Необходимо преобразовать систему линейных ограничений таким образом, чтобы коэффициенты при m переменных составляли единичный минор. Эти m переменных и будут базисными. Тогда исходное опорное решение следующее: базисные переменные равны свободным членам соответствующих уравнений, а остальные переменные равны нулю.
Решение оптимальной задачи рассмотрим на конкретном примере.
26
Пример Постановка задачи. Предприятие располагает ресурсами сы-
рья, рабочей силы и оборудованием, необходимым для производства любого из четырех видов производимых товаров – 1, 2, 3, 4. Затраты ресурсов на изготовление единицы данного вида товаров, прибыль, получаемая от реализации единицы товара, а также запасы ресурсов указаны в табл. 1.4.
Таблица 1.4
|
|
|
Затраты ресурса |
|
Запас |
||
Вид ресурса |
|
на единицу товара |
|
||||
|
|
ресурса |
|||||
|
1 |
|
2 |
3 |
|
4 |
|
|
|
|
|
||||
Сырье, кг |
5 |
|
7,5 |
2 |
|
1 |
126 |
Рабочая сила, ч |
6 |
|
1 |
2 |
|
2 |
152 |
Оборудование, станко-часов |
15 |
|
6,5 |
1 |
|
1 |
112 |
Прибыль от единицы |
|
|
|
|
|
|
|
товара, руб. |
20 |
|
18 |
26 |
|
30 |
|
Определить, какой ассортимент товара необходимо выпускать, чтобы прибыль была максимальной.
Моделирование. Обозначим основные переменные прямой задачи:
–х1 – количество выпускаемого товара 1,
–х2 – количество выпускаемого товара 2,
–х3 – количество выпускаемого товара 3,
–х4 – количество выпускаемого товара 4. Тогда целевая функция
z = 20x1 + 18x2 + 26x3 + 30x4 → max. |
(1.7) |
|||||
Система ограничений: |
|
|
|
|
||
5x |
7,5x |
2x |
x |
126, |
|
|
|
1 |
2 |
3 |
4 |
|
|
6x1 |
x2 2x3 2x4 152, |
(1.8) |
||||
|
|
|
|
x4 |
112, |
|
15x1 6,5x2 x3 |
|
x1, x2, x3, x4 ≥ 0,
где (1.7) – суммарная прибыль; (1.8) – ограничения на расход каждого вида ресурса, левая часть –
затратыресурса, праваячасть– запасресурса.
27
Приведем модель задачи к канонической форме, добавив в левую часть каждого ограничения (1.8) дополнительные переменные (допуск):
–х5 – количество неиспользуемого сырья,
–х6 – количество неиспользуемой рабочей силы,
–х7 – количество неиспользуемого оборудования. Каноническая форма:
z = 20x1 + 18x2 + 26x3 + 30x4 → max. |
(1.9) |
5x |
7,5x |
2x |
x |
x |
126, |
|
|
|
1 |
2 |
3 |
4 |
5 |
|
|
6x1 |
x2 2x3 2x4 x6 152, |
(1.10) |
|||||
|
|
|
|
|
x7 |
112, |
|
15x1 6,5x2 x3 x4 |
|
||||||
|
x1, x2, x3, x4, x5, x6, x7 ≥ 0. |
(1.11) |
Решение
Решим задачу симплексным методом, который представляет собой итерационный процесс. Каждая итерация позволяет перейти от одного решения системы (1.10),(1.11) к другому решению, дающему большее значение целевой функции (1.9).
Исходное опорное решение:
x1 0, x2 0, x3 0, x4 0, x5 126, x6 152, x7 112, или, в векторной форме: x (0, 0, 0, 0,126,152,112), z 0.
x5 , x6 , x7 – базисные переменные.
Построим первую симплекс-таблицу (табл. 1.5):
Таблица 1.5
Базис |
|
|
|
|
20 |
18 |
26 |
30 |
0 |
0 |
0 |
Приме- |
C |
|
План |
||||||||||
|
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
нение |
||||
|
|
|
|
|
||||||||
x5 |
0 |
|
126 |
5 |
7,5 |
2 |
1 |
1 |
0 |
0 |
126/1 |
|
x6 |
0 |
|
152 |
6 |
1 |
2 |
[2] |
0 |
1 |
0 |
152/2 |
|
x7 |
0 |
|
112 |
15 |
6,5 |
1 |
1 |
0 |
0 |
1 |
112/1 |
|
j |
|
|
|
|
–20 |
–18 |
–26 |
–30 |
0 |
0 |
0 |
|
28
В первой колонке приведены базисные переменные, во второй колонке – коэффициенты целевой функции при базисных переменных, в третьей колонке – значения базисных переменных в плане. Далее столько колонок, сколько переменных в задаче. В эти колонки заносятся коэффициенты при соответствующих переменных ограничения (1.10). Над переменными – коэффициенты целевой функции.
Пусть:
i – номер строки, i = 1, 2, 3, 4;
j – номер столбца (переменной), i = 1, 2, …, 7;
cj – коэффициент целевой функции при j-й переменной; p j – вектор коэффициентов при j-й переменной.
Каждая итерация содержит ряд действий. 1. Оценка переменных:
j C p j c j .
Оценка j-й переменной равна произведению вектора C и вектора коэффициентов при j-й переменной pj минус коэффициент
целевой функции при этой переменной. Например, оценка первой переменной x1:
|
|
|
|
|
|
|
0 |
|
5 |
|
|
|
|
|
|
|
|
c |
0 |
|
|
|
|
|
|||
|
|
C |
|
p |
|
6 |
20 |
20. |
|||||
1 |
1 |
1 |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
0 |
15 |
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Все оценки запишем в последней строке таблицы. Если есть хоть одна отрицательная оценка, план можно улучшить.
2.Выбор разрешающего элемента. Одну переменную вводим
вбазис и одну переменную выводим из базиса. Вводим в базис переменную, у которой отрицательная оценка наибольшая по абсо-
лютной величине. В нашем примере это x4.
Чтобы определить, какую переменную вывести из базиса, находим отношение плана к соответствующим положительным ко-
29
эффициентам вводимой переменной (x4), см. колонку «Примечание» табл. 1.5. Наименьшее отношение укажет строку с выводимой переменной. Пересечение столбца вводимой переменной и строки выводимой переменной – разрешающий элемент. В таблице он выделен рамкой.
3. Пересчет симплексной таблицы. Строим таблицу (как для итерации 1), а лучше продолжить вниз исходную таблицу. В первую колонку заносим новый базис, во вторую – коэффициенты целевой функции при этих базисных переменных.
Строку с разрешающим элементом делим на этот элемент, получаем новую строку (в примере все элементы второй строки разделим на 2 и результат запишем во второй строке новой таблицы). Для вводимой переменной x4 получим коэффициент, равный 1, остальные коэффициенты при этой переменной запишем в виде нулей.
Все оставшиеся элементы новой таблицы удобно рассчитывать, пользуясь «правилом прямоугольника» (см. рис. 1.9). Например, пересчитаем элементы первой строки:
126 1522 1 50,
5 6 1 2,
2
7,5 1 1 7,
220 302 6 70 и т.д.
Оценки j (последняя строка таблицы) можно пересчитать
двумя способами: по формуле (1.6) и по «правилу прямоугольника». Это важно для контроля.
На этом итерация заканчивается. Если есть отрицательная оценка, то переходим к следующей итерации, повторяем пп. 2, 3.
Если нет отрицательных оценок, то план оптимальный.
30