Математические методы системного анализа: учебное пособие для вузов

В первых разделах учебного пособия рассмотрены основы теории множеств, элементы математической логики, теория графов. Ос

199 97 2MB

Russian Year 2021

Report DMCA / Copyright

DOWNLOAD FILE

Математические методы системного анализа: учебное пособие для вузов

Table of contents :
ВВЕДЕНИЕ......Page 6
1.1. Основные определения теории множеств......Page 7
1.2. Операции над множествами......Page 8
1.3. Бинарные отношения......Page 10
1.4. Функциональные отношения......Page 13
1.5. Задачи для самостоятельной работы......Page 15
2.2. Логические операции......Page 17
2.3.1. Полные системы......Page 20
2.3.2. Дизъюнктивно и конъюктивно нормальные формы......Page 21
2.4. Задачи для самостоятельной работы......Page 23
3.1. Основные понятия теории графов......Page 25
3.2. Способы задания графов......Page 26
3.3. Операции над графами......Page 28
3.4. Неориентированные графы, маршруты, цепи, циклы......Page 30
3.6. Эйлеров граф......Page 31
4.2. Алгоритм Дейкстры......Page 33
5. МЕТОДЫ ОПТИМИЗАЦИИ......Page 40
5.1. Поиск экстремума в случае функции одной переменной......Page 42
5.1.1а. Метод дихотомии......Page 43
5.1.1б. Метод золотого сечения......Page 46
5.1.1в. Метод Фибоначчи......Page 50
5.1.2. Задачи для самостоятельной работы......Page 51
5.1.3б. Метод Ньютона......Page 52
5.1.3в. Метод секущих......Page 53
5.2. Методы многомерной безусловной оптимизации......Page 54
5.2.1. Метод покоординатного спуска......Page 56
5.3.1. Градиентный метод с переменным шагом......Page 60
5.3.3. Метод наискорейшего спуска......Page 64
5.3.4. Задачи для самостоятельной работы......Page 68
6. ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ......Page 69
6.1. Основные понятия линейного программирования......Page 70
6.2. Геометрический метод решения задач линейного программирования......Page 73
6.2.1. Примеры решения задач линейного программирования геометрическим методом......Page 76
6.2.2. Задачи для самостоятельной работы......Page 78
6.3.1. Приведение задачи линейного программирования к канонической форме......Page 79
6.3.2. Алгоритм симплекс-метода......Page 82
6.3.3. Примеры решения задач линейного программирования симплексным методом......Page 85
6.3.4. Задачи для самостоятельной работы......Page 91
6.3.5. Задачи для индивидуального задания......Page 92
7.1. Геометрический метод решения задач нелинейного программирования......Page 96
7.2. Задачи для самостоятельной работы......Page 98
7.3. Задача условной оптимизации с ограничениями-равенствами (задача Лагранжа)......Page 100
7.3.1. Задачи для самостоятельной работы......Page 102
7.4.1. Алгоритм решения задачи условной оптимизации методом Куна – Таккера......Page 103
7.4.2. Задачи для самостоятельной работы......Page 105
8.1. Метод обратной прогонки......Page 106
8.2. Алгоритм определения оптимальной траектории с помощью МАТLAB......Page 108
8.3. Пример решения задачи методом динамического программирования......Page 110
9.1. Матричные игры......Page 117
9.2. Смешанные стратегии......Page 121
9.2.1. Задачи для самостоятельной работы......Page 125
ЛИТЕРАТУРА......Page 126

Citation preview

А. И. МАТВЕЕВ

МАТЕМАТИЧЕСКИЕ МЕТОДЫ СИСТЕМНОГО АНАЛИЗА Учебное пособие Издание второе, стереотипное

САНКТПЕТЕРБУРГ МОСКВА•КРАСНОДАР 2021

УДК 519.7 ББК 22.18я73 М 33

Матвеев А. И. Математические методы системного анализа : учебное пособие для вузов / А. И. Матвеев. — 2е изд., стер. — СанктПетербург : Лань, 2021. — 128 с. : ил. — Текст : непосредственный. ISBN 9785811466863 В первых разделах учебного пособия рассмотрены основы теории множеств, элементы математической логики, теория графов. Основная часть пособия посвящена наиболее эффективным методам оптимизации, основам линейного и нелинейного программирования, динамическому программированию, сетевым методам, элементам теории игр. Для поис ка экстремумов функции одной переменной предлагается использовать метод дихотомии, золотого сечения, метод Фибоначчи, а также методы более высокого порядка: Ньютона, касательных и секущих. При поиске экстремумов функции многих переменных рассматриваются метод покоор динатного спуска и методы первого порядка: градиентный метод с перемен ным шагом, метод Ньютона и наискорейшего спуска. Изложен алгоритм решения задач линейного программирования симплексметодом, также приводится геометрический метод их решения. Для решения задач нели нейного программирования используются геометрический метод и мето ды Лагранжа и Куна — Таккера. Рассмотрены основы динамического про граммирования, применение метода обратной прогонки для определения оптимальной траектории. В главе, посвященной основам теории игр, рас смотрены матричные игры, игры со смешанными стратегиями. Приводят ся подробные примеры решения вышеизложенных задач, а также задания для самостоятельной работы. Пособие адресовано студентам вузов, обучающимся по направлениям подготовки: «Информатика и вычислительная техника», «Информаци онные системы и технологии», «Автоматизация технологических про цессов и производств», «Мехатроника и робототехника», «Системный анализ и управление» и другим, где предусмотрен курс математических методов системного анализа.

УДК 519.7 ББК 22.18я73 Рецензент Г. В. КУПОВЫХ — доктор физикоматематических наук, зав. кафед рой высшей математики Института компьютерных технологий и ин формационной безопасности Южного федерального университета.

Обложка © Издательство «Лань», 2021 П. И. ПОЛЯКОВА © А. И. Матвеев, 2021 © Издательство «Лань», художественное оформление, 2021

ОГЛАВЛЕНИЕ ВВЕДЕНИЕ ............................................................................................... 6 1. ОСНОВЫ ТЕОРИИ МНОЖЕСТВ ...................................................... 7 1.1. Основные определения теории множеств ..................................... 7 1.2. Операции над множествами ........................................................... 8 1.3. Бинарные отношения .................................................................... 10 1.4. Функциональные отношения ....................................................... 13 1.5. Задачи для самостоятельной работы ........................................... 15 2. ЭЛЕМЕНТЫ МАТЕМАТИЧЕСКОЙ ЛОГИКИ............................... 17 2.1. Введение......................................................................................... 17 2.2. Логические операции .................................................................... 17 2.3. Булева алгебра ............................................................................... 20 2.3.1. Полные системы ...................................................................... 20 2.3.2. Дизъюнктивно и конъюктивно нормальные формы ............ 21 2.4. Задачи для самостоятельной работы ........................................... 23 3. ГРАФЫ ................................................................................................ 25 3.1. Основные понятия теории графов ............................................... 25 3.2. Способы задания графов .............................................................. 26 3.3. Операции над графами ................................................................. 28 3.4. Неориентированные графы, маршруты, цепи, циклы................ 30 3.5. Ориентированные графы .............................................................. 31 3.6. Эйлеров граф ................................................................................. 31 4. СЕТИ .................................................................................................... 33 4.1. Построение сети, выбор кратчайшего пути ................................ 33 4.2. Алгоритм Дейкстры ...................................................................... 33 5. МЕТОДЫ ОПТИМИЗАЦИИ ............................................................. 40 5.1. Поиск экстремума в случае функции одной переменной.......... 42 5.1.1. Методы оптимизации нулевого порядка для функции одной переменной ...................................................... 43 5.1.1а. Метод дихотомии ................................................................ 43 5.1.1б. Метод золотого сечения ..................................................... 46 5.1.1в. Метод Фибоначчи ............................................................... 50 5.1.2. Задачи для самостоятельной работы ..................................... 51 3

5.1.3. Методы более высокого порядка ........................................... 52 5.1.3а. Метод касательных ............................................................. 52 5.1.3б. Метод Ньютона ................................................................... 52 5.1.3в. Метод секущих .................................................................... 53 5.1.4. Задачи для самостоятельной работы ..................................... 54 5.2. Методы многомерной безусловной оптимизации...................... 54 5.2.1. Метод покоординатного спуска ............................................. 56 5.3. Методы первого порядка при поиске экстремума функций многих переменных ............................................................. 60 5.3.1. Градиентный метод с переменным шагом ............................ 60 5.3.2. Метод Ньютона многомерной оптимизации ........................ 64 5.3.3. Метод наискорейшего спуска................................................. 64 5.3.4. Задачи для самостоятельной работы ..................................... 68 6. ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ ........................................... 69 6.1. Основные понятия линейного программирования .................... 70 6.2. Геометрический метод решения задач линейного программирования ............................................................ 73 6.2.1. Примеры решения задач линейного программирования геометрическим методом .................................................................. 76 6.2.2. Задачи для самостоятельной работы ..................................... 78 6.3. Симплекс-метод ............................................................................ 79 6.3.1. Приведение задачи линейного программирования к канонической форме ...................................................................... 79 6.3.2. Алгоритм симплекс-метода .................................................... 82 6.3.3. Примеры решения задач линейного программирования симплексным методом ...................................................................... 85 6.3.4. Задачи для самостоятельной работы ..................................... 91 6.3.5. Задачи для индивидуального задания ................................... 92 7. НЕЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ ...................................... 96 7.1. Геометрический метод решения задач нелинейного программирования ........................................................ 96 7.2. Задачи для самостоятельной работы ........................................... 98 7.3. Задача условной оптимизации с ограничениями-равенствами (задача Лагранжа) .......................... 100 7.3.1. Задачи для самостоятельной работы ................................... 102 4

7.4. Основная задача условной оптимизации. Метод Куна – Таккера........................................................................ 103 7.4.1. Алгоритм решения задачи условной оптимизации методом Куна – Таккера ................................................................. 103 7.4.2. Задачи для самостоятельной работы ................................... 105 8. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ .............................. 106 8.1. Метод обратной прогонки .......................................................... 106 8.2. Алгоритм определения оптимальной траектории с помощью МАТLAB ......................................................................... 108 8.3. Пример решения задачи методом динамического программирования................................................... 110 9. ЭЛЕМЕНТЫ ТЕОРИИ ИГР ............................................................. 117 9.1. Матричные игры.......................................................................... 117 9.1.1. Задачи для самостоятельной работы ................................... 121 9.2. Смешанные стратегии................................................................. 121 9.2.1. Задачи для самостоятельной работы ................................... 125 ЛИТЕРАТУРА....................................................................................... 126

5

ВВЕДЕНИЕ Современное инженерное образование по таким направлениям, как мехатроника и робототехника, управление в технических, экономических и социальных системах, автоматизация технологических процессов в производстве, вычислительная техника, включает в себя изучение основ системного анализа. Математические методы системного анализа охватывают широкий круг вопросов из области прикладной математики. Для изучения профильных дисциплин по перечисленным выше специальностям необходимо знание основ теории множеств, математической логики, теории графов, сетевых методов, владение методами оптимизации, основами линейного и нелинейного программирования, динамическим программированием, элементами теории игр. Каждому в отдельности из перечисленных направлений математики посвящено большое количество книг. Однако учебных пособий, в которых кратко излагаются все основные математические методы, используемые в системном анализе, мало. Потребность в таких учебных пособиях существует, так как студентам тяжело ориентироваться в многочисленной литературе, посвященной отдельным направлениям прикладной математики. Тем более изучению математических методов системного анализа на инженерных специальностях отводится лишь один или два семестра. Несмотря на ограниченный объем пособия, в нем содержатся конкретные примеры решения задач, а также большое количество задач для аудиторной и самостоятельной работы.

6

1. ОСНОВЫ ТЕОРИИ МНОЖЕСТВ 1.1. Основные определения теории множеств Множество – совокупность различимых между собой объектов, объединенных некоторым признаком. Как правило, элементы множества обозначают строчными буквами (a, b, c, …), а сами множества – прописными (A, B, C,…). Обозначим a ∈ A , если элемент a является элементом множества А, и a ∉ A , если не является элементом множества A. Для описания множества используются скобки, в которых перечисляются свойства элементов множества {x| утверждение об x}. Множество B называют подмножеством множества A (обозначают B ⊆ A ), если любой элемент множества B является элементом множества A. Множества A и В равны, если B ⊆ A и A ⊆ B, в противном случае A ≠ B . Если B ⊆ A и A ≠ B, то множество В называется собственным подмножеством множества A и обозначают B ⊂ A . Конечным множеством называется множество с конечным числом элементов, бесконечным − множество с бесконечным числом элементов. Так множество целых чисел, меньших девяти, конечно, а множество натуральных чисел 1, 2, 3, … – бесконечно. Число элементов конечного множества A называется мощностью этого множества и обозначается |А|. Множество, мощность которого равна мощности множества натуральных чисел N, называется счетным. Говорят, что некоторое множество является множеством мощности континуум, если его мощность равна мощности множества вещественных чисел R. Способы задания множеств. Для задания множеств используют два основных способа. 1. Перечисляют элементы этого множества, заключив их в фигурные скобки: A = {a1 , a2 , ..., an } . Например, множество натуральных чисел, меньших пяти: {1, 2, 3, 4}. 2. Перечисляют характеристические свойства P1 ( x) , P2 ( x) , …, Pn ( x) этого множества, которыми обладают все его элементы: A = {x | P1 ( x), P2 ( x), ..., Pn ( x)} .

7

Конечное множество можно задать как перечислением элементов, так и характеристическим свойством, бесконечное множество задается только характеристическим свойством. Пример. Задание множеств перечислением элементов: a) A={3, 4, 5, 6, 7, 8, 9}; b) множество D = {{1, 2, 6, 7}, {4, 5, 6}, {8, 9, 11, 15}} состоит из трех множеств A = {1, 2, 6, 7}, B = {4, 5, 6} и C = {8, 9, 11, 15}. Задание множеств характеристическим свойством: a) A = {x | x = y 2 , y ∈ N } – множество квадратов натуральных чисел; b) A = { x, y | x 2 + y 2 < 1} – область, ограниченная окружностью 2 x + y 2 = 1; c) A = {x | x 2 − 3 x + 2 = 0 и x 2 = 1} – множество решений уравнений x2 − 3x + 2 = 0 и x2 = 1 .

1.2. Операции над множествами Объединением нескольких множеств Ai является множество, каждый элемент которого принадлежит хотя бы одному из этих множеств: N

C =  Ai = {∃i | i ∈ N и x ∈ Ai },

(1.1)

i =1

где ∃ – квантор существования ( ∃i – cуществует i). В случае двух множеств A и B их объединение – это множество С, содержащее элементы одного либо другого множества:

C = A ∪ B = {x | x ∈ A или x ∈ B}.

(1.1а)

Пересечением нескольких множеств Аi является множество, элементы которого одновременно принадлежат всем этим множествам: N

C =  Ai = {∀i | i ∈ N  x ∈ Ai } , i =1

(1.2)

где ∀ – квантор всеобщности ( ∀i – для всех i),  – оператор следования. В случае двух множеств A и B их пересечение – это множество С, содержащее одновременно как элементы множества А, так и элементы множества В: C = A ∩ B = {x | x ∈ A и x ∈ B} . (1.2а)

8

Если A ∩ B = ∅ , ∅ – пустое множество, то множества A и B не пересекаются. Говорят, что множества пересекаются, если у них существует хотя бы один общий элемент. Разностью двух множеств A и B называется множество C, содержащее элементы множества A и не содержащее элементы множества B: (1.3) C = A \ B = { x | x ∈ A и x ∉ B} . Относительным дополнением множества B относительно A называется множество элементов, принадлежащих множеству A и не принадлежащих множеству B: B = A\ B. Абсолютное дополнение множества А есть A = {x | x ∉ A} . Если все множества Ak , k=1, 2, 3, …, содержатся в множестве U ( Ak ⊂ U ) , то множество U будем называть универсальным множеством. Очевидно Ak = U \ Ak . Пример 1. Объединением множеств А={1, 2, 3, 4}, В={3, 4, 5} является множество A ∪ B ={1, 2, 3, 4, 5}, пересечением этих множеств является множество A ∩ B ={3, 4}, разность множеств А и В дает множество A \ B = {1, 2} . Основные операции над множествами можно пояснить графически с помощью диаграмм Венна (рис. 1.1). Пример 2. Объединением множеств A = {x, y | ( x − 0,5) 2 + y 2 < 1} и B = {x, y | ( x + 0,5) 2 + y 2 < 1} является множество C = {x, y | ( x − 0,5) 2 + y 2 < 1или ( x + 0,5) 2 + y 2 < 1} , пересечением этих множеств является множество D = {x, y | ( x − 0,5) 2 + y 2 < 1и ( x + 0,5) 2 + y 2 < 1}. Множества С = A ∪ B , D = A ∩ B , A \ B , A изображены на рисунке 1.1. A

B

Рис. 1.1. Объединение, пересечение, разность двух множеств 9

_

Операции { ∪ , ∩ , } называются булевыми операциями над множествами. Свойства булевых операций над множествами Коммутативность: ∩B = B ∩ A; A ∪ B = B ∪ A. Ассоциативность: ( A ∩ B) ∩ C = A ∩ (B ∩ C) ; ( A ∪ B) ∪ C = A ∪ (B ∪ C) . Идемпотентность: A ∩ A = A; A ∪ A = A. Дистрибутивность: A ∩ (B ∪ C) = ( A ∩ B) ∪ ( A ∩ C) ; A ∪ (B ∩ C) = ( A ∪ B) ∩ ( A ∪ C) . Теоремы Моргана: ________

________

A∩ B = A∪ B ; A∪ B = A ∩ B .

Инволюция: А = A . _

Операции { ∪ , ∩ , } над множествами образуют алгебру Буля [1].

1.3. Бинарные отношения Для того чтобы установить связь между различными элементами множеств, используют понятие «отношение». Отношение можно реализовать в виде пар элементов. Упорядоченные пары. Если a и b – элементы множеств А, В, то через (a, b) обозначим упорядоченную пару. Очевидно (a, b) ≠ (b, a) . Прямым произведением двух множеств (А, В) называется множество A × B всех упорядоченных пар, первый элемент которого принадлежит А, а второй – В. Пример. Множество точек на плоскости (x, y). Отношение – это множество упорядоченных пар (a, b) ∈ A × B . Если элемент a находится в некотором отношении ρ к b, то такое отношение обозначается (a, b) ∈ρ или aρb . Элемент a называют первой координатой, а элемент b – второй. Элементы упорядоченных пар могут принадлежать одному множеству: (a, b) ∈ A × A . Примером отношения между двумя элементами a, b является отношение неравенства: a < b. Обратное отношение ρ −1 относительно отношения ρ получается перестановкой координат внутри каждой пары: ρ−1 = {(b, a ) | (a, b) ∈ ρ} .

10

Если среди элементов множеств A и B в отношении ρ ⊂ A× B находятся не все элементы, то в этих множествах удобно выделить те элементы, которые состоят в отношении ρ. Множество элементов отношения ρ ⊂ A× B , которые можно выделить по некоторым признакам, образуют подмножество. Областью определения отношения ρ ⊂ A × B называется подмножество D (ρ) = {a | ( a , b ) ∈ ρ} , D (ρ) ⊆ А . Областью значений отношения ρ называется подмножество S (ρ) = {b | ( a, b) ∈ ρ} , S (ρ) ⊆ B. Прообразом b ∈ B отношения ρ ⊂ A × B является множество всех a ∈ А , находящихся в отношении ρ с элементом b. Образом a ∈ А отношения ρ ⊂ A × B является множество всех b ∈ B , находящихся в отношении ρ с элементом a. Отношение ρ ⊂ A × B называется всюду (полностью) определенным, если его областью определения является все множество A прямого произведения A × B : D (ρ) = А (рис. 1.2а). В противном случае отношение является частично определенным. Сюръективным называется отношение ρ ⊂ A × B , если его область значений совпадает с множеством В прямого произведения A × B : S (ρ) = B (рис. 1.2б). а

А

б А

В

В

Рис. 1.2. а) Полностью определенное отношение; б) сюръективное отношение.

Инъективным (инъекцией) называется отношение ρ ⊂ A× B , если прообразом любого элемента b из области значений S (ρ) является единственный элемент a из области определения D(ρ) . Способы задания бинарных отношений. 1. Перечислением всех пар, для которых это отношение имеет место: ρ = {( a , c ),(b, c ),(b, a )} . 2. Матрицей: бинарному отношению ρ ⊂ A × B , где A = {a1 , a2 , ..., an }, B = {b1 , b2 , ..., bm } , сопоставляется матрица размерности n × m , в кото11

рой элемент ci,k=1, стоящий на пересечении i-й строки и k-го столбца, равен 1, если элементы ai и bk находятся в некотором отношении ρ , и ci,k = 0, если между ai и bk это отношение отсутствует. 3. Направленным графом: в этом случае первому и второму элементам бинарного отношения сопоставляются вершины графа, а само отношение изображается дугой, соединяющей эти вершины. Свойства бинарных отношений [1]. Отношение ρ на множестве А, ρ ⊂ A× A, обладает следующими свойствами. 1. ρ – рефлексивно, при условии, что каждый элемент находится в отношении к самому себе: aρa , a ∈ A . Например, отношение ρ = {(a, b) | a = b, a, b ∈ A)} рефлексивно. 2. ρ – симметрично, если выполняются оба отношения aρb и bρa . Например, отношение «сокурсник» между студентами симметрично. 3. ρ – антисимметрично, если отношения aρb и bρa никогда не выполняются одновременно, то есть из aρb и bρa следует a = b. Например, отношение «быть выше» антисимметрично. 4. ρ – антирефлексивно, если все элементы a ∈ A не могут находиться в отношении к самому себе, то есть ни для какого a ∈ A не выполняется aρa . Например, отношение «быть родителем». 5. ρ – транзитивно, если из aρb и bρc следует aρc . Например, отношение «быть выше» транзитивно. Транзитивное замыкание – это цепочка элементов ak ∈ A , все соседние элементы которой связаны отношением: (ak −1 ak ) ∈ ρ . Такое транзитивное замыкание образует подмножество μ ⊂ ρ , которое запишем в явном виде: μ = {(a0 , an ) | (a0 , a1 ), (a1 , a2 ),...,(an−1 , an ) ∈ ρ} . Отношение эквивалентности – это рефлексивное, симметричное, транзитивное отношение. С помощью отношения эквивалентности множество А разбивается на непересекающиеся подмножества – классы эквивалентности. Элементы a и b являются элементами одного класса, если они находятся между собой в отношении ρ. Между элементами разных классов оно отсутствует. В этом случае говорят, что отношение ρ задает систему классов эквивалентности на множестве А. Для построения некоторого класса эквивалентности достаточ12

но знать один элемент этого класса, например a ∈ A , тогда классом является множество таких b, для которых aρb . Пример. Множество людей можно разбить на классы по их специальности. Некоторый врач будет представителем всего класса врачей. Говорят, что на множестве А между его элементами a , b ∈ A задано отношение порядка, если выполняется одно из двух отношений aρb или bρa . Элементы a , b ∈ A в этом случае называются сравнимыми на A. Множество А с заданным на нем отношением порядка ρ является полностью упорядоченным множеством, если любые два элемента этого множества сравнимы между собой. Множество А, на котором задано отношение порядка ρ , является частично упорядоченным множеством, если сравнимы лишь некоторые элементы этого множества. Пример: между натуральными числами существует отношения полного порядка 1 < 2 < 3 < …

1.4. Функциональные отношения Бинарное отношение ρ ⊂ A × B между двумя множествами A и B называют также соответствием между этими множествами. Пример. a) Рассмотрим два множества функций g ∈ G и f ∈ F . Соответствие g = ρ f , ρ∈ G × F между двумя множествами функций называется оператором. б) Оператор дифференцирования устанавливает соответствие между функцией и ее производной g ( f ) = df ( x) dx . Всюду определенное соответствие называется отображением, которое обозначается как A → B или f ( A) = B . Пусть функция f устанавливает соответствие между множествами A и B. Множество D ( f ) = {a | ( a, b) ∈ f } является областью определения D(f) отображения f, множество S ( f ) = {b | ( a, b) ∈ f } – область значений S(f). Множество всех b ∈ B , соответствующих элементу a ∈ A , называется образом а в В. Множество всех a ∈ A , соответствующих элементу b ∈ B , называется прообразом b в A. Отношение f ⊂ A × B для ( a, b) ∈ A × B называется функциональным соответствием (функцией), если каждому элементу a ∈ D ( f ) из области определения соответствует только один элемент в области значений b ∈ S ( f ) . Вместо обозначения ( a, b) ∈ A × B используют запись f(a) = b. 13

Пример. Функция y = f ( x) – это бинарное отношение на X × Y , где y ∈Y . Пусть f − отображение из X в Y, g – отображение из Y в Z, композицией отображений f, g называют отображение f g из X в Z такое, что (fg)(x) = f(g(x)). Отображение ( f g ) − 1 называется обратным к отображению f g, если ( fg ) −1 ( x ) = f −1 ( g −1 ( x )) , f ⊂ A× B , g ⊂ A× B. Всюду определенное функциональное отношение f : A → B называют также отображением A в B. Отображение A → B называется сюръективным (или сюръекцией), если его образ совпадает с В, то есть f ( A) = B . По-другому сюръективное отображение называют отображением множества А на множество В. Каждый элемент множества В в этом случае является образом хотя бы одного элемента множества А. Если отображение сюръективно f ( A) = B , то любое уравнение f ( x ) = b имеет хотя бы одно решение x = f −1 (b) ∈ A . Пример: Отображение f ( R ) = R , где R – множество вещественных чисел, заданное в виде f ( x) = 2 x , не является сюръективным, так как областью значений этого отображения является множество неотрицательных вещественных чисел R + . Однако отображение f ( x) = 2 x , если f ( R) = R + ( f ∈ R × R + ), является сюръективным. Отображение f ( R) = R1 , где f ( x ) = cos( x ) , R1 = {x | | x |≤ 1} , также сюръективно. Отображение A → B называется инъективным (или инъекцией), если различным элементам множества А этого отображения соответствуют различные элементы множества В. Так как для инъективного отображения y = f ( x ) прообраз любого элемента y из области значений является единственным элементом x из области определения, то для f существует обратное отображение x = f −1 ( y ) . Очевидно, всякое инъективное отображение является взаимно однозначным. Пример. Отображение f ( R) = R+ , где f ( x) = x 2 , не является инъективным, так как прообраз любого элемента из области значений R+ состоит из двух элементов, например f ( ±1) = 1. Однако отображение f ( R+ ) = R+ будет уже инъективным. Отображение f между множествами А и В называется взаимно однозначным, или биективным, если каждому элементу a ∈ A соответствует один элемент b ∈ B и, наоборот, каждому элементу b ∈ B соответствует один элемент a ∈ A . Отображение биективно (взаимно x∈ X ,

14

однозначно), если оно: 1) всюду определено; 2) сюръективно; 4) инъективно; 3) является функциональным соответствием. Пример. Отображение f ( x ) = x + c , где f ∈ R × R , c = const, является биективным. Отображение f ( x) = x 2 , f ∈ R × R , не является биективным, оно станет биективным, если f ∈ R+ × R+ . Если область определения и область значения функции принадлежат одному и тому же множеству, то функцию называют операцией. В случае одного аргумента функция называется унарной операцией. Примеры унарных операций – элементарные функции y = e x , y = x 2 . Рассмотрим отображение X × X → X , которому принадлежит функция f ∈ X × X . Функция двух аргументов f(x, y) называется бинарной операцией. Примеры бинарных операций – арифметические операции сложения, умножения; операции над множествами – пересечение, объединение.

