Горюнов Ю.Ю., Теория и методы принятия решений

advertisement
ГОУ ВПО
РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИННОВАЦИОННЫХ ТЕХНОЛОГИЙ И ПРЕДПРИНИМАТЕЛСТВА
ПЕНЗЕНСКИЙ ФИЛИАЛ
Ю.Ю. ГОРЮНОВ, Т.Ю. ГОРЮНОВА, Д.В. Дружинин
Теория и методы принятия решений
Учебное пособие
ПЕНЗА 2010
1
Теория и методы принятия решений (ТиМПР) – это наука, которая
математическими методами обосновывает выбор одного из нескольких
решений задачи (проблемы). Следует подчеркнуть, что окончательное
решение принимает лицо ответственное за принятие решений, причём его
выбор не всегда совпадает с рекомендуемым.
Некоторые разделы ТиМПР:
 математическое программирование (линейное программирование,
нелинейное программирование, …);
 динамическое программирование;
 сетевое планирование;
 потоки в сетях;
 принятие решений в условиях неопределённости (теория игр).
Для применения ТиМПР необходимо:
1) сформулировать задачу (проблему);
2) создать математическую модель (формализовать задачу в математической
форме);
3) решить математическую модель, используя соответствующий раздел
ТиМПР;
4) сформулировать предложения для принятия решения.
1. Математическое программирование
1.1. Линейное программирование
Задача. Предприятие располагает тремя видами сырья, из которого
изготавливает два вида продукции. Количество сырья, необходимого для
производства каждого вида продукции, и доход от продажи единицы каждого
вида приведены в следующей таблице:
Сырьё
Запасы
I
21
II
30
III
16
Доход от продажи
Расход сырья на изделие
I
II
3
4
2
3
1
2
3
2
Требуется составить план выпуска продукции, при котором доход от
продажи был бы максимальным.
2
Формализация (создание математической модели). Обозначим через x1
количество изготовленных изделий вида I, а через x2 – вида II. Тогда,
учитывая имеющиеся запасы сырья, получим систему неравенств:
3 x1  4 x2  21,
2 x  3 x  30,
 1
2

 x1  2 x2  16,
 x1  0, x2  0.
(1)
а доход от продажи составит g  x1, x2   3x1  2 x2 .
Таким образом, для определения максимального дохода от продажи изделий
необходимо найти максимальное значение функции g  x1, x2  при условии
выполнения системы неравенств (1) – это и есть математическая модель
поставленной задачи.
Полученная математическая модель состоит из системы ограничений в
виде системы линейных неравенств (1) и линейной целевой функции
g  x1, x2  , для которой требуется найти максимальное значение.
Задачи, в которых требуется найти максимальное (или минимальное)
значение линейной целевой функции, при условии выполнения системы
ограничений в виде системы линейных уравнений и/или неравенств,
относятся к задачам линейного программирования.
Упражнения
Составьте математическую модель задачи и обоснованно ответьте на вопрос:
относится ли она к задачам линейного программирования?
1. Для изготовления трёх видов изделий используется четыре вида
оборудования. Затраты времени на обработку одного изделия на каждом виде
оборудования, общий фонд рабочего времени оборудования1 и прибыль от
продажи единицы изделия приведены в таблице:
Затраты времени на обработку
Общий фонд рабочего
одного изделия
Тип оборудования
времени оборудования
I
II
III
I
2
4
5
120
II
1
8
6
280
III
7
4
5
240
IV
4
6
7
360
Прибыль:
10
14
12
То есть максимальное время, которое может работать оборудование до
своей замены или ремонта.
1
3
Требуется определить, сколько изделий и какого вида следует
изготовить, чтобы получить максимальную прибыль от их продажи.
2. Молочный завод производит молоко, кефир и сметану. На производство 1
т молока, кефира и сметаны требуется соответственно 1010, 1010 и 9450 кг
молока. Затраты рабочего времени на разлив 1 т молока, сметаны и кефира
составляют соответственно 0,18, 0,19 и 3,25 часов. Общий объём
используемого молока заводом в сутки не превышает 136000 кг.
Оборудование, используемое для разлива молока и кефира, может работать в
сутки не более 21,4 часа, а сметаны – не более 16,25 часа. Прибыль от
реализации 1 т молока, кефира и сметаны соответственно равна 3000, 2200 и
1360 рублей. Завод должен производить не менее 100 т молока.
Определить план выпуска заводом молочной продукции, который
обеспечивает заводу максимальную ежедневную прибыль.
1.2. Решение задач линейного программирования в Microsoft Excel
Для решения задач линейного программирования в Excel необходимо
выполнить следующие действия:
1. открыть приложение Excel;
2. Сервис – Надстройки – установить флажок "Поиск решения";
3. выделить ячейки для переменных, которые участвуют в системе
ограничений и целевой функции;
4. выделить ячейки и вставить в них формулы, соответствующие левым
частям системы ограничений;
5. выделить ячейки и заполнить их числами из правых частей системы
ограничений;
6. Сервис – Поиск решения;
7. заполнить поля окна "Поиск решения":

– щелкнуть в этом поле, а затем
щелкнуть по ячейке, которую выделили для значения целевой функции;

– щелкнуть в этом поле, а затем
выделить диапазон ячеек, которые отведены для переменных;
 указать, что следует искать: наибольшее или наименьшее значение
целевой функции:

Добавить
после чего для каждого ограничения:
4
 щелкнуть в поле "Ссылка на ячейку", затем по ячейке с
соответствующей формулой,
 выбрать нужное неравенство (равенство) в списке выбора,
 щелкнуть в поле "Ограничение:", и по ячейке, в которой набрано число
из правой части соответствующего ограничения:
 Добавить;
 Ок;
 Параметры;
в появившемся окне установить указанные ниже флажки:
 Ок;
 Выполнить.
Результат вычислений появится в ячейке, которая выделена под значение
целевой функции.
Пример. Найти в Microsoft Excel максимальное значение функции F =
4000x1+3000x2 при системе ограничений:
3x1  2 x2  7,
2 x  3x  9,
2
 1
 x1  3,
 x  x  1,
 2 1
 x1  0, x2  0.
5
Решение. Следуя сказанному выше, заполняем ячейки:
После щелчка по кнопке "Выполнить" получаем результат:
Из полученного результата следует, что максимальное значение целевой
функции равно 10000 и достигается при x1 = 1, x2 = 2.
Примечание. Для того, чтобы на листе Microsoft Excel отражались
формулы (первый рисунок), а не их числовые значения (второй рисунок)
необходимо установить флажок "формулы": Сервис – Параметры – Вид –
установить (сбросить) флажок "формулы".
Лабораторная работа № 1
Задание. По условию задачи составить математическую модель и решить её в
Microsoft Excel.
1. Ежедневное пищевое довольствие бойца спецназа должно содержать не
менее 60 единиц вещества А, не менее 50 единиц вещества Б и не менее 12
единиц вещества В. Указанные питательные вещества
содержаться в трёх видах продуктов. Содержание единиц питательных
веществ в 1 кг каждого продукта и цена 1 кг каждого продукта приведены в
6
следующей таблице:
Питательные
вещества
А
Б
В
Цена 1 кг (руб.)
Количество единиц питательных веществ в 1 кг
продукта
I
II
III
1
3
4
2
4
2
1
4
3
90
120
100
Составить дневной рацион бойца, обеспечивающий получение им
необходимого количества единиц питательных веществ при минимальной
цене на его производства.
2. Фабрика производит три вида противопожарной пены, используя три вида
сырья. Нормы расхода сырья каждого вида на производство 1 т пены данного
вида, общее количество сырья каждого вида, которое может быть
использовано фабрикой, и прибыль от продажи 1 т пены данного вида
приведены в следующей таблице:
Вид сырья
I
II
III
Прибыль от продажи
1 т (руб.)
Нормы расхода
сырья (т)
на 1 т пены
I
II
III
0,8
0,5
0,6
0,4
0,4
0,3
0,1
0,1
Общее количество
сырья (т)
800
600
120
10800 11200 12600
Найти
план
производства
пены
максимальную прибыль от её продажи.
заводом,
обеспечивающий
3. В трёх пунктах находится однородный груз в количествах, соответственно
равных 420, 380 и 400 т. Этот груз необходимо развести в три пункта
назначения, в количествах, соответственно равных 260, 520 и 420 т. Тарифы
перевозок 1 т груза из каждого пункта отправления в каждый пункт
назначения задаются следующей таблицей:
 2 4 3
7 5 8.


6 9 7


Найти план перевозок, обеспечивающий вывоз всего имеющегося груза и
завоз его в полном объёме в пункты назначения при минимальных
транспортных расходах.
7
1.3. Геометрическое решение задач линейного программирования
Если система ограничений и целевая функция задачи линейного
программирования содержат две переменные, то эту задачу можно решить
геометрически.
Геометрическое решение задачи линейного программирования состоит в
следующих действиях:
1) заменить в каждом ограничении знак неравенства на знак равно;
2) в прямоугольной системе построить соответствующие прямые,
3) выделить область точек на плоскости, координаты которых
удовлетворяют системе ограничений (ограничению со знаком ""
удовлетворяют точки, находящиеся выше прямой, а знаку "" – ниже
прямой);
4) в целевой функции отбросить свободный член и построить
соответствующую прямую;
5) при поиске максимума последнюю прямую параллельно перемещаем
вверх, а минимума – вниз;
6) координаты точки области, которую прямая пересечёт последней,
будут давать максимум (минимум) целевой функции, если эта точка
существует.
Пример. Решить задачу линейного программирования:
f = x1 + 2x2 + 3  max
4 x1  5 x2  8,

2 x1  x2  10,
 x  0, x  0.
2
 1
Решение.
1. Заменим в ограничениях знаки "" на знак равно, получим уравнения двух
прямых:
L1 :  4 x1  5 x2  8,
L2 : 2 x1  x2  10.
Построим эти прямые в прямоугольной системе координат:
8
2. Выделим область точек на плоскости, координаты которых удовлетворяют
системе ограничений (на рисунке эта область 0ABC закрашена):
первому ограничению удовлетворяют точки на плоскости, которые лежат
ниже прямой L1, второму ограничению – ниже прямой L2, третьему –
точки, находящиеся правее оси Ox2, четвёртому – выше оси Ox1
3. Отбросим свободный член в целевой функции, получим функцию y = x1 +
2x2, построим график этой функции (прямую L3).
4. Перемещая прямую L3 параллельно вверх, находим, что последней точкой
области 0ABC, которую она пересечёт, будет точка B.
5. Для нахождения координат точки В решаем систему уравнений:
 4 x1  5 x2  8,
решение системы: x1 = 3, x2 = 4.

 2 x1  x2  10,
Вывод: максимальное значение целевой функции f равно 3 + 2*4 + 3 = 14 и
достигается при x1 = 3, x2 =4.
Примечание.
Упражнения. Решить геометрически задачу линейного программирования,
результат проверить в Microsoft Excel.
f  5 x1  3x2  min
3x1  2 x2  6,
2 x  3 x  6,
1
2
1. 
 x1  x2  4,
4 x  7 x  28,
2
 1
 x1  0, x2  0.
f  x1  2 x2  max
3x1  2 x2  9,
2. 3x1  4 x2  27,

2 x1  x2  14,
 x1  0, x2  0.
9
f  2 x1  4 x2  max
8 x1  5 x2  16,
3.  x1  3x2  2,

2 x1  7 x2  9,
 x1  0, x2  0.
f  12  6 x1  x2  min
2 x1  3x2  15  0,
4.  x1  10,

4 x1  x2  2,
 x1  0, x2  0.
1.4. Симплекс-метод решения задач линейного программирования
Решение
задач
линейного
программирования
осуществляется по следующему алгоритму.
симплекс-методом
1. Если требуется найти максимум целевой функции f,
то найти минимум целевой функции –f.
2. Найти любое опорное решение задачи линейного программирования.
3. Если опорное решение существует,
то
найти оптимальное (min) опорное решение;
4. Если требовалось найти максимум целевой функции,
то
умножить на -1 найденный минимум.
1.4.1. Поиск опорного решения задачи линейного программирования
1. Преобразовать систему ограничений к стандартному виду:
 x1  1  1k 1xk 1   1t xt  ,


x    
k  kk 1xk 1   kt xt  .
 k
(1)
Примечание. Переменные слева от равенств называются
базисными, а в круглых скобках – свободные.
2. Если в системе (1) все i  0,
то
приравнять к нулю все свободные переменные и этим получить опорное
решение.
3. Если в системе (1) найдётся i < 0,
то
найти и поменять местами свободную переменную xk и базисную
переменную xn (то есть свободную переменную xk ввести в состав
базисных, а базисную переменную xn – в состав свободных).
4. Если обмен произвести удалось,
то
продолжить с п. 2,
иначе
10
опорного решения не существует.
Пример. Найти опорное
программирования
решение
следующей
задачи
линейного
f  5 x1  2 x3  min
5 x1  x2  2 x3  2,
 x
 x3  x4  5,
 1

 5 x4  7,
3x1
 x1  0, x2  0, x3  0, x4  0.
(2)
Решение.
1. Приводим систему ограничений к стандартному виду:
а) получаем систему линейных уравнений по правилу:
если в системе ограничений есть неравенства, то в левые части
неравенств со знаком "" следует добавить новые переменные , а
из левых части неравенств "" – вычесть новые переменные:
в системе ограничений (2) есть неравенства и все со знаком "", поэтому,
добавляем к левым частям неравенств новые переменные:
 y1
 2,
5 x1  x2  2 x3

 x3  x4
 y2
 5,
 x1
3x
 5 x4
 y3  7.
 1
(3)
б) Приводим систему линейных уравнений (3) к ступенчатому виду:
 записываем расширенную матрицу системы из коэффициентов при
неизвестных и свободных членов:
 5  1 2 0 1 0 0 2 



1
0
1
1
0
1
0
5

;
 3 0 0 5 0 0 1 7 


 умножаем
строки:
 1 0

 5  1
 3 0

вторую строку на -1 и меняем местами первую и вторые
1 1 0 1 0
2 0 1 0 0
0 5 0 0 1
5 

2 ;
7 
11
 умножаем первую строку на 5 и складываем со второй, умножаем первую
строку на 3 и складываем с третьей и получаем ступенчатый вид матрицы:
1 0  1  1 0  1 0
5 


 0  1  3  5 1  5 0  23  .
 0 0  3 2 0  3 1  14 


в) Приводим систему линейных уравнений к приведённому ступенчатому
виду:
 первую строку умножаем на -1, третью строку делим на -3:


1 0  1  1 0  1 0  5 


0
1
3
5

1
5
0
23

 ;

2
1 14 
0 1 
0 0 1 

3
3 3 

 умножаем третью строку на -3 и складываем со второй, складываем
третью и первую строки и получаем приведённый ступенчатый вид матрицы:
x1 x2 x3 x4 y1 y2 y3
5
1
1

x1  x4  y3   ,

5
1
1 

3
3
3
1 0 0  3 0 0  3  3 


 или  x2  7 x4  y1  2 y2  y3  9,
1
9 
 0 1 0 7 1 2

2
1
14


 x3  x4  y2  y3  .
2
1
14
0 0 1 

0 1 
3
3
3

3
3
3 

или
1 5
1

x



x

y3 ,
1
4

3 3
3

 x2  9  7 x4  y1  2 y2  y3 ,

14 2
1
 x3 
 x4
 y2  y3.
3 3
3

 приводим систему к стандартному виду:

1  5
 x1   3    3 x4


 x2  9   7 x4  y1

 x3  14    2 x4

3  3
1 
 y3  ,
3 
 2 y2  y3  ,
(4)
1 
 y2  y3  .
3 
Базисные переменные: x1, x2 и x3, свободные переменные: x4, y1, y2 и y3.
12
2. В системе (4) есть не отрицательные свободные члены, поэтому ищем для
обмена свободную и базисную переменные:
 взять любое уравнение с отрицательным свободным членом,
в системе (4) берём первое уравнение;
 если во взятом уравнении нет отрицательных коэффициентов при
свободных переменных, то опорного решения не существует,
в первом уравнении два отрицательных коэффициента при x4 и y3;
 взять любую свободную переменную с отрицательным коэффициентом и
выделить столбец, содержащий взятую переменную,
возьмём переменную x4 и выделим столбец с x4;

1
3
x1

x2

9
-
x3

14
3
-
-
(
(
(
5
 x4
3
7x4
1
 y3
3
 y1
2
 x4
3
2 y2
 y3
 y2
1
 y3
3
)
)
)
 в выделенном столбце найти наименьшее отношение свободных членов к
коэффициентам при свободных переменных, знаки которых совпадают со
знаками свободных членов,
в столбце с x4 два коэффициента в первой и второй строках, знаки
которых совпадают со знаками свободных членов, находим
минимальное отношение:
 1   5 

1 9 1
min     :    , 9 : 7   min  ,   ,
5 7 5
 3  3 

 взять базисную переменную, которая находится в строке с минимальным
отношением,
минимальное отношение находится в первой строке, поэтому берём
базисную переменную x1:

1
3
x1

x2

9
-
x3

14
3
-
-
(
(
(
5
 x4
3
7x4
2
 x4
3
1
 y3
3
 y1
2 y2
 y3
 y2
1
 y3
3
)
)
)
(выделенные столбец и строка)
13
 обменять местами выбранные свободную и базисную переменные, для
этого:
 выразить в выбранной строке свободную переменную через все
оставшиеся и подставить полученное выражение во все оставшиеся
уравнения
в нашем случае меняем местами переменные x4 и x1:
в первой строке выражаем x4 через оставшиеся переменные:
1 3
1
1  3
1 
x4   x1  y3     x1  y3  ,
5 5
5
5  5
5 
подставляем выражение для x4 во второе и третье уравнения:
7
2 
 7 21
 38  21
x2  9    x1  y3  y1  2 y2  y3  
  x1  y1  2 y2  y3  ,
5
5 
5 5
 5  5
14  2 2
2
1  72  2
3 
x3      x1  y3  y2  y3  
   x1  y2  y3  .
5  15 5
15
3  15  5
15 
и получаем новый стандартный вид системы:

1  3
1 
 x4  5    5 x1  5 y3  ,




38  21
2 
  x1  y1  2 y2  y3  ,
 x2 
5  5
5 


24  2
3 
   x1  y2  y3  .
 x3 
5  5
15 

(5)
В этой системе все свободные члены не отрицательные, поэтому,
приравнивая к нулю все свободные переменные, получим опорное решение:
x1  0, x2 
38
24
1
, x3  , x4  , y1  0, y2  0, y3  0.
5
5
5
1.4.2. Поиск оптимального решения
Если опорное решение найдено, то для отыскания оптимального опорного
решения (минимального) необходимо:


