Министерство образования и науки РФ Национальный исследовательский Томский политехнический университет

advertisement
Министерство образования и науки РФ
Федеральное государственное автономное образовательное учреждение высшего
образования
Национальный исследовательский
Томский политехнический университет
УТВЕРЖДАЮ
Зам. директора ИК
по учебной работе
_____________С.А. Гайворонский
«___»_________________2015г.
МЕТОДЫ ОПТИМИЗАЦИИ
Методические указания к выполнению лабораторной работы № 8
«Решение задачи линейного программирования»
по дисциплине
«Методы оптимизации»
для студентов направления 01.03.02
«Прикладная математика и информатика»
Томск 2015г.
УДК 519.8 ББК 22.14
Методы оптимизации. Методические указания к выполнению лабораторной
работы № 8. «Решение задачи линейного программирования» по дисциплине
«Методы оптимизации» для студентов направления 01.03.02 «Прикладная
математика и информатика». – Томск: Изд. НИ ТПУ, 2015. – 13 с.
Составитель – доц. канд. техн. наук Ю. В. Бабушкин
Резензент – доц. канд. техн. наук В. Г. Гальченко
Методические
методическим
указания
рассмотрены
семинаром
и
кафедры
«___»_________2015г.
Зав. кафедрой
Доцент, к.т.н. _________________Гергет О.М.
рекомендованы
прикладной
к
изучению
математики
Лабораторная работа № 8
Тема: Решение задачи линейного программирования.
Цель работы: Приобретение практических навыков для решения задач
линейного программирования численными методами с помощью стандартных
процедур пакета программ MATLAB.
1. Постановка задачи
Требуется найти вектор x , доставляющий максимум функции
f ( x )  c1x1  c2 x2  ...  cn xn
(1)
и удовлетворяющий системе ограничений:
 a x  a x   a x b
12 2
1n n
1
 11 1

 a21 x1  a22 x2   a2n xn b2

.........................................

 a x  a x   a x b
m2 2
mn n
m
 m1 1
(2)
x j  0, j 1,n .
2. Решение задачи симплекс-методом
Симплекс-метод представляет собой итеративную процедуру,
включающую два этапа:
1. Поиск начального опорного (базисного) решения.
2. Поиск оптимального решения путем перехода от одного базисного
решения к другому таким образом, чтобы обеспечить возрастание F ( x ) .
2.1. Поиск начального опорного решения
Для начала работы по симплекс-методу требуется, чтобы система (2)
была приведена к такому виду, при котором какие-либо m неизвестных были
выражены через остальные (матрица коэффициентов содержит единичную
подматрицу порядка m), а свободные члены уравнений были неотрицательны.
Например:

ˆ1,m1 xm 1 ... aˆ1,n xn bˆ1
 x1  a

 x a
ˆ2,m1 xm 1 ... aˆ2,n xn bˆ2
 2





ˆm,m 1xm 1 ... am,n xn bˆm
 xm  a

(3)
Тогда систему (3) можно разрешить относительно переменных x1 , x2 ..., xm ,
которые называют базисными переменными.
В результате решения системы (3) базисные переменные выражаются
через остальные переменные xm1 , xm2 ..., xmn , называемые свободными. Число
свободных переменных k  n  m . Свободные переменные остаются
произвольными. Давая им различные значения, получим все решения системы
(3). Одно из решений найдем, если все свободные переменные приравняем к
нулю. Тогда получим:
(4)
x1  bˆ1 , x2  bˆ2 ..., xm  bˆm , xm1  0, xm 2  0,..., xm n  0 .
Если все числа bˆ1 , bˆ2 ,..., bˆm неотрицательны, то получим неотрицательное
решение системы (3), соответствующее крайней точке (угловой точке,
вершине) многогранника неотрицательных решений, это так называемое
опорное (базисное) решение. Это решение удовлетворяет всем ограничениям
системы (2).
Если единичный базис не выделяется или трудно выделяется, то для его
создания вводятся искусственные переменные xn+i, i=1,…,m. В систему
ограничений они входят с коэффициентом «+1», а в целевую функцию с
коэффициентом «-M», где М – сколь угодно большое положительное число.
То есть для исходной задачи составляется расширенная задача, которая
имеет вид
n
m
j 1
i 1
F ( x )   c j x j  M  xni  max
n
a
j 1
i, j
x j  xni  bi ; bi  0; i  1, m ,
xi  0; i  1, n  m .
Этой задаче соответствует опорное решение: {x}  {0,..., 0, b1 ,..., bm} и
m
значение целевой функции: F ( x )   M  bi .
i 1
Назначение дополнительных слагаемых в целевой функции и
искусственных переменных состоит в том, чтобы в ходе решения М-задачи
вывести искусственные переменные из состава базиса.
Если в результате решения М-задачи окажется, что их значения не
равны нулю, то это означает, что ограничения (2) несовместны.
2.2. Поиск оптимального решения
Поиск оптимального решения основан на переходе от одного базисного
решения к другому таким образом, чтобы значение функции F ( x ) постоянно
возрастало. Пропуск вершин будет исключен, если состав базисных
переменных нового и старого решения будет отличаться только на одну
переменную.
2.2.1. Определение новой базисной переменной
Выбор переменной, которая должна быть введена в число базисных,
определяется из требования максимального приращения целевой функции при
переходе от одного решения к другому.
Процедура расчетов связана с использованием симплекс-таблиц, каждая
из которых соответствует текущему базисному решению.
Симплекс-таблица имеет вид
f ( x )  c1x1  c2 x2  ...  cn xn
cib
…
БП
…
БР
…
c1
c2
x1
x2
â11
â12
…
…
aˆm1
aˆm 2
z1
z2
1
2
…
…
cn
cj
xn
БП
aˆir
…
…
…
…
…
aˆ1n
…
…
aˆmn
zn
zj
n
j
Здесь БП – базисная переменная; БР - базисное решение.
Прирост целевой функции при введении в базис новой переменной из
числа свободных характеризуется относительной оценкой
 j  cj  zj ,
