
- •Часть 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)
2)
3)
Ответы:
1.
.
2.
,
,
.
3.
Оптимального
решения нет,
.
1.5. Метод искусственного базиса
Данный метод применяется, если в задаче линейного программирования сразу не получилось начальное допустимое базисное решение.
Пусть имеется каноническая задача линейного программирования:
,
,
и
,
.
Алгоритм метода искусственного базиса:
1.
К левым частям уравнений системы
ограничений, из которых появляются
отрицательные компоненты в базисном
решении, прибавляются искусственные
переменные
,
которые выбираются в качестве базисных:
.
Искусственные переменные могут быть введены в одно, несколько или все уравнения системы ограничений.
2.
В целевую функцию эти искусственные
переменные в задаче на максимум вводятся
с коэффициентом
,
а в задаче на минимум с коэффициентом
,
где
- число намного большее единицы.
3. Записывается новая целевая функция:
,
.
После подстановки выражений искусственных переменных из системы ограничений в выражения для и приведения подобных выражения новой целевой функции могут быть записаны в виде:
,
.
4.
В симплексную таблицу целевая функция
записывается в виде двух строк
и
.
Для задачи на максимум в строку для
записываются коэффициенты
,
в строку для
коэффициенты
.
5. При переходе искусственных переменных из числа базисных в число свободных столбцы, соответствующие этим искусственным переменным в каждой последующей симплексной таблице вычеркиваются.
6. Чтобы определить разрешающий столбец в задаче на максимум, в строке функции выбирается наибольший положительный элемент. Ему соответствует разрешающий столбец.
7. Разрешающая строка определяется как в обычном симплексном методе.
8.
После перехода всех искусственных
переменных
из числа базисных в число свободных,
будет получено допустимое решение. При
этом строка
должна получиться нулевой.
9. Дальше задача решается обычным симплексным методом.
Пример 9. Решить задачу линейного программирования методом искусственного базиса:
,
,
,
.
Решение.
1.
Задача приведена к каноническому виду.
Для системы ограничений соответствует
матрица:
.
Как видно из матрицы система ограничений
не приведена к допустимому виду.
2. Введем искусственные переменные в систему ограничений:
.
3. Запишем новую целевую функцию:
.
Приведем подобные и запишем:
.
4.
Составим симплексную таблицу. Так как
в последней строке все положительные
элементы одинаковые, выберем любой,
например, первый. Тогда столбец
разрешающий. Оценки
для первой и третьей строки одинаковые,
поэтому в качестве разрешающей возьмем
любую, например, первую. Тогда
- разрешающий элемент.
|
|
|
|
|
|
|
|
|
|
|
|
1 |
-1 |
1 |
-1 |
0 |
1 |
0 |
0 |
2 |
|
|
-1 |
1 |
2 |
0 |
1 |
0 |
1 |
0 |
4 |
|
|
2 |
0 |
-1 |
1 |
1 |
0 |
0 |
1 |
4 |
|
|
3 |
2 |
-2 |
3 |
1 |
0 |
0 |
0 |
0 |
|
|
2 |
0 |
2 |
0 |
2 |
0 |
0 |
0 |
10 |
|
Выполним
действия:
,
,
,
.
При этом искусственная переменная
становится свободной, а
- базисной. Столбец искусственной
переменной
в новой таблице можно исключить.
|
|
|
|
|
|
|
|
|
|
|
1 |
-1 |
1 |
-1 |
0 |
0 |
0 |
2 |
|
|
0 |
0 |
3 |
-1 |
1 |
1 |
0 |
6 |
|
|
0 |
2 |
-3 |
3 |
1 |
0 |
1 |
0 |
|
|
0 |
5 |
-5 |
6 |
1 |
0 |
0 |
-6 |
|
|
0 |
2 |
0 |
2 |
2 |
0 |
0 |
6 |
|
Выполним
действия:
,
,
.
При этом искусственная переменная
становится свободной, а
- базисной. Столбец искусственной
переменной
в новой таблице можно исключить.
|
|
|
|
|
|
|
|
|
|
1 |
-1 |
1 |
-1 |
0 |
0 |
2 |
|
|
0 |
-2 |
6 |
-4 |
0 |
1 |
6 |
|
|
0 |
2 |
-3 |
3 |
1 |
0 |
0 |
- |
|
0 |
3 |
-2 |
3 |
0 |
0 |
-6 |
|
|
0 |
-2 |
6 |
-4 |
0 |
0 |
6 |
|
Разделим
вторую строку на
,
чтобы разрешающий элемент был равен
единице. После деления на
выполним действия:
,
,
,
.
При этом искусственная переменная
становится свободной, а
- базисной. Столбец искусственной
переменной
в новой таблице можно исключить.
|
|
|
|
|
|
|
|
|
1 |
-2/3 |
0 |
-1/3 |
0 |
1 |
|
|
0 |
-1/3 |
1 |
-2/3 |
0 |
1 |
|
|
0 |
1 |
0 |
1 |
1 |
3 |
|
|
0 |
7/3 |
0 |
5/3 |
0 |
-4 |
|
|
0 |
0 |
0 |
0 |
0 |
0 |
|
Последнюю
строку можно вычеркнуть. Таким образом,
получено начальное допустимое решение
,
при котором
.
4.
Дальше применяем обычный симплексный
метод. Выполним действия:
,
,
.
Переменная
становится свободной, а
- базисной.
|
|
|
|
|
|
|
|
|
1 |
0 |
0 |
1/3 |
2/3 |
3 |
|
|
0 |
0 |
1 |
-1/3 |
1/3 |
2 |
|
|
0 |
1 |
0 |
1 |
1 |
3 |
|
|
0 |
0 |
0 |
-2/3 |
-7/3 |
-11 |
|
В
последней строке коэффициенты при
свободных переменных
и
отрицательные, следовательно, оптимальное
решение найдено:
и
.
Пример 10. Решить задачу линейного программирования методом искусственного базиса:
,
,
,
.
Решение.
1.
Приведем задачу к каноническому виду.
Введем балансовые переменные:
.
2. Балансовые переменные и могут быть выбраны в качестве базисных. Переменная не совпадает по знаку со свободным членом.
3. Введем в первое уравнение искусственную переменную:
.
4. Запишем новую целевую функцию:
или
.
5. Составим симплексную таблицу. В последней строке наибольший положительный элемент находится в первом столбце. Столбец разрешающий. В разрешающем столбце положительный элемент есть только в первой строке, поэтому оценки находить не надо. Первая строка – разрешающая.
|
|
|
|
|
|
|
|
|
|
|
2 |
0 |
1 |
-1 |
0 |
0 |
1 |
2 |
|
|
-1 |
1 |
1 |
0 |
1 |
0 |
0 |
6 |
|
|
-3 |
2 |
1 |
0 |
0 |
1 |
0 |
8 |
|
|
1 |
-1 |
-2 |
0 |
0 |
0 |
0 |
0 |
|
|
2 |
0 |
1 |
-1 |
0 |
0 |
0 |
2 |
|
Разделим
первую строку на
,
чтобы разрешающий элемент был равен
единице. После деления на
выполним действия:
,
,
,
,
.
При этом искусственная переменная
становится свободной, а
- базисной. Столбец искусственной
переменной
в новой таблице можно исключить.
|
|
|
|
|
|
|
|
|
|
1 |
0 |
1/2 |
-1/2 |
0 |
0 |
1 |
|
|
0 |
1 |
3/2 |
-1/2 |
1 |
0 |
7 |
|
|
0 |
2 |
5/2 |
-3/2 |
0 |
1 |
11 |
|
|
0 |
-1 |
-5/2 |
1/2 |
0 |
0 |
-1 |
|
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
Последнюю
строку можно вычеркнуть. Таким образом,
получено начальное допустимое решение:
,
.
6.
Дальше применяем обычный симплексный
метод. В строке целевой функции
положительный элемент есть только в
столбце
.
Это разрешающий столбец. При этом в
разрешающем столбце нет положительных
элементов. Следовательно, задача
оптимального решения не имеет и
.
Задания для решения в аудитории
Решить методом искусственного базиса задачу линейного программирования:
1.
,
,
,
.
2.
,
,
,
.
Задания для самостоятельной подготовки
1. Решить задачи линейного программирования методом искусственного базиса , :
1.1.
,
,
,
.
1.2.
,
,
,
.
1.3.
,
,
,
.
1.4.
,
,
,
.
Ответы:
1.1.
.
1.2.
Система
ограничений несовместна. 1.3.
,
,
.
1.4.
Оптимального
решения нет,
.
1.6. Двойственные задачи линейного программирования
1.6.1. Правила составления двойственных задач
Любой задаче линейного программирования, называемой исходной или прямой, можно поставить в соответствие другую задачу, которая называется двойственной или сопряженной. По отношению друг к другу каждая такая задача является двойственной, а вместе они образуют пару двойственных задач.
Различают два основных вида пар двойственных задач:
Симметричные пары |
Несимметричные пары |
||
Исходная |
Двойственная |
Исходная |
Двойственная |
|
|
|
|
Алгоритм составления двойственной задачи:
1.
Привести исходную задачу к одному виду
(если
,
то
,
если
,
то
).
2. Составить расширенную матрицу исходной задачи из коэффициентов системы ограничений и целевой функции.
3. Составить транспонированную матрицу.
4. Сформировать двойственную задачу на основании транспонированной матрицы и условий неотрицательности.
Пример 10. Для заданной задачи линейного программирования составить двойственную задачу:
,
,
,
.
Решение.
1. Приведем исходную задачу к одному виду:
,
,
,
.
2.
Составим расширенную матрицу:
.
3.
Транспонируем матрицу:
.
4. Составим двойственную задачу:
,
,
,
.
Переменная
,
соответствующая ограничению-равенству,
может быть любого знака.