1) представить целевую функцию f в виде f    1 x1   2 x2  , где
все переменные x1, x2, … являются свободными,
из (5) получаем
48 4
2 

f    5 x1  2 x3     5 x1 
 x1  2 y2  y3  
5 5
5 

(6)
48  21
2 
     x1  2 y2  y3  ;
5  5
5 
14
2) если все коэффициенты i являются не положительными, то min f  ,
в нашем случае есть положительный коэффициент;
3) если среди коэффициентов i есть положительный, то в последней
системе стандартного вида выделить столбец, содержащий свободную
переменную с положительным коэффициентом в целевой функции,
в целевой функции (6) положительный коэффициент только у свободной
переменной y3, поэтому в системе (6) выделяем столбец с y3:
x4

1
5
-
x2

38
5
-
x3

24
5
-
(
(
(
3
 x1
5
21
x1
5
1
y3
5
 y1
2
 x1
5
2 y2
2
 y3
5
 y2

3
y3
15
)
)
)
4) если в выделенном столбце нет положительных коэффициентов у
свободных переменных,
то
целевая функция минимума не имеет,
в выделенном столбце есть положительные коэффициенты;
5) в выделенном столбце найти положительный коэффициент, для которого
отношение свободного члена (в той же строке) к этому коэффициенту
является наименьшим для всех положительных коэффициентов выделенного
столбца,
в выделенном столбце только один положительный коэффициент,
поэтому выделяем ту строку, в которой он находится, то есть первую
строку:
x4

1
5
-
x2

38
5
-
x3

24
5
-
(
(
(
3
 x1
5
21
x1
5
2
 x1
5
1
y3
5
 y1
2 y2
2
 y3
5
 y2

3
y3
15
)
)
)
6) свободную переменную в выделенном столбце ввести в состав базисных, а
базисную переменную в выделенной строке ввести в состав базисных,
свободную переменную y3 вводим в состав базисных, а базисную x4 – в
состав свободных (выразить переменную y3 через все оставшиеся
переменные в выделенной строке):
y3  1  3x1  5 x4  1   3x1  5 x4  ,
15
7) значение новой базисной переменной подставить во все оставшиеся
уравнения и целевую функцию:
 y3  1   3x1  5 x4  ,

 x  38   21 x  y  2 y  2  6 x  2 x  
2
1
4
 2 5  5 1 1
5 5


  8   3x1  2 x4  y1  2 y2  ,

 x3  24    2 x1  y2  3  3 x1  x4  

5  5
15 5


  5    x1  x4  y2  .
48  21
2 6

f      x1  2 y2   x1  2 x4  
5  5
5 5

 10   3x1  2 x4  2 y2  .
8) продолжить с п. 2).
В целевой функции все коэффициенты являются отрицательными,
поэтому min f  10 и достигается при (приравниваем к нулю
38
24
свободные переменные) x1  x4  y2  0, y3  1, x2  , x3  .
5
5
Ответ. Минимум целевой функции равен -10 и достигается при
38
24
x1  x4  0, x2  , x3  .
5
5
Лабораторная работа № 2
Задание. Решить задачу линейного программирования симплекс методом и в
приложение Microsoft Excel.
f  9 x1  10 x2  16 x3  max,
18 x1  15 x2  12 x3  360,
1. 6 x1  4 x2  8 x3  192,

5 x1  3x2  3x3  180,
 x1  0, x2  0, x3  0.
f  2 x1  6 x2  5 x5  max,
2 x1  15 x2  x3  x5  20,
 x  2 x  x  3 x  24,
1
2
4
5
2. 
3 x1  x2  12 x5  x6  18,
 x  0, x  0, x  0,
2
3
 1
 x4  0, x5  0, x6  0.
16
f  2 x1  3x2  6 x3  x4  max,
f  2 x1  x2  x4  min,
 x1  2 x2  x3  10,
3. 2 x1  x2  2 x4  18,

3x1  2 x2  x4  36,
 x1  0, x2  0, x3  0, x4  0.
 x1  2 x2  4 x3  20,
4.  x1  x2  2 x3  10,

2 x1  x2  2 x3  x4  24,
 x1  0, x2  0, x3  0, x4  0.
f  3 x1  2 x3  6 x6  max,
f  2 x1  3 x2  x4  max,
2 x1  x2  3 x3  6 x6  18,
3 x  2 x  x  2 x  24,
1
3
4
6
5. 
 x1  x3  x5  4 x6  36,
 x  0, x  0, x  0,
2
3
 1
 x4  0, x5  0, x6  0.
2 x1  x2  2 x4  x5  16,
3 x  2 x  x  3 x  18,
1
2
3
4
6. 
 x1  3 x2  4 x4  x6  24,
 x  0, x  0, x  0,
2
3
 1
 x4  0, x5  0, x6  0.
f  8 x2  7 x4  x6  max,
 x1  2 x2  3x4  2 x6  12,
4 x  x  4 x  3x  12,
2
3
4
6
7. 
5 x2  5 x4  x5  x6  25,
 x  0, x  0, x  0,
2
3
 1
 x4  0, x5  0, x6  0.
f  x1  3x2  5 x4  max,
2 x1  4 x2  x3  2 x4  28,
3x  5 x  3 x  5 x  30,
1
2
4
5
8. 
4 x1  2 x2  8 x4  x6  32,
 x  0, x  0, x  0,
2
3
 1
 x4  0, x5  0, x6  0.
f  3x1  2 x5  5 x6  max,
2 x1  x2  3x5  5 x6  34,
4 x  x  2 x  4 x  28,
1
3
5
6
9. 
3x1  x4  3x5  6 x6  24,
 x  0, x  0, x  0,
2
3
 1
 x4  0, x5  0, x6  0.
f  x1  2 x2  x3  max,
 x1  4 x2  2 x3  6,
10.  x1  x2  2 x3  6,

2 x1  x2  2 x3  4,
 x1  0, x2  0, x3  0.
f  8 x1  3 x2  x3  6 x4  5 x5  max,
2 x1  4 x2  x3  x4  2 x5  28,
 x  2 x  x  x  31,
1
2
4
5
11. 
 x1  3 x2  5 x3  4 x4  8 x5  118,
 x  0, x  0, x  0,
2
3
 1
 x4  0, x5  0.
f  15  3x4  8 x5  2 x6  min,
 x1  2 x4  3x5  7 x6  12,
 x  2 x  x  3x  8,
2
4
5
6
12. 
 x3  x4  4 x5  5 x6  7,
 x  0, x  0, x  0,
2
3
 1
 x4  0, x5  0, x6  0.
17
f  2 x1  3x2  4 x3  5 x4  x5  8 x6  max,
 x1  5 x2  3x3  4 x4  2 x5  x6  120,
13. 2 x1  9 x2  5 x3  7 x4  4 x5  2 x6  320,

 x1  0, x2  0, x3  0,
 x4  0, x5  0, x6  0.
f  3x1  5 x2  3x3  x4  x5  8 x6  max,
 x1  3x2  4 x3  5 x4  6 x5  x6  60,
14. 7 x1  17 x2  26 x3  31x4  35 x5  6 x6  42,

 x1  0, x2  0, x3  0,
 x4  0, x5  0, x6  0.
f  5 x1  x2  8 x3  10 x4  5 x5  x6  max,
2 x1  x2  3x4  x5  x6  36,
 x  2 x  x  2 x  2 x  20,
1
2
3
4
6
15. 
3x1  x2  2 x3  x4  3x5  x6  30,
 x  0, x  0, x  0,
2
3
 1
 x4  0, x5  0, x6  0.
1.5. Нелинейное программирование
Задача называется задачей нелинейного программирования, если её
математическая модель имеет вид
 g1  x1, x2 , , xn   b1,

 g 2  x1, x2 , , xn   b2 ,


g  x , x , , x   b ,
n
m
 m 1 2
f  x1, x2 ,
, xn   max  min  ,
в которой среди g i или f есть нелинейные функции.
В отличие от задач линейного программирования не существует единого
метода для решения задач нелинейного программирования.
Решение задач нелинейного программирования в Microsoft Excel
Задачи нелинейного программирования в Microsoft Excel решаются так же
как и задачи линейного программирования (см. 1.2), с той лишь разницей,
что в окне "Параметры поиска решения" необходимо сбросить флаги
"Линейная модель" и, если это необходимо, "Неотрицательные значения".
18
Пример. Решить в Microsoft Excel следующую задачу нелинейного
программирования:
найти f  4 x1  x12  8 x2  x22  min при условии x1  x2  180.
В данной модели система ограничений состоит из одного линейного
уравнения и нелинейной целевой функции.
Решение.
1. Заполняем ячейки на рабочем листе необходимыми переменными, целевой
функцией и ограничениями:
2. В окне "Параметры поиска решения" сбрасываем флаги "Линейная
модель" (так как решаемая задача есть задача нелинейного
программирования)" и "Неотрицательные значения" (в условии задачи нет
ограничений на знаки переменных).
3. После нажатия кнопки "Выполнить" получаем ответ:
из которого следует, что минимальное значение целевой функции равно
17278 и достигается при x1 = 91 и x2 = 89.
Решение задач нелинейного программирования методом Лагранжа
Метод Лагранжа заключается в выполнении следующих действий.
1. Если в системе ограничений встречаются неравенства, то, вводя
дополнительные переменные, преобразовать неравенства в равенства.
2. Для заданной системы ограничений и целевой функции составить
функцию Лагранжа:
L  x1, , xn   f  x1, , xn   1  b1  g1  x1, , xn      m  bm  gm  x1, , xn   ,
где 1, ,  m есть неопределённые коэффициенты2.
Поэтому метод Лагранжа часто называют методом неопределённых
множителей Лагранжа.
2
19
3. Приравнять к нулю все частные производные первого порядка функции L,
и получить систему уравнений (в общем случае нелинейных уравнений):
 L f  g1