1.5. Задачи для самостоятельной работы 1. Задать известными вам способами множество положительных четных чисел, меньших 11. 2. Задать множество, которое является пересечением полуплоскостей x + 2y < 6, 4x + y > 4, x – y < 1. Изобразить эту область на плоскости. 3. Задать все множества, границей которых являются части окружности x 2 + ( y − 1) 2 = 1 и параболы y = 1 − x 2 . Изобразить эти области на плоскости. 4. Пусть U ={1, 2, 3} – универсальное множество, A = {1, 2}, B = = {2, 3}, C = {1, 2}. Найти A \ (B ∩ C) , (B ∪ C) \ A, A ∩ B , A ∩ B . 5. Пусть U = {1, 2, 3, 4, 5, 6} – универсальное множество, A = {3, 4, 5, 6}, B={1, 2, 3}, C={4, 6}. Найти ( A ∪ B) ∪ ( B ∩ C) , A ∩ ( B ∪ C ) , A \ ( B ∩ C ) , ( A ∩ B ) \ C , B \ ( A \ C ) , A \ ( B ∪ C ) , ( A ∩ B) ∪ ( B ∩ C) , A ∩ ( B ∪ C ) , B ∩ ( A \ C ) , ( A ∪ B ) ∩ ( B ∪ C ) , ( A ∪U ) ∪ (B ∩U ) , (U \ A) ∪ C , (U ∩ A ) \ (U ∪ C ) . 6. Найти симметрическую разность AΔB = ( A \ B) ∪ ( B \ A) двух множеств A={1, 2, 3, 4}, B={3, 4, 5, 6}. 7. Доказать с помощью диаграмм Венна (рис. 1.1): ________

________

A ∩ B = A ∪ B ; A ∪ B = A ∩ B , A \ B = A∩ B. 15

8. Упростить выражения: (( A ∪ B ) ∩ ( A ∪ ( A ∩ B ))) ∪ (( A ∪ B ) ∩ B ) , ( B ∩ A) ∪ ( B ∩ A) , ( B ∩ A) ∪ B , (C ∪ A) ∩ (C ∪ B ) ∪ ( A ∩ B ) , A \ B = A ∩ B , упростить ; используя тождество ( A ∪ B) ∩ ( A ∪ C ) ∩ A выражения: ( A ∩ B)Δ( A ∩ B) , ( A ∩ B ) Δ ( A ∩ B ) , ( A ∩ B)Δ( A ∪ B) . 9. Пусть A={1, 2, 3, 4}, B ={5, 6, 7, 8}. Декартово произведение этих множеств имеет вид: ρ = {(1,6) , ( 2,5) , (3,8) , ( 4,7 )} . Определить

обратное отношение ρ−1 . 10. Выяснить, какими являются области определения и области значения у следующих отображений: 1) F ( x) = e x − 1; 2) F ( x) = x 2 ; 3) F ( x) = x3 ; 4) F ( x ) = cos( x ) ; 5) F ( x ) = tg ( x ) . 11. Выяснить, какое из приведенных ниже отображений является сюръективным: 1) F ( x) = e x , если F: R → R ; 2) F ( x) = e x , если F: R → R+ ; 3) F ( x ) = cos( x ) , если F: R → [−1,1]; 4) F ( x ) = sin( x) , если F: R → R ; 5) F(x)=lg(x), если F: R+ → R ; 6) F ( x) = x 2 , если F: R → R ; 7) F ( x) = x 2 , если F: R → R+ . 12. Выяснить, какое из приведенных ниже отображений является инъективным: 1) F ( x) = e x , если F: R → R+ ; 2) F(x)=lg(x), если F: R+ → R ; 3) F ( x ) = cos( x ) , если F: R → R1 ; 4) F ( x) = x 4 , если F: R → R+ ; 5) F ( x) = x3 , если F: R → R ; 6) F ( x) = x −1 , если F: R → R .

16

2. ЭЛЕМЕНТЫ МАТЕМАТИЧЕСКОЙ ЛОГИКИ 2.1. Введение Основы математической логики сформулированы Джорджем Булем в XIX в. Систематически логические вычисления начали применять с появлением вычислительной техники. О каждом высказывании можно сказать истинно оно или ложно. Таким образом, любое заключение об истинности или ложности высказывания является его значением. Значения «истина» и «ложь» сокращенно обозначают «И» и «Л» соответственно. Примеры: высказывание «два плюс два равно пяти» – ложно, высказывание «Земля – планета» – истинно. Для построения высказываний используют логические связки. Примерами логических связок являются союзы И, ИЛИ, НЕ, конструкция ЕСЛИ..., ТО... Простые высказывания содержат один союз. Из простых высказываний с помощью логических связок можно образовывать сложные высказывания. Пример: если на улице дождь и нет зонта, то можно промокнуть. Далее высказывания будем обозначать большими латинскими буквами – A, B, С ... Для более точного описания высказываний вместо логических связок определим логические операции и их обозначения.

2.2. Логические операции К основным логическим операциям относят конъюнкцию (ее обозначают символом «&» или « ∧ »), дизъюнкцию (обозначается символом « ∨ »), отрицание (обозначается символом « ¬ » или чертой над соответствующим высказыванием). Связку ЕСЛИ..., ТО... обозначают символом « → » и называют импликацией. Конъюнкцией двух высказываний А и В называют высказывание, получаемое в результате применения операции конъюнкции к этим высказываниям. Конъюнкцию обозначают A&B или A ∧ B . Конъюнкция A&B – это высказывание истинное, когда оба высказывания истинны, и ложное во всех других случаях. Дизъюнкцией двух высказываний А и В называют высказывание, получаемое в результате применения операции дизъюнкции к этим высказываниям. Дизъюнкцию обозначают A ∨ B . Дизъюнкция A ∨ B – это высказывание ложное, когда оба высказывания ложны, и истинное во всех других случаях. 17

Союз НЕ называют отрицанием и обозначают символом « ¬ » или чертой над соответствующим высказыванием. Отрицание высказывания А – это высказывание истинное, когда высказывание А ложно, и ложное в противном случае. Обозначение отрицания: ¬A или A . Импликацией (логическим следованием) двух высказываний А и В называется ложное высказывание, когда А истинно, а В ложно. Во всех других случаях это высказывание истинное. Обозначение импликации: A → B . Эквивалентностью двух высказываний A и B называется высказывание истинное, когда истинностные значения А и В совпадают, и ложное в противном случае. Для двоичного кода эти операции удобно пояснить таблицами (табл. 2.1) Буквенные обозначения высказываний, логические операции и скобки составляют алфавит логики высказываний. Записанные по определенным правилам слова логики высказываний называются логическими формулами. Логическая формула – это такое алгебраическое выражение, которое удовлетворяет следующим условиям: 1) любое высказывание – это логическая формула; 2) если A и B – формулы, то A ∧ B , A ∨ B , A , A → B также являются формулами. Таблица 2.1 A 0 0 1 1

B 0 1 0 1

A∨ B 0 1 1 1

A∧ B 0 0 0 1

A→B 1 1 0 1

a 1 1 0 0

Пусть B ={0,1} – бинарное множество. Его элементами являются символы 0 и 1, которые имеют смысл «нет», «да» или «ложь», «истина». Алгебра логики – это бинарное множество B с заданными на нем логическими операциями. Логической функцией f от n переменных f ( x1 , x2 , x3 ,..., xn ) , называется n-арная логическая операция на бинарn

ном множестве B, т. е. f: B → B . Каждая переменная принимает только два значения, поэтому возможны 2n различных двоичных 18

наборов x1, x2, ..., xn. Каждому набору входных сигналов соответствует некоторое значение выходной логической переменной f . Логические функции от n переменных удобно задавать как формулами, так и таблицами истинности. Пример. Используя логические операции « ∧ », « ∨ », « ¬ », запишем формулу от трех переменных f ( x1 , x 2 , x3 ) = ( x1 ∨ x 2 ) ∧ ( x1 ∧ x3 ) . Построим таблицу истинности этой формулы (табл. 2.2). Для этого воспользуемся таблицей 2.1. Запишем в таблице сначала значения x1 , потом значения x1 ∨ x2 , x1 ∧ x3 . По последним двум значениям вычислим значения всей формулы. Таблица 2.2 x1 , x2 , x3

x1

x1 ∨ x2

000 001 010 011 100 101 110 111

1 1 1 1 0 0 0 0

1 1 1 1 0 0 1 1

x1 ∧ x3 x1 ∧ x3

0 0 0 0 0 1 0 1

1 1 1 1 1 0 1 0

( x1 ∨ x2 ) ∧ ( x1 ∧ x3 )

1 1 1 1 0 0 1 0

Таблицы истинности применяют для доказательства эквивалентности формул. Есть формулы, в которых удаление одной или нескольких переменных не меняет их смысла. Так, если переменная x присутствует в некоторой формуле f (( x ∧ y ) ∨ y , y , z ,...) только внутри вхождений ( x ∧ y ) ∨ y , то переменную x можно удалить, заменив в формуле это вхождение переменной y = ( x ∧ y ) ∨ y , в результате имеем f ( y , y , z ,...) . Переменная xi называется существенной переменной функции f ( x1 ,..., xn ) , если существуют такие α1, …, αi – 1, αi + 1, …, αn и ai ∈ {0, 1} , что f ( x1 ,..., ai −1 ,0, ai +1 ,..., xn ) ≠ f ( x1 ,..., ai −1 ,1, ai+1 ,..., xn ) .

В противном случае переменная xi называется фиктивной.

19

Если из одной функции алгебры логики можно получить другую путём добавления и изъятия любого числа фиктивных переменных, то эти функции являются эквивалентными (равными). Эквивалентность двух формул можно доказать, сравнив их таблицы истинности. Пример. Доказать эквивалентность формул x1 ∧ x2 и x1 ∧ x2 . Построим таблицу истинности для этих формул (табл. 2.3). Сравнивая значения таблицы для формул x1 ∧ x2 и x1 ∧ x2 , установим, что они совпадают. Этим эквивалентность формул доказана. Таблица 2.3 x1 , x2

x1

x2

x1 ∨ x2

x1 ∧ x2

00 01 10 11

1 1 0 0

1 0 1 0

1 1 1 0

0 0 0 1

x1 ∧ x2 1 1 1 0

2.3. Булева алгебра 2.3.1. Полные системы Алгебра {B, &, ∨ , ¬ } с операциями {&, ∨ , ¬ } на множестве логических функций В называется булевой алгеброй логических функций [1]. Операции и формулы булевой алгебры называют булевыми. Если любую функцию алгебры логики можно выразить через формулы множества А, то это множество называется полной системой функций алгебры логики. Базис некоторой системы логических функций – это минимальный набор логических функций полной системы, при котором она сохраняет еще свою полноту. Примеры функционально полных систем: {&, ∨ , ¬ }, {&, ¬ }, { ∨ , ¬ }, { → , ¬ }. Свойства булевых функций 1) x ∧ y = y ∧ x – коммутативность конъюнкции; 2) x ∨ y = y ∨ x – коммутативность дизъюнкции; 3) x ∧ ( y ∨ z ) = ( x ∧ y ) ∨ ( x ∧ z ) – дистрибутивность конъюнкции относительно дизъюнкции; 20

4) x ∨ ( y ∧ z ) = ( x ∨ y ) ∧ ( x ∨ z ) – дистрибутивность дизъюнкции относительно конъюнкции; 5) ( x ∧ y ) ∧ z = x ∧ ( y ∧ z ) – ассоциативность конъюнкции; 6) ( x ∨ y ) ∨ z = x ∨ ( y ∨ z ) – ассоциативность дизъюнкции; 7) ( x ∧ y ) ∨ y = y – поглощение конъюнкции; 8) ( x ∨ y ) ∧ y = y – поглощение дизъюнкции; 9) x = x – закон двойного отрицания. 10) x ∧ x = x – идемпотентность конъюнкции; 11) x ∨ x = x – идемпотентность дизъюнкции; 12) x ∨ x = 1 – тавтология, или закон исключения третьего; 13) x ∧ x = 0 – непротиворечивость; 14) x ∧ y = x ∨ y , x ∨ y = x ∧ y – формулы де Моргана. В справедливости этих выражений можно убедиться, если отдельно построить таблицу истинности для их левых и правых частей. С помощью соотношений 1–14 можно упростить логические формулы. Например, используя соотношения 3, 12, проведем следующее упрощение: ( x ∧ y) ∨ ( x ∧ y ) = x ∧ ( y ∨ y ) = x . 2.3.2. Дизъюнктивно и конъюктивно нормальные формы При проектировании вычислительных устройств широко используют табличное задание логической функции. Необходимо знать алгоритм перехода от табличного задания логической функции к ее представлению в виде булевой формулы. Элементарной конъюнкцией K i = x1δ ∧ x2δ ∧ ... ∧ xnδ , где x δ = x , если δ = 1 и x δ = x , если δ = 0 , i=1, 2, 3, …, называется конъюнкция переменных или их отрицаний, в которых каждая переменная встречается не более одного раза. Дизъюнктивно нормальной формой (ДНФ) логической функции f ( x1 , x2 , ..., xn ) называется дизъюнкция элементарных конъюнкций: f ( x1 , x2 , ..., xn ) = K1 ∨ K 2 ∨ ... ∨ K n . Пример ДНФ: ( x1 ∧ x2 ) ∨ ( x2 ∧ x3 ) ∨ ( x1 ∧ x2 ∧ x3 ) . Совершенной дизъюнктивно нормальной формой (СДНФ) называется ДНФ, все конъюнкции Ki которой имеют одинаковое число сомножителей, равное числу логических переменных, а число дизъюнкций равно числу значений переменных, на которых функция f ( x1 , x2 , ..., xn ) равна 1. 21

Пример СДНФ: ( x1 ∧ x2 ∧ x3 ) ∨ ( x1 ∧ x2 ∧ x3 ) ∨ ( x1 ∧ x2 ∧ x3 ) . Зная таблицу логической функции, можно записать булеву формулу, если использовать следующий алгоритм перехода от табличного способа задания логической функции к булевой формуле: 1) выписываются конъюнкции переменных x1 , x2 , ..., xn для всех их наборов значений, при которых f ( x1 , x2 , ..., xn ) = 1; 2) над переменными, которые в наборе равны 0, ставятся отрицания; 3) полученные таким образом конъюнкции соединяются знаками дизъюнкции. Для каждой логической функции ДНФ единственна. Пример. Построить ДНФ для таблицы 2.2. В таблице 2.2 выделим строки, в которых функция ( x1 ∨ x2 ) ∧ ( x1 ∧ x3 ) равна 1. Это строки 1, 2, 3, 4, 7. Выпишем для них элементарные конъюнкции: ( x1 ∧ x2 ∧ x3 ) , ( x1 ∧ x2 ∧ x3 ) , ( x1 ∧ x2 ∧ x3 ) , ( x1 ∧ x2 ∧ x3 ) , ( x1 ∧ x2 ∧ x3 ) .

Объединим их с помощью дизъюнкции в функцию, которая является дизъюнктивно нормальной формой: ( x1 ∧ x2 ∧ x3 ) ∨ ( x1 ∧ x2 ∧ x3 ) ∨ ( x1 ∧ x2 ∧ x3 ) ∨ ( x1 ∧ x2 ∧ x3 ) ∨ ( x1 ∧ x2 ∧ x3 ).

Теорема. Алгебра логики с операциями A = { ∨ , &, ¬} является полной системой. Доказательство. Так как любая функция f алгебры логики, отличная от нуля, выражается в виде дизъюнктивной нормальной формы, то она может быть выражена только через операции дизъюнкции, конъюнкции и отрицания. Теорема доказана. Элементарная дизъюнкция M i = x1δ ∨ x2δ ∨ ... ∨ xnδ – это логическая функция, состоящая из дизъюнкций переменных или их отрицаний, в которую каждая переменная входит не более одного раза. Конъюнктивно нормальной формой (КНФ) логической функции f ( x1 , x2 , ..., xn ) называется конъюнкция элементарных дизъюнкций: f ( x1 , x2 , ..., xn ) = M 1 ∧ M 2 ∧ ... ∧ M n .

Пример КНФ: ( x1 ∨ x2 ) ∧ ( x1 ∨ x2 ∨ x3 ) . Совершенной конъюнктивно нормальной формой (СКНФ) называется КНФ, все дизъюнкции которой имеют одинаковое число сомножителей, равное числу логических переменных, а число конъ22

юнкций равно числу значений переменных, на которых функция f ( x1 , x2 , ..., xn ) равна 1. Пример СКНФ: ( x1 ∨ x2 ∨ x3 ) ∧ ( x1 ∨ x2 ∨ x3 ) ∧ ( x1 ∨ x2 ∨ x3 ) . Существует связь между конъюнктивно и дизъюнктивно нормальными формами. Переход от ДНФ к КНФ основан на применении формул де Моргана A ∨ B = A ∧ B , A ∧ B = A ∨ B . Алгоритм перехода от ДНФ к КНФ следующий: 1) применить к ДНФ правило двойного отрицания: K1 ∨ K 2 ∨ ... ∨ K n = K1 ∨ K 2 ∨ ... ∨ K n

и привести

K1 ∨ K 2 ∨ ... ∨ K n

к формуле

K1′ ∨ K 2′ ∨ ... ∨ K n′ , где

K1′,..., K n′ – элементарные конъюнкции. Это дает K1 ∨ K 2 ∨ ... ∨ K n = K1′ ∨ K 2′ ∨ ... ∨ K n′ ;

2) освободиться от отрицания и преобразовать отрицания элементарных конъюнкций в элементарные дизъюнкции: K1 ∨ K 2 ∨ ... ∨ K n = K1′ ∨ K 2′ ∨ ... ∨ K n′ = = K1′ ∧ K 2′ ∧ ... ∧ K n′ = M 1 ∧ M 2 ∧ ... ∧ M n .

Функция f ∗ ( x1 , x2 , ..., xn ) f ( x1 , x2 , ..., xn ) , если

называется двойственной к функции

f ∗ ( x1 , x2 , ..., xn ) = f ( x1 , x2 , ..., xn ) . Функция двойственная самой себе называется самодвойственной.

2.4. Задачи для самостоятельной работы 1. Доказать эквивалентность формул построением таблиц истинности: 1) A ∨ B = B ∨ A , A ∧ B = B ∧ A ; 2) A ∨ ( B ∨ C ) = ( A ∨ B ) ∨ C , A ∧ ( B ∧ C ) = ( A ∧ B ) ∧ C ; 3) A ∨ ( B ∧ C ) = ( A ∨ B ) ∧ ( A ∨ C ) , A ∧ ( B ∨ C ) = ( A ∧ B ) ∨ ( A ∧ C ) ; 4) A ∨ B = A ∧ B , A ∧ B = A ∨ B ; A = A .

23

2. Упростить логические формулы: 1) f ( x1 , x2 , x3 ) = x1 ∨ x1 ∧ x3 ∨ x1 ∧ x2 ∧ x3 ∨ x2 ∧ x3 ; 2) f ( x1 , x2 , x3 ) = ( x1 ∧ x2 ) ∨ ( x1 ∧ x2 ∧ x3 ) ∨ ( x3 ∧ x2 ∧ x3 ) ; 3) f ( x1 , x2 , x3 ) = x1 ∧ ( x3 ∨ x2 ) ∧ ( x1 ∨ x2 ∨ x3 ) ; 4) f ( x1 , x2 , x3 ) = ( x1 ∧ ( x1 → x2 )) ∨ ( x1 ∧ x2 ) .

24

3. ГРАФЫ 3.1. Основные понятия теории графов Граф G = (W, R) – это совокупность двух множеств: вершин W и ребер R, на концах ребер графа всегда имеются две вершины. Такая связь назывется отношением инцидентности – каждое ребро (ai , ak ) ∈ R , i, k=1, 2, 3, ..., инцидентно двум вершинам ai , ak ∈ W , которые оно соединяет. Вершины ai , ak ∈ W и ребро (ai , ak ) ∈ R называются инцидентными друг другу. Вершины, расположенные на концах ребра, называют смежными. Пример: граф с тремя вершинами изображен на рисунке 3.1. Если среди ребер, соединяющих вершины, есть ребра с направлением (рис. 3.2), то такие ребра называются направленными (ориентированными), или дугами. Их изображают стрелкой, направленной от одной вершины (начала) к другой (концу). Граф, состоящий из дуг, называют ориентированным, или орграфом. Неориентированным или н-графом называют граф, содержащий только ребра. Граф G, у которого n вершин, называют n-графом. Если этот граф G содержит m ребер, то его называют (n, m)-графом. a1

a1

a2 a2 a3 a3 Рис. 3.1. Н-граф

Рис. 3.2. Ориентированный граф

Ребра называют кратными, если они соединяют одну и ту же пару вершин (рис. 3.2). Граф, содержащий кратные ребра, называется мультиграфом. Ребро, у которого концевые вершины совпадают, называется петлей (рис. 3.1). Вершины, не имеющие ни одного ребра, называются изолированными. Граф с такими вершинами называется нуль-графом. Граф без петель и кратных ребер называется обыкновенным графом.

25

Полным называется обыкновенный граф, у которого каждая пара вершин соединена ребром. Отображение ξ называется изоморфизмом графов G1 (W1 , R1 ) , G2 (W2 , R2 ) , если существует биективное (взаимно однозначное) отображение множества вершин W1 → W2 , сохраняющее между ними отношение смежности. То есть два графа G1 (W1 , R1 ) , G2 (W2 , R2 ) изоморфны, если существует такое биективное отображение множества их вершин W1 → W2 , при котором образы a2 , b2 ∈ W2 любых смежных вершин a1 , b1 ∈ W1 графа G1 являются смежными в графе G2, и наоборот, прообразами смежных вершин a2 , b2 ∈ W2 являются смежные вершины a1 , b1 ∈ W1 . Если графы ориентированные, то направление дуг в изоморфных графах должно быть одинаковым.

3.2. Способы задания графов Ранее (рис. 3.1, 3.2) был представлен графический способ задания графа. Рассмотрим другие способы задания графа [2]. Чтобы задать граф, удобно занумеровать его вершины и ребра: а1, а2, а3,..., аn – вершины графа, r1 , r2 , r3 , ..., rm – его ребра. Между вершинами и ребрами отношение инцидентности задается следующими способами. 1. Для неориентированного графа матрицей инцидентности размера n × m с элементами 1, если ребро rj инцидентно вершине аi ; αi, j =  0, если ребро rj не инцидентно вершине аi ,

где i = 1, 2,…, n, j = 1, 2, …, m. В первый столбец матрицы внесем вершины графа, первую строку – ребра графа. r1 a1 α11 a2 α 21 … …

r2 α12 α 22 …

… … … …

rj α1 j α2 j …

ai α i1 αi 2 … αij … … … … …

… … … …

rm α1m α2m …

… α im … …

an α n1 α n 2 … α nj … α nm 26

В каждом столбце этой матрицы находятся две единицы, которые соответствуют двум вершинам. 2. Для ориентированного графа матрицей инцидентности размера n × m с элементами

αi , j

1, если вершина аi является началом ребра r j ;  −1, если вершина аi − конец ребра r j ; = 2, если ребро r j − петля, а аi − инцидентная ей вершина; 0, если ребро r не инцидентно вершине а . j i 

3. Списком из ребер и вершин графа в виде таблицы с двумя столбцами: в левом перечисляются все ребра rj, в правом – инцидентные им вершины. Для н-графа порядок вершин произволен, для орграфа первым стоит номер начала дуги. Изолированные вершины помещены в конце списка. 4. Списком смежности в нем указываются все вершины, смежные с вершиной ai : ai → (ak ,..., al ) . Для орграфа вершина aj – начало всех дуг, направленных к смежным вершинам. Количество ребер н-графа G, инцидентных вершине a, называется степенью вершины a ∈W , обозначим ее η( a ) . Сумма степеней вершин любого н-графа равна удвоенному числу его ребер:

 η(a) = 2m .

(3.1)

a∈W

Доказательство: так как каждое ребро графа по определению на концах имеет две вершины, то при нахождении суммы степеней вершин одно и то же ребро в этой сумме учитывается дважды. Это означает, что вся сумма степеней вершин графа равна удвоенному числу его ребер. Представим сумму (3.1) в виде суммы с четным η2 (a) и суммы с нечетным η1 ( a ) количеством ребер:

 η ( a ) +  η ( a ) = 2m . 1

2

a∈W

(3.2)

a∈W

Так как второе слагаемое в левой части этого равенства четно, то первое слагаемое также четно. Так как в первой сумме все слагаемые нечетны, то их число четно. Вывод: в н-графе число вершин нечетной степени четно. 27

Рассмотрим полный граф K n с n вершинами. Так как каждая вершина этого графа связана с n – 1 вершинами, то степень любой вершины в полном графе равна n – 1. Например, в графе из четырех вершин каждая вершина соединена с остальными вершинами тремя ребрами. Так как степень каждой вершины в полном графе равна n – 1, то сумма степеней вершин графа с n вершинами равна ( n − 1) n . Из (3.1) следует, что число ребер графа K n равно ηn = (n − 1) n 2 . Пример. У графа (рис. 3.3) вершины a1, a3 нечетной степени. Степени остальных вершин четны. Задание. Дан граф G(W, R) (рис. 3.3), определить: 1) множество вершин W и множество ребер R; 2) пары смежных вершин; 3) инцидентность ребра вершинам; 4) число кратных ребер; Рис. 3.3. Граф с петлей 5) степени вершин; 6) наличие петель.

3.3. Операции над графами Определение. Граф G1 (W1 , R1 ) называется подграфом G(W, R) (G1 ⊂ G ) , если множества вершин W1 и ребер R1 графа G1 содержатся соответственно в множествах вершин W и ребер R графа G: W1 ⊂ W , R1 ⊂ R . Пример. Пусть задан н-граф – схема дорог некоторой области. Роль вершин играют города и поселки, роль ребер − асфальтированные и неасфальтированные дороги. Подграфом н-графа можно считать схему асфальтированных дорог, которые соединяют города области. Рассмотрим подмножество S ⊆ R всех ребер (ai , ak ) ∈ S графа G(W, R). В множестве W выделим все вершины, которые связаны ребрами из подмножества S . Они образуют подмножество V: ai , ak ∈V ⊂ W . Граф GV называется подграфом, порожденным множеством вершин V. Аналогично определяется подграф, порождаемый некоторым множеством ребер S. Пусть V ⊂ W – подмножество всех 28

вершин, расположенных на концах ребер, образующих подмножество S ⊆ R . Граф Q (V, S) называют подграфом, порожденным множеством ребер S. Сурграфом графа G(W, R) называется граф G1 (W1 , R1 ) , множество вершин которого является множеством вершин графа G, а подмножество ребер образовано некоторыми ребрами G. Пример. Любой граф G1 (W , R1 ) , который получается из графа G(W, R) удалением некоторых его ребер, является суграфом. Над частями графа G могут производиться следующие операции. Дополнением графа G называется граф G , у которого те же вершины, что и у графа G, но он содержит только те ребра, которые нужно добавить к графу G, чтобы получить полный граф (рис. 3.4).

а

b

c

Рис. 3.4. а – полный граф, b – дополнительный к графу с.

