Справочник от Автор24
Поделись лекцией за скидку на Автор24

Алгоритмы и вычислительные методы оптимизации

  • ⌛ 2021 год
  • 👀 543 просмотра
  • 📌 504 загрузки
  • 🏢️ СибГУТИ
Выбери формат для чтения
Статья: Алгоритмы и вычислительные методы оптимизации
Найди решение своей задачи среди 1 000 000 ответов
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Алгоритмы и вычислительные методы оптимизации» pdf
Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования «Сибирский государственный университет телекоммуникаций и информатики» (СибГУТИ) М. Ю. Галкина Алгоритмы и вычислительные методы оптимизации Учебное пособие Новосибирск 2021 УДК 519 (058.5) Утверждено редакционно-издательским советом СибГУТИ Рецензенты доц. Т. Э. Захарова, к.ф.-м.н. доц. Н. А. Кудрявцева Галкина М. Ю. Алгоритмы и вычислительные методы оптимизации: учебное пособие / М. Ю. Галкина; Сибирский государственный университет телекоммуникаций и информатики; каф. прикладной математики и кибернетики. – Новосибирск, 2021. – 137 с. В пособии рассматриваются методы решения задач линейного программирования; специальных задач линейного программирования: целочисленного программирования, теории игр, транспортной задачи; нелинейного программирования, многокритериальной оптимизации. Приведены определения, теоремы, формулы, а также сформулированы алгоритмы, необходимые для решения задач. Применение алгоритмов иллюстрируется большим количеством примеров. Изложенные в пособии алгоритмы студенты реализуют в виде программ на практических занятиях и в курсовой работе по соответствующей дисциплине. После каждой главы имеются вопросы для самопроверки. Пособие предназначено для студентов очной и заочной форм обучения, обучающихся по направлению 09.03.01 «Информатика и вычислительная техника», профиль «Программное обеспечение средств вычислительной техники и автоматизированных систем», и изучающих дисциплину «Алгоритмы и вычислительные методы оптимизации». © Галкина М.Ю., 2021 © Сибирский государственный университет телекоммуникаций и информатики, 2021 2 СОДЕРЖАНИЕ ВВЕДЕНИЕ .................................................................................................................. 5 1. ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ .......................................................... 7 1.1. Пример задачи линейного программирования (задача использования сырья) ............................................................................................................................ 7 1.2. Векторы и матрицы............................................................................................ 7 1.3. Метод Жордана-Гаусса ................................................................................... 11 1.4. Базисные и опорные решения систем линейных алгебраических уравнений ................................................................................................................... 14 1.5. Генерирование сочетаний без повторений из n по k .................................... 18 1.6. Различные формы записи задачи линейного программирования. Переход от одной формы записи к другой ............................................................................. 20 1.7. Геометрическая интерпретация задачи линейного программирования .... 24 1.8. Графический способ метод решения ЗЛП, заданной в симметричной форме, в случае двух переменных ........................................................................... 28 1.9. Многомерные ЗЛП, заданные в канонической форме, решаемые графически ................................................................................................................. 33 1.10. Симплекс-метод ............................................................................................... 36 1.11. Вырожденные решения и правило устранения зацикливания .................... 49 1.12. Метод искусственного базиса (М-метод) ...................................................... 52 1.13. Двойственные задачи....................................................................................... 57 1.14. Двойственный симплекс-метод ...................................................................... 67 Вопросы для самопроверки ....................................................................................... 70 2. СПЕЦИАЛЬНЫЕ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ .... 72 2.1. Целочисленные задачи линейного программирования. Метод Гомори .... 72 2.2. Транспортная задача ........................................................................................ 79 2.3. Задачи теории игр ............................................................................................ 91 Вопросы для самопроверки ..................................................................................... 110 3. НЕЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ ................................................. 112 3.1. Графическое решение задачи нелинейного программирования ............... 112 3.2. Метод множителей Лагранжа ....................................................................... 115 3.3. Решение задач выпуклого программирования ........................................... 116 3.4. Градиентные методы ..................................................................................... 122 Вопросы для самопроверки ..................................................................................... 128 3 4. МНОГОЦЕЛЕВЫЕ ЗАДАЧИ ....................................................................... 129 4.1. Множество Парето ......................................................................................... 129 4.2. Метод идеальной точки ................................................................................. 131 Вопросы для самопроверки ..................................................................................... 136 ЛИТЕРАТУРА ......................................................................................................... 138 4 ВВЕДЕНИЕ Несмотря на многообразие задач организационного управления, при их решении можно выделить некоторую общую последовательность этапов, через которые проходит любое исследование. Как правило, это: 1. Постановка задачи. 2. Построение содержательной модели рассматриваемого объекта (процесса). На данном этапе происходит формализация цели управления объектом, выделение возможных управляющих воздействий, влияющих на достижение сформулированной цели, а также описание системы ограничений на управляющие воздействия. 3. Построение математической модели, т. е. перевод сконструированной модели в ту форму, в которой для ее изучения может быть использован математический аппарат. 4. Решение задач, сформулированных на базе построенной математической модели. 5. Проверка полученных результатов на их адекватность природе изучаемой системы, включая исследование влияния так называемых внемодельных факторов, и возможная корректировка первоначальной модели. 6. Реализация полученного решения на практике. В курсе Алгоритмы и вычислительные методы оптимизации центральное место отведено вопросам, относящимся к четвертому пункту приведенной выше схемы. Для решения задачи составляют математическую модель задачи, т.е. записывают ее с помощью математических выражений: неравенств, уравнений и т.п. Для математического описания задачи можно руководствоваться следующей общей схемой: 1) выбирают некоторое количество переменных x1, x2 , , xn , заданием числовых значений которых однозначно определяется одно из возможных состояний исследуемого экономического процесса; 2) выражают взаимосвязи исследуемого экономического процесса в виде математических соотношений (уравнений, неравенств). Эти соотношения образуют систему ограничений математической модели; 3) поиск наилучшего решения формулируют в терминах поиска оптимального (максимального или минимального) значения функции Z ( x1, x2 , , xn ) . Построенная функция называется целевой. В зависимости от свойств целевой функции, методы оптимизации можно рассматривать как ряд самостоятельных дисциплин, занимающихся изучением и разработкой методов решения определенных классов задач. Если Z ( x1, x2 , , xn ) - линейная функция и линейны функции, описывающие ограничения на переменные x1, x2 , , xn , то математическая модель представляет задачу линейного программирования. Если хотя бы одна из указанных функций нелинейная, то математическая модель является объектом исследования нелинейного 5 программирования. Наиболее изученным разделом является линейное программирование. Для решения задач этого раздела разработан целый ряд эффективных алгоритмов и методов. В курсе Алгоритмы и вычислительные методы оптимизации студенты должны изучить алгоритмы, используемые при решении оптимизационных задач и запрограммировать эти алгоритмы при выполнении лабораторных и курсовой работ. 6 1. ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ 1.1. Пример сырья) задачи линейного программирования (задача использования Пусть на мебельной фабрике могут выпускать стулья и кресла. Сведения о ресурсах, расходе материалов и прибыли от реализации каждого изделия приведены в табл. 1. Таблица 1 – Исходные данные в задаче Ресурсы Запасы Пиломатериалы (м3) Ткань (м2) Рабочее время (ч) Прибыль от ед. продукции (у.е.) 10 2000 1000 Расход на единицу продукции стул кресло 0.01 0.03 0.5 2 2 5 10 35 Найти план производства продукции максимизирующий прибыль предприятия. Для решения такой задачи строится математическая модель. Для этого выбирают переменные. Пусть x1 – количество выпущенных стульев, x2 – количество выпущенных кресел. Выпустив такое количество продукции, предприятие затратит ресурсы: пиломатериалов – 0.01x1 + 0.03x2 м3, ткани – 0.5x1 + 2 x2 м2, рабочего времени – 2 x1 + 5x2 ч. При этом, выпуск продукции ограничен имеющимися ресурсами. Получаем систему: 0.01x1 + 0.03x2  10, 0.5 x1 + 2 x2  2000, . (1.1) 2 x + 5 x  1000, 1 2  x , x  0.  1 2 Полученная прибыль составит Z = 10 x1 + 35x2 . Ее надо максимизировать. (1.2) Z = 10 x1 + 35x2 → max . (1.1), (1.2) образуют математическую модель задачи, (1.1) – система ограничений, (1.2) – целевая функция. Если система ограничений и целевая функция линейны, то построенная модель называется задачей линейного программирования. 1.2. Векторы и матрицы Упорядоченный набор n вещественных чисел x1, x2 , , xn будем называть nмерным вектором и обозначать x . Числа x1, x2 , , xn называются координатами вектора. Вектор, все компоненты которого равны 0, называется нулевым вектором: 0 = (0,0, ,0) . Два n-мерных вектора x = ( x1, x2 , , xn ) и y = ( y1, y2 , , yn ) равны, если их соответствующие координаты равны, т.е. если xi=yi для i = 1, 2, …, n. 7 Определим над векторами две операции: 1. Умножение вектора x = ( x1, x2 , , xn ) на действительное число   x = ( x1, x2 , , xn ) . 2. Сложение векторов x = ( x1, x2 , , xn ) и y = ( y1, y2 , , yn ) x + y = ( x1 + y1, x2 + y2 , , xn + yn ) . Множество всех n-мерных векторов c определенными над ними операциями сложения и умножения на скаляр, называется n-мерным векторным пространством и обозначается Rn. Пример 1 R2={(x1, x2) | x1R, x2R} – двумерное векторное пространство (множество точек на плоскости). Линейной комбинацией векторов a1, a 2 , , a s называется вектор 1a1 +  2 a 2 + +  s a s , где i – скаляр (i =1, 2, …, s). Система векторов a1, a 2 , , a s называется линейно зависимой, если существуют числа 1,2 , , s , одновременно не равные 0, такие, что выполняется 1a1 +  2 a 2 + +  s a s = 0 . В противном случае, система векторов a1, a 2 , , a s называется линейно независимой. Для линейно независимой системы равенство 1a1 +  2 a 2 + +  s a s = 0 выполняется лишь при условии 1 =  2 = =  s = 0 . Векторы, составляющие линейно независимую систему, называются линейно независимыми. Пример 2 Вектора a1=(5; 3; 2), a2=(1; 7; 3), a3=(2; 3; 2), , a4=(10; -6; 1) линейно зависимы, т.к. выполняется соотношение a1 − 3a 2 + 4a3 − a 4 = 0 . Базисом системы векторов a1, a 2 , , a s называется любая подсистема ai1 , ai2 , , air линейно независимых векторов этой системы, если любой вектор ai (i = 1, 2, …, s) из исходной системы представим в виде линейной комбинации векторов ai1 , ai2 , , air . Теорема 1 В пространстве Rn векторы e1 = (1,0, ,0) , e2 = (0,1, ,0) , …, en = (0,0, ,1) образуют базис. Доказательство: Покажем, что векторы e1, e2 , , en – линейно независимы. Составим линейную комбинацию этих векторов и определим, при каких i (i = 1, 2, …, n) она равна 0. 1e1 +  2 e2 + +  n en = 1(1,0, ,0) +  2 (0,1, ,0) + +  n (0,0, ,1) = = (1, 2 , , n ) = 0  1 =  2 = = n = 0 8 Следовательно, векторы e1, e2 , , en - линейно независимы. Возьмем любой вектор x = ( x1, x2 , x = x1e1 + x2 e2 + , xn ) из пространства Rn: + xn en = x1(1,0, ,0) + x2 (0,1, ,0) + + xn (0,0, ,1) = = ( x1, x2 , , xn ) . Следовательно, x представим в виде линейной комбинации e1, e2 , , en . Теорема 2 Количество векторов в любом базисе одинаково. Рангом системы векторов называется число векторов в любом базисе этой системы. Прямоугольная таблица чисел, имеющая m строк и n столбцов, называется матрицей размера mn: a1n   a11 a12 a a22 a2 n  A =  21 . a amn   m1 am 2 Среди квадратных матриц выделяют матрицы специального вида: 0 1 0 1 0  - единичные матрицы размера nn.  E =  0 0  1   Рангом матрицы будем называть ранг системы векторов, составленных из столбцов этой матрицы, т. е. системы a1 = (a11, a21, , am1), a 2 = (a12 , a22 , , am2 ), , a n = (a1n , a2n , , amn ) . Элементарными преобразованиями над строками матрицы будем называть следующие действия: 1. Перестановку строк. 2. Умножение всех элементов выбранной строки на число, отличное от 0. 3. Сложение соответствующих элементов двух строк. 4. Вычеркивание строк, состоящих из нулей. С помощью элементарных преобразований любую матрицу A размера mn (m  n) можно привести к виду: a1, n   0 a1, r +1 a1, r + 2 1 0  r +1 a2,  r +2  n  a2, 0 a2, (1.3) A  0 1  r , 0 0 1 ar ,r +1 ar ,r + 2 ar ,n    r где r  m и первые r столбцов могут занимать произвольные места в произвольном порядке. Очевидно, для матрицы (1.3) ранг равен r. Теорема 3 Элементарные преобразования не меняют ранга матрицы. На основании вышесказанного для определения r ранга матрицы A размера mn (m  n) с помощью элементарных преобразований будем приводить матрицу 9 к виду (1.3), применяя следующий алгоритм (т.к. m  n, то ранг матрицы не может быть больше m). 1. Пусть r = m . 2. Вычеркиваем столбцы, состоящие из нулей. 3. Пусть s=1, k=1. 4. В s-ом столбце выберем элемент отличный от 0 среди элементов akk , ak +1,k , , am,k . Если такого элемента нет, то увеличиваем s на 1 и переходим к п.4. Не теряя общности, можно считать, что akk  0 (этого можно добиться перестановкой строк). Элемент akk называется разрешающим. Получаем новую матрицу, выполнив следующие преобразования: − разделим k-ю строку на разрешающий элемент akk ; − все элементы k-го столбца новой матрицы, кроме akk , равны 0; − для расчета aij – остальных элементов новой матрицы построим прямоугольники с вершинами в элементах aij и элементе akk : akk aik akj aij akj  aik и найдем новые элементы по правилу прямоугольников: aij = aij − . akk 4. Вычеркнем строки, состоящие из нулей, если такие образовалась. При вычеркивании каждой строки, r уменьшается на 1. 5. Если k меньше r, то увеличиваем k и s на 1 и переходим к п.4, иначе переходим к п.7. 6. Ранг исходной матрицы будет равен r – размеру выделенной единичной матрицы. Пример 3 Найти с помощью  1 2 3 −4   2 −3 −2 3  . 4 1 4 −5   элементарных преобразований ранг матрицы Решение: Ранг данной матрицы не может быть больше 3. Выполним преобразования согласно алгоритму (выделены разрешающие элементы на каждом шаге). 10 1 2 3 −4   2 −3 −2 3   4 1 4 −5   2 3 −4  1   0 −7 −8 11    0 −7 −8 11    Пересчет элементов новой матрицы по правилу прямоугольников a a 22  = a22 − 12 21 = −3 − a22 = −7; a11 1 a a 3 2  = a23 − 13 21 = −2 − a23 = −8; a11 1 a a −4  2  = a24 − 14 21 = 3 − a24 = 11; a11 1 a a 24  = a32 − 12 31 = 1 − a32 = −7; a11 1 a a 3 4  = a33 − 13 31 = 4 − a33 = −8; a11 1 a a −4  4  = a34 − 14 31 = −5 − a34 = 11. a11 1 1  0 0  ( 1 5 / 7 −6 / 7  8 / 7 −11 / 7  0  Пересчет элементов новой матрицы по правилу прямоугольников: a a −8  2 5  = a13 − 23 12 = 3 − a13 = ; a22 −7 7 a a 11  2 6  = a14 − 24 12 = −4 − a14 =− ; a22 −7 7 a23  a32 −8  (−7)  = a33 − a33 = −8 − = 0; a22 −7 a a 11  (−7)  = a34 − 24 42 = 11 − a34 = 0. a22 −7 Вычеркиваем последнюю строку (она состоит из нулей). Новая матрица: 1 0 5 / 7 −6 / 7 . 0 1 8 / 7 −11 / 7 Из последней матрицы видно, что ранг матрицы A равен 2 (rang(A)=2). ) 1.3. Метод Жордана-Гаусса Рассмотрим систему из m линейных уравнений с n неизвестными: a11x1 + a12 x2 + + a1n xn = b1, a21x1 + a22 x2 + + a2n xn = b2 , (1.4)  , a x + a x + + a x = b . mn n m  m1 1 m 2 2 Обозначим через А матрицу системы ограничений, а через A - расширенную матрицу системы: 11 a1n b1  a1n   a11 a12  a11 a12  a21 a22 a a22 a2n b2  a2 n  A =  21 , A= . a a amn bm  amn   m1 am 2  m1 am 2 Если ввести обозначения:  a1n   a11   a12   b1   , b =   , то систему (1.4) можно  , a2 =  , a1 =  , an =  a  a  b  a   m1   m2   m  mn  переписать в виде: x1a1 + x2 a 2 + + xn a n = b . (1.5) Тогда решить уравнение (1.5) – значит найти коэффициенты разложения вектора b по системе векторов a1, a 2 , , a n . Для решения системы (1.4) будем использовать метод полного исключения неизвестных или метод Жордана-Гаусса. Суть этого метода состоит в том, чтобы, выполнив элементарные преобразования над строками матрицы A , аналогично алгоритму нахождения ранга матрицы A, получить матрицу вида (1.3). Преобразования матрицы называются жордановыми исключениями. В процессе жордановых исключений возможны следующие случаи: 1. Получена строка, состоящая из нулей, кроме последнего коэффициента (правой части уравнения). В этом случае система не имеет решения. 2. Ранг матрицы А равен количеству уравнений m и числу неизвестных n (r= m = n). Тогда система имеет единственное решение. 3. Ранг матрицы А не превосходит количества уравнений m (r  m) и m < n. Тогда система имеет бесконечно много решений. Пусть имеет место третий случай, и расширенная матрица системы приведена к виду (1.3): a1, n b1   0 a1, r +1 a1, r + 2 1 0  r +1 a2,  r +2  n b2   a2, 0 a2, A  0 1  r . 0 0 1 ar ,r +1 ar ,r + 2 ar ,n bn    r По преобразованной матрице составим систему:  x1 + a1, r +1xr +1 + + a1 n xn = b1 ,  x2 + a2,  r +1xr +1 + + a2 n xn = b2 , (1.6)  ,  x + a  xn = br . r , r +1xr +1 + + arn  r Система (1.6) называется приведенной к единичному базису. Переменные x1, x2 , , xr , соответствующие столбцам единичной матрицы, называются базисными, все остальные переменные xr +1, xr + 2 , , xn – свободными. Если выразить в (1.6) базисные переменные через свободные, то получим общее решение системы: 12  x1 = b1 − a1, r +1xr +1 − − a1 n xn ,  x2 = b2 − a2,  r +1xr +1 − − a2 n xn , .  ,  x = b − a  xn . r r , r +1xr +1 − − arn  r (1.7) Замечания: 1. При решении систем методом Жордана-Гаусса не возникает нулевых столбцов, поэтому п.2 алгоритма можно пропустить. 2. При решении систем с помощью программы может возникнуть деление на очень маленькое число (если диагональный элемент близок к нулю), поэтому используют метод Жордана-Гаусса с выбором главного элемента в столбце. Для этого в п. 4 алгоритма в качестве разрешающего выбирают максимальный по модулю элемент k-го столбца среди элементов akk , ak +1,k , , am,k и переставляют строки матрицы таким образом, чтобы он оказался в k-ой строке. Пример Решить систему методом Жордана-Гаусса с выбором главного элемента в столбце.   x1 + x2 + 2 x3 − 6 x4 = −3,  x1 + x2 + x3 − 4 x4 = 0,   x1 + x2 − 2 x4 = 3. Решение: Составим расширенную матрицу системы и выполним элементарные преобразования над ее строками, используя жордановы исключения.  1 1 2 −6 −3   1 1 2 −6 −3  A =  1 1 1 −4 0   0 0 −1 2 3 .   1 1 0 −2   0 0 −2 3 4 6    Во втором столбце нет отличных от 0 элементов ниже a22. Переходим к третьему столбцу. Поменяем местами вторую и третью строки, т.к. в третьем столбце max( −1 , −2 ) = 2 . 2 −6 −3   1 1 0 −2 3  1 1  0 0 −2 4 6   0 0 1 −2 −3  1 1 0 −2 3 .  0 0 1 −2 −3 0 0  0 0 0 0 − 1 2 3     Ранг матрицы A равен 2, следовательно, система имеет бесконечно много решений. Из преобразованной матрицы определяем, что переменные x1, x3 – базисные, а x2 , x4 - свободные. Система, приведенная к единичному базису: x1 + x 2 −2 x4 = 3, x3 − 2 x4 = −3. Выразим базисные переменные через свободные: x1 = 3 − x 2 +2 x4 , – общее решение. x3 = −3 + 2 x4. (   13 ) 1.4. Базисные и опорные решения систем линейных алгебраических уравнений Пусть имеется общее решение системы линейных уравнений:  x1 = b1 − a1, r +1xr +1 − − a1 n xn ,  x2 = b2 − a2,  r +1xr +1 − − a2 n xn , .  ,  x = b − a  xn . r r , r +1xr +1 − − arn  r Положив значения свободных переменных равными нулю: получим базисное решение системы: xr +1 = xr + 2 = = xn = 0 , X = (b1, b2 , , br ,0,0, ,0) . Базисное решение называется невырожденным, если оно содержит ровно r неотрицательных компонент, в противном случае оно называется вырожденным. Заметим, что для нахождения базисного решения можно не выписывать общее решение системы. Достаточно положить значения свободных переменных равными 0, а значения базисных переменных находятся в правой части матрицы системы, приведенной к единичному базису, в строках, соответствующих единицам единичной матрицы. Рассмотрим запись системы в векторном виде: x1a1 + x2 a 2 + + xn a n = b . Т.к. система векторов a1, a 2 , , a n в (1.3) может иметь несколько базисов (столбцы единичной матрицы можно получать на разных местах), то базисных n! решений может быть несколько, но не более, чем Сnr = ). r !(n − r )! Пример 1 Найдем все базисные решения для системы из Примера п.1.3.   x1 + x2 + 2 x3 − 6 x4 = −3,  x1 + x2 + x3 − 4 x4 = 0,   x1 + x2 − 2 x4 = −3. Решение: Была получена матрица, приведенная к единичному базису: 1 1 0 −2 3 . 0 0 1 −2 −3 В общем решении в матрице, приведенной к единичному базису, переменные x1, x3 – базисные, x2, x4 – свободные, поэтому, положив x2=0, x4=0, получаем первое базисное решение системы: X 1 = (3;0; −3;0) . Так как rang(A) = 2, n = 4, то базисных решений может быть не больше, чем 4! 4! С42 = = = 6 . Переберем все 6 возможных комбинаций базисных пе2!(4 − 2)! 2! 2! ременных: x1, x2; x1, x3; x1, x4; x2, x3; x2, x4; x3, x4. Для каждой пары переменных ( ) 14 преобразуем матрицу А с помощью элементарных преобразований таким образом, чтобы столбцы единичной матрицы получились на месте столбцов, соответствующих базисным переменным. Для преобразований можно использовать любую наиболее удобную матрицу из предыдущих преобразований. Для того, чтобы переменные x1, x2 стали базисными, необходимо получить столбцы единичной матрицы на местах первого и третьего столбцов. Но из матрицы 1 1 0 −2 3 видно, что это сделать невозможно, т.к. эти столбцы 0 0 1 −2 −3 линейно зависимы. Следовательно, переменные x1 и x2 не могут быть одновременно базисными. Для того, чтобы переменные x1 и x4 стали базисными, необходимо получить столбцы единичной матрицы на местах первого и четвертого столбцов. Выполним преобразования матрицы.  1 1 0 −2 3 1 1 −1 0 6 .  0 0 1 −2 −3 − 1 / 2 1 3/ 2  ( ) ) ( ) Получаем второе базисное решение системы: X 2 = (6;0;0;3 / 2) . Для того, чтобы переменные x2 и x3 стали базисными, необходимо получить столбцы единичной матрицы на местах второго и третьего столбцов. Это уже сделано в матрице 1 1 0 −2 3 . 0 0 1 −2 −3 ( ) Получаем третье базисное решение системы: X 3 = (0;3; −3;0) . Для того, чтобы переменные x2 и x4 стали базисными, необходимо получить столбцы единичной матрицы на местах второго и четвертого столбцов. Это уже −1 0 6 . сделано в матрице 1 1 0 0 −1 / 2 1 3 / 2 ( ) Получаем четвертое базисное решение системы: X 4 = (0;6;0;3 / 2) . Для того, чтобы переменные x3 и x4 стали базисными, необходимо получить столбцы единичной матрицы на местах третьего и четвертого столбцов. Выполним преобразования матрицы:  1 1 0 −2 3 −1 / 2 −1 / 2 0 1 −3 / 2 .  0 0 1 −2 −3 −1 −1 1 0 −6  ) ( ) Получаем пятое базисное решение системы: X 5 = (0;0; −6; −3 / 2) . Базисные решения, в которых все переменные неотрицательны, называются опорными решениями. В примере выше из найденных пяти базисных решений опорными являются только два: X2 и X4. Опорные решения можно находить путем перебора базисных решений, но можно внести изменения в уже рассмотренный алгоритм поиска базисных решений для более быстрого нахождения опорных решений. При нахождении опорных решений будем считать, что правая часть исходной системы не содержит отрицательных коэффициентов. Этого можно всегда 15 достичь, умножив нужные уравнения на –1. Далее при преобразованиях матрицы, необходимо следить за тем, чтобы правая часть сохраняла неотрицательность. Рассмотрим дополнительные условия, которые будут накладываться на выбор разрешающего элемента при выполнении жордановых исключений. Пусть aij – разрешающий элемент j-го столбца, akj – элемент в j-ом столбце и k-ой строке (akj  0), на месте которого после элементарных преобразований будет получен 0. Рассмотрим один шаг жордановых исключений:      aij bi   1 bi     ,    bk  akj bk           bi  akj bk  aij − bi  akj b = где bi  0, bk  0 , bi = i , bk = bk − . aij aij aij Так как bi  0 и хотим сохранить неотрицательность правой части в этой b строке, то должно выполняться условие bi = i  0 , откуда aij  0 . Таким обраaij зом, разрешающий элемент должен быть положительным. Возможны 2 случая: akj < 0 и akj > 0. Рассмотрим их. 1) akj  0 Тогда, bk  aij − bi  akj  0 . Т.е. для отрицательных akj неотрицательность правой части после выполнения шага жордановых исключений сохранится. 2) akj  0 Тогда, должно выполняться неравенство bk  aij − bi  akj  0 . Преобразуем неравенство bk  aij  bi  akj . Т.к. akj  0 и aij  0 , то должно выполняться неравенb b ство k  i . akj aij Следовательно, при поиске опорных решений на каждом шаге метода Жордана-Гаусса для включения в базис следует выбирать переменную с положительным коэффициентом aij , для которого в j-ом столбце достигается минимум отношения свободных членов к положительным элементам столбца: bi b = min k . aij k , akj 0 akj (1.8) Если в процессе преобразования матрицы окажется, что в некоторой строке все коэффициенты при неизвестных неположительны, а правая часть – положительна, то система не имеет опорных решений. Если rang(A) = r и уже получено (r-s) столбцов единичной матрицы (1  s < r) и дальше не удается выделить по16 ложительный элемент матрицы, удовлетворяющий ограничению (1.8) для получения (r-s+1)-го столбца единичной матрицы, то включение в базис выбранных ранее переменных не дает опорного решения. Пример 2 Найти все опорные решения системы.  2 x1 − x2 + x3 − x4 = 3, 2 x1 − x2 + x4 = 2,  3 x1 − x3 − x4 = −1. Решение:  2 −1 1 −1 3   2 −1 1 −1 3  A =  2 −1 0 1 2   2 −1 0 1 2  .  3 0 −1 −1 −1  −3 0 1 1 1      Определим, какой положительный элемент следует выбрать в качестве разрешающего в первом столбце матрицы из соотношения (1.8). 3 2 min  ;  = 1 , следовательно, разрешающий элемент находится во второй 2 2 строке.  2 −1 1 −1 3   0 1 −2 1   2 −1 0 1 2   1 −1 / 2 0 1 / 2 1  .  −3 0 1 1 1   0 −3 2 5 8     Во втором столбце нельзя выбрать положительный разрешающий элемент. Откуда можно заключить, что x1 и x2 не могут быть базисными переменными опорного решения. Определим, какой положительный элемент следует выбрать в качестве разрешающего в третьем столбце матрицы. 1 8  min  ;  = 1 , следовательно, разрешающий элемент находится в первой строке. 1 2  0 1 −2 1  1 −2 1   0  1 −1 / 2 0 1 / 2 1   1 −1 / 2 0 1 / 2 1  . 0 −3 2 5 8   0 −3 0 9 6   Определим, какой положительный элемент следует выбрать в качестве разрешающего в четвертом столбце матрицы. 2 6 6 min  ;  = , следовательно, разрешающий элемент находится в третьей 1 9 9 строке. 0 1 −2 1   0 −2 / 3 1 0 7 / 3   1 −1 / 2 0 1 / 2 1   1 −1 / 3 0 0 2 / 3  .   0 −3 0 9 6   0 −1 / 3 0 1 2 / 3   Из последней матрицы находим опорное решение X 1 = (2 / 3;0;7 / 3;2 / 3) . 17 Определим остальные опорные решения системы. Т. к. rang(A) = 3, n = 4, то 4! 4! = = 4. базисных решений может быть не больше, чем С43 = 3!(4 − 3)! 3! 1! Переберем 4 возможные комбинации базисных переменных: x1, x2, x3; x1, x2, x4; x1, x3, x4; x2, x3, x4. Для каждой тройки переменных преобразуем матрицу А с помощью жордановых исключений таким образом, чтобы столбцы единичной матрицы получились на месте столбцов, соответствующих базисным переменным. Случай, когда базисными переменными являются x1, x3, x4 уже рассмотрен. То, что x1 и x2 не могут быть базисными переменными опорного решения, было отмечено выше. Остался случай x2, x3, x4. Из последней матрицы x3, x4 уже базисные, но x2 нельзя включить в базис для получения опорного решения (во втором столбце нет положительных элементов). Поэтому, найденное опорное решение X = (2 / 3;0;7 / 3;2 / 3) является единственным опорным решением системы. 1.5. Генерирование сочетаний без повторений из n по k Сформулируем алгоритм генерирования сочетаний для нахождения всех базисных решений системы линейных уравнений [5]. Без ограничения общности можно считать, что A = {1,2, , n} . Каждому k-элементному подмножеству взаимно однозначно соответствует возрастающая последовательность длины k с элементами из A. Сформулируем алгоритм, который позволяет генерировать все такие последовательности в лексикографическом порядке (p – номер элемента, с которого будут начинаться изменения в следующем сочетании): 1. Первая последовательность (1, , k ) , p = k. 2. Если последний элемент сгенерированной последовательности не равен n, то p = k, в новой последовательности меняется только последний элемент. Если последний элемент сгенерированной последовательности равен n, то уменьшаем p на 1 и новая сгенерированная последовательность (b1 , , bp , , bi , , bk ) будет отличаться от предыдущей (a1 , , a p , , ai , , ak ) , начиная с p-го элемента по следующему правилу: p-ый элемент увеличиваем на 1, а все последующие элементы на 1 больше предыдущего. Правило можно сформулировать по-другому: bi = a p + (i − p + 1), i = p, , k . Пояснение: bp = a p + 1, bp +1 = a p + 2, bk = a p + (k − p + 1) . (a1 , , a p , , ai , , ak ) (b1 , , bp , , bi , , bk ) i − p +1 Пункт 2 повторяем до тех пор, пока p не станет равным 0. 18 С помощью приведенного алгоритма можно написать программу, которая будет находить все базисные или опорные решения системы линейных уравнений. Блок-схема сформулированного алгоритма приведена на рис. 1. Пример Генерирование сочетаний из 5 по 3 по сформулированному алгоритму. Решение: (1, 2, 3), p = 3; (1, 2, 4), p = 3; (1, 2, 5), p = 2; (1, 3, 4), p = 3; (1, 3, 5), p = 2; (1, 4, 5), p = 1; (2, 3, 4), p = 3; (2, 3, 5), p = 2; (2, 4, 5), p = 1; (3, 4, 5), p = 0. 19 начало k, n i = 1, k, 1 ai = i p= k да ak = n p= p - 1 нет p= k p1 нет да i = k, p, -1 ai = ap + (i - p + 1) конец 1 – Блок-схема генерирования сочетаний без повторений 1.6. Различные формы записи задачи линейного программирования. Переход от 20 одной формы записи к другой Рассмотрим задачу линейного программирования (ЗЛП) в общем виде: n Z =  c j x j → max(min), (1.9) j =1  n   aij x j  j =1  n    aij x j  j =1  n    aij x j  j =1 x  0  j  bi (i = 1, , m1),  bi (i = m1 + 1, , m2 ), = bi (i = m2 + 1, , m), ( j = 1, (1.10) , k , k  n), где aij , bi , c j – заданные постоянные величины и m1  m2  m . Функция (1.9) называется целевой функцией, а условия (1.10) – ограничениями задачи. Задача линейного программирования задана в канонической форме, если требуется максимизировать целевую функцию, все ограничения системы – уравнения, и на все переменные наложено условие неотрицательности ( m1 = m2 = 0, k = n ). Задача линейного программирования задана в симметричной форме, если требуется максимизировать целевую функцию, все ограничения системы – неравенства «» (или минимизировать целевую функцию, все ограничения системы – неравенства «») и на все переменные наложено условие неотрицательности. Набор чисел X = ( x1, x2 , , xn ) называется допустимым решением (планом), если он удовлетворяет системе ограничений (1.10). Множество всех допустимых решений называется областью допустимых решений (ОДР). Допустимое решение X * = ( x1* , x2* , , xn* ) , для которого достигается максимальное (минимальное) значение функции, называется оптимальным планом. Значение целевой функции при плане X будем обозначать Z ( X ) . Следовательно, если X* – оптимальный план задачи, то для любого X выполняется неравенство Z ( X )  Z ( X * ) при нахождении максимума функции или Z ( X )  Z ( X * ) при нахождении минимума функции. Термины «план» и «оптимальный план» возникли из экономических приложений. Все три формы записи ЗЛП являются эквивалентными в том смысле, что имеются алгоритмы перехода от одной формы к другой. Таким образом, если имеется способ решения задачи в одной из форм, то всегда можно определить оптимальный план задачи, заданной в любой другой форме. Задача в симметричной 21 форме решается графическим методом, а в канонической форме – симплексметодом. Рассмотрим алгоритмы перехода от одной формы к другой. • Симметричная → каноническая. Переход осуществляется путем добавления в левую часть каждого неравенства дополнительной неотрицательной переменной. Если неравенство было «≤», то дополнительная переменная добавляется в левую часть неравенства со знаком «+». Если неравенство было «», то дополнительная переменная добавляется в левую часть неравенства со знаком «–». Вводимые дополнительные переменные называются балансовыми. Задачу минимизации функции Z заменяют на задачу максимизации функции (–Z) и используют, что min Z = –max (–Z). • Каноническая → симметричная. Для осуществления такого перехода находится общее решение системы уравнений – ограничений, целевая функция выражается через свободные переменные. Далее, воспользовавшись неотрицательностью базисных переменных, можно исключить их из задачи. Симметричная форма задачи будет содержать неравенства, связывающие только свободные переменные, и целевую функцию, зависящую только от свободных переменных. Значения базисных переменных находятся из общего решения исходной системы уравнений. • Общая → каноническая. Каждая переменная, на которую не было наложено условие неотрицательности, представляется в виде разности двух новых неотрицательных переменных. Неравенства преобразуются в уравнения путем введения в левую часть каждого неравенства балансовой переменной таким же образом, как это было описано при переходе от симметричной к канонической форме. Задачу минимизации функции Z заменяют на задачу максимизации функции (–Z) таким же образом, как это было описано при переходе от симметричной к канонической форме. Пример 1 Перейти от общей формы записи задачи линейного программирования к канонической форме. Z 3x1 2 x2 3x3 min, 2 x1 x2 x3 2, 3 x1 2 x2 4 x3 6, x1 x2 5 x3 4, x1 , x2 0. Решение: На переменную x3 не наложено условие неотрицательности, поэтому представим x3 в виде разности неотрицательных переменных: x3 x3 , x3 0 . Тогда система ограничений будет иметь вид: 22 x3 x3 , где 2 x1 x2 3 x1 2 x2 x1 x2 x3 x3 4 x3 5 x3 2, 4 x3 6, 5 x3 4, x1 , x2 , x3 , x3 0, а целевая функция преобразуется к виду: 3x1 2 x2 3x3 3x4 min . В неравенства введем дополнительные переменные, перейдем к задаче максимизации и получим каноническую форму записи задачи: Z Z 3x1 2 x1 x2 3 x1 2 x2 x1 x2 2 x2 x3 3 x3 x3 4 x3 5 x3 3 x4 x4 4 x3 5 x3 x1 , x2 , x3 , x3 , x4 , x5 max, 2, x5 6, 4, 0.  Пример 2 Перейти от канонической формы записи задачи линейного программирования к симметричной форме. Z 2 x1 x2 3x3 6 x4 x5 max, x1 3x2 x3 4 x4 x5 12, x1 2 x2 3x4 x5 6, 3x1 3x2 16 x4 2 x5 26, x1 , x2 , x3 , x4 , x5 0. Решение: Найдем общее решение системы методом Жордана-Гаусса. 1 4 −1 12   1 3 1 4 −1 12   1 3     A =  1 2 0 3 −1 6   0 −1 −1 −1 0 −6   3 3 0 16 −2 26   0 −6 −3 4 1 −10       1 0 2 1 −1 −6   1 0 0 23 / 3 −1 / 3 34 / 3      1 1 1 6    0 1 0 −7 / 3 −1 / 3 −10 / 3  .  0 0 3 10 1 −10   0 0 1 10 / 3 1 / 3 26 / 3      Ранг матрицы A равен 3, следовательно, система имеет бесконечно много решений. Из преобразованной матрицы определяем, что переменные x1, x2 , x3 - базисные, а x4 , x5 - свободные. Система, приведенная к единичному базису: 23  x1 + 23 / 3x4 − 1 / 3 x5 = 34 / 3,  x − 7 / 3x − 1 / 3x = −10 / 3,  2 4 5   x3 + 10 / 3x4 + 1 / 3 x5 = 26 / 3,   x1 , x2 , x3 , x4 , x5  0. Выразим базисные переменные через свободные:  x1 = 34 / 3 − 23 / 3x4 + 1 / 3x5  0,  x = −10 / 3 + 7 / 3 x + 1 / 3 x  0,  2 4 5 – общее решение системы.  x = 26 / 3 − 10 / 3 x − 1 / 3 x  0, 4 5  3   x4 , x5  0. Выразим целевую функцию через свободные переменные: Z 2(34 / 3 23 / 3x4 1 / 3x5 ) ( 10 / 3 7 / 3 x4 1 / 3 x5 ) 3(26 / 3 10 / 3x4 1 / 3 x5 ) 6 x4 x5 Задача в симметричной форме: Z 41/ 3x4 7 / 3x5 max, 23x4 − x5  34, 7 x + x  10,  4 5  10 x4 + x5  26,    x4 , x5  0. 41 / 3 x4 7 / 3 x5. 1.7. Геометрическая интерпретация задачи линейного программирования Графический метод решения ЗЛП применяется для решения задач, заданных в симметричной форме. Этот метод наиболее эффективно применяется для решения задач с двумя переменными, т.к. требует графических построений. В случае трех переменных необходимы построения в R3, в случае четырех переменных необходимы построения в R4 и т.д. Множество точек называется выпуклым, если для любых двух точек множества оно содержит отрезок, их соединяющий. На рис. 2 представлены примеры выпуклых множеств. Рисунок 2 – Выпуклые множества На рис. 3 представлены примеры множеств, которые не являются выпуклыми. Рисунок 3 – Невыпуклые множества 24 Теорема 4 Пересечение любого количества выпуклых множеств является выпуклым множеством. Доказательство: Рассмотрим доказательство для случая двух множеств. Пусть имеются два множества точек A и B, которые являются выпуклыми. Пусть множество С - пересечение множеств A и B. Возьмем две произвольные точки P и Q, принадлежащие множеству С. Точки P и Q принадлежат С, поэтому они принадлежат A. Но A является выпуклым множеством, поэтому отрезок [PQ] принадлежит множеству A. Точки P и Q принадлежат С, поэтому они принадлежат B. Но B является выпуклым множеством, поэтому отрезок [PQ] принадлежит множеству B. Получили, что отрезок [PQ] принадлежит как множеству A, так и множеству B. Следовательно, отрезок [PQ] принадлежит пересечению A и B, т.е. множеству C. Следовательно, множество C с любыми двумя точками содержит отрезок, их соединяющий, поэтому, C – выпуклое множество. Теорема 5 Пусть имеются две произвольные точки P( p1, p2 , , pn ) и Q(q1, q2 , , qn ) в пространстве Rn. Тогда для любой точки X ( x1, x2 , , xn ) отрезка [PQ] должно выполняться: xi = qi + (1 −  ) pi (i = 1,2, , n), где 0    1. Доказательство: Пусть имеются точки P( p1, p2 , , pn ) и Q(q1, q2 , , qn ) , и X ( x1, x2 , , xn ) лежит на отрезке [PQ]. PQ = (q1 − p1 , , qn − pn ), PX = ( x1 − p1, , xn − pn ). Q P X точка С другой стороны, PX =   PQ , где 0    1. Тогда, PX = ( x1 − p1 , , xn − pn ) =  (q1 − p1, , qn − pn ). ( x1 − p1 , , xn − pn ) = ( ( q1 − p1 ), ,  (qn − pn ))  x1 − p1 =  (q1 − p1 ), , xn − pn =  (qn − pn ). Откуда получаем: x1 = p1 +  (q1 − p1 ) = q1 + (1 −  ) p1, , xn = pn +  (qn − pn ) = qn + (1 −  ) pn . Следовательно, xi = qi + (1 −  ) pi (i = 1,2, , n) , где 0    1. Гиперплоскостью в пространстве Rn называется множество точек, удовлетворяющее уравнению a1x1 + a2 x2 + + an xn = b , где ai (i = 1,2, n), b – константы. Заметим, что в двумерном случае гиперплоскостью является прямая. Полупространством называется множество точек, удовлетворяющее одному из неравенств a1x1 + a2 x2 + + an xn  b или a1x1 + a2 x2 + + an xn  b . Гиперплоскость делит точки пространства на два полупространства. В двумерном случае полупространством является полуплоскость. 25 Теорема 6 Полупространство является выпуклым множеством. Доказательство: Рассмотрим доказательство для случая, когда полупространство задается неравенством a1x1 + a2 x2 + + an xn  b . Пусть точки P( p1, p2 , , pn ) и Q(q1, q2 , , qn ) принадлежат полупространству. Тогда, должны выполняться неравенства: a1 p1 + a2 p2 + + an pn  b и a1q1 + a2q2 + + anqn  b . Пусть X ( x1, x2 , , xn ) – некоторая точка отрезка [PQ]. Тогда по Теореме 5 должно выполняться xi = qi + (1 −  ) pi (i = 1,2, , n) , где 0    1. Домножим первое неравенство на (1-), второе на  и сложим их. (1 −  )a1 p1 + (1 −  )a2 p2 + + (1 −  )an pn  b  a1q1 +  a2q2 +  anqn  b + a1((1 −  ) p1 +  q 1) + a2 ((1 −  ) p2 +  q 2 ) + + an ((1 −  ) pn +  q n )  b. Получаем, a1x1 + a2 x2 + + an xn  b . Следовательно, точка любая точка X отрезка [PQ] принадлежит полупространству, поэтому, полупространство – выпукло. Следствие Пересечение любого количества полупространств является выпуклым множеством. Многогранником называется пересечение одного или более полупространств. Многогранник в двумерном случае называется многоугольником. На рис. 4 приведены примеры многоугольников. Ограниченный многоугольник Неограниченный многоугольник Рисунок 4 – Примеры многоугольников Точка выпуклого множества называется угловой, если она не лежит внутри никакого отрезка, соединяющего две другие точки данного множества. Угловыми точками треугольника являются его вершины (их три). Угловыми точками круга являются точки окружности, которая его ограничивает (их бесконечное число). Угловая точка многогранника называется его вершиной. 26 Рассмотрим ЗЛП, заданную в симметричной форме. Z = c1x1 + c2 x2 + + cn xn → max, a 11 x1 + a12 x2 + + a1n xn  b1,  ,   a m1 x1 + am 2 x2 + + amn xn  bm ,   x1, x2 , , xn  0. (1.11) (1.12) Теорема 7 Если задача (1.11), (1.12) имеет оптимальное решение, то максимальное значение целевая функция принимает в одной из вершин многогранника решений. Если максимальное значение целевая функция принимает более, чем в одной вершине, то она принимает его во всякой точке, являющейся выпуклой комбинацией этих вершин (т.е. функция принимает максимальное значение в любой точке ребра или грани, которые определяются этими вершинами). Доказательство: Наибольшее значение функция может принимать либо внутри многогранника, либо на его границе. Пусть наибольшее значение функция принимает внутри многогранника. Тогда для этой точки должно выполняться необходимое условие экстремума: Z Z Z = = = = 0  c1 = c2 = = cn = 0  Z  0, противоречие. x1 x2 xn Следовательно, наибольшее значение функция принимает на границе многоугольника. Предположим, что наибольшее значение функция принимает в граничной точке X * ( x1* , x2* , , xn* ) , которая не является вершиной. Значит, Z max = Z ( X * ) = c1 x1* + c2 x2* + + cn xn* = M и точка X* лежит внутри отрезка [PQ]. Следовательно, выполняется: Z ( P) = c1 p1 + c2 p2 + + cn pn  M , Z (Q) = c1q1 + c2q2 + + cnqn  M , xi* =  qi + (1 −  ) pi (i = 1,2, , n) , где 0    1. Тогда, M = Z ( X * ) = c1 x1* + c2 x2* + + cn xn* = c1 ( q1 + (1 −  ) p1 ) + c2 ( q2 + (1 −  ) p2 ) + + +cn ( qn + (1 −  ) pn ) =  (c1q1 + c2q2 + + cn qn ) + (1 −  )(c1 p1 + c2 p2 + + cn pn )    M + (1 −  ) M = M Получили, M  M – противоречие. Следовательно, наибольшее значение функция принимает в вершине многогранника. 27 1.8. Графический способ метод решения ЗЛП, заданной в симметричной форме, в случае двух переменных Пусть задача линейного программирования с двумя переменными задана в симметричной форме. (1.13) Z = c1x1 + c2 x2 → max, a 11 x1 + a12 x2  b1, a x + a x  b ,  21 1 22 2 2 (1.14) ,  a x + a x  b ,  m1 1 m 2 2 m  x1, x2  0. Для решения этой задачи можно перебрать все вершины многоугольника, определяемого системой ограничений, и выбрать из них ту, в которой значение функции больше. Но можно не перебирать все вершины, а воспользоваться понятиями линии уровня и градиента. Линией уровня функции Z называется множество точек, удовлетворяющее уравнению Z = c , где c – произвольная константа. В двумерном случае, это уравнение определяет прямую. Линии уровня линейной функции образуют семейство параллельных прямых.  Z Z  , Вектор grad Z =   называется градиентом функции Z. Вектор  x1 x2  grad Z в каждой точке перпендикулярен линии уровня, проходящей через эту точку, и указывает направление наибольшего возрастания функции Z, grad Z = (c1, c2 ) . Таким образом, наибольшее значение Z достигается в вершине, через которую проходит линия уровня, соответствующая наибольшему значению Z. Для графического решения задачи ЗЛП используют следующий алгоритм: 1. Записывают уравнения граничных прямых ai1x1+ai2x2=bi (i = 1,…,m) и строят их на плоскости X1OX2 по двум точкам. 2. Отмечают полуплоскости, соответствующие ограничениям - неравенствам. Для этого берут «пробную» точку, через которую не проходит граница полуплоскости (часто берут, если прямая не проходит через начало координат, точку (0,0)), и ее координаты подставляют в соответствующее ограничение-неравенство. Если полученное неравенство верное, то искомой будет полуплоскость, содержащая «пробную» точку; в противном случае, искомой будет полуплоскость, которой данная точка не принадлежит. 3. Заштриховывают многоугольник, определяемый системой ограничений. Для этого определяют общую часть ранее отмеченных m полуплоскостей, лежащую в первой четверти (следует из условий неотрицательности переменных). 4. Строят вектор grad Z = (c1, c2 ) и одну из прямых семейства Z = c (чаще всего Z = 0). Если выбранный для построения многоугольника масштаб не позволяет построить grad Z , то вместо него строят вектор N = k  grad Z 28 grad Z (в k случае, если длина grad Z слишком велика для построения), где k  1 . 5. В случае необходимости параллельным переносом линию уровня следует расположить таким образом, чтобы многоугольник находился впереди линии уровня по направлению grad Z . 6. Определяют экстремальную точку, соответствующую вершине многоугольника, путем параллельного перемещения прямой Z = с в направлении вектора grad Z . Это будет наиболее удаленная вершина многоугольника, в которой линия уровня пересекается с многоугольником. 7. Вычисляют координаты оптимальной точки и значение функции Z в этой точке. Замечание: Если у функции требуется найти минимальное значение, то линию уровня Z = c перемещают в направлении вектора − grad Z (или перемещают в направлении grad Z , но находят первую вершину пересечения линии уровня с многоугольником). В зависимости от особенностей области допустимых решений и взаимного расположения области и вектора grad Z при решении задачи линейного программирования возможны различные случаи. Рассмотрим их. 1. Если область допустимых решений – ограниченный многоугольник, то может быть либо единственное решение, либо бесконечно много решений – все точки отрезка, соединяющего две вершины многоугольника (альтернативный оптимум). В случае альтернативного оптимума оптимальный план представляется выражением координат произвольной точки отрезка через координаты ее концов. 2. Если область допустимых решений – неограниченный многоугольник, то в зависимости от направления grad Z задача может иметь или не иметь решения. В этом случае так же может оказаться альтернативный оптимум. На рис. 5 приведены примеры нахождения оптимальной точки. (в случае, если длина grad Z слишком мала для построения) или N = Рисунок 5 – Примеры нахождения минимумов и максимумов функции 29 На рис. 5(а) функция достигает минимума в точке А, а максимума – в любой точке отрезка ВС (альтернативный оптимум); на рис. 5(б) максимум достигается в точке А, минимума функция не имеет; на рис. 5(в) функция не имеет ни минимума, ни максимума. Пример 1 Решить графически ЗЛП: Z = 50 x1 + 40 x2 → max, 2 x1 + 5 x2  20, 8 x + 5 x  40,  1 2  5 x1 + 6 x2  30,  x1, x2  0. Решение: На рис. 6 демонстрируется процесс графического решения данной задачи. Рисунок 6 – Графическое решение задачи из Примера 1 Сделаем пояснения к рис. 6. Каждое неравенство исходной системы ограничений определяет полуплоскость. Запишем уравнения граничных прямых для этих полуплоскостей. (1) 2х1 + 5х2 = 20, (2) 8х1 + 5х2 = 40, (3) 5х1 + 6х2 = 30. х1 10 х1 5 х1 6 x2 4 x2 8 x2 5 Построим прямые, ограничивающие полуплоскости, определяемые неравенствами системы. Каждая прямая разбивает плоскость на две полуплоскости. Для выбора полуплоскостей, определяемых каждым неравенством, подставим координаты «пробной» точки (0;0) в каждое неравенство. Получаем: 30 2  0 + 5  0  20 верно. Следовательно, отмечаем полуплоскость, содержащую «пробную» точку (0;0). 8  0 + 5  0  40 верно. Следовательно, отмечаем полуплоскость, содержащую «пробную» точку (0;0). 5  0 + 6  0  30 верно. Следовательно, отмечаем полуплоскость, содержащую «пробную» точку (0;0). Выбранные полуплоскости отметим стрелочками. Найдем пересечение отмеченных полуплоскостей с учетом условия: х1, х2  0. Заштрихуем полученный пятиугольник OABCD. Построим линию уровня Z = 0: 50х1 + 40х2 = 0. х1 x2 4 -5 Вектор grad Z = (50;40) определяет направление наибольшего возрастания grad Z функции Z. Построим из начала координат вектор N = = (5;4) . Этот век10 тор также показывает направление наибольшего возрастания функции. Перемещая линию уровня параллельным переносом в направлении вектора N , находим последнюю точку пересечения линии уровня и заштрихованного пятиугольника – точку C. Эта точка является точкой максимума функции. Точка C получается в результате пересечения прямых (2) и (3). Для нахождения ее координат решим систему: 8 x1 + 5 x2 = 40, 5 − 5 x1 + 6 x2 = 30. 8 − 23x2 = −40 40 920 − 200 40 40 − 5  x1 720 90 23 = 23 x2 =  x1 = = = = . 23 8 8 8 23  8 23 90 40 4500 + 1600 6100  90 40  Z max = Z  ;  = 50  + 40  = = . 23 23 23 23  23 23   90 40  6100 Ответ: Z max = Z  ;  = . 23  23 23  40 − 5  Пример 2 Решить графически задачу линейного программирования: Z ( x1, x2 ) = 120 x1 + 160 x2 → min,  x1 + 3x2  12, 5 x + 4 x  31,  1 2  2 x1 + 3 x2  18,   x1, x2  0. 31 Решение: На рис. 7 демонстрируется процесс графического решения данной задачи. Рисунок 7 – Графическое решение задачи из Примера 2 Сделаем пояснения к рис. 7. Каждое неравенство исходной системы ограничений определяет полуплоскость. Запишем уравнения граничных прямых для этих полуплоскостей. (1) х1 + 3х2 = 12, (2) 5х1 + 4х2 = 31, (3) 2х1 + 3х2 = 18. х1 12 х1 6.2 х1 9 x2 4 x2 7.8 x2 6 Построим прямые, ограничивающие полуплоскости, определяемые неравенствами системы. Каждая прямая разбивает плоскость на две полуплоскости. Для выбора полуплоскостей, определяемых каждым неравенством, подставим координаты «пробной» точки (0;0) в каждое неравенство. Получаем: 0 + 3  0  12 не верно. Следовательно, отмечаем полуплоскость, не содержащую «пробную» точку (0;0). 5  0 + 4  0  31 не верно. Следовательно, отмечаем полуплоскость, не содержащую «пробную» точку (0;0). 2  0 + 3  0  18 не верно. Следовательно, отмечаем полуплоскость, не содержащую «пробную» точку (0;0). Выбранные полуплоскости отметим стрелочками. Найдем пересечение отмеченных полуплоскостей с учетом условия: х1, х2  0. Заштрихуем полученный неограниченный четырехугольник ABCD. Построим линию уровня Z = 0: 120х1 + 160х2 = 0. х1 x2 4 -3 32 Вектор grad Z = (120;160) определяет направление наибольшего возрастания grad Z функции Z. Построим из начала координат вектор N = = (6;8) . Этот век20 тор также показывает направление наибольшего возрастания функции. Перемещая линию уровня параллельным переносом в направлении вектора N , находим первую точку пересечения линии уровня и заштрихованного четырехугольника – точку B. Эта точка является точкой минимума функции. Точка B получается в результате пересечения прямых (2) и (3). Для нахождения ее координат решим систему: 5 x1 + 4 x2 = 31, 3 − 2 x1 + 3x2 = 18. 4 = 21. 31 − 5  x1 31 − 5  3 16 x1 = 3  x2 = = = = 4. 4 4 4 Z min = Z ( 3;4 ) = 120  3 + 160  4 = 1000 . 7x1 Ответ: Z min = Z ( 3;4 ) = 1000 . 1.9. Многомерные графически ЗЛП, заданные в канонической форме, решаемые Графическим методом можно решить ЗЛП, заданную в канонической форме, если после приведения системы ограничений к виду (1.6) n − r  2 . В системе (1.7) переходят к неравенствам, воспользовавшись неотрицательностью базисных переменных. Далее решают графически задачу в эквивалентной симметричной форме и находят значения свободных переменных. Подставив найденные значения в (1.7), находят значения базисных переменных. Пример Решить графически задачу линейного программирования: Z = 4 x1 + 2 x2 + x4 → max, 2 x1 + x2 + x3 = 14,  x + x = 8, 4  2  x1 + x2 − x5 = 4, 2 x − 3 x + x = 6, 2 6  1  xi  0, i = 1,2, ,6. Решение: Составим расширенную матрицу системы:  2 1 1 0 0 0 14  2 1 1 0 1 0 1 0 0 8  0 1 0  1 1 0 0 −1 0 4  (−1)  −1 −1 0  2 −3 0 0 0 1 6   2 −3 0    33 1 1 1 14  8 −4  6  В матрице уже имеется выделенный базис, базисные переменные – x3, x4 , x5 , x6 . Выразим базисные переменные и целевую функцию через свободные переменные.  x3 = 14 − 2 x1 − x2  0,  x = 8 − x  0, 2  4  x5 = −4 + x1 + x2  0,  x = 6 − 2 x + 3 x  0, 1 2  6  xi  0, i = 1,2, Z = 4 x1 + 2 x2 + 8 − x2 = 4 x1 + x2 + 8 → max . Получили эквивалентную задачу в симметричной форме. Z = 4 x1 + x2 + 8 → max, 2 x1 + x2  14,  x  8,  2  x1 + x2  4, 2 x − 3 x  6, 2  1  xi  0, i = 1,2. Решим новую задачу графически. На рис. 8 демонстрируется процесс графического решения данной задачи. Рисунок 8 – Графическое решение задачи из Примера 34 Сделаем пояснения к рис. 8. Каждое неравенство исходной системы ограничений определяет полуплоскость. Запишем уравнения граничных прямых для этих полуплоскостей. (1) 2х1 + х2 = 14, х1 7 x2 14 (2) х2 = 8, х1 1 x2 8 8 (3) х1 + х2 = 4, х1 4 x2 4 (4) 2х1 -3х2 = 6. х1 3 x2 -2 Построим прямые, ограничивающие полуплоскости, определяемые неравенствами системы. Каждая прямая разбивает плоскость на две полуплоскости. Для выбора полуплоскостей, определяемых каждым неравенством, подставим координаты «пробной» точки (0;0) в каждое неравенство. Получаем: 0 + 0 ≤ 14 верно. Следовательно, отмечаем полуплоскость, содержащую «пробную» точку (0;0). 0 ≤ 8 верно. Следовательно, отмечаем полуплоскость, содержащую «пробную» точку (0;0). 0 + 0 4 не верно. Следовательно, отмечаем полуплоскость, не содержащую «пробную» точку (0;0). 2  0 - 3  0 ≤ 6 верно. Следовательно, отмечаем полуплоскость, содержащую «пробную» точку (0;0). Выбранные полуплоскости отметим стрелочками. Найдем пересечение отмеченных полуплоскостей с учетом условия: х1, х2  0. Заштрихуем полученный четырехугольник ABCDE. Построим линию уровня Z = 8: 4х1 + х2 + 8 = 8  4х1 + х2 = 0. х1 x2 1 -4 Вектор grad Z = (4;1) определяет направление наибольшего возрастания функции Z. Построим из начала координат вектор N = 2  grad Z = (8;2) . Этот вектор также показывает направление наибольшего возрастания функции. Перемещая линию уровня параллельным переносом в направлении вектора N , находим последнюю точку пересечения линии уровня и заштрихованного пятиугольника – точку E. Эта точка является точкой максимума функции. Точка E получается в результате пересечения прямых (1) и (4). Для нахождения ее координат решим систему: 2 x1 + x2 = 14, − 2 x1 − 3x2 = 6. 4 x2 = 8  x2 = 2. 14 − x2 14 − 2 x1 = = = 6. 2 2 Z max = Z ( 6;2 ) = 4  6 + 2 + 8 = 34 . Для нахождения оптимального решения исходной задачи найдем значения базисных переменных. 35 x3 = 14 − 2  6 − 2 = 0, x4 = 8 − 2 = 6, x5 = −4 + 6 + 2 = 4, x6 = 6 − 2  6 + 3  2 = 0. Оптимальное решение исходной задачи: Z max = Z ( 6;2;0;6;4;0 ) = 34 . Ответ: Z max = Z ( 6;2;0;6;4;0 ) = 34 . 1.10. Симплекс-метод В предыдущих пунктах было рассмотрено графическое решение ЗЛП. Но, как мы видели, такой способ применим к достаточно узкому классу задач линейного программирования. Более универсальным является симплекс-метод (метод последовательного улучшения плана), который позволяет решить любую ЗЛП в каноническом виде. Его название связано с тем историческим обстоятельством, что ограничения одной из первых задач, решенных этим методом, задавали симплекс в пространстве соответствующей размерности (симплекс – простейший многогранник данного числа измерений, например, треугольник в R2, тетраэдр – в R3 и т.д.) Пусть задача линейного программирования представлена в канонической форме: (1.15) Z = c1x1 + c2 x2 + + cn xn → max, a 11 x1 + a12 x2 + + a1n xn = b1,  ,  (1.16)  a x + a x + + a x = b , m 1 1 m 2 2 mn n m    x1, x2 , , xn  0. Теорема 8 Каждому опорному решению системы (1.16) соответствует вершина многогранника планов эквивалентной симметричной задачи и наоборот. Из теоремы следует, что максимального значения функция достигает для одного из опорных решений системы (1.16). Симплекс-метод позволяет найти этот опорный план в результате упорядоченного перебора опорных планов. При этом упорядоченность понимается в том смысле, что переход от одного опорного решения к другому значения функции не убывают. Пусть система (1.16) приведена к единичному базису с неотрицательными правыми частями (bi  0, i = 1,2, , m) :  x1 + a1, r +1xr +1 + + a1 n xn = b1 ,  x2 + a2,  r +1xr +1 + + a2 n xn = b2 ,  (1.17) ,   xn = br ,  xr + ar ,r +1xr +1 + + arn  xi  0, i = 1,2, , n. Выразим целевую функцию через свободные переменные. (1.18) Z = c0 + c1 xr +1 + + cn xn → max. 36 Системе (1.17) соответствует опорное решение (b1 , , br ,0, ,0) , при этом значение функции Z = c0 . Средством хранения информации о решаемой задаче линейного программирования являются симплекс-таблицы, начальная таблица составляется по (1.17), (1.18) и имеет следующий вид: б.п. 1 x1 b1 x2 b2 x1 1 x2 1 xr xr +1 a1, r +1  r +1 a2, xn a1, n  n a2, (1.19) xr br 0 0 1 ar ,r +1 ar ,n Z c0 0 0 0 −cr +1 −cn В крайнем левом столбце записаны базисные переменные и символ, обозначающий целевую функцию. Последнюю строку называют строкой целевой функции или Z-строкой. Столбец с заголовком 1 содержит правые части уравнений (1.17), свободный член целевой функции и называется столбцом свободных членов. Заголовками остальных столбцов являются переменные. Основную часть таблицы занимают коэффициенты при переменных в уравнениях и целевой функции. Таблице (1.19) соответствует опорное решение (b1 , , br ,0, ,0) , при этом значение функции Z = c0 . Теорема 9 (признак оптимальности опорного решения) Если в таблице (1.19) коэффициенты −cj  0 ( j = r + 1, , n) , то опорное решение X  = (b1 , , br ,0, ,0) является оптимальным и при этом Zmax = Z ( X ) = c0 . Теорема 10 (признак неограниченности функции) Если в таблице (1.19) существует хотя бы один коэффициент −cj  0 такой, что среди элементов aij (i = 1,2, , r ) нет положительных, то целевая функция (1.18) при ограниче- ниях (1.17), не ограничена сверху. Теорема 11 (о возможности улучшения плана) Если в таблице (1.19) существует хотя бы один коэффициент −cj  0 ( j = r + 1, , n) , а в каждом столбце с таким элементом среди aij (i = 1,2, , r ) есть хотя бы один положительный, то поменяв базис, можно перейти к другому опорному плану X  такому, что Z ( X )  Z ( X ) . Теорема 12 (признак альтернативного оптимума) Если в Z-строке симплексной таблицы (1.19), содержащей оптимальный план, среди чисел −cj  0 ( j = r + 1, , n) есть равные 0, то множество оптимальных решений бесконечно. Сформулированные теоремы позволяют проверить, является ли найденное опорное решение оптимальным, и выявить целесообразность перехода к новому опорному решению, но не дают самого алгоритма перехода. Прежде, чем описать 37 этот алгоритм, изложим идею симплекс-метода. Если в Z-строке есть отрицательные элементы, то введение в базис соответствующих свободных переменных позволит не уменьшить значение целевой функции. Так как количество переменных в базисе должно остаться неизменным, то одна из переменных должна быть выведена из базиса. Таким образом, на каждом шаге симплекс-метода осуществляется преобразование базиса: одна из свободных переменных вводится в базис, а одна из базисных – выводится. Алгоритм симплексного преобразования 1. Для перехода к новому опорному решению в Z-строке среди отрицательных коэффициентов −cj ( j = r + 1, , n) выбирают наибольший по абсолютной величине, пусть это будет −cj0 . Тем самым выбрана свободная переменная x j0 , которая будет вводиться в базис. Столбец с заголовком x j0 называется разрешающим. 2. Для выбора базисной переменной, выводимой из базиса, находятся симплексные отношения – отношения элементов столбца свободных членов к положительным элементам разрешающего столбца. Симплексные отношеb ния i (aij 0  0) записываются справа от симплекс-таблицы. Переменная, aij выводимая из базиса, определяется минимальным симплексным соотно b  шением min  i  , соответствующая ей строка называется разрешаю  i =1, , r  aij 0   a  0 ij0 щей. Пусть переменная xi0 будет выводиться из базиса. Элемент ai0 j0 , находящийся на пересечении разрешающей строки и разрешающего столбца, называется разрешающим элементом, выделим его. 3. Формируется новая симплексная таблица по следующим правилам: − в базис вместо переменной xi0 вводим переменную x j0 ; − элементы разрешающей строки делятся на разрешающий элемент ai0 j0 ; − на месте остальных элементов разрешающего столбца будут стоять нули; − столбцы таблицы с заголовками базисных переменных (кроме xi0 ), не изменяются; − все остальные элементы пересчитываются по правилу прямоугольника: ai0 j  aij 0   aij = aij − (1.20) ai j 0 0 (строим прямоугольник с диагональю в вершинах ai0 j0 и пересчитываемом элементе aij : ai0 j0 aij ai0 j ). aij 38 Заметим, что в соответствии с правилом прямоугольника, не заполненные ранее элементы столбца с заголовком xi0 будут равны элементам столбца с за- головком x j0 , деленным на разрешающий элемент ai0 j0 , с противоположным знаком. Правила 3 распространяются на коэффициенты столбца свободных членов и Z-строки −cj ( j = 0, r + 1, r + 2, , n) . Симплексные преобразования проводят до тех пор, пока не будет получено оптимальное решение или установлена неразрешимость задачи (теоремы 9, 10). Замечания: 1. Если таблица (1.19) соответствует оптимальному решению, а среди чисел −cj ( j = r + 1, , n) имеется коэффициент −cj0 равный нулю, то задача имеет бесконечно много решений (геометрически соответствует рис. 5 а). Вторую вершину, соответствующую оптимальному решению, можно найти, выбрав в качестве разрешающего столбец, содержащий −cj0 . 2. Задачу минимизации Z можно формально заменить задачей максимизации функции (-Z). Но можно этого не делать. Признаком оптимальности опорного плана задачи минимизации является отсутствие положительных элементов в Zстроке таблицы (1.19). Для выбора разрешающего столбца выбирают максимальный среди положительных коэффициентов −cj ( j = r + 1, , n) , а вся остальная вычислительная процедура остается прежней. Геометрически симплекс-метод можно проинтерпретировать следующим образом. Начальному опорному плану соответствует угловая точка многогранника решений (1.17). Шагу симплексного преобразования соответствует переход в соседнюю вершину таким образом, чтобы значение целевой функции не уменьшилось. Пример 1 Решить задачу симплекс-методом и дать геометрическую интерпретацию процесса поиска оптимального решения. Z = x1 + 2 x2 → max, 2 x1 + 3x2  6,  x1  1,  x − x  −1,  x1  0,2i = 1,2.  i Решение: Перейдем к равенствам в системе ограничений: 2 x1 + 3x2 + x3 = 6,  x1 + x4 = 1,  x − x − x = −1,  x1  0,2i = 1,5 ,5.  i Составим расширенную матрицу системы ограничений: 39 2 3 1 0 0 6   2 3 1 0 0 6 A = 1 0 0 1 0 1   1 0 0 1 0 1.  1 −1 0 0 −1 −1  −1 1 0 0 1 1      В матрице уже имеется базис из столбцов, соответствующих переменным x3, x4 , x5 , переменные x1, x2 – свободные. Выражение для функции содержит только свободные переменные. Из матрицы находим начальное опорное решение X 1 = (0;0;6;1;1), Z ( X 1) = 0 + 2  0 = 0 . Составляем первую симплексную таблицу. Симплексная таблица 1 б.п. 1 x1 x2 x3 x4 x5 CO x3 6 2 3 1 0 0 6 / 3 = 2 x4 1 1 0 0 1 0 − x5 1 −1 1 0 0 1 1 / 1 = 1  Z 0 −1 −2 0 0 0  Этой таблице соответствует начальный опорный план X 1 = (0;0;6;1;1), Z ( X 1) = 0 . Он не оптимален, т.к. в Z-строке имеются отрицательные элементы. В качестве разрешающего столбца выбираем столбец, соответствующий x2 , т.к. max(| −1|,| −2 |) = 2 . Отметим его вертикальной стрелкой. Для определения разрешающей строки в дополнительном столбце (заголовок CO) найдем симплексные отношения для положительных элементов разрешающего столбца, и выберем из них минимальное min ( 6 / 3;1 / 1) = min(2;1) = 1 . Откуда следует, что разрешающая строка – третья, отметим ее горизонтальной стрелкой. Выделим разрешающий элемент (он находится на пересечении разрешающей строки и разрешающего столбца). Переходим к новой таблице, выполнив шаг алгоритма симплекс-метода. Симплексная таблица 2 б.п. 1 x1 x2 x3 x4 x5 CO x3 3 5 0 1 0 −3 3 / 5 = 0.6  x4 1 1 0 0 1 0 1/1 =1 x2 1 −1 1 0 0 1 − Z 2 −3 0 0 0 2  Пояснение к вычислению элементов таблицы 2 − Вместо базисной переменной x5 пишем x2 . − Элементы разрешающей строки делим на 1. − Остальные элементы столбца с заголовком x2 заполняем нулями (т.к. x2 стала базисной переменной). − Столбцы, соответствующие базисным переменным x3 , x4 , не изменяются. 40 − На месте не заполненных ранее элементов столбца с заголовком x5 пишем элементы столбца с заголовком x2 , деленные на разрешающий элемент, и взятые с противоположным знаком. − Остальные элементы пересчитываем по правилу прямоугольников: 1 3 −1  3 6→6− = 3, 2→2− = 5, 1 1 1 0 −1  0 1→1− = 1, 1→1− = 1, 1 1 1  (−2) −1  (−2) 0→0− = 2, −1 → −1 − = −3. 1 1 Симплексной таблице 2 соответствует опорное решение X 2 = (0;1;3;1;0), Z ( X 1) = 2 . Оно не оптимально, т.к. в Z-строке имеется отрицательный элемент. В качестве разрешающего столбца выбираем столбец, соответствующий x1 . Отметим его вертикальной стрелкой. Найдем симплексные отношения для положительных элементов разрешающего столбца, и выберем из них минимальное отношение min ( 3 / 5;1 / 1) = min(0.6;1) = 0.6 . Откуда следует, что разрешающая строка – первая. Выделим разрешающий элемент. Переходим к новой таблице, выполнив еще один шаг алгоритма симплекс-метода. Симплексная таблица 3 б.п. 1 x1 x2 x3 x4 x5 x1 3 / 5 1 0 1 / 5 0 −3 / 5 x4 2 / 5 0 0 −1 / 5 1 3 / 5 x2 8 / 5 0 1 1 / 5 0 2 / 5 Z 19 / 5 0 0 3 / 5 0 1 / 5 Пояснение к вычислению элементов таблицы 3 − Вместо базисной переменной x3 пишем x1 . − Элементы разрешающей строки делим на 5. − Остальные элементы столбца с заголовком x1 заполняем нулями (т.к. x1 стала базисной переменной). − Столбцы, соответствующие базисным переменным x2 , x4 , не изменяются. − На месте не заполненных ранее элементов столбца с заголовком x3 пишем элементы столбца с заголовком x1 , деленные на разрешающий элемент 5, и взятые с противоположным знаком. − 1→-1/5; -1→-(-1)/5=1/5; -3→-(-3)/5=3/5. − Остальные элементы пересчитываем по правилу прямоугольников: 3 1 −3  1 1→1− = 2 / 5, 0→0− = 3 / 5, 5 5 3  (−1) −3  (−1) 1→1− = 8 / 5, 1 →1− = 2 / 5, 5 5 3  (−3) −3  (−3) 2→2− = 19 / 5, 2 → 2 − = 1 / 5. 5 5 41 Симплексной таблице 3 соответствует опорное решение X 3 = (3 / 5;8 / 5;0;2 / 5;0) , Z ( X 1) = 19 / 5 . Оно оптимально, т.к. в Z-строке нет отрицательных элементов. Окончательно, Zmax = Z (3 / 5,8 / 5) = 19 / 5 . Решим исходную задачу графически. На рис. 9 демонстрируется процесс графического решения данной задачи. Рисунок 9 – Графическое решение задачи из Примера 1 Сделаем пояснения к рис. 9. Каждое неравенство исходной системы ограничений определяет полуплоскость. Запишем уравнения граничных прямых для этих полуплоскостей. (1) 2х1 + 3х2 = 6, (2) х1 = 1, (3) х1 - х2 = -1. х1 3 х1 1 1 х1 -1 x2 2 x2 2 x2 1 Построим прямые, ограничивающие полуплоскости, определяемые неравенствами системы. Каждая прямая разбивает плоскость на две полуплоскости. Для выбора полуплоскостей, определяемых каждым неравенством, подставим координаты «пробной» точки (0;0) в каждое неравенство. Получаем: 20 +3 0 ≤ 6 верно. Следовательно, отмечаем полуплоскость, содержащую «пробную» точку (0;0). 0 ≤ 1 верно. Следовательно, отмечаем полуплоскость, содержащую «пробную» точку (0;0). 0 – 0  -1 верно. Следовательно, отмечаем полуплоскость, не содержащую «пробную» точку (0;0). Выбранные полуплоскости отметим стрелочками. Найдем пересечение отмеченных полуплоскостей с учетом условия: х1, х2  0. Заштрихуем полученный четырехугольник ОABC. 42 Построим линию уровня Z = 0: х1 + 2х2 = 0. х1 x2 2 -1 Вектор grad Z = (1;2) определяет направление наибольшего возрастания функции Z. Построим из начала координат вектор N = grad Z = (1;2) . Перемещая линию уровня параллельным переносом в направлении вектора N , находим последнюю точку пересечения линии уровня и заштрихованного пятиугольника – точку B. Эта точка является точкой максимума функции. Точка B получается в результате пересечения прямых (1) и (3). Для нахождения ее координат решим систему: 2 x1 + 3 x2 = 6, +  x1 − x2 = −1. 3 5x1 = 3  x1 = 3 / 5. x2 = x1 + 1 = 3 / 5 + 1 = 8 / 5. Z max = Z ( 3 / 5;8 / 5 ) = 3 / 5 + 2  8 / 5 = 19 / 5. В табл. 2 приведена геометрическая интерпретация процесса поиска оптимального решения. Таблица 2 – Геометрическая интерпретация поиска оптимального решения в Примере 1 Номер таблицы Опорное решение из таблицы Значение функции Точка на графике 1 X 1 = (0;0;6;1;1) O 2 X 2 = (0;1;3;1;0) 2 A 3 X 3 = (3 / 5;8 / 5;0;2 / 5;0) 19/5 B Из приведенной таблицы видно, что опорным решениям симплексных таблиц соответствуют вершины многогранника, и при переходе от одной симплексной таблице к другой осуществляется переход по ребру в соседнюю вершину таким образом, что значение функции увеличивается.  Пример 2 Решить задачу симплекс-методом. Z = 25x1 − 16 x2 − 10 x3 + x4 + x5 → max, −2 x1 + x2 + x3 = 4, 3 x1 − 8 x2 + x4 = 24,  x + x + x = 9,  x1  0,2i = 1,5 ,5.  i 43 Решение: Составим расширенную матрицу системы ограничений:  −2 1 1 0 0 4  A =  3 −8 0 1 0 24  . 1 1 0 0 1 9   В матрице уже имеется базис из столбцов, соответствующих переменным x3, x4 , x5 , переменные x1, x2 – свободные. В правой части нет отрицательных коэффициентов, следовательно, матрице соответствует опорное решение. Выражение для функции содержит не только свободные переменные, но и базисные. Выразим базисные переменные через свободные и подставим их в целевую функцию.  x3 = 4 + 2 x1 − x2 ,  x4 = 24 − 3 x1 + 8 x2 , x = 9 − x − x , 2  x5  0, i =11, ,5.  i Z = 25 x1 − 16 x2 − 10(4 + 2 x1 − x2 ) + 24 − 3x1 + 8 x2 + 9 − x1 − x2 = 25 x1 − 16 x2 − −40 − 20 x1 + 10 x2 + 24 − 3 x1 + 8 x2 + 9 − x1 − x2 = −7 + x1 + x2 . Составляем первую симплексную таблицу. Симплексная таблица 1 б.п. 1 x1 x2 x3 x4 x5 CO x3 4 −2 1 1 0 0 − x4 24 3 −8 0 1 0 8  x5 9 1 1 0 0 1 9 Z −7 −1 −1 0 0 0  Этой симплексной таблице соответствует начальный опорный план 1 X = (0;0;4;24;9), Z ( X 1) = −7 . Он не оптимален, т.к. в Z-строке имеются отрицательные элементы. В качестве разрешающего столбца выбираем столбец, соответствующий x1 . Переходим к новой симплексной таблице с разрешающим элементом во второй строке. Симплексная таблица 2 б.п. 1 x1 x2 x3 x4 x5 CO x3 20 0 −13 / 3 1 2 / 3 0 − x1 8 1 −8 / 3 0 1 / 3 0 − x5 1 0 11 / 3 0 −1 / 3 1 3 / 11 Z 1 0 −11 / 3 0 1 / 3 0  Симплексной таблице 2 соответствует опорное решение X 2 = (8;0;20;0;1), Z ( X 1) = 1 . Оно не оптимально, т.к. в Z-строке имеется отрицательный элемент. В качестве разрешающего столбца выбираем столбец, соответствующий x2 . 44 Симплексная таблица 3 б.п. 1 x1 x2 x3 x4 x5 CO x3 233 / 11 0 0 1 3 / 11 13 / 11 233 / 3  x1 96 / 11 1 0 0 1 / 11 8 / 11 96 x2 3 / 11 0 1 0 −1 / 11 3 / 11 − Z 2 1 0 0 1  Симплексной таблице 3 соответствует опорное решение X 3 = (96 / 11;3 / 11;233 / 11;0;0), Z ( X 3 ) = 2 . Оно оптимально. Но в Z-строке имеется нулевой элемент в столбце с заголовком свободной переменной x4 . Следовательно, задача имеет бесконечно много решений (альтернативный оптимум). В качестве разрешающего столбца выбираем столбец, соответствующий x4 . Тем самым будет найдена вторая вершина многогранника решений, соответствующая оптимальному решению. Симплексная таблица 4 б.п. 1 x1 x2 x3 x4 x5 x4 233 / 3 0 0 11 / 3 1 13 / 3 x1 5/3 1 0 −1 / 3 0 1 / 3 x2 22 / 3 0 1 1 / 3 0 2 / 3 Z 2 1 0 1 Симплексной таблице 4 соответствует опорное решение X 4 = (5 / 3;22 / 3;0;233 / 3;0), Z ( X 4 ) = 2 . Оно также оптимально. Оптимальными будут все точки отрезка с концами X3 и X4. На рис. 10 демонстрируется процесс графического решения данной задачи. Рисунок 10 – Графическое решение задачи из Примера 2 45 Координаты точек отрезка с концами X3 и X4 можно представить в виде: (1 −  ) X 3 +  X 4 = (1 −  )(96 / 11;3 / 11;233 / 11;0;0) +  (5 / 3;22 / 3;0;233 / 3;0) = = (96 / 11 − 96 / 11 + 5 / 3 ;3 / 11 − 3 / 11 + 22 / 3;233 / 11 − 233 / 11 ;233 / 3 ;0) = = (96 / 11 − 233 / 33 ;3 / 11 + 233 / 33 ;233 / 11 − 233 / 11 ;233 / 3 ;0), 0    1. Z max = Z (96 / 11 − 233 / 33 ;3 / 11 + 233 / 33;233 / 11 − 233 / 11;233 / 3 ;0) = 2,  0    1. Пример 3 Решить задачу симплекс-методом, используя в качестве начальной угловой точки опорное решение с базисными переменными x2 , x3, x4 , полученное методом жордановых исключений. Z = − x1 − x2 − x3 − x4 + 4 x5 → min, 3x1 + x2 + x3 − 6 x5 = 7, 2 x1 + x2 + 3x3 + 3x4 − 7 x5 = 10, −3x + x + x − 6 x = 1,  x 10, i =2 1, 3,5. 4  i Решение: Заведем новую функцию Z = −Z = x1 + x2 + x3 + x4 − 4 x5 → max . Выпишем расширенную матрицу системы:  3 1 1 0 −6 7  A =  2 1 3 3 −7 10  .  −3 1 1 −6 0 1    В матрице не выделен базис, поэтому необходимо выполнить жордановы преобразования для включения в базис переменных x2 , x3, x4 . Поскольку выражение для целевой функции содержит все переменные, а после нахождения опорного решения необходимо будет выразить ее через свободные переменные, то при преобразованиях матрицы методом жордановых исключений заведем строку для функции Z (коэффициенты при неизвестных будем записывать с противоположными знаками), и будем над ней также выполнять жордановы исключения в таблице, подобной симплексной. При преобразованиях будем сохранять неотрицательность правой части (см. алгоритм нахождения опорного решения). Строку для функции помещаем в таблицу, чтобы выразить функцию через свободные переменные после выделения базиса. Пока не выделен базис, на коэффициенты в строке функции не обращаем внимания. б.п. 1 x1 x2 x3 x4 x5 CO 7 3 1 1 0 −6 7 / 1 10 2 1 3 3 −7 10 / 1 1 −3 1 1 −6 0 1 / 1  Z 0 −1 −1 −1 −1 4  Для включения переменной x2 в базис, необходимо выбрать разрешающий элемент во втором столбце. Разрешающий элемент находится в третьей строке. Выполним шаг жордановых преобразований. 46 б.п. 1 x1 x2 6 6 0 9 5 0 x2 1 −3 1 Z 1 −4 0 x3 2 1 x4 x5 CO 6 −6 6 / 6  9 −7 9 / 9 −6 0 − −7 4  Для включения в базис переменной x3 необходимо выбрать разрешающий элемент в третьем столбце. Находим min(9 / 2;1/ 1) = 1 , следовательно, разрешающий элемент находится в третьей строке, но у нас уже есть столбец единичной матрицы с единицей в третьей строке. Попробуем включить в базис переменную x4 . Для включения переменной x4 в базис, необходимо выбрать разрешающий элемент в четвертом столбце. Выберем разрешающий элемент в первой строке. Выполним шаг жордановых преобразований. б.п. 1 x1 x2 x3 x4 x5 CO x4 1 1 0 0 1 −1 − 0 −4 0 2 0 2 0 / 2  x2 7 3 1 1 0 −6 7 / 1 Z 8 3 0 0 0 −3  Снова попробуем включить в базис переменную x3 , для этого необходимо выбрать разрешающий элемент в третьем столбце. Разрешающий элемент находится во второй строке. Выполним шаг жордановых преобразований. б.п. 1 x1 x2 x3 x4 x5 x4 1 1 0 0 1 −1 x3 0 −2 0 1 0 1 x2 7 5 1 0 0 −7 Z 8 3 0 0 0 −3 Базис выделен. В правой части нет отрицательных коэффициентов, следовательно, матрице соответствует опорное решение, оно является вырожденным (базисная переменная x3 равна 0). Составляем симплексную таблицу. Симплексная таблица 1 б.п. 1 x1 x2 x3 x4 x4 1 1 0 0 1 x3 0 −2 0 1 0 x2 7 5 1 0 0 Z 8 3 0 0 0 x5 CO −1 − 1 0  −7 − −3  Симплексной таблице 1 соответствует начальный опорный план 1 X = (0;7;0;1;0), Z ( X 1) = 8 . План вырожденный, он не оптимален, т.к. в Z-строке имеется отрицательный элемент. В качестве разрешающего столбца выбираем 47 столбец, соответствующий x5 . Переходим к новой симплексной таблице с разрешающим элементом во второй строке. Симплексная таблица 2 б.п. 1 x1 x2 x3 x4 x4 1 −1 0 1 1 x5 0 −2 0 1 0 x2 7 −9 1 7 0 Z 8 −3 0 3 0  x5 СО − 1 − − Симплексной таблице 2 соответствует опорный план X 2 = (0;7;0;1;0) , Z ( X 2 ) = 8 . Он не оптимален, т.к. в Z-строке имеется отрицательный элемент. В качестве разрешающего столбца выбираем столбец, соответствующий x1 . Но в этом столбце нет положительных элементов, откуда заключаем, что функция Z не ограничена сверху, следовательно, функция Z не ограничена снизу. На рис. 11 демонстрируется процесс графического решения данной задачи. Рисунок 11 – Графическое решение задачи из Примера 3 В табл. 4 приведена геометрическая интерпретация процесса поиска оптимального решения. Таблица 4 – Геометрическая интерпретация поиска оптимального решения в Примере 3 Номер таблицы Опорное решение из таблицы Значение функции Точка на графике 1 X 1 = (0;7;0;1;0) 8 O 2 X 2 = (0;7;0;1;0) 8 O 48  1.11. Вырожденные решения и правило устранения зацикливания При нахождении решения задачи линейного программирования мы предполагали, что задача имеет опорные планы и каждый такой план является невырожденным. Если задача имеет вырожденный опорный план, то на одной из итераций симплекс-метода одна или несколько базисных переменных опорного плана могут оказаться равными нулю. Появление вырожденного решения объясняется присутствием в задачи избыточного ограничения. В этом случае, при переходе от вырожденного опорного плана к другому опорному плану значение функции изменяться не будет, это значение функция может сохранять в течении нескольких итераций. Более того, может произойти возврат к ранее найденному базису. Такой возврат называется зацикливанием. Если количество базисных переменных, равных 0, в опорном решении небольшое количество (1-3), то зацикливаний не возникает. Если же таких переменных много, то можно избежать возникновение зацикливаний, если применять правило Креко. Правило заключается в следующем: если в выбранном разрешающем столбце есть несколько одинаковых минимальных симплексных отношений, то элементы этих строк делятся на предполагаемые разрешающие элементы, и за разрешающую строку принимается та строка, в которой раньше встретится наименьшее частное. Пример Решить задачу линейного программирования. Z = 2 x1 + 4 x2 → max, −2 x1 + x2  6, − x1 + 3 / 2 x2  9, − x1 + 5 x2  30,  x1 + x2  12,  xi  0, i = 1,2. Решение: Перейдем к канонической форме записи задачи. Z = 2 x1 + 4 x2 → max, −2 x1 + x2 + x3 = 6, −  x1 + 3 / 2 x2 + x4 = 9, − x1 + 5 x2 + x5 = 30,  x1 + x2 + x6 = 12,  xi  0, i = 1, ,6.  −2 1 1 0 0 0 6  Расширенная матрица системы: A =  −1 3 / 2 0 1 0 0 9  . −1 5 0 0 1 0 30 1 1 0 0 0 1 12   В матрице уже имеется базис из столбцов, соответствующих переменным x3, x4 , x5 , x6 , переменные x1, x2 – свободные. В правой части нет отрицательных коэффициентов, следовательно, матрице соответствует опорное решение. Составляем симплексную таблицу: 49 Симплексная таблица 1 б.п. 1 x1 x2 x3 x4 x5 x6 CO x3 6 −2 1 1 0 0 0 6  x4 9 −1 3 / 2 0 1 0 0 6 x5 30 −1 5 0 0 1 0 6 x6 12 1 1 0 0 0 1 12 Z 0 −2 −4 0 0 0 0  Симплексной таблице 1 соответствует начальный опорный план 1 X = (0;0;3;6;9;12), Z ( X 1) = 0 . Он не оптимален, т.к. в Z-строке имеются отрицательные элементы. В качестве разрешающего столбца выбираем столбец, соответствующий x2 . Получили 3 одинаковых минимальных симплексных отношения. Применяем правило Креко. Находим min(−2; −2 / 3; −1/ 5) = −2 . Переходим к новой симплексной таблице с разрешающим элементом в первой строке. Симплексная таблица 2 б.п. 1 x1 x2 x3 x4 x5 x6 CO x2 6 −2 1 1 0 0 0 − x4 0 2 0 −3 / 2 1 0 0 0  x5 0 9 −5 0 1 0 x6 6 3 −1 0 0 1 2 Z 24 −10 0 4 0 0 0  Симплексной таблице 2 соответствует вырожденный опорный план 2 X = (0;6;0;0;0;6), Z ( X 2 ) = 24 . Он не оптимален, т.к. в Z-строке имеется отрицательный элемент. В качестве разрешающего столбца выбираем столбец, соответствующий x1 . Получили 2 одинаковых минимальных симплексных отношения. Применяем правило Креко. Находим min(−3 / 4; −5 / 9) = −3 / 4 . Переходим к новой симплексной таблице с разрешающим элементом во второй строке. Симплексная таблица 3 б.п. 1 x1 x2 x3 x4 x5 x6 CO x2 6 0 1 −1 / 2 1 0 0 − x1 0 1 0 −3 / 4 1 / 2 0 0 − x5 0 0 0 7 / 4 −9 / 2 1 0 0  x6 6 0 0 5 / 4 −3 / 2 0 1 24 / 5 Z 24 0 0 −7 / 2 5 0 0  Симплексной таблице 3 соответствует вырожденный опорный план 3 X = (0;6;0;0;0;6), Z ( X 3 ) = 24 . Он не оптимален, т.к. в Z-строке имеется отрицательный элемент. В качестве разрешающего столбца выбираем столбец, соответствующий x3 . Разрешающий элемент находится в третьей строке. Переходим к новой таблице с разрешающим элементом в третьей строке. 50 Симплексная таблица 4 б.п. 1 x1 x2 x3 x4 x5 x6 CO x2 6 0 1 0 −2 / 7 2 / 7 0 − x1 0 1 0 0 −10 / 7 3 / 7 0 − x3 0 0 0 1 −18 / 7 4 / 7 0 − x6 6 0 0 0 12 / 7 −5 / 7 1 7 / 2  Z 24 0 0 0 −4 2  Симплексной таблице 4 соответствует вырожденный опорный план 4 X = (0;6;0;0;0;6), Z ( X 4 ) = 24 . Он не оптимален, т.к. в Z-строке имеется отрицательный элемент. В качестве разрешающего столбца выбираем столбец, соответствующий x4 . Разрешающий элемент находится в четвертой строке. Переходим к новой таблице с разрешающим элементом в четвертой строке. Симплексная таблица 5 б.п. 1 x1 x2 x3 x4 x5 x6 x2 7 0 1 0 0 1/ 6 1/ 6 x1 5 1 0 0 0 −1 / 6 5 / 6 x3 9 0 0 1 0 −1 / 2 3 / 2 x4 7 / 2 0 0 0 1 −5 / 12 7 / 12 Z 38 0 0 0 0 1/ 5 7/3 Симплексной таблице 5 соответствует оптимальное решение X 5 = (5;7;9;7 / 2;0;0), Z ( X 5 ) = 38 . Zmax = Z (5;7) = 38 . Рассмотрим геометрическую интерпретацию процесса решения. Из рис. 12 видно, что ограничения 1 и 2 избыточны. Именно это привело к тому, что трем шагам симплекс-метода (симплексные таблицы 2-4) соответствовала одна и та же точка (0;6). Рисунок 12 – Графическая интерпретация решения из Примера  51 1.12. Метод искусственного базиса (М-метод) В примере предыдущего пункта начальное опорное решение было найдено из матрицы исходной системы, т.к. она уже была приведена к единичному базису с неотрицательной правой частью. Рассмотрим, как получить начальный опорный план в общем случае. Пусть задача линейного программирования представлена в канонической форме (1.15), (1.16), все правые части уравнений (1.16) неотрицательны (bi  0, i = 1,2, , m) , и матрица системы ограничений не приведена к единичному базису или приведена частично. Неотрицательности правых частей уравнений можно добиться, умножив обе части уравнений, не удовлетворяющих этому условию, на -1. Базис будем создавать искусственным образом за счет введения в каждое уравнение новой (искусственной) переменной. Введение искусственных переменных приводит к появлению новой задачи, называемой расширенной задачей или М-задачей. Алгоритм построения М-задачи 1. В левую часть каждого ограничения добавляется своя искусственная неотрицательная переменная. Тогда каждое уравнение системы может быть разрешено относительно введенной искусственной переменной. При этом будет получен начальный опорный план, в котором все искусственные переменные будут базисными, а исходные переменные задачи – свободными. Система ограничений М-задачи будет иметь вид: a 11 x1 + a12 x2 + + a1n xn + xn +1 = b1,  ...............,  (1.21)  a x + a x + + a x + x = b , mn n n+m m  m1 1 m 2 2   x1, x2 , , xn + m  0. 2. В целевой функции М-задачи должен накладываться штраф за использование искусственных переменных, поэтому она будут иметь вид: (1.22) Z = c1x1 + c2 x2 + + cn xn − М ( xn +1 + + xn + m ) → max, где М – достаточно большое число. В этом случае, если хотя бы одна искусственная переменная будет отлична от 0, то значение целевой функции будет очень маленьким, поэтому в оптимальном решении должно выполняться xn+1 + + xn+ m = 0 , откуда из условия неотрицательности искусственных переменных следует xn+1 = = xn+ m = 0 . Задача (1.21), (1.22) называется М-задачей, для нее сразу находится начальный опорный план (0, ,0 , b1, , bm ) . Далее эту задачу можно решать симплексn нулей методом. 52 Замечания: 1. Если какое-либо уравнение системы (1.16) может быть разрешено относительно «естественной» базисной переменной, то искусственная переменная в это уравнение не вводится. 2. Если в исходной задаче целевая функция минимизируется, то в М-задаче минимизируется функция, имеющая вид: Z = c1x1 + c2 x2 + + cn xn + М ( xn+1 + + xn + m ) → min, где М – большое положительное число. Получение оптимального опорного плана исходной задачи (М-метод) основано на следующих теоремах. Теорема 13 Если в оптимальном плане М-задачи искусственные переменные равны 0 (оптимальное решение имеет вид ( x1* , , xn* ,0, ,0) ), то план ( x1* , , xn* ) является оптимальным для исходной задачи. Теорема 14 Если в оптимальном плане М-задачи хотя бы одна из искусственных переменных xn+1, , xn+ m положительна, то система ограничений (1.16) исходной задачи не совместна. Теорема 15 Если М-задача не имеет решения (функция не ограничена), то исходная задача не разрешима (либо не ограничена функция, либо система ограничений не совместна). Как уже было отмечено выше, М-задача решается симплекс-методом, но есть особенности в оформлении симплекс-таблиц. Рассмотрим эти особенности: 1. Целевой функции М-задачи соответствуют 2 строки: в первой из них хранятся коэффициенты функции Z (Z-строка), а во второй – коэффициенты при переменных, определяемые слагаемыми, содержащими множитель М (М-строка). 2. Признак оптимальности сначала проверяют по М-строке, игнорируя Z-строку. Выбор разрешающего столбца также определяется по М-строке. 3. По мере исключения из базиса искусственных переменных, соответствующие им столбцы исключаются из дальнейшей работы (вычеркиваются), т.к. обратно в базис эти переменные возвращаться не будут. 4. Итерационный процесс по М-строке ведется до тех пор, пока: − либо все искусственные переменные будут исключены из базиса, при этом все элементы М-строки станут равны 0, и М-строку можно вычеркнуть, далее задача решается обычным симплекс-методом; − либо не все искусственные переменные будут исключены из базиса, при этом М-строка не содержит отрицательных элементов, тогда система ограничений исходной задачи не совместна. 53 Пример 1 Решить задачу линейного программирования методом искусственного базиса. Z = −2 x1 − 6 x2 + 5x3 − x4 − 4 x5 → max,  x1 − 4 x2 + 2 x3 − 5 x4 + 9 x5 = 3,  x2 − 3x3 + 4 x4 − 5 x5 = 6,  x − x + x − x = 1,  x2  0,3i = 1,4 ,5.5  i Решение: Составим расширенную матрицу системы ограничений:  1 −4 2 −5 9 3  A  0 1 −3 4 −5 6  .  0 1 −1 1 −1 1    В матрице первый столбец уже включен в базис, поэтому искусственные переменные будут вводиться только во второе и третье уравнение. Составим М-задачу. Z = −2 x1 − 6 x2 + 5x3 − x4 − 4 x5 − М ( x6 + x7 ) → max,  x1 − 4 x2 + 2 x3 − 5 x4 + 9 x5 = 3,  x2 − 3x3 + 4 x4 − 5 x5 + x6 = 6,  x − x + x − x + x = 1,  x2  0,3i = 1,4 ,7.5 7  i Выразим базисные переменные x1, x6 , x7 и целевую функцию через свободные x2 , x3, x4 , x5 и составим симплексную таблицу.  x1 = 3 + 4 x2 − 2 x3 + 5 x4 − 9 x5 ,  x6 = 6 − x2 + 3x3 − 4 x4 + 5 x5 , x = 1 − x + x − x + x , 3 4 5  x7  0, i =21, ,7.  i Z = −2 x1 − 6 x2 + 5 x3 − x4 − 4 x5 − М ( x6 + x7 ) = −2(3 + 4 x2 − 2 x3 + 5 x4 − 9 x5 ) − −6 x2 + 5 x3 − x4 − 4 x5 − M (6 + x2 + 3x3 − 4 x4 + 5 x5 + 1 − x2 + x3 − x4 + x5 ) = = −6 − 14 x2 + 9 x3 − 11x4 + 14 x5 + M (−7 + 2 x2 − 4 x3 + 5 x4 − 6 x5 ). Симплексная таблица 1 б.п. 1 x1 x2 x3 x4 x5 x6 x7 CO x1 3 1 −4 2 −5 9 0 0 − x6 6 0 1 −3 4 −5 1 0 3 / 2 x7 1 0 1 −1 1 −1 0 1 1  Z −6 0 14 −9 11 −14 0 0 M −7 0 −2 4 −5 6 0 0  Симплексной таблице 1 соответствует начальное опорное решение М-задачи (3;0;0;0;0;6;1) и значение функции Z = −6 − 7 M . Решение не оптимально, т.к. в М-строке имеются отрицательные коэффициенты. Выберем в качестве разреша54 ющего столбца – столбец с заголовком x4 и выполним симплексное преобразование таблицы. При этом искусственная переменная x7 исключается из базиса, поэтому столбец с заголовком x7 в новой таблице не пишем. Симплексная таблица 2 б.п. 1 x1 x2 x3 x4 x5 x6 CO x1 8 1 1 −3 0 4 0 − x6 2 0 −3 1 0 −1 1 2  x4 1 0 1 −1 1 −1 0 − Z −17 0 3 2 0 −3 0 M −2 0 3 −1 0 1 0  Симплексной таблице 2 соответствует опорное решение М-задачи (8;0;0;1;0;2;0) и значение функции Z = −17 − 2 M . Решение не оптимально, т.к. в М-строке имеется отрицательный элемент. Выберем в качестве разрешающего столбца – столбец с заголовком x3 и выполним симплексное преобразование таблицы. При этом искусственная переменная x6 исключается из базиса, поэтому столбец с заголовком x6 в новой таблице не пишем. Симплексная таблица 3 б.п. 1 x1 x2 x3 x4 x1 14 1 −8 0 0 x3 2 0 −3 1 0 x4 3 0 −2 0 1 Z −21 0 9 0 0 M 0 0 0 0 x5 CO 1 14  −1 −2 −1  В базисе больше нет искусственных переменных, поэтому коэффициенты Мстроки равны 0, и ее можно вычеркнуть. Симплексной таблице 3 соответствует начальное опорное решение исходной задачи (14;0;2;3;0) и значение функции Z = −21. Решение не оптимально, т.к. в Z-строке имеется отрицательный элемент. Выбираем разрешающий элемент в столбце с заголовком x5 и делаем еще одно симплексное преобразование. Симплексная таблица 4 б.п. 1 x1 x2 x3 x4 x5 x5 14 1 −8 0 0 1 x3 16 1 −11 1 0 0 x4 31 2 −18 0 1 0 Z −7 1 1 0 0 0 Симплексной таблице 4 соответствует оптимальное опорное решение исходной задачи (0;0;16;31;14) и значение функции Zmax = Z (0;0;16;31;14) = −7 . 55 Пример 2 Решить задачу линейного программирования методом искусственного базиса. Z = x1 + x2 → max,   x1 + x2  1,  x1 − x2  2,   x1, x2  0. Решение: Перейдем к равенствам в системе ограничений:  x1 + x2 + x3 = 1,  x1 − x2 − x4 = 2,  xi  0, i = 1, , 4. Составим расширенную матрицу системы ограничений: A= 1 1 1 0 1 . 1 −1 0 −1 2 В матрице третий столбец уже включен в базис, поэтому искусственная переменная будет вводиться только во второе уравнение. Составим М-задачу. Z = x1 + x2 − Mx5 → max,   x1 + x2 + x3 = 1,  x1 − x2 − x4 + x5 = 2,   xi  0, i = 1, ,5. Выразим базисные переменные x3, x5 и целевую функцию через свободные x1, x2 , x4 и составим симплексную таблицу.   x3 = 1 − x1 − x2 ,  x5 = 2 − x1 + x2 + x4 ,   xi  0, i = 1, ,5. Z = x1 + x2 − Мx5 = x1 + x2 − M (2 − x1 + x2 + x4 ) = = x1 + x2 + M (−2 + x1 − x2 − x4 ) → max. Симплексная таблица 1 б.п. 1 x1 x2 x3 x4 x5 CO x3 1 1 1 1 0 0 1  x5 2 1 −1 0 −1 1 2 Z 0 −1 −1 0 0 0 M −2 −1 1 0 1 0  Симплексной таблице 1 соответствует начальное опорное решение М-задачи (0;0;1;0;2) и значение функции Z = −2M . Решение не оптимально, т.к. в Мстроке имеется отрицательный коэффициент. Выберем в качестве разрешающего столбца – столбец с заголовком x1 и выполним симплексное преобразование таблицы. При этом преобразовании искусственная переменная x5 остается в базисе. ( ) 56 Симплексная таблица 2 б.п. 1 x1 x2 x3 x4 x5 x1 1 1 1 1 0 0 x5 1 0 −2 −1 −1 1 Z 1 0 0 1 0 0 M −1 0 0 1 1 0 Симплексной таблице 2 соответствует опорное решение М-задачи (1;0;0;0;1) и значение функции Z = 1 − M . Решение оптимально, т.к. в М-строке отсутствуют отрицательные коэффициенты. Т.к. искусственная переменная осталась в базисе, то исходная задача не имеет решения (система ограничений не совместна). На рис. 13 видно, что область допустимых решений исходной задачи не содержит ни одной точки. Рисунок 13 – Область допустимых решений Примера 2 не содержит точек 1.13. Двойственные задачи Рассмотрим задачу использования сырья. Для изготовления двух видов продукции P1, P2 предприятие использует 4 вида сырья S1, S2, S3, S4. Запасы сырья и расходы на изготовление каждого вида продукции приведены в таблице. Составить план производства, при котором прибыль предприятия будет максимальной. Сырье Запасы S1 S2 S3 S4 Прибыль от единицы продукции (у.е.) 20 16 30 40 Расход на единицу продукции P1 P2 3 2 4 1 3 4 10 6 Для составления математической модели задачи введем две переменные: x1 – количество произведенной продукции P1 и x2 – количество произведенной 57 продукции P2. По определению эти переменные должны быть неотрицательны. При производстве продукции предприятие израсходует 2x1+3x2 единиц сырья S1, 2x1+x2 единиц сырья S2, 3x2 единиц сырья S3 и 4x2 единиц сырья S4. Предприятие не может израсходовать сырья больше, чем у него имеется, поэтому получаем следующие ограничения на использование имеющегося сырья: 3x1 + 2 x2  20, 4 x1 + x2  16, 3x2  30, 4 x1  40. От продажи выпущенной продукции предприятие получит прибыль 10x1+6x2 у.е. Получаем математическую модель задачи: Z ( x1, x2 ) = 10 x1 + 6 x2 → max, 3 x1 + 2 x2  20, 4 x + x  16,  1 2 3 x2  30, 4 x  40,  1  x1, x2  0. Предположим, что по некоторым обстоятельствам потребитель отказался от заказа, и предприятие решило продать сырье, не выпуская продукцию. По каким ценам будет продаваться сырье? Составим математическую модель новой задачи. Введем три переменные: y1 − стоимость единицы сырья S1, y2 − стоимость единицы сырья S2, y3 − стоимость единицы сырья S3, y4 − стоимость единицы сырья S4. По определению эти переменные должны быть неотрицательны. Предприятию имеет смысл не выпускать продукцию только в случае, если выручка от продажи сырья не меньше, чем стоимость произведенной из этого сырья продукции. На производство одной единицы продукции P1 расходуется 3 единицы сырья S1, 4 единицы сырья S2 и 4 единицы сырья S4. Если не выпускать продукцию P1, а продать все сырье, из которого его можно изготовить, то выручка от реализации этого сырья составит 3 y1 + 4 y2 + 4 y4 . Аналогично, выручка от реализации сырья, из которого можно изготовить продукцию P2, составит 2 y1 + y2 + 3 y3 . Выручка от продажи сырья должна быть не меньше стоимости единицы соответствующей продукции. Получаем ограничения: 3 y1 + 4 y2 + 4 y4  10, 2 y1 + y2 + 3 y3  6. С другой стороны, покупатель сырья хочет купить это сырье как можно дешевле. На покупку сырья будет затрачено 20 y1 + 16 y2 + 30 y3 + 40 y4 у.е. 58 Получаем математическую модель задачи: W ( y1, y2 , y3, y4 ) = 20 y1 + 16 y2 + 30 y3 + 40 y4 → min, 3 y1 + 4 y2 + 4 y4  10,  2 y1 + y2 + 3 y3  6,  y , y , y , y  0.  1 2 3 4 Составленная задача называется двойственной к исходной. Как видно из построенных моделей, кроме экономической связи между ними существует и математическая связь. Перечислим условия, связывающие построенные задачи. 1. Цели задач противоположны: в исходной задаче функция максимизируется, а в двойственной минимизируется. 2. Количество переменных двойственной задачи соответствует количеству ограничений исходной задачи. 3. Коэффициенты при неизвестных в целевой функции исходной задачи являются правыми частями в ограничениях двойственной задачи и, наоборот, правые части ограничений исходной задачи являются коэффициентами при неизвестных в целевой функции двойственной задачи. 4. Матрица коэффициентов при неизвестных в системе ограничений двойственной задачи является транспонированной матрицей коэффициентов при неизвестных в системе ограничений исходной задачи. x1 x2 y1 y2 y3 y4 T  3 2 4 1   =  3 4 0 4 . 2 1 3 0  0 3      4 0 5. Знаки неравенств задач противоположны: все неравенства исходной задачи имеют знак «», а двойственной «». 6. Переменные обеих задач неотрицательны. Рассмотрим правила построения двойственной задачи в общем случае. Пусть имеется задачи линейного программирования в общем виде: (1.23) Z = c1x1 + c2 x2 + + cn xn → max, y1 a11x1 + a12 x2 + + a1n xn  b1, .................................................,  yk ak1x1 + ak 2 x2 + + akn xn  bk ,  (1.24) yk +1 ak +1,1x1 + ak +1,2 x2 + + ak +1, n xn = bk +1, .................................................,  ym am1x1 + am 2 x2 + + amn xn = bm ,   xi  0 ( i = 1, , l ; l  n ) . 59 Каждой такой задаче можно поставить в соответствие двойственную задачу: (1.25) W = b1 y1 + b2 y2 + + bm ym → min, x1 a11 y1 + a21 y2 + + am1 ym  c1, ..................................................,  xl a1l y1 + a2l y2 + + aml ym  cl  (1.26) xl +1 a1,l +1 y1 + a2,l +1 y2 + + am,l +1 ym = cl +1, ...................................................,  xn a1n y1 + a2n y2 + + amn yn = cn ,  y  0 ( j = 1, , k , k  m ) .  j Алгоритм построения двойственной задачи 1. Сначала производится согласование цели исходной задачи и неравенств ее системы ограничений. Если целевая функция максимизируется, то все знаки неравенств должны быть «», если целевая функция минимизируется, то все знаки неравенств должны быть «». Если какое-нибудь неравенство не соответствует цели задачи, то его следует домножить на -1 для смены знака на противоположный. 2. Каждому i-му ограничению системы исходной задачи соответствует переменная yi двойственной задачи и, наоборот, каждому j-му ограничению системы двойственной задачи соответствует переменная xi исходной задачи. Подпишем эти соответствия слева от систем. 3. Коэффициенты при неизвестных в целевой функции двойственной задачи совпадают с правыми частями системы ограничений исходной задачи. 4. Цель двойственной задачи противоположна цели исходной задачи. 5. Матрица системы ограничений двойственной задачи получается транспонированием из матрицы системы ограничений исходной задачи. 6. Коэффициенты правых частей двойственной задачи – это коэффициенты при неизвестных в целевой функции исходной задачи. 7. Знаки ограничений двойственной задачи могут быть либо неравенствами, соответствующими цели двойственной задачи, либо равенствами. Неравенство ставится в случае, если на переменную исходной задачи, соответствующую ограничению двойственной задачи, наложено условие неотрицательности. Если такого условия нет, то соответствующее ограничение двойственной задачи – уравнение. 8. На переменную yj двойственной задачи следует наложить условие неотрицательности лишь в том случае, если i-е ограничение исходной задачи – неравенство. Замечание: Если по алгоритму построить двойственную задачу к двойственной, то получим исходную задачу. Поэтому исходную и двойственную задачу называют парой взаимно двойственных задач. 60 Пример 1 Построить двойственную для следующей задачи. Z = 5x1 + 4 x2 + 6 x3 → max,  x1 + x2 + x3  6, 2 x − x + 3x  9,  1 2 3  3x1 + x2 + 2 x3 = 11,   x1, x3  0. Решение: Согласуем знаки неравенств с целью задачи. Целевая функция максимизируется, поэтому все неравенства должны быть «». Второе неравенство не согласовано с целью функции, умножим его обе части на -1.  x1 + x2 + x3  6, −2 x + x − 3x  −9,  1 2 3  3x1 + x2 + 2 x3 = 11,  x1, x3  0. В системе имеется 3 ограничения, поэтому в двойственной задаче будет 3 переменные, подпишем эти переменные слева от ограничений. y1  x1 + x2 + x3  6, y2   −2 x1 + x2 − 3x3  −9, . y3  3 x1 + x2 + 2 x3 = 11,   x1, x3  0. Матрица левой части системы ограничений исходной задачи: x1 x2 x3 1 1 1 A =  −2 1 −3  .  3 1 2   Матрица левой части системы ограничений двойственной задачи: y1 y2 y3 T 1 1 1 1 −2 3    AT =  −2 1 −3  = 1 1 1  .  3 1 2 1 −3 2      61 Двойственная задача: W = 6 y1 − 9 y2 + 11y3 → min, x1  y1 − 2 y2 + 3 y3  5, x2   y1 + y2 + y3 = 4,  x3  y1 − 3 y2 + 2 y3  6,   y1, y2  0. Второе ограничение является уравнением, т.к. на переменную x2 не наложено условие неотрицательности. На переменную y3 не наложено условие неотрицательности, т.к. соответствующее y3 ограничение исходной задачи – уравнение.  В силу того, что все три формы записи задачи линейного программирования (общая, симметричная, каноническая) эквиваленты, далее будем рассматривать пару симметричных взаимно двойственных задач (1.27), (1.28) и (1.29), (1.30). (1.27) Z = c1x1 + c2 x2 + + cn xn → max, a11x1 + a12 x2 + + a1n xn  b1, ..............................................,  (1.28)  a x + a x + + a x  b , m 1 1 m 2 2 mn n m    xi  0 ( i = 1, , n ) . (1.29) W = b1 y1 + b2 y2 + + bm ym → min, a11 y1 + a21 y2 + + am1 ym  c1, ..................................................,  (1.30) a y + a y + + a y  c , 1 n 1 2 n 2 mn n n   y j  0 ( j = 1, , m ) . Следующие теоремы дают зависимости между решениями пары двойственных задач. Теорема 16 (Основное неравенство теории двойственности) Пусть X = ( x1, , xn ) и Y = ( y1, , ym ) - допустимые решения пары двойственных задач в симметричной форме. Тогда, W (Y )  Z ( X ) . Доказательство: W (Y ) = b1 y1 + + bm ym  (a11x1 + = (a11 y1 + am1 ym ) x1 + + (a1n y1 + Следовательно, W (Y )  Z ( X ) . a1n xn ) y1 + + (am1x1 + amn ym ) xn  c1x1 + amn xn ) ym = + cn xn = Z ( X ). Теорема 17 (Достаточный признак оптимальности решения) Пусть X * = ( x1* , , xn* ) и Y * = ( y1* , , ym* ) - допустимые решения пары двойственных задач и W (Y * ) = Z ( X * ) . Тогда, X*, Y* – оптимальные решения этих задач. 62 Доказательство: Пусть X* – не оптимальное решение, тогда существует допустимое решение X такое, что Z ( X )  Z ( X * ) = W (Y *) . Получили противоречие теореме 16. Следовательно, X* – оптимальное решение. Пусть Y* – не оптимальное решение, тогда существует допустимое решение Y такое, что W (Y )  W (Y * ) = Z ( X *) . Получили противоречие теореме 16. Следовательно, Y* – оптимальное решение. Теорема 18 (О минимаксе) Если одна из пары двойственных задач имеет решение, то и другая имеет решение, причем Z max = Wmin . Если одна из пары двойственных задач имеет неограниченную функцию, то система ограничений второй задачи не совместна. Теорема 19 (Равновесия) Пусть X * = ( x1* , , xn* ) и Y * = ( y1* , , ym* ) - допустимые планы пары двойственных задач в симметричной форме. Эти планы являются оптимальными тогда и только тогда, когда выполняются следующие условия дополняющей нежесткости (1.31).  y*  b − a x* + + a x*  = 0, 11 1 1n n   1  1 ................................................,   y*  b − a x* + + a x*  = 0, m1 1 mn n   m  m (1.31)  * * *    x1  a11 y1 + + am1 ym − c1 = 0,    ................................................,  *  xn*   a1n y1* + + amn ym − cn  = 0.     ( ) ( ) ( ) ( ) Теорема 19 позволяет определить оптимальное решение одной из пары двойственных задач по решению другой. Если ограничение одной задачи при подстановке оптимального решения обращается в строгое неравенство, то соответствующая двойственная переменная в оптимальном решении двойственной задачи равна 0. Если в оптимальном плане одной задачи какая-нибудь переменная положительна, то соответствующее ей ограничение двойственной задачи является уравнением. В случае если одна из пары двойственных задач содержит две переменных, ее можно решить графически, а, затем, найти решение двойственной задачи, используя Теоремы 18 и 19. 63 Пример 2 Решив графически двойственную задачу, найти решение исходной по теореме равновесия. Z = 10 x1 − 9 x2 − 19 x3 − 13x4 − 11x5 → max,  x2 − 2 x3 + 2 x4 − 2 x5  4,  −2 x1 + 2 x2 + 2 x3 + 2 x4 + x5  2,   xi  0, i = 1,5. Решение: Построим двойственную задачу. Сначала согласуем знаки неравенств с целью исходной задачи. Z = 10 x1 − 9 x2 − 19 x3 − 13x4 − 11x5 → max, y1  x2 − 2 x3 + 2 x4 − 2 x5  4,  y2 2 x1 − 2 x2 − 2 x3 − 2 x4 − x5  −2,  x  0, i = 1,2,3,4,5.  i Двойственная задача согласно алгоритму: W = 4 y1 − 2 y2 → min, x1 2 y2  10,  x2  y1 − 2 y2  −9, x3 −2 y1 − 2 y2  −19,  x4 2 y1 − 2 y2  −13, x5 −2 y1 − y2  −11,   y1, y2  0. На рис. 14 приведено графическое решение двойственной задачи. Рисунок 14 – Графическое решение двойственной задачи из Примера 2 64 Сделаем пояснения к рис. 14. Составим уравнения прямых, ограничивающих полуплоскости, определяемых неравенствами системы ограничений. (1) 2y2 = 10, (2) y1 - 2y2 = -9, (3) -2y1 – 2y2 = -19, y1 1 y1 -3 y1 9.5 y2 5 5 y2 4.5 3 y2 9.5 (4) 2y1 - 2y2 = -13, y1 -6.5 y2 6.5 (5) -2y1 - y2 = -11. y1 3 y2 5 5.5 Построим линию уровня W = 0: 4y1 – 2y2 = 0. y1 2 y2 4 Вектор gradW = (4; −2) определяет направление наибольшего возрастания функции W. Точка минимума получается в результате пересечения прямых (1) и (2). Для нахождения ее координат решим систему: 2 y2 = 10,  y = 5,  2   y1 − 2 y2 = −9.  y1 = 1. Wmin = W (1;5) = 4  1 − 2  5 = −6 . Найдем оптимальное решение исходной задачи по теореме равновесия. Запишем условия дополняющей нежесткости.  y1(4 − ( x2 − 2 x3 + 2 x4 − 2 x5 )) = 0,  y (−2 − (2 x − 2 x − 2 x − 2 x − x )) = 0, 1 2 3 4 5  2  x1(2 y2 − 10) = 0,   x2 ( y1 − 2 y2 + 9) = 0,  x (−2 y − 2 y + 19) = 0, 1 2  3  x4 (2 y1 − 2 y2 + 13) = 0,  x (−2 y − y + 11) = 0. 1 2  5 Подставим в составленную систему оптимальное решение двойственной задачи: y1 = 1, y2 = 5 . 1  (4 − ( x2 − 2 x3 + 2 x4 − 2 x5 )) = 0, 5  (−2 − (2 x − 2 x − 2 x − 2 x − x )) = 0, 1 2 3 4 5   x1(2  5 − 10) = 0,   x2 (1 − 2  5 + 9) = 0,  x (−2  1 − 2  5 + 19) = 0,  3  x4 (2  1 − 2  5 + 13) = 0,  x (−2  1 − 5 + 11) = 0.  5 65 Произведение равно нулю, если один из множителей равен 0. Получаем, 4 − ( x2 − 2 x3 + 2 x4 − 2 x5 ) = 0, −2 − (2 x − 2 x − 2 x − 2 x − x ) = 0, 1 2 3 4 5   x1  0 = 0,   x2  0 = 0,  x  7 = 0  x = 0, 3  3  x4  5 = 0  x4 = 0,  x  4 = 0  x = 0. 5  5 Тогда, x2 = 4, x = 4,  2 2 x1 − 2 x2 = −2. x1 = 3. Оптимальное решение исходной задачи Zmax = Z (3;4;0;0;0) . По Теореме 18 Zmax = Wmin = −6 . Окончательно, Zmax = Z (3;4;0;0;0) = −6 .   Пример 3 Составить двойственную задачу к задаче из Примера 2 раздела 1.8 и найти ее решение по теореме равновесия. Решение: Z ( x1, x2 ) = 120 x1 + 160 x2 → min,  x1 + 3x2  12, 5 x1 + 4 x2  31, 2 x + 3 x  18, 2  x ,1x  0.  1 2 В разделе 1.8 было найдено графически решение этой задачи: Z min = Z ( 3;4 ) = 1000 . Составим двойственную задачу. Знаки неравенств уже согласованы с целью задачи. Z ( x1, x2 ) = 120 x1 + 160 x2 → min, y1  x1 + 3x2  12, y2 5 x1 + 4 x2  31, y3 2 x1 + 3x2  18,  x , x  0.  1 2 Двойственная задача: W ( y1, y2 , y3 ) = 12 y1 + 31y2 + 18 y3 → max, x1   y1 + 5 y2 + 2 y3  120, x2 3 y1 + 4 y2 + 3 y3  160,   y1, y2 , y3  0. Найдем оптимальное решение двойственной задачи по теореме равновесия. Запишем условия дополняющей нежесткости. 66  y1( x1 + 3 x2 − 12) = 0,  y2 (5 x1 + 4 x2 − 31) = 0,  y3 (2 x1 + 3 x2 − 18) = 0,  x1(120 − ( y1 + 5 y2 + 2 y3 )) = 0,  x2 (160 − (3 y1 + 4 y2 + 3 y3 )) = 0. Подставим в составленную систему оптимальное решение исходной задачи: x1 = 3, x2 = 4 .  y1(3 + 3  4 − 12) = 0,  y2 (5  3 + 4  4 − 31) = 0,  y3 (2  3 + 3  4 − 18) = 0, 3  (120 − ( y1 + 5 y2 + 2 y3 )) = 0, 4  (160 − (3 y1 + 4 y2 + 3 y3 )) = 0. Произведение равно нулю, если один из множителей равен 0. Получаем  y1  3 = 0  y1 = 0,  y2  0 = 0,  y3  0 = 0, 120 − ( y1 + 5 y2 + 2 y3 ) = 0, 160 − (3 y1 + 4 y2 + 3 y3 ) = 0. Тогда, 120 − (0 + 5 y2 + 2 y3 ) = 0, 160 − (3  0 + 4 y2 + 3 y3 ) = 0.  − 120, 3 54yy ++ 23yy == 160. 2 2 2 3 3 7 y2 = 40  y2 = 40 . 7 40 120 − 5 y2 7 = 320 . y3 = = 2 2 7 Оптимальное решение двойственной задачи Wmax = W (0;40 / 7;320 / 7) . По Теореме 18 Окончательно, Zmin = Wmax = 1000 . Wmax = W (0;40 / 7;320 / 7) = 1000 . 120 − 5  1.14. Двойственный симплекс-метод Пусть имеется пара симметричных двойственных задач (1.27), (1.28) и (1.29), (1.30). Перейдем к каноническим формам записи задач. (1.32) Z = c1x1 + c2 x2 + + cn xn → max, y1 a11x1 + a12 x2 + + a1n xn + xn +1 = b1, ............................................................,  (1.33)  ym am1x1 + am 2 x2 + + amn xn + xn + m = bm ,   xi  0 ( i = 1, , n + m ) . 67 (1.34) W = b1 y1 + b2 y2 + + bm ym → min, x1 a11 y1 + a21 y2 + + am1 ym − ym +1 = c1, ...............................................................,  (1.35)  xm a1n y1 + a2n y2 + + amn yn − ym + n = cn ,  y j  0 ( j = 1, , m + n ) . В п.1.13 было показано, что для получения решения исходной задачи можно перейти к двойственной и по оптимальному плану двойственной задачи найти решение исходной задачи. Можно заметить, что построение самой двойственной задачи не обязательно, так как при рассмотрении симплексной таблицы задачи (1.32), (1.33) легко заметить, что в столбцах записана исходная задача, а в строках – двойственная. При этом оценками плана исходной задачи являются коэффициенты Z-строки cij , оценками плана двойственной задачи – коэффициенты столбца свободных членов bi . Поэтому оптимальный план двойственной задачи можно находить, используя симплексные таблицы исходной задачи. При решении симплекс-методом все коэффициенты в столбце свободных членов должны были быть неотрицательны, а в Z-строке допускались отрицательные коэффициенты, которые в процессе решения преобразовывались в неотрицательные. Поскольку в двойственной задаче столбец свободных членов и Zстрока меняются местами, то можно допустить, что в Z-строке все коэффициенты неотрицательны, а в столбце свободных членов могут быть отрицательные коэффициенты. Тогда при выполнении симплексных преобразований необходимо преобразовывать коэффициенты столбца свободных членов в неотрицательные. Симплексная таблица, в которой все коэффициенты Z-строки неотрицательны, а в столбце свободных членов имеются отрицательные, называется двойственно допустимой, а соответствующее ей базисное решение – псевдопланом. К двойственно допустимой таблице применим алгоритм двойственного симплекс-метода. Двойственный симплекс-метод используется, если первоначальное базисное решение не является опорным. Алгоритм двойственного симплекс-метода 1. В столбце свободных членов среди отрицательных элементов выбирают максимальный по модулю. Соответствующая строка будет разрешающей. 2. Для отрицательных элементов разрешающей строки находят симплексные отношения: модули отношений элементов Z-строки к отрицательным элементам разрешающей строки. Эти отношения записывают в дополнительную строку внизу симплексной таблицы. Если в разрешающей строке нет отрицательных элементов, то задача не имеет решения. 3. Среди симплексных отношений находят минимальное, соответствующий столбец будет разрешающим. 4. На пересечении разрешающей строки и разрешающего элемента находится разрешающий элемент. 68 5. Выполняют симплексное преобразование таблицы по тем же правилам, что и для обычной симплексной таблицы. 6. Если в столбце свободных членов есть отрицательные, то переходят к п.1. Если отрицательных элементов нет, то решение оптимально. Алгоритм двойственного симплекс-метода часто используют, если после решения задачи возникает какое-то дополнительное ограничение, которое следует учесть в задаче. Для того, чтобы не решать задачу по-новому, можно добавить ограничение в последнюю симплекс-таблицу и решать ее двойственным симплекс-методом. Пример Решить задачу линейного программирования. Z = x1 + x2 + 2 x3 → max,  x1 + x2 + x3 = 8,  x − x  4,  1 2   x1 + 2 x2  6,  xi  0, i = 1,2,3. Решение: Запишем задачу в канонической форме: Z = x1 + x2 + 2 x3 → max,  x1 + x2 + x3 = 8,  x − x − x = 4,  1 2 4   x1 + 2 x2 − x5 = 6,   xi  0, i = 1, ,5. Расширенная матрица системы: 1 1 1 0 0 8   1 1 1 0 0 8  1 −1 0 −1 0 4   −1 1 0 1 0 −4  . 1 2 0 0 −1 6   −1 −2 0 0 1 −6      Переменные x3, x4 , x5 – базисные, x1, x2 – свободные. Выразим базисные переменные и функцию через свободные переменные.  x3 = 8 − ( x1 + x2 ),  x = −4 − (− x + x ),  4 1 2   x5 = −6 − (− x1 − 2 x2 ),   xi  0, i = 1,2,3,4,5, Z = x1 + x2 + 2(8 − x1 − x2 ) = 16 − x1 − x2 → max. 69 Симплексная таблица 1 б.п. 1 x1 x2 x3 x4 x5 x3 8 1 1 1 0 0 x4 −4 −1 1 0 1 0 x5 −6 −1 −2 0 0 1  Z 16 1 1 0 0 0 CO 1 1/ 2  Симплексная таблица 1 является двойственно допустимой. Ей соответствует псевдоплан X 1 = (0;0;8; −4; −6) . Т.к. в столбце свободных членов имеются отрицательные элементы, то строим следующую таблицу согласно алгоритму двойственного симплекс-метода. Симплексная таблица 2 б.п. 1 x1 x2 x3 x4 x5 x3 5 1/ 2 0 1 0 1/ 2 x4 −7 −3 / 2 0 0 1 1 / 2  x2 3 1/ 2 1 0 0 −1 / 2 Z 13 1 / 2 0 0 0 1/ 2 CO 1/ 3 −  Симплексная таблица 2 является двойственно допустимой. Ей соответствует псевдоплан X 2 = (0;3;5; −7;0) . Т.к. в столбце свободных членов имеются отрицательные элементы, то строим следующую таблицу согласно алгоритму симплекс-метода. Симплексная таблица 3 б.п. 1 x1 x2 x3 x4 x5 x3 8 / 3 0 0 1 1/ 3 2/3 x1 14 / 3 1 0 0 −2 / 3 −1 / 3 x2 2 / 3 0 1 0 1 / 3 −1 / 3 Z 32 / 3 0 0 0 1 / 3 2/3 Симплексной таблице 3 соответствует оптимальный план X 3 = (14 / 3;2 / 3;8 / 3;0;0) и максимальное значение функции Z max = 32 / 3 . Вопросы для самопроверки 1. Может ли система ограничений общей ЗЛП включать строгие неравенства? 2. Может ли целевая функция ЗЛП содержать нелинейные выражения из переменных? 3. Может ли допустимое решение ЗЛП содержать отрицательную компоненту? 4. Чем отличается оптимальное решение ЗЛП от допустимого? 5. Чем отличается канонический вид ЗЛП от общего? 6. Каждая ли задача, заданная в симметричной форме, может быть приведена к канонической форме? Если да, то укажите, каким образом это делается? 7. Может ли задача, заданная в канонической форме, быть приведена к общему виду? 70 8. Какое максимальное число неравенств может содержать ЗЛП с двумя переменными? 9. Как строится область допустимых решений ЗЛП с двумя переменными? 10.Может ли область допустимых решений быть невыпуклым многоугольником? 11.Может ли область допустимых решений быть неограниченным множеством? Пустым? 12.Что такое градиент? Как его строить? 13.Что такое линия уровня? Как ее строить? 14.Может ли ЗЛП с двумя переменными иметь два и только два оптимальных решения? 15.В каком случае задача линейного программирования с двумя переменными не имеет решения? 16.Какой вывод можно делать из того, что область допустимых решений не ограничена по направлению, противоположному вектору целевой функции? 17.Сколько переменных может содержать ЗЛП, которую можно решить графически? 18.Можно ли для ЗЛП, содержащей в системе ограничений неравенства разных направлений, построить двойственную задачу? 19.Если в основной задаче отсутствуют условия неотрицательности переменных, то какие последствия это влечет в двойственной задаче? 20.Чем отличаются матрицы систем ограничений в паре двойственных задач? 21.Какова связь между оптимальными решениями пары двойственных задач? 22.Что можно сказать о решении двойственной задачи, если решение основной задачи не существует по причине несовместимости ее системы ограничений? 23.В чем смысл теоремы равновесия? 71 2. СПЕЦИАЛЬНЫЕ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ 2.1. Целочисленные задачи линейного программирования. Метод Гомори При решении многих задач линейного программирования на искомые переменные по их физическому смыслу необходимо наложить дополнительные условия целочисленности. Это может быть, когда искомыми величинами являются неделимые объекты, например, количество станков, комплектов оборудования и т.п. Можно предположить, что решение задачи целочисленного программирования можно получить из решения соответствующей ей задачи линейного программирования округлением нецелых компонент ее оптимального плана. Но на практике это оказывается далеко не так. В качестве примера рассмотрим следующую задачу: Z = x1 + 2 x2 → max, 5 x1 − 4 x2  0,   x1 + 4 x2  12,  x  0, целые, i = 1,2.  i Решив данную задачу без учета условий целочисленности, получим оптимальный план X * = (2;2.5), Z max = 7 . Полученное решение не является целочисленным, но при попытке округления как в большую, так и в меньшую сторону, получим точки (2;2) или (2;3), которые не принадлежат области допустимых решений. Оптимальным решением исходной задачи является точка (0;3), которая не могла быть получена округлением точки (2;2.5). Поэтому разработаны специальные методы решения таких задач. Методы решения задач целочисленного программирования можно разделить на 3 основные группы. 1. Методы отсечения. Опишем общую идею таких методов. Для отыскания решения используется многоэтапный процесс. Сначала задача решается без условия целочисленности. Если полученное в результате решение будет целочисленным, то исходная задача решена. Если нет, то к ограничениям задачи, решенной на предыдущем этапе, добавляется еще одно линейное ограничение, обладающее следующими двумя свойствами: а) оно должно отсекать найденный оптимальное нецелочисленное решение; 2) оно не должно отсекать ни одного допустимого целочисленного решения. Такое дополнительное ограничение называется правильным отсечением. После этого задача решается с учетом добавленного ограничения. В случае, если решение и этой задачи не будет целочисленным, добавляется еще одно линейное ограничение, являющееся правильным отсечением. Решается новая задача линейного программирования и т.д., до получения целочисленного решения. Методы отсечения можно геометрически прокомментировать на примере задач, содержащих две переменные. Добавление каждого правильного отсечения к ограничениям задачи соответствует построению прямой, отсекающей 72 от многоугольника решений некоторую часть вместе с вершиной, соответствующей нецелочисленному оптимальному решению, при этом не затрагивая ни одной из целочисленных точек области допустимых решений. 2. Комбинаторные методы. Поскольку число допустимых решений задачи целочисленного программирования конечно, то в принципе возможен их полный перебор. Общая идея комбинаторных методов состоит в направленном переборе, при котором рассматриваются лишь те из них, которые по некоторым признаком оказываются перспективными, с одновременным отбрасыванием бесперспективных. 3. Приближенные методы. Методы отсечения и комбинаторные методы позволяют получить точное решение задачи за конечное число шагов. Но даже для не очень больших задач скорость сходимости этих методов оказывается недостаточной. Поэтому на практике оправдано использование приближенных методов, учитывающих специфику конкретной задачи. Эти методы используют как детерминированные алгоритмы, так и алгоритмы случайного поиска. Это позволяет, с одной стороны, упростить поиск решений, а, с другой стороны, ограничивает сферу применения методов. Метод Гомори является одним из методов отсечения, основан на симплексметоде и использует достаточно простой способ построения правильного отсечения. Сначала дадим определения. Целой частью числа a (обозначается  a  ), называется наибольшее целое число, не превосходящее a . Дробной частью числа a (обозначается a ) называется разность между числом a и его целой частью, т.е. a = a −  a  (расстояние до ближайшего целого, расположенного слева от a ). Дробная часть всегда неотрицательна. Пример 1 Найдем целые и дробные части. 3.8 = 3, 3.8 = 0.8, 1.2 = 1, 1.2 = 0.2,  −5.7 = −6, −5.7 = 0.3,  −3.2 = −4, −3.2 = 0.8.  Пусть задача линейного программирования представлена в канонической форме: (2.1) Z = c1x1 + c2 x2 + + cn xn → max, a 11 x1 + a12 x2 + + a1n xn = b1,  ...,  (2.2)  a x + a x + + a x = b , mn n m  m1 1 m 2 2   x1, x2 , , xn  0, целые. 73 Алгоритм метода Гомори 1. Отбросив условие целочисленности, решить задачу симплекс-методом. Если получим целочисленный оптимальный план, то задача решена. Иначе переходим к шагу 2. 2. Для нецелочисленной компоненты решения составить дополнительное ограничение. Пусть для определенности это будет компонента с номером i0. Тогда ограничение будет иметь вид: (2.3) ai01 x1 + ai0 2 x2 + + ai0n xn  bi0 ,            где ai0 j , bi0 – дробные части соответствующих коэффициентов. Если в оптимальном плане нецелочисленные значения принимают несколько переменных, то дополнительное неравенство (2.3) определяется базисной переменной с наибольшей дробной частью (это ускоряет процесс получения оптимального целочисленного решения). 3. Добавить неравенство (2.3) к системе ограничений ранее решенной задачи. При этом новая задача решается двойственным симплекс-методом. Для этого в (2.3) необходимо перейти к равенству, введя дополнительную переменную xn+1  0 , которая будет являться базисной. После решения новой задачи двойственным симплекс-методом, переходят к первому этапу. Через конечное число шагов будет найдено оптимальное целочисленное решение или установлена неразрешимость задачи. Пример 2 Решить задачу целочисленного программирования: Z = x1 + 2 x2 → max,  3 x1 + x2  7,  x1 + 3 x2  7,   x1, x2  0, целые. Решение: Перейдем к канонической форме записи задачи: Z = x1 + 2 x2 → max,  3 x1 + x2 + x3 = 7,  x1 + 3 x2 + x4 = 7,   x1, x2 , x3 , x4  0, целые. ( ) Расширенная матрица системы ограничений: 3 1 1 0 7 . 1 3 0 1 7 Переменные x3, x4 – базисные, x1, x2 – свободные. Правая часть неотрицательна, поэтому базисное решение будет опорным. Решим задачу без условия целочисленности. 74 Симплексная таблица 1 б.п. 1 x1 x2 x3 x4 CO x3 7 3 1 1 0 7 x4 7 1 3 0 1 7 / 3  Z 0 −1 −2 0 0  Симплексной таблице 1 соответствует неоптимальное опорное решение X 1 = (0;0) и значение функции Z ( X 1) = 0 . Переходим к новой таблице: Симплексная таблица 2 б.п. 1 x1 x2 x3 x4 CO x3 14 / 3 8 / 3 0 1 −1 / 3 7 / 4  x2 7 / 3 1 / 3 1 0 1 / 3 7 Z 14 / 3 −1 / 3 0 0 2 / 3  Симплексной таблице 2 соответствует неоптимальное опорное решение 2 X = (0;7 / 3) и значение функции Z ( X 2 ) = 14 / 3 . Переходим к новой таблице: Симплексная таблица 3 б.п. 1 x1 x2 x3 x4 x1 7 / 4 1 0 3 / 8 −1 / 8 x2 7 / 4 0 1 −1 / 8 3 / 8 Z 21 / 4 0 0 1 / 8 5 / 8 Симплексной таблице 3 соответствует оптимальное нецелочисленное решение X 3 = (7 / 4;7 / 4) и значение функции Z ( X 3 ) = 21 / 4 . Найдем дробные части нецелочисленных базисных переменных: 7 / 4 = 3 / 4, 7 / 4 = 3 / 4 . Так как дробные части обоих базисных одинаковы, то отсечение Гомори можно строить по любой из двух строк. Выберем первую строку (подчеркнем ее) и составим дополнительное ограничение Гомори, используя строку для базисной переменной x1. Тогда отсечение Гомори будет определяться неравенством: {1}x1 + 3 / 8 x3 + −1 / 8 x4  7 / 4 . Найдем дробные части: {1} = 0,3 / 8 = 3 / 8, −1 / 8 = 7 / 8 . Ограничение примет вид: Перейдем к равенству: 3 / 8x3 + 7 / 8x4  3 / 4 . 3 / 8x3 + 7 / 8x4 − x5 = 3 / 4, x5  0 . Умножим обе части уравнения на -1: −3 / 8x3 − 7 / 8x4 + x5 = −3 / 4, x5  0 , и добавим новое ограничение в симплексную таблицу 3. Симплексная таблица 4 б.п. 1 x1 x2 x3 x1 7/4 1 0 3/8 x2 7 / 4 0 1 −1 / 8 x5 −3 / 4 0 0 −3 / 8 Z 21 / 4 0 0 1/ 8 CO 1/ 3  x4 x5 −1 / 8 0 3/8 0 −7 / 8 1  5/8 0 5/7 75 Полученная таблица является двойственно допустимой. Разрешающий элемент выберем в соответствии с алгоритмом двойственного симплекс-метода. Разрешающая строка – третья, для нее находим симплексные отношения и выбираем минимальное. Переходим к новой таблице: Симплексная таблица 5 б.п. 1 x1 x2 x3 x4 x5 x1 1 1 0 0 −1 1 x2 2 0 1 0 2 / 3 −1 / 3 x3 2 0 0 1 7 / 3 −8 / 3 Z 5 0 0 0 1/ 3 1/ 3 Таблице соответствует оптимальное целочисленное решение X * = (1;2) и ц = Z ( X *) = 5 . значение функции Z max Графическая интерпретацию отсечения в Примере 2 приведена на рис. 15. Рисунок 15 – Интерпретация отсечения Гомори в Примере 2 Область допустимых решений исходной задачи – четырехугольник OABC. Оптимальному нецелочисленному решению X 3 на рисунке соответствует вершина B. Составленное дополнительное ограничение 3 / 8x3 + 7 / 8x4  3 / 4 необходимо выразить через переменные x1, x2 . Предварительно умножим обе части на 8. Получаем: 3x3 + 7 x4  6, 3(7 − 3x1 − x2 ) + 7(7 − x1 − 3x2 )  6, 76 21 − 9 x1 − 3x2 + 49 − 7 x1 − 21x2  6, 16 x1 + 24 x2  64, 2 x1 + 3x2  8. Проведем новую прямую, соответствующую границе полуплоскости, определяемого новым ограничением. Эта прямая отсекла от области допустимых решений нецелочисленную вершину B. Область допустимых решений новой задачи с учетом ограничений – пятиугольник ОADEC. Оптимальному целочисленному решению X * соответствует на рисунке точка D.  Пример 3 Решить задачу целочисленного программирования: Z = 2 x1 → max,  3 x1 + x2  6, 5 x1 − x2  9,   x1, x2  0, целые. Решение: Перейдем к канонической форме записи задачи: Z = 2 x1 → max,  3 x1 + x2 + x3 = 6, 5 x1 − x2 + x4 = 9,   x1, x2  0, целые. ( ) Расширенная матрица системы ограничений: 3 1 1 0 6 . 5 −1 0 1 9 Переменные x3, x4 – базисные, x1, x2 – свободные. Правая часть неотрицательна, поэтому базисное решение будет опорным. Решим задачу без условия целочисленности. Симплексная таблица 1 б.п. 1 x1 x2 x3 x4 CO x3 6 3 1 1 0 2 x4 9 5 −1 0 1 9 / 5  Z 0 −2 0 0 0  Симплексной таблице 1 соответствует неоптимальное опорное решение X 1 = (0;0) и значение функции Z ( X 1) = 0 . Переходим к новой таблице: Симплексная таблица 2 б.п. 1 x1 x2 x3 x3 3 / 5 0 8 / 5 1 x1 9 / 5 1 −1 / 5 0 Z 18 / 5 0 −2 / 5 0  x4 CO −3 / 5 3 / 8  1/ 5 − 2/5 77 Симплексной таблице 2 соответствует неоптимальное опорное решение X 2 = (9 / 5;0) и значение функции Z ( X 2 ) = 18 / 5 . Переходим к новой таблице: Симплексная таблица 3 б.п. 1 x1 x2 x3 x4 x2 3 / 8 0 1 5 / 8 −3 / 8 x1 15 / 8 1 0 1 / 8 1 / 8 Z 15 / 4 0 0 1 / 4 1 / 4 Симплексной таблице 3 соответствует оптимальное нецелочисленное решение X 3 = (15 / 8;3 / 8) и значение функции Z ( X 3 ) = 15 / 4 . Найдем дробные части нецелочисленных базисных переменных: 3 / 8 = 3 / 8, 15 / 8 = 7 / 8 . Так как вторая дробная часть больше, то отсечение Гомори будем строить по второй строке (подчеркнем ее пунктиром) и составим дополнительное ограничение Гомори: {1}x1 + 1 / 8 x3 + 1 / 8 x4  15 / 8 . Найдем дробные части остальных элементов: {1} = 0,1 / 8 = 1 / 8, 1 / 8 = 1 / 8 . Ограничение примет вид: 1/ 8x3 + 1/ 8 x4  7 / 8 . Перейдем к равенству: 1/ 8x3 + 1/ 8x4 − x5 = 7 / 8, x5  0 . Умножим обе части уравнения на -1 −1/ 8x3 − 1/ 8x4 + x5 = −7 / 8, x5  0 и добавим новое ограничение в симплексную таблицу 3. Симплексная таблица 4 б.п. 1 x1 x2 x3 x4 x5 x2 3/8 0 1 5 / 8 −3 / 8 0 x1 15 / 8 1 0 1/ 8 1/ 8 0 x5 −7 / 8 0 0 −1 / 8 −1 / 8 1  Z 15 / 4 0 0 1/ 4 1/ 4 0 CO 1/ 2 1/ 2  Полученная таблица является двойственно допустимой. Разрешающий элемент выберем в соответствии с алгоритмом двойственного симплекс-метода. Разрешающая строка – третья, для нее находим симплексные отношения и выбираем минимальное. Переходим к новой таблице: Симплексная таблица 5 б.п. 1 x1 x2 x3 x4 x5 x2 −4 0 1 0 −1 5  x1 1 1 0 0 1 x3 7 0 0 1 1 −8 Z 2 0 0 0 2 CO 1/ 2 −  Симплексная таблица 5 является двойственно допустимой. Разрешающий элемент выберем в соответствии с алгоритмом двойственного симплекс-метода. Разрешающая строка – первая, для нее находим симплексные отношения и выбираем минимальное. Переходим к новой таблице: 78 Симплексная таблица 6 б.п. 1 x1 x2 x3 x4 x5 x4 4 0 −1 0 1 −5 − x1 1 1 0 0 0 1 − x3 3 0 1 1 0 −3  Z 2 0 0 0 0 2  Симплексной таблице 6 соответствует оптимальное целочисленное решение 4 X = (1;0) и значение функции Z max = Z ( X 4 ) = 2 . Но решение может быть не единственным, т.к. в Z-строке имеется 0 в столбце, соответствующем свободной переменной x2. Найдем второй конец отрезка, на котором могут быть целочисленные решения. Разрешающий столбец – второй. Симплексная таблица 7 б.п. 1 x1 x2 x3 x4 x5 x4 7 0 0 −1 1 −8 x1 1 1 0 0 0 1 x2 3 0 1 1 0 −3 Z 2 0 0 0 0 2 Симплексной таблице 7 соответствует оптимальное целочисленное решение 5 X = (1;3) и значение функции Z max = Z ( X 5 ) = 2 . Кроме того, внутри отрезка X 4 X 5 могут быть еще целочисленные точки. Запишем внутреннюю точку от- резка X 4 X 5 : X = (1 −  ) X 4 +  X 5 = (1 −  )(1;0) +  (1;3) = (1;3 ), 0    1 . Очевидно, что при  = 1/ 3 и  = 2 / 3 получаем еще 2 оптимальных целочисленных решения: X 6 = (1;1) и X 7 = (1;2) . Итак, задача имеет 4 оптимальных целочисленных решения: Zmax = Z (1;0) = Z (1;3) = Z (1;1) = Z (1;2) = 2 . 2.2. Транспортная задача Рассмотрим простейшую формулировку транспортной задачи по критерию стоимости. Пусть имеется m пунктов отправления (поставщиков) A1, A2 , , Am , в которых сосредоточены запасы однородного груза в количествах соответственно a1, a2 , , am , и n пунктов назначения (потребителей) B1, B2 , , Bn с потребностями в грузах соответственно b1, b2 , , bn . Известны стоимости перевозок (тарифы) cij (i = 1, , m; j = 1, , n) , связанные с перевозкой единицы груза от поставщика Аi к потребителю Вj. Матрица С размера mn, состоящая из элементов cij , называется матрицей тарифов. Требуется составить план перевозок, который обеспечивал бы при минимальных транспортных издержках удовлетворение спроса всех потребителей за счет распределения всего продукта, сосредоточенного у поставщиков. 79 Обозначим через xij – количество единиц груза, перевозимое от поставщика Ai (i = 1, , m) к поставщику B j ( j = 1, , n) . Матрица X, размера mn, состоящая из элементов, xij называется матрицей перевозок. Информация о транспортной задаче хранится в распределительной таблице. Таблица 5 – Распределительная таблица транспортной задачи Поставщики A1 A2  Am Потребности Потребители B1  B2 c12 c11 x12 x11 c22 c21 x21  cm1 xm1 b1 x22  cm2 xm2 b2 Bn c1n  x1n c2n  x2n   cmn  xmn bn  Запасы a1 a2  am m Общее количество груза, находящееся у поставщиков, равно  ai , а общая i =1 n потребность в грузах равна  bj . j =1 Составим математическую модель задачи. Функция транспортных издержек: Z = c11x11 + c12 x12 + + c1n x1n + + cm1xm1 + cm2 xm2 + + cmn xmn . Условие, что все запасы должны быть вывезены:   x11 + x12 + + x1n = a1, .....................................,   xm1 + xm 2 + + xmn = am . Условие, что все потребности должны быть удовлетворены:   x11 + x21 + + xm1 = b1, .....................................,   x1n + x2n + + xmn = bn . Поскольку отрицательные перевозки не имеют реального смысла для данной задачи (обратные перевозки от пунктов назначения в пункты отправления), будем предполагать, что все переменные неотрицательны: xij  0 (i = 1, , m; j = 1, , n) 80 Получаем (2.4), (2.5) – математическую модель транспортной задачи: m n Z =   cij xij → min, (2.4) i =1 j =1  n   xij = ai , i = 1, , m,  j =1  m (2.5)  xij = b j , j = 1, , n, i =1  xij  0 (i = 1, , m; j = 1, , n).   Система ограничений (2.5) содержит m + n уравнений с m  n неизвестными xij . Как видно, транспортная задача является частным случаем задачи линейного программирования и ее можно решать симплекс-методом. Но ввиду специфики этой задачи хранение информации осуществляется не в симплексных таблицах, а распределительных таблицах 4. В процессе решения задачи осуществляется переход от одной таблицы к другой, содержащий опорный план более близкий к оптимальному. Алгоритм решения транспортной задачи дублирует идею симплекс-метода. Если общая потребность в пунктах назначения равна общим запасам в пунктах отправления, т.е. m n  ai =  b j , i =1 (2.6) j =1 то такая модель транспортной задачи называется закрытой. В противном случае, модель называется открытой. Теорема 1 Условие (2.6) является необходимым и достаточным условием совместности системы (2.5). В случае невыполнения условия (2.6) необходимо осуществить переход к закрытой модели. Следствие 1 Закрытая модель транспортной задачи имеет хотя бы одно опорное решение. Следствие 2 Закрытая модель транспортной задачи имеет оптимальное решение. Алгоритм перехода от открытой к закрытой модели транспортной задачи 1. Если суммарный спрос потребителей больше общего запаса у поставщиков, т.е. выполнено условие m n i =1 j =1  ai   b j , то вводится фиктивный поставщик 81 n m j =1 i =1 Am+1 с запасом груза am +1 =  b j −  ai и нулевыми затратами на перевозку от Am+1 к любому потребителю. В этом случае в распределительной таблице заводится дополнительная строка. 2. Если суммарный спрос потребителей меньше общего запаса у поставщиков, т.е. выполнено условие m n i =1 j =1 m n i =1 j =1  ai   b j , то вводится фиктивный потребитель Bn+1 с потребностью в грузе bn +1 =  ai −  b j и нулевыми затратами на перевозку от любого поставщика к потребителю Bn+1. В этом случае в распределительной таблице заводится дополнительный столбец. Введение фиктивного поставщика или потребителя не влияет на целевую функцию задачи, т.к. затраты на дополнительные перевозки равны 0. Теорема 2 Ранг матрицы системы ограничений (2.5) равен m+n-1. Из теоремы 2 следует, что число базисных переменных при приведении системы к разрешенному виду будет m+n-1. В процессе решения транспортной задачи план перевозок будет располагаться в распределительной таблице 4. При этом, если переменная xij принимает ненулевое значение, то это значение вписывается в соответствующую клетку распределительной таблицы, при этом такая клетка называется занятой. В противном случае, в соответствующую клетку распределительной таблицы не вписывается ничего, такая клетка называется свободной. Занятые клетки соответствуют базисным переменным опорного плана, а свободные клетки – свободным пременным. Нулевые перевозки могут появится в распределительной таблице только в случае, если опорное решение – вырожденное. Из теоремы 2 следует, что в распределительной таблице должна быть m+n-1 занятая клетка. Теорема 3 Если в системе (2.5) значения ai (i = 1, , m), b j ( j = 1, , n) – целые, то любое опорное решение задачи (2.4), (2.5) – целочисленное. Эта теорема имеет очень важное значение, т.к. для обычной задачи линейного программирования для нахождения целочисленных решений используются специальные методы. Решение транспортной задачи состоит из трех этапов: − определение исходного опорного плана; − оценка этого плана; − переход к следующему опорному плану путем замены одной из базисных переменных на свободную. Циклом в распределительной таблице называется замкнутая ломаная линия, вершины которой находятся в клетках таблицы, звенья располагаются вдоль строк и столбцов, причем в любой вершине соединяются 2 звена: горизонтальное и 82 вертикальное. В циклах могут быть пересечения звеньев, при этом точки самопересечения ломаной вершинами не являются. На рис. 16 приведены примеры циклов. Рисунок 16 – Примеры циклов в распределительной таблице Теорема 4 Допустимый план транспортной задачи является опорным тогда и только тогда, когда из занятых клеток для этого плана клеток нельзя образовать цикл. 2.2.1 Нахождение начального опорного плана Построения начального опорного плана является первым этапом решения транспортной задачи. Чем лучше начальный план, тем быстрее сможем найти решение. Но как правило, для нахождения лучшего плана используются более сложные методы. Все методы построения начального опорного плана предполагают последовательное заполнение клеток распределительной таблицы значениями перевозок. Различие в методах объясняется лишь принципами, согласно которым выбирается для заполнения очередная клетка таблицы. Общая суть всех методов построения начального опорного плана: − На каждом шаге заполняют только одну клетку поставкой xij таким образом, чтобы либо удовлетворить все потребности потребителя Bj, либо вывести весь груз от поставщика Ai. В первом случае из дальнейшего рассмотрения исключается j-ый столбец, во втором i-ая строка. − Далее рассматривается новая таблица, в которой исключены из рассмотрения строка или столбец и уменьшились потребности в j-ом столбце и i-ой строке на величину поставки xij и процесс повторяется. − Если для выбора заполненных клеток остались клетки, расположенные в одной строке или столбце, то туда записываются остатки по столбцу соответствующих потребителей или остатки по строке соответствующих поставщиков. − Заполненных клеток должно быть m+n-1. − Если на каком-нибудь шаге метода одновременно удовлетворяются все потребности потребителя Bj и вывозится весь груз от поставщика Ai, то опорный план – вырожденный, и в какую-нибудь клетку j-го столбца и i-ой строки заносят нулевую поставку и из дальнейшего рассмотрения исключают и строку, и столбец. Метод северо-западного угла Это самый простой метод. Заполнение таблицы начинается с верхней левой клетки («северо-западный угол»). На каждом шаге для заполнения выбирается 83 клетка, находящаяся справа или снизу от предыдущей. Начальный опорный план в этом методе обычно получается далеким от оптимального, т.к. не учитывается стоимость перевозок. Пример 1 Найти начальное опорное решения методом северо-западного угла. Потребители Поставщики B1 B4 Запасы B5 8 3 10 4 10 7 9 6 5 7 3 6 4 12 A3 Потребности B3 5 A1 A2 B2 80 50 60 20 50 130 80 50 Решение: Найдем суммарные запасы груза: Суммарные потребности:  ai = 50 + 130 + 80 =260 .  b j = 80 + 50 + 60 + 20 + 50 = 260 .  ai =  b j  Модель транспортной задачи – закрытая. Найдем начальный опорный план. Потребители Поставщики A1 A2 A3 B1 B2 5 B3 8 – 50 10 30 – 50 – Потребности 80,30,0 3 7 7 – 6 6 10 4 – – 50 Запасы B5 10 9 3 – B4 5 – 4 20 50,0 60,10,0 20,0 12 50 50,0 50,0 130,100,50,0 80,70,50,0 260 260 Порядок заполнения клеток: A1B1, x11 = min(50,80) = 50 , уменьшаем запасы A1 и потребности B1 на 50, исключаем из дальнейшего рассмотрения первую строку (прочеркиваем незаполненные клетки). A2 B1, x21 = min(130,30) = 30 , уменьшаем запасы A2 и потребности B1 на 30, исключаем из дальнейшего рассмотрения первый столбец. A2 B2 , x22 = min(100,50) = 50 , уменьшаем запасы A2 и потребности B2 на 50, исключаем из дальнейшего рассмотрения второй столбец. A2 B3, x23 = min(50,60) = 50 , уменьшаем запасы A2 и потребности B3 на 50, исключаем из дальнейшего рассмотрения вторую строку. 84 Далее для выбора остались клетки, расположенные в одной (третьей) строке, записываем туда соответствующие остатки по столбцам. A3B3 , x33 = 10 , уменьшаем запасы A3 и потребности B3 на 10. A2 B4 , x24 = 20 , уменьшаем запасы A2 и потребности B4 на 20. A2 B5 , x25 = 50 , уменьшаем запасы A2 и потребности B5 на 50. В таблице должно быть 3+5-1=7 заполненных клеток. Это условие выполнено. Стоимость перевозок при составленном плане: Z = 50  5 + 30 10 + 50  7 + 50  9 + 10  6 + 20  4 + 50 12 = 2090 .  Метод минимальной стоимости Очевидно, выбор пунктов назначения и отправления целесообразно производить, ориентируясь на тарифы перевозок. На каждом шаге метода минимальной стоимости для заполнения выбирается клетка, имеющая наименьший тариф из тех клеток, которые могут быть заполнены на данном этапе. Если таких клеток несколько, то для заполнения выбирается любая из них. План, полученный этим методом, как правило, является более близким к оптимальному, чем методом северо-западного угла. Пример 2 Найти начальное опорное решение задачи Примера 1 методом минимальной стоимости. Потребители Поставщики A1 A2 A3 Потребности B1 B2 5 – B3 8 – 10 7 7 – – 10 4 – 6 – 6 Запасы B5 10 9 3 50 80,0 3 50 – 80 B4 5 50 4 20 50,0 60,10,0 20,0 12 – 50,0 50,0 130,80,0 80,30,10,0 260 260 Решение: Порядок заполнения клеток: A1B3, x13 = min(50,60) = 50 , уменьшаем запасы A1 и потребности B3 на 50, исключаем из дальнейшего рассмотрения первую строку. A3B2 , x32 = min(80,50) = 50 , уменьшаем запасы A3 и потребности B2 на 50, исключаем из дальнейшего рассмотрения второй столбец. A3B4 , x34 = min(30,20) = 20 , уменьшаем запасы A3 и потребности B4 на 20, исключаем из дальнейшего рассмотрения четвертый столбец. A2 B5 , x25 = min(130,50) = 50 , уменьшаем запасы A2 и потребности 53 на 50, исключаем из дальнейшего рассмотрения пятый столбец. 85 A3B3 , x33 = min(10,10) = 10 , уменьшаем запасы A3 и потребности B3 на 10, при этом одновременно удовлетворяются потребности и вывозятся все запасы, поэтому запишем нулевую поставку в свободную клетку с наименьшим тарифом из клеток 3-ей строки и 3-го столбца – A3B1 , и исключаем из дальнейшего рассмотрения третий столбец. Для выбора осталась одна клетка. A2 B1, x21 = 80 , уменьшаем запасы A2 и потребности B4 на 20. В таблице должно быть 7 заполненных клеток. Это условие выполнено. Полученный опорный план – вырожденный Стоимость перевозок при составленном плане: Z = 50  3 + 80 10 + 50  5 + 0  7 + 50  3 + 10  6 + 20  4 = 1490 . Стоимость перевозок существенно уменьшилась по сравнению с планом, найденным методом северо-западного угла.  Метод Фогеля Для каждой строки и каждого столбца составляются разности между двумя минимальными тарифами. Среди полученных разностей выбирают максимальную, а затем в соответствующей строке или столбце выбирают для заполнения клетку с минимальным тарифом. Если минимальный тариф одинаков для нескольких клеток строки или столбца, то для заполнения выбирают ту клетку, которая соответствует наибольшей разности минимальных тарифов строки или столбца. План, полученный этим методом, близок к оптимальному (обычно – оптимальный). Метод Фогеля используется при незначительном количестве поставщиков и потребителей. Пример 3 Найти начальное опорное решение задачи Примера 1 методом Фогеля. Решение: Потребители Поставщики A1 A2 A3 Потребности B1 B2 5 – B3 8 – 7 80,0 2 2 3 3 6 4 – 3 3 3 3 12 – 50,0 60,10,0 20,0 4 – – – 5 50 6 10 4 – 20 3 50 10 9 – Запасы B5 – 7 – 20 3 50 10 60 B4 2 2 2 2 Порядок заполнения клеток: 86 50,0 1 1 7 – 50,0 1 1 – – 130,80,60,0 1 1 1 3 80,30,20,0 1 2 2 2 260 260 A3B2 , x32 = min(80,50) = 50 , уменьшаем запасы A3 и потребности B2 на 50, исключаем из дальнейшего рассмотрения первый столбец. A1B3, x13 = min(50,60) = 50 , уменьшаем запасы A1 и потребности B3 на 50, исключаем из дальнейшего рассмотрения первую строку. A2 B5 , x25 = min(130,50) = 50 , уменьшаем запасы A2 и потребности B5 на 50, исключаем из дальнейшего рассмотрения пятый столбец. A3B3, x33 = min(30,10) = 10 , уменьшаем запасы A3 и потребности B3 на 10, исключаем из дальнейшего рассмотрения третий столбец. A2 B4 , x24 = min(80,20) = 20 , уменьшаем запасы A2 и потребности B4 на 20, исключаем из рассмотрения четвертый столбец. Далее для выбора остались клетки, расположенные в одном (первом) столбце, записываем туда остатки по соответствующим строкам. A2 B1, x21 = 60 , уменьшаем запасы A2 и потребности B1 на 60. A3B1, x31 = 20 , уменьшаем запасы A3 и потребности B2 на 20. В таблице должно быть 7 заполненных клеток. Это условие выполнено. Полученный опорный план – вырожденный Стоимость перевозок при составленном плане: Z = 50  3 + 60 10 + 20  6 + 50  5 + 20  7 + 50  3 + 10  6 = 1470 . Стоимость перевозок уменьшилась по сравнению с планом, найденным методом минимальной стоимости.  2.2.2 Определение оптимального плана методом потенциалов Общий принцип определения оптимального плана транспортной задачи методом потенциалов аналогичен принципу решения задачи линейного программирования симплекс-методом. Сначала находят начальный опорный план (методом северо-западного угла, минимальной стоимости или Фогеля), а затем его последовательно улучшают до получения оптимального. Составим двойственную задачу к задаче (2.4), (2.5), при этом в двойственной задаче будем использовать переменные ui (i = 1, , m) и v j ( j = 1, , n) , которые назовем соответственно потенциалами поставщиков и потенциалами потребителей. Двойственная задача будет иметь m+n переменных и mn ограничений. m n W =  aiui +  b j v j → max, i =1 (2.7) j =1 (2.8) ui + v j  cij (i = 1, , m; j = 1, , n). Заметим, что в двойственной задаче на переменные не наложено условие неотрицательности, т.к. в исходной задаче все ограничения были равенствами. Из теоремы равновесия следует следующая теорема. Теорема 5 (необходимое условие оптимальности опорного плана) Если план перевозок задачи (2.4), (2.5) – оптимален, то ему соответствует система из m+n чисел ui и v j , удовлетворяющая условиям: 87 ui + v j = cij для xij  0, ui + v j  cij для xij = 0. Сформулируем алгоритм проверки опорного плана на оптимальность: 1. Для каждой базисной переменной xij найденного опорного плана составить систему уравнений ui + v j = cij (2.9) и найти ее решение. Будет получена система m+n-1 уравнений с m+n неизвестными. Поскольку в системе уравнений на одно меньше, чем неизвестных, и уравнения линейно независимы, то система имеет бесконечно много решений. Чтобы найти ее частное решение, необходимо одной из переменных придать произвольное значение (обычно полагают u1 = 0 ). Для удобства найденные потенциалы записывают в распределительную таблицу в дополнительные столбцы и строки справа и снизу таблицы. В силу специфики системы уравнений значения переменных находятся последовательно одно за другим по занятым клеткам (если известен для клетки известен один из потенциалов, то второй находим из уравнения (2.9)). 2. Для каждой свободной клетки определяют балансы sij по формуле: (2.10) sij = cij − (ui + v j ). Балансы заносят в нижний правый угол свободных клеток. Если среди чисел sij нет отрицательных, то найденный опорный план является оптимальным. В противном случае план не оптимален, и можно улучшить решение, заполнив одну из клеток с отрицательным балансом. 2.2.3 Переход к новому опорному плану, более близкому к оптимальному Как было отмечено выше, неоптимальный опорный план можно улучшить, выбрав для заполнения клетку с отрицательным балансом. Если таких клеток несколько, то для заполнения выбирают клетку с максимальным по модулю отрицательным балансом. Эта клетка определяет переменную, вводимую в базис. Т.к. выбранная клетка присоединяется к занятым, то необходимо освободить одну из занятых клеток. Вспомним определение цикла распределительной таблицы и дадим ряд определений и сформулируем теоремы. Теорема 6 Число вершин в любом цикле – четно. Означенным циклом в распределительной таблице называется цикл, вершинам которого приписаны знаки «+» и «-», чередуясь. Очевидно, что количество «+» равно количеству «-» в цикле и их количество в строке или столбце совпадает. Сдвигом по означенному циклу в распределительной таблице на величину M называется увеличение перевозок в вершинах со знаком «+» и уменьшение перевозок в вершинах со знаком «-» на величину М. Теорема 7 Сдвиг по означенному циклу преобразует допустимое решение транспортной задачи в новое допустимое решение. 88 Циклом пересчета свободной клетки называется означенный цикл, одна из вершин которого находится в выбранной клетке, остальные – в занятых, причем свободной клетке приписан знак «+». На основании теоремы 6 видно, что не имеет значения, в какую сторону от свободной клетки начинать расставлять знаки. Теорема 8 В распределительной таблице для любой свободной летки существует и притом единственный цикл пересчета. Можно сформулировать алгоритм перехода к новому опорному плану, не увеличивающему значение целевой функции: 1. Найти свободную клетку с наибольшим по модулю отрицательным балансом. Если таких клеток несколько, выбирается любая. 2. Для выбранной свободной клетки строят цикл пересчета и осуществляют сдвиг на величину М = min xij , где xij – поставки, помеченные в клетках цикла знаком «-». При этом одна из клеток цикла со знаком «-» должна освободиться. Если могут освободиться несколько клеток, то освобождается одна, а в остальные заносятся нулевые поставки. На рис. 17 изображен сдвиг по циклу пересчета. На рис. 17(а) изображен цикл до сдвига, на рис. 17(б) – после. Перемещаем min(10;15;40) = 10 единиц груза. Рисунок 17 – Пример сдвига по циклу пересчета 2.2.4 Метод потенциалов На основании вышеизложенного следует, что процесс нахождения оптимального решения транспортной задачи методом потенциалов состоит из следующих этапов: 1. Найти начальный опорный план одним из методов: северо-западного угла, минимальной стоимости, Фогеля. При этом число занятых клеток должно быть m+n-1. 2. По занятым клеткам найти потенциалы ui , v j , решив систему (2.9). 3. Для всех свободных клеток найти балансы sij по формуле (2.10). Если среди балансов свободных клеток нет отрицательных, то оптимальное решение найдено. В противном случае перейти к п.4. 4. Среди отрицательных балансов выбрать максимальный по модулю, построить для клетки, которой он соответствует, цикл пересчета, и осуществить сдвиг по циклу пересчета. Перейти на п.2. Замечания: 1. Если в опорном решении имеются балансы свободных клеток, равные 0, то это означает, что решение с такими транспортными затратами не единственно, 89 можно загрузив такую клетку (осуществив сдвиг по циклу пересчета), получить новое решение с такими же транспортными затратами. 2. Если в процессе решения транспортной задачи получен вырожденный опорный план, то может произойти зацикливание. Чтобы избежать этого, необходимо соответствующие нулевые элементы опорного плана заменить сколь угодно малым положительным числом  и решать задачу как невырожденную. В оптимальном плане такой задачи считать  равным нулю. Пример 4 Найти оптимальное решение транспортной задачи из Примера 1. Решение: Будем использовать начальный опорный план, найденный методом минимальной стоимости в Примере 2. Потребители Поставщики B1 A1 A2 A3 80 – + B2 B3 5 1 10 8 8 7 7 1 3 50 B4 3 50 9 6 10 + B5 10 9 6 – -1 4 20 Запасы ui 50 130 6 80 3 4 5 5 50 12 10 Потребности 80 50 60 20 50 vj 4 3 1 9 260 260 Найдем потенциалы из системы (2.9) и запишем их значения справа и снизу в таблицу. Саму систему выписывать не будем. Будем считать, что u1 = 0 , в распределительной таблице будем находить клетки, для которых известен один из потенциалов, и из уравнения (2.9) находить второй потенциал и далее рассматривать заполненные клетки, расположенные в строке или столбце для найденного потенциала. Порядок вычисления потенциалов: u1 = 0 , в первой строке есть занятая клетка A1B3 , для нее u1 + v3 = 3 , откуда v3 = 3 . В третьем столбце имеется занятая клетка A3B3 , для нее u3 + v3 = 6 , откуда u3 = 3 . Для занятой клетки A3B1 получаем уравнение u3 + v1 = 7 , откуда v1 = 4 . Для занятой клетки A3B2 получаем уравнение u3 + v2 = 3 , откуда v2 = 0 . Для занятой клетки A3B4 получаем уравнение u3 + v4 = 4 , откуда v4 = 1. Для занятой клетки A2 B1 получаем уравнение u2 + v1 = 10 , откуда u2 = 6 . Для занятой клетки A2 B5 получаем уравнение u2 + v5 = 5 , откуда v5 = −1 . Найдем балансы свободных клеток по формуле (2.10) и подпишем их в правом нижнем углу свободных клеток. 90 s11 = 5 − (0 + 4) = 1 s12 = 8 − (0 + 0) = 8 s14 = 10 − (0 + 1) = 9 s15 = 4 − (0 − 1) = 5 s22 = 7 − (6 + 0) = 1 s23 = 9 − (6 + 3) = 0 s24 = 6 − (6 + 1) = −1  0 s35 = 12 − (3 − 1) = 10 Получили один отрицательный баланс s24 , для улучшения плана построим цикл пересчета для клетки A2 B4 . Переместим по циклу пересчета min(80;20) = 0 груза. Новая таблица: Потребители Поставщики B1 A1 A2 A3 B2 B3 5 8 1 10 8 7 1 3 60 7 20 50 B4 3 50 9 6 B5 10 4 10 6 5 5 20 10 Запасы ui 50 130 6 80 3 50 4 12 1 10 Потребности 80 50 60 20 50 vj 4 3 -1 260 260 Таблице соответствует стоимость перевозок Z = 50  3 + 60 10 + 20  6 + 50  5 + 20  7 + 50  3 + 10  6 = 1470 . Найдем потенциалы по заполненным клеткам, затем балансы – для свободных клеток. Отрицательных балансов нет, следовательно, план оптимален. Наличие нулевого баланса свидетельствует о том, что оптимальный план не единственен. Новый оптимальный план можно найти, осуществив сдвиг по циклу пересчета для клетки A2 B3 . 2.3. Задачи теории игр 2.3.1. Основные понятия При решении ряда практических задач в области экономики, политики и военного дела приходится принимать решения в ситуациях, в которых сталкиваются интересы двух или более сторон, которые преследуют противоположные цели, причём результат любого действия каждой из сторон зависит от того, какое действие предпримет противник. Такие ситуации называются конфликтными. Примеры конфликтных ситуаций: − любая ситуация в ходе военных действий; − планирование военных операций; − конкурентная борьба в экономике; 91 − выборы в парламент; − салонные игры (например, шашки, шахматы, карты). Теория игр – математическая теория конфликтных ситуаций, ее цель - выработать рекомендации по рациональному образу действий участников конфликтной ситуации. При этом не учитываются элементы риска, просчеты и ошибки игроков. Для математического анализа конфликтной ситуации отбрасывают второстепенные факты и строят формализованную модель конфликтной ситуации – игру. Конфликтные стороны называются игроками. Игра ведется по определенным правилам. Правила игры устанавливают возможные действия игроков, объём сведений каждой стороны о поведении другой, результат, к которому приводит каждая совокупность ходов. Правила определяют так же конец игры, когда больше ходов делать не разрешается. Каждый игрок делает ход – выбор одного из вариантов действий, предусмотренных правилами игры. Ходы бывают личные и случайные. Личный ход – сознательный выбор игроком допустимого действия. Случайный ход – выбор допустимого действия с помощью механизма случайного выбора (например, подбрасывания монеты) и его осуществление. Будем считать, что в конце игры любой игрок получает выигрыш. Можно провести классификацию игр: − По числу игроков: • одного лица (например, пасьянс); • двух лиц – парная игра (например, шахматы); • n лиц – множественная (они делятся на коалиационные, когда несколько лиц могут заключить союз, и бескоалиационные). − По количеству и характеру ходов: • с полной информацией (например, шахматы); • с неполной информацией (например, карты. Большинство игр – игры с неполной информацией). − По количеству ходов: • конечные (у каждого игрока имеется конечное количество ходов); • бесконечные (например, дуэль). − По выигрышу: • с нулевой суммой (парная игра, в которой выигрыш одной стороны равен проигрышу другой); • с ненулевой суммой (например, экономические процессы создают или уничтожают богатство). Стратегией игрока называется совокупность правил, определяющая выбор варианта действий при каждом ходе игрока в зависимости от ситуации, сложившийся в игре. Игра m  n – конечная парная игра, в которой у одного игрока имеется m стратегий, а у второго n стратегий. Далее будем рассматривать парные игры m  n с нулевой суммой. Пусть имеется игра двух игроков A и B. Пусть у игрока A имеется m стратегий A1, A1,…, Am, а у игрока B имеется n стратегий B1, B1,…, Bn. Пусть aij – выигрыш (положительный или отрицательный) игрока A при выборе 92 им стратегии Ai и игроком B стратегии Bj. Если ходы случайные, то aij – математическое ожидание выигрыша игрока A. Платёжной матрицей или, матрицей игры называется матрица следующего вида: B1 B2 … Bn a1n  A1  a11 a12  A 2 a21 a22 a2 n  . … A m  am1 am 2 amn  Пример 1 (Игра "Поиск") Игрок A прячется в одном из двух убежищ, а игрок B его ищет. Правила игры: если игрок B находит A, то A платит ему 1 рубль, в противном случае игрок B платит A 1 рубль. Составить платежную матрицу игры. Решение: Стратегии игроков: игрок A: A1 – спрятаться в убежище № 1, A2 – спрятаться в убежище № 2; игрок B: B1 – искать в убежище № 1, B2 – искать в убежище № 2; Платежная матрица игры: −1 1 . 1 −1 Это игра с неполной информацией. Если игра проводится один раз, то бессмысленно говорить о разумных стратегиях. Любой игрок с одинаковым основанием может применять любую стратегию. Но если игра многократно повторяется, то положение меняется. Если игрок будет придерживаться одной стратегии или чередования стратегий в определённой последовательности, то противник догадается об этом и начнёт выигрывать. Поэтому от верного проигрыша игроков может спасти только случайное чередование стратегий. Например, игрок перед своим ходом подбрасывает монету и, если выпала "решка", то игрок выбирает первую стратегию, а если "орёл", то вторую. Оптимальной стратегией называется стратегия, которая при многократном повторении игры обеспечивает игроку максимально возможный средний выигрыш. ( ) 2.3.2. Нижняя и верхняя цены игры. Принцип минимакса Дополним матрицу игры столбцом с минимальными значениями в строках и строкой с максимальными значениями в столбцах: B1 B2 A1  a11 a12 A2  a21 a22  Am  am1 am 2 1 2 Bn a1n  1 a2 n   2  . amn  m n 93 Величина  = max  i = max 1  i m min aij называется нижней ценой игры 1 i  m 1 j  n или максимином). Стратегия игрока A, соответствующая максимину , называется максиминной стратегией игрока A. Если игрок A придерживается своей максиминной стратегии, то ему гарантирован выигрыш не меньше , то есть  – это тот гарантированный минимальный выигрыш, который может обеспечить себе игрок A, придерживаясь наиболее осторожной стратегии. Величина  = min  j = min max aij называется верхней ценой игры 1 j  n 1 j  n 1 i m или минимаксом. Стратегия игрока B, соответствующая минимаксу , называется минимаксной стратегией игрока B. Теорема 9 Для игры двух лиц с нулевой суммой 𝛼 ≤ 𝛽. Если игрок B придерживается своей минимаксной стратегии, то ему гарантирован проигрыш не больше . Положение, при котором игроки используют свои минимаксные стратегии неустойчиво и, может быть, нарушено поступившими сведениями о выбранной стратегии другого игрока. Если оба игрока разумны, то игрок A будет выбирать свою максиминную стратегию, а игрок B – минимаксную. Пример 2 Найти нижнюю и верхнюю цены игры из Примера 1. Решение: −1 1 −1 1 −1 −1 . 1 1 Решение: Справа от матрицы записаны  i – минимальные элементы строки, а внизу  j – максимальные элементы столбца. Тогда нижняя цена игры  = max(−1; −1) = −1, верхняя цена игры  = min(1;1) = 1. Таким образом, если игрок A будет делать личные ходы, а его противник B об этом узнает, то игрок A получит минимальный выигрыш -1, то есть он будет в проигрыше, а игрок B получит минимальный проигрыш 1, то есть он будет выигрывать. Аналогичное утверждение справедливо и для игрока B.  Игра называется игрой с седловой точкой, если нижняя и верхняя цена игры совпадают. В этом случае, величина v = = называется чистой ценой игры. Седловой точке соответствует пара минимаксных стратегий, которые называются оптимальными, а их совокупность называется решением игры. В игре с седловой точкой любому игроку выгодно придерживаться оптимальных стратегий (любое отклонение от оптимальной стратегии ухудшает положение игрока). Чистая цена игры в игре с седловой точкой является значением выигрыша, которое в игре разумных противников игрок A не может увеличить, а игрок B уменьшить. При ( ) 94 разумном поведении игроков исход игры с седловой точкой заранее предопределен. Играть в такие игры имеет смысл, если противник не знает оптимальной стратегии. Пример 3 Двое играют в следующую игру: одновременно выбрасывают 1, 2 или 3 пальца. Выигрывает тот, у кого больше пальцев (выигрыш равен разности выброшенных пальцев). Если оба выбросили одинаковое количество пальцев, то никто не выиграл. Решить игру. Решение: Платежная матрица:  0 1 −2  −2  1 0 −1 1 .  2 1 0 0   2 1 0 Тогда нижняя цена игры  = max(−2;1;0) = 0 , верхняя цена игры  = min(2;1;0) = 0 . Так как нижняя  и верхняя  цены игры совпадают, то игра имеет седловую точку, поэтому игра решается в чистых стратегиях с чистой ценой игры v = 0. Оптимальные стратегии сторон: оба игрока выбрасывают по 3 пальца. При этом никто не выигрывает.  2.3.3. Решение игр в смешанных стратегиях Если игра не имеет седловой точки, то игрок A гарантирует себе выигрыш, равный нижней цене игры, которая меньше верхней цены игры. Конечно, игрок А хочет увеличить выигрыш, а В – уменьшить проигрыш. Если игроки будет чередовать свои стратегии случайным образом, то в некоторых случаях А получит бόльший выигрыш, чем нижняя цена игры. Смешанной стратегией игрока A называется набор вероятностей p = ( p1 , p2 , , pm ) ( p1 + p2 + + pm = 1 ), с которыми он чередует свои стратегии A1, A1,…, Am. Аналогично определяется смешанная стратегия игрока B как набор вероятностей q = (q1 , q2 , , qn ) ( q1 + q2 + + qn = 1 ). Поскольку игроки могут выбирать свои ходы случайно и независимо друг от друга, то случайной становится и величина выигрыша. В этом случае выигрыш А определяется как маm n тематическое ожидание выигрыша M ( p, q) =  aij pi q j . i =1 j =1 Сформулируем основную теорему теории игр. Теорема 10 (Фон-Неймана) Любая конечная игра имеет по крайней мере одно решение, возможно в смешанных стратегиях. Следствие Для любой конечной игры mn двух лиц существуют смешанные * * стратегии p = ( p1* , p2* , , pm* ) игрока А и q = (q1* , q2* , 95 , qn* ) игрока В такие, что для любых других стратегий p = ( p1 , p2 , , pm ) и q = (q1 , q2 , , qn ) выполняется * * * * неравенство M ( p, q )  M ( p , q )  M ( p , q) . * Смысл следствия: если игрок А отступает от стратегии p , то его выигрыш * уменьшается; если игрок В отступает от стратегии q , то его проигрыш увели* * чивается. Таким образом, смешанные стратегии ( p , q ) образуют седловую точку во множестве смешанных стратегий, игрокам не выгодно отступать от стратегий, соответствующих этой точке. * * Если ( p , q ) пара смешанных стратегий, образующих седловую точку, то веm n личина v =  aij pi*q*j называется ценой игры. i =1 j =1 Теорема 11 Если один из игроков применяет оптимальную смешанную стратегию, то его выигрыш будет не меньше цены игры вне зависимости от применения вторым игроком своих стратегий, т.е. выполняются соотношения: m a i =1 n ij pi*  v, j = 1, a q j =1 ij * j , n, (2.11)  v, i = 1, , m. (2.12) В дальнейшем эти соотношения будут использоваться для решения игры. Теорема 12 (О цене игры) Цена игры удовлетворяет неравенству      . В общем случае задача решения игры, если матрица игры не содержит седловой точки, тем сложней, чем больше ее размерность. Поэтому в теории игр применяют приемы, позволяющие сократить размерность матрицы. Стратегии называются дублирующими, если в платежной матрице им соответствуют одинаковые строки (столбцы). Если все элементы i-ой строки платежной матрицы меньше соответствующих элементов k-ой строки, то стратегия Ai называется доминирующей для игрока A. Если все элементы j-го столбца платежной матрицы больше соответствующих элементов r-го столбца, то стратегия B j называется доминирующей для игрока B. Теорема 13 Если в платежной матрице удалить дублирующие и доминирующие строки и столбцы, то цена игры и оптимальные стратегии не изменятся. Пример 4  1 7 2 7 Упростить платежную матрицу  6 2 7 2  .  5 1 6 1   96 Решение: Для платежной матрицы стратегии A3 и B3 являются доминирующими, стратегия B5 – дублирующей, их можно удалить. Получим матрицу 1 7 . 6 2 ( ) 2.3.4. Решение матричных игр 22 в смешанных стратегиях Игра 22 – наиболее простой случай конечных игр. Рассмотрим игру, не имеa a ющую седловой точки, с платежной матрицей  11 12  .  a21 a22  Пусть p = ( p1, p2 ) и q = (q1 , q2 ) – смешанные стратегии игроков. Найдем оптимальные стратегии. Если игрок В придерживается стратегии В1, то средний выигрыш А составит a11 p1 + a21 p2 . Если игрок В придерживается стратегии В2, то средний выигрыш А составит a12 p1 + a22 p2 . По свойству оптимальных смешанных стратегий эти средние выигрыши должны совпадать и быть равными цене игры. Получаем систему: a11 p1 + a21 p2 = a12 p1 + a22 p2 = v, p1 + p2 = 1. Решаем систему: a11 p1 + a21 (1 − p1 ) = a12 p1 + a22 (1 − p1 ), p1 (a11 − a21 ) + a21 = p1 (a12 − a22 ) + a22 . Оптимальные стратегии игрока A: a22 − a21 p1* = , a11 − a21 − a12 + a22 a22 − a21 a11 − a12 p2* = 1 − p1* = 1 − = . a11 − a21 − a12 + a22 a11 − a21 − a12 + a22 Аналогично, составляем систему для игрока В: a11q1 + a12 q2 = a21q1 + a22 q2 = v, q1 + q2 = 1. Решая систему, находим оптимальные стратегии игрока B: a22 − a12 q1* = , a11 − a21 − a12 + a22 a11 − a21 q2* = . a11 − a21 − a12 + a22 Цена игры a11a22 − a12 a21 v= . a11 − a21 − a12 + a22 Решение игры 22 можно найти так же геометрически (рис.16). Для этого на оси абсцисс отложим отрезок А1А2 длиной 1. Левый конец отрезка соответствует   97 стратегии А1, правый – стратегии А2. Промежуточные точки отрезка соответствуют смешанным стратегиям p = ( p1, p2 ) первого игрока. Причем расстояние от промежуточной точки отрезка до правого края – это вероятность p2 стратегии А2, а расстояние до левого края – вероятность p1 стратегии А1. Через концы отрезка А1А2 проведем прямые, перпендикулярные оси абсцисс, на них будем откладывать выигрыши при стратегиях А1 и А2 соответственно. Если игрок В применяет стратегию В1, то выигрыши первого игрока при стратегии А1 составляет a11, а при стратегии А2 составляет a21. Отложим эти выигрыши на перпендикулярах и соединим полученные точки прямой B1B1 . Если игрок А применяет смешанную стратегию, то его выигрышу соответствует некоторая точка на отрезке B1B1 . Аналогично строим отрезок B2 B2 , соответствующий применению вторым игроком стратегии В2. В соответствии с принципом максимина ломаная B1 NB1 – нижняя граница выигрыша, получаемого игроком А. Точка N, в которой выигрыш максимален, определяет цену игры и ее решение. Для нахождения оптимальной стратегии игрока А достаточно составить уравнения прямых и найти точку пересечения. На рис. 18 приведено геометрическое решение игры 22. Рисунок 18 – Геометрическое решение игры 22 Аналогично можно рассмотреть задачу минимизации верхней границы выигрыша для игрока В. Используя геометрическую интерпретацию, можно найти решение игр, заданных матрицей 2  n. Каждой из n стратегий игрока В будет соответствовать прямая. Точка N, лежащая на нижней границе и дающая наибольшую величину выигрыша, определяет цену игры и ее решение. При этом определяются активные стратегии игрока В (соответствующие им прямые пересекаются в точке N). Для активных стратегий вероятности не равны 0, остальные стратегии игроком В не используются (их вероятности равны 0). 98 Аналогично можно решить игру с матрицей m  2. В этом случае строят верхнюю границу выигрыша и на ней определяют минимум. Пример 5 2 5 Решить аналитически игру, заданную платежной матрицей A =  . 6 4   Решение: Найдем нижнюю и верхнюю цену игры.  2 52  6 4  4.   6 5  = max(2;4) = 4,  = min(6;5) = 5 . , следовательно, игра не имеет седловой точки, решение будет в смешанных стратегиях. * Найдем аналитически оптимальную стратегию p = ( p1* , p2* ) игрока А и соответствующую цену игры v. * Так как p оптимальная стратегия, то она должна гарантировать средний выигрыш игроку А, равный цене игры, при любом поведении игрока В: для стратегии В1: 2 p1 + 6 p2 = v , для стратегии В2: 5 p1 + 4 p2 =  . С учетом того, что сумма вероятностей смешанной стратегии равна 1, получаем систему уравнений: 2 p1 + 6 p2 = v,  5 p1 + 4 p2 = v,  p + p = 1.  1 2 2 Вычтем из первого уравнения второе: −3 p1 + 2 p2 = 0 или p1 = p2 . Значит: 3 2  p = p2 , 1  3   p1 + p2 = 1, 2 p + 6 p = v. 2  1  2 5 3 p2 + p2 = 1  p2 = 1  p2 = . 3 3 5 3 2 p1 = 1 − p2 = 1 − = . 5 5 2 3 22 v = 2 + 6 = . 5 5 5 99 * 22  2 3 Итак: p =  ;  , v = . 5 5 5   Аналогично получаем систему для нахождения смешанной стратегии игрока В. 2q1 + 5q2 = v,  6q1 + 4q2 = v, q + q = 1.  1 2 Вычтем из первого уравнения второе: −4q1 + q2 = 0. Откуда, q2 = 4q1, подставим в первое уравнение. q2 = 4q1,  q1 + q2 = 1, 2q + 5q = v.  1 2 1 Откуда, q1 + 4q1 = 1  5q1 = 1  q1 = . 5 1 4 22 1 4 Тогда, q2 = 1 − q1 = 1 − = , v = 2  + 5  = . 5 5 5 5 5 * 22 1 4 Итак: q =  ;  , v = . 5 5 5 * 22  2 3 * 1 4 Ответ: p =  ;  , q =  ;  , v = . 5 5 5 5 5     Пример 6 ( ) Решить графически игру, заданную платежной матрицей 2 3 11 . 7 5 2 Решение: Проверим наличие у игры седловой точки, найдем нижнюю и верхнюю цену игры. 2 3 11 2. 7 5 2 2 7 5 11  = max(2;2) = 2,  = min(7;5;11) = 5 . , следовательно, игра не имеет седловой точки, решение будет в смешанных стратегиях. Матрица игры имеет размер 23, поэтому решение игры будем искать для игрока А (рис. 17). Отложим отрезок единичной длины А1А2, каждой точке которого поставим в соответствие некоторую смешанную стратегию первого игрока – (p1, p2). В частности, точке А1 соответствует стратегия А1, точке А2 – стратегия А2. В точках А1 и А2 восстановим перпендикуляр и на полученных прямых будем откладывать выигрыши игрока А при соответствующих стратегиях и строить ( ) 100 прямые, соответствующие стратегиям игрока В. На рис. 19 приведено графическое решение задачи. Рисунок 19 – Геометрическое решение игры Примера 6 В соответствии с принципом минимакса ломаная B1MNB3 – нижняя граница выигрыша, получаемого игроком А. Точка N, в которой выигрыш максимален, определяет цену игры и ее решение. Для нахождения оптимальной стратегии игрока А достаточно составить уравнения прямых и найти точку пересечения прямых B2 B2 и B3 B3 . Уравнение прямой, проходящей через 2 точки (x1,y1) и (x2,y2) имеет вид x − x1 y − y1 = . Прямая B2 B2 проходит через точки (0,3) и (1,5), следовательно, x2 − x1 y2 − y1 x−0 y −3 ее уравнение или −2 x + y = 3 . Прямая B3 B3 проходит через точки = 1− 0 5 − 3 x − 0 y − 11 (0,11) и (1,2), следовательно, ее уравнение или 9 x + y = 11 . Для = 1 − 0 2 − 11 нахождения точки пересечения прямых B2 B2 и B3 B3 решим систему: −2 x + y = 3, 9 x + y = 11. Вычтем из первого уравнения второе, получаем 8 −11x = −8  x = . 11 8 49 y = 3 + 2x = 3 + 2  = . 11 11 8 8 3 49  8 49  Точка N  ;  , следовательно, p2 = , p1 = 1 − = , v = . 11 11 11 11 11 11   * 49 3 8 Таким образом, p =  ;  , v = . 11  11 11   101 Из рис. 19 видно, что стратегия В1 не входит в оптимальную смешанную стратегию, поэтому q3=0, и мы можем найти оптимальную смешанную стратегию, удалив из платежной матрицы первый столбец. Получаем матрицу 3 11 , при 5 2 этом столбцы ее соответствуют активным стратегиям В2, В3. ( ) * Так как q – оптимальная, то она должна гарантировать средний выигрыш игроку В, равный цене игры, при любом поведении игрока А: для стратегии А1: 3q2 + 11q3 = v , для стратегии А2: 5q2 + 2q3 = v . С учетом того, что сумма вероятностей смешанной стратегии равна 1, цена 49 игры v = получаем систему уравнений: 11 49  3q2 + 11q3 = 11 ,  49 5q2 + 2q3 = , q + q = 1. 11 3  2  Вычтем из первого уравнения второе: −2q2 + 9q3 = 0 . −2q2 + 9q3 = 0, q2 + q3 = 1. Решая систему, находим 9  q = , 2  11  2  q3 = .  11 *  9 2 Оптимальная смешанная стратегия для игрока В: q =  0; ;  .  11 11  * 49 3 8 *  9 2 Ответ: p =  ;  , q =  0; ;  , v = . 11  11 11   11 11   Пример 7 6 5 Решить графически игру, заданную платежной матрицей  4 6  . 2 7 1 8    Решение: Проверим наличие у игры седловой точки, найдем нижнюю и верхнюю цену игры. 102 6 5 5  4 6  4.  2 72 1 8  1   6 8  = max(5;4;2;1) = 5,  = min(6;8) = 6 . , следовательно, игра не имеет седловой точки, решение будет в смешанных стратегиях. Матрица игры имеет размер 42, поэтому решение игры будем искать для игрока В. Аналогично Примеру 6 по горизонтальной оси отложим отрезок единичной длины В1В2, каждой точке которого поставим в соответствие некоторую смешанную стратегию второго игрока – (q1, q2) (рис. 20). В частности, точке В1 соответствует стратегия В1, точке В2 – стратегия В2. В точках В1 и В2 восстановим перпендикуляр и на полученных прямых будем откладывать выигрыши игрока А при соответствующих стратегиях и строить прямые, соответствующие стратегиям игрока А. Рисунок 20 – Геометрическое решение игры Примера 7 В соответствии с принципом минимакса ломаная A1 NA4 – верхняя граница выигрыша, получаемого игроком А. Точка N, в которой выигрыш минимален, определяет цену игры и ее решение. Для нахождения оптимальной стратегии игрока В достаточно составить уравнения прямых и найти точку пересечения прямых A1 A1 и A4 A4 . Уравнение прямой, проходящей через 2 точки (x1, y1), и (x2, y2) имеет вид x − x1 y − y1 = . Прямая A1 A1 проходит через точки (0,6) и (1,5), следовательно, x2 − x1 y2 − y1 x−0 y−6 ее уравнение или x + y = 6 . Прямая A4 A4 проходит через точки (0,1) = 1− 0 5 − 6 x − 0 y −1 и (1,8), следовательно, ее уравнение или −7 x + y = 1 . Для нахожде= 1− 0 8 −1 ния точки пересечения прямых A1 A1 и A4 A4 решим систему: 103 −x7+xy+=y6,= 1. Вычтем из первого уравнения второе, получаем 5 8x = 5  x = . 8 5 43 y =6− x =6− = . 8 8 5 5 3 43  5 43  Точка N  ;  , следовательно, q2 = , q1 = 1 − = , v = . 8 8 8 8 8 8  * 43 5 3 Таким образом, q =  ;  , v = . 8 8 8 Из рис. 19 видно, что стратегии А2 и А3 не входят в оптимальную смешанную стратегию, поэтому p2=0 и p3=0, и мы можем найти оптимальную смешанную стратегию, удалив из платежной матрицы вторую и третью строку. Получаем матрицу 6 5 , при этом строки ее соответствуют активным стратегиям А1, А4. 1 8 ( ) * Так как p – оптимальная стратегия, то она должна гарантировать средний выигрыш игроку А, равный цене игры, при любом поведении игрока В: для стратегии В1: 6 p1 + p4 = v , для стратегии В2: 5 p1 + 8 p4 = v . С учетом того, что сумма вероятностей смешанной стратегии равна 1, цена 43 игры v = получаем систему уравнений: 8 43  6 p + p = , 1 4  8  43 5 p1 + 8 p4 = ,  p + p = 1. 8 4  1  Вычтем из первого уравнения второе: p1 − 7 p4 = 0 . p1 − 7 p4 = 0, p1 + p4 = 1. Решая систему, находим 7  p = , 1  8  1  p4 = . 8  * 1 7 Оптимальная смешанная стратегия для игрока А p =  ;0;0;  . 8 8  104 * 1 * 5 3 43 7 Ответ: p =  ;0;0;  , q =  ;  , v = . 8 8 8 8 8 Таким образом, имеем следующий алгоритм графического решения простейших матричных игр 2n (или m2): 1. Строим n (m) прямых, соответствующих стратегиям второго (первого) игрока. 2. Строим нижнюю (верхнюю) границу выигрыша. 3. Выбираем на границе выигрыша точку с максимальной (минимальной) ординатой. 4. Определяем по чертежу пару активных стратегий из числа построенных для второго (первого) игрока. 5. Находим координаты точки максимума (минимума) и решение игры. 2.3.5. Сведение матричной игры к задаче линейного программирования Если у каждого из игроков больше двух возможных стратегий, то можно решение игры свести к решению задачи линейного программирования. Найдем решение игры с платежной матрицей m  n : a1n   a11 a12  a21 a22 a2 n   . a amn   m1 am 2 Пусть матрица игры не содержит седловой точки. Тогда решение игры будем искать в смешанных стратегиях p = ( p1 , p2 , , pm ) и q = (q1 , q2 , , qn ) , где p1 + p2 + + pm = 1 и q1 + q2 + + qn = 1 . * Стратегия p является оптимальной, если при любой стратегии игрока B средний выигрыш игрока A будет больше или равен цены игры v согласно (2.11), таким образом, получаем систему ограничений a11 p1 + a21 p2 + + am1 pm  v, a12 p1 + a22 p2 + + am 2 pm  v, .............................................., a p + a p + + a p  v. mn m  1n 1 2 n 2 Будем считать, что цена игры v больше нуля. Действительно, если v  0, то это означает, что некоторые элементы матрицы игры не положительны. Тогда найдём число M>0, которое прибавим ко всем элементам матрицы игры и получим новую матрицу с положительными элементами. Это сложение сделает цену новой игры, равную v+M, положительной, но не изменит решения игры. Разделим обе части всех неравенств на положительное число  и введем ноp p p вые переменные: x1 = 1 , x2 = 2 , , xm = m . v v v Тогда система ограничений примет вид 105 a11 x1 + a21 x2 + + am1 xm  1, a12 x1 + a22 x2 + + am 2 xm  1, ............................................, a1n x1 + a2 n x2 + + amn xm  1,  xi  0, i = 1, , m. 1 + xm = . v Игрок A стремится максимизировать свой средний выигрыш v, то есть мини1 мизировать отношение . Далее, так как p1 + p2 + + pm = 1 , то x1 + x2 +  Таким образом, получаем задачу линейного программирования: Z = x1 + x2 + + xm → min, a11 x1 + a21 x2 + + am1 xm  1, a12 x1 + a22 x2 + + am 2 xm  1, ............................................., a1n x1 + a2 n x2 + + amn xm  1,  xi  0, i = 1, , m. Заметим, что эта задача всегда имеет оптимальное решение * X = ( x1* , x2* , , xm* ) . Его можно найти симплекс-методом. Тогда цена игры v= 1 x1 + x + * * 2 + xm* . Оптимальная смешанная стратегия первого игрока * p = ( p1* , p*2 , , p*m ) , где pi* = x*i  v . * Аналогичные рассуждения дают оптимальную стратегию q игрока B. При любой стратегии игрока А проигрыш игрока В не должен превышать цену игры согласно (2.12). Получаем систему ограничений: a11q1 + a12 q2 + + a1n qn  v, a21q1 + a22q2 + + a2 n qn  v, ............................................, a q + a q + + a q  v. mn n  m1 1 m 2 2 q q q Обозначим y1 = 1 , y2 = 2 , , yn = m . Тогда для нахождения оптимальной v v v смешанной стратегии игрока B необходимо решить следующую задачу линейного программирования: W = y1 + y2 + + ym → max, a11 y1 + a12 y2 + + a1n yn  1, a21 y1 + a22 y2 + + a2 n yn  1, ............................................., am1 y1 + am 2 y2 + + amn yn  1,  y j  0, j = 1, , n. Это двойственная задача к ранее составленной. Задача всегда имеет оптимальное решение Y * = ( y1* , y2* , , yn* ) , которое можно найти симплекс-методом или по теореме равновесия, зная решение ранее составленной задачи. Тогда цена 106 новой игры v = 1 y1 + y + * * 2 + yn* . Оптимальная смешанная стратегия второго иг- * рока q = (q1* , q*2 , , qn* ) , где q*j = y*j  v . Пример 8  −1 1 6  Найти решение игры, заданной платежной матрицей  5 2 −3  .  −2 4 5    Решение: Проверим наличие у игры седловой точки, найдем нижнюю и верхнюю цены игр  −1 1 6  −1  5 2 −3  −3.  −2 4 5  −2   5 4 6  = max(−1; −3; −2) = −1,  = min(5;4;6) = 5 . , следовательно, игра не имеет седловой точки, решение будет в смешанных стратегиях. Чтобы свести матричную игру для игрока А к задаче линейного программирования преобразуем платежную матрицу так, чтобы все ее элементы были больше нуля – прибавим ко всем элементам матрицы число 4. Получаем преобразованную платежную матрицу:  3 5 10   9 6 1 .  2 8 9   Средний выигрыш А должен быть не меньше цены игры v при любом поведении игрока В. Так, если игрок В использует свою первую стратегию, то средний выигрыш игрока А составит: 3 p1 + 9 p2 + 2 p3 , тогда должно выполняться 3 p1 + 9 p2 + 2 p3  v . Аналогично, записав неравенства для стратегий В2 и В3, получаем систему линейных ограничений: 3 p1 + 9 p2 + 2 p3  v, 5 p1 + 6 p2 + 8 p3  v, 10 p1 + p2 + 9 p3  v. Разделив обе части уравнения p1 + p2 + p3 = 1 на v  0 (цена игры больше нуля, т.к. все элементы преобразованной матрицы больше нуля), получаем целеp p p 1 вую функцию Z = 1 + 2 + 3 = . Цель игрока А – получить максимальный v v v v 1 средний выигрыш, т.е. v → max , а значит → min . Введем обозначения v p xi = i (i = 1,2,3) , тогда Z = x1 + x2 + x3 → min . v Перейдем в системе ограничений к переменным xi, разделив каждое неравенство на v  0 : 107  3 x1 + 9 x2 + 2 x3  1, 5 x1 + 6 x2 + 8 x3  1,  10 x1 + x2 + 9 x3  1. Таким образом, для нахождения оптимальной стратегии игрока А необходимо решить задачу линейного программирования: Z = x1 + x2 + x3 → min, 3x1 + 9 x2 + 2 x3  1, 5 x1 + 6 x2 + 8 x3  1, 10 x + x + 9 x  1,  x , x1 , x 2 0. 3  1 2 3 Аналогично можно составить и решить задачу линейного программирования для игрока В. Средний проигрыш игрока В должен быть не больше цены игры v при любом поведении игрока А. Получаем систему линейных ограничений: 3q1 + 5q2 + 10q3  v, 9q1 + 6q2 + q3  v,  2q1 + 8q2 + 9q3  v. Из условия q1 + q2 + q3 = 1 , разделив обе части уравнения на v  0 , получаем q q q 1 целевую функцию W = 1 + 2 + 3 = . Цель игрока В – получить минимальный v v v v 1 средний проигрыш, т.е. v → min , а значит → max . Если обозначить v q y j = j ( j = 1,2,3) , то W = y1 + y2 + y3 → max . v Перейдем в системе ограничений к переменным yj, разделив каждое неравенство на >0:  3 y1 + 5 y2 + 10 y3  1, 9 y1 + 6 y2 + y3  1,   2 y1 + 8 y2 + 9 y3  1. Таким образом, для нахождения оптимальной стратегии игрока B необходимо решить задачу линейного программирования: W = y1 + y2 + y3 → max, 3 y1 + 5 y2 + 10 y3  1, 9 y1 + 6 y2 + y3  1, 2 y + 8 y + 9 y  1,  y ,1y , y 2 0. 3  1 2 3 Получили пару двойственных задач. Решим первую задачу симплекс-методом. Перейдем в системе ограничений к равенствам. 3 x1 + 9 x2 + 2 x3 − x4 = 1, 5 x1 + 6 x2 + 8 x3 − x5 = 1, 10 x + x + 9 x − x = 1,  x , x1 , x 2, x , x 3, x 6 0.  1 2 3 4 5 6 Расширенная матрица системы ограничений: 108  3 9 2 −1 0 0 1  −3 −9 −2 1 0 0 −1  9 6 1 0 −1 0 1  −9 −6 −1 0 1 0 −1 .  2 8 9 0 0 −1 1  −2 −8 −9 0 0 1 −1     В матрице уже имеется базис, выразим базисные переменные x4 , x5 , x6 и целевую функцию через свободные для составления симплексной таблицы. Перейдем к задаче максимизации. Z1 = −Z = −( x1 + x2 + x3 ) = 0 − ( x1 + x2 + x3 ) → max,   x4 = −1 − (−3 x1 − 9 x2 − 2 x3 ),  x5 = −1 − (−5 x1 − 6 x2 − 8 x3 ),   x6 = −1 − (−10 x1 − x2 − 9 x3 ). Составляем симплексную таблицу. В таблице сразу подпишем переменные двойственной задачи, которые соответствуют ограничениям исходной задачи. В процессе решения будем менять их положение вместе с соответствующими переменными исходной задачи x1, x2 , x3 . Симплексная таблица 1 1 − x1 − x2 − x3 x = − 1 −3 −9 −2 y1 4 −5 −6 −8 y2 x5 = −1 y3 x6 = −1 −10 −1 −9  Z1 = 0 1 1 1 CO 1 / 10 1 1/ 9  Таблица является двойственно допустимой. Ей соответствует псевдоплан 1 X = (0;0;0; −1; −1; −1) . Т.к. в столбце свободных членов имеются отрицательные элементы, то строим следующую таблицу согласно алгоритму двойственного симплекс-метода. Симплексная таблица 2 y3 1 − x6 − x2 − x3 y1 x4 = −7 / 10 −3 / 10 −87 / 10 7 / 10  y2 x5 = −5 / 10 −5 / 10 −55 / 10 −35 / 10 x1 = 1 / 10 −1 / 10 1 / 10 9 / 10 Z1 = −1 / 10 1 / 10 9 / 10 1 / 10 CO 1/ 3 9 / 87 1/ 7  Таблица является двойственно допустимой. Ей соответствует псевдоплан X 2 = (1 / 10;0;0; −7 / 10; −5 / 10;0) . Т.к. в столбце свободных членов имеются отрицательные элементы, то строим следующую таблицу согласно алгоритму двойственного симплекс-метода. 109 Симплексная таблица 3 y3 y1 1 − x6 − x4 x2 = 7 / 87 1 / 29 −10 / 87 y2 x5 = −5 / 87 −9 / 29 −55 / 87 x1 = 8 / 87 −3 / 29 1 / 87 Z1 = −5 / 29 2 / 29 3 / 29 CO 2/9 9 / 55 − x3 −7 / 87 −343 / 87  79 / 87 5 / 29 15 / 343  Таблице соответствует оптимальный план X 3 = (8 / 87;7 / 87;0;0; −5 / 87;0) . Т.к. в столбце свободных членов имеются отрицательные элементы, то строим следующую таблицу согласно алгоритму двойственного симплекс-метода. Симплексная таблица 4 y3 y1 y2 1 − x6 − x4 − x5 x2 = 4 / 49 x3 = 5 / 343 x1 = 27 / 343 Z1 = −60 / 343 19 / 343 26 / 343 15 / 343 Получили оптимальные планы задач. Значения базисных переменных двойственной задачи находятся в строке для коэффициентов целевой функции исходной задачи. Оптимальные решения задач линейного программирования: X * = (27 / 343;4 / 49;5 / 343), Y * = (26 / 343;15 / 343;19 / 343), Wmax = Zmin = −Z1max = 60 / 343 . 1 Так как v = и pi = xi  v, q j = y j  v , то находим цену игры и оптимальные Z стратегии игроков. 343 v=  5.7167 , 60 * 343  27 4 5   9 7 1  p = ; ;   =  ; ;   ( 0.45;0.47;0.08 ) , 60  343 49 343   20 15 12  * 343  26 15 19   13 1 19  q = ; ;   =  ; ;   ( 0.43;0.25;0.32 ) . 60  343 343 343   30 4 60  Вопросы для самопроверки 1. Как определить дробную часть числа? 2. Как составить дополнительное ограничение в методе Гомори? 3. Какая разновидность симплекс-метода используется в методе Гомори после добавления дополнительного ограничения? 4. Когда модель транспортной задачи является закрытой? 5. Когда в транспортной задаче вводится фиктивный поставщик или потребитель? Какие тарифы перевозок будут для него? 6. В чем заключается метод наименьшей стоимости? 110 7. В чем заключается метод Фогеля? 8. В чем заключается метод потенциалов? 9. Назовите основные этапы решения транспортной задачи. 10.Что такое стратегия игрока? Какая игра называется парной с нулевой суммой? 11.Что такое платежная матрица? 12. Как определить верхнюю и нижнюю цену игры? Каково соотношение между ними? 13.Какая игра имеет седловую точку? Что означает решение игры в чистых стратегиях? 14.Что такое оптимальная смешанная стратегия? 15.Сформулируйте основную теорему теории игр – теорему Фон-Неймана. 16.Как можно графически решить игру? 17.На чем основана связь матричной игры и ЗЛП? 111 3. НЕЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ В общем случае задача нелинейного программирования (НП) состоит в нахождении экстремума (минимума или максимума) функции (3.1) Z = f ( x1, , xn ) → max(min) , на множестве, задаваемом ограничениями в виде равенств и (или) неравенств gi ( x1 , , xn ) = bi (i = 1, , k ) (3.2) gi ( x1 , , xn )  bi (i = k + 1, , m) Так же могут быть условия неотрицательности переменных. Предполагается, что среди функций f и gi (i = 1, , m) есть хоть одна нелинейная. Любой n-мерный вектор X = ( x1, , xn ) , удовлетворяющий ограничениям задачи, называется допустимым решением, а множество всех таких векторов — областью допустимых решений (ОДР). Нахождение решений задачи (3.1), (3.2) сводится к определению такой точки этой области, через которую проходит гиперплоскость наивысшего (наинизшего) уровня f ( x1, , xn ) = const . Эта точка может находиться как на границе области допустимых решений, так и внутри ее. Перечислим свойства задач НП, которые существенно усложняют процесс их решения по сравнению с задачами линейного программирования: 1. Множество допустимых решений может иметь очень сложную структуру (например, быть невыпуклым или несвязным). 2. Глобальный максимум (минимум) может достигаться как внутри области, так и на ее границах (где он, вообще говоря, будет не совпадать ни с одним из локальных экстремумов). 3. Целевая функция f может быть не дифференцируемой, что затрудняет применение классических методов математического анализа. Этим объясняется отсутствие общих методов, подобных симплекс-методу в линейном программировании, позволяющих решать любые задачи НП. Тем не менее, отдельные специальные классы нелинейных задач хорошо изучены.  3.3. Графическое решение задачи нелинейного программирования Графический метод можно использовать для решения задачи НП, которая содержит две переменных х1 и х2, например, задачи следующего вида: (3.3) Z = f ( x1, x2 ) → max(min), (3.4) gi ( x1, x2 )  bi (i = 1, , m) . Чтобы найти ее оптимальное решение, нужно выполнить следующие действия: 1. Найти ОДР, определяемую ограничениями задачи. Если окажется, что эта область пуста, то это означает, что задача не имеет решения. 2. Построить семейство линий уровня целевой функции f ( x1, x2 ) = C при различных значениях числового параметра С. 3. При решении задачи на минимум определить направление убывания, а для задачи на максимум – направление возрастания линий уровня целевой функции. 112 4. Найти точку ОДР, через которую проходит линия уровня с наибольшим в задачи на максимум (соответственно наименьшим в задаче на минимум,) значением параметра С. Эта точка будет оптимальным решением. Если целевая функция не ограничена сверху в задаче на максимум (снизу – в задаче на минимум), то это означает, что задача не имеет оптимального решения. 5. Найти координаты точки оптимума и определить в ней значение целевой функции. Отметим, что в отличие от задачи линейного программирования точка оптимума в задаче НП не обязательно находится на границе ОДР. Ею также может быть внутренняя точка этого множества. Пример 1 Найти максимальное и минимальное значение функции Z = ( x1 − 3)2 + ( x2 − 4) 2 , при условии 3x1 + x2  7, 10 x1 − x2  8, −18 x + 4 x  12,  x , x 1 0. 2  1 2 Решение: Это задача нелинейного программирования, т.к. целевая функция не линейна. Областью допустимых решений является треугольник АВС (рис. 21). Рисунок 21 – Область допустимых решений Примера 1 Строим линии уровня ( x1 − 3)2 + ( x2 − 4) 2 = const – концентрические окружности с центром в точке Е(3;4) (рис. 22). Видно, что минимум целевой функции достигается в точке D – точке касания окружности и области, максимальное значение функция принимает в точке С – угловой точке множества допустимых решений. 113 Рисунок 22 – Нахождение точек минимума и максимума в Примере 1 Найдем координаты точки D, для этого воспользуемся равенством угловых коэффициентов прямой 10 x1 − x2 = 8 и касательной к окружности. Выразим x2 из уравнения прямой: x2 = 10 x1 − 8 , следовательно, k1=10. Для касательной к окружности угловой коэффициент – это производная x2 (производная неявной функции). Продифференцируем по x1 обе части уравнения окружности: ( x − 3)2 + ( x − 4) 2  = const , ( 1 2 ) 2( x1 − 3) + 2( x2 − 4) x2 = 0, x −3 x2 = − 1 = k2 . x2 − 4 x1 − 3 = 10 или x1 + 10 x2 = 43 . Это x2 − 4 одно из уравнений для нахождения координат точки D. Точка D лежит на прямой x1 + 10 x2 = 43 . Получаем систему: x1 + 10 x2 = 43, 10 x1 − x2 = 8. Из условия k1 = k2 получаем уравнение −  123   x1 = 101 , Решая систему, находим  . 422  x2 = . 101  2 2  123 422   123   422  324 ; = − 3 + − 4 Следовательно, Z min = Z  .      =  101 101   101   101  101 10 x1 − x2 = 8, Для нахождения координат С составим систему Решив си−18 x1 + 4 x2 = 12. стему, находим С (2;12).  114 Z max = Z ( 2;12 ) = ( 2 − 3) + (12 − 4 ) = 65 . 2 3.1. 2 Метод множителей Лагранжа Рассмотрим частный случай задачи НП, предполагая, что система ограничений содержит только уравнения, отсутствуют условия неотрицательности переменных и функции f ( x1, , xn ) и gi ( x1, , xn ) непрерывны вместе с частными производными. (3.5) Z = f ( x1, , xn ) → max(min) , на множестве, задаваемом ограничениями в виде равенств и (или) неравенств (3.6) gi ( x1, , xn ) = bi (i = 1, , m). Задача (3.5), (3.6) называют задачей на условный экстремум или классической задачей оптимизации. Чтобы найти решение этой задачи вводят переменные 1, 2 , , m , называемые множителями Лагранжа, и составляют функцию Лагранжа: L( x1 , , xn , 1 , , m ) = f ( x1 , m , xn ) +  i (bi − gi ( x1, i =1 , xn )) , (3.7) находят частные производные функции Лагранжа по всем переменным xj и λi и приравнивают их нулю для нахождения стационарных точек функции Лагранжа. Получается система n + m уравнений c n + m неизвестными x1, , xn , 1, , m для нахождения точек, подозрительных на экстремум. m g  L f = − i i = 0 ( j = 1, , n),   x x j i =1 x j (3.8)  Lj  = bi − gi = 0 (i = 1, , m).  i Находят решения этой системы. Среди этих решений после дополнительного анализа (проверки достаточного признака экстремума) отбираются такие, которые действительно являются точками локального оптимума. После сравнения значений целевой функции в этих точках находится точка, являющаяся глобальным оптимумом. Подчеркнем, что основное практическое значение метода Лагранжа заключается в том, что он позволяет перейти от условной оптимизации к безусловной и, соответственно, расширить арсенал доступных средств решения проблемы. Однако нетрудно заметить, что задача решения системы уравнений, к которой сводится данный метод, в общем случае не проще исходной проблемы поиска экстремума. Методы, подразумевающие такое решение, называются непрямыми. Они могут быть применены для весьма узкого класса задач, для которых удается получить линейную или сводящуюся к линейной систему уравнений. При решении конкретных практических задач обычно используются прямые методы, основанные на итерационных процессах вычисления и сравнения значений оптимизируемых функций. К таким методам относят градиентные методы решения задач безусловной оптимизации. 115 3.2. Решение задач выпуклого программирования Рассмотрим задачу нелинейного программирования: Z = f ( x1, , xn ) → max, gi ( x1, , xn )  bi (i = 1, , m), x j  0 ( j = 1, , n). (3.9) (3.10) (3.11) Функция f называется выпуклой на выпуклом множестве Х, если для любой пары точек X 1 , X 2  X и любого числа  (0    1) справедливо соотношение f ( X 1 + (1 −  ) X 2 )   f ( X 1 ) + (1 −  ) f ( X 2 ). (3.12) Функция f называется вогнутой на выпуклом множестве Х, если для любой пары точек X 1 , X 2  X и любого числа  (0    1) справедливо соотношение f ( X 1 + (1 −  ) X 2 )   f ( X 1 ) + (1 −  ) f ( X 2 ). (3.13) Функция f называется строго выпуклой (строго вогнутой), если неравенства в соотношениях (3.12), (3.13) являются строгим для всех X 1  X 2 , т.е. знак неравенства "<" (соответственно, ">"). Очевидно, что если f – выпуклая функция, то f1 = -f – вогнутая функция. Сумма выпуклых (вогнутых) функций — выпуклая (вогнутая) функция. Линейная функция является как выпуклой, так и вогнутой функцией. Простейший пример выпуклой функции: z = х2, а вогнутой: z = х . Множество допустимых решений задачи НП удовлетворяет условию регулярности, если существует, по крайней мере, одна точка из ОДР X p  X такая, что gi ( X p )  bi (i = 1, , m) . Задача (3.9) – (3.11) является задачей выпуклого программирования, если она удовлетворяет следующим условиям: 1) целевая функция f выпукла (вогнута); 2) все функции gi в ограничениях (3.10) выпуклые. Легко проверить, что если g – выпуклая (вогнутая) функция, то для любого числа b множество { X | g ( X )  ()b} – выпуклое. Поэтому ОДР в задаче выпуклого программирования - выпуклое множество. Выпуклым будет и множество оптимальных решений. Если же целевая функция – строго выпуклая (вогнутая) функция, то множество точек ее минимума (максимума) состоит из единственной точки. Наиболее важное свойство таких задач дает теорема 1. Теорема 1 Любая точка локального максимума (минимума) задачи выпуклого программирования является точкой ее глобального максимума (минимума). Поэтому, в задаче выпуклого программирования можно говорить об оптимальном решении, не уточняя, идет речь о глобальном или локальном оптимуме. Составим функцию Лагранжа для задачи выпуклого программирования: L( X , ) = L( x1 , , xn , 1, , m ) = f ( x1, 116 m , xn ) +  i (bi − gi ( x1, i =1 , xn )) . Точка ( X 0 ,  0 ) = ( x10 , , xn0 , 10 , , m0 ) называется седловой точкой функции Лагранжа, если для любых и X = ( x1, , xn ) ( xi  0, i = 1, , n)  = (1 , , m ) ( j  0, j = 1, , m) выполняется: L( X ,  0 )  L( X 0 ,  0 )  L( X 0 , ). (3.14) Центральное место в теории нелинейного программирования занимает теорема Куна-Таккера. Теорема 2 (Куна-Таккера) Для задачи выпуклого программирования (3.9) – (3.11) множество допустимых решений которой удовлетворяет условию регулярности, X 0 = ( x10 , , xn0 ) является оптимальным планом тогда и только тогда, если существует 0 = (10 , , m0 ) ( j  0, j = 1, , m) , что ( X 0 ,  0 ) – седловая точка функции Лагранжа. Если предположить, что функции f и gi непрерывно дифференцируемы, то можно записать условия Куна-Таккера, определяющие необходимые и достаточные условия того, чтобы точка ( X 0 ,  0 ) была седловой точкой функции Лагранжа, т.е. являлась решением задачи выпуклого программирования. Эти условия имеют вид:  Lx j ( X 0 ,  0 )  0 ( j = 1, , n),  x 0  L ( X 0 ,  0 ) = 0 ( j = 1, , n),  0j x j  x j  0 ( j = 1, , n), (3.15)   L ( X ,  )  ( i = 1, , m ),  i i0  Li ( X 0 ,  0 ) = 0 (i = 1, , m),  0  0 (i = 1, , m).  i Предпоследнее условие означает, что если множитель Лагранжа положителен, то соответствующее ему ограничение в точке оптимума обязательно должно быть равенством. Если же ограничение не является равенством в точке оптимума, то его множитель Лагранжа равен нулю. Это условие аналогично условию дополняющей нежесткости в задаче линейного программирования. В отличие от классической задачи условной оптимизации на множители Лагранжа накладывается условие неотрицательности. Множители Лагранжа допускают интерпретацию, аналогичную интерпретации оптимальных оценок ограничений в задаче линейного программирования. Так множитель Лагранжа i-го ограничения характеризует величину изменения оптимального значения целевой функции при увеличении правой части этого ограничения на единицу и фиксированных значениях остальных ограничений. Однако в отличие от задачи линейного программирования величина *i не равна в точности изменению оптимального значения целевой функции при увеличении правой части i-го ограничения на единицу, а дает лишь приближенную оценку этого изменения. 117 Пример 2 Решить графически задачу нелинейного программирования Z = ( x1 − 5)2 + ( x2 − 1)2 → min,  x1 − 2 x2  −2, 7 x1 − x2  13,  x + 3 x  21,  x1 , x 20.  1 2 Проверить выполнение условий Куна-Таккера для найденной оптимальной точки. Решение: На рис. 23 представлено графическое решение задачи. Линии уровня целевой функции – концентрические окружности с центром в точке (5;1). Минимум функции достигается в точке (4;3). Рисунок 23 – Графическое решение задачи нелинейного программирования Покажем, что существует Λ0 ≥ 0, при которой в найденной точке выполняются условия Куна-Таккера. Перепишем задачу в виде: Z1 = − Z = −( x1 − 5)2 − ( x2 − 1) 2 → max, −2 − x1 + 2 x2  0, 7 x1 − x2 − 13  0, 21 − x − 3 x  0,  x , x 1 0. 2  1 2 Составим функцию Лагранжа: L( X , ) = −( x1 − 5) 2 − ( x2 − 1) 2 + 1 (−2 − x1 + 2 x2 ) + 2 (7 x1 − x2 − 13) + 3 (21 − x1 − 3x2 ). Найдем частные производные: Lx1 = −2( x1 − 5) − 1 + 72 − 3 , Lx2 = −2( x2 − 1) + 21 − 2 − 33 , L1 = −2 − x1 + 2 x2 , 118 L2 = 7 x1 − x2 − 13, L3 = 21 − x1 − 3x2 . Запишем условия Куна-Таккера:  x1  Lx1 = 0,  x  (−2( x − 5) −  + 7 −  ) = 0,  x2  Lx = 0,  x1  (−2( x1 − 1) + 21 − 2 − 33 ) = 0, 2 2 1 2 3   2    L  1 1 = 0,  1  (−2 − x1 + 2 x2 ) = 0, 2  L2 = 0, 2  (7 x1 − x2 − 13) = 0, 3  L = 0. 3  (21 − x1 − 3 x2 ) = 0. 3  Подставим в систему координаты оптимальной точки (4;3), найденной графически. 4  (−2(4 − 5) − 1 + 72 − 3 ) = 0, 3  (−2(3 − 1) + 21 − 2 − 33 ) = 0, 1  (−2 − 4 + 2  3) = 0, 2  (7  4 − 3 − 13) = 0, 3  (21 − 4 − 3  3) = 0. 4  (2 − 1 + 72 − 3 ) = 0, 3  (−4 + 21 − 2 − 33 ) = 0, 1  0 = 0, 2  12 = 0, 3  8 = 0. Произведение равно нулю, если один из множителей равен нулю. Из первого и второго уравнений следует, что выражения в скобках равны нулю. Из четвертого и пятого уравнений следует, что 2 = 3 = 0 . Подставим их в остальные уравнения. 2 − 1 = 0, −4 + 21 = 0,  = 0, 2 = 0.  3 Откуда, находим решение: 1 = 2, 2 = 3 = 0 . Следовательно, точка (4;3) является точкой экстремума.  Квадратичной формой относительно переменных x1, , xn называется функция от этих переменных, имеющая следующий вид: F = c x + c12 x1 x2 + c13 x1 x3 + 2 11 1 n n =  cij xij . (3.16) i =1 j =1 Квадратичная форма называется положительно (отрицательно) –полуопределенной, если F ( X )  0 ( F ( X )  0 ) для любой точки X = ( x1, , xn ) и существует точка X  = ( x1, , xn ) , такая, что не все xi одновременно равны 0, что F ( X ) = 0 . Теорема 3 Квадратичная форма является выпуклой функцией, если она положительно-полуопределенная, и вогнутой функцией, если она отрицательно-полуопределенная. 119 Задачей квадратичного программирования называется задача (3.17) – (3.18). n n n f ( X ) =  di xi +  cij xij , i =1 n a x j =1 ij j (3.17) i =1 j =1  bi (i = 1, , m), (3.18) x j  0 ( j = 1, , n). (3.19) Задача квадратичного программирования является задаче удовлетворяет всем требованиям задачи выпуклого программирования. Для задачи квадратичного программирования функция Лагранжа запишется в виде: n n n m n L =  di xi +  cij xij +  i (bi −  aij x j ) . i =1 i =1 j =1 i =1 j =1 Если функция имеет седловую точку ( X ,  ) , то в этой точке выполняются соотношения (3.15). Вводя в неравенства этой системы дополнительные переменные u j ( j = 1, , n) и vi (i = 1, , m) , обращающие неравенства в равенства, перепишем соотношения (3.15) для задачи квадратичного программирования:  Lx j ( X 0 ,  0 ) + u j = 0 ( j = 1, , n), (3.20)   L ( X ,  ) + v = ( i = 1, , m ), i  i  x 0j  u j = 0 ( j = 1, , n), (3.21)  0   v = ( i = 1, , m ),  i i (3.22) x j , u j  0 ( j = 1, , n), i0 , vi  0 (i = 1, , m). Для того, чтобы найти решение задачи квадратичного программирования (3.17) – (3.19) необходимо найти неотрицательное решение системы (3.20). Это решение можно найти с помощью метода искусственного базиса, примененного для нахождения максимального значения функции F = − M  yi , при условиях i (3.20), где yi – искусственные переменные, введенные в уравнения системы (3.20). Алгоритм нахождения решения задачи квадратичного программирования (3.17) – (3.19): 1. Составить функцию Лагранжа. 2.Записать необходимые и достаточные условия существования седловой точки для функции Лагранжа (3.20), (3.21). 3. Используя метод искусственного базиса найти седловую точку или установить ее отсутствие. 120 Пример 3 Решить задачу квадратичного программирования. Z = 2 x1 + 4 x2 − x12 − 2 x22 → max,   x1 + 2 x2  8, 2 x1 − x2  12,   x1 , x2  0. Решение: Функция является вогнутой, т.к. представляет собой сумму линейной функции f1 = 2 x1 + 4 x2 , которую можно рассматривать как вогнутую, и квадратичной формы f 2 = − x12 − 2 x22 , которая является отрицательно-определенной, а следовательно, вогнутой. Для составления функции Лагранжа перепишем систему в виде: 8 − x1 − 2 x2 = 0, 12 − 2 x1 + x2 = 0,  x1 , x2  0. Составим функцию Лагранжа L( X , ) = 2 x1 + 4 x2 − x12 − 2 x22 + 1 (8 − x1 + 2 x2 ) + 2 (12 − 2 x1 + x2 ) . Запишем необходимые и достаточные условия существования седловой точки.  Lx1 = 2 − 2 x1 − 1 − 22  0,  Lx = 4 − 4 x2 − 21 + 2  0, (3.23)  L2 = 8 − x − 2 x  0, 1 1 2    L2 = 12 − 2 x1 + x2  0,  x1  (2 − 2 x1 − 1 − 22 ) = 0,  x2  (4 − 4 x2 − 21 + 2 ) = 0,   (8 − x − 2 x ) = 0, 1  (12 − 12 x + 2x ) = 0,  2 1 2 x1, x2 , y1, y2  0. Перепишем систему линейных неравенств (3.23) в виде: 2 x1 + 1 + 22  2, 4 x2 + 21 − 2  4,  x + 2 x  8, 21x − x2  12.  1 2 Перейдем к равенствам: 2 x1 + 1 + 22 − u1 = 2, 4 x2 + 21 − 2 − u2 = 4,  x1 + 2 x2 + v1 = 8, 2 x1 − x2 + v2 = 12,  x1 , x2 , y1 , y2 , u1 , u2 , v1 , v2  0. Откуда получаем (3.24) в виде: 121 (3.24) (3.25) (3.26)  x1  u1 = 0  x2  u2 = 0 (3.27)   v = 0 1 1   v = 0  2 2 Матрица системы ограничений (3.26):  2 0 1 2 −1 0 1 0 2   0 4 2 −1 0 −1 0 1 4  1 2 0 0 0 0 0 0 8   2 −1 0 0 0 0 0 0 12    Для нахождения базисного решения системы (3.26) решим методом искусственного базиса следующую задачу: Z = −M ( y1 + y2 ) → max, при ограничениях 2 x1 + 1 + 22 − u1 + y1 = 2, 4 x2 + 21 − 2 − u2 + y2 = 4,  x1 + 2 x2 + v1 = 8, 2 x1 − x2 + v2 = 12,  x1 , x2 , y1 , y2 , u1 , u2 , v1 , v2  0. Процесс решения опустим, найденное решение X 0 = (1,1,0,0,0,0,5,11) или x10 = 1, x20 = 1, 10 = 0, 20 = 0, u1 = 0, u2 = 0, v1 = 5, v2 = 11 . Проверим выполнение условий (3.27): 1  0 = 0, 1  0 = 0, 0  5 = 0, . 0  11 = 0.  Условия (3.27) выполнены, следовательно ( X 0 ,  0 ) = (1;1;0;0) является седловой точкой функции Лагранжа. Следовательно, X * = (1;1) – оптимальный план исходной задачи.  3.3. Градиентные методы Используя градиентные методы, можно найти решение любой задачи нелинейного программирования. В общем случае применение таких методов позволяет найти локальный экстремум. Поэтому градиентными методами лучше решать задачи выпуклого программирования, в которых локальный экстремум является глобальным. Процесс нахождения решения градиентными методами заключается в том, что начиная с некоторой точки X 0 , осуществляется последовательный переход к другим точкам X 1 , X 2 , до тех пор, пока градиент f ( x1, , xn ) в некоторой точке X k не станет равным 0 или пока не будет выполняться условие f ( X k +1 ) − f ( X k )   , где  – достаточно малое положительное число. Градиентные методы делятся на две группы. К первой группе относятся методы, в которых исследуемые точки не выходят за границы области допустимых 122 решений. Наиболее известный из таких методов – метод Франка-Вулфа. Ко второй группе относятся методы, в которых исследуемые точки могут как принадлежать, так и не принадлежать ОДР. Наиболее известные из таких методов – метод штрафных функций, Эрроу-Гурвица. 3.3.1. Метод Франка-Вулфа Пусть имеется задача нелинейного программирования: f ( x1, , xn ) → max, n a x j =1 ij j  bi (i = 1, , m), x j  0 ( j = 1, , m) , (3.28) (3.29) (3.30) где f ( x1, , xn ) – вогнутая функция. Ограничения этой задачи – линейные неравенства, что дает возможность заменить функцию в окрестности исследуемой точки на линейную. Поэтому решение исходной задачи будет сведено к последовательному решению задач линейного программирования. В процессе решения перебираются точки X k , k = 0,1,2, , принадлежащие области допустимых решений. Для каждой такой точки вычисляется градиент функции grad f ( X k ) = f x1 ( X k ), f x2 ( X k ), , f xn ( X k ) и строят линейную функ- ( ) цию (3.31) F = f x1 ( X k )  x1 + f x2 ( X k )  x2 + + f xn ( X k )  xn . Затем находят максимальное значение этой линейной функции при ограничениях (3.29), (3.30). Пусть решением этой задачи будет точка Z k . Тогда за новое допустимое решение исходной задачи принимают X k +1 , координаты которой вычисляются по формуле: X k +1 = X k + k ( Z k − X k ) , (3.32) где k – некоторое число из интервала [0;1]. Это число выбирается произвольно или определяется таким образом, чтобы значение f ( X k ) было максимальным. Для это решают уравнение f k = 0 и находят его наименьший корень. Если его значение больше 1, то считают k = 1 . После вычисления новой точки по формуле (3.32) исследую необходимость продолжения вычислений, сравнивая значения функции в двух последних точках. Алгоритм решения задачи (3.28) – (3.30) методом Франка-Вулфа 1. Найти любое допустимое решение исходной задачи. 2. Найти градиент функции в найденной точке. 3. Построить линейную функцию (3.31) и найти ее максимальное значение при ограничениях (3.29), (3.30). 4.Определить шаг вычислений k . 5. Найти новое допустимое решение по формуле (3.32). 123 6. Проверить необходимость перехода к новому допустимому решению. В случае необходимости перейти на п.2. Пример 4 Методом Франка-Вулфа решить задачу из Примера 3 с точностью до 0.01. f = 2 x1 + 4 x2 − x12 − 2 x22 → max,   x1 + 2 x2  8, 2 x1 − x2  12,   x1 , x2  0. Решение: Найдем частные производные функции f x1 = 2 − 2 x1 , f x2 = 4 − 4 x2 . Градиент grad f = (2 − 2 x1;4 − 4 x2 ) . Итерация 1 В качестве начального приближения выберем точку X 0 = (0;0) (она удовлетворяет системе ограничений задачи), f ( X 0 ) = 0 . Находим градиент в этой точке grad f ( X 0 ) = (2;4) . Решаем задачу линейного программирования F = 2 x1 + 4 x2 → max,   x1 + 2 x2  8, 2 x1 − x2  12,   x1 , x2  0. Эта задача имеет оптимальное решение Z 0 = (0;4) . Новое допустимое решение будем находить по формуле X 1 = X 0 + 0 ( Z 0 − X 0 ) . Подставив вместо X 0 , Z 0 найденные значения, получим  x11 = 0 + 0  0 = 0,  x1 = 0 +   4 = 4 .  2 Для нахождения 0 , подставим найденные значения в функцию и выразим функцию через 0 : f ( X 1 ) = 2  0 + 4  40 − 02 − 2  160 2 = 160 − 3202 . Найдем производную этой функции по 0 и приравняем ее нулю: f 0 = 16 − 640 = 0 . Решив уравнение, получим 0 = 0.25 [0;1] , принимаем найденное значение за величину шага. Тогда новая точка X 1 = (0;40 ) = (0;1) , f ( X 1 ) = 2 . Проверим достижение точности: f ( X 1 ) − f ( X 0 ) = 2 − 0 = 2  0.01 . Итерация 2 Находим градиент в точке X 1 = (0;1) : grad f ( X 1 ) = (2;0) . Решаем задачу линейного программирования F = 2 x1 → max,   x1 + 2 x2  8, 2 x1 − x2  12,   x1 , x2  0. 124 Эта задача имеет оптимальное решение Z 1 = (6.4;0.8) . Новое допустимое решение будем находить по формуле X 2 = X 1 + 1 ( Z 1 − X 1 ) . Подставив вместо X 1 , Z 1 найденные значения, получим  x12 = 0 + 1  6.4 = 6.41 ,  x 2 = 1 +   (−0.2) = 1 − 0.2 .  2 1 1 Подставим найденные значения в функцию: f ( X 2 ) = 2  6.41 + 4  (1 − 0.21 ) − (6.41 )2 − 2  (1 − 0.21 )2 = 2 + 12.81 − 41.0412 . f 1 = 12.8 − 82.081 = 0 . 1 = 0.16 [0;1] , принимаем найденное значение за величину шага. Тогда новая точка X 2 = (6.41;1 − 0.21 ) = (1.02;0.97) , f ( X 2 ) = 2.9978 . Проверим достижение точности: f ( X 2 ) − f ( X 1 ) = 2.9978 − 2 = 0.9978  0.01 . Итерация 3 Находим градиент в точке X 2 = (1.02;0.97) : grad f ( X 2 ) = (−0.04;0.12) . Решаем задачу линейного программирования F = −0.04 x1 + 0.12 x2 → max,   x1 + 2 x2  8, 2 x1 − x2  12,   x1 , x2  0. Эта задача имеет оптимальное решение Z 2 = (0;4) . Новое допустимое решение будем находить по формуле X 3 = X 2 + 2 ( Z 2 − X 2 ) . Подставив вместо X 2 , Z 2 найденные значения, получим  x13 = 1.02 + 2  0 = 1.02,  x3 = 0.97 +   4 = 4 + 0.97.  2 2 2 Выразим функцию через 1 : f ( X 3 ) = 2  1.02 + 4  (42 + 0.97) − 1.022 − 2  (42 + 0.97) 2 = 4.9978 + 0.482 − 3222 . f 1 = 0,48 − 642 = 0 . Решив уравнение, получим 2 = 0.008 [0;1] , принимаем найденное значение за величину шага. Тогда новая точка 3 3 X = (1.02;42 + 0.97) = (1.02;1.002) , f ( X ) = 2.9996 . Проверим достижение точности: f ( X 3 ) − f ( X 2 ) = 2.9996 − 2.9978 − 2 = 0.0018  0.01 . Видно, что найденная точка находится достаточно близко к оптимальной точке (1;1), найденной в Примере 3.  3.3.2. Метод штрафных функций Пусть имеется задача нелинейного программирования: f ( x1, , xn ) → max, gi ( x1, , xn )  0, (i = 1, , m), x j  0 ( j = 1, , m) , 125 (3.33) (3.34) (3.35) где f ( x1, , xn ) – вогнутая функция, gi ( x1, , xn ) – выпуклые функции. В методе штрафных функций место непосредственного решения задачи находят максимальное значение функции F ( x1, , xn ) = f ( x1, , xn ) + H ( x1, , xn ) , где H ( x1, , xn ) – определяется системой ограничений и называется штрафной функцией. Для построения штрафной функции наиболее часто используют следующий вид функции: m 0, b i − gi ( x1, , xn )  0 , H ( x1 , , xn ) =  i ( x1, , xn ) gi ( x1, , xn ) , где i ( x1, , xn ) = i , b i − gi ( x1, , xn )  0 i =1  i  0 – некоторые постоянные числа. Используя штрафные функции последовательно переходят от одной точки к другой до тех пор, пока не будет получено решение с заданной точностью. При этом координаты следующей точки находят по формуле:  k  f ( X k ) m gi ( X k )   k +1 (3.36) x j = max  0; x j +   +  i   .  x   x i = 1 j j    Из (3.36) следует, что, если предыдущая точка находится в области допустимых решений, то все коэффициенты  i равны 0, и переход к следующей точке определяется только градиентом целевой функции. Если же предыдущая точка не принадлежит области допустимых решений, то за счет слагаемых с коэффициентами  i происходит возвращение в ОДР. При этом, чем меньше  i , тем быстрее находится решение, но при этом снижается точность. Поэтому итерационный процесс начинают при сравнительно малых значениях  i , а потом эти значения постепенно увеличивают. Алгоритм решения задачи (3.33) – (3.35) методом штрафных функций 1. Найти начальное допустимое решение. 2. Выбрать шаг вычислений  . 3. Найти частные производные от целевой функции и функций, определяющих область допустимых решений. 4. По формуле (3.36) найти координаты новой точки. 5. Проверить, принадлежит ли новая точка ОДР. Если не принадлежит, то переходят к п.6, иначе проверяют достижение заданной точности и в случае необходимости переходят к п.4. 6. Устанавливают значения весовых коэффициентов и переходят к п.4. Пример 5 Методом штрафных функций решить задачу с точностью 0.01. f = − x12 − x22 → max,  ( x1 − 7)2 + ( x2 − 7)2  18, x1 , x2  0. 126 Решение: Целевая функция представляет собой отрицательно определенную квадратичную форму, следовательно, вогнута. Область допустимых решений, определяемая системой ограничений – выпукла. Найдем частные производные целевой функции: f x1 = −2 x1 , f x2 = −2 x2 . Частные производные функции g ( x1 , x2 ) = 18 − ( x1 − 7) 2 + ( x2 − 7) 2 из ограничения: g x1 = 2( x1 − 7) = 2 x1 − 14, g x2 = 2( x2 − 7) = 2 x2 − 14 . Возьмем  = 0.1 Итерация 1 В качестве начального приближения выберем точку X 0 = (6;7) (она принадлежит ОДР), f ( X 0 ) = −85 . Найдем координаты новой точки по формуле (3.36): x11 = max(0; x10 +   f x1 ( X 0 )) = max(0;6 + 0.1(−2  6)) = 4.8, x12 = max(0; x20 +   f x2 ( X 0 )) = max(0;7 + 0.1(−2  7)) = 5.6. Получили точку X 1 = (4.8;5.6) . Проверим ее принадлежность ОДР, для этого подставим в систему ограничений: g ( X 1 ) = 18 − (4.8 − 7) 2 + (5.6 − 7) 2 = = 18 − 6.8  0. Откуда следует, что X 1 = (4.8;5.6) f ( X 1 ) = −54.4 . Проверяем достижение точности: f ( X 1 ) − f ( X 0 ) = −54.4 − (−85) = 30.6  0.01 . принадлежит ОДР, Итерация 2 Найдем координаты новой точки по формуле: 2 x1 = max(0; x11 +   f x1 ( X 1 )) = max(0;4.8 + 0.1(−2  4.8)) = 3.84, x22 = max(0; x12 +   f x2 ( X 1 )) = max(0;5.6 + 0.1(−2  5.6)) = 4.48. Получили точку X 2 = (3.84;4.48) . Проверим ее принадлежность ОДР: g ( X 2 ) = (3.84 − 7) 2 + (4.48 − 7) 2 = 18 − 16.336  0 . Откуда следует, что X 2 = (3.84;4.48) принадлежит ОДР, f ( X 2 ) = −34.816 . Проверяем достижение точности: f ( X 2 ) − f ( X 1 ) = −34.816 − (−54.4) = 19.584  0.01 . Итерация 3 Найдем координаты новой точки по формуле: 3 x1 = max(0; x12 +   f x1 ( X 2 )) = max(0;3.84 + 0.1(−2  3.84)) = 3.072, x23 = max(0; x22 +   f x2 ( X 2 )) = max(0;4.48 + 0.1(−2  4.48)) = 3.584. Получили точку X 3 = (3.072;3.584) . Проверим ее принадлежность ОДР: g ( X 3 ) = 18 − (3.072 − 7)2 + (3.584 − 7)2 = 18 − 27.098  0 . Откуда следует, что X 3 = (3.072;3.584) не принадлежит ОДР. Итерация 4 Найдем координаты новой точки по формуле: 127 x14 = max(0; x13 +   ( f x1 ( X 3 ) +  g x1 ( X 3 )) = = max(0;3.072 + 0.1(−2  3.072 +  (−2  3.072 + 14))) = max(0;2.4576 +   7.856), x24 = max(0; x23 +   ( f x2 ( X 3 ) +  g x2 ( X 3 )) = = max(0;3.584 + 0.1(−2  3.584 +  (−2  3.584 + 14))) = max(0;2.8672 +   6.832). Выберем  таким образом, чтобы точка не слишком далеко удалялась от границы ОДР, но тем не менее попадала в ОДР. Этому условию удовлетворяет  = 1.9 . Тогда получим точку X 4 = (3.950;4.165) . Проверим ее принадлежность ОДР: g ( X 4 ) = (3.950 − 7) 2 + (4.165 − 7) 2 = 18 − 17.340  0 . Откуда следует, что X 4 = (3.950;4.165) принадлежит ОДР, f ( X 4 ) = −32.950 . Проверяем достижение точности: f ( X 4 ) − f ( X 2 ) = −32.950 − (−34.816) = 1.866  0.01 . И так далее. Процесс продолжается до достижения заданной точности.  3.3.3. Метод Эрроу-Гурвица В методе штрафных функций значения  i выбирались произвольно, что приводит к значительным колебаниям удаленности точек от области допустимых решений. В методе Эрроу-Гурвица этот недостаток устраняется тем, что на очередном шаге коэффициенты вычисляются по формуле:  ik +1 = max(0; ik −  gi ( X k )) (i = 1, , m) . (3.37) В качестве начальных значений  i0 берут произвольные неотрицательные числа. Вопросы для самопроверки 1. 2. 3. 4. 5. Какая задача называется многоцелевой? Каким свойством обладают точки множества Парето? Как найти множество Парето? Что такое точка утопии? В чем суть метода идеальной точки? Какая точка называется идеальной? 128 4. МНОГОЦЕЛЕВЫЕ ЗАДАЧИ Задачи, решаемые с учетом множества показателей или критериев, носят название многоцелевых. При решении таких задач найти такой план, при котором система критериев была бы наилучшей. Если все критерии равнозначны, то эффективным считается такой план, при котором отклонения от оптимумов по каждому критерию равны. С привычной точки зрения задача со многими критериями решения не имеет - далеко не всегда есть возможность одновременного удовлетворения всех заданных условий. Поэтому, когда говорят о решении многокритериальной задачи, имеют в виду какой-нибудь компромисс между изначально противоречивыми требованиями. А так как практически любая подобная ситуация допускает разные компромиссные разрешения, то и подходы к их поиску многочисленны и весьма разнообразны. Перечислим некоторые подходы. Метод уступок - лицо, принимающее решения, подводится к выбору решения путем постепенного ослабления первоначальных требований, как правило, одновременно невыполнимых. Метод идеальной точки - в области допустимых значений неизвестных ищется такая их совокупность, которая способна обеспечить набор значений критериев, в том или ином смысле ближайший к наилучшему, как правило, недосягаемому (в так называемой точке утопии). Метод свертывания - лицо, принимающее решения, сводит многокритериальную задачу к задаче с одним критерием. Метод ограничений - множество допустимых значений неизвестных уменьшается путем осмысленного введения дополнительных ограничений на заданные критерии. Метод анализа иерархий - на основании суждений экспертов оценивается вклад в общую оценку каждого критерия. Далее будем рассматривать случаи, когда решение принимается по двум критериям. 4.1. Множество Парето Рассмотрим на плоскости (U, V) произвольное множество . Рисунок 24 – Внутренние, внешние и граничные точки множества . Каждая точка плоскости обладает одним из следующих трех свойств: либо все точки, ближайшие к ней, принадлежат множеству  (такая точка называется 129 внутренней точкой множества ), либо все точки, ближайшие к ней, множеству  не принадлежат (такая точка называется внешней точкой по отношению к множеству ), либо сколь угодно близко от нее расположены как точки множества , так и точки, множеству  не принадлежащие (такие точки называются граничными точками множества ). Точки, обладающие этими свойствами изображены кружками на рис. 24. Множество всех граничных точек множества называется его границей. Точки множества  можно разбить на три класса (рис. 25): - к первому классу относятся точки, которые, оставаясь во множестве , можно сдвинуть так, чтобы одновременно увеличились обе координаты (в этот класс попадают все внутренние точки множества  и часть его граничных точек, находящихся на кривой AD); - второй класс образуют граничные точки, перемещением которых по границе  можно увеличить только одну из координат при сохранении значения второй (горизонтальный отрезок АВ и вертикальный отрезок CD на границе ); - в третий класс попадут граничные точки, перемещение которых по границе  уменьшает одну из координат при одновременном увеличении другой (отрезок BС границы ). Рисунок 25 – Разбиение точек множества на классы Множество точек третьего класса принято называть границей (множеством) Парето данного множества . На рис. 26 приведены примеры границы Парето некоторых простейших множеств. Рисунок 26 – Примеры границ Парето (утолщенные линии) 130 Говоря нестрого, граница Парето множества  – это точки, из которых нельзя сдвинуться на «север», «восток» либо «северо-восток», оставаясь в том же множестве . Другими словами, в множество Парето не включаются такие решения, которые могут быть улучшены одновременно по обоим критериям. Укажем простое геометрическое правило, посредством которого можно выделять из заданного плоского множества его границу Парето. Рассмотрим пробный прямой угол, стороны которого сонаправлены координатным осям U и V (рис. 27). Положение этого пробного угла на плоскости однозначно определяется его вершиной Q. Перемещая пробный угол (параллельно самому себе), мы будем собирать только те точки заданного множества , которые можно совместить с точкой Q так, чтобы ни одна другая точка множества  не попадала ни внутрь этого угла, ни на одну из его сторон. Совокупность всех таких точек и будет искомой границей Парето для множества . Рисунок 27 – Определение границы Парето 4.2. Метод идеальной точки Рассмотрим постановку двухкритериальной задачи в общем виде: Пусть на плоскости (х,y) задано множество ω (рис. 28), и в каждой точке этого множества определены две непрерывные функции: U = Φ(x,y) и V = Ψ(x,y). Рисунок 28 – Множество, на котором заданы функции U и V Необходимо на множестве ω найти точку (x0,y0), в которой Φ(x0,y0) и Ψ(x0,y0) принимают максимальные значения. 131 Сразу же отметим, что в общем случае поставленная задача решения не имеет. В самом деле, изобразим на плоскости (U,V) все точки, координаты которых вычисляются по формулам U = Φ(x,y) и V = Ψ(x,y). Обозначим полученное множество через . Из рис. 29 видно, что Umax (наибольшее значение U) и Vmax (наибольшее значение V) достигаются в разных точках, а точка P с координатами (Umax, Vmax) лежит вне множества . Таким образом, в исходной постановке задача, вообще говоря, неразрешима - удовлетворить обоим требованиями одновременно невозможно. И, следовательно, нужно искать какое-то компромиссное решение. Рисунок 29 – Неразрешимость задачи Метод идеальной точки использует множество Парето, составленное из допустимых точек задачи, которые не могут быть «сдвинуты» в пределах допустимого множества с улучшением сразу по обоим критериям. На границе Парето отыскиваются точки, ближайшие к точке утопии P (точка утопии дает сочетание наилучших значений всех критериев, но обычно не удовлетворяет заданным ограничениям). Рассмотрим реализацию метода идеальной точки на конкретном примере. Пример Решить двухкритериальную задачу линейного программирования методом идеальной точки. U = 2 x1 − 2 x2 → max, V = −2 x1 − x2 → max, − x1 + 4 x2  20, 4 x1 + x2  22,  x − x  3, 2  x1 , x   1 2 0. Решение: 1. Построим область допустимых решений в плоскости x1Ox2 , определяемую системой ограничений (рис. 30). Областью допустимых решений задачи является пятиугольник OABCD. 132 Рисунок 30 – Область допустимых решений Примера 2. Построим в критериальной плоскости область, соответствующую области допустимых решений OABCD. Для этого необходимо найти координаты вершин. В нашем случае, очевидно, что O(0; 0), A(0; 5), B(4; 6), C(5; 2), D(3; 0), т.к. часть этих точек использовалась при построении прямых. В общем случае координаты точки пересечения двух прямых определяют совместным решением их уравнений, например, для точки С, которая является точкой пересечения (2) и (3) прямых необходимо решить систему: 4 x1 + x2 = 22, x1 − x2 = 3. Сложим уравнения, получим: 5x1 = 25  x1 = 5, x2 = x1 − 3 = 2 . Найдем координаты образов точек O, A, B, C, D в линейном преобразовании, определяемом целевыми функциями: O(0; 0)  U = 2  0 − 2  0 = 0, V = −2  0 − 0 = 0. Таким образом, O(0; 0) → O(0; 0). A(0; 5)  U = 2  0 − 2  5 = −10, V = −2  0 − 5 = −5. Таким образом, A(0; 5) → A(–10; –5). B(4; 6)  U = 2  4 − 2  6 = −4, V = −2  4 − 6 = −14. Таким образом, B(4; 6) → B(–4; –14). C(5; 2)  U = 2  5 − 2  2 = 6, V = −2  5 − 2 = −12. Таким образом, C(5; 2) → C(6; –12). D(3; 0)  U = 2  3 − 2  0 = 6, V = −2  3 − 0 = −6. Таким образом, D(3; 0) → D(6; –6). По найденным координатам точек построим в критериальной плоскости UOV образ многоугольника OABCD – многоугольник OABCD (рис. 31).  133 Рисунок 31 – Образ область допустимых решений Примера в плоскости UOV 3. В критериальной плоскости найдем границу Парето – северо-восточную границу области OABCD (рис. 32). Рисунок 32 – Граница Парето Точкой утопии, в которой достигается максимум одновременно по двум критериям U и V, является точка P: через самую высокую (северную) точку области OABCD провели горизонтальную прямую (через точку O) и через самую правую (восточную) точку области OABCD провели вертикальную прямую (через точки C и D); точка – точка пересечения горизонтальной и вертикальной прямой (рис. 33). 134 Рисунок 33 – Точка утопии 4. На границе Парето найдем идеальную точку – точку, наиболее близко расположенную к точке утопии. В нашем случае это основание перпендикуляра, опущенного из точки утопии Р на отрезок OD – точка M (рис.34). Рисунок 34 – Идеальная точка Найдем координаты точки M. Для этого найдем уравнение прямой OD. Воспользуемся уравнением прямой, проходящей через две точки: O(0; 0), D(6; –6): u − u1 v − v1 = , u2 − u1 v2 − v1 u−0 v−0 = , 6 − 0 −6 − 0 135 u v = . 6 −6 OD : u + v = 0. Найдем уравнение перпендикуляра, опущенного из точки утопии P на отрезок OD. Воспользуемся уравнением прямой с точкой и вектором нормали n : n1 (u − u0 ) + n2 (v − v0 ) = 0 . n = OD = (6 − 0; −6 − 0) = (6; −6), P(6;0)  6(u − 6) − 6(v − 0) = 0. Уравнение PM  : u − v = 6 . v = 0, Координаты точки М найдем из системы: uu + − v = 6. Сложим уравнения: 2u = 6  u = 3, v = −u = −3 . Таким образом, М(3; –3), а значит, компромиссное решение позволит достигнуть значений целевых функций: U = 3, V = –3.  5. Найдем координаты точки в плоскости x1Ox2 , которой соответствует точка М критериальной плоскости. Для этого решим систему уравнений: VU==−3,3. −22xx −−2xx ==−3,3. 2−3xx− =2x0. = 3, xx ==1.5, 0. 1 1 2 2 1 2 1 2 2 Получили, что компромиссным решением метода идеальной точки является M(1.5; 0) (рис. 35), в которой критерии достигают значений U = 3, V = –3. Рисунок 35 – Компромиссное решение задачи Эта точка принадлежит отрезку OD. Вопросы для самопроверки 1. 2. 3. 4. В чем отличие НП от задачи ЗЛП? В чем особенности нахождения решения задач НП? Для каких задач НП разработаны методы решения? В чем особенности графического решения задачи НП? 136 5. Какая функция называется функцией Лагранжа? Какой смысл множителей Лагранжа? 6. Сформулируйте условия Куна-Таккера. 7. Какие особенности имеет решение задачи выпуклого программирования? 137 ЛИТЕРАТУРА 1. Акулич И. Л. Математическое программирование в примерах и задачах: Учебное пособие. – Спб.: Лань, 2011. 352 с. 2. Галкина М. Ю. Методы оптимальных решений: учебно-методическое пособие – Новосибирск: СибГУТИ, 2016. 88 с. 3. Кузнецов А. В. Высшая математика. Математическое программирование: Учебник / А. В. Кузнецов, В. А. Сакович, Н. И. Холод. – СПб.: Лань, 2013. 352 c. 4. Кузнецов Ю. Н., Кузубов В. И., Волощенко А. Б. Математическое программирование: Учебное пособие – М.: Высшая школа, 1980. 300 c. 5. Липский В. Комбинаторика для программистов – М.: Мир, 1988. 200 с. 6. Юрьева А. А. Математическое программирование: Учебное пособие – Спб.: Лань, 2014. 432 с. 138 Учебное издание Галкина Марина Юрьевна Алгоритмы и вычислительные методы оптимизации Редактор Корректор Подписано в печать 01.01.2021. Формат бумаги 62 × 84/16, отпечатано на ризографе, шрифт № 10, п. л. – 8,4, заказ № , тираж – 50. Отдел рекламы и PR СибГУТИ 630102, г. Новосибирск, ул. Кирова, 86, офис 107, тел. (383) 269-83-18 139
«Алгоритмы и вычислительные методы оптимизации» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач

Тебе могут подойти лекции

Смотреть все 588 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot