Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум 1 часть_опт.doc
Скачиваний:
26
Добавлен:
17.11.2018
Размер:
1.1 Mб
Скачать

Задания к занятию 2

Задача 2.1.

Для каждого из следующих неравенств определите область допустимых значений, предполагая, что ,:

Задача 2.2.

Определить направление возрастания целевой функции Z. Построить соответствующий вектор градиента на ОДЗ, полученных в задаче 2.1.

  1. максимизировать

  2. максимизировать

  3. максимизировать

  4. максимизировать

  1. максимизировать

Задачи 2.3 – 2.6. Решить геометрически

Задача 2.3.

Задача 2.4.

при ограничениях:

при ограничениях:

Задача 2.5.

Задача 2.6.

при ограничениях:

при ограничениях:

Занятие 3 Симплекс-метод решения задач линейного программирования

Цель:

  • освоить процедуру решения задачи линейного программирования симплексным методом.

Ход работы

Пример 3.1.

Мебельная фабрика может производить шкафы, столы, стулья. При изготовлении мебели используются древесина, труд рабочих на столярном и отделочном участках. Необходимое количество ресурсов для изготовления шкафов, столов и стульев приведено в таблице 3.1:

Таблица 3.1 – Данные о ресурсах

Ресурсы

Шкаф

Стол

Стул

Древесина

8 м2

6 м2

1 м2

Отделочные работы

4 часа

2 часа

1,5 часа

Столярные работы

2 часа

1,5 часа

0,5 часа

В распоряжении фабрики имеется 48 м2 древесины, 20 часов времени на участке отделки, 8 часов на столярном участке. Известно также, что потребность в шкафах и стульях неограничена. Однако не более 5 столов может быть продано ежедневно. Цены реализации продукции следующие: шкаф – 60 у.е., стол – 30 у.е., стул – 20 у.е.

Учитывая, что все ресурсы уже куплены, мебельная фабрика хотела бы использовать их наилучшим образом, приносящим наивысший доход.

Решение

Построим математическую модель. Обозначим х1 – количество производимых шкафов, х2 – число столов, х3 – количество стульев.

Задача линейного программирования примет вид:

1) Целевая функция

2) Система ограничений

3) неотрицательные переменные х1, х2, х3 0 .

Преобразуем модель к стандартной форме (каноническому виду):

(3.1)

Векторы S1, S2, S3, S4 образуют базис системы (3.1):

S1, S2, S3, S4

Построим первую симплекс-таблицу (табл. 3.2). В первом столбце укажем переменные, образующие базис, во втором столбце (cj) – коэффициенты целевой функции, при переменных, входящих в базис. В третьем столбце (bi) – правые части ограничений. В остальных столбцах записываются коэффициенты целевой функции и коэффициенты в ограничениях при соответствующих переменных. В последней строке запишем значение целевой функции (столбец bi), которое изначально равно нулю, так как значения небазисных переменных (x1, x2, x3) всегда равны нулю, и обратные значения коэффициентов целевой функции (–сj).

Таблица 3.2

Базис

cj

х1

х2

х3

S1

S2

S3

S4

с.о.

60

30

20

0

0

0

0

  1. S1

0

48

8

6

1

1

0

0

0

48:8 = 6

  1. S2

0

20

4

2

3/2

0

1

0

0

20:4 = 5

  1. S3

0

8

2

3/2

1/2

0

0

1

0

8:2 = 4

  1. S4

0

5

0

1

0

0

0

0

1

0

-60

-30

-20

0

0

0

0

В задаче на max в индексной строке должны быть неотрицательные значения. В нашей задаче в индексной строке

0

-60

-30

-20

0

0

0

0

имеются отрицательные компоненты. Это значит, что при введении, например, переменной x1 в базис со значением 1, целевая функция улучшится на 60 единиц. Наибольшее отклонение по абсолютной величине имеет значение , следовательно столбец х1 будет разрешающим. Выясним, какая строка будет разрешающей. Для этого используем симплексное отношение , где bi – значения коэффициентов правых частей ограничений, aij – значения разрешающего столбца ( j):

48:8 = 6; 20:4 =5; 8:2 = 4.