Объединение графов. Объединением графов G1 (W1 , R1 ) , G2 (W2 , R2 ) называется граф G = G1 ∪ G2 такой, что G = (W1 ∪ W2 , R1 ∪ R2 ) . В этом графе множества вершин и ребер (дуг) являются объединениями соответствующих множеств вершин и ребер (дуг) графов G1, G2. Пересечение графов. Пересечением графов G1 (W1 , R1 ) , G2 (W2 , R2 ) называется граф G = G1 ∩ G2 такой, что G = (W1 ∩ W2 , R1 ∩ R2 ) . В этом графе множества вершин и ребер (дуг) являются пересечениями соответствующих множеств вершин и ребер графов G1, G2. Операция удаления вершины и ребра. Граф Gi = G − аi получается из графа G удалением вершины аi и смежных с ним ребер. Граф Gi = G − ri получается из графа G удалением ребра ri . Операция введения ребра. Граф Gi = G + ri получается из графа G добавлением ребра ri , соединяющего две несмежные вершины. Операции введения вершины в ребро. В результате операции некоторое ребро разделяется на два ребра после введения в него вершины ai. 29

3.4. Неориентированные графы, маршруты, цепи, циклы Маршрутом неориентированного графа G называется чередующаяся последовательность ребер и вершин r1

r2

r3

rn −1

a1 → a2 → a3 →...an−1 → an ,

в которой каждые две соседние вершины аk, аk+1 соединяются ребром rk . Первая в последовательности вершина а1 – это начало маршрута, аn – его конец. Маршрут обозначают также в виде: (а1, r1, а2, r2, а3, r3,..., rn−1 , аn). В маршруте вершины и ребра могут встречаться несколько раз. Длиной маршрута называют количество содержащихся в нем ребер. В обыкновенном графе маршрут полностью определяется последовательностью (а1, а2, а3,..., аn) своих вершин. Цепью называется маршрут без повторяющихся ребер. Если в маршруте нет ни повторяющихся ребер, ни повторяющихся вершин, то он называется простой цепью. Очевидно, простая цепь не пересекает саму себя. Замкнутым называется маршрут или цепь, у которых начало и конец совпадают. Замкнутая простая цепь называется циклом. Так как цикл полностью определяется множеством своих ребер, то под ним понимают соответствующую последовательность ребер. Вершины аk, аj называются связанными, если существует маршрут L, началом которого является вершина аk , а концом вершина аj. Граф G называется связным, если любые две его различные вершины аk, аj связаны. Произвольный граф получается в виде объединения связных графов. Введем следующее отношение эквивалентности: два маршрута являются эквивалентными, если их начало и конец совпадают. Отношение связности вершин является отношением эквивалентности, поэтому разбивает множество вершин графа на непересекающиеся подмножества Wi, где i = 1, 2, ..., n. Максимальный связный подграф графа G называется компонентой связности, или просто компонентой графа G. Теорема. Каждый н-граф распадается единственным образом на прямую сумму своих связных компонент [2]: G =  Gk ,

где Gk = G (Wk ) , k = 1, 2, ..., n. Графы G1, G2, …, Gn называются компонентами связности графа G. Предположим, что в разложении есть 30

компоненты, такие что G j ⊂ Gk . Избавимся от всех компонент, которые являются подграфами других связных графов. После этого в разложении останутся только максимальные подграфы. Таким образом, множество компонент связности – это множество всех максимальных связных подграфов данного графа. Очевидно, такое разложение является единственным.

3.5. Ориентированные графы Пусть G – ориентированный граф. Последовательность дуг, в которой конец каждой предыдущей дуги rk −1 совпадает с началом следующей дуги rk , называется путем. В пути одна и та же дуга может встречаться несколько раз. Путь называется ориентированной цепью (или просто цепью), если каждая дуга в цепи встречается не более одного раза, и простой цепью, если не имеет повторяющихся вершин. Замкнутый путь называется контуром. Контур называется циклом, если он является цепью, и простым циклом, когда это простая цепь. Орграф G называют связным, если любые две его вершины связаны путем. Отношение связанности является отношением эквивалентности. Орграф G разбивается на непересекающиеся классы своих связанных компонент. Число ребер (дуг) пути называется его длиной. Расстоянием между вершинами связного графа называется минимальная длина простой цепи, соединяющей эти вершины. Центром называется вершина н-графа, от которой максимальное из расстояний до других вершин минимально. Максимальное расстояние от центра графа до его вершин называется радиусом графа G. Диаметром связного графа называется расстояние между двумя наиболее удаленными друг от друга вершинами.

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

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

32

4. СЕТИ 4.1. Построение сети, выбор кратчайшего пути Граф называется взвешенным, если каждому его ребру сопоставлено некоторое число, которое называется весом (или длиной) этого ребра. Взвешенный орграф G = (W, R, E), где W – множество вершин, R – множество дуг, E – множество весов, называется сетью. Сеть, как и любой орграф, можно представить матрицей весов дуг или списками. Маршрут орграфа r1

r2

r3

rn−1

a1 → a2 → a3 →... → an−1 → an называют путем. Длина пути равна сумме весов ν ( rk ) ∈ E всех дуг пути: ν = ν(r1 ) + ν(r2 ) + ... + ν(rn ) .

Путь между вершинами a и b орграфа называется кратчайшим путем, если сумма весов его дуг минимальна. Задача о кратчайшем пути формулируется следующим образом: в заданной сети G найти кратчайший путь (а, b) между вершинами а и b. Задача о прокладке оптимального маршрута возникает, когда требуется проложить маршрут, который должен удовлетворять определенным критериям. Например, его длина на пересеченной местности должна быть минимальной, или маршрут в городе необходимо выбрать так, чтобы расход топлива был минимален. Для решения этой задачи удобно применять теорию ориентированных графов. Каждой дуге этого графа сопоставляется ее вес, например расход топлива. После выбора пути веса дуг, из которых состоит путь, суммируются. Тогда решение задачи в определении оптимального пути между начальной и конечной точками маршрута состоит в отыскании пути с наименьшим суммарным весом всех дуг, составляющих путь.

4.2. Алгоритм Дейкстры Рассмотрим следующую задачу. Имеется ориентированный граф, вершины которого соединены дугами. Каждой дуге приписывается ее вес v ( j , k ) . Найти путь с наименьшим суммарным весом.

33

Обозначим через w(k) – минимальный суммарный вес пути, который начинается в вершине a1 и заканчивается в вершине ak. Алгоритм нахождения такого пути с наименьшим весом следующий. Шаг 1. Положим w(1) = 0 для начальной точки a1 и w ( k ) = ∞ для остальных точек. Пометим вершину a1. Шаг 2. Среди дуг, направленных к вершинам, которые смежны с вершиной a1, выберем дугу с наименьшим весом. Например, дугу с вершиной a2 на ее конце (рис. 4.1). Присвоим метке вершины a2 величину, равную весу v (1,2) выбранной дуги. Так как других дуг, входящих в вершину a2, нет, то эта метка постоянна. Шаг 3. Рассмотрим множество дуг, выходящих из вершин a1 и a2, концы которых заканчиваются в вершине a3. Для дуг, выходящих из вершины a1 и заканчивающихся в вершине a3, найдем их суммарный вес по формуле w (3) = min{v (1,3), w (2) + v (2,3)} . Присвоим это новое значение метки вершине a3. Так как найдены вклады от всех путей, входящих в вершину a3, то эта метка постоянна. j 3 k

2 1

i

Рис. 4.1. Ориентированный граф

Шаг k. Предположим, что на k – 1-м шаге метка вершины ai (рис. 4.1) получила статус постоянной. Рассмотрим по очереди все вершины ak без постоянных меток, смежные с вершиной ai, и присвоим им временные метки, равные w( k ) = w(i ) + ν ( i , k ) ,

34

(4.1)

где ν (i, k ) – веса дуг, которые входят в вершину ak. Если вершина ak уже имеет временную метку w′( k ) и ее значение меньше (4.1), то метка вершины ak не изменяется. Если метка w′( k ) больше (4.1), то метка w′( k ) заменяется (4.1). Шаг k+1. Перебрав все пути, которые заканчиваются в вершине ak, найдем наименьшую длину этих путей: w ( k ) = min{w ( k ), w (i ) + v (i, k ), w ( j ) + v ( j , k )} .

(4.2)

Окончательно присвоим вершине ak постоянную метку, равную величине наименьшей длине (4.2) всех путей, которые заканчиваются в этой вершине. Повторяем шаги k и k+1 до тех пор, пока финальной вершине an не будет назначена постоянная метка. Двигаясь в обратном направлении из вершины an в вершину a1 против направления помеченных дуг, восстанавливая путь из a1 в an. Очевидно, такой путь будет единственным. Пример. Имеется 7 пунктов a1, a2, a3, …, ak,…, a7 (рис. 4.2), связанных сетью дорог. Необходимо выбрать маршрут между начальной точкой a1 и конечной точкой a7 такой, чтобы расход топлива был минимальным.

Рис. 4.2. Граф для семи пунктов

Решение. Сопоставим каждому пункту пути вершину графа. Отрезкам пути между пунктами сопоставим дуги, вес которых равен расходу топлива на этом отрезке пути. Алгоритм решения следующий. Присвоим 1-й вершине метку, равную 0, считая ее источником. Остальным вершинам присвоим метки, равные бесконечности. 35

1-й шаг. Смежными с вершиной a1 являются вершины a2, a3, a4, их меткам присвоим значения весов w(2) = 2, w(3) = 3 и w(4) = 6. Так как кроме прямых путей из вершины a1 в вершины a2, a3, a4 существуют и другие пути, то метки w(2) = 2, w(3) = 3 и w(4) = 6 будем считать временными. В первую очередь уточним метки вершин a2, a3, так как их метки меньше метки вершины a4. Возможно, метки от путей a1 → a4 → a2 и a1 → a4 → a5 → a2 из вершины a1 в вершину a2 будут меньше временной метки w(2) = 2, найденной для прямого пути. Сравним веса всех путей к вершине a2 по формуле w(2) = min{w(2), w(4) + v (4,2), w(4) + v (4,5) + v (5,2)} = min{2, 9,15} = 2 .

Все соседние вершины с вершиной a2 просмотрены, поэтому помечаем вершину a2 как обработанную (т. е. в дальнейшем ее параметры будут неизменными), найденную для нее метку w(2) = 2 будем считать постоянной. Аналогично для вершины a3 метка w(3) = 3 является постоянной, ее также считаем обработанной. Значения постоянных меток заносим в квадратики рядом с вершинами (рис. 4.3).

3 a1

6

5

5

2 a2

a6 5

5 2

a4 3

2

6

3

3 a3

10 a7

4 7

8

2

a5

Рис. 4.3. Граф для семи пунктов

2-й шаг. Для вершины a4 найдена временная метка от прямого пути из вершины a1 в вершину a4, однако в эту вершину можно попасть через вершины a2, a3, и возможно, метки для путей через последние вершины будут меньше временной метки w(4) = 6. Сравним метки вершины a4 для путей a1 → a4 , a1 → a2 → a4 и a1 → a3 → a4

36

по формуле w(4) = min{v (1,4), w(2) + v (2,4), w(3) + v (3,4)} = {6, 5, 8} = 5 и выберем наименьшую метку. Все соседи вершины a4 просмотрены, поэтому помечаем вершину a4 как обработанную, записав в квадрат вершины a4 постоянную метку 5. 3-й шаг. Смежными с вершинами a2, a3 являются вершины a4, a5, a6. Вершина a4 уже обработана. Вычислим метку вершин a5, a6 по формулам w(5) = min{ w(2) + v (2,5), w(4) + v (4,5)} = min{9, 9} = 9 , w(6) = min{ w(3) + v (3,6), w(4) + v (4,6)} = min{6,10} = 6 .

Наименьший суммарный вес у вершины a6 меньше, чем у вершины a5, поэтому помечаем вершину a6 как обработанную, записав в квадрат метку 6. Зная метку вершины a6, найдем постоянную метку вершины a5: w(5) = w(6) + v (6,5) = 8 . 4-й шаг. Смежными с вершиной a7 являются вершины a5, a6. Наименьший суммарный вес вершины a7 найдем по формуле w(7) = min{w(6) + v (6,7), w(5) + v (5,7)} = min{11,10} = 10 .

Кратчайший путь от вершины a1 до вершины a7 таков: a1 → a3 → a6 → a5 → a7 .

Вывод. Наиболее оптимальным путем с минимальным расходом топлива является путь a1 → a3 → a6 → a5 → a7 . Его суммарный вес равен 10. Из рисунка 4.3 видно, что найденный путь обходит все пункты, кроме пункта a4. Если к пути a1 → a3 → a6 → a5 → a7 добавить путь a1 → a2 → a4 , то построенное дерево является минимальным остовным, его суммарный вес равен 15. Пример. Выбрать кратчайший путь при обходе препятствий мобильным роботом. В процессе передвижения между роботом и препятствием должна сохраняться определенная дистанция. На рисунке 4.4 изображено поле передвижения робота с препятствиями. Все поле передвижения разбито на клетки. Размер клетки выбран равным минимальному расстоянию, на которое может приблизиться робот к препятствию. Если траектория робота проходит через клетку, которая имеет хотя бы одну точку соприкосновения с препятствием, то для 37

этой клетки вводится штраф, равный 10 условным единицам. Будем считать, что при прохождении других клеток робот получает штраф, равный одной условной единице. Определить кратчайший путь с учетом введенных штрафов, вычислить длину этого пути. Сопоставим процессу передвижения граф. Для этого на поле передвижения отметим точки ветвления. Передвижение из одной точки ветвления в другую возможно по крайней мере двумя путями. Всего таких точек одиннадцать, они пронумерованы цифрами 1, 2, 3, …, 11. Очевидно, что если между двумя траекториями, соединяющими соседние точки ветвления, нет препятствия, то эти траектории можно деформировать в одну траекторию.

Рис. 4.4. Поле препятствий. Оптимальная траектория подвижного объекта

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

Суммарные значения весов записываем внутри кружков. Так как во все кружки, кроме первого, можно попасть по крайней мере по двум путям, то суммарных значений у каждого кружка несколько. Внутрь кружков нужно записывать только наименьшую сумму весов ребер (рис. 4.6). На рисунке 4.6 стрелками показан оптимальный путь: 1 → 3 → 4 → 2 → 5 → 8 → 7 → 6 → 9 → 10 → 11. Сумма весов всех ребер, из которых составлен оптимальный путь, равна 4 + 7 + 4 + 8 + 6 + 5 + 6 + 4 + 7 + 7 = 58.

Рис. 4.5. Граф возможных ребер перемещений подвижного объекта

Рис. 4.6. Суммарные веса графа

39

5. МЕТОДЫ ОПТИМИЗАЦИИ Для описания динамики системы используют ее математическую модель. Поведение системы является оптимальным, если поставленная для нее цель достигается наилучшим способом. Чтобы установить, какое поведение системы является оптимальным, необходимо выбрать критерии оптимальности. Для этого нужно проанализировать все процессы, происходящие при функционировании системы, и выбрать такие ее параметры, которые наилучшим образом обеспечивают достижение поставленной цели. Параметрами оптимизации называются величины, входящие в математическую модель объекта оптимизации. Соотношения, задающие пределы изменения этих параметров, называют ограничениями. Эти ограничения можно записать в виде равенств или неравенств. Поэтому их называют ограничениями типа равенства или ограничениями типа неравенства. Критерием оптимальности может быть требование достижения наибольшего или наименьшего значения у одной или нескольких действительных функций f ( x) = f ( x1 , x2 ,..., xn ) → max(min)

(5.1)

параметров оптимизации x1 , x2 ,..., xn . Задача оптимизации является конечномерной, если множество параметров оптимизации является подмножеством конечномерного линейного пространства. Функция f ( x ) , количественно определяющая меру достижения цели оптимизации, называется целевой. Задачу конечномерной оптимизации называют задачей математического программирования, если целевая функция одна, в противном случае − многокритериальной (векторной) задачей оптимизации. Если целевая функция и ограничения являются линейными f ( x1 , x2 ,..., xn ) = a1 x1 + a2 x2 + ... + an xn → max(min) , (5.2) то говорят о задаче линейного программирования. Впервые такую задачу сформулировал и решил советский ученый Л. В. Канторович. Пример задачи оптимизации Два мобильных робота движутся по прямолинейным траекториям, которые пересекаются в точке О под углом в 60о (рис. 5.1). Первый робот движется из точки А со скоростью 3 м/с. Второй робот движется из точки В со скоростью 2 м/с. Расстояние от точки А до точки О равно 15 м, а расстояние от точки В до точки О равно 50 м. Определить наименьшее расстояние, на которое сближаются роботы. 40

Рис. 5.1. Траектории роботов

Первый робот проходит расстояние АО за 5 с. За это время второй робот переместится в точку Q, пройдя расстояние 10 м. Обозначим точками С и D положения роботов в некоторый момент времени. Если отсчитывать время с момента, когда первый робот достигнет точки О, то ОD = 3t, CO = QO – 2t = 40 – 2t. Расстояние между роботами найдем, используя теорему косинусов для треугольника ODC (рис. 5.1):

CD 2 = (3t ) 2 + (40 − 2t ) 2 − 2 ⋅ 3t (40 − 2t )cos(60o ) . Для определения кратчайшего расстояния достаточно взять производную от квадрата этого расстояния и приравнять ее нулю: 18t − 4(40 − 2t ) + 12t − 120 = 0 .

Из этого уравнения найдем время максимального сближения tm = 14,3 с. Кратчайшее расстояние между роботами равно CD = = 38,5 м. В большинстве случаев критерий оптимальности системы можно представить в виде целевой функции f(x). Тогда задача определения оптимального решения формулируется следующим образом: найти максимум или минимум целевой функции f ( x ) → max(min) ,

где x является точкой некоторого множества X ⊂ R n в n-мерном евклидовом пространстве. Множество X называется множеством допустимых решений. Если множеством допустимых решений является все n-мерное пространство X ⊂ R n , то задача поиска экстремума 41

называется безусловной. В противном случае, когда множество допустимых решений ограничено X ⊂ R n , задача поиска экстремума называется условной. Область допустимых решений X определяется системой линейных или нелинейных ограничений, накладываемых на x: gi ( x) ≤ ci , i=1, 2, …, m,

(5.3)

где ci − некоторые постоянные. Определение. Точка x∗ ∈ X в n-мерном евклидовом пространстве R n называется точкой глобального максимума (минимума) функции f ( x ) на множестве X ⊂ R n , если f ( x∗ ) ≥ f ( x)

( f ( x∗ ) ≤ f ( x) )

(5.4)

для всех x принадлежащих X ( ∀x ∈ X ). Точка x ∈ X называется точкой локального максимума (минимума) функции f(x) на множестве X, если существует такая окрестность G ( x∗ ) точки x*, для которой условие (5.4) выполняется для всех x, принадлежащих этой окрестности. ∗

5.1. Поиск экстремума в случае функции одной переменной Необходимое условие локального экстремума. Если x∗ ∈ R − точка локального экстремума и функция f (x) дифференцируема в ней, то производная от f (x) в этой точке равна нулю: f ′ ( x ) x = x∗ = 0 .

(5.5)

Достаточное условие локального экстремума. Если функция f(x) дифференцируема в точке x∗ ∈ R k раз, k > 1, причем f ′ ( x) x= x∗ = f ′′ ( x) x= x∗ = ... = f k −1 ( x) x= x∗ = 0 , f k ( x) x= x∗ ≠ 0 , (5.6)

то при четном k и f k ( x) x= x∗ > 0 точка x ∗ является точкой локального минимума, в случае f k ( x) x= x∗ < 0 − точкой локального максимума. Если k – нечетное число, то x ∗ – точка перегиба. Определение. Функция f ( x ) в интервале (a, b) называется унимодальной, если у нее в этом интервале только один экстремум. Интервал (a, b), в котором функция f ( x ) унимодальная, можно уменьшить при поиске точки максимума x ∗ , принимая во внимание следующие выводы для любых его точек x1 < x2 : 42

∗ 1) если f ( x1 ) > f ( x2 ) , то точка максимума xmax принадлежит ин∗ ∗ тервалу ( a, x2 ) , xmax ∈ (a, x2 ) , точка минимума xmin находится в интервале ( x1 , b) ; ∗ принадлежит ин2) если f ( x1 ) < f ( x2 ) , то точка максимума xmax ∗ тервалу ( x1 , b) , точка минимума xmin находится в интервале ( a, x2 ) ; 3) если f ( x1 ) = f ( x2 ) , то x∗ ∈ ( x1 , x2 ) . Приведенный метод уменьшения интервала неопределенности используется далее для поиска ее экстремума.

5.1.1. Методы оптимизации нулевого порядка для функции одной переменной 5.1.1а. Метод дихотомии Если известно, что внутри интервала (a0 , b0 ) функция f(x) унимодальная, то алгоритм нахождения ее минимума следующий. 1. Вычисляем координаты точек (рис. 5.2): x1 =

1 ( a + b − δ ) , x2 = 12 ( a0 + b0 + δ) , 2 0 0

(5.7)

где δ – малое положительное число, δ f ( x2 ) , координаты границ нового интервала ak +1 = x1 и bk +1 = bk .

– удаляем правую часть отрезка ( , )

I шаг

– удаляем правую часть отрезка ( , )

II шаг III шаг

– удаляем левую часть отрезка (a2 , b2)

VI шаг

– условие остановки выполнено, конец вычислений Рис. 5.2. Метод деления отрезка пополам

Поиск заканчивается, если длина интервала неопределенности на текущей итерации становится меньше заданной точности: bn − an < ε . После n итераций интервал неопределенности уменьшается до значения Ln = L1 2n , где L1 = b − a . Полагая ε = Ln , найдем число шагов, с помощью которых достигается заданная точность: n=

1 b−a . ln ln 2  ε 

Пример решения задачи Используя метод дихотомии, вычислить минимум функции f ( x ) = ln( x ) + 3cos( x ) в интервале (2,5, 3,5) c точностью ε = 0,01 . Перед решением задачи полезно построить график функции и на качественном уровне выяснить, где находятся экстремумы. Далее расчеты проводятся в МАТLAB. x = 2.5:.01:3.5; y = log(x)+3*cos(x); plot(x,y) 44

Из графика рисунка 5.3 видно, что минимум находится при x ≈ 3 . Положим а0 = 2,5, b0 = 3,5. Первый шаг.

Рис. 5.3. График функции f ( x) = ln( x) + 3cos( x)

k = 1. По формуле (5.7), полагая δ = 0,005 , найдем: x1 = 2,995 , x2 = 3,005 , f ( x1 ) = −1,871 , f ( x2 ) = −1,872 . Так как f ( x1 ) > f ( x2 ) , то минимум расположен справа от точки x2 , поэтому удаляем отрезок (a0, x1), в результате координаты концов нового интервала таковы: a1 = x1 = 2,995 и b1 = b0 = 3,5 . Проверяем условие остановки | a1 − b1 | 2 = 0,253 > ε . Оно не выполняется. Перейдем ко второму шагу. k = 2. Вычислим точки x1 = 3,243 , x2 = 3,253 , а также значения функций в этих точках f ( x1 ) = −1,808 , f ( x2 ) = −1,802 . Так как f ( x1 ) < f ( x2 ) , то минимум расположен слева от точки x1 , поэтому координаты концов нового интервала таковы: a2 = a1 = 2,995 и b2 = x2 = 3,253 . Условие остановки | a2 − b2 | 2 = 0,129 > ε не выполняется. Третий шаг. k = 3. x1 = 3,119 , x2 = 3,129 , f ( x1 ) = −1,862 , f ( x2 ) = −1,859 . Так как f ( x1 ) < f ( x2 ) , то координаты концов нового интервала a3 = a2 = 2,995 и b3 = x2 = 3,129 . Проверка условия остановки: | a3 − b3 | 2 = 0,067 > ε . Четвертый шаг. 45

k = 4. x1 = 3,0569 , x2 = 3,067 , f ( x1 ) = −1,872 , f ( x2 ) = −1,871 . Так как f ( x1 ) < f ( x2 ) , то координаты концов нового интервала a4 = a3 = 2,995 и b4 = x2 = 3,067 . Проверка условия остановки: | a4 − b4 | 2 = 0,036 > ε . Пятый шаг. k = 5. x1 = 3,0259 , x2 = 3,0359 , f ( x1 ) = −1,8727 , f ( x2 ) = −1,8728 . Так как f ( x1 ) > f ( x2 ) , то координаты концов нового интервала a5 = x1 = 3,026 и b5 = b4 = 3,067 . Проверка условия остановки: | a5 − b5 | 2 = 0,021 > ε . Шестой шаг. k = 6. x1 = 3,041 , x2 = 3,051 , f ( x1 ) = −1,8726 , f ( x2 ) = −1,8722 . Так как f ( x1 ) < f ( x2 ) , то координаты концов нового интервала a6 = a5 = 3,026 и b6 = x2 = 3,051. Проверка условия остановки: | a6 − b6 | 2 = 0,0127 > ε . Седьмой шаг. k = 7. x1 = 3,034 , x2 = 3,044 , f ( x1 ) = −1,8728 , f ( x2 ) = −1,8726 . Так как f ( x1 ) < f ( x2 ) , то координаты концов нового интервала a7 = a6 = 3,026 и b7 = x2 = 3,044 . Проверка условия остановки: | a7 − b7 | 2 = 0,009 < ε . Условие остановки выполнено. Минимум функции найдем по формуле x∗ = (a7 + b7 ) 2=3,035 . Ответ: x ∗ = 3,035 , f ( x∗ ) = −1,873 . Проверим полученное решение с помощью МАТLAB. Минимум функции f ( x ) = ln( x ) + 3cos( x ) в интервале (2.5, 3.5) найдем с помощью функции fminbnd. >>f=@(x)log(x)+3*cos(x); >>[x, f]=fminbnd(f, 2.5, 3.5) Результат вычислений: x ∗ = 3,032, f ( x∗ ) = −1,873 . 5.1.1б. Метод золотого сечения Данный метод позволяет найти экстремум унимодальной функции с меньшими вычислительными затратами, чем метод дихотомии. Это возможно потому, что в процессе уменьшения интервала неопределенности возникает последовательность вложенных друг в друга отрезков. Причем один из концов нового отрезка совпадает с концом старого, поэтому новое значение функции нужно будет вычислять только для одного конца отрезка. Число вычислений сократится вдвое. Для определенности будем искать минимум функции. Разделим интервал (a, b) (рис. 5.4) точкой d, расположенной ближе к правому краю, в пропорции 46

ab ad = . ad db Такое разделение называется золотым сечением.

a

d

c

b

Рис. 5.4. Точки c, d – первая и вторая точки золотого сечения.