m
z j   cib aˆij , j  1, n ,
i 1
где c j - коэффициент целевой функции при переменной x j ;
ib - индекс базисной переменной, расположенной в i - ом уравнении ( i - ая
строка симплекс-таблицы);
cib - коэффициент целевой функции при базисной переменной с номером
ib ;
aˆij - элементы столбца коэффициентов при переменной x j в системе
уравнений, соответствующих текущему базису.
Для базисных переменных  j  0 . Это можно использовать для проверки
правильности вычислений.
Если все оценки неположительны, т.е.  j  0 , то расчет закончен и
базисное решение находится в колонке БР, а остальные переменные
полагаются равными нулю, как свободные.
Если число нулевых оценок  j  0 равно числу базисных переменных, то
задача имеет единственное решение.
Если число нулевых оценок  j  0 превышает число базисных
переменных, то задача имеет бесконечно большое число решений.
Если все оценки неположительны т.е.  j  0 , но базисное решение имеет
хотя бы одну искусственную переменную, не равную нулю, то ограничения
задачи несовместны.
Если среди оценок есть несколько положительных, то следует найти
среди них максимальную
 r  max  j ,
jJ H
где J H - множество индексов небазисных переменных.
Далее анализируются коэффициенты столбца таблицы, которому
соответствует максимальная положительная оценка. Если таких оценок
несколько, то принято выбирать оценку с наибольшим номером.
Если это столбец содержит хотя бы один положительный элемент, то
номер столбца обозначается через r , и переменная, соответствующая этому
столбцу, должна быть введена в число базисных.
Если среди коэффициентов этого столбца нет ни одного
положительного элемента, то это означает, что множество допустимых
решений задачи неограниченно, функция F ( x ) не ограничена сверху и задача
не имеет решения.
Столбец, соответствующий выбранной оценке, помечается символом 
и называется разрешающим.
Новая базисная переменная xr вводится на место старой базисной
переменной xˆsb , удаляемой из числа базисных переменных.
2.2.2. Определение номера удаляемой переменной
Номер удаляемой базисной переменной sb , а также номер строки
таблицы s определяется из условия
xˆib xˆsb БП