Выбираем наименьшее из положительных симплексных отношений (отрицательные симплексные отношения, и такие, которые получаются в результате деления на ноль – не рассматриваются). В нашем случае наименьшее симплексное отношение получается в строке 3) S3, следовательно строка 3) S3 и будет разрешающей.

При этом S3 выходит из базиса, а строка 3) х1 входит в базис с коэффициентом cj равным 60, т.к. 60 – коэффициент целевой функции при x1.

Разрешающий столбец , который сейчас имеет вид

, нужно преобразовать к виду .

Воспользуемся методом Жордана-Гаусса. Из таблицы 3.2 необходимо перенести обновленные значения строк базиса, который составляют переменные . Строку 3) х1 необходимо разделить на «2» (так как 2 – разрешающий элемент) и она примет вид:

3)

4

1

3/4

1/4

0

0

1/2

0

Строку 4) S4 переносим из первой таблицы во вторую без изменений, т.к. в столбце «х1» находится нулевой элемент.

Строку 1) S1 необходимо обновить таким образом, чтобы в столбце «х1» был коэффициент 0. Для этого из строки S1 следует вычесть строку х1, умноженную на 8.

1) S1

1

S1-8х1

48

8

6

1

1

0

0

0

-32

-8

-6

-2

0

0

-4

0

16

0

0

-1

1

0

-4

0

Со строкой 2) S2 поступаем аналогично (из строки S2 следует вычесть 4 строки ):

2) S2

1

S2-4х1

20

4

2

3/4

0

1

0

0

-16

-4

-3

-1

0

0

-2

0

4

0

-1

1/2

0

1

-2

0

Для обновления строки к ней необходимо прибавить 60 строк , так как значения в столбце отрицательное.

0

-60

-30

-20

0

0

0

0

240

60

45

15

0

0

30

0

240

0

15

-5

0

0

30

0

Заполним вторую симплекс-таблицу полученными значениями базиса.

Таблица 3.3.

Базис

cj

х1

х2

х3

S1

S2

S3

S4

с. о.

60

30

20

0

0

0

0

1) S1

0

16

0

0

-1

1

0

-4

0

2) S2

0

4

0

-1

1/2

0

1

-2

0

8

3) х1

60

4

1

3/4

1/4

0

0

1/2

0

16

4) S4

0

5

0

1

0

0

0

0

1

240

0

15

-5

0

0

30

0

Помним, что в индексной строке () в задаче на max должны быть только неотрицательные компоненты. В таблице 3.3 в индексной строке данное требование не выполнено, так как имеется отрицательный элемент. Будем улучшать план. В качестве разрешающего столбца теперь выбираем столбец , так как он содержит отрицательный элемент (–5). Разрешающую строку выберем, как и ранее, используя симплексное отношение (16 не делим на (-1), так как отрицательные значения не рассматриваются):

4: = 8; 4: = 16.

Из полученных симплексных отношений выбираем наименьшее, следовательно, в качестве разрешающей строки выбираем вторую строку. Переменная х3 вытесняет S2 из базиса. Вновь используем метод Жордана-Гаусса, добиваемся того, чтобы столбец х3 имел вид:

.

Обновляем в таблице 3.3. строки 1) S1, 2), х3, 3) х1, 5) . Значения разрешающей строки 2) S2 умножаются на 2, т.к. разрешающий элемент 1/2, а надо иметь разрешающим элементом 1, и вместо переменной S2 записывается переменная :

2) х3

8

0

-2

1

0

2

-4

0

Обновляем строки 1) S1, 3) х1, 5) .

Для обновления строки 1) S1 необходимо к ней прибавить одну разрешающую строку , так как вместо элемента -1 мы должны получить значение равное 0.

1) S1

S13

16

0

0

-1

1

0

-4

0

8

0

-2

1

0

2

-4

0

24

0

-2

0

1

2

-8

0

Аналогично для строки 3) . Вместо элемента 1/4 в обновленной строке должен быть нуль. Значит, от 1/4 надо вычесть 1/4. Из строки х1 вычитаем 1/4 разрешающей строки:

3)

4

1

3/4

1/4

0

0

1/2

0

2

0

-1/2

1/4

0

1/2

-1

0

2

1

5/4

0

0

-1/2

3/2

0

Строка 4) S4 переписывается без изменений, так как в разрешающем столбце у нее нулевое значение.

Для обновления строки к ней следует прибавить пять разрешающих строк .

Z

240

0

15

-5

0

0

30

0

40

0

-10

5

0

10

-20

0

280

0

5

0

0

10

10

0

Заполним итоговую симплекс-таблицу.

Таблица 3.4.

Базис

cj

х1

х2

х3

S1

S2

S3

S4

60

30

20

0

0

0

0

1) S1

0

24

0

-2

0

1

2

-8

0

2) х3

20

8

0

-2

1

0

2

-4

0

3) х1

60

2

1

5/4

0

0

-1/2

3/2

0

4) S4

0

5

0

1

0

0

0

0

1

280

0

5

0

0

10

10

0

В строке целевой функции все коэффициенты при переменных неотрицательны, следовательно, мы нашли оптимальное из допустимых решений. Базис образуют переменные , т.е. для получения максимальной прибыли следует выпускать продукцию и , так как переменная не входит в базис. В столбце имеем оптимальные значения базисных переменных: x1 = 2, x3 = 8. Значения вспомогательных переменных S1 = 24, S4 = 5 можно интерпретировать следующим образом: 24 м2 древесины осталось не использовано, спрос на столы не удовлетворен на 5 единиц. Тот факт, что S2 = S3 = 0, говорит о том, что все ресурсы по участку отделки и столярному участку использованы полностью. Целевая функция нашей задачи имеет вид . Для определения ее максимального значения подставим в нее значения переменных, образующих оптимальное базисное решение:

Это же значение видно в последней симплекс-таблице на пересечении индексной строки и столбца .

Ответ: Наибольшая прибыль 280 единиц получается при производстве 2 единиц товара (столы) и 8 единиц товара (стулья).

Задания к занятию 3

Задача 3.1.

Решить задачу симплекс-методом:

Задача 3.2.

Решить симплекс-методом задачу

при ограничениях:

Задача 3.3.

Решить симплексным методом:

Задача 3.4.

Решить симплексным методом:

Занятие 4

Метод искусственного базиса

Цель:

  • научиться решать задачи линейного программирования, когда исходный базис выделить не удается, используя метод искусственного базиса.

Ход работы

Пример 4.1.

Рассмотрим задачу:

Приведем данную задачу к стандартной форме, прибавив к ограничению типа  добавочную переменную S1, и вычтя из ограничения типа  избыточную переменную e2:

Во втором и третьем уравнении нет переменных, которые могли бы составить исходный базис (заметим, e2 нельзя брать в качестве базисной, поскольку значение e2 = –20 недопустимое). Для этого вводятся искусственные переменные a2, a3, которые при решении должны оказаться равными нулю. Для этого модифицируется функция цели – в нее включаются эти переменные с очень большими коэффициентами M (в задаче на min со знаком +, на max – со знаком «минус»).

Выделим исходный базис (S1 = 48, a2 = 20, a3 = 10). Выразим из ограничений 2 и 3 переменные a2, a3 и подставим в целевую функцию:

,

,

,

Разобьем целевую функцию на две:

,

.

Заметим, что если бы исходная задача была на максимум, то первая целевая функция должна максимизироваться, а вторая все равно минимизироваться.

Построим исходную симплекс-таблицу с учетом двух строк ЦФ:

Базис

cj

х1

х2

S1

e2

a2

a3

с.о.

2

3

0

0

M

M

S1

0

48

6

3

1

0

0

0

16

a2

M

20

1

3

0

–1

1

0

6,66

a3

M

10

1

1

0

0

0

1

10

0

–2

–3

0

0

0

0

M

30

2

4

0

–1

0

0

Сначала минимизируем вторую ЦФ, добиваясь, чтобы она стала равна нулю, и все искусственные переменные вышли из базиса. Если этого сделать не удастся, значит исходная задача не имеет решения.

Базис

cj

х1

х2

S1

e2

a2

a3

с.о.

2

3

0

0

M

M

S1

0

28

5

0

1

1

–1

0

28/5

x2

3

20/3

1/3

1

0

–1/3

1/3

0

20

a3

M

10/3

2/3

0

0

1/3

–1/3

1

5

20

–1

0

0

–1

1

0

M

10/3

2/3

0

0

1/3

–4/3

0

Поскольку решается задача на минимум, решение не оптимально, так как в индексной строке есть положительные значения 2/3 и 1/3. Переменная x1 должна войти в базис, так как 2/3 > 1/3.

Базис

cj

х1

х2

S1

e2

a2

a3

2

3

0

0

M

M

S1

0

3

0

0

1

–1,5

1,5

–7,5

x2

3

5

0

1

0

–0,5

0,5

–0,5

x1

2

5

1

0

0

0,5

–0,5

1,5

25

0

0

0

–0,5

0,5

1,5

M

0

0

0

0

0

–1

–1

Во второй индексной строке наблюдается оптимум, поскольку в ней нет положительных элементов.

Первая индексная строка рассматривается до переменной e2 включительно (без искусственных переменных). Поскольку исходная задача решается на минимум, в первой индексной строке тоже наблюдается оптимум. Решение задачи (5; 5), z = 25.

Заметим, что если бы исходная задача была на максимум, данное решен не было бы оптимально, поскольку признаком оптимальности в этом случае является отсутствие отрицательных элементов в индексной строке, тогда нужно было бы переменную e2 ввести в базис.

Задания к занятию 4

Задача 4.1.

Решить методом искусственного базиса:

Задача 4.2.

Решить методом искусственного базиса:

Задача 4.3.

Решить методом искусственного базиса:

Занятие 5

Специальные случаи решения задач линейного программирования

Цель:

  • познакомится с понятием альтернативного оптимума;

  • научиться выявлять случаи неограниченного решения, отсутствия решения, альтернативного оптимума.

Ход работы

Пример 5.1.

Пусть в задаче о мебельной фабрике (см. пример 3.1) цена стола не 30, а 35 грн. Тогда итерации решения будут такими:

Базис

сj

х1

х2

х3

S1

S2

S3

S4

с.о.

60

35

20

0

0

0

0

  1. S1

0

48

8

6

1

1

0

0

0

48:8 = 6

  1. S2

0

20

4

2

3/2

0

1

0

0

20:4 = 5

  1. S3

0

8

2

3/2

1/2

0

0

1

0

8:2 = 4

  1. S4

0

5

0

1

0

0

0

0

1

0

-60

-35

-20

0

0

0

0

Базис

сj

х1

х2

х3

S1

S2

S3

S4

с. о.

60

35

20

0

0

0

0

S1

0

16

0

0

-1

1

0

-4

0

S2

0

4

0

-1

1/2

0

1

-2

0

8

x1

60

4

1

3/4

1/4

0

0

1/2

0

16

S4

0

5

0

1

0

0

0

0

1

240

0

10

-5

0

0

30

0

Базис

сj

х1

х2

х3

S1

S2

S3

S4

с. о.

60

35

20

0

0

0

0

S1

0

24

0

-2

0

1

2

-8

0

x3

20

8

0

-2

1

0

2

-4

0

x1

60

2

1

5/4

0

0

-1/2

3/2

0

1,6

S4

0

5

0

1

0

0

0

0

1

5

280

0

0

0

0

10

10

0

Задача решена, однако нужно заметить, что при небазисной переменной x2 в индексной строке стоит ноль (снижающая оценка равна нулю), то есть эту переменную можно ввести в базис и целевая функция не изменится. Это говорит о наличии другого оптимального решения.

Признаком альтернативного решения является коэффициент 0 в строке при небазисной переменной (х2).

Базис

сj

х1

х2

х3

S1

S2

S3

S4

60

35

20

0

0

0

0

S1

0

27,2

1,6

0

0

1

1,2

–5,6

0

x3

20

11,2

1,6

0

1

0

1,2

-1,6

0

x2

35

1,6

0,8

1

0

0

-0,4

1,2

0

S4

0

3,4

–0,8

0

0

0

0,4

–1,2

1

280

0

0

0

0

10

10

0

У нас есть два оптимальных решения (2; 0; 8) и (0; 1,6; 11,2).

Общее решение получается линейной комбинацией:

(2; 0; 8) + (1–)(0; 1,6; 11,2), где 0    1.