g 

  1
   m m   0,

x1 
 x1 x1  x1


 L
g 
f  g1

  1
   m m   0,

x
xn  xn
xn 
 n
 L
   b1  g1  x1, , xn   0,
 1


 L  bm  g m  x1, , xn   0
  m
4. Решить полученную систему и, тем самым, найти все стационарные точки
 x10 ,

, xn0 функции f , то есть такие точки, в которых функция может иметь
экстремумы (минимумы или максимумы).
5. Исследовать каждую точку на наличие в ней экстремума функции f ,
применяя следующую теорему:
если функция f дважды дифференцируема в окрестности
 x10 ,
стационарной точки S =

, xn0 , причём все её вторые
производные в этой окрестности непрерывны, то функция f
имеет в точке S:
минимум, если все числа 1, 2, …, n являются
положительными,
максимум, если знаки чисел 1, 2, …, n чередуются, начиная с
минуса,
где
a11 a12 a1n
a11 a12
1  a11,  2 
, , n 
,
a21 a22
an1 an 2 ann

2 f
aik 
x10 ,
xi xk

, xn0 

xk

 f 0
x1 ,


x
 i


, xn0  .

Если же числа i не являются положительными или их знаки не
чередуются, то вопрос о наличии экстремума функции в
стационарной
точке
остаётся
открытым
и
требует
дополнительных исследований.
20
Для решения задач нелинейного программирования целесообразно
использовать программные системы символьных вычислений,
например, систему MathCad.
Пример. Решить методом Лагранжа в системе MathCad следующую задачу
нелинейного программирования:
f  4 x1  x12  8 x2  x22  min,
x1  x2  180.
Решение.
1. Объявляем целевую функцию f и функцию Лагранжа L:
2. Находим стационарные точки:
а) объявляем все частные производные первого порядка функции L:
объявление производной
результат
б) приравниваем к нулю все частные производные первого порядка функции
Лагранжа L и получаем систему, которую решаем с помощью блока Given:
Таким образом, функция f имеет одну стационарную точку (91, 89).
3. Для каждой стационарной точки проверяем наличие у функции f
минимума или максимума. Для этого:
а) объявляем все производные второго порядка целевой функции f:
объявление производной
результат
21
б) вычисляем значения всех производных второго порядка функции f в
каждой стационарной точке:
в) вычисляем значения членов последовательности
Так числа 1, 2 положительны, то функция f в точке (91, 89) имеет
минимум, равный
Ответ. Функция f  x1, x2   4 x1  x12  8 x2  x22 при условии x1  x2  180
имеет минимум 17278, который достигается при x1 = 91, x2 = 89.
Лабораторная работа № 3
Задание. Решить задачу нелинейного программирования в приложение
Microsoft Excel и методом Лагранжа в системе MathCad.
f  x12  x22  x3  min,
1.  x1  x2  x3  4,

2 x1  3 x2  12.
f  x1x2 x3  max,
2. 2 x1x2  x2 x3  12,

2 x1  x2  8.
f  3x12  2 x1  2 x2  4 x2 x3  max,
4.  x 2  2 x 2  19,
1
2

 x1  2 x2 x3  11.
f  x12  x22  2 x1  8 x2  min,
6.
x1  2 x2  4.
f  x1x2  x2 x3  max,
3.  x1  x2  4,

 x2  x3  4.
f  x12  x22  2 x1  4 x2  min,
5.
2 x1  3x2  6.
7.
f  x12  x22  2 x1  min,
x12  x22  4 x1  4 x2 .
22
8.
f  2 x1x2  x12  2 x22  min,
2 x1  3x2  6.
f  x12  x22  2 x2  min,
10.
2 x1  x2  1.
12.
f  2 x12  x22  x1x2  x1  min,
9.
 x1  2 x2  1.
f  x12  3x22  x1  2 x2  min,
11.
x1  4 x2  0.
f  x12  2 x22  4 x1  min,
f  x12  x22  min,
x1  x2  5.
13.
x12  x2  1.
f  x12  2 x22  min,
15.
3
x1  x2  .
2
f  x12  x22  2 x1  min,
14.
x1  2 x2  2.
2. Динамическое программирование
Динамическое программирование представляет собой математический метод
оптимизации решений при поэтапном (пошаговом) развитии ситуации,
причём выбор оптимального решения зависит как от состояния ситуации на
момент выбора очередного шага, так и от истории развития ситуации.
Следует подчеркнуть, что динамическое программирование применимо
только для решения таких "многошаговых" задач, для которых справедливо
утверждение: если за k шагов получено оптимальное решение, то выбор
оптимального решения на k+1 шаге даёт оптимальное решение за все k+1
шагов.
Из сказанного вытекает, что при динамическом программировании
оптимальное решение ищется "с конца", то есть от последнего к первому
шагу.
Пример 1. Дана карта автомобильных дорог с нанесёнными расстояниями
между населёнными пунктами
E
4
6
4
A
1
1
B
3
C 3
4
2
2
F
H
6
6
L
3
2
4
1
D 4
5
3
G
3
K
требуется найти наикратчайший маршрут между начальным пунктом A и
конечным пунктом L.
23
Решение задачи методом динамического программирования (два этапа).
1. Двигаясь от конечного пункта L к начальному пункту A, помещаем в
каждую вершину графа наикратчайшее расстояние от неё до конечной
вершины L и отмечаем на карте соответствующую дорогу:
E
6
H
6
0 L
1)
расстояние от
конечного пункта до
него же равна 0.
2
6
2)
0 L
4
K
3)
F
7
4)
3
4
K
B
7
1
4
6
1
D 4
8
5
6
3
3
E
6
C 3
4
9
2
H
6
4
G
7
B
7
1
4
F
7
5)
A 10
3
C
9
2
G
7
D
8
Обратите внимание на то, что для нахождения наикратчайшего расстояния от
очередного пункта до конечного достаточно среди всех соседних пунктов (в
направлении конечного) найти такой, что бы сумма расстояний от
очередного пункта до соседнего и от соседнего до конечного (она отмечается
в вершине) была наименьшей.
24
2. Двигаясь от начального пункта A до конечного L по отмеченным дорогам,
B
7
4
A 10
3
2
E
6
1
1
2
4
6
C 3
4
9
2
1
D 4
8
5
F
7
H
6
6
6
3
3
G
7
0 L
3
4
K
4
находим наикратчайший маршрут ADFKL, длина которого равна 10.
Пример 2. Для производства некоторой продукции предприятие закупило
новое оборудование. Зависимости производительности оборудования и
затрат на его содержание и ремонт приведены в таблице:
0
Годовой выпуск продукции
(тыс. руб)
Затраты на содержание и
ремонт оборудования (тыс. руб)
Время эксплуатации
оборудования (лет)
1
2
3
4
5
80
75
65
60
60
55
20
25
30
35
45
55
Таблица 1.
Зная, что затраты на покупку нового оборудования составляют 40 тыс.
рублей, а заменяемое оборудование списывается, составить план замены
оборудования в течение 5 лет, при котором общая прибыль за данный период
времени максимальна.
Решение. Вычитая из стоимости готовой продукции затраты на содержание и
ремонт оборудования, получим зависимость прибыли предприятия от
времени эксплуатации оборудования:
Время эксплуатации
оборудования (лет)
0
1
2
3
4
5
Прибыль (тыс. руб)
20 50 35 20 15 0
Таблица 2.
Примечание. Закупив в начале года новое оборудование, предприятие в этот
год получает прибыль 80 – 40 – 20 = 20 (тыс. руб.).
В конце каждого года у предприятия есть выбор: оставить прежнее
оборудование либо приобрести новое и получить прибыль согласно таблицы
2.
25
Отмечая вершинами графа концы финансовых лет, а весами рёбер прибыль
от эксплуатации оборудования, получим:
II
I
III
V
IV
20
15
20
35
20
50
50
50
35
35
20
20
50
35
20
50
20
50
20
50
35
20
50
70
105
50
175
20
85
155
70
20
120
50
20
50
35
85
50
что следует понимать следующим образом:
 в течение первого года (I) предприятие может получить прибыль только
20 тыс. руб.;
 в течение второго года (II) предприятие может получить прибыль 50 тыс.
руб., если продолжит второй год эксплуатировать прежнее оборудование,
либо 20 тыс. руб., если приобретёт новое;
 в течение третьего года (III) предприятие может получить прибыль 35 тыс.