,
1i  m a
ˆir aˆsr aˆsr
min
где xˆib - значение координаты текущего базисного решения, соответствующего
i - ой строке;
aˆir - коэффициент при координате xr в i - ой строке.
Если коэффициент aˆir отрицателен или равен нулю, то отношение
xˆib
не
aˆir
БП
симплекс-таблицы вводится знак
aˆir
рассчитывается, а на его место в столбце
«--«.
Строка, соответствующая, выбранному отношению в таблице,
помечается символом  и называется разрешающей.
Вместо переменной xˆsb в состав базисных вводится переменная xr ,
значение которой находится по формуле
xr 
xˆsb
.
aˆ sr
Элемент aˆsr называется разрешающим и выделяется в таблице
прямоугольником.
Переменная xˆsb становится небазисной и принимается равной нулю. В
связи с вводом в базис новой переменной необходимо пересчитать
коэффициенты разрешающей строки s по формуле
asj 
aˆsj
,
aˆsr
j  1, n,
j  n  m - в случае ввода искусственных переменных.
Коэффициенты остальных строк рассчитываются по формуле
aij  aˆij  asj aˆir  aˆij 
aˆsj aˆir
, i  1, m, i  s, j  1, n .
aˆsr
Новое базисное решение определяется на основе текущего базисного
решения
xib  xˆib  aˆir xr  aˆij 
aˆsj aˆir
, ib  sb.
aˆsr
Примечания.
1. Если в исходной задаче в каждом ограничении имеется базисная
переменная с коэффициентом +1, то на шаге 1 нет необходимости выполнять
линейные преобразования или вводить искусственные переменные.
2. Если решается задача поиска минимума, то в базис вводится переменная,
которой соответствует наименьшая отрицательная оценка  r . Процесс
решения заканчивается, когда найдено такое базисное решение, что все
относительные оценки  j становятся неотрицательными.
3. При условии невырожденности симплекс-метод сходится за конечное число
шагов.
xr  0
4. В случае вырожденности, когда xˆsb  0 и, соответственно,
производится замена индексов базисных координат, но не их значений.
5. Процедура замены переменных может привести к зацикливанию. Методы
выхода из этого положения приведены в книге Моисеев Н.Н., Иванилов И.П.,
Столярова Е.М. Методы оптимизации. М.: Наука, 1978г.
3. Решение задач линейного программирования в пакете программ
MATLAB
В пакете MATLAB задачи линейного программирования решают с
помощью функции linprog. У функции linprog есть несколько вариантов
вызова, благодаря чему с ее помощью можно решать задачи линейного
программирования, заданные в любой форме, в том числе и в канонической.
Информацию об этих способах вызова можно получить, выполнив
команду help linprog.
Варианты заданий
Варианты заданий приведены в таблице.
1.
4.
max F ( x)  x1  4 x 2
max F ( x)  x1  x 2
max F ( x)  2  x1  x 2
x1  2  x 2  2
x1  3  x 2  4
x1  3  x 2  7
 x1  x 2  3
x1  x 2  7
2.
4  x1  x 2  24
3.
2  x1  x 2  0
6  x1  10  x 2  78
2  x1  x 2  10
x1  4  x 2  24
x1  2  x 2  2
x1  0, x 2  0
max F ( x)  x1  4 x 2
x1  0, x 2  0
min F ( x)  x1  4 x 2
x1  0, x 2  0
max F ( x)  5  x1  x 2
x1  2  x 2  4
4  x 21  x 3  x 4  14
x1  3  x 2  1
 x1  2  x 2  10
x2  6
5.
3  x1  2  x 2  24
 3  x1  2  x 2  2  x 3  x 4  2
x2  6
6.
x1  x 2  5
x2  8
2  x1  x 2  16
3  x1  2  x 2  24
x1  0, x 2  0
7.
3 x1  x 2  4
x i  0, i  1..4
x1  0, x 2  0
max F ( x)  2  x1  x 2
min F ( x)   x1  x 2
min F ( x)   x1  x 2
 x1  2  x 2  0
x1  x 2  2
x1  x 2  2
x1  2  x 2  4
 x1  x 2  5
8.
x1  x 2  9
x1  0, x 2  0
min F ( x)  20  x1  13  x 2  8  x3  5  x 4
4  x1  x 2  8
7  x 2  x3  2  x 4  42
10.
7  x1  2  x3  3  x 4  28
2  x1  x 2  12
x1  0, x 2  0
11.
x1  2  x 2  3
 2  x1  x 2  4
9.
x1  2  x 2  3
 2  x1  x 2  4
2  x1  3  x 2  20
2  x1  3  x 2  20
x1  0, x 2  0
max F ( x)  x 2
x1  0, x 2  0
min F ( x)  5  x1  12  x 2  7  x3  4  x 4
4  x1  x 2  8
x1  2  x 2  4
 2  x1  3  x 2  10
x1  2  x 2  16
12.
x1  8
x1  x3  x 4  11
2  x1  x 2  12
 x1  2  x 2  x3  x 4  3
x1  0, x 2  0
xi  0, i  1..4
13.
16.
19.
22.
max F ( x)  2  x1  x 2
max F ( x)  x1  3x 2
min F ( x)   x1  4 x 2
x1  3  x 2  7
x1  4  x 2  4
x1  2  x 2  4
 2  x1  x 2  6