На каждом шаге итерации метода золотого сечения это отношение остается постоянным. Полагая ab = 1, ad = x, имеем 1 x = , x 1− x откуда x = ad = ( 5 − 1) 2 . С другой стороны, отрезок (a, d) можно разделить точкой c, которая расположена симметрично с точкой d относительно центра отрезка (рис. 5.4). Точка c делит отрезок (a, b) в той же пропорции, расстояние до этой точки равно ac = (3 − 5) 2 . В случае произвольной длины отрезка (a, b) для точек деления найдем 3− 5 5 −1 (b − a ) , x2 = a + (b − a) . (5.8) x1 = a + 2 2 Найдем минимум функции с помощью метода золотого сечения. Алгоритм уменьшения интервала неопределенности (a, b) для метода золотого сечения ничем не отличается от алгоритма метода золотого сечения. Обозначим концы начального отрезка a0 = a, b0 = b. Если f ( x1 ) < f ( x2 ) , то минимум расположен слева от точки x2 , поэтому сохраняем отрезок (a0 , x2 ) , а отрезок ( x2 , b0 ) отбросим (рис. 5.2). В случае, когда f ( x1 ) > f ( x2 ) , нужно отбросить отрезок (a0 , x1 ) . У полученного после этого отрезка ( x1 , b0 ) переобозначим концы: левый конец обозначим буквой a1 , а правый − b1 , затем поделим отрезок ( a1 , b1 ) в тех же пропорциях: 3− 5 5 −1 (b1 − a1 ) , x2I = a1 + (b1 − a1 ) . x1I = a1 + 2 2 Пусть после деления отрезка ( a1 , b1 ) точками x1I , x2I для этих точек f ( x1I ) < f ( x2I ) . Минимум находится слева от точки x2I , поэтому отбросим отрезок ( x2I , b1 ) . Концы нового отрезка обозначим a2 = a1 , 47

b2 = x2I . Если на втором шаге после деления отрезка (a2 , b2 ) точками x1II , x2II выполняется f ( x1II ) > f ( x2II ) , то отбрасываем отрезок (a2 , x1II ) . После трех шагов видно, что значения f ( x1I ), f ( x2II ), f ( x2III ) можно не вычислять, так как они равны f ( x2 ) . Как отмечалось, число вычислений из-за этого сокращается вдвое. На каждой итерации длина интервала неопределенности уменьшается в ( 5 − 1) 2 = 0,618 раз. Потому после n итераций ошибка в определении точки минимума равна ε = bn − an = 0,618n−1 (b − a ) .

Если задана погрешность ε , то требуемое число шагов n >1+

ln ( (b − a ) ε ) . ln 0,618

Пример решения задачи Используя метод золотого сечения, вычислить минимум функции g ( x) = x 2 e − cos( x ) − 0,3x в интервале (–0,5; 0,5) c точностью ε = 0,01 . Построив график (рис. 5.5), отметим, что минимум находится при x ≈ 0,35 .

Рис. 5.5. График функции g ( x ) = x 2 e − cos( x ) − 0, 3 x

Первый шаг. По формуле (5.8) найдем x1 = −0,1180, x2 = 0,1180 , g ( x1 ) = 0,0406 , g ( x2 ) = −0,0302 . Так как g ( x1 ) > g ( x2 ) , то минимум функции находится в интервале (0,118, 0,5), поэтому удалим отрезок (–0,5; –0,118). Координаты концов нового интервала таковы: a1 = x1 = −0,1180 и b1 = b0 = 0,5 . Проверка условия остановки: | a1 − b1 | 2 = 0,3090 > ε = 0,01. Условие остановки не выполнено. 48

Второй шаг. Находим x1 = 0,1180 , x2 = 0,2639 , g ( x1 ) = −0,0302 , g ( x2 ) = −0,0527 . Так как g ( x1 ) > g ( x2 ) , то координаты концов нового интервала a2 = x1 = 0,118 и b2 = b1 = 0,5 . Проверка условия остановки: | a2 − b2 | 2 = 0,191 > ε = 0,01. Условие остановки не выполнено. Третий шаг. Вычисляем x1 = 0,2639 , x2 = 0,3541 , g ( x1 ) = −0,0527 , g ( x2 ) = −0,0572 . Так как g ( x1 ) > g ( x2 ) , то координаты концов нового интервала a3 = x1 = 0,2639 и b3 = b2 = 0,5 . Проверка условия остановки: | a3 − b3 | 2 = 0,1180 > ε . Условие остановки не выполнено. x1 = 0,354 , x2 = 0,410 , g ( x1 ) = −0,0572 , Четвертый шаг: g ( x2 ) = −0,0558 . Так как g ( x1 ) < g ( x2 ) , то координаты концов нового интервала a4 = a3 = 0,2639 и b4 = x2 = 0,4098 . Проверка условия остановки: | a4 − b4 | 2 = 0,0729 > ε = 0,01. Условие остановки не выполнено. x1 = 0,3197 , x2 = 0,3541 , Пятый шаг: g ( x1 ) = −0,0564 , g ( x2 ) = −0,0572 . Так как g ( x1 ) > g ( x2 ) , то координаты концов нового интервала a5 = x1 = 0,3197 и b5 = b4 = 0,4098 . Проверка условия остановки: | a5 − b5 | 2 = 0,045 > ε = 0,01 . Условие остановки не выполнено. x1 = 0,3541, x2 = 0,3754 , g ( x1 ) = −0,0572 , Шестой шаг: g ( x2 ) = −0,0570 . Так как g ( x1 ) < g ( x2 ) , то координаты концов нового интервала a6 = a5 = 0,3197 и b6 = x2 = 0,3754 . Проверка условия остановки: | a6 − b6 | 2 = 0,028 > ε = 0,01 . Условие остановки не выполнено. x1 = 0,3409 , x2 = 0,3541 , g ( x1 ) = −0,0570 , Седьмой шаг: g ( x2 ) = −0,0572 . Так как g ( x1 ) > g ( x2 ) , то координаты концов нового интервала a7 = x1 = 0,3409 и b7 = b6 = 0,3754 . Проверка условия остановки: | a7 − b7 | 2 = 0,045 > ε . Условие остановки не выполнено. x1 = 0,3541, x2 = 0,3622 , g ( x1 ) = −0,0572 , Восьмой шаг: g ( x2 ) = −0,0572 . Так как g ( x1 ) = g ( x2 ) , то координаты концов нового интервала a8 = x1 = 0,3541 и b8 = x2 = 0,3622 . Проверка условия остановки: | a8 − b8 | 2 = 0,004 < ε = 0,01 . Условие остановки выполнено. Конец. 1 1 Вычислим x* = ( а8 + b8 ) = ( 0,3541 + 0,3622) = 0,3582 . 2 2 Ответ: у функции g ( x) = x 2 e − cos( x ) − 0,3x в интервале (–0,5; 0,5) существует минимум g ( x∗ ) = −0,057 в точке x∗ = 0,358 . 49

Проверим это решение с помощью МАТLAB: >>f=@(x)x^2*exp(-cos(x))-0.3*x; >>[x, f] = fminbnd(f, -0.5, 0.5) x∗ = 0,3597 . 5.1.1в. Метод Фибоначчи Этот метод позволяет уменьшить число вычислений вдвое по сравнению с методом дихотомии [3]. На первом шаге итерации внутренние точки делят интервал неопределенности в пропорции a0b0 a0 d 0 F = = n , a0 d 0 d 0b0 Fn−1

(5.9)

где F1 = 1, F2 = 1,…, Fn+ 2 = Fn+1 + Fn , n>1, Fn – числа Фибоначчи. Алгоритм деления отрезков на произвольном шаге итерации такой же, как в методе золотого сечения (рис. 5.5). Из (5.9) имеем d 0 = a0 + (b0 − a0 )

Fn−1 . Fn

Подставив в эту формулу Fn = Fn−1 + Fn−2 и учитывая, что внутренние точки равноудалены b1 − d1 = c1 − a1 , найдем вторую точку: c0 = a0 + (b0 − a0 )

Fn−2 . Fn

Координаты внутренних точек после второго шага равны: d1 = a1 + (b1 − a1 )

Fn−2 , Fn−1

c1 = a1 + (b1 − a1 )

Fn−3 . Fn−1

По индукции найдем координаты внутренних точек на k-том шаге итерации: d k = ak + (bk − ak ) ck = ak + (bk − ak )

50

Fn−k −1 , Fn−k

Fn−k −2 . Fn−k

(5.10)

Задаваясь погрешностью, число шагов найдем с помощью неравенства b0 − a0 . (5.11) ε В отличие от методов дихотомии и золотого сечения, в методе Фибоначчи не нужно на каждом шаге проверять критерий остановки. Количество шагов определяется заранее по формуле (5.11). Fn ≥

5.1.2. Задачи для самостоятельной работы Используя метод дихотомии, метод золотого сечения или метод Фибоначчи, с точностью ε = 0.01 вычислить экстремум представленных функций: 1) g(x) = x3 – cos (x) + 1, вычислить экстремумы в интервале (–0.5, 0.5); 2) g(x) = x2 + 10sin(x) – 12, вычислить экстремумы в интервалах (1.5, 2.5) и (–2.0, –1.0); 3) g(x) = ln(x) – x2, вычислить экстремум в интервале (0.1, 1.5); 4) g ( x) = (sin( x) − 1) 2 − 0.5 = 0 , вычислить экстремум в интервале (–2.0, –1.0); 5) g(x) = (ln(x))2, вычислить экстремум в интервале (0.5, 1.5); 6) g(x) = (ln(x) – 1)sin(x) + 0.88, вычислить экстремум в интервале (0.5, 1.0) и максимум в интервале (2.5, 3.5); 7) g(x) = 3x2 + x – cos(x2), вычислить экстремум в интервале (–0.5, 0.5); 2 8) g ( x) = x 2 e − x + 1 , вычислить экстремум в интервале (–0.5, 0.5) и максимум в интервале (0.5, 1.5); 9) g ( x) = (ln( x)) 2 + x 3 вычислить экстремум в интервале (0.1, 1.0); 10) g(x) = ln(x) + 3cos(x), вычислить экстремум в интервале (0.1, 1.0); 11) g(x) = ln(x)(1 – сos(x)), вычислить экстремумы в интервалах (0.1, 1.0) и (3.0, 4.0); 12) g(x) = ln(x + 1)сos(x), вычислить экстремумы в интервалах (0.1, 1.0) и (3.0, 4.0). 51

13) g ( x) = e( x

2 + 0.3 x )

− x , вычислить экстремум в интервале (0.0, 0.5);

2

14) g(x) = x – x + 0.3cos(x), вычислить экстремум в интервале (0.0, 1.0); 2 15) g ( x) = (1 − 0.5 x)e − x , вычислить экстремум в интервале (–0.5, 0.5). При решении задач выбрать δ < ε = 0.01. 5.1.3. Методы более высокого порядка Все описанные далее методы основываются на теореме о том, что если x∗ является точкой экстремума, то для дифференцируемой функции f ′ ( x) x= x∗ = 0 . В случае f ′′ ( x) x= x∗ > 0 точка x∗ является точкой минимума. Если f ′′ ( x) x= x∗ < 0 , то точка x∗ является точкой максимума. 5.1.3а. Метод касательных

y

0

f (а1)

a1

Для нахождения минимума применим следующий алгоритм. Построим касательные к кривой (рис. 5.6) в точках a1 = a, b1 = b, которые пересекаются в точке с координатами x = c1 , y = f (c1) . Если f ′ ( x) x=c1 > 0 , то

f (b1)

c1

b1

x

a2 = a1, b2 = с1. f ′ ( x) x=c1 < 0 , то

Если a2 = c1 ,

b2 = b1 . Если в этой точке f ′ ( x) x=c1 = 0 , то задача ре-

Рис. 5.6. Метод касательных

шена. Повторяем этот алгоритм до тех пор, пока не выполнится один из критериев остановки bk − ak ≤ ε , f (bk ) − f (ak ) ≤ ε . 5.1.3б. Метод Ньютона

Этот метод основан на квадратичной аппроксимации функции f(x) в точке xk. Ее применение дает 52

F ( x) = f ( xk ) + f ′ ( x) x= xk ( x − xk ) + f ′′ ( x) x= xk ( x − xk ) 2 2 . Экстремум функции F ( x) найдем, приравняв ее производную нулю:

f ′ ( x) x= xk + f ′′ ( x) x= xk ( x − xk ) = 0 . Полагая x = xk +1 , имеем xk +1 = xk −

f ′ ( x) x= xk

f ′′ ( x) x= xk

.

Геометрическая иллюстрация поиска решения уравнения f ′(x) = 0 дана на рисунке 5.7: задаем начальную точку x0, проводим в этой точке касательную к функции f ′(x) , находим точку пересечения этой касательной с осью Ox, обозначаем ее x1 . Затем проводим касательную к функции f ′(x) в точке x1 и т. д. Метод Ньютона чувствителен к выбору начальной точки, ее нужно выбирать достаточно близко к опредеРис. 5.7. Метод Ньютона ляемому решению.

5.1.3в. Метод секущих Если в методе Ньютона вместо второй производной воспользоf ′ ( x) x= xk − f ′ ( x) x= xk −1 ваться ее приближением f ′′ ( x) x= xk = , то получим xk − xk −1 метод секущих, этот метод также называют методом хорд: xk +1 = xk +

xk − xk −1 f ′( xk ) , f ′( xk ) − f ′( xk −1 )

где f ′( xk ) = f ′ ( x) x= xk . В этом случае выражение описывает точку пересечения прямой, проходящей через точки xk , f ′( xk ) и xk −1 , f ′( xk −1 ) . 53

5.1.4. Задачи для самостоятельной работы

Одним из методов предыдущего раздела с точностью ε = 0,01 определить экстремум следующих функций: 1) f(x) = x2 – sin(x) + 1 в интервале (0.0, 1.0); 2) f(x) = 2 – x + 1.5cos(x) в интервале (–1.0, 0.0); 3) f(x) = ln(x)sin(x) в интервале (1.5, 2.5); 4) f(x) = x2 – arctg(x) в интервале (0.0, 1.0); 5) f(x) = x3 + exp(–x) в интервале (0.0, 1.0); 6) f ( x) = (1 − x) 2 ch( x) в интервале (–1.0, 1.0); 7) f(x) = x2arctg(x) – 0.5ln(x) в интервале (0.1, 1.0); 8) f(x) = (ln(x))2 + x3 в интервале (0.1, 1.0); 9) f(x) = x + 1.5cos(x) в интервале (0.0, 1.0); 10) f ( x) = (sin( x) − 1) 2 − 0.5 в интервале (–2.0, –1.0). Методом Ньютона найти корень уравнения: 1) x + 1.5cos(x) = 0 в интервале (–1.0, 0.0); 2) ln(x) + sin(x) = 0 в интервале (0.1, 1.0); 3) (ln(x))2 – x = 0 в интервале (0.1, 1.0); 4) ( x − 1) 2 − x

1 + x 2 = 0 в интервале (0.0, 1.0);

5) (sin( x) − 1) 2 − 0.5 = 0 в интервале (0.0, 1.0); 6) exp(–x2) – x3 = 0 в интервале (0.0, 1.0); 7) exp(–x2) –sin(x) = 0 в интервале (0.0, 1.0); 8) exp(− x 2 ) − tg( x) = 0 в интервале (0.0, 1.0); 9) ln(x)sin(x) = 0 в интервале (0.5, 1.5); 10) ( x + 1)

1 + x 2 = 0 в интервале (–2.0, 0.0).

5.2. Методы многомерной безусловной оптимизации Рассмотрим дважды дифференцируемую функцию f ( x) многих переменных x1 , x2 ,..., xn в n-мерном евклидовом пространстве R n . Определим точки локальных минимумов и максимумов этой функции в R n . Необходимые и достаточные условия безусловного экстремума для функции многих переменных. Если x∗ ∈ R n является точкой локального максимума (минимума) дифференцируемой функции f(x), тогда ее градиент в точке x∗ равен нулю: 54

∇f ( x∗ ) = 0 , или

∂f ( x∗ ) = 0 , i=1, 2, 3,…, n. ∂xi

(5.12)

Точка x∗ , удовлетворяющая условию (5.12), называется стационарной. Пусть f(x) дважды дифференцируемая функция многих переменных. Матрицей Гессе от этой функции в точке x называется матрица ее вторых производных ∂f ( x) ∂f ( x) ∂f ( x) ... ∂x1∂x1 ∂x1∂x2 ∂x1∂xn ∂f ( x) ∂f ( x) ∂f ( x) ... ∂x2 ∂xn . H ( x) = ∂x2 ∂x1 ∂x2 ∂x2 (5.13) ... ... ... ... ∂f ( x) ∂f ( x) ∂f ( x) ... ∂xn ∂x1 ∂xn ∂x2 ∂xn ∂xn Если для любого Δx квадратичная форма матрицы Гесса является положительно (отрицательно) определенной либо равной нулю: ΔxT H ( x)Δx > 0 ( ΔxT H ( x)Δx ≤ 0 ), где Т – символ операции транспонирования, то матрицу Гессе называют положительно (отрицательно) определенной. Достаточное условие экстремума [4]. Пусть функции f ( x) в точке x∗ ∈ R n дважды дифференцируема, ее градиент равен нулю, а матрица Гессе является положительно (отрицательно) определенной: ∇f ( x∗ ) = 0 и ΔxT H ( x)Δx > 0

( ΔxT H ( x)Δx < 0 ),

(5.14)

где Δx = x − x∗ , тогда точка x∗ является точкой локального минимума (максимума) функции f ( x) . Существует следующий критерий проверки достаточного условия экстремума (критерий Сильвестра). Для того чтобы точка x∗ являлась точкой локального минимума, необходимо и достаточно, чтобы знаки угловых миноров были строго положительны: Δ1 > 0 , Δ 2 > 0 , …, Δ n > 0 . Для матрицы с элементами g ik , где i, k=1, 2, …, n, угловыми называют миноры Δ1 = g11 , g11 ... g1n Δ2 = , … , Δn =    . g 21 g 22 g n1 ... g nn g11 g12

55

Для того чтобы точка x∗ являлась точкой локального максимума, необходимо и достаточно, чтобы знаки угловых миноров чередовались, начиная с отрицательного: Δ1 < 0 , Δ 2 > 0 , Δ3 < 0 ,…, (−1) n Δ n > 0 . Постановка задачи многомерной безусловной оптимизации Пусть f ( x) – функция многих переменных x1 , x2 ,..., xk ,..., xn и задана начальная точка c1 , c2 ,..., cn . Найти точку минимума функции f ( x) с точностью | x k +1 − x k |≤ ε . Для решения этой задачи необходимо построить убывающую последовательность значений f ( x 0 ) > f ( x1 ) > ... > f ( x k ) > ... рассматриваемой функции. Последовательность с элементами x 0 , x1 , x 2 , ..., x k , ... этого неравенства называется релаксационной. Численные методы, которые используют для нахождения такой последовательности, относят к методам спуска. При решении задачи минимизации функции f ( x) этим методом переход от точки x k к точке x k +1 означает спуск с более высокого потенциального уровня f ( x k ) = f k на более низкий: f ( x k +1 ) = f k +1 < f k . 5.2.1. Метод покоординатного спуска

Минимизация этим методом осуществляется циклами по n шагов в каждом. Пусть в конце k – 1-го цикла вычислен элемент x k = ( x1k , x2k ,..., xnk )T . Тогда минимизация на k-м цикле функции f ( x) по переменным x1 , x2 ,..., xi ,..., xn заключается в следующем. 1. Зафиксировав все переменные x2 = x2k , x3 = x3k ,..., xn = xnk , кроме x1 , проводим минимизацию функции f1 ( x1 ) = f ( x1 , x2k ,..., xnk ) по x1 . Находим вектор ( x1k +1 , x2k ,..., xnk )T , при котором функция f1 ( x1 ) достигает минимума, на этом первый шаг окончен. 2. Проводим минимизацию по переменной x2 , зафиксировав переменные x1 = x1k +1 , x3 = x3k ,..., xn = xnk . Находим вектор ( x1k +1 , x2k +1 ,..., xnk ) , при котором функция f 2 ( x2 ) = f ( x1k , x2 ,..., xnk ) достигает минимума. Продолжая, получим для предпоследнего шага x1k +1 , x2k +1 ,..., xnk−+11 , xnk . 3. На последнем шаге фиксируем x1 = x1k +1 , x2 = x2k +1 ,..., xn−1 = xnk−+11 и проводим минимизацию по xn . Получаем x1k +1 , x2k +1 ,..., xnk +1 . На этом k-й цикл закончен. Процесс повторяется до тех пор, пока не выполнится условие остановки | x k +1 − x k |≤ ε или | f ( x k +1 ) − f ( x k ) |≤ ε . 56

Пример. Найти минимум функции многих переменных f ( x1 , x2 , x3 ) = 2 x12 + 3 x22 + x32 + x1 + 3 x2 методом покоординатного спуска. Точность ε = 0.1 , критерий остановки | x k +1 − x k |≤ ε . Для такой точности выберем шаг 0.1. Начальная точка x = (0,0,0). Цикл 1. Шаг 1. Проводим минимизацию по переменной x1, зафиксировав остальные переменные x2 = 0, x3 = 0. Выберем интервал −1 ≤ x1 ≤ 1 и вычислим значения функции f ( x1 ,0,0) , полагая последовательно x1 = −1, − 0.9, − 0.8, ..., −0.1, − 0.0, 0.1, ...,0.8, 0.9,1.0 .

Для вычисления воспользуемся функцией МАТLAB 2.*([ − 1:.1:1]).^2+3.*0.^2+0.^2+[ − 1:.1:1]+3.*0. Ее применение дает следующие значения функции f ( x1 ,0,0) : 1.00, 0.720, 0.480, 0.280, 0.120, 0, –0.080, –0.120, –0.120, –0.080, 0, ... Минимум функции f ( x1 ,0,0) , равный –0.12, достигается при x1 = –0.3 Шаг 2. Проводим минимизацию по x2, зафиксировав остальные переменные x1 = −0.3, x3 = 0 . Вычислим значения функции f (−0.3, x2 ,0) в интервале −1 ≤ x2 ≤ 1 с шагом 0.1. Вычисление с помощью МАТLAB 2.*0.3^2+3.*([ − 1:.1:1]).^2+0.^2 − 0.3+3.*([ − 1:.1:1]) дает следующие значения функции f (−0.2, x2 ,0) : − 0.12, − 0.39, − 0.60, − 0.75, − 0.84, − 0.87, − 0.84.

Минимум функции f (−0.3, x2 ,0) достигается при x2 = −0.5 . Шаг 3. Проводим минимизацию по x3, зафиксировав остальные переменные x1 = –0.3, x2 = –0.5. Вычислим значения функции f (−0.3, −0.5, x3 ) в интервале −1 ≤ x3 ≤ 1 с шагом 0.1. Вычисление с помощью МАТLAB 2.*0.3.^2+3.*0.5.^2+([ − 1:.1:1]).^2 − .3 − 3*0.5 дает следующие значения функции f (−0.3, −0.5, x3 ) : 0.13, –0.06, –0.23, –0.38, –0.51, –0.62, –0.71, –0.78, –0.83, –0.86, –0.87,–0.86. Минимум функции f (−0.3, −0.5, x3 ) достигается при x3 = 0.0. Конец первого цикла. Координаты точки, в которой функция f ( x1 , x2 , x3 ) минимальна в конце этого цикла, таковы: x1 = –0.3, x2 = –0.5, x3 = 0.0. 57

Критерий остановки | x1 − x 0 |= 0.67 > 0.1 в конце первого цикла не выполняется, поэтому переходим ко второму циклу. Цикл 2. Шаг 1. Проводим минимизацию по x1 , зафиксировав остальные переменные x2 = −0.5, x3 = 0.0 . Вычислим значения функции f ( x1 , −0.5,0.0) в интервале −0.5 ≤ x1 ≤ 0.0 с шагом 0.1. Вычисления с помощью функции МАТLAB 2.*([ − 0.5:.1:0]).^2+3.*0.5^2+0^2+([ − 0.5:.1:0]) − 3.*0.5 дают следующие значения функции f ( x1 , −0.5,0.0) : − 0.75, − 0.83, − 0.87, − 0.87, − 0.83.

Минимум этой функции остается прежним: x1 = −0.3 . Шаг 2. Минимизация функции f (−0.3, x2 , 0.0) по x2 в интервале −1.0 ≤ x2 ≤ 0.0 с шагом 0.1 проведена ранее. Минимум функции f (−0.3, x2 ,0.0) , как и прежде, достигается при x2 = −0.5 . Шаг 3. Минимизация функции f (−0.3, −0.5, x3 ) по переменной x3 также проведена ранее. Поэтому в конце второго цикла точка, при которой функция f ( x) = 2 x12 + 3 x22 + x32 + x1 + 3 x2 минимальна, определяется координатами

x1 = −0.3 , x2 = −0.5 , x3 = 0.0 . Критерий остановки | x 2 − x1 |≤ 0.1 в конце второго цикла выполняется. Ответ: Минимум функции f ( x) = 2 x12 + 3 x22 + x32 + x1 + 3 x2 достигается в точке x = (−0.3, − 0.5, − 0.0) , значение этого минимума равно f ( x) = −0.87 . Более точные вычисления дают: f ( x) = − 7 8 при x = (−1 4, − 1 2, − 0) . Проверим полученное решение с помощью МАТLAB: >>g=@(x)2*x(1)^2+3*x(2)^2+x(3)^2+x(1)+3*x(2); >>[x, f]= fminsearch(g, [0.0, 0.0, 0.0]) x = -0.2500 -0.5000 -0.0000 f = -0.8750 Полученное решение с заданной точностью совпадает с предыдущим. Пример решения задачи поиска минимума функции нескольких переменных в МАТLAB с помощью команды fminsearch. Найти значения переменных x1, x2, при которых функция f(x) = = ( x22 + cos( 2 x1 )) 2 + 0.1x1 + 1 достигает минимума. Проведем сначала 58

анализ поведения этой функции, построив ее линии уровня при помощи следующих команд: >> [x1, x2] = meshgrid( − 3:.1:3, − 1:.1:1); >>f=(x2.^2+(cos(2*x1))).^2 − 0.1.*x1+1; >> [c, h] = contour(x1,x2,f); >>set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2) >>colormap (gray) На рисунке 5.8 изображены линии уровня, по которым можно судить о том, где расположены минимумы. Значение минимума можно вычислить точно, выбрав начальное приближение вблизи интересующего нас минимума. Так, если при нахождении минимума функции выберем начальное приближение x1 = −1, x2 = 0 в левой полуплоскости, то вычисление в МАТLAB дает: >>g=@(x)(x(2).^2+(cos(2*x(1))).^2+0.1.*x(1)+1); >> [x, f]= fminsearch(g,[ − 1.0, 0.0]) x = − 0.7979 0.000 f = 0.9208 3

4

4

4

3

1

1

1

2

2

3

1

2

0.6

3

0.8

2

0.4

2

1

0.2

1

2

1

2

1

2

-0.2

1

2

0

2

-0.4 -0.6 1

3 3

1

1

-1

3

-2

2

4

2

4

-1 -3

2

3

-0.8 0

1

2

4 3

Рис. 5.8. Линии уровня функции f ( x ) = ( x 22 + cos( 2 x1 )) 2 + 0.1 x1 + 1

Если же начальное приближение выберем в правой полуплоскости x1 = 1, x2 = 0 , то эти вычисления дают: 59

>> [x, f]= fminsearch(g, [1.0, 0.0]) x = 0.7729 0.0000, f = 1.0779 Выбирая последовательно подходящие начальные приближения, можно найти все точки минимумов и максимумов функции.

5.3. Методы первого порядка при поиске экстремума функций многих переменных Теория этих методов основана на том, что градиент функции в любой точке направлен в сторону наибольшего локального увеличения f (x). Поэтому при поиске минимума f (x) следует двигаться от начальной точки в направлении, противоположном направлению градиента ∇f ( x) , т. е. в направлении наискорейшего спуска: x k +1 = x k − λ k ∇f ( x k ) ,

(5.15)

где t – шаг на k-й итерации, (k = 1, 2, ...). Так как для каждого шага f ( x k +1 ) < f ( x k ) и значение функции f ( x) ограничено снизу, то ее значение f ( x k ) стремится к некоторому пределу. Как только одновременно выполняются условия x k +1 − x k ≤ ε , | f ( x k +1 ) − f ( x k ) |≤ ε , процесс останавливается. Рассмотрим варианты этого метода, которые отличаются способом выбора длины шага: градиентный метод с постоянным шагом, градиентный метод с дроблением шага, метод наискорейшего градиентного спуска. В первом случае шаг остается постоянным λ k = λ = const . k

5.3.1. Градиентный метод с переменным шагом

Выбираем начальную точку x 0 и начальный шаг λ 0 . Задаем точность ε и критерий остановки поиска решения x k +1 − x k ≤ ε . Алгоритм метода следующий. 1. На k-м шаге, зная координаты точки x k после предыдущего шага, определяем новую точку x k +1 = x k − λ k ∇f ( x k ) ,

где λ k – величина шага. 2. Вычисляем значение функции в этой точке: f ( x k +1 ) = f ( x k − λ k ∇f ( x k )) .

60

3. Проверяем выполнение неравенства f ( x k +1 ) < f ( x k ) .

4. В случае, когда это неравенство выполняется, значение шага λ k , не изменяется, если же неравенство не выполняется, то значение шага уменьшается, например, вдвое, после чего переходим к шагу 1. 5. Если выполняется неравенство 3, то проверяем критерий остановки x k +1 − x k ≤ ε , | f ( x k +1 ) − f ( x k ) |≤ ε , когда критерий остановки не выполняется, переходим к следующей итерации. Пример. Используя градиентный метод с переменным шагом найти минимум функции f (x) = e( x1 − x1 + x2 ) − 2 x2 , 2

2

где x = ( x1 , x2 ) . Начальные условия x0 = (0,0) , ε = 0.03 . Построим график функции: [x1, x2] = meshgrid(0:.1:1, 0:.1:1); f =exp(x1.^2-x1+x2.^2)-2.*x2; surf(x1,x2,f) Из графика (рис. 5.9) видно, что минимум функции при x1 ≈ x2 ≈ 0.5 .

1

z

0.5

0

-0.5 1 0.5

y

0

0

0.2

Рис. 5.9. График функции f (x) = e 61

0.4

0.6

x ( x12 − x1 + x22 )

− 2 x2

0.8

1

Итерация 1. 1.1. Вычисляем градиент в точке x 0 = (0, 0) : 2

∇f ( x) x = x0 =

2

(2 x1 − 1)e ( x1 − x1 + x2 ) 2 x2 e

( x12 − x1 + x22 )

−2

x = x0

 −1  =  .  −2 

1.2. Полагая λ1 = 1 , найдем новое значение координат после смещения из точки x0 : 0 1  1  x1 = x 0 − λ1∇f (x) x=x0 =   + 1  =   . 0   2   2 

(5.16)

1.3. Вычислим значения функции в точках x0 , x1 : f (x 0 ) = 1 , f (x1 ) = e 4 − 4 . Проверка условия f (x1 ) < f (x 0 ) показывает, что оно не выполняется. Поэтому в точку (1.16) перемещаться не будем. Вместо этого уменьшим шаг, полагая λ1 = 0.5 , и снова вычислим x1 : 0.5 x1 =   . 1 

В этой точке значение функции равно f (x1 ) = 0.117 , поэтому условие f (x1 ) < f (x 0 ) выполняется. Условие остановки | x1 − x0 |= 1.25 > ε не выполняется. Перейдем к следующей итерации. Итерация 2. 2.1. Задаем начальный шаг итерации λ 2 = 0.5 . Вычисление градиента в точке x1 = (0.5,1)Т дает: (2 x1 − 1)e( x1 − x1 + x2 ) 2

∇f ( x ) x = x 0 =

2 x2 e

( x12 − x1 + x22 )

2

−2

x = x1

0  = . 2.234  

Значение x после смещения из точки x с таким градиентом равно 1

0.5 0  0.5  x 2 = x1 − λ 2∇f (x) x=x1 =   − 0.5  =  . 1  2.234 −0.117 

2.2. Так как f (x1 ) = 0.117 , f (x 2 ) = 1.024 , то условие f (x 2 ) < f (x1 ) не выполняется. Поэтому уменьшим шаг: λ 2 = 0.125 , и снова вычислим x 2 , f (x 2 ) : 0.5  2 x2 =   , f (x ) = −0.132 . 0.721 62

2.3. Так как условие f (x 2 ) < f (x1 ) выполняется, то переместимся в точку x 2 и проверим для нее условие остановки | x 2 − x1 |= 0.279 > ε . Оно не выполняется, поэтому перейдем к следующей итерации. Итерация 3. 3.1. Полагая λ 3 = 0.25 и вычислив градиент в точке x 2 = (0.5, 0.721)Т , перейдем в новую точку: 0.5  0  0.5  x3 = x 2 − λ 3∇f (x) x=x2 =  − 0.5   = . 0.721 −0.113 0.777 

3.2. Значение функции в этой точке f (x3 ) = −0.133 , поэтому условие f ( x3 ) < f ( x 2 ) выполняется. Переместимся в точку 3 x = (0.5, 0.777)Т и проверим условие остановки | x3 − x 2 |= 0.056 > ε . Оно не выполняется, поэтому перейдем к следующей итерации. Итерация 4. 4.1. Выберем λ 4 = 0.1 и вычислим градиент в точке x3 = (0.5, 0.777)Т , затем вычислим координаты новой точки: 0.5  0  0.5  x 4 = x 3 − λ 4 ∇f ( x ) x = x 3 =  − 0.125   = . 0.777  0.044 0.745

4.2. В этой точке f (x 4 ) = −0.1334 условие f (x 4 ) < f (x3 ) выполняется. Проверим в ней условие остановки | x 4 − x3 |= 0.027 < ε . Оно также выполняется. Конец решения. Ответ: минимум функции достигается в точке x min = (0.5, 0.745)Т , его значение равно f (x min ) = −0.133 . Все вычисления этого примера проводились в программе Mapl. x1:=1.; x2:=2.; f1:=exp(x1^2-x1+x2^2)-2*x2; `итерация 1`; x1:=.5; x2:=1; f1:=exp(x1^2-x1+x2^2)-2*x2; `итерация 2`; lb:=.5; df1:=(2*x1-1)*exp(x1^2-x1+x2^2); df2:=2*x2*exp(x1^2-x1+x2^2)-2; y1:=x1-lb*df1; y2:=x2-lb*df2; f1:=exp(y1^2-y1+y2^2)-2*y2; lb:=.125; y1:=x1-lb*df1; y2:=x2-lb*df2; f2:=exp(x1^2-x1+y2^2)-2*y2; `итерация 3`; lb:=.25; x1:=y1; x2:=y2; df1:=(2*x1-1)*exp(x1^2-x1+x2^2); df2:=2*x2*exp(x1^2-x1+x2^2)-2; y1:=x1-lb*df1; y2:=x2-lb*df2; f2:=exp(x1^2-x1+y2^2)-2*y2; 63

`итерация 4`; lb:=.1; x2:=y2; df2:=2*x2*exp(x1^2-x1+x2^2)-2; y2:=x2-lb*df2; f2:=exp(x1^2-x1+y2^2)-2*y2. Проверка в МАТLAB дает: g=@(x)(exp(x(1).^2-x(1)+x(2).^2)-2.*x(2)); [x, f]= fminsearch(g,[ 1.0, 0.0]) x = 0.5000 0.7412 f = -0.1334 5.3.2. Метод Ньютона многомерной оптимизации

Так же, как в одномерном случае, для поиска экстремума функции f(x) можно использовать ее квадратичную аппроксимацию в точке x. На k-м шаге итерации она имеет вид 1 F ( x) = f ( x k ) + ∇f ( x k )Δx + ΔxT H ( x k )Δx , 2 где x k – точка релаксационной последовательности на этом шаге, Δx = ( x − x k ) , ∇f ( x k ) = ∇f ( x) x= xk , H ( x k ) = H ( x) x= xk . Приравняв производную от F ( x) нулю, найдем ∇f ( x k ) + H ( x k )Δx = 0 .

Откуда, полагая x = x k +1 , получим следующий алгоритм определения экстремума функции x k +1 = x k − Н −1 ( x k )∇f ( x k ) ,

где Н −1 ( x k ) – матрица, обратная к матрице Гесса (5.13). 5.3.3. Метод наискорейшего спуска

Постановка задачи. Дана функция многих переменных f ( x) , ограниченная снизу на множестве Rn, частные производные которой непрерывны. Найти локальный минимум f ( x* ) = minn f ( x) функции x∈R

f ( x) , используя метод градиента, оптимизируя на каждом цикле итерации величину шага. Алгоритм решения. Выберем начальную точку x 0 и зададимся условием окончания вычислений | x k +1 − x k |≤ ε1 , | f ( x k ) − f ( x k +1 ) |≤ ε 2 . T

∂f ( x)   ∂f ( x) Найдем градиент функции ∇f ( x) =  ,..., . ∂ x ∂xn  1  64

Итерация 1. Вычислив ∇f ( x) x= x0 в точке x 0 , найдем новую точку

спуска x1 (λ1 ) = x 0 − λ1∇f ( x 0 ) . Оптимальное значение шага λ1 найдем, минимизируя функцию g (λ1 ) = f ( x1 (λ1 )) → min по этому шагу. Зная шаг, найдем новую точку наискорейшего спуска x 2 = x1 − λ1∇f ( x1 ) . Проверим условие окончания решения | x k +1 − x k |≤ ε1 . Если оно не выполняется, то переходим к следующей итерации. В общем виде для k-й итерации этот алгоритм таков. Вычисляем ∇f ( x) x= xk в точке x k , затем находим новую точку спуска

x k +1 (λ k ) = x k − λ k ∇f ( x) x= xk . Значение шага λ k k-й итерации опреде-

лим, минимизируя функцию g (λ k ) = f ( x k +1 (λ k )) → min

по λ k . Определив шаг, найдем новую точку x k +1 = x k − λ k ∇f ( x) x= xk релаксационной последовательности. В конце итерации проверяем условие окончания решения | x k +1 − x k |≤ ε1 . Если оно выполнено, то минимум функции достигается в точке x* = x k , если нет, то переходим к k + 1-й итерации, в которой повторяем все вычисления, приведенные ранее в k-й итерации. Пример. Методом наискорейшего спуска найти минимум функции 2 f ( x) = e x1 + x22 + 0.5 x1 с точностью ε < 0.05 . Из графика (рис. 5.10) видно, что минимум при x1 ≈ 0 , x2 ≈ 0 . 0  Выберем начальную точку x 0 =   и точность решения 1 x k +1 − x k ≤ ε = 0.02 .

Вектор градиента этой функции имеет вид: 2 x1e x1 + 0.5 ∇f ( x ) =  . 2 x2  2

Итерация 1. 0  Вычислим градиент в точке x 0 =   : 1  0.5 ∇f ( x ) x = x 0 =   . 2  65

Сделав шаг вдоль направления антиградиента, найдем новую точку спуска: 0  0,5 −0,5λ1  x1 = x 0 − λ1∇f ( x) x= x0 =   − λ1   =  . 1  2  1 − 2λ1 

1.8 1.6

z

1.4 1.2 1 0.8 0.5 0.5 0

y

0 -0.5

-0.5

x 2

Рис. 5.10. График функции f ( x) = e x1 + x22 + 0.5 x1

Вычислим значение функции f ( x) = e x1 + x22 + 0.5 x1 в новой точке: 2

f ( x1 (λ1 )) = e(0.5λ1 ) + (1 − 2λ1 ) 2 − 0.5(0.5λ1 ) . 2

(5.17)

Найдем величину шага, при котором это значение целевой функции минимально. Для этого, обозначив z = λ1 , запишем в МАТLAB: g=@(z)(exp(0.25.*z.^2)+(1-2.*z).^2-0.25.*z); [z, f] = fminsearch(g, 0.0, 0.5) Вычисление в МАТLAB дает λ1 = 0.4981. Координаты новой точки после смещения с найденным шагом таковы:  x11  0 0.5 −0.249 x1 =  1  =   − 0.498   =  . 1 x 2  0.04   2   66

Проверим критерий остановки: x1 − x 0 ≤ ε . Он не выполняется:

x1 − x 0 = 0.252 + 0.042 = 0.25 > ε = 0.02 . Итерация 2. Вычислим градиент в точке x1 : −0.0299 ∇f ( x1 ) =  . 0.08 

Сделаем шаг вдоль направления антиградиента:

−0.249 −0.0299 x 2 = x1 − λ 2∇f ( x) x= x1 =  − λ2   = 0.04  0.08  −0.249 + 0.0299λ 2  = . 0.04 − 0.08λ 2  Подставив найденные координаты

x1 = −0.249 + 0.0299λ 2 , x2 = 0.04 − 0.08λ 2 в функцию f ( x) = e x1 + x22 + 0.5 x1 , получим 2

f ( x (λ 2 )) = e(0.0299 λ 2 −0.249) + (0.04 − 0.08λ 2 ) 2 + 0.5(0.0299λ 2 − 0.249) . 2

Полагая z = λ 2 , c помощью МАТLAB g=@(z)(exp((0.0299.*z-0.249).^2)+(0.04-0.08.*z).^2+0.5.*(0.0299.*z0.249)); [z, f] = fminsearch(g, 0.0, 1) найдем шаг λ2 = 0.4889, при котором функция f ( x(λ 2 )) минимальна. Координаты новой точки с этим шагом таковы:  x12  −0.249 −0.0299 −0,234  x2 =  2  =   − 0.4889 0.08  = 0.000888 . 0.04 x       2 

После второй итерации критерий остановки выполняется: x 2 − x1 = 0.042 ≤ ε = 0.05 . −0,234 * Ответ: x* =   , f ( x ) = 0.940 . 0.0009  67

Проверим решение задачи в МАТLAB: g=@(x)(exp(x(1)^2)+x(2)^2+0.5*x(1)); [x, f] = fminsearch(g, [0.0, 0.0]) Ответ: x* = [−0,236, 0.0001]T , f ( x* ) = 0.939 . 5.3.4. Задачи для самостоятельной работы

Найти с точностью ε = 0.01 координаты минимума (максимума) функций в окрестности начала координат 1) g(x, y) = (ln(x))2 + y2 – y; 2) g(x, y) = x2 + y2 – 0.5(x + 1)(y – 1); 3) g ( x, y ) = ( x + y ) ch ( x 2 + y 2 ) ; 4) g(x, y) = (ln(x))2 + 2y2 + x – 0.5y; 2 2 5) g ( x, y ) = e x + 2 y − 3( x − 1) − 2 y ; 6) g ( x, y ) = ( x 2 + y 2 )e x + y ; 2

7) g ( x, y ) = ( x 2 + 1) 2 + (1 − y 2 ) 2 + xy ; 8) g ( x, y ) = e( x 9)

2 +x)

+ e( y

2− y)

;

g ( x, y ) = ( x − 1) + ( y + 1) 2 + x ; 2

10) g ( x, y ) = (1 − 0.2 x − 0.3 y )e( x

2 + y2 )

;

11) g ( x, y ) = ( x + y ) + ( y − x + 1) ; 2

2

2

2

12) g ( x, y ) = ( x − 0.1) 2 + 2 y 2 + 2 xy ; 13) g ( x, y ) = (1 − y + y 2 )e(1−cos( x )) ; 14) g ( x, y ) = ( x 2 + y 2 )e − ( x

2 + y2 )

;

15) f ( x) = x + x1 ( x2 − 1) + x + e( x1 + x2 ) ; 2 1

2

2 2

2

16) g ( x, y ) = x ch ( x 2 + y 2 ) ; 17) g ( x, y ) = ( x − 1) 2 + ( y + 1) 2 + x ; 18) g ( x, y ) = (1 − 0.2 x − 0.3 y )e( x

2 + y2 )

;

19) g ( x, y ) = ( x + y ) + ( y − x + 1) ; 2

2

2

2

20) g ( x, y ) = ( x − 0.1) 2 + 2 y 2 + 2 xy ; 21) g ( x, y ) = (1 − y + y 2 )e(1−cos( x )) ; 22) g ( x, y ) = xe − ( x

2 + y2 )

;

23) g(x, y) = (ln(x) + x)2 + x2 + 3y2 – xy. 68

6. ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ Пример. На трех конвейерных линиях выпускают три вида изделий Р1, Р2, Р3. Расходы на их производство указаны в последней строке таблицы. Для производства используют три вида деталей Д1, Д2, и Д3. В процессе производства нужно израсходовать не более 400 шт. деталей Д1, не менее 100 шт. деталей Д2 и 300 шт. деталей Д3. Число деталей, необходимых для сборки одного изделия, дано в таблице 6.1. Таблица 6.1 Детали Д1 Д2 Д3

Количество деталей на одно изделие

Запасы 100 шт. =300 шт. расходы на изделие (руб.)

Р1

Р2

Р3

2 6 3

7 3 5

4 7 1

4

5

6

Определить, при производстве какого количества изделий расходы минимальны. Решение. Для построения математической модели этой задачи обозначим через x1, x2, x3 количество изделий, выпускаемых в единицу времени. Расход деталей Д1 для производства изделия Р1 равен 2 x1 , для изделия Р2 − 7 x2 , для изделия Р3 − 4 x3 . Суммарный расход деталей Д1 на все изделия не должен быть более 400 шт. Вычислив таким же образом суммарные расходы деталей Д2 и Д3 в процессе производства, запишем следующие ограничения: 2 x1 + 7 x2 + 4 x3 ≤ 400,  6 x1 + 3x2 + 7 x3 ≥ 100, x j ≥ 0, j = 1,2,3 . 3 x + 5 x + x = 300, 2 3  1

Целевую функцию задачи можно записать в виде L( X ) = 4 x1 + 5 x2 + 6 x3 → min .

69

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

6.1. Основные понятия линейного программирования Задача линейного программирования в общем виде формулируется в следующей постановке: найти набор действительных чисел X = (x1, x2, ... xn), при котором достигается экстремум (максимум или минимум) линейной целевой функции F ( X ) = c1 x1 + c2 x2 + ... + cn xn

(6.1)

и выполняется система ограничений вида: a x + a x + ... + a x ≤ b , 1n n ≥ 1  11 1 12 2  ≤ a21 x1 + a22 x2 + ... + a2 n xn ≥ b2 ,  ............................................  am1 x1 + am 2 x2 + ... + amn xn ≤ bm , ≥ 

(6.2)

x1 ≥ 0 , x2 ≥ 0 ,…, xn ≥ 0 . знаки « ≤≥ » означают, что левая часть может быть как больше правой, так и меньше. Кроме этого, вместо знаков неравенств в любой строке системы ограничений (6.2) может стоять знак равенства. Условия xi ≥ 0 , i = 1, 2, 3, …, n называются условиями неотрицательности, они показывают, что решения (6.2) не могут быть отрицательными. Допустимым решением (планом) задачи линейного программирования называется такой n-мерный вектор X = (x1, x2, ..., xn), для которого выполняетя система ограничений (6.2) и условия неотрицательности. Область допустимых решений (ОДР) – это множество всех допустимых решений задачи линейного программирования. Решение (план), при которм достигается экстремум целевой функции (6.1) и которое является допустимым, называется оптимальным. 70

Для поставленной задачи линейного программирования удобна следующая геометрическая интерпретация. Множество всех точек n-мерного пространства, координаты которых являются решениями линейного уравнения ai1 x1 + ai 2 x2 + ... + ain xn = bi ,

называется гиперплоскостью. Множество всех точек, координаты которых удовлетворяют линейному неравенству ai1 x1 + ai 2 x2 + ... + ain xn ≤ bi ,

называется полупространством или, точнее, замкнутым полупространством, так как оно содержит собственную границу. В двумерном пространстве такое множество называется полуплоскостью. Множество называется выпуклым, если оно является пересечением одного или более полупространств. В общем случае выпуклым называют множество, у которого все точки прямой, соединяющей две любые его точки, принадлежат этому множеству. Система неравенств (6.2) описывает область, образованную пересечением n-мерных полупространств. Эта область, как уже отмечалось, является областью допустимых решений задачи линейного программирования. Канонической называется задача линейного программирования, система ограничений (6.2) которой представима в виде a11 x1 + a12 x2 + ... + a1n xn = b1 ,  a21 x1 + a22 x2 + ... + a2 n xn = b2 ,  ............................................ a x + a x + ... + a x = b , mn n m  m1 1 m 2 2

(6.3)

x1 ≥ 0 , x2 ≥ 0 ,…, xn ≥ 0 , при условии неотрицательности всех п переменных. Число неизвестных в (6.2) больше числа уравнений n ≥ m . Целевая функция остается прежней (6.1). Решение канонической задачи (6.3) можно упростить, если привести ее к диагональной форме по переменным x1 , x2 ,..., xm . Для этого запишем систему уравнений (6.3) в виде ˆ + RY ˆ = B, QX (6.4) где X = ( x1 , x2 ,..., xm )T , Y = ( xm+1 , xm+2 ,..., xn )T , 71

a11 a12 ...a1m

a1,m+1 a1,m+ 2 ...a1,n

 b1  b  a a ...a , a a ...a , 2 Qˆ = 21 22 2 m , Rˆ = 2,m+1 2,m+2 2,n , B =   .  ...  ...................... ......................   am1 am 2 ...amm am ,m+1 am ,m+2 ...am ,n  bm 

В случае det Qˆ = 0 столбцы системы уравнений (6.3) необходимо переставить так, чтобы ее детерминант стал не равным нулю det Qˆ ≠ 0. Умножив (6.4) на обратную матрицу Qˆ −1 , получим ˆ = Qˆ −1 B . X + Qˆ −1 RY

(6.5)

Для элементов матрицы Aˆ = Qˆ −1 Rˆ и вектор-столбца G = Qˆ −1 B введем следующие обозначения: α11 α12 ...α1,n−m , α 21 α 22 ...α 2,n−m , Aˆ =

β1

, G = β2 .

.............................. α m1 α m 2 ...α m ,n−m

βm

После этого система (6.5) приобретает вид: + α1,1 xm+1 + α1,2 xm+ 2 + ... + α1,n−m xn = β1 ,

x1 x2

α 2,1 xm+1 + α 2,2 xm+2 + ... + α 2,n−m xn = β2 ,

........................................................................................ + α i ,1 xm+1 + α i ,2 xm+2 + ... + α i ,n−m xn = βi , xi

(6.6)

.......................................................................................... xm + α m ,1 xm+1 + α m ,2 xm+2 + ... + α m ,n−m xn = βm .

Из (6.6) видно, что переменные x1 , x2 ,..., xm можно выразить через xm+1 , xm+2 ,..., xn , после переноса слагаемых с переменными xm+1 , xm+2 ,..., xn в правую часть. В системах уравнений (6.3), (6.6) неизвестные x1 , x2 ,..., xm называют базисными (несвободными) неизвестными, а неизвестные xm+1 , xm+2 ,..., xn − небазисными, свободными неизвестными. Таким образом, базисными, или основными, называются переменные, которые могут быть выражены через остальные 72

переменные. Базисное решение (6.6) найдем, приравняв в этой системе уравнений небазисные переменные нулю x1 = β1 , x2 = β2 , ..., xm = βm , xm+1 = 0 ,..., xn = 0 .

(6.7)

Умножим первое уравнение системы (6.2) на c1 , второе – на c2 и так далее, последнее уравнение – на cm . После сложения полученных выражений найдем новое выражение для целевой функции: cm+1 xm+1 + cm+2 xm+2 + ... + cn xn = F ( X ) − F (β) , где F (β) = c1β1 + c2β2 + ... + cmβm .

6.2. Геометрический метод решения задач линейного программирования В случае, когда целевая функция и система ограничений содержат не более двух переменных, задача линейного программирования принимает вид:

F = c1 x1 + c2 x2 , a11 x1 + a12 x2 ≥ b1 , a21 x1 + a22 x2 ≥ b2 , ............................. ai1 x1 + ai 2 x2 ≤ bi , ............................. am1 x1 + am 2 x2 ≤ bm , x1 ≥ 0, x2 ≥ 0 .

(6.8)

Задача поиска максимума или минимума этой функции допускает удобную геометрическую интерпретацию. Уравнения прямых ai1 x1 + ai 2 x2 = bi являются границами полуплоскостей, определяемых неравенствами (6.8). На рисунке 6.1 эти прямые обозначены соответственно цифрами 1, 2,…, m. Множество, образованное пересечением полуплоскостей, заданных неравенствами (6.8), является областью допустимых решений задачи (6.8). Среди всех точек выпуклой области допустимых решений могут существовать точки, в которых целевая функция достигает либо минимума, либо максимума. В точке D целевая функция F минимальна, а в точке Q она максимальна. Обнаружить эти точки можно следующим образом. Построим прямую АB (рис. 6.1), соответствующую целевой функции 73

c1 x1 + c2 x2 = 0 , проходящую через начало координат. Очевидно, целевая функция минимальна, если эта прямая находится на наименьшем расстоянии от начала отсчета, и максимальна, когда прямая АB расположена дальше всего от начала отсчета. A

x2

Q

3

4

B

2 5 А A

1

D

B 0

x1

B

Рис. 6.1. В точке 1 целевая функция F минимальна, а в точке 2 она максимальна.

Поэтому если передвигать прямую АB в направлении, перпендикулярном ей самой, в сторону области допустимых решений, то в точке D, где прямая АB впервые касается этой области, целевая функция минимальна. В точке Q, где прямая АB последний раз перед выходом из области допустимых решений соприкасается с этой областью, она максимальна. Координаты точки D, где целевая функция минимальна, найдем, решив систему уравнений

a11 x1 + a12 x2 = b1 , a21 x1 + a22 x2 = b2 , которые являются уравнениями прямых 1 и 2, изображенных на рисунке 6.1. Подставив найденное решение в формулу для целевой функции F = c1 x1 + c2 x2 , найдем ее минимум. Уравнения системы a31 x1 + a32 x2 = b3 , a41 x1 + a42 x2 = b4

74

являются уравнениями прямых 3 и 4. Точка пересечения этих прямых дает решение, при котором целевая функция F = c1 x1 + c2 x2 максимальна. Рассмотрим все случаи, которые возникают при решении задач линейного программирования. а) Полупространства не имеют общих точек (рис. 6.2а). Допустимое множество решений пустое, поэтому задача не имеет решений. б) Пересечение полупространств непустое, но область допустимых решений не ограничена, поэтому в процессе перемещения линии уровня целевой функции F(x) = c не удается достичь ее максимального значения (рис. 6.2б). В этом случае задача, в которой необходимо найти максимум целевой функции, не имеет решения, однако задача нахождения минимального значения целевой функции имеет решение. x2

x2

x2 F(x)=c

x1 а

F(x)=c б

x1

в

x1

Рис. 6.2. В случае а) ЗЛП не имеет решений; б) у ЗЛП нет решения, доставляющего максимум целевой функции, однако решение, когда целевая функция минимальна, существует; в) число решений бесконечно.

в) Область допустимых решений ограничена, однако прямая линия целевой функции F(x) = c параллельна одной из граней области допустимых решений, поэтому ЗЛП имеет бесконечное число решений (рис. 6.2в).

75

6.2.1. Примеры решения задач линейного программирования геометрическим методом

Задача 1. Найти максимальное значение целевой функции

F(x, y) = y + x при ограничениях:

y + 2 x ≤ 10,

y − 2 x ≤ 3,

(6.9)

x ≥ 0, y ≥ 0 . Решение. Для нахождения допустимой области, определяемой ограничениями (6.9), установим ее границы. На рисунке 6.3 они изображены прямыми: y1 ( x) = 10 − 2 x, y2 ( x) = 2 x + 3, x = 0,

y = 0.

Рис. 6.3. Допустимая область решений уравнений (6.9)

Отметим полуплоскости, определяемые неравенствами y ≤ y1 , y ≤ y2 , x ≥ 0 , y ≥ 0 . Пересечение этих полуплоскостей образует область допустимых решений, на графике она залита серым тоном. 76

Внутри этой области находится точка ( xm , ym ) , в которой значение целевой функции достигает максимума F ( xm , ym ) = xm + ym . Как определить эту точку на графике? Сначала построим прямую линию F ( x, y) = x + y , проходящую через начало отсчета. Очевидно, что на прямой F ( x, y ) = 0 ограничениям (6.9) удовлетворяет лишь одна точка x=0, y = 0 . В этой точке значение функции F ( x, y) = x + y минимально. Если смещать прямую линию вверх в направлении, перпендикулярном ей самой, то значения x и y, принадлежащие этой прямой, увеличиваются. Увеличивается и сама целевая функция F ( x, y ) = x + y = c , c = const, c > 0. Функция F ( x, y) = x + y достигнет максимального значения, когда прямая x + y = c сместится на край допустимой области (рис. 6.3), т. е. будет касаться этой области только в одной точке ( xm , ym ) . Координаты точки ( xm , ym ) найдем, если определим, где пересекаются прямые y1 ( x) = 10 − 2 x и y2 ( x) = 2 x + 3 . Решение этой системы уравнений дает xm = 1,75 , ym = 6,25 . Значение целевой функции в этой точке равно Fmax = 8 . Ответ: целевая функция F ( x, y ) = y + x максимальна в точке xm = 1,75 , ym = 6,25 , где она равна Fmax = 8 . Задача 2. Найти максимальное значение целевой функции F(x, y) = y + x при ограничениях: − x + 2 y ≥ 4,  3x − y ≥ 1, (6.10) x, y ≥ 0 .  Решение. На рисунке 6.4 изображены прямые y1 ( x ) = 0,5 x + 2 , y 2 ( x ) = 3 x − 1 . Область допустимых решений лежит между этими пря0 мыми, она заштрихована. Очевидно, задача 2 решения не имеет, так как максимальное значение целевой функции достигается при x → ∞ , y → ∞ , то есть становится неограРис. 6.4. Область допустимых ниченным. Переформулируем эту решений задач 2, 3 задачу. 77

Задача 3. Найти минимальное значение целевой функции F(x, y) = = y + x при ограничениях (6.2). Решение. Если двигать прямую y + x = 0 в направлении, перпендикулярном этой прямой, в сторону к заштрихованной области, то наступает момент, когда прямая коснется заштрихованной области. Координаты точки касания ( xm , ym ) найдем, если определим, где пересекаются прямые y = 0,5 x + 2 и y = 3 x − 1 . Решение этой системы уравнений дает xm = 1,2 , ym = 2,6 . В точке касания целевая функция минимальна и равна Fmin = 3,8 . 6.2.2. Задачи для самостоятельной работы

Решить задачу линейного программирования геометрическим методом.  x1 + x2 ≤ 10, 3 x + 5 x ≥ 15,  1 2 1) 2 x1 + 3x2 → max ,  x x 0.5 − 1 ≤ 2,  2  x1 , x2 ≥ 0. 3 x1 + 2 x2 ≤ 12, −2 x + 3 x ≤ 6,  1 2 2) 5 x1 + 3x2 → max ,  + 2 x 6 x 2 ≥ 12,  1  x1 , x2 ≥ 0. 3 x2 − x1 ≥ 3,  3) x2 + x1 → min ,  x2 − 5 x1 ≤ −5,  x , x ≥ 0.  1 2 5 x1 + 2 x2 ≤ 15, −2 x + 3 x ≤ 9,  1 2 4) 4 x1 + 3x2 → max ,  + 2 x 6 x 2 ≥ 10,  1  x1 , x2 ≥ 0.  x1 + x2 ≤ 10, 3 x + 5 x ≥ 15,  1 2 5) 2 x1 + 3x2 → max ,  x 3, ≤ 2   x1 , x2 ≥ 0. 78

2 x1 + 3 x2 ≤ 10,  6) x2 − 0.5 x1 → max , 2 x1 + 5 x2 ≥ 15,  x , x ≥ 0.  1 2  x2 − 0.2 x1 ≥ 1,  7) 3x2 + 2 x1 → Fmin ,  x2 − 2 x1 ≤ 1,  x , x ≥ 0.  1 2 2 x1 + 3 x2 ≥ 30,  8) 10 x1 + 8 x2 → min , 3x1 + x2 ≤ 24,  x , x ≥ 0.  1 2  x1 − 2 x2 ≤ 1,  9) −2 x1 − x2 → min , −3x1 + x2 ≤ −6,  x , x ≥ 0.  1 2

10) 2 x1 + 3x2 → min ,

 x1 + x2 ≤ 10,  3 x1 + 5 x2 ≥ 15,  x , x ≥ 0.  1 2

 x1 + 2 x2 ≥ 4,  11) x1 + x2 → min , 2,5 x1 + 2 x2 ≤ 20, x1 , x2 ≥ 0.

2 x1 + 3 x2 ≥ 6,  3 x1 − 2 x2 ≤ 18, 12) x1 + 2 x2 → max ,  − x1 + 2 x2 ≤ 8, x1 , x2 ≥ 0.

6.3. Симплекс-метод 6.3.1. Приведение задачи линейного программирования к канонической форме

Рассмотрим задачу линейного программирования в следующей постановке: найти минимум целевой функции F ( X ) = c1 x1 + c2 x2 + ... + cn xn−m , 79

(6.11)

если система ограничений имеет вид: a x + a x + ... + a x ≤ b , 1n − m n − m ≥ 1  11 1 12 2  ≤ a21 x1 + a22 x2 + ... + a2 n−m xn−m ≥ b2 ,  ............................................  am1 x1 + am 2 x2 + ... + am n−m xn−m ≤ bm , ≥  (6.12) x1 ≥ 0 , x2 ≥ 0 ,…, xn−m ≥ 0 . Прежде чем использовать симплекс-метод преобразуем (6.12) к стандартной форме, содержащей только знаки неравенства « ≤ ». Чтобы избавиться в (6.12) от знака « ≥ » умножим строки, содержащие этот знак, на − 1. Выполнив эти преобразования, получим: α11 x1 + α12 x2 + ... + α1,n−m xn−m ≤ β1 ,  α 21 x1 + α 22 x2 + ... + α 2,n−m xn−m ≤ β2 ,  ..........................................................  α m ,1 x1 + α m ,2 x2 + ... + α m ,n−m xn−m ≤ βm ,

(6.13)

x1 ≥ 0 , x2 ≥ 0 ,…, xn ≥ 0 , где α ij = aij , βi = bi в строках, содержащих знак ≤ , и α ij = − aij , βi = −bi в строках, содержащих знак ≥ . Будем искать минимум целевой функции (6.11), на переменные которой наложены ограничения (6.13). Следующий шаг в решении задачи линейного программирования – это приведение ее к канонической форме (6.6). Алгоритм приведения следующий [5]. 1) Неравенство αi1 x1 + αi 2 x2 + ... + αi n−m xn−m ≤ βi приводится к равенству

αi1 x1 + αi 2 x2 + ... + αi n−m xn−m + xn−m+i = βi

(6.14)

введением дополнительного переменного xn−m+i > 0 , i=1, 2, …, m. 2) Неравенство αi1 x1 + αi 2 x2 + ... + αi n−m xn−m ≥ βi приводится к равенству

αi1 x1 + αi 2 x2 + ... + αi n−m xn−m − xn−m+i = βi 80

введением дополнительного переменного xn−m+i > 0 . Переменные, вносимые в задачу, вносятся также и в целевую функцию с коэффициентами, равными нулю. 3) Если переменная может быть как положительной, так и отрицательной, то она представима в виде разности двух неотрицательных переменных: x j = x′j − x′′j , x′j ≥ 0 , x′′j ≥ 0 . 4) Минимизация целевой функции F ( X ) = c1 x1 + c2 x2 + ... + cn−m xn−m

равносильна максимизации целевой функции F ( X ) = −c1 x1 − c2 x2 − ... − cn−m xn−m .

Вводя дополнительные переменные с помощью преобразования (6.14), систему ограничений (6.13) преобразуем к канонической форме

α11 x1 + α12 x2 + ... + α1,n−m xn−m + xn−m+1 = β1 , α x + α x + ... + α 22 2 2,n − m xn − m + xn −m + 2 = β 2 ,  21 1 ................................................................  α i1 x1 + α i 2 x2 + ... + α i ,n−m xn−m + xn−m+1 = βi , ................................................................  α m,1 x1 + α m ,2 x2 + ... + α m ,n−m xn−m + xn = βm ,

(6.15)

F = c1 x1 + c2 x2 + ... + cn−m xn−m → max ,

(6.16)

x1 ≥ 0 , x2 ≥ 0 ,…, xn ≥ 0 , где α ij = aij , βi = bi в строках, содержащих знак « ≤ », и α ij = − aij , βi = −bi в строках, содержащих знак « ≥ ». Сравнивая (6.15) с (6.6), отметим, что эти системы уравнений получаются друг из друга перестановкой слагаемых в правой части систем. В системе уравнений (6.15) неизвестные xn−m+1 , xn−m+ 2 ,..., xn являются базисными (несвободными) неизвестными, а неизвестные x1 , x2 ,..., xn−m − небазисными (свободными) неизвестными. Базисное решение (6.15), (6.16) найдем, приравняв в этой системе уравнений небазисные переменные нулю: xn−m+1 = β1 , xn−m+2 = β2 ,... xn = βm , 81

x1 = 0 ,..., xn−m = 0 .

(6.17)

Если все коэффициенты целевой функции (6.16) отрицательны или равны нулю, то решение (6.17) является оптимальным. Подставив (6.17) в (6.16), найдем максимальное значение Fm 0 = cn−m+1β1 + cn−m+2β2 + ... + cnβm

целевой функции. 6.3.2. Алгоритм симплекс-метода

Задачу линейного программирования (6.15), (6.16) будем решать, используя симплекс-метод [5, 6]. Найти минимум целевой функции (6.16), если на переменные этой функции наложены ограничения (6.15). Для нахождения оптимального решения составим таблицу 6.2 коэффициентов диагональной системы уравнений (6.15) (симплексную таблицу). Таблица 6.2 Симплексная таблица Базис

x1

x2

… xk

xs

xn−m

xn−m+1 xn−m+2

… xn

Pешение

xn−m+1 α11

α12 … α1k … α1,s ... α1,n−m

1

0

… 0

β1

xn−m+2 α21

α22 … α2k … α 2, s ... α 2 ,n− m

0

1

… 0

β2

… … … … … … αr2 … α r, k … α r, s … α r , n − m



… ……

xn−m+r

… αr1

0

0

... βr





… … … … … …



… …… …

αi2 … αi,k … αi,s … α i , n − m

0

0

… … … … … …

… 0

… …… … 0 … 1 βm

0

0



xn−m+i αi1

… xn F



… …

α m,1 αm,2 … αm,k … αm, s … α m, n − m

с1

с2

… с k … сs …

сn−m

… 0 … 0

… 0

βi

Fm0

В столбец таблицы, обозначенный x1 , поместим коэффициенты α11 , α 21 ,…, α i1 ,.., α m ,1 . Аналогично заполним столбцы x2 ,…, xn−m . Согласно (6.15) в столбце xn−m+1 все элементы, кроме элемента в первой строке, который равен 1, равны нулю. Таким же образом заполним 82

остальные столбцы таблицы. В последнем ее столбце находятся коэффициенты β1 , β 2 ,…, βm правой части (6.15). В последнюю строку внесем коэффициенты целевой функции (6.16). Прежде чем сформулировать алгоритм решения задачи линейного программирования, проведем анализ целевой функции (6.16) и ограничений (6.15). Анализируя целевую функцию (6.16), отметим, что если среди ее коэффициентов есть отрицательные, например сs , то с увеличением xs эта функция уменьшается. Поэтому если в (6.16) избавиться от всех отрицательных коэффициентов, входящих в целевую функцию, то значение целевой функции не может быть уменьшено. Неважно, в какой последовательности нужно избавляться от отрицательных коэффициентов. Для определенности выбираем наибольший по модулю отрицательный коэффициент. Пусть это будет сs , в таблице 6.2 соответствующий ему столбец помечен серым цветом. После преобразований, приведенных ниже, он будет равен нулю. Из таблицы 2 видно, что соответствующая ему небазисная переменная xs становится базисной. Так как число базисных переменных увеличилось, то одну из них переведем в небазисные. Определим переменную, которую нужно исключить из базиса. Выберем в столбце xs коэффициенты α is , знаки которых совпадают со знаками коэффициентов последнего столбца в той же i-той строке таблицы 6.2. Пусть αis > 0 , если среди выбранных коэффициентов есть отрицательные, то строку с отрицательным коэффициентом достаточно умножить на −1. При увеличении xs в i-м ограничении (6.15) остальные переменные уменьшаются. До какого значения можно увеличить xs , чтобы xi в той же строке не стало отрицательным? Полагая в i-том ограничении (6.15) все переменные кроме xs равными нулю, найдем максимальное xs = β i αis . Очевидно, что с ростом xs , если значение xs не меньше

xr = min xs = β i αis , ни в одном ограничении (6.15) не появятся отрицательные переменные. Строка, в которой отношение β i αis минимально, называется ведущей строкой (в табл. 6.2 она помечена серым цветом), а столбец с наименьшим коэффициентом с s – ведущим столбцом. 83

Отправляясь от допустимого базисного решения (6.17), сформулируем такой алгоритм нахождения другого допустимого базисного решения, применение которого на каждом шаге уменьшает форму F. 1. Проверяем последнюю строку F таблицы 6.2, если все ее коэффициенты неотрицательны, то коэффициенты последнего столбца являются оптимальным решением, если среди этих коэффициентов есть отрицательные, выберем наименьший из них (наибольший по модулю). Столбец таблицы, который содержит наименьший коэффициент, называется ведущим. 2. Пусть ведущим столбцом таблицы 6.2 будет столбец с коэффициентом xs . Поделим коэффициенты последнего столбца на коэффициенты ведущего столбца: β i = βi α i ,s , i=1, 2, 3,…, m. 3. Среди коэффициентов β i выбираем наименьший (отрицательные и бесконечные значения коэффициентов во внимание не принимаются), пусть таким коэффициентом будет коэффициент с индексом r. Тогда r-я строка называется ведущей, а элемент α r ,s – ведущим элементом. 4. Пересчитываем элементы симплексной таблицы по следующим формулам: • элементы новой ведущей строки равны α r ,k = α r ,k α r ,s , k=1, 2,…, n − m;

• остальные новые строки (кроме последней) находятся по формулам

α i ,k = αi ,k − α r ,k αi ,s ,

β i = βi − α i ,sβr ,

i = 1, 2, …, m, k = 1, 2,…, n − m, k ≠ r , i ≠ s , r, s – индексы ведущего элемента, r, s = const. Новые коэффициенты таблицы удобно находить по мнемоническому правилу прямоугольника, изображенному на схеме;

84

• последнюю новую строку найдем по формулам ck = ck − cs α r ,k , i ≠ r , k ≠ s .

5. Переведем небазисную переменную xs в базисную, поставив ее на место xn−m+r , а xn−m+r поставим на место xs . Если среди элементов последней строки есть отрицательные, то итерации следует повторять, пока все элементы последней строки не станут положительными или равными нулю. Решением задачи будут элементы последнего столбца. 6.3.3. Примеры решения задач линейного программирования симплексным методом

Найти минимум целевой функции x1 − x2 − 2 x3 → Fmin

при следующих ограничениях: 3 x1 + 4 x2 − 3 x3 ≤ 23,  −5 x1 + 4 x2 + 3 x3 ≥ −10, 7 x + 4 x + 11x ≤ 30, 2 3  1

x1 , x2 ≥ 0.

Приведем задачу к каноническому виду. В первую очередь заменим знак неравенства « ≥ » знаком « ≤ ». Для этого умножим второе неравенство на –1, в результате этого знаки этого ограничения изменятся на противоположные: 5 x1 − 4 x2 − 3 x3 ≤ 10 . В полученной системе ограничений заменим неравенства « ≤ » знаком равенства «=» путем введения дополнительных переменных x4 , x5 , x6 : 3 x1 + 4 x2 − 3 x3 + x4 = 23,  5 x1 − 4 x2 − 3 x3 + x5 = 10, 7 x + 4 x + 11x + x = 30. 2 3 6  1

(6.18)

Внесем коэффициенты уравнений в таблицу 6.3. В последнюю строку таблицы записываем коэффициенты целевой функции. С увеличением x2 , x3 целевая функция неограниченно уменьшается, так 85

как коэффициенты этих переменных отрицательны. Поэтому нужны такие преобразования таблицы, после которых в последней строке исчезнут отрицательные числа. В случае, когда все коэффициенты целевой функции положительны, она имеет минимум. Таблица 6.3 Симплекс-таблица Базис x1

x2

x3

x4 x5

x6

β

β x3

x4

3

4

−3

1

0

0

23

−23/3

x5

5

−4 −3

0

1

0

10

−10/3

x6

7

4

11

0

0

1

30

30/11

Fmin

1

−1 −2

0

0

0

0

Это условие является необходимым. Действительно, анализируя целевую функцию с положительными коэффициентами, которая не ограничивается никакими условиями, отметим, что у нее минимум, когда x1, x2 , x3 равны нулю. Выполним такие преобразования таблицы 6.3, в результате которых значение целевой функции будет уменьшаться. В качестве ведущего столбца возьмем столбец x3 с наименьшим коэффициентом в последней строке. Поделим элементы последнего столбца β на соответствующие элементы ведущего столбца и занесем результат деления в дополнительный столбец справа таблицы 6.3. Выберем в дополнительном столбце наименьшее из чисел, оно равно 30/11 (отрицательные и бесконечно большие числа во внимание не принимаются). Строка с наименьшим элементом является ведущей, в таблице она помечена темным тоном. Поделим все элементы ведущей строки на значение ведущего элемента, находящегося на пересечении ведущих столбца и строки. Его значение равно 11. Полученные после деления числа поместим в таблице 6.3 на место старых значений. В результате получим таблицу 6.4. В этой таблице на месте ведущего элемента стоит 1. Это означает, что в преобразованной таблице переменная x6 перестает быть базисной. Вместо нее базисной становится x3, поэтому переменную x3 пе86

реводим в столбец базисных элементов. Элементы ведущей строки мы уже вычислили. Таблица 6.4 Таблица первой итерации x2 Базис x1 x4 3 4 x5 5 −4 x3 7/11 4/11 Fmin 1 −1

x6 −3 −3 1 −2

x4 1 0 0 0

x5 0 1 0 0

x6 β 0 23 0 10 1/11 30/11 0 0

Элементы остальных строк вычисляются по следующему правилу. Из элемента старой строки вычитаем произведение элемента ведущего столбца этой же строки на элемент ведущей строки того столбца, где проводится вычисление. Последняя строка вычисляется по этому же правилу. Поясним алгоритм расчета симплекс-методом в любой ячейке, кроме ячеек, находящихся в строке «x3». Покажем это на примере ячейки в левом верхнем углу таблицы 6.4 с элементом, равным 3. Из значения этого элемента вычитается произведение двух чисел. Определим их, опустив перпендикуляры (пунктирные линии на рис. 6.5) из ячейки, в которой проводим вычисления, на ведущие столбец и строку. Пересечение перпендикуляров с ведущим столбцом и строкой дает интересующие нас сомножители произведения ( −3) × 7/11. Перечитав элементы всех других строк таблицы 6.4, кроме строки « x3», получим таблицу 6.5. x1 x4 x5 x3

x2

3

7/11 4/11

x6 3 3 1

3 ( 3) 7/11=4,91

Рис. 6.5. Алгоритм расчета симплекс-методом

87

Таблица 6.5 Таблица пересчета элементов таблицы 6.4 x1

x4 x5 x3 Fmin

x2

x4

x6

x5

x3

β

3 – (–3) × 4 – (–3) × –3 + 3 × 1 – (–3) × 0 – (–3) × 0 – (–3) × 23 – (–3) × × 4/11 ×7/11 ×1 ×0 ×0 × 1/11 × 30/11 5 – (–3) × –4 – (–3) × –3 + 3 × 0 – (–3) × 1 – (–3) × 0 – (–3) × 10 – (–3) × × 7/11 × 4/11 ×1 ×0 ×0 × 1/11 × 30/11 7/11 4/11 1 0 0 1/11 30/11 1 – (–2) × –1 + 2 × –2 + 2 × 0 – (–2) × 0 – (–2) × 0 – (–2) × × 7/11 × 4/11 ×1 ×0 ×0 × 1/11

Вычислив элементы таблицы 6.5, получим таблицу 6.6. Таблица 6.6 Таблица первой итерации Базис x4 x5 x3 Fmin

x1 4,91 –6,91 0,636 2,273

x2 5,09 −2,91 0,364 −0,273

x6 0 0 1 0

x4 1 0 0 0

x5 0 1 0 0

x3 β 0,273 31,2 –0,273 –18,2 0,091 2,73 0,182 5,45

β x2 6,13 –6,25 7,5

В последней строке таблицы 6.6 имеется отрицательный элемент, равный −0,273. Так как он является наименьшим в строке, то в качестве ведущего столбца выбираем столбец x2 с этим элементом. Поделим элементы свободного столбца β на соответствующие элементы ведущего столбца x2 и внесем результат деления в добавочный столбец. По наименьшему элементу этого столбца, равному 6.13, выбираем ведущую строку. Переведем элемент x2 в базисный столбец. После пересчета элементов таблицы 6.6 получим таблицу 6.7. Таблица 6.7 Таблица второй итерации Базис x2 x5 x3 Fmin

x1 0,964 –9,714 0,285 2,54

x4

1 0 0 0

x3 x5 x6 x2 Решение 0 0,196 0 0,054 6,125 0 –0,571 1 –0,429 3,7 1 –0,071 0 0,071 1,75 0 0,054 0 0,196 –7,125 88

В последней строке все элементы положительны, поэтому процесс поиска решения заканчиваем. Решение записано в последнем столбце таблицы: x1 = 0 , x2 = 6,125, x3 = 0.5 , Fmin = −7,125. Для проверки найденного решения в МАТLAB воспользуемся функцией linprog: f = [1; -1; -2]; A = [3 4 -3 5 -4 -3 7 4 11]; b = [23; 10; 30]; lb = zeros(3,1); x = linprog(f,A,b,[],[],lb); x= 0.0000 6.1250 0.5000 Fmin = x1 − x2 − 2x3 = −7.125. Пример. Найти максимум целевой функции 4 x2 − 4 x3 → Fmax

при следующих ограничениях: 3x1 + 3x3 ≤ 7,   4 x2 + 4 x3 ≤ 7,  3x1 + x2 + 4 x3 ≥ 4,

x1, x2 , x3 ≥ 0 .

Решение. Приведем систему ограничений к каноническому виду, преобразовав неравенства в равенства, с добавлением дополнительных переменных. В третьем неравенстве заменим знак «≥» знаком «≤». Для этого умножим это неравенство на − 1 . После введения дополнительных переменных х4, х5, х6 систему запишем в виде: 3 x1 + 3 x3 + x4 = 7,   4 x2 + 4 x3 + 0 x4 + x5 = 7,  −3 x − x − 4 x + 0 x + 0 x + x = −4. 1 2 3 4 5 6 

(6.19)

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

ваться алгоритмом нахождения минимума функции, поменяем знаки коэффициентов целевой функции на противоположные: Fmin = −4 x2 + 4 x3 .

(6.20)

Внесем коэффициенты системы уравнений (6.19) и коэффициенты целевой функции (6.20) в симплекс-таблицу 6.8. Выберем ведущий столбец и ведущую строку в таблице 6.8. Так как наименьший элемент в последней строке равен –4, то ведущим является второй столбец « x2 ». Поделим элементы последнего столбца β на соответствующие элементы ведущего столбца и занесем результат деления в дополнительный столбец справа таблицы 6.8. Выберем в дополнительном столбце наименьшее из чисел, оно равно 7/4 (отрицательные числа и бесконечно большие во внимание не принимаются). Поэтому ведущей строкой будет вторая строка « x5 ». Таблица 6.8 Симплекс-таблица Базис x1 x4 3 x5 0 x3 −3 Fmin 0

x2 0 4 −1 −4

x6 3 4 −4 4

x4 1 0 0 0

x5 0 1 0 0

x6 0 0 1 0

β 7 7 -4 0

β / x2 не огр.

7/4 4

Итерация 1. Поделим все элементы ведущей строки таблицы 6.8 на величину ведущего элемента, равную 4. Пересчитаем также все остальные элементы симплекс-таблицы и занесем расчеты в новую таблицу. Таблица 6.9 Таблица пересчета элементов таблицы 6.8 x1 x4 x2 x6 Fmin

3–0×0 0 –3 – 1 × ×0 0–0× × (–4)

x5

x3

0–0×4 3–0×4 1 1 –1 – 4 × –4 – 4 × × (–1) × (–1) –4 – 4 × 4 – 4 × × (–4) × (–4)

x4

x2

x6

β 1 – 0 × 0 0 – 1 × 0 0 – 0 × 0 не огр. 0 1/4 0 7/4 0 – (–1) × 1 – (–1) × 4 + 1 × 0–0 ×1 ×0 × 7/4 0–0× 0–1× 0–0× × (–4) × (–4) × (–4) 90

В этой таблице небазисную переменную x2 переведем в столбец базисных элементов. После вычислений получим следующую таблицу. Таблица 6.10 Таблица первой итерации Базис x4 x2 x6 Fmin

x1 3 0 0 0

x2 x3 0 3 1 1 0 3 12 0

x4 1 0 0 0

x5 0 1/4 1 4

x6 0 0 1 0

Решение 6,125 7/4 4 + 7/4 −7

Значение целевой функции равно Fmin= − 7. Полученное решение оптимально, так как все коэффициенты последней строки положительны. Взяв данные из последнего столбца таблицы 6.9 и сменив знак целевой функции, запишем ответ: x1 = 0 , x2 = 1,75 , x3 = 0 , Fmax = 7 . Для проверки решения в МАТLAB воспользуемся функцией linprog: f = [0; -4; -4]; A = [3 0 3 0 4 4 3 1 4]; b = [7; 7; 4]; lb = zeros(3,1); x = linprog(f,A,b,[],[],lb); x= 0.0000 1.750 0.0000 6.3.4. Задачи для самостоятельной работы

 x1 + x2 ≤ 4, 1. 5 x1 + 3 x2 → Fmax ,  5 x1 + 2 x2 ≤ 10, x1 , x2 ≥ 0 . 2 x1 + x2 ≤ 10, x1 , x2 ≥ 0 . 2. x1 + x2 → Fmax ,  −2 x1 + x2 ≤ 2, 91

− x1 + x2 ≤ 1, 3. 8 x1 + x2 → Fmax ,  x1 , x2 ≥ 0 . 2 x1 + x2 ≤ 4,  x1 − 2 x2 ≤ 1, 4. 2 x1 + x2 → Fmin ,  x1 , x2 ≥ 0 . −3x1 + x2 ≤ −8,  x1 + x2 ≤ 10, 5. 2 x1 + 3 x2 → Fmax ,  x1 , x2 ≥ 0 . 3 x1 + 5 x2 ≥ 15,  x1 + 2 x2 ≤ 11, 2 x − 4 x ≤ 3,  1 2 6. 2 x1 + x2 → Fmax ,  x1 , x2 ≥ 0 .  x1 − x2 ≤ 2,  x1 + x2 ≤ 6,

 x1 − x2 ≤ 1, x1 , x2 ≥ 0 . 7. 3 x1 + 2 x2 → Fmax ,   x1 + x2 ≤ 3,  x1 + 3x2 ≤ 18, x1 , x2 ≥ 0 . 8. 2 x1 + 3 x2 → Fmax ,  2 x1 + x2 ≤ 16,

3x1 + 2 x2 ≤ 12, x1 , x2 ≥ 0 . 9. 3 x1 + 2 x2 → Fmax ,  −2 x1 + x2 ≤ 3,  x1 + x2 ≤ 4, x1 , x2 ≥ 0 . 10. 5 x1 + 3 x2 → Fmax ,  5 x1 + 2 x2 ≤ 10,

6.3.5. Задачи для индивидуального задания

Далее везде x1 , x2 , x3 , x4 , x5 ≥ 0 . 2 x1 − 2 x2 ≥ −6,  ИЗ-1. 9 x1 + 4 x2 + 2 x3 → Fmax , 2 x1 + x2 ≤ 24,   x1 − 4 x2 + x3 ≤ 30. 2 x1 + x2 + x3 < 4, ИЗ-2. x1 − 4 x2 + 5 x3 → Fmax ,   x1 − x2 − x3 < 2. 92

5 x1 + 2 x2 + 3 x3 ≤ 25,   ИЗ-3. 6 x1 + 5 x2 + 9 x3 → Fmax ,  x1 + 6 x2 + 2 x3 ≤ 20,  4 x1 + 3 x3 ≤ 18.

ИЗ-4. −2 x1 + 3x2 − 3 x3 → Fmin ,

ИЗ-5. 27 x1 + 70 x2 + 2 x3 → Fmin ,

 x1 + 3x2 + x3 ≤ 5,  −3 x1 + 3x2 + x3 ≤ 0. 2 x1 + 5 x2 + 3 x3 ≥ 6,  − x1 + 2 x2 ≥ 1, 5 x + 13 x − x ≥ 1. 2 3  1

 x1 + x2 + x3 + x4 ≤ 15,  ИЗ-6. −4 x1 − 5 x2 − 9 x3 − 11x4 → Fmin , 7 x1 + 5 x2 + 3 x3 + 2 x4 ≤120,  3 x1 + 5 x2 + 10 x3 + 15 x4 ≤100 . 2 x1 + x2 + 3 x3 ≤ 11,  ИЗ-7. 11x1 + 20 x2 + 11x3 → Fmax , 3 x1 + 2 x2 + x3 ≤14,   x1 + 5 x2 + 2 x3 ≤15.  x1 − 3x2 + 4 x3 = 7,   ИЗ-8. 2 x1 − 7 x2 + 6 x3 → Fmax , −3 x1 − 8 x2 + 2 x3 ≤ 97,  17 x1 + 3 x2 − 5 x3 ≤ 15. −2 x1 − 3x2 − 2 x3 ≤ 12,   ИЗ-9. 3 x1 − 7 x2 − 4 x3 → Fmin , −4 x1 − 4 x2 − 3x3 ≤ 24,  5 x1 + 5 x2 + 3x3 ≤ 15.

93

−2 x1 − 3x2 − 2 x3 ≤ 12,   ИЗ-10. 3 x1 − 7 x2 − 4 x3 → Fmax , −4 x1 − 4 x2 − 3x3 ≤ 24,  5 x1 + 5 x2 + 3x3 ≤ 15,

ИЗ-11.

− x1 + 4 x2 − 2 x3 ≤ 6,   x1 + 2 x2 − x3 → Fmax ,  x1 + x2 + 2 x3 ≥ 6,  2 x1 − x2 + 2 x3 = 4.

2 x1 + 3 x2 + 5 x3 ≥ 8,   ИЗ-12. − x1 − 5 x2 − 8 x3 → Fmin , 2 x1 + 3 x2 + 4 x3 ≥ 4,  4 x1 + 2 x3 + x4 ≥ 5. 2 x1 + 4 x2 + 2 x3 ≥ 5,  ИЗ-13. 5 x1 + x2 + 2 x3 + x4 → Fmax ,  x1 + 4 x2 + 2 x3 + x4 ≤10,  4 x1 + 3 x3 + 2 x4 ≥12.

3 x1 + 2 x2 + x3 ≤ 100,  4 x1 + 2 x2 + 2 x3 + x4 ≤ 80,  ИЗ-14. 10 x1 + 8 x2 + 5 x3 + x4 → Fmax ,  5 x1 + 3x2 + 3 x3 ≤ 200,  3 x1 + 2 x2 + x3 + x4 ≤100 . − x2 + 4 x3 ≥ 1,   ИЗ-15. 2 x1 − 2 x2 + 4 x3 → Fmin , − x1 + 5 x2 ≤ 1,  − x1 + 2 x2 + 3 x3 ≥ 9.

 x1 + 3x2 + 3x3 ≤ 50, ИЗ-16. 8 x1 + 19 x2 + 7 x3 → Fmax ,  3x1 + 4 x2 + x3 ≤ 25. 94

3x1 + x2 + 2 x3 ≤ 11, ИЗ-17. 18 x1 + 30 x2 + 27 x3 → Fmax ,  5 x1 + 9 x2 + 7 x4 ≤ 44. 2 x1 + x2 + x3 ≤ 5,  ИЗ-18. 22 x1 + 9 x2 − 18 x3 → Fmax ,  x1 + x2 + 2 x3 ≤ 7,  4 x1 + x2 + 3 x3 ≤13. −3 x1 + x2 + x3 ≤ 1,  ИЗ-19. x1 + 2 x2 + 2 x3 → Fmax , 2 x1 − x2 + 2 x3 ≤ 7,  x − 3 x + x ≤ 1. 2 3  1

ИЗ-20. Fmax

−2 x1 + 4 x2 − 3 x3 ≤ 8,   = 2 x1 + 3 x2 − x3 , 2 x1 + x2 + 2 x3 ≥ 5,   x1 − x2 + 2 x3 ≤ 4.

95

7. НЕЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ Общая задача нелинейного программирования формулируется следующим образом: найти минимум (максимум) функции многих переменных f ( x) → min ( f ( x) → max ) на некотором допустимом множестве Ω . Допустимое множество определяется системой равенств и неравенств:  gi ( x) ≤ 0, i = 1,..., m;  h j ( x) ≤ 0, j = 1,..., n; q ( x) = 0, k = 1,..., l .  k В такой постановке, в отличие от задачи безусловной оптимизации (раздел 1), сформулированная задача называется задачей условной оптимизации. В случае двух переменных задача условной оптимизации решается геометрическим методом.

7.1. Геометрический метод решения задач нелинейного программирования Основные уравнения аналитической геометрии. 1. Уравнение параболы: а) y − y0 = a( x − x0 ) 2 – парабола симметрична относительно оси х = х0, если а > 0, то ее ветви направлены вверх параллельно оси Oу, в противном случае вниз; б) x − x0 = a ( y − y0 ) 2 – парабола симметрична относительно оси у = у0, если а ≥ 0, то ветви параболы направлены вдоль оси Ox, в противном случае против этой оси. Вершины обеих парабол находятся в точке (x0, y0). 2. Уравнение окружности с радиусом R: ( x − x0 ) 2 + ( y − y0 ) 2 = R 2 ,

(x0, y0) – центр окружности. 3. Уравнение гиперболы: 2

( x − x0 ) ( y − y0 ) 2 − = 1. a2 b2 Ее ветви направлены вдоль осей x = x0 , y = y0 .

96

4. Уравнение эллипса: 2 ( x − x0 ) ( y − y0 ) 2 + = 1, a2 b2 (x0, y0) – центр эллипса, a и b – полуоси, параллельные осям координат x и y. Алгоритм геометрического решения задачи нелинейного программирования. 1. На плоскости выбираем прямоугольную декартову систему координат. 2. Используя систему ограничений, строим область допустимых решений (ОДР). Если она пуста, то решение отсутствует. 3. Построим линии уровня, приравняв целевую функцию произвольной константе C. Постепенно изменяя С, получим уравнения, определяющие семейство кривых – линии уровня. 4. Используя линии уровня на плоскости, найдем градиент целевой функции в произвольной точке на линии уровня. 5. Для нахождения максимума целевой функции перемещаемся перпендикулярно линиям уровня в направлении градиента (при нахождении минимума перемещаемся в направлении, противоположном градиенту) до линии уровня, которая касается ОДР. Точки, принадлежащие одновременно линии уровня и границе ОДР, являются оптимальными решениями задачи. Зная их, вычисляем оптимальное значение целевой функции. 6. В случае неограниченности перемещения целевая функция также неограниченная. Пример. Определить минимум функции f ( x, y ) = x 2 + y 2 − 3 x − 3 y → min (7.1) при следующих ограничениях: x ≥ y2 , 2 (7.2) x − 2 x + y 2 − 2 y ≤ 1, . x+ y=2 Решение. Найдем область допустимых решений. Уравнение x ≥ y 2 задает область, ограниченную ветвями параболы. Причем ее ветви направлены по оси x (рис. 7.1). Уравнение ( x − 1) 2 + ( y − 1) 2 = 3 определяет окружность радиуса 3 с центром в точке (1,1). Наконец, х + у = 2 является уравнением прямой. Пересечение параболы, круга и 97

прямой задает область допустимых решений, которая на рисунке 7.1 изображена жирным отрезком. Рассмотрим линии уровня f ( x, y ) = x 2 + y 2 − 3 x − 3 y = C

для целевой функции (7.1). Они представляют собой концентрические окружности с центром в точке (1.5, 1.5). Одна из этих окружностей изображена на рисунке 7.1 пунктирной линией. С ростом радиуса окружности постоянная С также y растет. Задача определения минимума функции (7.1), ограниченной условиями (7.2), эквивалентна задаче нахождения такой окружности, которая имеет общие точки с жирной прямой (рис. 7.1) и у кото1 рой радиус минимален. Поэтому оптимальным решением задачи будет наименьшая из окружностей, которая касается области доx 1 пустимых решений. Найдем точку касания окружности (х – 1.5)2 + + (у – 1.5)2 = R2 с прямой x + y = 2. Прямая x + y = 0 параллельна исходной прямой и проходит через начало координат. Очевидно, пряРис. 7.1. Графический метод решения мая y – x = 0 перпендикулярна прямой x + y = 2 и проходит через центр (1.5, 1.5) окружности, а также через точку касания этой окружности с прямой x + y = 2 . Прямые x + y = 2 , y − x = 0 пересекаются в точке (1,1). Поэтому точка (1,1) является решением задачи.

7.2. Задачи для самостоятельной работы 1. min f = ( x1 − 4) 2 + ( x2 − 10) 2 ; 2 x1 + 3 x2 ≥ 6,  3 x1 − 2 x2 ≤ 18, − x + 2 x ≤ 8. 2  1

98

2. max f = x1 + x2 ;  x12 4 + x22 ≤ 1,  2 x1 + x2 ≤ 2,  x , x ≥ 0.  1 2

3. max(min) f = ( x1 − 1) x2 ;

 x12 + x22 ≤ 3,   x1 , x2 ≥ 0. 4. max(min) f = ( x1 − 4) 2 + ( x2 − 4) 2 ;  x1 + 2 x2 ≥ 3,  3 x1 + 2 x2 ≤ 15, x1 , x2 ≥ 0. 5. min f = ( x1 − 1) 2 + ( x2 − 2) 2 ;

 x2 ≤ 1 − x12 ,   x1 ≥ 0, x2 ≤ 0.

6. min f = x1 x2 ;  x12 + x12 ≤ 1,   x1 ≥ 0, x2 ≥ 0. 7. min f = ( x1 − 1) x2 ;  x12 + x2 2 ≤ 25,   x1 ≥ 0, x2 ≥ 0. 8. max f = x2 − x1 ;  x12 + x2 2 ≤ 9,   x1 − 1 ≤ 0.

9. min f = x12 − x2 2 ;  x12 + x2 2 ≤ 16,   x1 ≥ 0, x2 ≥ 0. 10. max f = x1 + x2 ;  x2 ≤ 1 − x12 ,   x1 ≥ 0, x2 ≥ 0. 99

11. max(min) f = x1 + x2 ;  x12 + x2 2 ≤ 16,   x2 ≤ 2,  x , x ≥ 0.  1 2

12. max f = 3 x1 + 2 x2 ;  x2 ≤ 2 − x12 ,   x1 ≥ 0, x2 ≤ 0. 13. min f = ( x1 − 6) 2 + ( x2 − 3) 2 ; 3 x1 + 6 x2 ≤ 18,   x1 , x2 ≥ 0.

14. min f = x12 + x2 2 − 12 x1 − 16 x2 ;  x12 + x2 2 ≤ 25,   x1 + 3 ≥ 0. 15. max(min) f = ( x1 − 1) 2 + ( x2 − 2) 2 ; x12 + ( x2 + 0,5) 2 ≤ 1 . 16. min f = 6 x1 + 4 x2 ;  x12 + x2 2 ≤ 25,   x1 ≤ 3.

7.3. Задача условной оптимизации с ограничениями-равенствами (задача Лагранжа) Общая задача условной оптимизации в случае, когда ограничениями являются равенствами, принимает вид: f ( x1 , x2 ,..., xn ) → min, (7.3) gi ( x1 , x2 ,..., xn ) = 0, i = 1,2,..., m , m < n. Для решения этой задачи воспользуемся методом Лагранжа. Этот метод позволяет перейти от задачи (7.3) условного экстремума к задаче безусловного экстремума с помощью функции Лагранжа m

L( x, λ) = f ( x1 ,..., xn ) +  λ k ⋅ g k ( x), k =1

100

где λ1 , λ 2 ,..., λ m – множители Лагранжа. Неизвестные x1 , x2 ,..., xn , λ1 , λ 2 ,..., λ m безусловной оптимизации определяются уравнениями:  ∂L( x, λ )  ∂xi = 0, i = 1,2,..., n,   ∂L( x, λ ) = 0, k = 1,2,..., m .  ∂λ k

Решение этой системы уравнений определяет точку x∗ = x1∗ , x2∗ ,..., xn∗ , в которой целевая функция достигает экстремума. Полученное решение является лишь стационарной точкой. Для того чтобы установить, достигается в этой точке минимум или максимум, нужно проверить матрицу Гесса. Если она является положительно определенной, то стационарная точка определяет минимум задачи. Пример. Решить задачу НЛП

f ( x) = x12 + x1 + x2 + x22 → min, 2 x1 + 3 x2 = 1 методом множителей Лагранжа. Cоставим функцию Лагранжа: L( x, λ) = x12 + x1 + x2 + x22 + λ(2 x1 + 3 x2 − 1) .

Для нахождения переменных x1 , x2 ,λ необходимо решить систему уравнений:  ∂L( x, λ)  ∂x1 = 2 ⋅ x1 + 1 + 2λ = 0,   ∂L( x, λ) = 2 ⋅ x2 + 1 + 3λ = 0,  ∂x 2   ∂L( x, λ)  ∂λ = 2 x1 + 3 x2 − 1 = 0.

Умножим первое уравнение на 3, а второе – на 2, затем вычтем из первого уравнения второе, в результате получим 6 x1 − 4 x2 + 1 = 0,  2 x1 + 3 x2 − 1 = 0.

101

Откуда

x = 1 , x = 4 ,  1 26 2 13  λ = − 7 13. Проверим определенность матрицы Гесса: ∂2 f ∂2 f 2 ∂x1 ∂x1∂x2 2 0 . H ( x) = 2 = ∂ f ∂2 f 0 2 ∂x1∂x2 ∂x22

Определители всех главных миноров данной матрицы положительны, поэтому решение имеет минимум. Следовательно, по критерию Сильвестра матрица Гесса положительно определена. Значение минимума в стационарной точке x1∗ = 0.0385 , x2∗ = 0.3077 равно f ( x1∗ , x2∗ ) = 0.4423 . 7.3.1. Задачи для самостоятельной работы

Определить, используя метод Лагранжа, экстремумы следующих функций. 1. f = 2 x1 + 3x2 при условии f 2 ( x) = x12 + x2 2 = 3 . 2. f = ( x1 − 1) x2 при условии x1 + x2 = 3 , x1 , x2 ≥ 0 . 3. f = 3x1 + 2 x2 при условии x12 + x22 = 1. 4. f = ( x1 − 2) 2 + ( x1 − 1) 2 при условии x12 + x22 = 1. 5. f 0 ( x) = x12 + 4 x1 x2 + x2 2 при условии x12 + x22 = 1. 6. f = x1 x2 при условии x1 + x2 = 2 , x1 , x2 ≥ 0 . 7. f = x12 + x1 x2 + x22 при условии 2 x1 + 3 x2 = 1 . 8. f = x1 x2 при условии x12 + x22 = 3 . 9. f = x1 − 2 x2 + 2 х3 при условии x12 + x22 + х23 = 9 . 10. f = х12 + x1 x2 при условии 2 х1 − х2 = 5 . 11. f = ( x1 − 1) 2 + x22 при условии 3x1 + 2 x2 = 9 . 12. f = 4 x12 + 3 x1 x2 + x2 2 при условии x1 − 2 x2 = 3 . 102

7.4. Основная задача условной оптимизации. Метод Куна – Таккера Обобщение метода Лагранжа. Найти минимум целевой функции, если ограничения заданы в виде равенств и неравенств: f ( x) → min, gi ( x) ≥ 0, i = 1, 2,..., m,

(7.4)

h k ( x) = 0, k = 1, 2,..., l .

Теорема Куна – Таккера [1]. Если решение задачи x∗ и градиенты ∇gi ( x∗ ) , ∇h j ( x∗ ) , i=1, 2,…, m; k=1, 2,…, l, образуют линейно независимую систему векторов, то для того, чтобы x∗ было решением задачи (7.4), необходимо, чтобы нашлись такие λ i > 0 , i = 1, 2,…, m, μ j , j = 1, 2, …, l, что m l  ∗ ∗ ∇ + λ ∇ + f ( x ) g ( x ) μ j ∇h j ( x∗ ) = 0, i i    i =1 j =1   λ g ( x∗ ) = 0, i = 1, 2,..., n.  i i

Отметим, что если отсутствуют ограничения в виде неравенств, то теорема Куна – Таккера сводится к задаче Лагранжа, а если отсутствуют ограничения в виде равенств, то она принимает вид f ( x) → min,

gi ( x) ≥ 0, i = 1, 2,..., m. 7.4.1. Алгоритм решения задачи условной оптимизации методом Куна – Таккера

Пример. Решить задачу НЛП f ( x) = ( x1 − 2) 2 + ( x2 − 2) 2 → min, 2 x1 + 3 x2 < 7, x1 > 0, x2 > 0

методом множителей Лагранжа. Cоставим функцию Лагранжа: L( x, λ ) = λ (( x1 − 2) 2 + ( x2 − 2) 2 ) − η1 x1 − η2 x2 + η3 (2 x1 + 3 x2 − 7) .

103

Для нахождения переменных x1 , x2 ,λ необходимо решить систему уравнений:  ∂L( x, λ)  ∂x1 = 2λ( x1 − 2) − η1 + 2η3 = 0,   ∂L( x, λ) = 2λ( x − 2) − η + 3η = 0, 2 2 3  ∂x 2  η1 x1 = 0, η2 x2 = 0, η (2 x + 3x − 7) = 0. 2  3 1 Если λ = 0 , то из первых двух уравнений найдем 3η1 = 2η2 , η1 = 2η3 , η2 = 3η3 . Так как согласно теореме Куна – Таккера хотя бы один из множителей должен быть отличен от нуля, то все коэффициенты не равны нулю. Поэтому из последних уравнений имеем x1 = x2 = 0 , 2 x1 + 3x2 − 7 = 0. Очевидно, полученные уравнения противоречат друг другу. Откуда следует вывод: в случае λ = 0 система уравнений решений не имеет. Если λ ≠ 0 , то, полагая, например, λ = 1/ 2 , выразим из первых двух уравнений x1 = 2 + η1 − 2η3 , x2 = 2 + η2 − 3η3 и подставим их в последние уравнения, в результате получим: η1 (2 + η1 − 2η3 ) = 0, η2 (2 + η2 − 3η3 ) = 0 , η3 (4 + 2η1 − 4η3 + 6 + 3η2 − 9η3 − 7) = 0 . η3 (2η1 + 3η2 − 13η3 + 3) = 0 .

Система этих уравнений имеет решения (они представлены в табл. 7.1). Таблица 7.1 Таблица решений задачи НЛП Номер решения η1 η2 η3 x1 x2

1

2

3

4

5

0 0 0 2 2

0 –2 0 2 0

–2 0 0 0 2

–2 –2 0 0 0

0 0 3/13 20/13 17/13

104

7.4.2. Задачи для самостоятельной работы

Найти экстремум функции. 1. f ( x, y ) = 2 x + y при ограничении x 2 + y 2 ≤ 1, x, у ≥ 0 . 2. f ( x, y ) = x 2 + y 2 − 2 y при ограничении x 2 + у 2 ≤ 4 , у ≥ 0 . 3. f ( x, y ) = x 2 + y 2 при ограничении y ≤ 4 − x 2 , x, у ≥ 0 . 4. f(x, y) = x + y при ограничении x ≤ 1 − у 2 , x, у ≥ 0 . 5. f ( x, y ) = x 2 + y 2 + 5 при ограничении y ≤ 1 − x , у ≤ 1 + х , у ≥ 0 . 6. f ( x, y ) = ( x − 3) 2 + ( y − 2) 2 при ограничении х2 + у2 ≤ 5, х + у ≤ 3. 7. f ( x, y ) = x 2 + y 2 − 2 y при ограничении y ≥ x 2 , у ≤ х + 2 , x, у ≥ 0 . 8. f ( x, y ) = x 2 + y 2 при ограничении у + х ≥ 2 , x, у ≥ 0 . 9. f ( x, y ) = 3x 2 + 4 xy + 5 y 2 при ограничении у + х ≥ 4 , x, у ≥ 0 .

105

8. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Динамическое программирование является мощным методом оптимизации, который находит широкое применение благодаря простоте и ясности своего основного принципа – принципа оптимальности.

8.1. Метод обратной прогонки Выбор маршрута движения автомобиля. Применение метода динамического программирования рассмотрим на примере следующей задачи. На графике (рис. 8.1) приведен план движения автомобиля по улицам города. Движение начинается в точке А и заканчивается в точке B. Расход горючего в условных единицах указан на схеме. Чтобы достичь конечной точки, нужно двигаться только вверх и направо. Как нужно выбрать маршрут, чтобы расход топлива был минимальным. 25 10

30 20

20 5

10 20

10

А

15

30

30

25 5

10

В

20 15

Рис. 8.1. План движения автомобиля

Решение. Применим метод обратной прогонки. Из точки А в точку В можно попасть, сделав пять шагов. На рисунке 8.2 каждому шагу соответствует пунктирная линия. Номера шагов указаны под линиями внизу плана движения автомобиля. План движения можно рассматривать как граф. На ребрах этого графа указан расход топлива для каждого шага. Анализ расхода топлива начнем с конечной точки. 1. В точку В на последнем этапе можно попасть из точек С и D, потратив 30 единиц горючего (рис. 8.2). Запишем в круги С и D эти 30 единиц. Перемещение из точки А в точку В происходит в течение пяти этапов. Оптимальный расход топлива на последнем (пятом) этапе равен: F5(CB) = 30, F5(DB) = 30. 106

W

25

85 10

20

R

20

80

15

70 1

Q

60 10

5 А

G 60

30 10

20

10 2

30

В

30

R

25

40 5

H

55

С

30

D

30 20

L

15

45

S

50

3

4

Рис. 8.2. Оптимальный маршрут

2. На четвертом этапе в точку С можно попасть из точек G, R, а в точку D – из точек R, S. Оптимальные расходы топлива при переходах из точек G, R, S в конечную точку равны: F45 (GB) = F4 (GC) + F5 (CB) = 30 + 30 = 60 , F45 ( RB ) = min{F4 ( RC ) + F5 (CB), F4 ( RD) + F5 ( DB)} = min{40, 55} = 40,

F45 ( SB) = F4 ( SD) + F5 ( DB) = 50 . Индексы – номера этапов (шагов). Запишем в кружки G, R, S вычисленные значения расхода топлива. 3. На третьем этапе в точку G можно попасть из точек W, Q, в точку R – из точек Q, L, в точку S – из точки L. Оптимальные расходы топлива при переходе из этих точек в конечную точку равны: F345(WB) = F3(WG) + F45(GB) = 25 + 60 = 85, F345 (QB ) = min{F3 (QG ) + F45 (GB ), F3 (QR) + F45 ( RB )} = min{80,60} = 60, F345( LB) = min{F3 ( LR) + F45 ( RB), F3 ( LS ) + F45 (SB)} = min{45,65} = 45 .

4. На втором этапе в точку W можно попасть из точки R, в точку Q – из точек R, H, в точку L – из точки H. Оптимальные расходы топлива при переходе из этих точек в конечную точку равны:

107

F2345(RW) = min{F2(RW) + F345(RG), F2(RQ) + F345(QB)} = = min{95,80} = 80; F2345(HB) = min{F2(HQ) + F345(QB), F2(HL) + F345(LB)} = = min{70,55} = 55. 5. На первом этапе из точки А можно попасть в точки R и Н. F12345( AB) = F1( AR) + F2345(RB) = 5 + 80 = 85, F12345( AB) = F1( AH) + F2345(HB) =15+ 55 = 70. Таким образом, оптимальным маршрутом является путь (AHLRC), минимальный расход топлива F12345 ( AB ) = 70 .

8.2. Алгоритм определения оптимальной траектории с помощью МАТLAB В случае большого количества шагов решение задачи динамического программирования становится громоздким. Такие задачи удобно решать, используя численные методы, например МАТLAB. Приведем алгоритм вычисления элементов матрицы на примере следующей задачи. Подвижный объект перемещается из точки А в точку В (рис. 8.3). Чтобы достичь конечной точки, нужно двигаться только вверх и налево. Определить оптимальный путь, длина которого минимальна, если расстояние между соседними пунктами задается таблицами: R = [5 3 5; 4 2 5; 1 3 5; 2 1 9] – матрица перехода влево, S = [3 5 2 1; 6 5 1 5; 1 5 3 5] – матрица перехода вниз. Сначала заполняются столбец Q(i, 1) и строка Q(1, j), которые находятся на границе матрицы, с помощью двух циклов: for j = 2:4 Q(1,j)=R(1, j-1)+Q(1,j-1) end for i = 2:4 Q(i,1)=S(i-1,1)+Q(i-1,1) end Затем в два этапа заполняется середина матрицы Q(i, j). На первом этапе, который заканчивается шагом на диагональной пунктирной прямой, заполнение происходит вдоль прямых, задаваемых уравнением в разностной форме: i + j = k + 2. На рисунке 8.3 они изобража108

ются штрихпунктирными прямыми. Переход от одной прямой к другой происходит с помощью цикла по k.

B

0

2

5

3

5

3

1

10 5

1 10

2

2

12

5

9

3

1

5

4

13 1

5

1

5

6

9

7

8 2

5 4

3

3

14 5

30 10

5

13 6

7

15 5

3

20 A

Рис. 8.3. Алгоритм метода обратной прогонки

Условный минимум определяется вдоль этих прямых. Так как между индексами i, j имеется связь, то достаточно сформировать цикл только по i: j=k-i+2 Q(i,j)=min(R(i,j-1)+ Q(i,j-1), S(i-1,j)+ Q(i-1,j)) end На втором этапе заполнение происходит вдоль прямых, задаваемых уравнением в разностной форме: i+j=k+2, также с помощью цикла по i. Выделив на каждой штрихпунктирной прямой минимальное значение длины пути, определим оптимальный путь. Программа для определения оптимального пути приведена ниже: Q = zeros(4,4); R=[5 3 5; 4 2 5; 1 3 5; 2 1 9] S=[3 5 2 1; 6 5 1 5; 1 5 3 5] Q(1,1)=0; for j = 2:4 Q(1,j)=R(1, j-1)+ Q(1, j-1) end 109

for i = 2:4 Q(i,1)=S(i-1,1)+ Q(i-1,1) end for k = 2:3 for i = 2:k i=i j=k-i+2 Q(i,j)=min(R(i,j-1)+ Q(i,j-1) S(i-1,j)+ Q(i-1,j)) end end for k = 1:3 for j= k+1:4 j=j i=4+k+1-j Q(i,j)=min(R(i,j-1)+ Q(i,j-1), S(i-1,j)+ Q(i-1,j)) end end; Значения элементов матрицы Q(i,j) заносятся в кружки на рисунке 8.3.

8.3. Пример решения задачи методом динамического программирования Рассмотрим следующую задачу набора высоты летательным аппаратом. Самолет поднимается на высоту H в вертикальной плоскости. Подъем начинается с высоты h0, где самолет имеет скорость V0, направленную вдоль горизонтальной оси. Необходимо найти оптимальную траекторию самолета, который должен подняться на высоту hk и увеличить свою скорость до величины Vk при условии m 2 W = V − V 02 + mg ( h − h0 )  min . 2 Запишем уравнения движения самолета в скоростной системе координат. В этой системе отсчета начало координат обычно совпадает с центром масс самолета. Система содержит скоростную ось, направленную по вектору скорости самолета относительно воздуха, ось подъемной силы, перпендикулярную плоскости крыльев самолета. Силы, действующие на самолет в траекторной скоростной системе координат: Р – сила тяги, G – подъемная сила, Q – сила трения,

(

)

110

mg – вес самолета; θ – угол между наклоном траектории и горизонтальной плоскостью (рис. 8.4). Cила трения равна Q = kV, где k – коэффициент сопротивления воздушной среды.

z G

Q

V Р

x

0 mg

Рис. 8.4. Силы, действующие на самолет

Модули сил Р, G далее обозначим соответственно P, G. В скоростной системе координат динамика самолета в процессе набора высоты описывается уравнениями: dV = P − kV − mg sin θ , dt dθ mV = G − mg cos θ . dt Высота подъема самолета равна: m

(8.1)

h

h =  V sin θdt . h0

Величина подъемной силы находится по формуле

G = ηSμ(θ) , где η = ρV 2 2 – скоростной напор; ρ – плотность воздуха; μ(θ) – коэффициент аэродинамической подъемной силы. В широких пределах угол μ (θ) = μ 0 θ , μ 0 = const , поэтому G = b(θ) , где b = ηSμ0 . Вычисление коэффициента и подъемной силы дает μ (θ) = 10 −2 θ , G = 0.1 ⋅ θ . Обозначим V (iΔt ) = Vi , θ(i Δt ) = θi , h (i Δt ) = hi , где Δ t – шаг по времени, i=1, 2, 3, …, N. С учетом этих замечаний запишем уравнения (8.1) в виде системы разностных уравнений: 111

Vi +1 = Vi + ( P − kVi − mg sin θi ) Δt m ; θi+1 = θi + (bθi / m − g cos θi ) Δt Vi ; i

hi +1 = h0 +  V j sin θ j Δ t .

(8.2)

j =1

Задаем число шагов вверх nz = 10 и по горизонтали nx = 10. Определяем точность Δh h = 0.1 , или 10%. Начальные и конечные условия: V0 = 100, Vk = 200, h0 = 1, hk = 10, b = 0,1, P = 100, k = 0,1, …, m = 10, Δt = 1 . Присоединим функционал расхода топлива: nx 1 (8.3) W =  (Vi 2 − V02 ) + mg ( hi − h0 )  min . i =1 2 На каждом шаге вычисляется минимум этого функционала и по известному его значению выбирается условный минимум. Полагая в (8.2) Δt = 1 , sin θi ≈ θi , перепишем (8.2) в виде, удобном для расчетов методом обратной прогонки:

Δtb    P   k Δt   Vi =  Vi +1 +  g θi −  Δt   1 −  , θi = ( θi +1Vi + g Δt )  Vi + m  , m   m      i +1

hi = hm −  V j sin θ j Δ t . j =1

Используя предыдущую программу и уравнения обратной прогонки, обозначив r = kΔt/m, f = P/m, b = bΔt/m, программу для определения оптимальной траектории набора высоты запишем в виде: format short N=10; g=9.8; T=0.1; r=0.01; b=9.0; f=137; v = zeros(N,N); q = zeros(N,N); h= zeros(N,N); S= zeros(N,N); S1=0; S2=0; v1=200; v2=199; q1=0.5; q2=0.5; h1=3000; 112

h2=2999; v(1,1)=v1; v(2,2)=v2; q(1,1)=q1; q(2,2)=q2; h(1,1)=h1; h(2,2)=h2; S(2,2)=0.5* v(2,2).^2+g* h(2,2) f0=f-g*q(1,1) q0=g-b*(1+u) v0=v(1,1)-f+g*q(1,1) for i = 2:N v(i,1)=(v(i-1,1)+(g*q(i-1,1)-f)*T)/(1-r*T) q(i,1)= (q(i-1,1)*v(i,1)+g*T)/(v(i,1)+b*T); h(i,1)= h(i-1,1)- v(i-1, 1)*q(i-1,1) S1=0.5* v(i,1).^2+g* h(i,1) S(i,1)= S1+ S(i-1,1) end for j=2:N v(1,j)=(v(1,j-1)+(g*q(1, j-1)-f)*T)/(1-r*T); q(1,j)=(q(1,j-1)* v(1,j)+g*T)/(v(1,j)+b*T); h(1,j)= h(1,j-1)* v(1, j-1)+g*T)/(v(1, j-1)+b*T); S2=0.5* v(1,j).^2+g* h(1,j) S(1,j)= S2+ S(1,j-1) end for k = 2:N-2 for i=2:k+1 i=i j=k-i+3 v1=(v(i-1,j)+(g*q(i-1,j)-f)*T)/(1-r*T) v2=(v(i,j-1)+(g*q(i,j-1)-f)*T)/(1-r*T) q1=(q(i-1,j)*v(i-1,j)+g*T)/(v(i-1,j)+b*T) q2=(q(i,j-1)*v(i,j-1)+g*T)/(v(i,j-1)+b*T) h1=h1-v1*q1 h2=h2-v2*q2 G1=0.5*v1.^2+g*h1 G2=0.5*v2.^2+g*h2 S3=min(G1,G2) if S3==G1; 113

v(i,j)=v1 q(i,j)=q1 h(i,j)=h1 S(i,j)= S3+ S(i-1,j) else v(i,j)=v2 q(i,j)=q2 h(i,j)=h2 S(i,j)= S3+ S(i,j-1) end end end for k = 1:N for j = k+1:N j=j i=N-j+k+1 v1=(v(i-1,j)+(g*q(i-1,j)-f)*T)/(1-r*T) v2=(v(i,j-1)+(g*q(i,j-1)-f)*T)/(1-r*T) q1=(q(i-1,j)*v(i-1,j)+g*T)/(v(i-1,j)+b*T) q2=(q(i,j-1)*v(i,j-1)+g*T)/(v(i,j-1)+b*T) h1=h1-v1*q1 h2=h2-v2*q2 G1=0.5*v1.^2+g*h1 G2=0.5*v2.^2+g*h2 S4=min(G1,G2) if S(i,j)==G1; v(i,j)=v1 q(i,j)=q1 h(i,j)=h1 S(i,j)= S4+ S(i-1,j) else v(i,j)=v2 q(i,j)=q2 h(i,j)=h2 S(i,j)= S4+ S(i,j-1) end end; end; h(i,j)= h(i,j) 114

График оптимальной траектория набора высоты приведен на рисунке 8.5. h 2.5 2 1.5 1 0.5 0

2

4

6

8 10 11 12 14

t

Рис. 8.5. График зависимости оптимального набора высоты от времени

Индивидуальное задание

Дирижабль под действием силы тяги FT перемещается из начальной точки в конечную (рис. 8.6). На него кроме силы тяги действует сила ветра FB, величина которой известна в каждой точке траектории. Считая дирижабль материальной точкой, определить его оптимальную траекторию. Математическая модель движения дирижабля под действием силы ветра FB и силы тяги FT имеет вид:



FВ FВ



β

V FВ

α





FT FВ

θ

V FВ

FВ Рис. 8.6. Силы, действующие на дирижабль

115

m mV

dV = FТ cos(α − θ) + FВ cos(β + θ) , dt

dθ = FТ sin(α − θ ) − FВ sin (β + θ) , dt

(8.4) (8.5)

где m – масса дирижабля; V – скорость дирижабля; α, β – углы, определяющие направление силы тяги и ветра; θ – угол, задающий направление движения дирижабля. По аналогии с индивидуальным заданием 1 для применения алгоритма динамической прогонки из п. 8.2 нужно записать уравнения (8.4), (8.5) в виде конечно-разностных уравнений. Чтобы использовать алгоритм обратной прогонки, на каждом шаге итерации необходимо будет решать трансцендентные уравнения, которые решаются только численно.

116

9. ЭЛЕМЕНТЫ ТЕОРИИ ИГР Теория игр описывает взаимодействие двух или более сторон с противоположными интересами. Формализованную модель конфликта называют игрой. Стратегией игры называют любое действие игрока в рамках правил игры. Игроки после выбора стратегии игры получают выигрыш. Игру называют антагонистической, если выигрыш одного игрока равен проигрышу другого. Решение игры – это набор стратегий одного игрока, когда он получает максимальный выигрыш, если другой игрок придерживается своей стратегии. На выбор первого игрока второй игрок должен отвечать так, чтобы у него был минимальный проигрыш. Стратегии, выбранные игроками, называются оптимальными.

9.1. Матричные игры Рассмотрим игру, смысл которой заключается в следующем. Если игрок А выбирает стратегию Аi, то игрок В отвечает на нее такой стратегией Вj, при которой выигрыш у игрока А минимален. В процессе игры игроки, очевидно, стремятся к получению максимального выигрыша. Если игрок А обладает т личными стратегиями А1, A2, ..., Ат , а игрок В имеет п личных стратегий В1, В2, ..., Вn , то такая игра имеет размерности т х п. Ее удобно описывать в виде матрицы Р = (аij), i = 1, 2, ..., т; j = 1, 2, ..., п . Игра состоит из нескольких шагов. На каждом шаге игроки выбирают пару стратегий: Аi и Вj (i = 1, 2, ..., т; j = 1, 2, ..., п). Наша задача – определить наилучшую из стратегий А1, A2, ..., Ат. Выигрыш аij игрока А или проигрыш ( − аi j) игрока В определяется с помощью таблицы 9.1. Для этого нужно взять элемент на пересечении строки Аi и столбца Вj. Строки матрицы являются стратегиями игрока А, а столбцы – стратегиями игрока В. Платежной матрицей, или матрицей игры, будем называть матрицу Р =(аi j), i = 1, 2, ..., т, j = 1, 2, ..., п, элементами которой являются выигрыши, соответствующие стратегиям Аi u Вj. В процессе игры после выбора стратегии игроком А игрок В отвечает своим выбором. Так, после выбора игроком А своей стратегии Аi игроку В становится известен результат выбора. Поэтому, стремясь

117

уменьшить выигрыш игрока А, он выбирает среди элементов i-й строки платежной матрицы минимальный ai = min aij , i = 1,2, ..., m. j

Таблица 9.1 Вi В1 В2 … Вn Аj А1 а11 а12 … а1n А2

а21 а22 … а2n





Аm

Аm1 аm2 … аmn

Найденные минимальные элементы ai заносятся в правый добавочный столбец таблицы 9.2. Таблица 9.2 Вi В1 В2 … Вn Аj А1

а11 а12 … а1n а1

А2

а21 а22 … а2n а2

… Аm

… а1n а2n … аmn аm

Игрок А, стремясь увеличить свой выигрыш, среди минимальных элементов a1, a2, ..., am выбирает максимальный:

a = max ai = max min aij . i

i

j

Число a – это нижняя цена игры, или максимальный выигрыш (максимин). Это гарантированный выигрыш игрока А при любой стратегии игрока В. Если начинает игрок В, выбирая стратегию Bj, то игрок А, зная этот выбор, старается получить максимальный выигрыш, выбрав в j-м столбце максимальный элемент: 118

bj = max aij , j= 1,2, ..., п. i

Игроку В необходимо уменьшить выигрыш игрока А, поэтому он должен выбрать такое число bj, чтобы его потери были минимальными: b = min b j = min max aij . j

j

i

Число b – это верхнее значение (верхняя цена) игры, или минимаксный выигрыш (минимакс). Это гарантированный проигрыш игрока В. Стратегия, соответствующая минимаксу, называется минимаксной стратегией. В случае совпадения верхней и нижней цены игры их общее значение v = а = b называется чистой ценой игры, или ценой игры. Минимаксные стратегии, соответствующие цене игры, являются оптимальными стратегиями. Совокупность этих стратегий дает нам оптимальное решение игры. Выбирая оптимальные стратегии, игрок А получает максимальный гарантированный (не зависящий от поведения игрока В) выигрыш v, а игрок В добивается минимального гарантированного (вне зависимости от поведения игрока А) проигрыша v. Оптимальное решение игры возможно лишь в случае, когда элемент aij, принадлежащий двум стратегиям Ai и Bj, является одновременно наибольшим в своем столбце и наименьшим в своей строке. Игра в этом случае называется игрой с седловой точкой (по аналогии с поверхностью седла, которая искривляется вверх в одном направлении и вниз − в другом). Пример. Рассмотрим игру с фишками. Оба игрока имеют по три фишки, на одной стороне которых нанесены цифры 1, 2, 3. Игрок А независимо от игрока В может выложить на стол фишку с цифрой 1 (обозначим этот ход А1), с цифрой 2 (обозначим А2) или с цифрой 3 (обозначим А3). Аналогично игрок В может выложить на стол фишки с цифрами 1, 2, 3. Обозначим соответствующие ходы В1, В2, В3. В зависимости от комбинации фишек, они расплачиваются друг с другом так, как показано в таблице 9.3. Например, если игрок А выложит на стол фишку с цифрой 3, то игрок В может ответить, выложив фишки с цифрами 1, 2 или 3. В таблице эти действия для игрока А обозначены строкой А3, а для игрока В – соответственно столбцами В1, В2 или В3. После ходов игрока В выигрыши игрока А таковы: 1, –3, 3. Нужно определить оптимальные стратегии игроков. 119

Таблица 9.3 C А1 А2 А3

В1 −1 1 1

В2 3 1 −3

В3 −2 2 3

Предположим, что игрок А начинает игру с выбора стратегии А1. Игрок В должен уменьшить выигрыш игрока А. Поэтому на стратегию А1 он ответит стратегией В3, нанося игроку А максимальный ущерб, равный –2, на стратегию А2 – стратегией В1 или В2 (минимальный выигрыш игрока А равен 1), а на стратегию А3 – стратегией В3 (минимальный выигрыш игрока А равен –3). Эти минимальные выигрыши запишем в правом столбце таблицы 9.4. Таблица 9.4 В1 А1 А2 А3

В2

В3

Выбор В: min А1, А2, А3. −1 3 −2 −2 1 1 2 1 −3 1 −3 3 Выбор А: max ( − 2,1, − 3), maxmin = 1

Минимальный выигрыш игрока А максимален, если он выберет стратегию А2. В этом при любом поведении противника ему гарантирован выигрыш, не меньший 1. Если начинает игрок В, выбирая стратегию В1, то игрок А ответит ему стратегией А2 или А3 (в этом случае выигрыш игрока А максимален и равен 1), на стратегию В2 – стратегией А1 (максимальный выигрыш игрока А равен 3), а на стратегию В3 – стратегией А3 (максимальный выигрыш игрока А равен 3). Перечисленные выигрыши даны в нижней строке таблицы 9.5. Таблица 9.5 В1 А1 − 1 А2 1 А3 1 max 1

В2 3 1 −3 3 120

В3 min −2 −2 2 1 −3 3 3

Для того чтобы выигрыш игрока В был максимален, ему нужно выбрать стратегию В1, при которой максимальный выигрыш игрока А минимален. Поэтому minmax = 1 и при любом поведении противника он проиграет не больше 1. Вывод. Так как числа maxmin и minmax совпали, то цена игры равна maxmin = minmax = 1. Стратегии А2 и В1 являются оптимальными стратегиями игроков А и В. 9.1.1. Задачи для самостоятельной работы

Определить для приведенных платежных матриц нижнюю и верхнюю цену игры, минимаксные стратегии и оптимальные решения игры. Имеет ли игра седловую точку? 5 4 3   3 01 0  7 8 6 9  9 8 4 9         1. 7 6 4 . 2. 7 2 3 5 . 3. 7 4 2 6 . 4. 5 6 7 8 .         2 53 11 2 5   4 3 6 5 8 3 4 7           0, 7 0,5 0, 4   2 01 4  213   − 2 2 −1         5. 0,9 0, 4 0, 2 . 6. 4 2 5 3 . 7. 3 2 4 . 8. 2 1 1  .         0,3 0, 6 0,8   413 2  1 5 3   3 −3 1          5 3 20      1 2 1 5   

1 21 0       2 3 2 3  

 0,1 0,5 0,7 0,5       0,6 0,4 0,50,2   

9. −1 1 0 −2 . 10. 3 2 2 5 . 11. 0,2 0,3 0, 4 0,1 .

 157   2 2 3 13 2 4   5 01   130   2 2 5    . 14.   . 15.  5 3 4  . 12. 3 2 5 3 . 13.          021 1 0 4  2 31 2   −2 1 3           561  013 

9.2. Смешанные стратегии В случае отсутствия седловой точки с помощью чистых стратегий невозможно найти оптимальное решение игры. Решение в этом случае, следуя [7], будем искать, используя смешанные стратегии. 121

Смешанной стратегией SA игрока А называется применение чистых стратегий А1, A2, ..., Аi ..., Ат с вероятностями р1, р2, ..., рi,…, pт, m

причем сумма вероятностей равна:

p

j

= 1. Смешанные стратегии

i =1

игрока А записываются в виде матрицы

 A1 A2 ... Ai ... Am  SA =    p1 p2 ... pi ... pm  или в виде строки S A = ( p1 p 2 ... p i ... p m ) . Аналогично для смешанных стратегий игрока В вводятся вероятности q1, q2, ..., qi,…, qт и обозначение:

 B1 B2 ...Bi ...Bm  SB =  ,  q1 q2 ...qi ...qm  m

где сумма вероятностей равна:

q

j

= 1.

i =1

Чистые стратегии можно считать частным случаем смешанных. Если искать оптимальные решения для чистых стратегий, то для цены игры получим два значения α и β – нижнюю и верхнюю цену игры. Очевидно, решением в случае смешанных стратегий является такая цена игры v, которая лежит между этими значениями:

α ≤ ν ≤ β. На вопрос о существовании оптимального решения игры отвечает основная теорема теории игр – теорема Неймана [8]. Каждая конечная игра имеет, по крайней мере, одно оптимальное решение, возможно, среди смешанных стратегий. Если чистые стратегии SA = (p1 p2 ... pi ... pm) и Sb = (q1 q2 ... qi ... qm) входят в оптимальную смешанную стратегию с отличной от нуля вероятностью, то они называются активными. Конкретный метод нахождения оптимальных решений при отсутствии седловой точки дает следующая теорема об активных стратегиях: если один из игроков придерживается своей оптимальной смешанной стратегии, то выигрыш остается неизменным и равным цене игры v, какой бы активной стратегий ни пользовался второй игрок.

122

Рассмотрим игру без седловой точки с платежной матрицей

 a11 a12  P= .  a21 a22  Пусть игроки А и В используют оптимальные смешанные стратегии  A1 A2   B1 B2  , SB =  SA =   .  p1 p2   q1 q2 

При выборе игроком А стратегии SA игрок В отвечает ему чистой стратегией В1 (ее коэффициенты в 1-м столбце платежной матрицы Р). Тогда средний выигрыш, равный цене игры v: a11 p1 + a21 p2 = ν .

Если игрок В применяет стратегию В2, то средний выигрыш согласно теореме об активных стратегиях не меняется: a12 p1 + a22 p2 = ν .

Откуда с учетом условия p1 + р2 = 1 при выборе игроком А стратегии SA = (p1 p2) для цены игры получим:  a11 p1 + a 21 p 2 = ν ,   a12 p1 + a22 p2 = ν ,  p + p = 1. 2  1

(9.1)

Из этой системы найдем вероятности:

p1 =

a22 − a21 , a11 + a22 − a12 − a21

p2 =

a11 − a12 a11 + a22 − a12 − a21

ν=

a11a22 − a12 a21 . a11 + a22 − a12 − a21

и цену игры

Аналогично при выборе игроком В оптимальной стратегии SB при любой чистой стратегии игрока А (А1 или А2) средний проигрыш игрока В равен цене игры v. Это дает следующую систему уравнений: 123

 a11q1 + a12 q2 = ν,   a21q1 + a22 q2 = ν,  q + q = 1. 2  1

(9.2)

Решив ее, получим оптимальную стратегию:

q1 =

a22 − a12 , a11 + a22 − a12 − a21

q2 =

a11 − a21 . a11 + a22 − a12 − a21

При решении (9.1), (9.2) удобно использовать МаthСAD. Для этого представим (9.1), (9.2) в виде  a11 p1 + a 21 p 2 − ν = 0,   a12 p1 + a 22 p 2 − ν = 0,  p + p = 1. 2  1

Для этой системы уравнений запишем расширенную матрицу А и вектор-столбец правой части b: a11

a 21

−1

0

A = a12

a 22

−1 , b =

0 .

1

0

1

1

После нахождения обратной матрицы получим решение p = A−1b ,

где p = ( p1 , p 2 , ν ) T . Пример. Найти оптимальные стратегии игры. Решение. Игра задана платежной матрицей без седловой точки:  −1 1   , α = –1, β = 1. P=  1 − 1  

Поэтому ищем решение в смешанных стратегиях. Для игрока А средний выигрыш равен цене игры v (при В1 и B2). Для игрока В средний проигрыш равен цене игры v (при А1 и A2). Системы уравнений (9.1), (9.2) в данном случае имеют вид:

124

( −1) ⋅ p1 + 1 ⋅ p2 = ν,  1 ⋅ p1 − 1 ⋅ p2 = ν,  p + p = 1. 2  1

(−1) ⋅ q1 + 1 ⋅ q2 = ν,  1 ⋅ q1 − 1 ⋅ q2 = ν, q + q = 1.  1 2

Решая эти системы, получаем p1 = p2 = q1 = q2 = 1 2 . Это означает, что оптимальная стратегия каждого игрока состоит в том, чтобы чередовать свои чистые стратегии случайным образом, выбирая их с вероятностью 1/2, при этом средний выигрыш равен 0, v = 0. 9.2.1. Задачи для самостоятельной работы

Найти оптимальные стратегии игры.

 21  11 7  1.   . 2.   . 3.  3 4  3 9  5.    1 3 8.  5  2

 12 22   32 2  . 4.  

 3 1 4 2  2 3 4 5.   1 2 3 4  

2 3 5 4  . 6. 1 3 2 

5 1  3  2

1 3 2 3 3 1  . 7. 2 1 2  1 3 2

4 3 2 5 3 1  . 9. 3 1 2  1 3 2

2 4  3  2

3 1 2 2 3 1  . 10. 2 1 2  1 3 2

2 1

1 3 2 2 11.  7 5 3 2  .  5 3 1 3  

125

1 2  1  2

2 3 1 1 3 1  . 2 1 2  1 3 1

1 7 1 2 2 3 1 5 3 2.   2 5 3 1 3  

ЛИТЕРАТУРА 1. Кузнецов, О. П. Дискретная математика для инженеров / О. П. Кузнецов, Г. М. Адельсон-Вельский. – М. : Энергия, 1980. – 344 с. 2. Зыков, А. А. Основы теории графов. – М. : Вузовская книга, 2004. – 664 с. 3. Аббасов, М. Э. Методы оптимизации. – СПб. : ВВМ, 2014. – 64 с. 4. Пантелеев, А. В. Методы оптимизации в примерах и задачах / А. В. Пантелеев, Т. А. Летова. – М. : Высш. шк., 2005. – 544 с. 5. Лунгу, К. Н. Линейное программирование. Руководство к решению задач. – М. : Физико-математическая литература, 2005. – 128 с. 6. Таха, Хемди А. Введение в исследование операций. – М. : Вильямс, 2005. – 912 с. 7. Шикин, Е. В. Исследование операций : учебник / Е. В. Шикин, Г. Е. Шикина. – М. : Проспект, 2006. – 280 с. 8. Кремер, Н. Ш. Исследование операций в экономике : учебное пособие для вузов / Н. Ш. Кремер, Б. А. Путко, И. М. Тришин ; под ред. Н. Ш. Кремера. – М. : ЮНИТИ, 2002. – 405 с.

126

3. ГОРМОНАЛЬНЫЙ ПРОФИЛЬ И ХОЗЯЙСТВЕННЫЕ ПОКАЗАТЕЛИ

Александр Иванович МАТВЕЕВ

МАТЕМАТИЧЕСКИЕ МЕТОДЫ СИСТЕМНОГО АНАЛИЗА Учебное пособие Издание второе, стереотипное Редакция естественнонаучной литературы

ЛР № 065466 от 21.10.97 Гигиенический сертификат 78.01.10.953.П.1028 от 14.04.2016 г., выдан ЦГСЭН в СПб Издательство «ЛАНЬ» [email protected]; www.lanbook.com 196105, СанктПетербург, пр. Юрия Гагарина, д. 1, лит. А Тел./факс: (812) 3362509, 4129272 Бесплатный звонок по России: 88007004071

Подписано в печать 02.10.20. Бумага офсетная. Гарнитура Школьная. Формат 84×108 1/32. Печать офсетная. Усл. п. л. 6,72. Тираж 50 экз. Заказ № 117820. Отпечатано в полном соответствии с качеством предоставленного оригиналмакета в АО «Т8 Издательские Технологии». 109316, г. Москва, Волгоградский пр., д. 42, к. 5.

3