руб., если продолжит третий год эксплуатировать прежнее оборудование,
либо 20 тыс. руб., если приобретёт новое, либо 50 тыс. руб., если второй год
продолжит эксплуатировать оборудование, купленное во втором году, либо
20 тыс. руб., если в третий год купит новое оборудование.
Аналогично, понимаются веса рёбер в столбцах IV и V.
Примечание. В столбце V вместо двух рёбер из каждой вершины изображены
по одной, которые соответствуют максимальным прибылям предприятия за
пятый год. Например, эксплуатируя оборудование пять лет, предприятие
получит прибыль 0 тыс. руб., что меньше прибыли 20 тыс. руб., если
предприятие купит новое оборудование.
Двигаясь справа налево, пометим вершины максимальными прибылями
предприятия за период, начиная от текущего года до пятого, а также отметим
галочками соответствующие рёбра.
Таким образом, максимальная прибыль предприятия составит 175 тыс. руб.
Двигаясь справа налево по отмеченным рёбрам, определим, что
максимальная прибыль будет получена, если предприятие сменит
оборудование после двух лет его эксплуатации.
26
Лабораторная работа № 4
Задание. Методом динамического программирования решить следующие
задачи.
1. Внести самостоятельно изменения в дорожную карту (изменить
количество пунктов, их соединения дорогами и расстояния между пунктами)
из примера 1 и найти наикратчайший маршрут от начального пункта до
конечного.
2. Внести самостоятельно изменения в таблице 1 из примера 2 и найти
максимальную прибыль предприятия за 4 года.
3. Имеется некоторый механизм, который за один раз может переместить
груз либо на 1 м вверх, либо на 1 м вправо. Зависимость расходов
перемещения груза от высоты и расстояния от исходного положения A
приведена в таблице:
17
14
8
9
9
14
7
8
8
10
8
10
11
12
11
10
10
11
7
12
10
10
8
8
10
11
9
11
9
9
11
8
10
10
10
9
8
9
8
12
9
13
9
B
12
10
7
13
11
11
12
8
12
10
10
13
6
7
13
14
13
A
Например, если груз находится в точке A, то стоимость его перемещения на 1
м вверх составляет 11 (у.е.), а на 1 м вправо – 12 (у.е.).
Определить стратегию перемещения груза из пункта A в пункт B с
наименьшими расходами.
4. Внести самостоятельно изменения в приведённую выше таблицу и найти
стратегию перемещения груза из A в B с максимальными расходами.
3. Сетевое планирование
Методы сетевого планирования используются для
планирования сложных, комплексных работ таких как:
рационального
27
 строительство больших промышленных объектов (заводы, ГЭС, АЭС и
т.п.);
 перевооружение армии или отдельных видов вооружённых сил;
 развёртывание системы масштабных медицинских или профилактических
мероприятий.
Характерной особенностью таких сложных работ является то, что они
состоят из ряда отдельных взаимозависимых работ. Эта взаимозависимость
выражается в том, что некоторые работы не могут быть начаты до тех пор,
пока не будут завершены определённые другие работы. Например, нельзя
возводить стены здания, если не готов фундамент.
Планирование комплекса работ производится с учётом следующих
элементов:
 времени, необходимого на выполнение каждой работы и всего комплекса
в целом;
 стоимости выполнения каждой работы и всего комплекса работ;
 наличия людских, энергетических и сырьевых ресурсов.
Рациональное планирование комплекса работ требует, в частности ответов на
следующие вопросы:
 как распределить имеющие материальные средства и трудовые ресурсы
между работами комплекса?
 когда начинать и заканчивать выполнение отдельных работ?
 какие препятствия могут возникнуть к своевременному завершению работ
и как их устранить?
3.1. Этапы сетевого планирования
1. Создание структурно-временной таблицы:
создание списка всех работ комплекса с указанием времени их
выполнения и взаимной обусловленности, то есть указание окончание
каких работ требуется для начала выполнения других работ.
2. Упорядочение структурно-временной таблицы:
перенумерация всех работ таким образом, чтобы любая работа могла
быть выполнена только после работ с меньшими номерами. Для этой
перенумерации каждой работе присваивается ранг:
работа называется работой первого ранга, если для её начала не
требуется выполнения никаких других работ;
работа называется работой ранга k, если для её начала требуется
выполнение работ ранга не выше k-1.
Нумерация работ одного ранга произвольная.
3. Создание сетевого графа:
создание ориентированного графа, вершины которого помечаются
завершёнными работами, а дуги – работами.
4. Создание временнόго сетевого графа:
28
создание сетевого графа, начала дуг которого соответствуют времени
начала работ, а концы – их завершению.
5. Анализ временнόго сетевого графа:
 определение минимального времени завершения всех работ;
 определение критических работ, то есть работ, из времени
выполнения которых складывается минимальное время выполнения
комплекса всех работ;
 определение резервов времени выполнения некритических работ (для
того, чтобы отодвинуть время начала некритической работы, либо
увеличить срок её выполнения, передав часть ресурсов на выполнение
критических работ, если это возможно).
6. Оптимизация плана комплексных работ:
ответ на вопрос: можно ли привлечь и в каком объёме дополнительные
ресурсы для сокращения времени выполнения критических работ?
3.2. Пример сетевого планирования
Предположим, что комплекс состоит из 10 работ и что структурно-временная
таблица создана:
Новая
нумерация
b1
Время
выполнения
Можно начать
после работы
10
—
b1
10
—
a2
5
a1 , a 3
2
b5
b2
15
—
a3
15
—
1
b2
b3
19
—
a4
18
a1 , a2 , a3
3
b6
b4
18
a5
19
—
1
b3
b5
5
—
b1, b2
a6
18
—
1
b4
b6
18
b1, b2, b5
a7
8
a1, a4, a10
6
b10
b7
25
b1, b5
a8
25
a1 , a 2
3
b7
b8
30
b2, b3, b6
a9
30
a3 , a4 , a5
4
b8
b9
8
b8
a10
8
a9
5
b9
b10
8
b1, b6, b9
Работа
a1
Ранг
работы
1
Работа
Можно начать
после работы
2. Упорядоченная
структурно-временная
таблица
Время
выполнения
1. Структурновременная таблица
29
3. Сетевой граф.
B7
b7
B1
b1
b2
b5
B5
b6
B2
B6
b3
B0
b8
B3
b4
B4
B8
b9
B9
b10
B10
Примечание. Сплошная стрелка означает выполнение работы, а пунктирная –
ожидание завершения работ, например, стрелки из вершин B1 и B5 можно
прочитать так: после завершения работ b1 и b5 можно начинать работу b7.
4. Временнόй сетевой граф.
b7
b5
b1
b8
b6
b2
10
15
b10
B10
t
b1
18 19
B0
b9
20
38
45
68
78
86
b3
b4
5. Анализ временнόго сетевого графа.
Минимальное время выполнения комплекса: 86.
Критические работы: b2 – b5 – b6 – b8 – b9 – b10.
Резервы времени с началом выполнения некритических работ:
некритическая работа
b1
b3
b4
b7
задержка с началом выполнения
 5 = 15 – 10,
 66 = 86 – 20,
 68 = 86 – 18,
61 = 86 – 25.
30
4. Потоки в сетях
В этом разделе рассматриваются задача максимизации потока некоторого
продукта по сети. Подобного рода задачи возникают при организации
перекачки нефти или газа по трубопроводам, железнодорожного или
автомобильного движения, передачи информации по сетям и т.д.
Приведём необходимые определения, формализующие соответствующие
предметные области.
Сетью называется орграф без циклов с помеченными вершинами и дугами.
Числа, которыми помечаются дуги сети, называются пропускными
способностями дуг.
Примеры вершин сети: перекрёстки дорог,
железнодорожные узлы, аэропорты, склады и т.д.
телефонные
узлы,
Примеры дуг сети: дороги, трубы, телефонные и железнодорожные линии
и т.д.
Сеть, у которой существует ровно один исток3 и один сток4, называется
транспортной сетью.
Пример транспортной сети:
2
1
4
5
3
6
1
2
3
8
5
Вершина 1 является истоком,
а вершина 6 — стоком.
1
Потоком в транспортной сети называется неотрицательная функция,
определённая на множестве дуг сети, удовлетворяющая двум условиям:
1) величина потока по каждой дуге не превосходит её пропускной
способности;
2) сумма потоков, входящих в каждую вершину сети, за исключением истока
и стока, равна сумме потоков, выходящих из вершины.
Величина потока есть сумма потоков, выходящих из истока, или сумма
потоков, входящих в сток сети.
3
4
Истоком орграфа называется вершина, в которую не входит ни одна дуга.
Стоком орграфа называется вершина, из которой не выходит ни одна дуга.
31
Пример потока в транспортной сети:
3(3)
A
B
Без скобок указаны пропускные
способности дуг,
в скобках — потоки на дугах,
A — исток, D — сток сети,
величина потока = 3 + 2 = 5.
8(3)
2(0)
9(2)
D
2(2)
C
Для любой транспортной сети величина потока имеет максимальное
значение, которое определяется теоремой Форда – Фалкерсона, которая
утверждает, что величина максимального потока в сети равна величине
минимального разреза, где
разрезом транспортной сети называется такое множество дуг, удаление
которых отделяет исток от стока.
минимальным разрезом транспортной сети называется разрез с
минимальной пропускной способностью.
Пример. Транспортная сеть
B
7(5)
A
5(5)
C
4(4)
имеет два разреза  A, B  ,  A, C  и  A, C  ,  B, C  . Пропускная
способность первого разреза равна 11 (7+4), а второго – 9 (4+5), поэтому
максимальный поток в этой транспортной сети равен 9 = min(11, 9). Этот
максимальный поток указан в круглых скобках.
4.1. Алгоритм построения максимального потока в транспортной сети
Цепью, соединяющей исток A0 со стоком An, (или просто цепью) в
транспортной сети называется последовательность дуг A0A1, …, An-1 An, в
которой вершина Ai является началом i-ой дуги, а вершина Ai+1 – её концом
(или, наоборот, Ai является концом i-ой дуги, а вершина Ai+1 – её началом).
Например, в следующей сети с заданным в скобках потоком
3(3)
A
B
8(3)
2(0)
9(2)
C
D
2(2)
цепями являются последовательности AB, BC, CD и AC, CB, BD, причём в
первой цепи направление дуги BC совпадает с направлением потока, а во
второй цепи направление дуги CB противоположно направлению потока.
Определение. Дуга цепи называется допустимой дугой, если:
32
1) направление дуги совпадает с направлением потока и поток по этой дуге
меньше её пропускной способности;
2) направление дуги противоположно направлению потока и поток по этой
дуге больше нуля.
Цепь, соединяющая исток сети со стоком, называется увеличивающей, если
все её дуги являются допустимыми.
Алгоритм построения максимального потока в сети
1. Если поток в сети не задан,
то считать поток нулевым.
2. Пока в сети есть увеличивающие цепи повторять:

взять любую увеличивающую цепь,

вычислить наименьшую разность  между пропускными
способностями дуг этой цепи и потоками по этим дугам,

потоки по дугам, направление которых совпадает с направлением
потока, увеличить на ,

потоки по дугам, направление которых противоположно
направлению потока, уменьшить на ,
3. Если в сети нет увеличивающих цепей,
то максимальный поток построен,
Пример 1 (Поток в сети не задан). Построить максимальный поток для
заданной транспортной цепи.
Данная сеть:
B
6
Сеть с нулевым потоком:
D
10
9
3
A
4
C
4
3(0)
10(0)
A
4(0)
8(0)
7
E
D
9(0)
F
8
6(0)
B
C
7(0)
E
4(0)
F
Решение.
1. Поток в сети не задан, считаем его нулевым.
2. Пока в сети есть увеличивающие цепи, повторяем:
Увеличивающая цепь: AB, BD, DF;
направление дуг совпадает с
направлением потока,
 = min(9 – 0, 6 – 0, 10 – 0) = 6.
B
6(0)
D
9(0)
3(0)
A
4(0)
8(0)
C
4(0)
10(0)
E
F
7(0)
Новые потоки по дугам цепи:
AB: 0+6=6, BD: 0+6 = 6,
DF: 0+6=6:
B
6(6)
D
9(6)
3(0)
A
4(0)
8(0)
C
4(0)
10(6)
E
F
7(0)
33
Увеличивающая цепь: AB, BE, EF;
направление дуг совпадает с
направлением потока,
 = min(9 – 6, 3 – 0, 7 – 0) = 3.
B
6(6)
D
9(6)
3(0)
A
4(0)
B
10(6)
4(0)
8(0)
C
Новые потоки по дугам цепи:
AB: 6 + 3 = 9, BE: 0 + 3 = 3,
EF: 0 + 3 = 3:
F
3(3)
A
C
6(6)
D
9(9)
3(3)
A
8(0)
C
4(0)
E
E
F
7(3)
Новые потоки по дугам цепи:
AC: 0 + 4 = 4, CE: 0 + 4 = 4,
ED: 0 + 4 = 4, DF: 6 +4 = 10:
B
10(6)
4(0)
4(0)
10(6)
4(0)
8(0)
Увеличивающая цепь: AC, CE, ED, DF;
направление дуг совпадает с направлением
потока,
 = min(8 – 0, 4 – 0, 4 – 0, 10 – 6) = 4.
B
D
9(9)
7(0)
E
6(6)
6(6)
D
9(9)
F
3(3)
A
4(4)
8(4)
7(3)
C
4(4)
10(10)
E
F
7(3)
Увеличивающих цепей в сети нет, поэтому максимальный поток построен и
он равен 13 = 9 + 4 = 10 + 3.
Пример 2 (Поток в сети задан). Построить максимальный поток для
заданной транспортной цепи.
Сеть с заданным потоком:
B
6(3)
D
9(6)
A
3(3)
4(2)
8(3)
C
4(3)
10(5)
E
F
7(4)
Решение.
1. Поток в сети задан.
2. Пока в сети есть увеличивающие цепи, повторяем:
Увеличивающая цепь: AB, BD, DE, EF;
направление дуги DE противоположно
потоку, направление остальных дуг
совпадает с направлением потока,
 = min(9 – 6, 6 – 3, 4 – 2, 7 – 4) = 2.
Новые потоки по дугам цепи:
AB: 6 + 2 = 8, BD: 3 + 2 = 5,
DE: 2 – 2 = 0, EF: 4 + 2 = 6:
34
B
6(3)
D
10(5)
9(6)
A
3(3)
4(3)
A
6(5)
D
9(8)
3(3)
A
10(5)
4(0)
8(3)
C
4(3)
F
6(6)
D
9(9)
3(3)
A
8(3)
C
4(3)
E
B
F
7(6)
4(3)
7(6)
E
6(6)
D
9(9)
3(3)
A
C
10(6)
4(0)
F
4(0)
10(6)
4(0)
8(3)
Увеличивающая цепь: AC, CE, EF;
направление дуг совпадает с направлением
потока,
 = min(8 – 3, 4 – 3, 7 – 6) = 1.
B
10(5)
Новые потоки по дугам цепи:
AB: 8 + 1 = 9, BD: 5 + 1 = 6,
DF: 5 + 1 = 6:
7(6)
E
3(3)
C
Увеличивающая цепь: AB, BD, DF;
направление дуг совпадает с направлением
потока,
 = min(9 – 8, 6 – 5, 10 – 5) = 1.
B
D
8(3)
7(4)
E
6(5)
9(8)
F
4(2)
8(3)
C
B
4(3)
F
7(6)
E
Новые потоки по дугам цепи:
AC: 3+ 1 = 4, CE 3+ 1 = 4,
EF: 6 + 1 = 7:
B
6(6)
D
9(9)
3(3)
A
4(0)
8(4)
C
4(4)
10(6)
E
F
7(7)
Увеличивающих цепей в сети нет, поэтому максимальный поток построен и
он равен 13 = 9 + 4 = 10 + 3.
Примечание. Обратите внимание на то, что сети в примерах 1 и 2 и
максимальные потоки по ним совпадают, а потоки по некоторым дугам
различаются, например, в примере 1 поток по дуге DF равен 10, а в примере 2
по этой же дуге равен 6.
4.2. Построение максимального потока в сетях с неориентированными
дугами
Для построения максимального в сетях с неориентированными дугами
поступают следующим образом:
 каждую неориентированную дугу (ребро) сети, не выходящую из
источника и не входящую в сток, заменяют парой противоположно
направленных дуг с той же пропускной способностью, что и заменяемое
ребро;
35

каждую неориентированную дугу с началом в источнике заменяют на
ориентированную, выходящую из источника;
 каждую неориентированную дугу с концом в стоке заменяют на
ориентированную, входящую в сток;
 применяют алгоритм построения максимального потока в сетях,
изложенный в разделе 4.1.
Пример сети с неориентированными дугами (BD и EF) и соответствующей ей
сети с ориентированными дугами:
6
B
6
D
9
3
A
E
4
D
9
F
3
7
8
7
10
6
A
F
8
C
B
10
C
4
E
Лабораторная работа № 5
Задание.
1. Самостоятельно задать пропускные способности дуг и построить
максимальный поток в транспортной сети.
2. Найти минимальный разрез сети и проверить справедливость теоремы
Форда – Фалкерсона.
Вариант 1.
Вариант 2.
B
D
A
B
F
C
E
B
D
Вариант 3.
D
A
F
C
E
B
D
Вариант 4.
A
F
C
E
B
D
Вариант 5.
A
F
C
E
B
D
Вариант 6.
A
F
C
E
A
F
C
E
36
Вариант 7.
Вариант 8.
B
D
A
B
F
C
D
A
E
F
C
E
Вариант 10.
Вариант 9.
B
B
D
A
F
C
A
F
C
E
Вариант 11.
D
E
Вариант 12.
B
D
A
B
F
C
A
E
F
C
Вариант 13.
D
E
Вариант 14.
B
D
A
B
F
C
A
E
F
C
Вариант 15.
D
E
Вариант 16.
B
D
A
B
F
C
D
A
E
F
C
E
5. Принятие решений в условиях неопределённости
Во многих сферах человеческой деятельности приходится принимать
решения в ситуациях, в которых сталкиваются интересы двух или более
враждующих (противоборствующих, конкурирующих, …) сторон, которые
преследуют различные цели, причём результат любого действия каждой из
сторон зависит от того, какое действие предпримет противник. Такие
ситуации называются конфликтными.
Примеры конфликтных ситуаций:

любая ситуация в ходе военных действий;

конкурентная борьба в экономике;

судопроизводство (обвинение и защита);
37

спортивные соревнования.
Анализом конфликтных ситуаций занимается раздел математики под
названием теория игр.
Задача теории игр заключается в выработке рекомендаций по рациональному
образу действий участников конфликта.
5.1. Основные понятия теории игр












Игра – упрощённая модель конфликтной ситуации.
Игрок – сторона, участвующая в конфликте.
Парная игра – игра, в которой сталкиваются интересы двух сторон.
Игра с нулевой суммой – парная игра, в которой выигрыш одной стороны
равен проигрышу другой.
Ход – выбор допустимого действия и его осуществление.
Личный ход – сознательный выбор игроком допустимого действия и его
осуществление.
Случайный ход – выбор допустимого действия с помощью механизма
случайного выбора (например, подбрасывания монеты) и его
осуществление.
Правила игры – совокупность условий, регламентирующая:
 возможные действия игроков,
 объём сведений каждой стороны о поведении другой,
 результат, к которому приводит каждая совокупность ходов.