5  x1  x 2  11
13  x 2  3  x 3  x 4  78
26  x1  10  x 3  x 4  78
14.
x 2  10
15.
 x1  4  x 2  23
x1  2  x 2  2
x1  3  x 2  100
4  x1  5  x 2  55
x i  0, i  1..4
x1  0, x 2  0
x1  2  x 2  4
max F ( x)  4  x1  x 2
max F ( x)  x1  x 2
x1  0, x 2  0
min F ( x)  6  x1  3x 2  4  x3  3  x 4
5  x1  x 2  11
3  x1  4  x 2  16
3  x1  4  x 2  16
4  x1  5  x 2  55
x1  2  x 2  2
x1  2  x 2  2
x1  2  x 2  4
17.
x1  8
18.
x2  8
6  x 2  x 3  x 4  27
x1  2  x 2  18
6  x 2  x3  x 4  42
3  x1  2  x 3  x 4  15
 x1  4  x 2  24
 2  x1  2  x 2  x3  x 4  6
x i  0, i  1..4
max F ( x)  x1  x3  3  x 4  11
x1  0, x 2  0
min F ( x)  2  x1  x 2
xi  0, i  1..4
max F ( x)  x1  3x 2
2  x1  5  x 2  14
3  x1  2  x 2  10
x1  2  x 2  4
x2  7
x1  7
x1  x 2  4
x1  x 2  10
20.
x1  x 2  10
21.
x1  8
 2  x1  2  x 2  x 3  x 4  3
 2  x1  4  x 2  x 3  x 4  7
x2  7
 2  x 2  x 3  3  x 4  11
 2  x1  x 3  5  x 4  21
x1  2  x 2  8
xi  0, i  1..4
min F ( x)  x1  8  x 2
x i  0, i  1..4
max F ( x)  4  x1  x 2
x1  0, x 2  0
max F ( x)  x1  x 2
2  x1  x 2  5
x1  4  x 2  6
x1  3  x 2  3
x1  4  x 2  6
 x1  4  x 2  28
 3  x1  4  x 2  3  x 3  30
2  x1  x 2  16
23.
2  x1  3  x 2  32
24.
x1  9
2  x1  3  x 2  32
4  x1  x 3  x 4  21
 4  x1  3  x 3  6
 x1  4  x 2  28
 2  x 2  x 3  x 4  11
 2  x1  x 2  3  x 3  0
x1  0, x 2  0
x i  0, i  1..4
x1  0, x 2  0, x 3  0
Задание
1. Решить задачу линейного программирования с помощью стандартной
программы linprog.
2. Подготовить отчет.
Контрольные вопросы
1. Сколько переменных (какую размерность) будет иметь задача после
преобразования в каноническую форму, если ограничения заданы системой n
неравенств и все переменные имеют произвольный знак?
2. То же, что и в вопросе 1, но все переменные положительны.
3.
Сколько вершин может иметь допустимое множество, если задача
задана в канонической форме и число переменных равно числу условийравенств?
4.
Сколько вершин может иметь допустимое множество, если задача
задана в канонической форме и условий-равенств на одно меньше числа
переменных?
СОДЕРЖАНИЕ ОТЧЕТА
1.
2.
3.
4.
5.
6.
Цель работы.
Формулировка задачи.
Листинг программы.
Результаты вычислений.
Ответы на контрольные вопросы.
Выводы.
ЛИТЕРАТУРА
1. Пантелеев А.В., Летова Т.А. Методы оптимизации в примерах и задачах. –
М.: Высшая шк., 2002. - 544 с.
2. Лесин В.В., Лисовец Ю.П. Основы методов оптимизации: Учебное
пособие. – СПб.: Издательство «Лань», 2011. – 352 с.
Временной ресурс:
- аудиторные занятия – 2 часа;
- самостоятельная работа – 4 часа.
Итоговая оценка защиты лабораторной работы
Всего: 3 балла, в том числе:
- метод линейного программирования
- 3 балла.
Решение задачи линейного программирования
Методические указания к выполнению лабораторной работы
Составитель – Юрий Владимирович Бабушкин
Подписано к печати ___._______. 2015г.
Формат 60*84/16. Бумага офсетная.
Плоская печать. Усл. печ. л. _____. Уч. – изд. л. ____.
Тираж 150 экз. Заказ ____. Цена свободная.
ИПФ НИ ТПУ. Лицензия ЛТ № 1 от 18.07.94.
Типография НИ ТПУ. 634034, Томск, пр. Ленина, 30.
Download