
- •Часть I
- •Часть 1. Линейное программирование
- •Задания для решения в аудитории
- •1.2. Виды задач линейного программирования
- •1.2.1. Приведение задачи линейного программирования к канонической форме
- •Задания для решения в аудитории
- •1.2.2. Переход от канонической формы задачи линейного программирования к стандартной форме
- •Задания для решения в аудитории
- •1.3.1. Графический метод решения задач линейного программирования с переменными
- •Задания для решения в аудитории
- •Задания для самостоятельной подготовки
- •1.4. Симплексный метод решения задач линейного программирования
- •1.4.1. Нахождение начального допустимого базисного решения
- •Задания для решения в аудитории
- •1.4.2. Составление и преобразование симплексных таблиц
- •Задания для решения в аудитории
- •1. Решить симплексным методом задачу линейного программирования: , , , .
- •1.4.3. Особые случаи симплексного метода
- •Задания для решения в аудитории
- •1. Решить симплексным методом задачу линейного программирования: , , , .
- •2. Решить симплексным методом задачу линейного программирования: , , , . Задания для самостоятельной подготовки
- •1.5. Метод искусственного базиса
- •1.6.2. Первая теорема двойственности
- •Задания для самостоятельной подготовки
- •1.7. Метод Гомори решения задач целочисленного программирования
- •Задания для самостоятельной подготовки
- •1.8. Транспортная задача линейного программирования
- •1.8.1. Математическая модель транспортной задачи
- •1.8.2. Опорное решение транспортной задачи
- •1.8.3. Метод потенциалов
- •Задания для самостоятельной подготовки
Задания для решения в аудитории
1. Найти начальное допустимое базисное решение задачи линейного программирования:
,
.
2. Найти начальное допустимое базисное решение задачи линейного программирования:
,
.
Указание:
сначала выбрать в первой строке
разрешающий элемент
,
потом в третьей –
.
1.4.2. Составление и преобразование симплексных таблиц
Алгоритм решения задач линейного программирования симплексным методом:
1. Привести задачу линейного программирования к каноническому виду.
2. Привести систему ограничений (1) к допустимому виду (4) и найти начальное базисное решение. Если начальное допустимое базисное решение отсутствует, то условия задачи противоречивы и оптимального решения нет.
3.
Составить первую симплексную таблицу.
Если система ограничений (1) приведена
к допустимому виду (3), а целевая функция
(2) к виду (5), то первая симплексная таблица
примет вид (
-
базисные переменные,
-
свободные члены):
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
|
0 |
|
|
|
|
|
|
|
0 |
1 |
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
|
1 |
|
|
|
|
|
|
|
0 |
0 |
|
0 |
|
|
|
|
|
- |
4.
Предположим,
что целевая функция (5) стремится к
максимуму. Если задача линейного
программирования на минимум
,
то ее можно свести к задаче на максимум
путем умножения целевой функции на
,
то есть
.В
этом случае, если в последней строке
первой симплексной таблицы (кроме числа
)
все числа отрицательные, то есть все
,
то базисное решение
является оптимальным и
.
5.
Пусть среди чисел
имеется хотя бы одно положительное
число, причем наибольшее из этих чисел
находится в столбце
,
то есть это
и пусть среди чисел этого столбца есть
положительные числа. Для каждого такого
числа
составляем отношение
.
Из всех таких выражений выбираем
наименьшее. Пусть оно соответствует
строке (базисному неизвестному
),
тогда
- строка и
-
столбец – это разрешающие строка и
столбец, а элемент
-
стоящий на их пересечении – разрешающий
элемент.
6.
Осуществим переход к новой таблице. Для
этого
разрешающую строку делим на
,
чтобы разрешающий элемент был = 1, а затем
в
-ом
столбце с помощью
-ой
строки получаем нули, умножая
строку на соответствующие числа и
вычитая их из других строк таблицы. При
этом старая базисная неизвестная
станет свободной и заменится на новое
базисное неизвестное
.
В результате будет осуществлен переход
к новому базису
.
7. С новой таблицей возвращаемся к выполнению пункта 4.
Пример 7. Решить симплексным методом задачу линейного программирования:
,
(**),
,
.
Решение.
1.
Приведем задачу к каноническому виду.
Для этого введем балансовые переменные:
(*).
2.
Так как балансовые переменные введены
с положительным знаком (знаки балансовых
переменных совпадают со знаками свободных
членов), то они могут быть выбраны в
качестве базисных. То есть
- базисные переменные,
- свободные. Выразим базисные переменные
через свободные:
.
Отсюда
- начальное допустимое базисное решение.
Целевая функция
не
зависит от базисных переменных, то есть
уже выражена через свободные, следовательно
- значение функции в начальном решении.
3. Составим начальную симплексную таблицу используя систему (*) и целевую функцию (**).
-
1
3
5
1
0
0
15
1
1
1
0
1
0
7
2
1
4
0
0
1
12
2
3
1
0
0
0
0
min
Решение
не является оптимальным, так как в
последней строке есть положительные
числа. Максимальное из них равно
и соответствует столбцу
(разрешающий столбец). Для каждого
положительного числа столбца
найдем оценку
и внесем эти оценки в последний столбец
первой симплексной таблицы. Среди оценок
выберем минимальную, то есть
.
Строка соответствующая минимальной
оценке будет разрешающей. Элемент,
стоящий на пересечении разрешающего
столбца и разрешающей строки является
разрешающим, то есть
- разрешающий.
4. Осуществим переход ко второй симплексной таблице.
Для
этого разрешающую (первую) строку
разделим на
,
чтобы разрешающий элемент был равен 1.
Затем в разрешающем столбце необходимо
получить все нули, кроме разрешающего
элемента. При этом базисная переменная
станет свободной, а
- базисной. Для этого первую строку
(после деления на
):
вычтем из второй строки (
),вычтем
из третьей строки (
),
умножим на
и вычтем из четвертой строки (
).
-
1/3
1
5/3
1/3
0
0
5
2/3
0
-2/3
-1/3
1
0
2
5/3
0
7/3
-1/3
0
1
7
1
0
-4
-1
0
0
-15
min
Решение
не является оптимальным, так как в
последней строке есть положительное
число
,
соответствующее столбцу
(разрешающий столбец). Для каждого
положительного числа столбца
найдем оценку
и внесем эти оценки в последний столбец
второй симплексной таблицы. Среди оценок
выберем минимальную, то есть
.
Строка соответствующая минимальной
оценке будет разрешающей. Элемент,
стоящий на пересечении разрешающего
столбца и разрешающей строки является
разрешающим, то есть
- разрешающий.
5. Осуществим переход к третьей симплексной таблице.
Для
этого разрешающую (вторую) строку
разделим на
,
чтобы разрешающий элемент был равен 1.
Затем в разрешающем столбце необходимо
получить все нули, кроме разрешающего
элемента. При этом базисная переменная
станет свободной, а
- базисной. Для этого вторую строку
(после деления на
):
умножим на
и вычтем из первой строки (
);
умножим на
и вычтем из третьей строки (
);
вычтем из четвертой строки (
).
-
0
1
2
1/2
-1/2
0
4
1
0
-1
-1/2
3/2
0
3
0
0
4
1/2
-5/2
1
2
0
0
-3
-1/2
-3/2
0
-18
min
Так
как в последней строке нет положительных
чисел, то из третьей симплексной таблицы
- оптимальное решение,
.