Стратегия – совокупность правил, определяющая выбор варианта
действий при каждом ходе игрока в зависимости от ситуации,
сложившийся в игре.
Оптимальная стратегия – стратегия, которая при многократном
повторении игры обеспечивает игроку максимальный средний выигрыш5.
Конечная игра – у каждого игрока имеется конечное количество
стратегий.
m  n игра – конечная парная игра, в которой у одного игрока имеется m
стратегий, а у второго n стратегий.
Основное предположение теории игр. Противник так же как
разумен, как и мы сами, и делает всё для того, чтобы помешать
нам добиться максимального среднего выигрыша.
Средний выигрыш равен частному от деления общего выигрыша на
количество повторений игры.
5
38
5.2. Платёжная матрица игры
Платёжной матрицей m  n игры с нулевой суммой (или, просто, матрицей
игры) называется матрица
B
A
A1
A1
…
Am
B1
B2
…
Bn
a11
a21
…
am1
a12
a22
…
am2
…
…
…
…
a1n
a2n
…
amn
в которой
A1, …, Am – все стратегии игрока A,
B1, …, Bm – все стратегии игрока B,
aij – выигрыш (положительный или отрицательный) игрока A при выборе
им стратегии Ai и стратегии Bj игроком B.
Пример. Игра "поиск". Игрок A прячется в одном из двух убежищ, а игрок B
его ищет. Правила игры: если игрок B находит A, то A платит ему 1 рубль, в
противном случае игрок B платит A 1 рубль.
Стратегии игроков:
игрок A: A1 – спрятаться в убежище № 1,
A2 – спрятаться в убежище № 2;
игрок B: B1 – искать в убежище № 1,
B2 – искать в убежище № 2;
Матрица игры "поиск":
B
A
A1
A1
B1
B2
-1
1
1
-1
Некоторые выводы, вытекающие из игры "поиск".
Если игра проводится один раз, то говорить о преимуществе той или иной
стратегии смысла нет.
Если при многократном проведении игры игрок будет придерживаться одной
стратегии или чередования стратегий в определённой последовательности, то
противник догадается об этом и начнёт выигрывать. Поэтому от верного
проигрыша игроков может спасти только случайное чередование стратегий.
Например, игрок перед своим ходом подбрасывает монету и, если выпала
"решка", то игрок выбирает первую стратегию, а если "орёл", то вторую.
39
5.3. Нижняя и верхняя цены игры. Принцип минимакса
Дополним матрицу игры столбцом с минимальными значениями в строках и
строкой с максимальными значениями в столбцах:
B
B1
B2
…
Bn
min в строке
A1
A2
…
Am
a11
a21
…
am1
a12
a22
…
am2
…
…
…
…
a1n
a2n
…
amn
1
2
max в столбце
1
2
A
n
m
  max i
1  i m
  min  j
1 j  n
Величина
  max i  max
1  i m
min aij
1 i  m 1 j  n
называется нижней ценой игры (или максиминным выигрышем, или
максимином).
Стратегия игрока A, соответствующая
максиминной стратегией игрока A.
максимину
,
называется
Если игрок A придерживается своей максиминной стратегии, то ему
гарантирован выигрыш не меньше , то есть  – это тот
гарантированный минимальный выигрыш, который может обеспечить
себе
игрок
A,
придерживаясь
наиболее
осторожной
(перестраховочной) стратегии.
Величина
  min  j  min
1 j  n
max aij
1 j  n 1 i m
называется верхней ценой игры (или минимаксным выигрышем, или
минимаксом).
Стратегия игрока B, соответствующая
минимаксной стратегией игрока B.
минимаксу
,
называется
Если игрок B придерживается своей минимаксной стратегии, то ему
гарантирован проигрыш не больше .
Принцип минимакса. Если оба игрока разумны, то игрок A будет выбирать
свою максиминную стратегию, а игрок B – минимаксную.
40
Пример. Расширенная матрица игры "поиск" имеет вид:
B
B1
B2
min в строке
A1
A2
-1
1
1
-1
-1
-1
max в столбце
1
1
A
-1
1
нижняя цена игры  = -1, верхняя цены игры  = 1.
Таким образом, если игрок будет делать личные ходы, а его противник об
этом узнает, то игрок A получит минимальный выигрыш -1, то есть он будет
в проигрыше, а игрок B получит минимальный проигрыш 1, то есть он будет
выигрывать.
Аналогичное утверждение справедливо и для игрока B.
Определение.
Игра называется игрой с седловой точкой, если нижняя и верхняя цена
игры совпадают.
Общее значение нижней и верхней цены игры  =  =  называется
чистой ценой игры.
Седловой точке соответствует пара минимаксных стратегий, которые
называются оптимальными, а их совокупность называется решением
игры.
Примечание. Седловой точкой матрицы называется такой её элемент,
который является минимальным в своей строке и максимальным в своём
столбце.
Свойство решения игры: если один из игроков придерживается своей
оптимальной стратегии, то для другого не может быть выгодным отклоняться
от своей оптимальной стратегии (это отклонение может лишь ухудшить его
положение).
Чистая цена игры в игре с седловой точкой является тем значением
выигрыша, которое в игре разумных противников игрок A не может
увеличить, а игрок B уменьшить.
Пример 2. Игра "защита от воздушного налёта". Сторона A обороняет от
воздушного налёта два объекта, имея два орудия. Каждое орудие может
поразить только тот самолёт, который находится в его зоне действия, но для
этого оно должно до входа самолёта в зону следить за ним. Обстрелянная
цель поражается. Сторона B атакует эти объекты двумя самолётами, которые
могут быть направлены к любому объекту. Каждый самолёт может
маневрировать, например, показав, что он направляется к объекту № 2,
самолёт № 2 перед входом в зону действия орудия № 2, изменяет маршрут и
атакует объект № 1.
41
Самолёт № 1
Самолёт № 2
Зона действия
орудия № 1
Зона действия
орудия № 2
Орудие № 1
Орудие № 2
Целью стороны A является защита, а стороны B поражение максимального
количества объектов.
Стратегии сторон:
Сторона A
Каждое орудие следит за целью,
направляющейся в его зону.
Каждое орудие следит за целью,
направляющейся к другому объекту.
Оба орудия следят за самолётом № 1.
A1
A2
A3
Оба орудия следят за самолётом № 2.
A4
Сторона B
B1
B2
Оба самолёта не меняют направление.
Оба самолёта применяют обманный манёвр.
Первый самолёт совершает манёвр,
а второй – нет.
Второй самолёт совершает манёвр,
а первый – нет.
B3
B4
Матрица игры:
B1
B2
B3
B4
A1
2
0
1
1
0
A2
0
2
1
1
0
A3
1
1
1
1
1
A4
1
1
1
1
1
B
A
min в строке
42
max в столбце
2
2
1
1
=1
=1
в этой матрице числа означают количества защищённых объектов стороной
A или количества потерянных самолётов стороной B.
Так как нижняя  и верхняя  цены игры совпадают, то игра имеет седловую
точку (на самом деле седловых точек несколько), поэтому игра решается в
чистых стратегиях с чистой ценой игры  = 1.
Оптимальные стратегии сторон: сторона A обоими орудиями следит за
одним самолётом (любым), сторона B обоими самолётами атакует один
объект (любой).
Результат: один объект будет уничтожен и потерян один самолёт.
5.4. Решение игр в смешанных стратегиях
Если парная игра не имеет седловой точки, то она не имеет и решения, то
есть, делая личные ходы (или, говоря иначе, в чистых стратегиях), игрок A
гарантирует себе выигрыш, равный нижней цене игры, которая, вообще
говоря, меньше верхней цены игры.
Если же игрок A будет чередовать свои стратегии случайным образом или,
говоря иначе, придерживаться смешанной стратегии, то он получит
оптимальную стратегию, которая в некоторых случаях будет гарантировать
ему бόльший выигрыш.
Определение. Пусть игрок A имеет m стратегий, а игрок B – n стратегий.
Смешанной стратегией игрока A называется набор вероятностей
SA = (p1, p2, …, pm), где p1 + p2 +… + pm = 1, с которыми он чередует свои
стратегии.
Аналогично определяется смешанная стратегия игрока B как набор
SB = (q1, q2, …, qm), где q1 + q2 +… + qn = 1.
Имеет место следующая теорема.
Теорема (основная теорема теории игр). Любая m  n игра имеет решение в
смешанных стратегиях и её решение может получено методами линейного
программирования.
Доказательство. Пусть m  n игра имеет матрицу
 a11 a12

 a21 a22


 am1 am 2


a2n 


amn 
a1n
43
требуется найти решение игры, то есть две оптимальные смешанные
стратегии игроков SA = (p1, p2, …, pm) и SB = (q1, q2, …, qm), где
p1 + p2 +… + pm = 1 и q1 + q2 +… + qn = 1.
Во-первых, можно считать, что цена игры  (пока неизвестная) больше нуля.
Действительно, если   0, то это означает, что некоторые элементы
матрицы игры не положительные. Тогда найдём число M > 0, которое
прибавим ко всем элементам матрицы игры и получим новую матрицу с
положительными элементами. Это сложение сделает новую цену игры  +
M положительной, но не изменит решения игры.
Во-вторых, предположим, что игрок A применяет свою оптимальную
смешанную стратегию S *A , а игрок B свою чистую стратегию Bj. В этом
случае средний выигрыш игрока A будет равен
 j  p1a1 j  p2a2 j 
 pmamj
 j  1,