Так, например, если взять  = 0,375, получим решение: x1 = 0,75; x2 = 1; x3 = 10, которое тоже дает z = 280.

Пример 5.2.

Рассмотрим задачу:

Введя в модель дополняющие переменные S1 и S2, решим ее симплекс-методом:

Базис

сj

х1

х2

х3

х4

S1

S2

с. о.

36

30

-3

-4

0

0

S1

0

5

1

1

-1

0

1

0

5

S2

0

10

6

5

0

-1

0

1

1,67

0

-36

-30

3

4

Базис

сj

х1

х2

х3

х4

S1

S2

с. о.

36

30

-3

-4

0

0

S1

0

20/6

0

1/6

1

1/6

1

-1/6

20

x1

36

10/6

1

5/6

0

-1/6

0

1/6

60

0

0

3

-2

0

6

Базис

сj

х1

х2

х3

х4

S1

S2

с. о.

36

30

-3

-4

0

0

x4

-4

20

0

1

-6

1

6

-1

x1

36

5

1

1

-1

0

1

0

60

0

2

-9

0

12

4

В последней таблице в строке ЦФ получили, что решение еще не оптимально, так как при переменной x3 отрицательный элемент (–9) и она должна войти в базис. Однако нельзя выбрать переменную, которая могла покинуть базис. Это значит, что как ни увеличивай значение x3, целевая функция будет всегда увеличиваться (на 9 единиц на каждую единицу x3) при этом переменные x1 и x4­ никогда не станут отрицательными (не выйдут из базиса) – они тоже будут расти. Такая ситуации говорит о том, что решение задачи неограниченно.

Таким образом, если свободная переменная имеет отрицательный коэффициент в строке целевой функции (в задаче на максимум) и неположительные коэффициенты в разрешающем столбце, то задача является неограниченной, то есть всегда можно найти решение лучше предыдущего.

Пример 5.3. В задаче 4.1 изменим правую часть второго ограничения:

Будем решать задачу методом искусственного базиса (по аналогии с примером 4.1):

Базис

cj

х1

х2

S1

e2

a2

a3

с.о.

2

3

0

0

M

M

S1

0

48

6

3

1

0

0

0

16

a2

M

36

1

3

0

–1

1

0

12

a3

M

10

1

1

0

0

0

1

10

0

–2

–3

0

0

0

0

M

46

2

4

0

–1

0

0

Базис

cj

х1

х2

S1

e2

a2

a3

2

3

0

0

M

M

S1

0

18

3

0

1

0

0

–3

a2

M

6

–2

0

0

–1

1

–3

x2

3

10

1

1

0

0

0

1

30

1

0

0

0

0

3

M

6

–2

0

0

–1

0

–4

Поскольку все элементы второй строки целевой функции неположительные, оптимальное значение М-задачи найдено, однако переменная a2 не вышла из базиса, z2  0 и Z = 30 + 6M. Это обозначает, что исходная задача не имеет решения, так как ограничения несовместимы.

Задания к занятию 5

Задача 5.1.

Решить графическим методом:

Задача 5.2.

Решить симплекс-методом:

Задача 5.3.

Решить методом искусственного базиса:

Задача 5.4.

Решить методом искусственного базиса:

Занятие 6

Двойственные задачи

Цель:

  • ознакомится с теоретическими основами двойственных задач, их связью с прямой задачей;

  • научиться составлять двойственные задачи;

  • научиться находить оптимальное решение двойственной задачи по решению прямой.

Ход работы

К любой задаче линейного программирования может быть поставлена двойственная задача, решение которой дает важную экономическую интерпретацию прямой задачи и информацию для анализа чувствительности модели.

У двойственной задачи:

1) меняется критерий оптимальности на противоположный;

2) число переменных двойственной задачи равно числу ограничений прямой задачи;

3) число ограничений двойственной задачи равно числу переменных прямой задачи;

4) коэффициенты ЦФ прямой задачи становятся правыми частями ограничений двойственной и, наоборот, правые части ограничений прямой задачи становятся коэффициентами ЦФ двойственной;

5) матрицей коэффициентов пи переменных в ограничениях двойственной задачи является транспонированная матрица этих коэффициентов прямой задачи;

6) ограничения на знак переменных двойственной задачи связаны с типом соответствующего ограничения прямой задачи следующим образом (см. таблицу):

Прямая

Двойственная

Прямая

Двойственная

max z(x)

…  bi

… = bi

…  bi

min w(y)

yi  0

yi неогр. на знак

yi  0

min z(x)

…  bi

… = bi

…  bi

max w(y)

yi  0

yi неогр. на знак

yi  0

Пример 6.1.

Задача о мебельной фабрике (см. пример. 3.1):

Прямая

Двойственная

Экономическая интерпретация двойственной задачи. Пусть некая фирма решила выкупить все ресурсы мебельной фабрики, и она хочет узнать, по какой минимальной цене это сделать. Цены же, очевидно, не должны быть ниже, чем стоимость продукции, которую из этих ресурсов мебельная фабрика могла бы произвести. Таким образом, целевая функция минимизирует стоимость всех выкупаемых ресурсов, а ограничения отражают тот факт, что ресурсы, взятые в определенных пропорциях, должны дать цену не меньше стоимости соответствующей продукции мебельной фабрики.

Первая теорема двойственности. Прямая и двойственная задача имеют равные значения целевой функции.

Оптимальное решение двойственной задачи находится автоматически при решении прямой задачи в последней симплекс-таблице в строке целевой функции. При этом yi равно:

коэффициенту при Si, если i­-е ограничение типа  ;

коэффициенту при ei · (–1), если i­-е ограничение типа  ;

коэффициенту при ai, если i­-е ограничение типа = .

Решение двойственной задачи показывает теневые цены (двойственные оценки) ограничений, которые для связующих ограничений (критических ресурсов) отличны от нуля.

Они показывают:

  1. меру дефицитности ресурса;

  2. мера влияния ограничения на ЦФ;

  3. мера эффективности новых способов производства.

Пример 6.2.

Необходимо, используя имеющееся решение прямой задачи, построить двойственную задачу и найти ее решение.

Решение

Выписываем задачу двойственную к прямой. Каждое ограничение прямой задачи соответствует переменной двойственной задачи, каждая переменная прямой задачи соответствует ограничению двойственной. Запишем условие двойственной задачи:

Приводим прямую задачу к каноническому виду.

Решим прямую задачу с помощью симплекс-метода.

Базис

x1

x2

S1

S2

S3

S4

симпл. отнош.

3

2

0

0

0

0

S1

0

6

1

2

1

0

0

0

6:1=6

S2

0

8

2

1

0

1

0

0

8:2=4

S3

0

1

-1

1

0

0

1

0

S4

0

2

0

1

0

0

0

1

0

-3

-2

0

0

0

0

не оптимальное

S1

0

2

0

3/2

1

-1/2

0

0

2:3/2=4/3

x1

3

4

1

1/2

0

1/2

0

0

4:1/2=2

S3

0

5

0

3/2

0

1/2

1

0

5:3/2=10/3

S4

0

2

0

1

0

0

0

0

2:1=2

12

0

-1/2

0

3/2

0

1

не оптимальное

x2

2

4/3

0

1

-2/3

-1/3

0

0

x1

3

10/3

1

0

-1/3

2/3

0

0

S3

0

3

0

0

-1

1

1

0

S4

0

2/3

0

0

-2/3

1/3

0

1

38/3

0

0

1/3

4/3

0

0

оптимальное

Ответ для прямой задачи:

, при .

Исходя из первой теоремы двойственности, оптимальным решением для двойственной задачи будет значение .

Установим соответствие между переменными исходной задачи и переменными двойственной задачи. Первоначальным (основным) переменным исходной задачи соответствуют дополнительные переменные двойственной задачи и, наоборот, дополнительным переменным исходной задачи соответствуют основные переменные двойственной задачи. В нашем случае в исходной задаче дополнительными (неосновными) переменными были: S1, S2, S3, S4, следовательно, им соответствуют основные переменные двойственной задачи . Вернувшись к последней нашей симплекс-таблице и посмотрев в столбцы переменных S1, S2, S3, S4, в индексной строке видим оптимальное решение для соответствующих переменных двойственной задачи.