, n .
Стратегия S *A является оптимальной, то есть при любой стратегии игрока B
средний выигрыш игрока A будет больше или равен цены игры , таким
образом, получаем систему ограничений
 p1a11  p2a21 

 p1a12  p2a22 


 p1a1n  p2a2n 
 pm am1  ,
 pm am 2  ,
 pm amn  .
Разделим обе части всех неравенств на положительное число  и обозначим
p
, xm  m ,

p
p
x1  1 , x2  2 ,


тогда система ограничений примет вид
a11x1  a21x2 

a12 x1  a22 x2 

a x  a x 
 1n 1 2n 2
 x1  0, x2  0,
 am1xm  1,
 am 2 xm  1,
 amn xm  1,
, xm  0.
Далее, так как p1 + p2 +… + pm = 1, то
x1  x2 
1
 xm  .

Игрок A стремится максимизировать свой средний выигрыш , то есть
1
минимизировать отношение .

44
Таким образом, получаем задачу линейного программирования:
f  x1  x2   xm  min,
a11x1  a21x2   am1xm  1,
a x  a x   a x  1,
m2 m
 12 1 22 2

a x  a x   a x  1,
mn m
 1n 1 2n 2
 x1  0, x2  0, , xm  0.
Заметим, что эта задача имеет решение, найдя которое
найдём новую цену игры  
1
x10  x20 
0
 xm
 x10 , x20 ,

0
, xm
,
, вычтя из которой число M,
получим искомую цену игры.
*
Аналогичные рассуждения дают оптимальную стратегию S B
игрока B:
обозначим
q
y1  1 ,

q
y2  2 ,

,
тогда оптимальная стратегия
q
yn  n ,

 y10 , y20 ,
, yn0

игрока B есть решение
следующей задачи линейного программирования:
f  y1  y2   yn  max,
a11 y1  a12 y2   a1n yn  1,
a y  a y   a y  1,
2n m
 21 1 22 2

a y  a y   a y  1,
mn n
 m1 1 m 2 2
 y1  0, y2  0, , yn  0,
причём y10  y20 
1
 yn0  .

Применим основную теорему теории игр для отыскания оптимальных
стратегий игроков в игре "поиск".
 1 1 
1. Матрица игры "поиск" 
 содержит отрицательные элементы,
 1  1
поэтому, прибавляя к её элементам число M= 1, получим
a11  0, a12  2, a21  2, a22  0.
45
2. Для нахождения оптимальной стратегии S *A игрока A решаем следующую
задачу линейного программирования:
f  x1  x2  min,
0 x1  2 x2  1,

 2 x1  0 x2  1,
 x  0, x  0.
2
 1
Так как последняя система ограничений эквивалентна системе
1

x

,
1

2

x  1 ,
 2 2
1
то минимум функции f  x1  x2 равен 1 и достигается при x1  x2  .
2
1
Так как 1  x1  x2  , то  = 1. Вычитая из  число M = 1, получим, что цена

игры
равна
0
=
1
–
1,
а
оптимальная
стратегия
1 1
S *A   p1, p2    x1, x2    ,  .
 2 2
1
, игрок A гарантирует
2
себе средний выигрыш, равный 0, что больше нижней цены игры -1 при
чистых стратегиях.
Итак, чередуя свои обе стратегии с вероятностями
Аналогичные рассуждения приводят к тому, что игрок B, чередуя свои
1
стратегии с вероятностями , получает средний выигрыш, равный 0.
2
Лабораторная работа № 6
Задание. Найти решение игры в смешанных стратегиях. Сравнить найденное
решение с нижней и верхней ценой игры.
1. Два игрока одновременно показывают один, два или три пальца. Если
общее количество чётное, то второй игрок платит первому это количество в
рублях, а если нечётное, то первый платит второму это количество в рублях.
2. У стороны A имеется три типа вооружения, у стороны B – три типа
самолётов. Первый тип вооружения поражает типы самолётов
соответственно с вероятностями 0,5, 0,6 и 0,8, второй тип – с вероятностями
0,9, 0,7 и 0,8, третий тип – с вероятностями 0,7, 0,5 и 0,6. Сторона A может
выбрать только один тип вооружения, а сторона B – один тип самолётов.
Какие типы вооружения и самолёта следует выбрать сторонам?
46
3. Сторона A посылает в район противника B два бомбардировщика, один
летит впереди другого. Один из бомбардировщиков (неизвестно какой) несёт
бомбу, второй его прикрывает. В районе противника самолёты атакуются
одним истребителем. Если истребитель атакует задний бомбардировщик, то
его обстреливают пушки только этого бомбардировщика, а если истребитель
атакует передний бомбардировщик, то его обстреливают пушки обоих
бомбардировщиков. Один бомбардировщик поражает истребитель с
вероятностью 0,3, а оба – с вероятностью 0,51. Если истребитель не сбит, то
он сбивает бомбардировщик с вероятностью 0,8. Цель стороны A
уничтожить объект, а стороны B защитить объект.
4. Сторона A двумя самолётами атакует объект, который сторона B защищает
тремя орудиями. Самолёты могут выбирать для атаки только одно из трёх
направлений, не меняя его в дальнейшем. Любое орудие может быть
размещено на любом из трёх направлений. Каждое орудие простреливает
только область пространства, относящуюся к направлению, на которое оно
установлено. Каждое орудие может обстрелять только один самолёт,
который достоверно сбивается. Прорвавшийся к объекту любой из самолётов
уничтожает его. Цель стороны A уничтожить объект, а стороны B защитить
объект.
5. Вариант игры № 4. Условия игры те же, что и в игре № 4, но для стороны
A возможны четыре направления подхода, а у сторона B обладает четырьмя
орудиями.
6. Сторона A тремя батальонами атакует объект, который сторона B
защищает четырьмя батальонами. Каждый из наступающих батальонов
может быть направлен к объекту по любой из двух дорог, сторона B может
разместить свои батальоны на любой из дорог. Если на дороге атакующих
батальонов больше, то они прорывают оборону и уничтожают объект, если
обороняющихся батальонов больше, то они отбивают нападение, если же на
дороге встречаются одинаковое количество батальонов, то нападающие с
вероятностью 0,4 прорывают оборону и уничтожают объект, а с
вероятностью 0,6 атака отбивается. Требуется дать рекомендации сторонам
по количеству батальонов, которое следует направить на каждую из дорог.
7. Сторона A располагает тремя видами вооружения A1, A2 и A3, а сторона
B – тремя видами помех B1, B2 и B3. Вероятность решения боевой задачи
стороной A при различных видах вооружения и помех задаётся матрицей
B
A
A1
A2
A3
B1
B2
B2
0,8
0,4
0,1
0,2 0,4
0,5 0,6
0,7 0,3
Сторона A стремится решить боевую задачу, сторона B воспрепятствовать
этому.
47
8. Двое игроков в тайне друг от друга пишут на листке бумаги натуральное
число от 1 до 5, после чего листки открываются. Если написанные числа
оказались равными, то ничью (оба выигрывают по 0 рублей), если числа
отличаются на 1, то тот, у которого число больше, выигрывает 2 рубля, в
остальных случаях выигрывает 1 рубль тот, у кого число меньше.
48
Литература
1. Акулич И.А. Математическое программирование в примерах и задачах. –
М.: Высш. школа, 1993. – 336 с.
2. Вентцель Е.С. Исследование операций. – М.: Советское радио, 1972. –
552 с.
3. Рудикова Л.В. Microsoft Excel для студента. – СПб.: БХВ-Петербург, 2005.
– 368 с.
49
1. Математическое программирование ................................................................. 2
1.1. Линейное программирование ......................................................................... 2
Упражнения ......................................................................................................... 3
1.2. Решение задач линейного программирования в Microsoft Excel ............ 4
Лабораторная работа № 1 ................................................................................... 6
1.3. Геометрическое решение задач линейного программирования ............. 8
1.4. Симплекс-метод решения задач линейного программирования........... 10
1.4.1.
Поиск
опорного
решения
задачи
линейного
программирования ..................................................................................... 10
1.4.2. Поиск оптимального решения ....................................................... 14
Лабораторная работа № 2 ................................................................................. 16
1.5. Нелинейное программирование ................................................................... 18
Решение задач нелинейного программирования в Microsoft Excel ............. 18
Решение задач нелинейного программирования методом Лагранжа .......... 19
Лабораторная работа № 3 ................................................................................. 22
2. Динамическое программирование .................................................................. 23
Лабораторная работа № 4 ................................................................................. 27
3. Сетевое планирование ...................................................................................... 27
3.1. Этапы сетевого планирования .................................................................. 28
3.2. Пример сетевого планирования ................................................................ 29
4. Потоки в сетях ................................................................................................... 31
4.1. Алгоритм построения максимального потока в транспортной сети .... 32
4.2. Построение максимального потока в сетях с неориентированными
дугами ................................................................................................................. 35
Лабораторная работа № 5 ................................................................................. 36
5. Принятие решений в условиях неопределённости ........................................ 37
5.1. Основные понятия теории игр .................................................................. 38
5.2. Платёжная матрица игры .......................................................................... 39
5.3. Нижняя и верхняя цены игры. Принцип минимакса .............................. 40
5.4. Решение игр в смешанных стратегиях ..................................................... 43
Лабораторная работа № 6 ................................................................................. 46
Литература ............................................................................................................. 49
50
Download