Text
                    Профессиональное образование
ИЗДАТЕЛЬСКИЙ ДОМ
■е
|о
т т
CD
Ш
о
го


В. П. Агальцов МАТЕМАТИЧЕСКИЕ МЕТОДЫ в программировании Издание 2-е, переработанное и дополненное Рекомендовано Министерством образования Российской Федерации в качестве учебника для студентов учреждений среднего профессиона!ьного образования, обучающихся по группе специачьностей «Информатика и вычислительная техника» Электронно- Соответствует Ж?ШШШШШЩ Федеральному государственному ШШШЯШ образовательному стандарту IfiftMii**! з-го поколения znanium.com Москва ИД «ФОРУМ» 2015
УДК 51-7(075.32) ЬЬК 22.18я723 А23 Рецензенты: заведующий кафедрой «Математическая экономика» Московского института электроники и математики (технический университет) доктор физико-математических наук, профессор В. М. Четвериков; кандидат технических наук, доцент кафедры «Информатика» Российского государственного социального университета О. Н. Рубалъская Агальцов В. П. Математические методы в программировании: учебник. — 2-е изд., перераб. и доп.— М.: ИД «ФОРУМ», 2015. — 240 с: ил. — (Профессиональное образование). ISBN 978-5-8199-0410-7 Рассматриваются прикладные математические методы иЛюдели, в том числе методы математического программирования (поиск экстремума, лиг нейное, нелинейное, динамическое программирование), системы массового обслуживания. В книге особое внимание уделено целостному, простому и ясному изложению учебного материала. В учебнике показана связь между отдельными главами, использование однотипных методов (алгоритмов) для решения разных задач. Приведено подробное описание всех алгоритмов. Предназначен для учащихся средних специальных учебных заведений по группе специальностей «Информатика и вычислительная техника», также может быть полезен студентам высших учебных заведений, преподавателям и широком}' кругу программистов. УДК 51-7(075.32) ББК 22.18я723 ISBN 978-5-8199-0410-7 ©В. П. Агальцов, 2015 ©ИД «ФОРУМ», 2015
Горячо любимой Галине Серафимовне посвящаю Предисловие Проблема выполнения различных вычислений была актуальна во все времена. По мере развития общественно-экономических отношений усложнялись поставленные задачи, которые для своего решения требовали разработки новых методов вычислений. На смену простейшим арифметическим и геометрическим вычислениям пришли алгебраические и тригонометрические вычисления. Организация современного производства требует не только наличия современных станков и оборудования, но и разработки новых технологических процессов и современных методов управления производством. Для решения каждой из поставленных задач разрабатываются математические модели, анализируя которые удается найти наилучшее решение поставленной задачи. Создание математической модели — сложная и кропотливая работа, которая в современных условиях под силу коллективам разработчиков. Для создания математической модели одного и того же объекта различные коллективы могут использовать различный математический аппарат. В коллектив разработчиков математических моделей привлекаются высококвалифицированные специалисты, которые, с одной стороны, хорошо знают физические процессы, протекающие при работе объекта, и, с другой стороны, глубоко и всесторонне владеют соответствующим математическим аппаратом. После создания математической модели специалистами-аналитиками за дело принимаются специалисты-программисты, которые реализуют созданную модель в виде программных кодов. Далее с математической моделью работают специалисты-практики. Целенаправленно воздействуя на модель, они изучают ее поведение и подбирают оптимальный режим работы для реального объекта. Целью настоящего учебника является: научить студентов от словесного описания задачи перейти к абстрактной математической модели, реализовать математическую модель в виде программных кодов, провести исследование математической модели и получить вектор входных воздействий, доставляющий оптимальное решение. Конечно же, речь идет о простых математических моделях, позволяющих решить элементарные задачи. Учебник содержит девять глав, в которых рассмотрены следующие вопросы. В первой главе раскрыты основные принципы построения математических моделей, дана их классификация, введены основные определения.
Предисловие Вторая глава посвящена задаче линейного программирования и основному методу решения таких задач — симплексному методу. Показана последовательность решения задачи линейного программирования. В третьей главе рассматривается транспортная задача, т. е. нахождение оптимального плана перевозок грузов от производителей к потребителям. Рассмотрены три метода нахождения опорного плана перевозок и три метода нахождения оптимального плана перевозок. В четвертой главе даны методы целочисленного решения задачи линейного программирования. Простое округление результата, полученного симплексным методом, не приводит к приемлемому решению, и специальные целочисленные методы позволяют найти оптимальное целочисленное решение. В главе рассмотрены четыре метода. Пятая глава раскрывает принципы динамического программирования, позволяющие решить проблему нахождения оптимального (кратчайшего) пути при сооружении различных хозяйственных объектов. В шестой главе рассмотрены методы решения нелинейных задач. Некоторые практические задачи невозможно описать линейными уравнениями и необходимо использовать трудоемкие методы нелинейного программирования. В главе рассмотрены три метода. Седьмая глава посвящена сетевому планированию производства и распределения ресурсов. Излагаются вопросы, связанные с составлением сетевого графика выполнения работ, нахождения критического пути и определения временных ресурсов. В восьмой главе рассматриваются вопросы, связанные с функционированием систем массового обслуживания, определением характеристик этих систем и финальных вероятностей состояний системы. Девятая глава посвящена исследованию игровых моделей и поиску стратегий поведения в условиях полной или частичной неопределенности. Результаты исследования модели носят рекомендательный характер, позволяют ориентироваться в сложившейся ситуации и принять правильное решение. Учебник написан в полном соответствии с требованиями Государственного образовательного стандарта по специальностям 230105 и 230103 к минимуму знаний и практических умений. Объем учебника соответствует количеству часов аудиторных занятий по дисциплине «Математические методы». Автор будет благодарен читателям, которые пожелают прислать свои замечания и уточнения к тексту учебника по адресу редакции: forum- books@mail.ru.
Глава 1 Понятие модели 1.1. Классификация моделей По мере развития науки и техники перед человеком все чаще встает проблема: «Как найти правильное решение?». Для облегчения решения этой задачи реальные процессы (или объекты) заменяются их аналогами или моделями. Затем производится анализ поведения модели в тех или иных условиях с помощью персонального компьютера. В этом случае говорят о компьютерном моделировании. Но персональный компьютер может работать только с математическими моделями, которые с помощью языков программирования переводятся в набор машинных кодов, которые и обрабатывает персональный компьютер. Какое же место занимают математические модели и как они получаются? Современные технические и экономические системы (объекты или процессы) имеют устойчивую тенденцию усложнения в своем развитии. Очень часто нельзя поставить эксперимент на реальной системе (объекте или процессе) по многим причинам: громоздкость систем и, как следствие, невозможно правильно управлять многими параметрами, длительность по времени прохождения процессов в реальной системе, слишком большая цена ошибки при неправильном управлении системой и т. д. Для изучения сложных систем различных видов, с целью оптимального управления ими необходимо создать их модели. На этих моделях изучается поведение реальных систем (объектов или процессов), влияние различных внешних воздействий на работу системы, изучение закономерностей их функционирования и развития. Построение математической модели процесса, явления или объекта начинается с построения упрощенного варианта модели, в котором учитываются только основные черты. В результате просле-
£ Глава 1. Понятие модели живаются основные связи между входными параметрами, ограничениями и показателем эффективности. Общего подхода к построению модели нет. В каждом конкретном случае при построении математической модели учитывается большое количество факторов: цель построения модели, круг решаемых задач, точность описания модели и точность выполнения вычислений. Математическая модель должна отражать все существенные факторы, определяющие ее поведение, и при этом быть простой и удобной для восприятия результатов. Каждая математическая модель процесса, явления или объекта в своей основе имеет математический количественный метод. Применение математических количественных методов для обоснования выбора того или иного управляющего решения во всех областях человеческой деятельности называется исследованием операций. Целью исследования операций является нахождение с использованием специального математического аппарата решения, удовлетворяющего заданным условиям. На самом деле при решении практически любой задачи имеется неограниченное количество решений. Множество решений, удовлетворяющих заданным условиям (ограничениям), называется допустимым множеством решений. Выбор из множества допустимых решений одного решения, наилучшего в каком-либо смысле, называемого оптимальным решением, и есть задача исследования операций. Надо помнить, что оптимальное решение является наилучшим только при заданных ограничениях. Если изменить ограничения (увеличить или уменьшить ресурсы), то и оптимальное решение будет другим. При решении задачи исследования операций без ограничений на ресурсы можно ставить вопрос о нахождении наилучшего решения среди локальных оптимальных решений. Такое наилучшее решение называется глобальным экстремумом (минимумом или максимумом). Нахождение глобального экстремума — очень сложная задача и, как правило, найти его не удается. Поиск локального или глобального экстремума выполняется набором некоторых действий, подчиняющихся общей идее определения экстремума (плану поиска решения), оформленной в виде алгоритма поиска. Каждое отдельное действие, входящее в план решения, называется операцией. Операция всегда является управляемым воздействием на модель исследуемого объекта, т. е. исследователь задает набор входных воздействий на модель и получает реакцию на выполненное воздействие. Анализируя реакции на
1.1. Классификация моделей 7 входные воздействия, исследователь делает вывод: достигнут или нет экстремум. К настоящему времени известно большое количество моделей. Так что же такое модель? Полного и всеобъемлющего определения модели не существует. Применительно к тому или иному виду деятельности человека вводится понятие модели. В роли модели может выступать: набор формул, увеличенный или уменьшенный макет реального объекта, схемы, чертежи, рисунки и т.д. Для каждого объекта (или явления) можно создать несколько моделей, которые отличаются друг от друга степенью точности (адекватности) оригиналу. Также модели различаются по их назначению: для ознакомления с внешним видом объекта, для изучения структуры и функционирования объекта, для изучения законов развития и протекания явления, для управления объектом, для прогноза работы объекта или протекания явления и т. д. Таким образом, учитывая сказанное, можно дать следующее определение модели. Модель — это материальный или идеальный объект, заменяю- щий оригинал, наделенный основными характеристиками (чертами) оригинала и предназначенный для проведения некоторых дей- ствий над ним с целью получения новых сведений об оригинале. Примеры моделей: 1. Рисунок будущего здания. По этой модели можно оценить эстетические особенности здания, как оно вписывается в существующую застройку и т. д. 2. Макет радиотелеграфа. Макет представляет собой уменьшенную копию реального радиотелеграфа и воспроизводит основные функциональные возможности оригинала. Эта модель предназначена для изучения основных принципов работы радиотелеграфа. 3. Электрическая схема радиоприемника. Во время проведения лекций по радиотехнике по этой модели удобно рассказывать о назначении отдельных узлов (блоков) радиоприемника. 4. Система уравнений, описывающих полет артиллерийского снаряда. В этой модели в качестве коэффициентов используют массу порохового заряда, массу снаряда, угол наклона ствола орудия и т. д.
8 Глава 1. Понятие модели Также учитываются сопутствующие явления, например направление и сила ветра. Проведя необходимые расчеты, можно определить траекторию полета снаряда и место его падения. Исходя из вышесказанного, можно предложить следующую классификацию моделей (рис. 1.1). Интерактивные Знаковые Рис. 1.1. Классификация моделей Материальные модели. Модели этой группы реализованы в виде реальных физических объектов — макетов. Как правило, макет — это увеличенная или уменьшенная копия реального объекта. Макеты связаны с оригиналом различными характеристиками: геометрическими, физическими и т.д. Изучение оригинала производится путем воздействия на макет и обработкой реакций макета на суммарное воздействие. Такой метод исследования называется экспериментальным. Материальные модели подразделяются на макеты подобия (физические модели) и заменяющие макеты (аналоговые модели). Для создания аналоговых моделей используется принцип подобия. Различные по физической природе явления могут описываться одинаковыми математическими уравнениями, что допускает исследование различных явлений на одной модели. Идеальные модели. В этом случае создается либо мысленный образ (сущность) объекта или явления в памяти человека или компьютера, либо абстрактная математическая модель. Такая модель носит теоретический характер. Идеальные модели подразделяются на: • сущностные (интерактивные), создаваемые в памяти человека или компьютера, для создания которых, как правило, не требуется строгих уравнений. Законы функционирования таких моделей строятся на ситуациях и предположениях, основанных на наблюдениях за оригиналом (объектом или явлением);
1.1. Классификация моделей символьные, построенные на наборе символов: алфавит, пиктограммы, технические символы и т. д. Символьные модели выступают в виде графиков, чертежей, рисунков, текстов, формул и т.д. Одним из видов символьных моделей являются математические модели (рис. 1.2). 0> 3 X 0Q 5 fa X кри Дес Математические модели а> 3 X X о X я сз миз Опти У \^ 3 0Q О Игр 0> 3 X X о щ S 3 X 5 X а> Рн кри Много 3 я с; о а> О* п я 25 § прог Рис. 1.2. Классификация математических моделей Компьютерное моделирование имеет дело с математическими моделями. С помощью математических уравнений можно описать принцип функционирования практически любого реального объекта, явления или процесса, протекающего в природе, экономике или обществе. Естественно, что для описания всего многообразия объектов и явлений используется различный математический аппарат, что и определяет многообразие математических моделей (рис. 1.2). По степени точности математические модели бывают аналитические и статистические. В аналитических моделях устанавливаются точные зависимости между входными параметрами и выходным параметром целевой функции (критерием эффективности). Эти зависимости записываются в виде алгебраических уравнений, дифференциальных уравнений, уравнений в частных производных и т.д. Аналитические модели используются для описания простых процессов, явлений и объектов и учитывают небольшое количество факторов. Такие модели грубы, но лучше приспособлены к отысканию оптимального решения и имеют наглядные и простые решения. Если поведение модели зависит от многих факторов (входных параметров и ограничений), носящих случайный характер и коррели-
10 Глава 1. Понятие модели рованных между собой, то аналитическую модель, как правило; построить невозможно и в этом случае используют статистическую модель. Статистическая модель строится на основе данных (наблюдений) за поведением реального процесса, явления или объекта. Исходные данные носят случайный характер. Каждое воздействие на такую модель называется реализацией. Реализация состоит из цепочки расчетов, выполняемых по специально разработанной процедуре, которая учитывает влияние случайных факторов. После выполнения большого количества реализаций полученные результаты обрабатываются специальными методами. В результате получают усредненные характеристики (математическое ожидание и дисперсия) процесса, явления или объекта. Статистические модели позволяют учитывать большое количество факторов, более точны, чем аналитические модели, но более громоздки и требуют много машинного времени для получения результата. Полученные результаты носят усредненный (приближенный) характер, плохо воспринимаются, плохо приспособлены к поиску оптимального решения. Дескриптивные модели — описательные модели (description — описание). Объект, явление или процесс описываются математическими уравнениями (законами функционирования). Наиболее часто дескриптивные модели используются в механике, физике, химии и т.д. и описывают протекающие процессы без вмешательства в ход событий. Оптимизационные модели предназначены для управления объектом, явлением или процессом. И строятся с целью получения наилучших результатов при изменении управляющих факторов (параметров). Игровые модели. Применяются для управления процессами, которые противодействуют исследователю. Имитационные модели. Используются для моделирования сложных технических систем или общественных процессов, когда не ясно, какую цель или цели надо достигнуть. То есть речь идет о прогнозе развития системы или процесса в зависимости от принятой стратегии управления. Многокритериальные модели. Применяются для нахождения наилучшего решения по нескольким целевым функциям (направлениям). Модели прогнозирования. Позволяют создать прогноз о поведении объекта или системы. Прогноз носит приближенный характер и используется для принятия решения ответственным лицом.
1.1. Классификация моделей И При построении математической модели необходимо обеспечить достаточную точность вычислений (точность решения) и необходимую подробность модели. Любая математическая модель включает в себя описание основных, т. е. необходимых для исследования свойств и законов функционирования исследуемого объекта, процесса или явления. Нет практической необходимости учитывать абсолютно все свойства и законы функционирования исследуемого объекта, процесса или явления, так как учет второстепенных свойств приводит к неоправданному увеличению сложности математической модели и, как правило, полученные решения (результаты) трудно объяснимы. Надо стремиться к построению более простых математических моделей, но адекватно (при заданных условиях исследования) отображающих объект, процесс или явление. При составлении математической модели надо избегать двух крайностей: чрезмерной детализации и чрезмерного огрубления модели. Для создания математической модели надо обладать глубокими и разносторонними знаниями. Прежде всего, надо знать сущность исследуемого объекта, процесса или явления. Очень хорошо представлять связи между отдельными протекающими процессами и составляющими единое целое — единый исследуемый процесс (явление). С другой стороны, надо хорошо знать математический аппарат для описания каждого из протекающих процессов и математический способ объединения отдельных процессов в единый процесс. Как правило, таких специалистов мало и созданием математических моделей занимаются научные коллективы. Создание одной математической модели объекта, процесса или явления не гарантирует получения точных (хороших) результатов. Поэтому для исследования одного объекта, процесса или явления составляют несколько математических моделей и желательно созданных различными научными коллективами. Если результаты исследования одного и того же объекта, процесса или явления на разных математических моделях дали одни и те же (или близкие) результаты, то это может служить серьезным основанием того, что математические модели адекватны исследуемому объекту, процессу или явлению и дают правильное представление об объекте, процессе или явлении. Для работы с математическими моделями необходимо познакомиться с терминами и определениями. В своей основе каждая математическая модель имеет целевую функцию, которая описывает функционирование реального объекта, процесса или явления. В за-
12 Глава 1. Понятие модели висимости от исследуемого (моделируемого) объекта, явления или процесса целевая функция может быть представлена одной функциональной зависимостью, системой уравнений (линейных, нелинейных, дифференциальных и т. д.), набором статистических данных и т. д. При работе с целевой функцией исследователь воздействует на нее через набор входных параметров (рис. 1.3). Входной параметр 1 Входной параметр 2 Входной параметр 3 Входной параметр п - 1 Входной параметр л Модель системы (объекта или процесса) Выходной параметр 1 Выходной параметр 2 Выходной параметр 3 Выходной параметр т - 1 Выходной параметр т Рис. 1.3. Обобщенная схема математической модели Реакция математической модели (целевой функции) на набор входных воздействий (вектор входных параметров) называется решением (вектор выходных параметров). Так как исследователь может подавать на математическую модель множество наборов входных параметров, то в его распоряжении будет находиться множество решений. Лучшее, по заранее оговоренным признакам, решение называется оптимальным. При работе с математическими моделями необходимо построить кратчайший алгоритм по поиску оптимального решения, т. е. набор входных параметров задается по определенному плану (алгоритму). В большинстве исследуемых математических моделей не удается указать единственное оптимальное решение по многим причинам: • единственное глобальное оптимальное решение может быть найдено при отсутствии ограничений на значения входных параметров, чего на практике не бывает; • для поиска глобального оптимального решения необходимо выполнить большой объем вычислений и, следовательно, затратить много машинного времени, что тоже невозможно; • глобальное оптимальное решение отсутствует и можно говорить о нескольких одинаковых локальных решениях; • локальных оптимальных решений множество, в этом случае говорят об области допустимых решений, которую иногда называют областью Парето.
1.1. Классификация моделей /3 При работе с математическими моделями надо иметь в виду, что оптимальное решение может быть представлено как одним значением, так и набором значений (вектором). Кроме набора входных параметров и одного (или нескольких) значения оптимального решения исследователю приходится иметь дело с ограничениями на значения входных параметров (или просто ограничениями). Ограничения могут быть заданы в виде равенств или неравенств и описаны как линейными зависимостями, так и нелинейными. По способу реализации математические модели можно разделить следующим образом. 1. Линейное программирование. Математическая модель целиком (целевая функция и ограничения) описывается уравнениями первого порядка. Линейное программирование включает в себя несколько методов решения (задач): • симплексный; • графический; • транспортная задача; • целочисленное программирование. 2. Нелинейное программирование. Целевая функция и ограничения, составляющие математическую модель, содержат хотя бы одно нелинейное уравнение (уравнение второго порядка и выше). Нелинейное программирование содержит несколько методов решения (задач): • графический; • методы прямого поиска; • регулярного симплекса; • деформируемого многогранника (Нелдера - Мида); • градиентный. 3. Динамическое программирование. Ориентировано на решение задач прокладки магистралей кратчайшим путем и перераспределения различных видов ресурсов. 4. Сетевое планирование. Решает проблему построения графика выполнения работ, рас: пределения производственных, финансовых и трудовых ресурсов. 5. Принятие решений и элементы планирования. В этом случае в качестве целевой функции выступает набор статистических данных или некоторые данные прогноза. Решением задачи являются рекомендации о способах поведения (стратегии).
14 Глава 1. Понятие модели Решение носит рекомендательный характер (приблизительное решение). Выбор стратегии целиком остается за человеком — ответственным лицом, принимающим решение. Для принятия решения разработаны следующие теории: • теория игр; • системы массового обслуживания. 1.2. Примеры Линейные уравнения широко используются при создании экономических моделей в любой отрасли производства. Если известны нормы затрат я, какого-либо сырья на производство изделия f-го вида и объем запаса этого вида сырья на какой-то период времени, то можем записать программу выпуска изделий на данном предприятии п ахХ{ + Я2*2 + ^3*3 + • • • + апХп = Ь ИЛИ Tj aiXi ~ Ь- /=1 Пример 1.1 На складе имеется 300 кг сырья. Надо изготовить два вида продукции. На изготовление первого изделия требуется 2 кг сырья, а на изготовление второго изделия — 5 кг. Определить план выпуска двух изделий. Можно записать следующее уравнение: 2х\ + 5 х2 = 300. Отложим на осях координат максимальные объемы выпуска первого и второго изделий и соединим их прямой линией. Любая точка на этой прямой соответствует одному из допустимых планов выпуска изделий (рис. 1.4). 60 L 150 *' Рис. 1.4. Геометрическое представление уравнения баланса наличия и потребления ресурса
1.2. Примеры /5 Пример 1.2 На двух предприятиях надо разместить заказ на 200 изделий. В результате проведенных исследований на этих предприятиях выяснилось, что затраты на изготовление х изделий на первом предприятии составляют 4 л2, а на втором — 20 х + бх2. Количество изделий в партиях различное. Определить план выпуска изделий на каждом предприятии при условии, чтобы общие затраты были минимальны. Составим уравнение суммарных затрат: 4х2 + 20х2 + 6x1 -> min; х{+х2= 200 — ограничение на общее количество изделий; х{ > 0; х2 > 0 — количество изделий должно быть положительным числом; X = (*,, х2) — вектор решения. Решение хх = 200-х2; 4х2 +20х2 +6х2 =4(200-х2)2 + 20дг2 +6х22 = = 10х2 -1580х2 +160000 -> min; 10jc2-1580jc2 +160000 = 0. Возьмем первую производную: 20х2-1580 = 0; 2 20 х{ =200-79 = 121. Ответ: Х(121, 79). Пример 1.3 Фермер может сегодня собрать 120 т картофеля. Цена за 1 кг картофеля сегодня составляет 10 рублей. Если картофель не выкапывать, то каждую неделю урожай будет увеличиваться на 20 т, цена за 1 кг уменьшаться на 1 рубль. Когда надо собрать урожай, чтобы получить максимальную прибыль?
16 Глава 1. Понятие модели Решение Обозначим через х количество недель. (120 + 20л:)(Ю - х)=1200 -120* + 200* - 20х2 = = 1200 + 80л: - 20л:2 -> max. Возьмем первую производную: 1200 + 80x-20jc2=0; 80л: - 40л: = 0; х = 2. Ответ: через 2 недели. Контрольные вопросы 1. Что такое модель? 2. Приведите классификацию моделей. 3. Дайте понятие каждого типа моделей. 4. Какие вы знаете виды математических моделей? 5. Дайте определение целевой функции. 6. Что такое область допустимых решений? 7. Что называется допустимым решением, оптимальным решением?
Глава 2 Линейное программирование 2.1. Основные понятия и определения Первое упоминание (1938 г.) о математических методах в эффективном управлении производством принадлежит советскому математику Л. В. Канторовичу. Год спустя, в 1939 г., Л. В. Канторович опубликовал работу «Математические методы организации и планирования производства» и практически применил полученные результаты. Термин «линейное программирование» ввели американские математики Дж. Данциг и Т. Купманс в конце 40-х годов. Дж. Данциг разработал математический аппарат симплексного метода решения задач линейного программирования (1951 г.). Симплексный метод находит применение для решения широкого круга задач линейного программирования и до настоящего времени является одним из основных методов. Линейное программирование — это раздел математики, ориентированный на нахождение экстремума (максимума или минимума) в задачах, которые описываются линейными уравнениями. Причем линейными уравнениями описывается как сама целевая функция, так и входные параметры (переменные) условия ограничений на входные параметры. Необходимым условием задач линейного программирования является обязательное наличие ограничений на ресурсы (сырье, материалы, финансы, спрос произведенной продукции и т.д.). Другим важным условием решения задачи является выбор критерия останова алгоритма, т. е. целевая функция должна быть оптимальна в некотором смысле. Оптимальность целевой функции должна быть выражена количественно. Если целевая функция представлена одним или двумя уравнениями, то на практике такие задачи решаются достаточно легко. Критерий останова алгоритма (или критерий оптимальности) должен удовлетворять следующим требованиям: 1) быть единственным для данной задачи; 2- 1962
18 Глава 2. Линейное программирование 2) измеряться в единицах количества; 3) линейно зависеть от входных параметров. Исходя из вышесказанного, можно сформулировать задачу линейного программирования в общем виде: найти экстремум целевой функции F(x) = сххх + с2х2 + с3х3 +... + cnxn -> max(min) (2.1) при ограничениях в виде равенств: [*11*1 + *12*2 + *13*3 + - + Q\nXn = Ьх\ J alxxx + а22х2 + а23х3 +... + а2пх„ = Ь2; (2.2) 1*1.1*1 + ап2Х2 + *„3*3 + - + *„m*„ = ^ при ограничениях в виде неравенств: \арЛ + *р2*2 +*,3*3 +- + *яЛ < V К,*, +яг2*2 + аг3х3 +... + атх„<ЬГ; (2.3) [nvlx, + av2x2 + av3x3 +... + v„ < bv; и условиях неотрицательности входных параметров: х,>0; jc2 >0; ...; xnZ0. В краткой форме задача линейного программирования может быть записана так: (2.4) (2.5) /=1 при условии Yjaijxi ^bi (или ^bi) приу = 1, 2,..., /и, х, >0, / = 1,и, (2.6) ы где jci ,..., х„ — входные переменные; си ..., с„\ а\и .., <*nv\ b\, ..., Av — числа положительные, отрицательные и равные нулю. В матричной форме эта задача может быть записана так: СХ -> max, при Ах < b или Ajc > b; jc > 0 (2.7) «11 °21 <>т\ С| °12 °22 °*2 С2 в13 " а2Ъ •• атг - с3 •• • <*и • Ощ • ат» ■ сп ь ьг ьт или (2.8), (2.9)
2.2. Графический метод 19 Задачи линейного программирования можно решить аналитически и графически. 2.2. Графический метод Графические методы решения более наглядны, но имеют ограниченный круг использования — число неизвестных переменных должно быть не более трех. Только в этом случае решение задачи можно наглядно отобразить на бумаге или экране монитора. Пример 2.1 Пусть задано уравнение прямой: Лхх + 5 хч = 10. Преобразуем данное уравнение: 0,4 х\ + 0,5 хч = 1. Теперь построим прямую линию (рис. 2.1, а). Если вместо уравнения написать неравенство: 4х\ + 5 хч < 10, то график примет вид (рис. 2.1, б). Рис. 2.1. Решение линейного уравнения Линейное уравнение с двумя неизвестными отображается на плоскости прямой линией (рис. 2.1, а), линейное неравенство — полуплоскостью (рис, 2.1, б). Из рис. 2.1, б видно, что часть плоскости, расположенная под линией со штриховкой, удовлетворяет неравенству и называется областью допустимых решений (ОДР) или областью Парето. Аналогичным образом можно показать решение системы линейных уравнений. Пусть дана система линейных неравенств: fo+lOj^lO; Гх,/10 + дс2^1; < 2хх + х2 <9; или < 2хх/9 + х2/9< 1; [15jc, +2jc2<24; [5xJS + x2/l2<l. 2*
20 Глава 2. Линейное программирование Выполним аналогичные построения (рис. 2.2, а) и получим область допустимых значений, ограниченную ломаной линией ABCD. Зададим простейшую целевую функцию — прямую линию под углом наклона 135°. Уравнение этой линии имеет вид: F = хх + jc2 и графически отображено пунктирной линией на рис. 2.2,6. Любая точка внутри области Парето и на границе этой области будет допустимым решением. Если надо определить максимум целевой функции F, то пунктирную линию надо перемещать параллельно себе в направлении стрелки (увеличения значений целевой функции). Понятно, что максимальное значение функции F будет достигнуто в точке В. Аналогичные рассуждения можно выполнить и для w-мерной задачи, но графическую интерпретацию выполнить не удастся. а б Рис. 2.2. Графический метод нахождения оптимального решения: а — область допустимых решений; б — нахождение оптимального решения; 1 —дг, + 10дг2 = 10; 2 — 2дс, + х2 = 9; 3 — 15дс, + 2х2 = 24 Таким образом, задача линейного программирования сводится к построению линий ограничений, определению точек пересечения линий ограничений, вычислению значений целевой функции в точках пересечений и выбора точки с максимальным значением целевой функции. Поэтому большинство методов линейного программирования сводится к определению точек пересечения, способу перехода от одной точки к другой, вычислению значения целевой функции в очередной точке пересечения и выбору оптимальной точки.
2.3. Математический аппарат задач линейного программирования 21 2.3. Математический аппарат задач линейного программирования К задачам линейного программирования (ЗЛП) относятся такие задачи, для которых целевая функция F(x) описывается линейным уравнением и область допустимых решений D также задается линейными равенствами или линейными неравенствами. Математическое описание ЗЛП представлено выражениями (2.1) — (2.9). Если выражения, ограничивающие область допустимых решений Д записаны в виде неравенств, то необходимо выполнить некоторые преобразования и неравенства перевести в равенства. Если левая часть выражения неравенства меньше или равна свободному члену, то в левую часть выражения добавляют новую переменную со знаком плюс и знак неравенства заменяют на знак равенства: 2х1-5х2-х3<8 -> 2xl-5x2-x3+x4=S. Если левая часть выражения неравенства больше или равна свободному члену, то в левую часть выражения добавляют новую переменную со знаком минус и знак неравенства заменяют на знак равенства: jc, -3jc2 + 5jc3 > 2 -> хх -Зх2 + 5jc3 -jc4 = 2. Если равенства, как заданные так и преобразованные, ограничивающие область допустимых решений Д содержат отрицательные свободные члены, то необходимо выполнить преобразование и свободные члены сделать положительными. Для этого надо каждый член равенства умножить на минус единицу (-1): — jc, +2jc3 -4jc4 = -7 -> хх -2jc3 + 4jc4 = 7. Далее для работы с задачей линейного программирования уравнение целевой функции и уравнения ограничений приведем к каноническому виду. Приведение уравнений к каноническому виду рассмотрим на примере. Пример 2.2 Найти максимальное значение целевой функции F^ =3х{ +x2 +5jc3 при заданных ограничениях: Г- jc, + Зд:2 + 2хг = 9; \ Ъх2 + 2jc3 < 5; [2х, -х3>4.
22 Глава 2. Линейное программирование Выполним преобразование двух последних неравенств. 3jc2 + 2jc3 < 5 —> 3jc2 +2jc3 +jc4 =5. 2jc,-jc3>4 2jc, •x3-x5=4. Система ограничений примет вид: f- х{ + Зх2 + 2хъ = 9; Зх2 + 2х3 + х4 = 5; 2jCj -jc3 -jc5 =4. Для того чтобы преобразовать целевую функцию и систему уравнений ограничений к каноническому виду, надо добавить недостающие переменные с нулевым коэффициентом в каждое уравнение. Будем иметь задачу линейного программирования в канонической форме: Г-Ц+3jc2+ 2jc3+0jc4+0jc5 =9; 10х{ + 3jc2 + 2jc3 + 1jc4 + 0jc5 = 5; 1 2jc, +0jc2 — 1jc3 +0jc4 — 1jc5 =4; [3jCj +1 x2 + 5jc3 + 0jc4 + 0jc5 . Если оставить одни коэффициенты при переменных, то будем иметь задачу линейного программирования в матричном виде. b -1 0 2 3 3 0 2 2 -1 0 1 0 0 0 -1 9 5 4 или в краткой форме — 1 1 5 0 О" где А — матрица, составленная из коэффициентов уравнений ограничений; b — вектор ресурсов (вектор свободных членов); с — вектор решений (вектор коэффициентов целевой функции). Без доказательства приведем две леммы. Лемма 1. Если для канонической ЗЛП вектор решений с не содержит положительных элементов и является допустимым планом для данной ЗЛП, то этот вектор является оптимальным планом для данной ЗЛП. Из леммы 1 вытекает, что, если после выполнения некоторых математических действий над канонической матрицей ЗЛП добиться состояния, когда все значения элементов вектора решений будут отрицательными или равными нулю, будет найдено оптимальное решение. Таким образом, критерием остановки вычислительного алгоритма будет указанное состояние элементов вектора решений. Лемма 2. Если для канонической ЗЛП вектор решений с содержит положительные и большие нуля элементы (или один элемент) и
2.3. Математический аппарат задач линейного программирования 23 является допустимым планом для данной ЗЛП, то этот вектор является опорным планом для данной ЗЛП. Из леммы 2 следует, что, выполняя некоторые математические действия над канонической ЗЛП и переходя от одного опорного плана к другому, надо добиваться увеличения количества отрицательных или нулевых элементов в векторе решений. Задачи линейного программирования носят двойственный характер. Рассмотренная выше задача (2.1) — (2.9) называется прямой задачей линейного программирования. Если в прямой ЗЛП задано нахождение максимального значения целевой функции, то в двойственной (или обратной) ЗЛП — нахождение минимума целевой функции. Правило составления обратной ЗЛП таково. Вместо неизвестных величин х в прямой ЗЛП вводятся новые неизвестные переменные у, количество которых равно количеству выражений ограничений в прямой ЗЛИ Количество выражений ограничений в обратной ЗЛП будет равно количеству неизвестных в целевой функции прямой ЗЛП. Коэффициентами каждого выражения ограничения обратной ЗЛП будут соответственно коэффициенты одной переменной из всех выражений ограничений прямой ЗЛП. Причем в обратной ЗЛП знаки неравенств меняются на противоположные. В качестве свободных членов для каждого выражения ограничения будут соответствующие коэффициенты переменных целевой функции прямой ЗЛП. Коэффициентами целевой функции обратной ЗЛП будут сво- бодные члены выражений ограничений прямой ЗЛП. Рассмотрим порядок составления обратной ЗЛП на примере. Прямая ЗЛП Целевая функция: Ограничения: Г- JCj + 3jc2 + 2x3 = 6; I3jc2+2jc4<3; |2jc2-jc3>4; [2jc, -3jc3 +2jc4 <8. Обратная ЗЛП Целевая функция: Т(у) = бУх + 3J>2 + 4у3 + 8у4 -> Ограничения: -У1+2.у4=1; Зу,+3у2+2у3>4; [2у2+2у4>2. тт.
24 Глава 2. Линейное программирование Также без доказательства приведем две теоремы. Теорема 1. Если прямая ЗЛП (или обратная ЗЛП) имеет оптимальное решение, то и двойственная ей ЗЛП имеет также оптимальное решение. И аналогично, если прямая ЗЛП (или обратная ЗЛП) не имеет решения (отсутствует область допустимых решений), то и двойственная ей ЗЛП также не имеет решения. Теорема 2. Допустимое решение двойственной задачи (векторы Хи Y) будет оптимальным в том и только том случае, если это решение удовлетворяет условию: z^-». = 0: = 0. 2.4. Симплексный метод Рассмотренный выше графический метод решения систем линейных уравнений не всегда применим. Универсальным методом решения систем линейных уравнений является симплексный метод. Идея симплексного метода состоит в том, что поставленная описательная задача переводится в математическую форму. Математическая формулировка задачи содержит уравнение целевой функции с указанием желаемого результата — определение минимума или максимума целевой функции; системы линейных ограничений, заданных равенствами или неравенствами. Полученное математическое описание приводят к каноническому виду. Затем математическое описание задачи приводят к матричной форме. После того как система линейных уравнений приведена к матричной форме, приступают к решению задачи линейного программирования. Алгоритм решения этой задачи состоит из последовательности построения матриц. Каждый шаг решения приближает к получению желаемого результата. Алгоритм решения следующий: 1) определить ведущий столбец; 2) определить ведущий элемент; 3) определить ведущую строку;
2.4. Симплексный метод 25 4) составить уравнения пересчета матрицы; 5) выполнить пересчет матрицы; 6) проверить результаты пересчета матрицы на оптимальность; 7) если найденное решение оптимально, то вычисления прекратить и сформулировать ответ. Если найденное решение не оптимально, то перейти к п. 1. Признаком оптимальности решения является наличие в векторе решений только отрицательных или нулевых значений коэффициентов, как для фактических переменных, так и для фиктивных переменных (при решении задачи на поиск максимума). Столбец в канонической задаче линейного программирования называется правильным, если все его элементы равны нулю, кроме единственного положительного и равного единице. Вся матрица в канонической задаче линейного программирования называется правильной, если она содержит минимум т правильных столбцов (где т равно числу строк в матрице). Все правильные столбцы должны содержать единицы в разных строках матрицы. Ответ записывается следующим образом: каждому отрицательному коэффициенту в векторе решений ставится в соответствие нулевой коэффициент для соответствующей переменной в ответе; для каждого нулевого коэффициента в векторе решений (т. е. для правильного столбца) ставится в соответствие значение свободного члена (из вектора Ь) из строки, содержащей единицу в столбце данной переменной. Фиктивные переменные в ответе не учитываются. Ведущим столбцом может быть назначен любой столбец t матрицы, удовлетворяющий одному из условий: • первый столбец, содержащий положительный элемент (кроме нуля) в строке (векторе) решений; • столбец, содержащий наибольший положительный элемент в строке (векторе) решений; • если столбец t удовлетворяет условию: оо Г »о 1 -*—*- = max \ с0 min—\ при решении задач на max; (2.10 а) c,ak - = min \ с° max—\ при решении задач на min, (2.106)
26 Глава 2. Линейное программирование причем с° — коэффициент целевой функции в столбце j и я? — коэффициент в столбцеу выбранной строки / матрицы А. Третий способ определения ведущего элемента матрицы А приводит к самому короткому решению задачи, так как первые два способа носят формальный (произвольный) характер. Вычисления по формуле (2.10) выполняются только для положительных и больших нуля элементов столбца [2, 3,4, 5, 7]. Критерием останова алгоритма поиска решения будет: Для поиска max целевой функции — все коэффициенты вектора решений или равны нулю, или отрицательны. Для поиска min целевой функции — все коэффициенты векто- ра решений или равны нулю, или положительны. Критерий останова алгоритма сформулирован для задач, целевая функция которых содержит только положительные коэффициенты. Для решения задач в общем виде данный критерий будет уточнен. Рассмотрим работу симплексного метода на примере. Пример 2.3 Найти максимум целевой функции: FM = х, + 2х2 + х3 + 2х4 (2.11) при наложенных ограничениях: Гх1+х2+3х4<8; J2x,+3x2+x,^14; (2.12) [х2 +2х3 +4jc4 =9. Для решения поставленной задачи заменим ограничения, заданные в виде неравенств, на ограничения в виде равенств. Над ограничениями выполним действия, указанные в § 2.2. В нашем примере первое неравенство имеет вид: х\ + х2 + 3 х4 ^ 8, и, применив первое условие, получим: jci + х2 + Зх4 + х5 = 8; второе ограничение имеет вид 2х\ + 3 хг + хз > 14, применив к нему второе правило, получим: 2х\ + Зх2 + х3 -х6 = 14; третье ограничение задано в виде равенства, поэтому: х2 + 2х3 + 4jc4 = 9. Уравнения ограничений после проведенных преобразований выделены жирным шрифтом. Преобразуем полученные уравнения в каноническую форму, т. е. добавим нулевые члены в каждое уравнение.
2.4. Симплексный метод 27 jcj + jc2 + Ojc3 + 3jc4 + jc5 + 0jc6 = 8; 2xx + 3jc2 + jc3 + 0jc4 +Ojc5 -jc6 =14; (2.13) | Олг, + jc? + 2s, +4jc4 + 0jcs +0jc^ =9; F(x) = *i + 2jc2 + jc3 + 2x4 + 0x5 + 0jc6 => max — целевая функция. Оставим одни коэффициенты и получим условия задачи в матричном виде: (2.14) Таким образом, каноническая задача линейного программирования определена матрицей А, вектором свободных членов b = {8; 14; 9} и вектором решения с = {1; 2; 1; 2; 0; 0}. Воспользуемся для расчета третьим способом (выражение (2.10)). Четырем столбцам матрицы А соответствуют коэффициенты вектора решения, большие нуля. Любой из столбцов может быть назначен ведущим. 1 2 0 1 1 0 Ш 1 1 2 2 1 3 0 4 2 1 0 0 0 0 -1 0 0 8 14 9 По третьему правилу max<c/ymin—'—> определим минимальные элементы в каждом столбце. Для первого столбца: 8/1 14/2 —> 1 • 14/2 = 7. Для второго столбца: 8/1 14/3 9/1 -> 2 14/3 = 28/3. Для третьего столбца: 14/1 9/2 -> 1-9/2 = 9/2. Для четвертого столбца: 8/3 9/4 —> 2 • 9/4 = 9/2. Сначала внутри каждого столбца выбираем минимальный элемент и умножаем его на соответствующее значение из вектора решения. Затем из четырех величин выбираем максимальное. Таким образом, ведущим элементом будет элемент я22, ведущий столбец — второй, ведущая строка — вторая. Ведущий элемент выделен прямоугольной рамкой. Во втором столбце будем исключать вторую переменную. Для этого надо, чтобы в ведущей строке коэффициент при второй переменной был равен 1. Ведущая вторая строка (ее элементы обозначим буквой ср) будет пересчитываться по формуле: Фн=ср/д22 -> ср" =ф/3, (2.15)
28 Глава 2. Линейное программирование где ф — новое значение элемента ведущей строки; Ф — текущее значение элемента ведущей строки; 022 — значение ведущего элемента 1 1 0 2/3 1 1/3 0 1 2 1 2 1 3 0 4 2 1 0 0 0 0 -1/3 0 0 8 14/3 9 В остальных строках матрицы коэффициент при второй переменной должен быть равен 0. Для первой строки (элементы, которых обозначим буквой у) получим формулу для пересчета: ¥Гу=У1у-1ф'2у. (2-16) где у"; — новое значение элемента первой строки; ф5.— новое значение элемента второй (ведущей) строки. Такое преобразование строк матрицы носит название преобразование Жордана - Гаусса. Для третьей строки: V'3J=V3j-l4>H2j. (2.17) Для четвертой строки (строки вектора решений): v|/:y=v|/47-2cp^ (2.18) 1/3 2/3 -2/3 -1/3 0 1 0 0 -1/3 1/3 5/3 1/3 3 0 4 2 1 0 0 0 GZ3 -1/3 1/3 2/3 10/3 14/3 13/3 /-28/3 Значение целевой функции/определим по формуле: /" =/-£,Фн =0-2-14/3 = /-28/3, где gi — коэффициент целевой функции. Так как третий, четвертый и шестой элементы вектора решения положительные, то необходимо выполнить аналогичные вычисления для этих столбцов. Для третьего столбца: 14 13/5 —> 1/3-13/5 = 13/15. Для четвертого столбца: 10/9 13/12 -> 2 • 13/12=13/6. Для шестого столбца: 10 13 —> 2/3 10=20/3. Ведущим элементом будет а\в. Определим формулы для пересчета строк матрицы.
2.4. Симплексный метод 29 Для ведущей (первой) строки: Фн=ф/а16 -» ф"=ф/(1/3) = Зф. Для второй, третьей и четвертой строк соответственно: 1 V4>=4»4y—J<Piyi 10-19 110 3 -1 0 Г21 1 -10 1-4 3 1 1 0 -1 0 -2 0 10 8 1 /-48/3 Так как третий элемент вектора решений больше нуля, то вычисления необходимо повторить. В третьем столбце единственный элемент я3з положительный и больший нуля, поэтому он и будет ведущим элементом. Для ведущей (третьей) строки: ф" =ф/я33 ~> фн=ф/2. Для первой, второй и четвертой строк соответственно: ¥Гу=¥1у+Фзу; v5y=V2y-093y=V2y; х|/4,=\|/4,.-1ф3ну; 1/2 0 1 1 -1/2 0 -1/2 0 0 0 1 0 19/2 3 1/2 -9/2 5/2 1 1 0 -1/2 0 -3/2 0 21/2 8 1/2 /-33/2 Так как вектор решения (фактические и фиктивные переменные) содержит нулевые и отрицательные значения, то найдено оптимальное решение. Найденное решение записывается следующим образом: отрицательным коэффициентам в векторе решений соответствуют нулевые значения, а нулевым значениям — значения свободных членов (Ь) в строках, содержащих единицу. Ответ: X{0; 8; 1/2; 0}.
SO Глава 2. Линейное программирование Так как пятая и шестая переменные — фиктивные, то в решении они не учитываются. Максимальное значение, равное 33/2, целевая функция принимает при следующих значениях аргументов: х\ = 0; *2 = 8;х3= 1/2;х4 = 0. Проверка: F(x)=x1+2x2+jc3+2jc4=10 + 2-8 + 11/2 + 20 = 0 + 16+0,5 + 0 = 16,5; x{+x2+3x4<S; 10 + Ь8 + 00,5 + 30<8; 0 + 8 + 0 + 0<8; 8<8; 2^+3*2+^>14; 20+3-8+10,5+30>14; 0+24+0,5+0>14; 245>14; х2+2х3+4х4=9; 00 +1-8 +2 0,5+ 4-0 = 9; 0 + 8 + 1 + 0 = 9; 9 = 9. Пример 2.4 Найти максимум целевой функции F(jc) = 2хх + 4jc2 + 2jc3 при наложенных ограничениях: \х2 + 2хъ > 4; 2хх + 3jc2 + jc3 = 6; ] 2jc, + 2jc2 < 4^_ [xj>0, y=U. Добавлены две фиктивные переменные и матрица приведена к каноническому виду Ojc, + 1jc2 + 2jc3 - 1jc4 + 0jc5 = 4; 2jc, + 3jc2 + 1jc3 + 0jc4 + 0jc5 = 6; 2jc, + 2jc2 + 0jc3 + 0jc4 + 1jc5 = 4; 2jc, + 4jc2 + 2jc3 + 0jc4 + 0x5. Составим матричную модель 0 12-10 2 Ш 1 0 0 2 2 0 0 1 2 4 2 0 0 4 6 4 В этом примере любой из первых трех столбцов может быть назначен ведущим столбцом. Определим ведущий элемент по третьему правилу. Для первого столбца: Для второго столбца: Для третьего столбца: 6/2 4/1 |4/2| 4/2 6/3 6/1 |4/2| -> -> -► 2-2 = 4. 2-4 = 8. 2-2 = 4.
2.4. Симплексный метод 31 В каждой строке минимальное значение выделено рамкой. Каждое минимальное значение в столбце умножается на соответствующий коэффициент последней строки. Наибольшая оценка 8 находится во втором столбце и принадлежит двум элементам а22 и а^. Любой из этих элементов может быть назначен ведущим. Ведущий элемент — а22- Выполним пересчет элементов ведущей (второй)строки 0 2/3 2 2 1 1 2 4 2 1/3 0 2 -1 0 0 0 0 1 0 0 4 2 4 Будем исключать первую фактическую переменную. Формула для пересчета первой строки: Формула для пересчета третьей строки: Формула для пересчета четвертой строки: Viy=Viy-92y Узу=М/зу-2ф2У. У4у=Ч/4у-4ф^. -2/3 2/3 2/3 -2/3 0 1 0 0 т 1/3 -2/3 2/3 -1 0 0 0 0 0 1 0 2 2 0 /-8 В последней строке один элемент а4з положительный. Следовательно, ведущим будет третий столбец. Вычислим оценки для элементов: аи -> 2/(5/3) = 6/5; я23 -> 2/(1/3) = 6/1. Наименьшую оценку имеет элемент а\ъ. Поэтому его и назначим ведущим элементом. Выполним пересчет элементов ведущей (первой) строки -2/5 2/3 2/3 -2/3 0 1 0 0 1 1/3 -2/3 2/3 -3/5 0 0 0 0 0 1 0 6/5 2 0 /-8 Формула для пересчета второй строки: Формула для пересчета третьей строки: Формула для пересчета четвертой строки: V2y=M/2y-^9iy 2 4^ = 4^ —<p!y.
32 Глава 2. Линейное программирование -2/5 О 1 -3/5 О 4/5 1 О [Ш] О 2/5 О О -2/5 1 -2/5 0 0 2/5 0 6/5 8/5 4/5 /-44/5 В последней строке один элемент 044 положительный. Поэтому ведущим столбцом будет четвертый. Четвертый столбец содержит положительный единственный элемент, кроме элемента последней строки. Следовательно, ведущий элемент о24- Выполним пересчет элементов ведущей (второй) строки -2/5 0 1 -3/5 0 4 5 0 10 2/5 0 0 -2/5 1 -2/5 0 0 2/5 0 6/5 8 4/5 /-44/5 Формула для пересчета первой строки: \|/"у = \|/,у + — <р'у. 2 Формула для пересчета третьей строки: \\i"j = \|/3у +—<р"у 2 Формула для пересчета четвертой строки: y"j = \|/4у — ф'^. 2 4 14/5 -2 3 1 5 0 2 0 -2 0 0 1 0 0 0 0 1 0 6 8 4 /-12 В последней строке все элементы или отрицательные, или равны нулю. Оптимальное решение найдено. Ответ: Х(0; 0; 6). Проверка: Fw = 2jc,+4jc2 + 2jc3=2-0 + 4-0 + 2-6=12; x2+2jc3>4; 0-0+l-0 + 2-6>3; 12 >4; 2xj+3jc2+jc3=6; 2-0 + 3-0+1-6 = 6; 6 = 6; 2x,+2jc2<4; 2 0 + 20+ 0-6 < 4; 0<4.
2.5. Общий случай 33 2.5. Общий случай Выше рассмотрен вариант правильной математической модели, т. е. выражение целевой функции содержит только положительные коэффициенты и критерий сходимости метода формулируется как наличие отрицательных или нулевых коэффициентов в последней строке матрицы. На практике встречаются случаи, когда коэффициенты целевой функции принимают как положительные, так и отрицательные значения. Для решения таких задач используют два подхода. Первый подход. Математическую модель приводят к правильному виду по правилам, изложенным в разд. 2.4, но в начало процедуры добавляют один шаг — применяют процедуру Жордана - Гаусса поочередно к тем столбцам, которые в последней строке матрицы содержат отрицательные коэффициенты, добиваясь при этом замены отрицательных значений коэффициентов на нулевые значения. Второй подход. Поставленную задачу решают по правилам, изложенным в разд. 2.4, добавив новые условия. Если выполнены условия разд. 2.4 (все элементы последней строки или отрицательные, или нулевые при поиске максимума и, наоборот, — при поиске минимума), но количество правильных столбцов матричной модели меньше, чем количество условий ограничений, то определяют ведущий элемент по правилам разд. 2.4, но I только в строках, которые не были ведущими. Пример 2.5. Первый подход Найти максимум целевой функции F(x) = -2 х\ + 3 Хг при ограничениях [2хх -х2 <6; I - jc, + 3jc2 < 6; |ху>0, j = 12. Выполнив необходимые преобразования, получим матричную модель 2 -1 1 -2 -1 1 3 0 2 0 3 0 0 1 0 0 0 0 1 0 6 б 8 3- 1962
34 Глава 2. Линейное программирование Первый элемент последней строки — отрицательный. Выполним преобразование Жордана - Гаусса относительно элемента я31, так как он имеет коэффициент, равный единице. Формула для пересчета последней строки: i|/"y = v|/4y + 2 ср". 2 -1 -1 Ш 1 2 0 7 1 0 0 0 0 1 0 0 0 0 1 2 6 6 8 / + 16 Теперь для определения максимума целевой функции переходим к алгоритму, описанному в разд. 2.4. Ведущим элементом будет я22- Пересчитаем коэффициенты второй строки 2 -1/3 1 0 -1 1 1 0 2 0 7 0 0 0 1/3 0 0 1 0 2 6 2 8 / + 16 Формула для пересчета первой строки: у", = \|/1у + (реформу ла для пересчета третьей строки: \|/"у = v|/3y - 2 ф^-. Формула для пересчета четвертой строки: v|/"y = \|/4у- - 7 ф"у. 5/3 0 -1/3 1 5/3 0 7/3 0 1 0 0 0 1/3 1/3 -2/3 -7/3 0 0 Ш 2 8 2 4 / + 2 Ведущий элемент ки: VH4J=V4J-2$j Яз5- Формула для пересчета четвертой стро- 5/3 -1/3 5/3 -1 0 1 0 0 1 0 0 0 1/3 0 1/3 0 -2/3 1 -1 0 8 2 4 /-6 Все коэффициенты последней строки отрицательные. Целевая функция достигает своего максимума, равного 6, в точке Х(0; 2). Проверка: Fw = -2-0 + 3-2 = 6. Первое ограничение: 2 • 0 - 1 • 2 < 6, -2 < 6. Второе ограничение: -1 • 0 + 3 • 2 < 6, 6 < 6. Третье ограничение: 1 • 0 + 2• 2 <8, 4<8.
2.6. Решение двойственных (обратных) задач S5 2.6. Решение двойственных (обратных) задач В разд. 2.3 был рассмотрен математический аппарат и правила составления обратной (двойственной) задачи. Существует три разновидности двойственной задачи. 1. Симметричная двойственная задача. Симметричной двойственной задачей называется такая задача, в которой целевая функция содержит все переменные с коэффициентами, отличными от нуля; все уравнения и неравенства условий ограничений также содержат все переменные с коэффициентами, отличными от нуля; количество ограничений равно количеству переменных. 2. Несимметричная двойственная задача. В несимметричной двойственной задаче количество условий ограничений меньше, чем количество переменных, а остальные два условия выполняются. 3. Смешанная двойственная задача. Смешанная двойственная задача может иметь произвольную структуру математической модели (по отношению к симметричной и несимметричной задачам). Для решения двойственных задач можно использовать алгоритм симплексного метода или специальные формы пересчета. Суть специальных форм пересчета состоит в том, что сначала устанавливается соответствие между фактическими и фиктивными переменными. Фактические переменные для прямой задачи являются фиктивны- I ми переменными для двойственной (обратной) задачи и наоборот. \ В общем случае соответствие между фактическими и фиктивными переменными для прямой и обратной задачи приведено в табл. 2.1. Таблица 2.1 Задача 1 Обратная 1 Прямая Переменные | фактические для х Уь Х\ Уь *2 У* *3 фиктивные для х \ У\ Ха У2 *s Уз ^J<6 J После решения прямой (обратной) задачи полученную матрицу транспонируют и по известным правилам записывают ответ. 3*
36 Глава 2. Линейное программирование 2.6.1. Решение симметричных двойственных задач При решении симметричных задач прямая и двойственная задачи решаются одинаково. При переходе от прямой задачи к двойственной количество фактических и фиктивных переменных не изменяется. Выигрыша в вычислительных операциях нет. Пример 2.6. Второй подход Найти максимум целевой функции F(X) = х\ + х2 + яг3 при ограничениях Г— х{ + Зх2 + 2яг3 < 6; <2хх+4х2+2х3<8; [Зх{ +2х2-х2 <4. Составим матричную модель -1 3 2 4 3 2 1 1 т 2 -1 1 1 0 0 0 0 1 0 0 0 0 1 0 6 8 4 Ведущий элемент — an. Выполним пересчет элементов ведущей (первой)строки -1/2 2 3 1 3/2 4 2 1 1 2 -1 1 1/2 0 0 1 0 0 0 0 0 0 1 0 3 8 4 Формула для пересчета второй строки: у у = \|/2у - 2<р"у. Формула для пересчета третьей строки: \\i"j = \|/3у +ф"у-. Формула для пересчета четвертой строки: уЦу = V4y -(Piy -1/2 3/2 1 1/2 0 0 1 3 [3] 1 0-1102 5/2 7/2 0 1/2 0 17 Т/2 -1/2 0 -1/2 0 0|/-3 Ведущий элемент — а2\. Выполним пересчет элементов ведущей (второй)строки -1/2 3/2 11/2 0 01 3 1 1/3 0 -1/3 1/3 0 2/3 5/2 7/2 0 1/2 0 17 "372" -1/2 0 -1/2 () 0 /-3
2.6. Решение двойственных (обратных) задач J 7 Формула для пересчета первой строки: у". = \|/1у. + — фзу. Формула для пересчета третьей строки: у"у = у3у —ф"у 3 Формула для пересчета четвертой строки: у "у = У4у — ф"у 0 5/3 1 1/3 1/6 О I 10/3 1 1/3 0 -1/3 1/3 0 2/3 0 8/3 0 4/3 -5/6 1 16/3 0 ~1 б б -1/2 0 | У—4 Ответ: Jf(2/3; 0; 10/3); Fw = 4. Проверка: F{x) = 1 -2/3 + 1 0 + 1 • 10/3 = 12/3 = 4. Первое ограничение: -1-2/3 + 3-0 + 2-10/3 < 6; 18/3 < 6; 6<6. Второе ограничение: 2-2/3 +4-0 + 2-10/3 <8; 24/3<8; 8<8. Третье ограничение: 3-2/3 + 20- 1 10/3 <4; -4/3 < 4; -4/3 < 4. Составим двойственную задачу. Найти минимум целевой функции F(y) = 6>>i + Zy2 + 4д>з j3^+4^+2^>l; [2у1+2у2-уг^1. Составим матричную модель -1 3 2 -6 2 4 2 -8 3 2 -1 -4 -1 0 0 0 0 -1 0 0 0 0 -1 0 1 1 1 Все коэффициенты последней строки матрицы принудительно сделаны отрицательными. Оптимальное решение будет найдено, если в последней строке матрицы будем иметь все коэффициенты положительные или равные нулю. После выполнения соответствующих вычислений было получено следующее решение. Ответ: 7(0; 1/2; 0); F^ = 4. Проверка: F(y) = 60 + 81/2 + 40 = 4.
38 Глава 2. Линейное программирование Первое ограничение: -1 • 0 + 2 • 1/2 + 3 • 0 > 1; 1 > 1. Второе ограничение: 3 • 0 + 4 • 1/2 + 2 • 0 > 1; 2 > 1. Третье ограничение: 2 • 0 + 2 • 1/2 - 1 • 0 > 1; 1 > 1. Получить этот же ответ можно с помощью форм пересчета. Последняя матрица решения прямой задачи имела вид (с добавлением имен переменных) *1 0 1 0 0 х2 5/3 1/3 8/3 -1 *з 1 0 0 0 х4 1/3 -1/3 4/3 0 *5 1/6 1/3 -5/6 -1/2 *б 0 0 1 0 10/3 2/3 16/3 /-4 Транспонируем матрицу и добавим имена переменных Уб Уь Уа У\ Уг Уз Ответ: Г(0; 1/2; 0); Fw = 4 2.6.2. Решение несимметричных двойственных задач 0 5/3 1 1/3 1/6 0 10/3 1 1/3 0 -1/3 1/3 0 2/3 0 8/3 0 4/3 -5/6 1 16/3 0 -1 0 0 -1/2 0 /-4 Решение несимметричных двойственных задач представляет большой практический интерес. При переходе к двойственной задаче общее количество переменных не изменяется, но при этом уменьшается количество фактических переменных и, соответственно, увеличивается количество фиктивных переменных. Используя такое перераспределение переменных, можно существенно понизить степень сложности задачи (уменьшить количество фактических переменных) и решить поставленную задачу графическим методом. Рассмотрим решение прямой и обратной (двойственной) задачи симплексным методом.
2.6. Решение двойственных (обратных) задач 39 Пример 2.7. Второй подход Найти максимум целевой функции F(X) = 2xj + 2хг + 2хз + 2х4 + 2xs при ограничениях ГЗх, + 5х2 - 2х3 + х4 + 4х5 < 12; IX! + х2 + 2х3 + 5х5 < 6; | - х, + Зх2 + Зх3 + 4х4 + 2х5 < 7; |ху>0, j = 15. Составим матричную модель Ш 5 1 1 -1 3 2 2 -2 1 2 0 3 4 2 2 4 5 2 2 1 0 0 0 0 1 0 0 0 0 1 0 12 6 7 Ведущий элемент — аи. щей (первой) строки Выполним пересчет элементов веду- 1 1 -1 2 5/3 1 3 2 -2/3 2 3 2 1/3 0 4 2 4/3 5 2 2 1/3 0 0 1 0 0 0 0 0 0 1 0 4 6 7 Формула для пересчета второй строки: v|/"y = i|/2y -ф"у. Формула для пересчета третьей строки: 1|/3'у = v|/3y + (р"у. Формула для пересчета четвертой строки: \|/"7 = Уду"~ 2 фГу. 1 0 0 0 5/3 -2/3 14/3 -4/3 -2/3 8/3 7/3 10/3 1/3 -1/3 113/31 4/3 4/3 11/3 10/3 -2/3 1/3 -1/3 1/3 -2/3 0 1 0 0 0 0 1 0 4 2 11 /-8 Ведущий элемент щей (третьей) строки оз4- Выполним пересчет элементов веду- 1 5/3 0 -2/3 0 14/13 -2/3 8/3 7/13 1/3 4/3 1/3 0 0 -1/3 11/3 -1/3 1 0 1 10/13 1/13 0 3/13 0 -4/3 10/3 4/3 -2/3 -2/3 0 0 4 2 33/13 /-8 Формула для пересчета первой строки: у". = v|/ly —ф3у..
Глава 2. Линейное программирование Формула для пересчета второй строки: у!,', = i|/2y +—ф"у. 4 Формула для пересчета четвертой строки: y]j. = i|/4y —ф"у. 1 0 0 0 17/13 -4/3 14/13 -36/13 -11/13 137/131 7/13 34/13 0 0 1 0 14/13 51/13 10/13 -22/13 4/13 -4/13 1/13 10/13 0 1 0 0 -1/13 1/13 3/13 -4/13 41/13 37/13 33/13 /-148/13 Ведущий элемент — огз- Выполним пересчет элементов ведущей (второй) строки 1 17/13 -11/13 0 14/13 4/13 0 -1/13 0 -^1/37 1 0 51/37 -А/37 13/37 1/37 0 14/13 7/13 1 10/13 1/13 0 3/13 41/13 1 33/13 /-148/13 0 -36/13 34/13 0 -22/13 10/13 0 -4/13 Формула для пересчета первой строки: Формула для пересчета третьей строки: 11 Формула для пересчета четвертой строки: уЦ, = v|/4y ф"у 1 0 0 0 45/37 0 -4/37 1 42/37 0 -92/37 0 0 0 1 0 83/37 51/37 1/37 -196/37 8/37 -4/37 5/37 -18/37 11/37 13/37 -7/37 -34/37 -2/37 1/37 8/37 -14/37 4 1 2 /-14 Ответ: Х(4;0; 1; 2; 0). Проверка: Fw = 2-4 + 2-0 + 2-l+2-2 + 2-0 = 8 + 2+4 = 14. Первое ограничение: Второе ограничение: 3-4 + 50-21 + 1-2 + 40<12; 12-2 + 2<12; 12 < 12. 1-4+10 + 21+0-2 + 5-0<6; 4 + 2 < 6; 6<6.
2.6. Решение двойственных (обратных) задач 41 Третье ограничение: -1-4 + 3-0 + 3-1+4-2 + 20<7; -4 + 3 + 8 < 7; 7<7. 1 45/37 0 0 83/37 8/37 11/37 -2/37 4 0 -4/37 1 0 51/37 -4/37 13/37 1/37 1 0 42/37 0 1 1/37 5/37 -7/37 8/37 2 0 -92/37 0 0 -196/37 -18/37 -34/37 -14/37 /-14 Найдем решение двойственной задачи, используя формулы пересчета. Транспонируем матрицу и добавим имена переменных У» Уп Уь У$ Уъ Ответ: У(18/37; 34/37; 14/37). Пример 2.8. Второй подход Составим двойственную задачу. Найти минимум целевой функции F(y) = I2yi + 6>2 + 7уъ, [з.у, + у2 - Уъ *2; 5^, + у2 + Зд>3 > 2; \-2У1+2у2 + гу3>2; Ь,+4Л*2; \4у1+5у2+2у1>2; [yjZO, у =1,3. Составим матричную модель 3 5 -2 1 4 -12 1 1 2 0 5 -6 -1 3 3 4 Ш -7 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 2 2 2 2 2 В данном примере все коэффициенты последней строки матрицы сделаны отрицательными. Будем стремиться к тому, чтобы в последней строке матрицы все коэффициенты были положительными или нулевыми. В соответствии с формулой (2.106) определим ведущий элемент. Ведущий элемент — Я5з- Выполним пересчет элементов ведущей (пятой)строки
42 Глава 2. Линейное программирование 3 5 -2 1 2 -12 1 1 2 0 5/2 -6 -1 3 3 4 1 -7 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1/2 0 2 2 2 2 1 Формула для пересчета первой строки: Формула для пересчета второй строки: Формула для пересчета третьей строки: Формула для пересчета четвертой строки: Формула для пересчета шестой строки: Угу—Угу-Зф",- Уз>=Узу-Зф?7- У4,-=ЧЧ,--4ф5,- Уб,-=Ч'б,- + 7ф5Н,-. 0 -1 -8 -7 2 2 7/2 -13/2 -11/2 -10 5/2 23/2 0 0 0 0 1 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 -1/2 3/2 3/2 2 -1/2 -7/2 3 -1 -1 -2 1 / + 7 В последнем столбце ни один элемент нельзя назначить ведущим. Правильный столбец только один (третий). Необходимо продолжить поиск. Поступаем по второму правилу (разд. 2.5). Ведущий элемент — аи. Выполним пересчет элементов ведущей (первой)строки 1 -1 -8 -7 2 2 7/10 -13/2 -11/2 -10 5/2 23/2 0 0 0 0 1 0 -1/5 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 -1/10 3/2 3/2 2 -1/2 -7/2 3/5 -1 -1 -2 1 / + 7 Формула для пересчета второй строки: у^ = \|/2у + ф"у• Формула для пересчета третьей строки: у "у = v|/3y + 8ф"у. Формула для пересчета четвертой строки: y/^j = y/Aj + 7 <p"j. Формула для пересчета пятой строки: Л)/^ = \|/5у -2 ф"у. Формула для пересчета шестой строки: \|/£у = \\r6j -2ср"у.
2.6. Решение двойственных (обратных) задач 43 1 0 0 0 0 0 7/10 -29/5 1/10 -51/10 11/10 101/10 0 0 0 0 1 0 -1/5 -1/5 -8/5 -7/5 2/5 2/5 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -Ь 0 0 -1/10 7/5 7/10 113/101 -3/10 -33/10 3/5 -2/5 19/5 11/5 -1/5 / + 29/5 Восьмой столбец содержит отрицательный элемент в последней строке. Один из элементов этого столбца Яз8 или а4% может быть назначен ведущим. Ведущий элемент — а*%. Выполним пересчет элементов ведущей (четвертой) строки 1 0 0 0 0 0 7/10 -29/5 1/10 -51/13 11/10 101/10 0 0 0 0 1 0 -1/5 -1/5 -8/5 -14/13 2/5 2/5 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -10/13 0 0 -1/10 7/5 7/10 1 -3/10 -33/10 3/5 -2/5 19/5 22/13 -1/5 / + 29/5 Формула для пересчета первой строки: Формула для пересчета второй строки: Формула для пересчета третьей строки: Формула для пересчета пятой строки: Формула для пересчета шестой строки: Гц = ViJ+W*V 10 7 = V2y—J4V 33 „ =^'+Тоф4;' 1 0 0 0 0 0 4/13 -4/13 ГТ77Н1 -51/13 -1/13 -37/13 0 0 0 0 1 0 -4/13 17/13 -11/13 -14/13 1/13 -41/13 0 -1 0 0 0 0 0 0 -1 0 0 0 -1/13 14/13 7/13 -10/13 -3/13 -33/13 0 0 0 1 0 0 10/13 -36/13 34/13 22/13 4/13 / + 148/13 Ведущий элемент — я32. Выполним пересчет элементов ведущей (третьей) строки
44 Глава 2. Линейное программирование 1 0 0 0 0 0 4/13 -4/13 1 -51/13 -1/13 -37/13 0 0 0 0 1 0 -4/13 17/13 -11/37 -14/13 1/13 -41/13 0 -1 0 0 0 0 0 0 -13/37 0 0 0 -1/13 14/13 7/37 -10/13 -3/13 -33/13 0 0 0 1 0 0 10/13 -36/13 34/37 22/13 4/13 / + 148/13 Формула для пересчета первой строки: \|/"у Формула для пересчета второй строки: \|/"у пересчета четвертой строки: \\i4J Формула для Формула для пересчета пятой строки: v|/"y Формула для пересчета шестой строки: i|/J!y = Viy = Ч>2,- = V4> = Vsj = V6, -вФз'- +—Фз; +1з~Фз' +—Фз',- 37 „ +—Фз; 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 -8/37 45/37 -11/37 -83/37 2/37 -4 0 -1 0 0 0 0 4/37 -4/37 -13/37 -51/37 -1/37 -1 -5/37 42/37 7/37 -1/37 -8/37 -2 0 0 0 1 0 0 18/37 92/37 34/37 196/37 14/37 / + 14 Ответ: У(18/37; 34/37; 14/37). Проверка: Fw = 12 • 18/37 + 6 • 34/37 + 7 • 14/37 = 216/37 + 204/37 + 98/37 = = 518/37=14. 3 • 18/37 + 1 • 34/37 - 1 • 14/37 > 2; 54/37 + 34/37 - 14/37 > 2; 74/37 > 2; 2 > 2. 5 • 18/37 + 1 • 34/37 + 3 • 14/37 > 2; 90/37 + 34/37 + 42/37 > 2; 166/37 > 2; 4,87 > 2. -2 18/37 + 2- 34/37 + 3 • 14/37 > 2; -36/37+ 68/37 +42/37 > 2; 74/37 > 2; 2 > 2.
2.7. Альтернативное оптимальное решение 45 1 • 18/37 + 0-34/37 + 4-14/37 > 2; 18/37 +56/37 > 2; 74/37 > 2; 2 > 2. 4 • 18/37 + 5 • 34/37 + 2 • 14/37 > 2; 72/37 + 170/37 + 28/37 > 2; 270/37 > 2; 7,3 > 2. Найдем решение двойственной задачи, используя формулы пе ресчета. Транспонируем матрицу и добавим имена переменных 1 0 0 -8/37 0 4/37 -5/37 0 18/37 0 0 0 45/37 -1 -4/37 42/37 0 92/37 0 1 0 -11/37 0 -13/37 7/37 0 34/37 0 0 0 -83/37 0 -51/37 -1/37 1 196/37 0 0 1 2/37 0 -1/37 -8/37 0 14/37 0 0 0 -4 0 -1 -2 0 / + 14 Ответ: Х(4; 0; 1; 2; 0). 2.7'. Альтернативное оптимальное решение В рассмотренных выше примерах (разд. 2.4 и 2.5) оптимальное решение считалось найденным, если все коэффициенты последней строки матрицы имели отрицательное или нулевое значение (для случая поиска максимума целевой функции). При решении практических задач симплексным методом оказывается, что имеется несколько альтернативных оптимальных решений. Если в последней строке последней матрицы имеются нулевые значения в столбцах, кроме правильных, то существует альтер- I нативное оптимальное решение. Для нахождения альтернативного оптимального решения надо неправильный столбец, имеющий нулевой элемент в последней строке, сделать правильным, заменив один из правильных столбцов, принадлежащий фактической переменной.
46 Глава 2. Линейное программирование Ранее был рассмотрен пример 2.6. Последняя матрица примера 2.6 приведена ниже 0 1 0 0 5/3 1/3 8/3 -1 1 0 0 0 1/3 -1/3 4/3 0 1/6 1/3 -5/6 -1/2 0 0 1 0 10/3 2/3 16/3 /-4 Ответ: *(2/3; 0; 10/3); F(x} = 4. Четвертый столбец в последней строке содержит нулевой элемент. Сделаем четвертый столбец правильным за счет третьего столбца. Ведущий элемент — а\4- Выполним пересчет элементов ведущей (первой) строки 0 5 3 1 1/2 0 I 10 1 1/3 0 -1/3 1/3 0 2/3 0 8/3 0 4/3 -5/6 1 16/3 0-10 б -1/2 0|/-4 Формула для пересчета второй строки: \j/"y = \|/2у + — ф"у. 4 Формула для пересчета третьей строки: y/"j = у/г] —<p*j. 0 5 3 1 1/2 0 I 10 12 10 1/204 0 4/3 -4 0 -3/2 1 -8 0~~=Т 0 0 -1/2 0|/-4 Ответ: Х(4; 0; 0); F(x) = 4. Выполним аналогичную процедуру по замене первого правильного столбца. Исходная матрица представлена ниже 0 5/3 1 1/3 1/6 0 I 10/3 1 1/3 0 -1/3 1/3 0 2/3 0 8/3 0 4/3 -5/6 1 16/3 0-10 0 -1/2 0|/-4 Ведущий элемент — а24- Выполним пересчет элементов ведущей (второй)строки 0 5/3 1 1/3 1/6 0 I 10/3 -3-10 1 -10-2 0 8/3 0 4/3 -5/6 1 16/3 1) ^Г~() (Г -1/2 0|/-4
2.8. Графическая интерпретация симплексного метода 47 Формула для пересчета первой строки: vj/JV = у,. Формула для пересчета третьей строки: у". = у3 ,- 1 2 10 1/2014 -3-10 1 -1 0-2 4 4/3001/218 "0 ~\ 0 0 -1/2 0|/-4 Ответ: Х(0; 0; 4); F(x) = 4. Таким образом, три разных набора входных параметров (векторов) — Д2/3; 0; 10/3); Д4; 0; 0); ДО; 0; 4) дали один и тот же результат F(X) = 4. 2.8. Графическая интерпретация симплексного метода Идея симплексного метода состоит в том, что организуется целенаправленный перебор вершин многогранника, который ограничивает область допустимых решений. При полном переборе всех вершин многогранника допустимых решений резко возрастают затраты машинного времени. При целенаправленном переборе вершин надо решить проблемы: выбор направления (ребра многогранника), по которому надо двигаться, и выбор размера шага движения по выбранному ребру. Для выбора ребра многогранника (направления движения) используют проекцию градиента целевой функции на соответствующие ребра многогранника (рис. 2.3). Оптимальным с точки зрения количества шагов вычислений является направление (ребро многогранника), которое обеспечивает максимальное значение проекции градиента целевой функции, т. е. выбор ведущего элемента по формуле (2.10). Предположим, что выбрано направление движения вдоль ребра 5 (7?5)- Пусть ребро R5 пересекают четыре плоскости (рис. 2.3) в точках Х\, Х2, Хз и X*. Пусть Хо — стартовая точка движения вдоль ребра R5. Ребра R\ nR2 — неотсекающие, т. е. относительно этих ребер стартовая точка лежит внутри области допустимых решений. Ребра Л3 и R4 — отсекающие, т. е. относительно этих ребер стартовая точка лежит вне
48 Глава 2. Линейное программирование X, х0 ^—— - I R* *5 Л, л4 Рис. 2.3. Определение направления движения и шага области допустимых решений. В этом случае возможны следующие варианты определения размера шага s: 1. sl = min\^->0;ai5>0\. 2. s1 =maxJ^->0;a/5 >ol. ?1 = mmi-^->0;a/.5>ol. j=im[aj5 J >l,w| flj-5 4. j4 = maxi —<0;я/5 <0 7=l,w I flfy5 При выборе размера шага по первому условию перемещение производится в точку пересечения ближайшего неотсекающего ребра с ребром R5. Второй вариант — перемещает в точку, наиболее приближенную к границе области допустимых значений. Третий вариант — максимально близко приближает точку к области допустимых значений. Четвертый вариант — далеко уводит точку от области допустимых значений, что увеличивает количество итераций. Первый и третий варианты можно считать опорными решениями, так как они медленно и монотонно приближают к цели. Второй вариант максимально быстро приводит к желаем<}му решению. Алгоритм, построенный по второму варианту носит название метода наискорейшего спуска. При практическом использовании симплексного метода размеры шага могут варьироваться (принимать промежуточные значения) от первого до третьего вариантов [3,4]. 2.9. Примеры 1. Определить оптимальный план выпуска изделий с целью получения наибольшей прибыли от их реализации. Условия задачи приведены в таблице.
2.9. Примеры 49 Изделия Томаты неочищенные Томаты маринованные Томатная паста Запасы сырья Нормы расхода сырья на одно изделие Томаты, кг 2,1 2,3 3,2 1500 Специи, кг 0,09 0,07 0,7 400 Эл. энергия, кВт-ч 7 9 8 4200 Стоимость ед. изделия, руб. 28 35 34 Ответ: *(198,93; 31,35; 315,67); F(x) = 17400. 2. Кондитерская фабрика на одной поточной линии может выпускать четыре вида шоколадных конфет. Определить план выпуска каждого сорта конфет и обеспечить наибольший экономический эффект. Данные приведены в таблице. Сорт конфет Мишка на севере Белочка Трюфели Юбилейные Запасы сырья, кг Нормы расхода сырья на производство 1 кг конфет, кг Шоколад 0,2 0,1 0,65 0,15 850 Сахар 0,4 0,5 0,3 0,4 1350 Вафли 0,1 — — — 45 Фундук - 0,3 — — 95 Крахмал 0,3 0,1 0,05 0,45 1500 Цена] 1 кг, руб. 245 280 320 210 Ответ: JT(450; 316,67; 649,22; 2042,25); F(x) = 835 540,70. 3. Швейная фабрика выпускает мужские костюмы четырех артикулов. Составить план выпуска костюмов и минимизировать затраты на их изготовление по данным, приведенным в таблице. Артикул костюма 17831 21326 22337 27468 Нормы затрат Трудоемкость, ч закройщика 3,5 2,5 4,2 3 390 швеи 6 4 5,5 4,5 490 контролера 0,5 1 1,2 0,8 100 Эл. энергия, кВт-ч 11,2 8,2 14 10,2 1000 Тепл. энергия, ккал 580 470 540 610 57000 Себестои-1 мость одного костюма, руб. | 750 590 810 550 Ответ: *(21,29; 81,03; 6,94; 0); FM = 69392,80.
50 Глава 2. Линейное программирование 4. Определить максимум целевой функции F(X) = 3 хг + 2 *з + х4 при ограничениях: Г^ +jc2 +3jc4<10; J2jCi +3jc2 + jc3>14; [jc2 + 2jc3 + 4jc3 = 6. Ответ: ЛГ(2,325; 6; 0; 0); Fw = 18. 5. Определить максимум целевой функции F(X) = 2х\ + 24*2 + 5 х4 при ограничениях: fjc, + 7jc2 + 4jc3 < 4; <8jc, +12jc3 + 6jc4>21; [5jc2 - 2jc3 + 4jc4 = 7. Omeem: ^(1,63; 0,34; 0; 1,33); F(x) = 18,02. 6. Определить минимум целевой функции F(X) = 5 х\ + хг + 2*з + 3 х4 при ограничениях: Г-2х, +3jc3+jc4<12; J3jc2+4jc4>9; [2^ + jc2 - 2jc3 = 6. Ответ: ^(18,75; 0; 15,75; 2,25); F(x) = 132. 7. Дана целевая функция Fw = 2x\ + jc2 + 2х3 + 4лг4 при ограничениях: \хх +jc2 +3jc4 <14; I 2jc, + 3jc2 + jc3 < 33; 14^ + jc2 + 2x3 + 4jc4 < 19; [3jc, + x2 + 2jc3 + 3jc4 < 15. Решить двойственную задачу. Ответ: прямая задача—Л^О; 0; 0,1667; 4,6667); Fw = 19; двойственная задача — У(0; 0; 1; 0); Fw = 19. 8. Дана целевая функция F(Xy= 2х\ + 4*2 + 5лг4 при ограничениях: [jc, + 7х2 + 4х3 < 4; J 8jCi +12jc3+6jc4<36; |5jc2 -2jc3 +4jc4 <21; [3jCj + x2 + 2x3 + 3x4 < 17. Решить двойственную задачу.
2.9. Примеры 51 Ответ: прямая задача — Х(0,1765; 0; 0,2069; 5,3529); F{x) = 27,12; двойственная задача— У(0; 0,0294; 0,7647; 0,5882); F{x) = 27,12. 9. Дана целевая функция F^ = 5 jcj + хг + 2 хз + 3 х4 при ограничениях: [2хх + 3х3 + х4<12; 13х2+4х4<9; J 2хх + х2 - 2х3 < 6; [2х, +х2 +4jc3 +3jc4<17. Решить двойственную задачу. Ответ: прямая задача—^(3,7778; 0; 0,7778; 2,1111); F(x) = 26,78; двойственная задача— У(0,3333; 0; 1,2778; 0,8889); F{x) = 26,78. Контрольные вопросы 1. Какие задачи относятся к задачам линейного программирования? 2. Как определяется область допустимых решений? 3. Назовите способы задания границ области допустимых решений. 4. Что означает понятие каноническая форма записи задачи линейного программирования? 5. Что означает понятие вектор решений? 6. Чем отличается опорный план от оптимального плана? 7. Назовите способы определения ведущего столбца? 8. Назовите преимущества и недостатки каждого способа определения ведущего столбца. 9. Укажите критерий останова алгоритма для поиска максимума целевой функции. 10. Какова идея симплексного метода поиска оптимального решения? 11. Каков геометрический смысл симплексного метода? 12. Что означает двойственность задачи линейного программирования?
Глава 3 Транспортная задача 3.1. Общие понятия и определения Транспортная задача относится к классу задач линейного программирования. Транспортная задача решает проблему нахождения оптимального (минимального по стоимости) плана распределения и перемещения ресурсов от производителей к потребителям. Проблема оптимизации стоимости перевозок актуальна и на сегодняшний день, так как позволяет фирмам и предприятиям существенно сократить расходы на транспорт. Правильная организация перевозок позволяет устранить встречные и дублирующие перевозки, сократить количество дальних перевозок и т. д. При решении транспортной задачи необходимо: • обеспечить всех потребителей ресурсами; • распределить все произведенные ресурсы; • переместить ресурсы от производителей к потребителям с наименьшими затратами. От каждого производителя ресурс может перемещаться к любому потребителю и измеряться в одних единицах измерения. Примерами транспортных задач (табл. 3.1) могут быть: Примеры транспортных задач Ресурс Единица измерения Потребитель ресурса >ix задач я Потребитель ресурса Тепловая электростанция 1 Магазин Производитель ресурса [Шахта [Автозавод [Оптовая база [Хлебозавод Уголь [Автомобиль [Книга Хлеб Тонна [Штука [Экземпляр |Батон Магазин [Магазин Таблица 3.1 Рассмотрим простейшую задачу.
3.1. Общие понятия и определения 53 Пример 3.1 Имеется два цеха по изготовлению мягких кресел. Производительность первого цеха — 4 кресла в сутки, а второго — 2 кресла. Имеются два магазина, которые продают эти кресла, причем каждый магазин продает ежедневно по три кресла. Стоимость перевозки одного кресла от каждого цеха до каждого магазина приведена в табл. 3.2. Таблица 3.2 Условия примера 3.1 Потребители кресел Стоимость перевозки 3 1 3 Магазин 1 4 6 3 Магазин 2 Производители кресел 4 2 Цех 1 Цех 2 Определить объем поставок кресел от каждого цеха в каждый магазин при минимальной стоимости перевозок. Указанная задача имеет три решения Решение 1 = Решение 2 = Решение 3 ■В Решение 1: из первого цеха поставляются в первый магазин три кресла, а во второй магазин — одно кресло из первого цеха и два кресла из второго цеха. Аналогично можно рассмотреть и остальные решения. Все три решения являются допустимыми, так как полностью распределены все ресурсы. Из трех допустимых решений надо выбрать наилучшее, т.е. такое, которое обеспечит минимальные затраты при перевозке кресел. Это решение будет оптимальным. Определим стоимости перевозок при каждом решении. Решение 1:3-3 + 4-1 + 1-0 + 6-2 = 25. Решение 2: 3-2 + 4-2+ 1-1 +61 =21. Решение 3:3-1+4-3 + 1-2 + 6-0=17. Таким образом, решение 3 будет оптимальным. Из приведенного примера видно, что транспортная задача разрешима, когда количество произведенного ресурса равно количеству потребленного ресурса. Такая задача называется сбалансированной или закрытой. В реальных условиях такая задача достаточно редкая. Чаще встречаются ситуации, когда произведено ресурса больше, чем его могут потребить — избыток ресурса. Или заказов на ресурс больше, чем выпускает изготовитель, — дефицит ресурса. В том и другом случаях поступают по одной схеме: в задачу добавляют или
54 Глава 3. Транспортная задача фиктивного потребителя или фиктивного изготовителя и находят оптимальное решение. В первом случае произведенный ресурс будет залеживаться у одного (или нескольких) изготовителей, а во втором — один потребитель (или несколько потребителей) не дополучит ресурс. Такие транспортные задачи называются несбалансированными или открытыми. Рассмотренные ниже методы решения транспортной задачи имеют дело со сбалансированными задачами. Транспортная задача всегда разрешима и может иметь: • единственное решение; • несколько допустимых решений, одно из которых — оптимальное; • несколько допустимых решений и все они — оптимальные. Пример 3.2 Для следующей транспортной задачи (табл. 3.3.) любой допустимый план является оптимальным. Таблица 3.3 Условие примера 2 1 Потребитель ресурса Стоимость перевозки 1 4 7 4 2 5 8 1 3 6 9 2 Производитель ресурса | 2 3 2 При любом допустимом плане распределения ресурсов стоимость перевозок от производителей ресурсов к потребителям ресурсов будет одинаковой и равной 33 [4]. В простейших примерах оптимальное решение находилось простым перебором вариантов. На практике размерность транспортной задачи составляет несколько десятков производителей и потребителей ресурсов. Поэтому при решении реальных транспортных задач надо решить две проблемы: найти допустимые решения и из числа допустимых решений выбрать оптимальное решение. Для решения этих проблем разработаны различные методы. Общий алгоритм решения транспортной задачи: 1. Формализация задачи (составление матрицы стоимостей перевозок). 2. Приведение задачи к сбалансированному виду.
3.2. Математическая формулировка транспортной задачи S5 3. Построение опорного плана. 4. Построение оптимального плана. Для построения опорного плана разработаны три метода: • метод «северо-западного угла»; • метод наименьшего элемента; • метод добротностей. Для определения оптимального плана перевозок разработаны методы: • распределительный; • потенциалов; • дельта-метод. 3.2. Математическая формулировка транспортной задачи От каждого /-го производителя произведенный им ресурс я, может перемещаться ку-му потребителю ресурса в объеме, не превышающем bj. Таким образом, xtj будет означать перемещение некоторого числа единиц ресурса от /-го производителя ку-му потребителю. Через Су обозначим стоимость перемещения единицы ресурса от /-го производителя ку-му потребителю. Тогда матрица X = {*,,} будет называться матрицей перевозок или планом перевозок и, соответственно, матрица С = {с,у} — матрицей стоимости. Предполагаем, что суммарный объем произведенного ресурса в точности совпадает с объемом потребления ресурса (задача закрытого типа). Понятно, что любой план перевозок X, обеспечивающий распределение ресурса между потребителями, будет допустимым. Суммарная стоимость всех перевозок, вычисленная по любому допустимому плану, будет FM=£%jxy' (3-D ' j Оптимальным планом перевозок X* будет называться тот из допустимых планов перевозок, который обеспечит минимальную сумму затрат на перевозку всех ресурсов. Отсюда следует, что исходные данные транспортной задачи задаются вектором произведенных ресурсов А = {я,}, вектором по-
56 Глава 3. Транспортная задача требления ресурсов В = {bj} и матрицей стоимостей С = {с,у} при i = 1,..., т и у = 1,..., /7, где т — общее число производителей ресурса, aw — общее число потребителей ресурса. Математическая модель транспортной задачи такова: т п F(*) = ZZc* xu =* min (3-2) при заданных условиях ограничений: 1*11 Х\2 Х\3 ••• *•» = а» *21 *31 vml 42 С13 л22 *32 *т2 х22 *23 *23 *33 хтЪ *31 с32 сзз С1л Х2п ХЪп М/1 *2* *3л *т2 хтЪ = а = а или ]>Х = а,-, (3.3) /=i = а. = &. или 2><,=6„ (3.4) У-1 = 6. где х7>. > 0; / = 1, /w; j = 1, л. Таким образом, транспортную задачу можно решить симплексным методом, но при этом потребуется выполнить большое количество пересчетов матрицы. При анализе условий транспортной задачи выявлено, что все коэффициенты при неизвестных х,у равны единице. Это обстоятельство позволяет решить транспортную задачу более простыми методами, нежели симплексный метод. Далее условия ограничений (3.3) и (3.4) линейно зависимы, так как суммы правых частей по условию задачи должны быть равны (сумма произведенных ресурсов распределяется между потребителями ресурсов). Количество линейно независимых уравнений среди условий ограничений (3.3) и (3.4) равно т + п - 1. В поставленной транспортной задаче общее количество переменных равно qi n и количество базисных переменных равно т + п- 1, следовательно количество свободных переменных будет равно (т - 1) (и - 1). В задачах линейного программирования оптимальное решение находится в одной из вершин области допустимых решений, тогда при решении транспортной задачи как минимум (т - 1) (л - 1) перевозок будут иметь нулевое значение.
3.3. Построение опорного плана перевозок $7 По аналогии с симплексным методом допустимым решением будем называть любое решение, которое удовлетворяет условиям (3.3) и (3.4). Опорным решением будем называть такое, которое имеет т + п - 1 перевозок, отличных от нуля. Оптимальным решением будет одно из опорных решений, которое обеспечивает минимальную сумму затрат по всем перевозкам. Если при решении задачи линейного программирования симплексным методом требовалось на каждом шаге пересчитывать матрицу целиком, то при решении транспортной задачи одним из методов поиска оптимального решения пересчитывается только часть матрицы (замкнутый контур), что резко сокращает количество вычислений. 3.3. Построение опорного плана перевозок Для того чтобы начать решение транспортной задачи, надо построить опорный план. Опорный (или начальный) план является одним из допустимых планов. 3.3.1. Метод «северо-западного угла» При использовании этого метода опорный план перевозок начинают строить с левого верхнего (северо-западного) угла матрицы перевозок по следующему алгоритму: 1. Первому потребителю назначается ресурс от первого производителя. При этом возможны следующие варианты: • запрос первого потребителя удовлетворен не полностью, тогда недостающий ресурс первому потребителю добавляют от второго производителя и при необходимости от третьего производителя, до тех пор пока потребности первого потребителя не будут полностью обеспечены; • запрос первого потребителя удовлетворен полностью. Остаток ресурса от первого производителя назначают второму потребителю, а при необходимости и третьему потребителю и т. д.; • запрос первого потребителя обеспечен полностью ресурсом первого производителя и ресурс первого производителя израсходован полностью. Далее переходят к обеспечению запроса второго потребителя.
58 Глава 3. Транспортная задача 2. Затем обеспечивают потребности второго потребителя по образцу первого потребителя. И так далее пока не будут обеспечены запросы всех потребителей. Рассмотрим работу метода «северо-западного угла». Пример 3.3 Условия примера 3.3 заданы матрицей стоимостей, а ответ - матрицей плана перевозок (рис. 3.1). Матрица стоимостей План перевозок исходная Гб 3 9 по" 5 6 1 14 8 4 3 6 ^"1 2 6 4 Гй~| 12 8 По" По" 4 10 14 2 4 6 4 4 [м] 12 8 Рис. 3.1. Условие и ответ примера 3.3 Определим стоимость всех перевозок по полученному плану. С = Х\\ • Сц + Х\2 • С\ч + Х22 * с22 + *23 * ^23 + ^33 • ^33 + *34 • ^34 = = 10-6 + 4-5 + 10 -6 + 2 -4 + 4-3+4-6 = = 60 + 20 + 60 + 8 + 12 + 24 = 184. При распределении ресурсов по методу северо-западного угла не учитываются затраты на перевозки, указанные в матрице стоимостей, следовательно опорный (допустимый) план перевозок будет не оптимальным. Метод минимальных элементов, рассмотренный далее, учитывает затраты на перевозки при создании опорного плана, поэтому стоимость затрат на все перевозки должна быть меньшей. 3.3.2. Метод минимальных элементов Суть метода состоит в том, что в матрице стоимостей С = {су} выбирается стоимость минимальной перевозки сц. Затем назначается максимальный объем ресурса от производителя / к потребителю/ для данной перевозки. При этом возможны три варианта: 1) производитель i имеет ресурса больше, чем надо потребителю/. В этом случае удовлетворяется полностью заявка потребителя/, а остаток произведенного ресурса будет распределен после. Так как потребность потребителя / удовлетворена полностью, то исключа-
3.3. Построение опорного плана перевозок $9 ется из рассмотрения столбец матрицы стоимости, принадлежащий /-му потребителю; 2) производитель / имеет ресурса меньше, чем надо потребителю/. В этом случае весь имеющийся ресурс производителя / назначается потребителю/. Недостающая часть ресурса потребителю/ будет назначена потом. Так как весь ресурс производителя / исчерпан полностью, то из рассмотрения удаляется строка матрицы стоимости, принадлежащая производителю /; 3) производитель / имеет ресурса столько, сколько надо потребителю/. В этом случае, аналогично рассмотренным выше случаям, из рассмотрения удаляются и строка, и столбец матрицы стоимости. Затем из матрицы стоимостей выбирается следующая минимальная стоимость перевозки ресурса от производителя к потребителю, удовлетворяются потребности следующего потребителя ресурса (полностью или частично) и удаляется из рассмотрения очередная строка или столбец матрицы стоимостей. Процесс повторяется до тех пор, пока не будет распределен полностью весь произведенный ресурс между всеми потребителями. Так как ресурса произведено ровно столько, сколько нужно потребителям, то задача распределения будет обязательно выполнена. Пример ЗА Используя условия примера 3.4 (рис. 3.2) определить опорный план перевозок. | Стоимость перевозок 6 3 9 10 5 6 1 14 8 4 3 6 7 2 6 4 | Потребление Производство 1 14 12 8 Рис. 3.2. Условия примера 3.4 Из таблицы примера видно, что минимальная стоимость перевозки Cyi — между третьим производителем и вторым потребителем. Элемент cyi на данном шаге считается ведущим. Поэтому назначим второму потребителю 8 единиц ресурса от третьего произ-
60 Глава 3. Транспортная задача Матриц 1 6 3 9 По" 5 6 I 14 а стоимостей 8 4 3 6 Т\ 2 6 4 14 12 Li- Опорный план После 1-го шага Гб" 3 По" 5 6 X 6 8 4 6 "71 2 4 [l4~ 12 8 После 2-го шага Гб 3 По" 5 6 6 8 4 6 X [14 8 8 4 После 3-го шага Гё" 1 х Г1" 5 6 8 6 Гй" 8 8 4 После 4-го шага Гё" ГТ" X 8 6 Гв" 8 6 8 4 После 5-го шага 1 X 8 6 Гб~ Гг" 8 6 8 4 После 6-го шага 6 [2 8 6 8 6 4 Рис. 3.3. Процесс распределения ресурсов
3.3. Построение опорного плана перевозок 61 водителя. Недостающие 6 единиц ресурса второму потребителю назначим позже от другого производителя. Так как ресурс третьего производителя использован полностью, то исключаем из рассмотрения третью строку {9; 1; 3; 6} матрицы стоимостей. Из оставшихся 1-й и 2-й строк матрицы стоимостей минимальный элемент сгь — между вторым производителем и четвертым потребителем. Потребность четвертого потребителя (4 единицы) в ресурсе полностью удовлетворяется запасом второго производителя. Запас ресурса (8 единиц) у второго производителя будет распределен позже. Поэтому четвертый столбец матрицы из дальнейшего рассмотрения исключается. Аналогично распределяем оставшиеся ресурсы. Процесс распределения показан на рис. 3.3. На рис. 3.3 и последующих в матрице стоимостей минимальный (ведущий) элемент подчеркнут, символом «х» в удаляемой строке или столбце отмечено место ведущего элемента. 12 6 6 Таким образом, получен опорный план X = 8 I 8 Для полученного опорного плана определим стоимость всех перевозок. C = XirCii+Xi2-Ci2+Xi3-Ci3+X2rC2l+X24-C24+X32-C32 = = 2-6 + 6-5+6-8+8-3+4-2+8-1 = 12 + 30 + 48 + 24 + 8+ 8= 130. Полученный опорный план перевозок более экономичен, чем опорный план, полученный методом северо-западного угла. 3.3.3. Метод добротностей При использовании метода добротностей исходную матрицу стоимостей перевозок переводят в разреженное состояние. Разреженное состояние характеризуется наличием нулевых значений в строках и столбцах исходной матрицы. Перевод матрицы стоимостей в разреженное состояние производится по следующему алгоритму: 1) в каждой строке матрицы стоимостей определяют минимальный элемент и вычитают его значение из каждого элемента строки; 2) в каждом столбце, полученном на первом шаге разреженной матрицы, определяют минимальный элемент и вычитают его значение из каждого элемента столбца;
62 Глава 3. Транспортная задача 3) определяют добротности по каждой строке и каждому столбцу. Добротность определяется по каждой строке и по каждому столбцу разреженной матрицы. Добротности рассчитываются по следующему правилу: а) добротность по строке — сумма двух минимальных элементов первой строки умножается на ресурс первого производителя и так далее для всех строк разреженной матрицы. Полученные результаты будем записывать слева от разреженной матрицы; б) добротность по столбцу — сумма двух минимальных элементов первого столбца умножается на заявку первого потребителя и так далее для всех столбцов разреженной матрицы. Полученные результаты будем записывать сверху от разреженной матрицы; 4) назначают ресурс потребителю. Определяется строка или столбец, у которого добротность имеет максимальное значение, и в этой строке или столбце определяется элемент сь с нулевым значением. Потребителю t (под выбранным элементом) назначается ресурс от производителя к. Возможны три варианта: а) спрос потребителя удовлетворен полностью, а ресурс у производителя остался. В этом случае из рассмотрения удаляется столбец t из исходной матрицы, а в матрицу решения (плана перевозок) записывается поставка ресурса; б) спрос потребителя удовлетворен частично, а ресурс производителя использован полностью. В этом случае из рассмотрения удаляется строка к из исходной матрицы, а в матрицу решения (плана перевозок) записывается поставка ресурса; в) спрос потребителя удовлетворен полностью и полностью исчерпан ресурс производителя. В этом случае из рассмотрения удаляется строка к и столбец / из исходной матрицы, а в матрицу решения (плана перевозок) записывается поставка ресурса; 5) переходят к следующему шагу. В соответствии с требованиями предыдущего шага алгоритма из исходной матрицы стоимостей удалена строка или столбец (или одновременно и строка, и столбец) и выполняется возврат к первому шагу алгоритма. Процесс повторяется до тех пор, пока не будут распределены все ресурсы [3, 4, 5].
3.3. Построение опорного плана перевозок 63 Пример 3.5 Рассмотрим работу алгоритма на примере 3.3. Результат последовательных преобразований показан на рис. 3.4. si I Первый проход по алгоритму Гб" 3 9 по" Исходная 5 6 1 14 8 4 3 6 71 2 -L 4 Гй" 12 8 Преобразование строк ГТ I 8 10 0 4 0 14 3 2 2 6 2| 0 5 4 14 12 8 Преобразование столбцов Го" 0 7 10 0 4 0 14 1 0 0 6 2| 0 5 4 14 12 8 Матрица стоимостей преобразование строк Добротность 0 0 0 8 0 0 0 План перевозок промежуточный Го 0 7 ГТо" 0 4 0 14 1 0 0 6 2] 0 _5_ 4 [14 12 8 10 14 6 4 14 8 8 Второй проход по алгоритму 3 Pi 6*1 *§| гт 3 9 10 Исходная 5 6 1 14 8 4 3 6 гпг 8 8 Преобразование строк ГТ 0 8 10 0 3 0 14 3 1 2 6 14 8 8 Преобразование столбцов ГТ 0 8 10 0 3 0 14 2 0 1 6 14 8 8 Матрица стоимостей преобразование строк Добротность 10 0 6 14 0 8 ГТ 0 8 ГТо" 0 3 0 14 2 0 1 6 \ы\ 12 8 План перевозок промежуточный 14 8 8 14 4 10
64 Глава 3. Транспортная задача I Третий проход по алгоритму Исходная Преобразование строк Преобразование столбцов 3 9 ГГо" 4 3 6 Го~ 8 8 0 6 10 1 0 6 Го~ 8 8 0 6 10 1 0 6 Го] 8 8 Матрица стоимостей преобразование строк Добротность 60 6 0 8 48 План перевозок промежуточный 0 6 ГТо" 1 0 6 Го 8 8 8 2 14 6 4 Ii Четвертый проход по алгоритму Исходная Преобразование строк Преобразование столбцов 9 гт 3 6 UL 9 2 3 6 Го 8 9 2 3 6 Го] 8 Матрица стоимостей преобразование строк Добротность 90 96 План перевозок промежуточный 9 LL 3 6 Го 8 8 2 10 14 6 4 Рис. 3.4. Создание опорного плана перевозок а — первый проход по алгоритму; б — второй проход по алгоритму; в — третий проход по алгоритму; г — четвертый проход по алгоритму
3.4. Создание оптимального плана перевозок 65 Осталось распределить восемь единиц ресурса от третьего производителя. Распределить ресурсы можно единственным способом: две единицы ресурса — первому потребителю и шесть единиц — второму. Поэтому план перевозок будет иметь вид: План перевозок опорный план 8 | 2 14 6 4 10 14 6 4 После четвертого прохода по алгоритму получен опорный план для решения транспортной задачи. Определим стоимость всех перевозок по полученному опорному плану. С = х\2-с\г + хг\-сг\ +x1A-c1A + *3i -съх +х3з-с3з = = 14-5 + 8-3+4-2 + 2-9 + 6-3 = 70 + 24 + 8 +18+ 18=138. Стоимость всех перевозок по плану, полученному методом минимальных элементов, составляет— 130, а по плану, полученному методом северо-западного угла, — 184. 3.4. Создание оптимального плана перевозок Полученный опорный план перевозок необходимо проверить на оптимальность. Для получения оптимального плана перевозок разработано несколько методов. 3.4.1. Распределительный метод Суть распределительного метода состоит в том, что ресурсы, назначенные потребителям по опорному плану, перераспределяются. Алгоритм перераспределения ресурсов следующий. 1. Выбирается свободный (незаполненный) элемент опорного плана. 2. От выбранного свободного элемента строится кратчайший прямоугольный замкнутый контур. Остальные вершины замкнутого контура (кроме первой) проходят через заполненные элементы опорного плана перевозок. Поворот осуществляется только на 90° и только в заполненных элементах. 5- 1962
66 Глава 3. Транспортная задача 3. Каждой вершине контура присваивается коэффициент, равный соответствующему значению элемента из матрицы стоимости. 4. Каждому коэффициенту в вершинах контура строго поочередно присваивается знак «+» или «-», начиная с пустой клетки. 5. Выполняется алгебраическое суммирование коэффициентов по всему контуру. 6. Пункты с 1 по 5 выполняются для каждого нулевого (пустого) элемента опорного плана. 7. Проверяются результаты суммирования по всем контурам на оптимальность. 8. Если план перевозок не оптимален, то выполняется перераспределение ресурсов и возвращаются к п. 1. Если при решении транспортной задачи оптимальное решение должно быть минимальным, то алгебраические суммы по всем контурам должны быть положительными или равными нулю. Если при решении транспортной задачи оптимальное решение должно быть максимальным, то алгебраические суммы по всем контурам должны быть отрицательными или равными нулю. Если план перевозок не оптимален, то перераспределение ресурсов выполняется следующим способом: • выбирается контур, для которого нарушено условие оптимальности. Если транспортная задача решалась на отыскание минимума затрат, то выбирается контур с отрицательным значением алгебраической суммы. Если таких контуров несколько, то выбирается тот, у которого большая по модулю отрицательная алгебраическая сумма; • в вершинах выбранного контура расставляются фактические перевозки с теми знаками, которые были указаны при вычислении коэффициентов. Рассматриваются вершины только с отрицательными значениями. Выбирается вершина с минимальным по модулю отрицательным значением. Значение этой вершины алгебраически вычитается из всех вершин контура; • проверяется сохранение баланса перевозок по строкам и столбцам; • заново рассчитываются алгебраические суммы (по стоимости) для всех контуров; • проверяется условие оптимальности.
3.4. Создание оптимального плана перевозок 67 Пример 3.6 Рассмотрим процесс построения оптимального плана на примере 3.3. и опорном плане, полученном методом минимального элемента. Матрица стоимостей и опорный план представлены на рис. 3.5. [ Стоимость перевозок 6 3 9 10 5 6 1 14 8 4 3 6 7 2 6 4 | Потребление Производство 14 12 8 Опорный план 1 2 8 6 8 6 4 14 12 8 10 14 Рис. 3.5. Исходные данные для распределительного метода Свободные (пустые) элементы опорного плана имеют индексы: 1,4; 2,2; 2,3; 3,1; 3,3 и 3,4. Для каждого свободного элемента построим свой кратчайший прямоугольный контур. Для элемента 1,4 построим контур: 1,4; 2,4; 2,1; 1,1. Для элемента 2,2 построим контур: 2,2; 2,1; 1,1; 1,2. Для элемента 2,3 построим контур: 2,3; 2,1; 1,1; 1,3. Для элемента 3,1 построим контур: 3,1; 1,1; 1,2; 3,2. Для элемента 3,3 построим контур: 3,3; 3,2; 1,2; 1,3. Для элемента 3,4 построим контур: 3,4; 3,2; 1,2; 1,1; 2,1; 2,4. Вершинам построенных контуров присвоим значения коэффициентов. Значения коэффициентов равны соответствующим значениям элементов матрицы стоимостей, а знаки должны строго чередоваться. d = 7 + (-2) + 3 + (-6) = 2. С2 = 6 + (-3) + 6 + (-5) = 4. С3 = 4 + (-3) + 6 + (-8) = -1. С4 = 9 + (-6)+5 + (-1) = 7. С5 = 3 + (-1) + 5 + (-8) = -1. С6 = 6 + (-1)+5 + (-6)+3 + (-2) = 5. Так как нам надо минимизировать стоимость перевозок, то все шесть алгебраических сумм должны быть положительными. Третья и пятая суммы — отрицательные, поэтому надо сделать перераспределение ресурсов. Отрицательные алгебраические суммы принадлежат третьему и пятому контурам и одинаковы по модулю, то можем выбрать любой из этих контуров, например третий контур. Первый контур: Второй контур: Третий контур: Четвертый контур: Пятый контур: Шестой контур:
68 Глава 3. Транспортная задача В третьем контуре минимальное по модулю отрицательное значение размещено во второй вершине и равно -6. В опорном плане назначенные перевозки (см. рис. 3.6,а) по третьему контуру таковы (объемы указаны с сохранением знаков при определении алгебраической суммы). Перераспределим объемы перевозок между вершинами третьего контура по следующему правилу. Самый маленький по модулю объем отрицательных поставок (-6) алгебраически вычтем из всех вершин (рис. 3.6,6). 1 о _. 1 * г 1 fiL 1 —о г и 8 _ а -6 J 4 14 12 8 1 оТ. 8 Г ? L I ^ г и 8 J a о 4 14 12 8 10 14 10 14 Рис. 3.6. Первое перераспределение ресурсов: а — опорный план перевозок до перераспределения; б — опорный план перевозок после перераспределения Выполним проверку правильности сделанной операции. До перераспределения поставок сумма по каждому столбцу третьего контура (без учета знака) составляла: 10 (8 + 2) и 6 (6 + 0), а сумма по каждой из строк контура (без учета знака) соответственно: 14 (2 + 6 + 6) и 12 (8 + 4). После выполнения преобразования соответствующие суммы равны: по столбцам — 10 (2 + 8) и 6 (6 + 0); по строкам — 14 (8 + 6) и 12 (2 + 6 + 4). Так как проверочные суммы соответственно равны, то преобразование выполнено верно. Полученный план перевозок (по рис. 3.6, б) примем за опорный план без учета знака «-». Заново для свободных элементов (клеток) составим кратчайшие прямоугольные контуры и подсчитаем алгебраические суммы по матрице стоимостей. Для элемента 1,3 построим контур 1,3; 2,3; 2,1; 1,1: Ci = 8 + (-4) + 3 + (-6)=l. Для элемента 1,4 построим контур 1,4; 2,4; 2,1; 1,1: С2 = 7 + (-2) + 3 + (-6) = 2. Для элемента 2,2 построим контур 2,2; 2,1; 1,1; 1,2: С3 = 6 + (-3) + 6 + (-5) = 4. Для элемента 3,1 построим контур 3,1; 1,1; 1,2; 3,2: С4 = 9 + (-6) + 5 + (-1) = 7.
3.4. Создание оптимального плана перевозок 69 Для элемента 3,3 построим контур 3,3; 3,2; 1,2; 1,1; 2,1; 2,3: С5 = 3 + (-1) + 5 + (-6) + 3 + (-4) = 0. Для элемента 3,4 построим контур 3,4; 2,4; 2,1; 1,1; 1,2; 3,2: С6 = 6 + (-2) + 3 + (-6) + 5 + (-1) = 5. Полученный опорный план оптимален, так как все алгебраические суммы не отрицательны. Вычислим стоимость всех перевозок по оптимальному плану С= 8-6 + 6-5 +2-3+ 6-4+ 4-2 + 8-1=48 +30 +6 +24 +8 +8 =124. 3.4.2. Метод потенциалов Имея опорный план перевозок, в методе потенциалов выполняют анализ клеток матрицы плана перевозок. Все заполненные клетки матрицы перевозок называются базисными, все незаполненные клетки — свободными. За опорный план перевозок возьмем план, полученный методом «северо-западного угла» (рис. 3.7). 1 10 | 10 4 10 14 2 4 6 4 4 14 12 8 Рис. 3.7. Опорный план перевозок для метода потенциалов Суммарная стоимость перевозок опорного плана С = 184. Базисные клетки опорного плана — а\\, an, ац, #23, язз, #34; свободные — ян, ям, tf2b ^24, язь ayi- Для каждой свободной клетки, аналогично распределительному методу, можно построить замкнутый контур (цикл) и перераспределить ресурсы между поставщиками и потребителями. План перевозок будет оптимальным, если он содержит т + п положительных чисел щ и vy, которые называются потенциалами строк и столбцов соответственно. Для вычисления потенциалов в матрицу плана перевозок добавляют одну строку сверху и один столбец слева (рис. 3.8). Для определения потенциалов строк и столбцов используют формулу w, + у, = Су, подставляя в нее значения из базисных клеток.
70 Глава 3. Транспортная задача 3 s я н о и Потенциалы 10 10 4 10 14 2 4 б »7 4 4 14 12 8 Рис. 3.8. Добавленные строка и столбец для расчета потенциалов « Для начала выполнения расчетов надо потенциал одной строки или одного столбца приравнять нулю. Затем, используя указанную формулу, выполнить остальные вычисления. Примем за ноль потенциал первой строки щ - 0. Для уменьшения количества вычислений потенциал равный нулю желательно присвоить той строке или столбцу, который содержит наибольшее количество заполненных клеток. Тогда vi = с\\ - щ = 6 - 0 = 6. Далее выбираем те базисные клетки, для которых уже имеется один потенциал (или строки или столбца), и определяем следующий потенциал. Для базисной клетки an известен потенциал первой строки щ. Поэтому можем определить потенциал второго столбца: v2 = с\2 - щ = 5 - 0 = 5. Аналогично выполним расчет оставшихся потенциалов (рис. 3.9): Определим потенциал второй строки: Определим потенциал третьего столбца: Определим потенциал третьей строки: Определим потенциал четвертого столбца: "2 V3 из = С22- = с2з- = с3з- - V2 -"2 - V3 = 6- = 4- = 3- -5 -1 -3 = 1. = 3. = 0. Матрица стоимостей Опорный план v4 = C34 - Щ =6-0 = 6. Оценки свободных клеток пг 3 9 ГТо" 5 6 1 14 8 4 3 6 7 2 6 4 Гй~ 12 8 0 1 0 6 [Го* 10 5 4 10 14 3 2 4 6 6 4 4 [ТТ 12 1 8 ~о1 1 0 6 X 4 1-3 10 5 X X 4 14 3 -5 X X 6 6 -1 5 X 4 ГТТ| 12 8 Рис. 3.9. Расчет потенциалов строк и столбцов
3.4. Создание оптимального плана перевозок 71 Для свободных клеток вычисляются оценки по формуле щ + v, - -с9<0. Для клетки 1,3 имеем: щ + v3 - ев < 0; 0 + 3 - 8 < 0 Для клетки 1,4 имеем: wj + v4 - cj4 < 0; 0 + 6 - 7 < 0 Для клетки 2,1 имеем: и2 + vj - c2i < 0; 1 + 6 - 3 < 0 Для клетки 2,4 имеем: м2 + v4 - с24 < 0; 1 + 6 - 2 < 0; Для клетки 3,1 имеем: w3 + vj - c3i < 0; 0 + 6 - 9 < 0; Для клетки 3,2 имеем: щ + v2 - С32 < 0; 0 + 5 - 1 < 0; -5<0; -1<0; 4<0; не выполняется. 5<0; не выполняется. -3<0; 4<0; не выполняется. Если оценки всех свободных клеток отрицательны или равны нулю, то опорный план — оптимальный. Если хотя бы одна оценка больше нуля, то относительно этой свободной клетки строят замкнутый контур и выполняют перераспределение ресурсов (аналогично распределительному методу). Если несколько свободных клеток имеют оценки, большие нуля, то замкнутый контур строят для свободной клетки с наибольшим значением оценки. Наибольшую оценку имеет клетка Я24- Относительно этой клетки построим замкнутый прямоугольный контур и переместим грузы (рис. 3.10). Опорный план Перераспределение Оценки свободных По 10 4 10 14 2Г 4L 6 -\ л! 4 Гм] 12 8 ГоП 1 5 ресу 6 ГПГ 10 5 Т1 10 "l4] pcoi -2 6 6 ) 1 2 2 4 Гм] 12 8 клеток Го~| 1 5 6 X 4 2 10 5 X X 9 14 -2 -10 -5 X 6 1 -6| X X 4 Пй] 12 8 Рис. 3.10. Первое перераспределение ресурсов Аналогично выполним расчеты потенциалов и оценок свободных клеток. Расчет потенциалов. Потенциал первой строки примем за ноль. Определим потенциал первого столбца: v\ = с\ \ - щ =6-0 = 6. Определим потенциал второго столбца: v2 = ci2-wi =5-0 = 5. Определим потенциал второй строки: иг = сгг - v2 = 6 - 5 = 1. Определим потенциал четвертого столбца: v4 = с24 - Щ =2-1 = 1.
72 Глава 3. Транспортная задача Щ = сз4- v4 = 6 - 1 = 5. V3 = С33 - из = 3 - 5 = -2. Определим потенциал третьей строки: Определим потенциал третьего столбца: Расчет оценок свободных клеток. Для клетки 1,3 имеем: щ + v3 - с\з < 0; 0 -2 - 8 < 0; Для клетки 1,4 имеем: щ + v4 - с\4 < 0; 0 + 1 - 7 < 0; Для клетки 2,1 имеем: м2 + vi - c2i < 0; 1 + 6 - 3 < 0; Для клетки 2,3 имеем: и2 + v3 -с2з < 0; 1—2 — 4 < 0; Для клетки 3,1 имеем: из + v\ - c3i < 0; 5 + 6 - 9 < 0; Для клетки 3,2 имеем: w3 + v2 - с32 < 0; 5 + 5 - 1 < 0; выполняется. Наибольшую оценку имеет клетка я32- Относительно этой клетки построим замкнутый прямоугольный контур и переместим грузы (рис. 3.11). Опорный Перераспределение план ресурсов -10 <0; -6<0; 4<0; не выполняется. -5<0; 2<0; не выполняется. 9<0; не ГГо" 10 4 1Q Ч L 14 , 6 6 ,2 Ц 2 4 Гм| 12 8 Оценки свободных клеток [71 б [ 1 1 ГГо" 10 о] "Tl 8 2 771 2 6 6 ^1 4 4 Гм] 12 8 Г7~| 6 1 1 X 4 -7 10 0 X X X 14 2 -1 4 X 6 -4 ^б| X -9 4 Ги] 12 8 Рис. 3.11. Второе перераспределение ресурсов Аналогично выполним расчеты потенциалов и оценок свободных клеток. Расчет потенциалов. Потенциал второго столбца примем за ноль. Определим потенциал первой строки: Определим потенциал второй строки: Определим потенциал третьей строки: Определим потенциал первого столбца: Определим потенциал третьего столбца: Определим потенциал четвертого столбца: Расчет оценок свободных клеток. Для клетки 1,3 имеем: щ + v3 - с\з < 0; 5 + 2 - 8 < 0; Для клетки 1,4 имеем: щ + v4 - cJ4 < 0; 5 - 4 - 7 < 0; Для клетки 2,1 имеем: и2 + vi - с2\ < 0; 6 + 1 - 3 < 0; Щ =с\2- v2 = 5-0 = 5. U2 = C22- V2 = 6 - 0 = 6. из = с32- у2= 1 -0= 1- vi =сц -щ =6-5 = 1. V3 = сзз - иъ =3-1=2. V4 = C24-W2 =2-6 =-4. -1<0; -6<0; 4<0; не выполняется.
3.4. Создание оптимального плана перевозок 73 Для клетки 2,3 имеем: и2 + v3 - с2Ъ < 0; 6 + 2 - 4 < 0; 4 < 0; не выполняется. Для клетки 3,1 имеем: щ + vi - c3i < 0; 1 + 1 - 9 < 0; -7 < 0; Для клетки 3,4 имеем: щ + v4 - С34 < 0; 1 — 4 — 6 < 0; -9 < 0; Две клетки а2\ и я2з имеют одинаковую оценку. Выбираем любую из них, например, -а2\. Составим замкнутый контур а2\ ац а\2 а22 и переместим ресурсы. Заново определим потенциалы и оценки (рис. 3.12). Опорный план Перераспределение Оценки свободных ["F L 10 п4 J8 2 14 6 6 4 4 ГПГ] 12 8 Го~] -3 1-4 ресу 6 [Т 8 10 5 "l2l 2 14 pcoi -1 6 6 ) -1 4 4 Гм| 12 8 клеток Го~1 -3 -4 6 X X 1-7 10 5 X -4 X 14 -1 -9 -8 X 6 -1 "~®1 X -11 4 ГТТ1 12 8 Рис. 3.12. Третье перераспределение ресурсов Аналогично выполним расчеты потенциалов и оценок свободных клеток. Расчет потенциалов. Потенциал первой строки примем за ноль. vi =сц -щ =6-0 = 6. v2 = c\2-u\ =5-0 = 5. W2 = с2\ - vi = 3 - 6 = -3. Щ = ^32 - v2 = 1 - 5 = -4. V3 = c33-W3 =3-4 = -l. v4 = с24 -1/2 = 2 - 3 = -1. Определим потенциал первого столбца: Определим потенциал второго столбца: Определим потенциал второй строки: Определим потенциал третьей строки: Определим потенциал третьего столбца: Определим потенциал четвертого столбца: Расчет оценок свободных клеток. Для клетки 1,3 имеем: щ + v3 - cj3 < 0; 0 - 1 - 8 < 0; -9 < 0; Для клетки 1,4 имеем: щ + v4 - с\4 < 0; 0 — 1 — 7 < 0; -8 < 0; Для клетки 2,2 имеем: и2 + v\ - с2\ < 0; -3 + 5 - 6 < 0; -4 < 0; Для клетки 2,3 имеем: и2 + v3 - С23 < 0; -3-1 - 4 < 0; -8 < 0; Для клетки 3,1 имеем: щ + v\ - c3i < 0; -4 + 6 - 9 < 0; -7 < 0; Для клетки 3,4 имеем: щ + v4 - С34 < 0; -4 - 1 - 6 < 0; -11 < 0; Так как все оценки свободных клеток отрицательны или равны нулю, то опорный план является оптимальным. Определим стоимость перевозок по оптимальному плану: С = 2- 6 +12-5 + 8-3 + 4-2 + 2-1+6-3 =12 + 60 + 24 + 8 + 2 +18 =124.
74 Глава 3. Транспортная задача Распределительный метод также указал оптимальный план перевозок, но это был другой план. Таким образом, рассмотренный пример содержит несколько альтернативных оптимальных планов перевозок. 3.4.3. Дельта-метод Дельта-метод может использоваться только в том случае, если все значения элементов матрицы стоимости неотрицательные. Дельта-метод единственный, который при своей работе не требует опорного плана перевозок. В этом методе используются процедуры преобразования строк и столбцов матрицы стоимости, рассмотренные в методе добротно- стей. Если после выполнения процедуры преобразования строк и столбцов дельта-оценка стоимости перевозок уменьшается, то такое преобразование используется как опорное для следующего шага. Преобразования выполняются парами: по строкам и по столбцам. Каждое из преобразований, входящих в пару, называется полезным, если оно приводит к увеличению нулей и, соответственно, к уменьшению дельта-оценки. В противном случае преобразование называется вредным и, соответственно, увеличивает дельта-оценку (вычитается). Процедура определения стоимости перевозок выполняется так. Коэффициенты вектора вычитаний по строкам попарно умножаются на значения вектора ресурсов. Коэффициенты вектора вычитаний по столбцам попарно умножаются на значения вектора потребностей. Полученное произведение берется со знаком плюс, если операция «зануления» была «полезной». Для «вредной» операции полученное произведение берется со знаком минус. На первом этапе в дельта-методе используется процедура метода добротностей по преобразованию строк и столбцов с целью получения разреженной матрицы [3, 5, 6]. Алгоритм дельта-метода 1. Выполняется разреживание (зануление) матрицы. Так как на первом шаге обе процедуры преобразования приводят к увеличению нулей в матрице стоимости, эти процедуры будут полезными и каждая из них увеличивает дельта-оценку.
3.4. Создание оптимального плана перевозок 75 2. На последующих шагах выполняют одну процедуру вредную (уменьшают количество нулей и уменьшают дельта-оценку), а вторую процедуру — полезную (увеличивает дельта-оценку), но суммарная дельта-оценка от двух процедур должна быть меньше дельта- оценки предыдущего шага. 3. Если нельзя указать пару процедур (вредную и полезную), которая уменьшает дельта-оценку по сравнению с предыдущим шагом, то найдено оптимальное решение. Оптимальный план перевозок определяют по следующему алгоритму: • ненулевые элементы плана перевозок размещаются на нулевых позициях разреженной матрицы стоимости; • сначала заполняются позиции единственных нулей или в строке, или в столбце и им назначаются максимальные перевозки; • из рассмотрения удаляется соответствующий столбец или строка; • алгоритм выполняется снова для меньшего количества строк и столбцов до тех пор, пока не будут распределены все ресурсы; • если отсутствуют строки или столбцы с единственным нулевым значением, то максимально возможный объем перевозки назначают той клетке с нулевым значением, которая имеет минимальную стоимость перевозок. Такая ситуация говорит о наличии альтернативного оптимального плана перевозок. Пример 3.7 Используем условия примера 3.3. Матрица стоимостей и разреженная матрица имеют вид, показанный на рис. 3.13. Процедуру разреживания матрицы можно определить как вычитание соответствующего элемента вектора к = {5; 2; 1} из значений всех Матрица Преобразование Преобразование пг 3 9 ГТо" исходная 5 6 I 14 8 4 3 6 Т1 2 6 4 Г17 12 8 -5 -2 -1 [Т 1 8 10 строк 0 4 0 14 3 2 2 6 ~Т\ - 5 4 14 12 8 столбцов -10-2 0 Го" 0 7 10 0 4 0 14 1 0 0 6 21 0 5 4 [7Г] 12 8 Рис. 3.13. Исходные данные и первое преобразование
76 Глава 3. Транспортная задача элементов соответствующей строки, и, аналогично, для процедуры преобразования столбцов надо значение соответствующего элемента вектора t = {1; 0; 2; 0} вычесть из всех значений элементов столбца. Напомним, что вектор производства ресурсов обозначался как а = {at}, а вектор потребления ресурсов — b = {6,}. Определим дельта-оценку выполненных преобразований. Ао={6/}-{а/:}=(10;14;6;4)(1;0;2;0) + (14;12;8)(5;2;1) = = 10-1+6-2+14-5+ 12-2+ 8-1 = 10+12+ 70 + 24 +8 =124. Если в разреженной таблице можно указать на пересечении строки 1 и столбца у такой ноль, что он будет единственный или в строке /, или в столбце у, то относительно этого нуля надо выполнить одно вредное и одно полезное преобразования. В нашем примере (рис. 3.13) такой элемент единственный — #24. Относительно элемента я24 выполним одно вредное и одно полезное преобразования (рис. 3.14). Матрица Матрица Матрица разреженная вредное действие полезное действие -2 Го 0 7 [То 0 4 0 14 1 0 0 6 2) 0 5 4 \й\ 12 8 Го 2 7 ГкГ 0 6 0 14 1 2 0 6 о] 0 3 4 \й\ 12 8 Го 2 7 ГкГ 0 б 0 14 1 2 0 6 2\ 2 5 4 Пии 12 8 Рис. 3.14. Парное преобразование матрицы Определим дельта-оценку выполненных преобразований. А! = (10; 14; 6; 4) (0; 0; 0; 2) - (14; 12; 8) (0; 2; 0) = 8 - 24 = -16. Дельта-оценка не может быть отрицательной. Другого преобразования указать нельзя, поэтому план перевозок, определенный на предыдущем шаге, будет оптимальным. Определим оптимальный план перевозок для нашего примера. На первом шаге назначаются максимально возможные перевозки для строк и столбцов, имеющих единственное нулевое значение. Для нашего примера — столбец четвертый (рис. 3.15). Так как потребность четвертого потребителя удовлетворена полностью, то четвертый столбец исключается из дальнейшего рассмотрения. На втором шаге отсутствуют столбцы или строки, содержащие единственный ноль. В этом случае выбирается клетка с нулевым значением, имеющая минимальную стоимость перевозки
3.4. Создание оптимального плана перевозок 77 Матрица исходная План перевозок Шаг1 Го 0 7 [То 0 4 0 14 1 0 0 6 2] 0 5 4 Г* 12 I8 10 14 6 4 4 [ш 12 |_8_| Рис. 3.15. Первый шаг определения оптимального плана перевозок единицы ресурса (рис. 3.16). В нашем примере это клетка я32- Таким образом, можно утверждать, что пример содержит альтернативное оптимальное решение. Шаг 2 Го 0 7 По" 0 4 0 14 1 0 0 6 X Г* 8 8 10 8 14 6 4 И 12 8 ' 4 | Рис. 3.16. Второй шаг определения оптимального плана перевозок Так как третий производитель исчерпал свой ресурс, то третья строка удаляется из дальнейшего рассмотрения. На третьем шаге назначаются ресурсы второму и третьему потребителям, которые исключаются из дальнейшего рассмотрения (рис. 3.17). ШагЗ Го 0 ["Го" 0 4 X 6 1 0 6 X Г* 8 10 6 8 6 4 пп 2 Рис. 3.17. Третий шаг определения оптимального плана перевозок На последнем шаге назначаются ресурсы первому потребителю (рис. 3.18). Шаг 4 Го 0 ГТо" X X X х гт 2 8 2 10 6 8 14 6 6 4 4 Г*4! 12 8 Рис. 3.18. Четвертый шаг определения оптимального плана перевозок
78 Глава 3. Транспортная задача Определим стоимость перевозок по оптимальному плану. С= 8-6+ 6-5 + 2-3 + 6-4 + 4-2 + 8.1=48 + 30 + 6 + 24 + 8 + 8 = 124. 3.5. Задачи, сводящиеся к транспортной задаче Существует класс задач о назначении исполнителей на выполнение различных работ. Например, назначить артистов на исполнение ролей, распределить инженерно-технических работников по разным работам и т.д. Точно также можно распределять обработку деталей по разным станкам. Все эти задачи сводятся к транспортной задаче. Решить такую задачу можно по рассмотренному ранее алгоритму: найти опорный план, а затем - оптимальный план. При анализе матрицы стоимостей задач о назначениях выясняется, что матрица стоимостей вырождена. То есть, вектор ресурсов (Ь,) и вектор потребления (х,) состоят из единиц — одного работника надо назначить на выполнение одной работы. Поэтому появляется возможность решить задачу о назначениях более простым способом. На первом этапе выполняется разрежевание («зануление») матрицы стоимостей. Если в разреженной матрице стоимостей окажется, что в каждой строке и в каждом столбце можно указать по единственному нулю, то задача о назначениях оптимально решена. Если такая ситуация отсутствует, то для нахождения плана распределения работ можно использовать «венгерский алгоритм» [5]. Венгерский алгоритм 1. Если в разреженной матрице стоимостей в каждой строке и в каждом столбце нельзя указать по единственному нулю, то нужно минимальным количеством горизонтальных и вертикальных линий вычеркнуть все нули. 2. Из оставшихся невычеркнутых не нулевых элементов надо выбрать самый маленький элемент и вычесть его из оставшихся невычеркнутых элементов. 3. Прибавить этот минимальный элемент ко всем элементам, находящимся на пересечении горизонтальных и вертикальных линий.
3.5. Задачи, сводящиеся к транспортной задаче J9 4. Если после выполнения пункта 3 не удалось получить по единственному нулю в каждой строке и каждом столбце матрицы, то перейти к пункту 1. Эту процедуру повторять до тех пор, пока не будет получен желаемый результат. Пример 3.8 Распределить работы между исполнителями. Исходные данные приведены в таблице. 1 6 2 14 11 1111 Выполним разреживание (зануление) матрицы. _— 0-100 -зГ -1 -1 -1 гг 0 2 | 5 4 1 4 1 0 5 3 0 0 1 0 3 1 -3 1 -1 1 -1 1 -1 ГГ 0 2 5 3 0 3 0 0 5 3 0 о] 1 0 3 | 1111 1111 Слева и сверху от матрицы стоимостей указаны векторы вычитаний по строкам и по столбцам. Первый столбец и третья строка содержат по единственному нулю. Поэтому второму исполнителю можно назначить первую работу и третьему исполнителю - четвертую работу. Но первому и четвертому исполнителям не возможно назначить работы. Применим венгерский алгоритм. Вычеркнем нули. -3 -1 -1 _ 1 -1 0 ГТ™ Г XT' 2 _ ! 3 1 -1 ~Т" '(Г"' 3 _ 0' 1 0 ■in in,5" 3 _ "О" 1 1 1 1 \ н ) и [ 1 1 1 1 1 В трех оставшихся клетках — минимальный элемент 2. Вычтем его из трех невычеркнутых клеток.
80 Глава 3. Транспортная задача 1 3 О И ■е-и 1 1 1 К трем клеткам четвертого столбца, находящимся на пересечении линий, прибавим 2. гт 0 0 1 5 3 0 1 0 0 5 1 0 2] 3 0 5 | 1111 Единственный ноль находится в первой строке и четвертом столбце. Процедуру необходимо повторить. [Т 1 " [4J ГУ' 1 3 "V « 1 0' 1 ( - 'i Г" Т] 3 | 0 | 5 | 1 -1 О 2 ■в—е- ■e—h ■3—(Г 1 1 Го" 0 0 | 5 2 0 1 0 1 0 6 2 1 "71 3 0 5 1 1 1111 Теперь единственный ноль имеется в четвертой строке, третьем и четвертом столбцах. Поэтому четвертому исполнителю будет назначена вторая работа, первому исполнителю — третья работа и третьему исполнителю — четвертая работа. Второму исполнителю осталась первая работа. Определим суммарную стоимость работ: 2 + 3 + 1 + 1=7. 3.6. Примеры 1. Составьте план перевозок ресурсов от производителей к потребителям с минимальными затратами по условиям таблицы. Задачу решить методами «северо-западного угла» и потенциалов.
3.6. Примеры 81 руб. 4 1 3 2 85 1 2 3 2 1 45 2 3 2 6 4 280 3 6 5 4 3 110 4 •есурса, 2 3 2 3 250 5 |^^Наименованиепотребетел^^^^ Производители ресурса | Объем производства ресурса 125 240 75 330 Наименование 1 производителя 1 1 2 3 4 I Объем производства ресурса 1 Потребители ресурса 2. Составьте план перевозок ресурсов от производителей к потребителям с минимальными затратами по условиям таблицы. Задачу решить методами минимального элемента и распределительным. руб. 24 42 14 20 150 1 36 52 58 34 245 •2 28 38 22 40 70 3 16 22 34 52 340 4 33 46 36 37 220 5 | Наименование потребителя Производители ресурса | Объем производства ресурса 125 240 75 330 Наименование 1 производителя 1 1 2 3 4 I Объем производства ресурса 1 г-. г- \ Потребите ш ресурса 1 3. Составьте план перевозок ресурсов от производителей к потребителям с минимальными затратами по условиям таблицы. Задачу решить методами добротностей и дельта-методом. руб. 18 16 14 12 134 1 32 26 22 8 182 2 14 34 26 20 75 3 16 22 34 52 224 4 33 46 36 37 165 5 | Наименование потребителя Производители ресурса | Объем производства ресурса 233 115 307 425 Наименование 1 производителя 1 2 3 4 I Объем производства ресурса 1 Потребите ш ресурса | 4. Составьте план перевозок ресурсов от производителей к потребителям с минимальными затратами по условиям таблицы. Задачу решить методами «северо-западного угла» и распределительным. 6- 1962
82 Глава 3. Транспортная задача руб. 60 50 40 30 555 1 35 55 25 65 343 2 95 100 75 60 133 3 20 80 75 45 235 4 ^Н 120 80 25 424 5 | Наименование потребителя Производители ресурса | Объем производства ресурса 1200 800 250 450 Наименование 1 производителя 1 2 3 4 I Объем производства ресурса 1 Потребители ресурса 1 5. Составьте план перевозок ресурсов от производителей к потребителям с минимальными затратами по условиям таблицы. Задачу решить методами наименьшего элемента и дельта-методом. руб. 33 17 41 23 640 1 45 57 39 27 480 2 27 43 51 25 735 3 37 49 53 41 500 4 25 45 39 43 365 5 | Наименование потребителя Производители ресурса | 1 Объем производства ресурса 1000 700 800 500 Наименование 1 производителя 1 1 2 3 4 I Объем производства ресурса 1 Потребитег ш ресурса i Контрольные вопросы 1. Назовите область применения транспортной задачи. 2. Какие транспортные задачи называются сбалансированными? 3. Как привести несбалансированную транспортную задачу к сбалансированному виду? 4. Укажите общий алгоритм решения транспортной задачи. 5. Какое решение называется допустимым? Опорным? Оптимальным? 6. Сколько решений может иметь транспортная задача? 7. Каковы особенности математической модели транспортной задачи. 8. Укажите методы нахождения опорного решения. 9. Проанализируйте особенности методов нахождения опорного решения. 10. Укажите методы нахождения оптимального решения. 11. Сравните методы нахождения оптимального решения.
Гла ва 4 Целочисленное программирование 4.1. Общие положения В некоторых задачах линейного программирования результат вычислений должен выражаться целым числом. Например, количество изготовленных автомобилей, изданных книг, собранных холодильников и т.д. Целевая функция и условия ограничений в таких задачах также выражаются целыми числами. Попытки решить задачу целочисленного программирования симплексным методом (или другими методами) приводят к тому, что решение получается в виде дробных чисел. Попытка округлить полученный результат до ближайшего целого числа приводит к тому, что найденное решение либо выходит за область допустимых решений, либо находится внутри этой области, и, как следствие, является неоптимальным. На рис. 4.1 найдено решение задачи линейного программирования в точке ^(5,6; 4,8). При округлении до ближайшего целого числа получим решение Х(6; 5), которое будет находиться вне области допустимых решений. При округлении полученного результата в другую сторону получим Х(5; 4), которое не будет оптимальным. Очевидно, что оптимальное решение будет в точке (5; 5). Учитывая то, что все целочисленные значения вектора решений лежат внутри области допустимых решений (ОДР) и, соответственно, имеют меньшие значения, нежели значения в вершинах ОДР. Математическая модель задач целочисленного программирования имеет вид: п F(x) = ^Г с,*, => max (min) (4.1) 6*
84 Глава 4. Целочисленное программирование Рис. 4.1. Решение задачи графическим методом: — — ограничение; — ——целевая функция при наложенных ограничениях п ^аух, =bj при xtj > О — целое, i = 1, n, j = 1, m. (4.2) Задачу целочисленного программирования решают одним из методов линейного программирования, например симплексным методом. Если найдено оптимальное решение X(f\ ,/г,. .,$, которое не является целочисленным (хотя бы одно из значений ft дробное), то дополнительно вводят одно или несколько условий ограничений и продолжают поиск оптимального целочисленного решения специальными методами./— пересчитанные значения свободных членов bj. Пусть хотя бы одно ft и один Ху, не входящий в правильный столбец, будут дробными, тогда целой частью числа fi называется наибольшее целое число, не превышающее числа fi fi=fi-fi и х„=х„-хд, (4.3) где символом Л обозначена дробная часть числа, а символом ~ целая часть числа. Если fi — дробное число, а все Ху — целые числа, то задача не имеет целочисленного решения.
4.2. Метод Гомори g§ 4.2. Метод Гомори Идея метода Гомори состоит в том, что поставленную задачу сначала решаем любым методом линейного программирования (например, симплексным методом), а затем в полученном ответе выделяем дробные части и составляем дополнительное ограничение. Полученное дополнительное ограничение вводим в последнюю (по ходу решения) матрицу симплексного метода и определяем целочисленный ответ. Пример 4.3 Рассмотрим метод Гомори на примере 2.6. Найти максимум целевой функции F(JC) = х\ + х2 + х3. Ограничения имеют вид: -хх + Зх2 + 2х3 < 6; [2x,+4x2 + 2jc3<8; Зх, +2х2 -х3 <4. Дополнительно потребуем, чтобы х\,х2и х3 были целочисленными. Задача была решена симплексным методом и получен ответ. 0 1 0 0 5/3 1/3 8/3 -1 1 0 0 0 1/3 -1/3 4/3 0 1/6 1/3 -5/6 -1/2 0 0 1 0 10/3 2/3 16/3 /-4 Ответ: ЛГ(2/3; 0; 10/3); F{x) = 4. Для вектора решений Х(2/3; 0; 10/3) определим дробные части 2 и io=3j_ 3 и з з' Наибольшая дробная часть принадлежит первой фактической переменной. Определим дробные части фиктивных переменных первой строки. 1 1 — и —. 3 6 Составим дополнительное ограничение целочисленности для первой строки.
86 Глава 4. Целочисленное программирование 1/3 х4 + 1/6*5 > 1/3 или 1/3 х4 + 1/6дг5 -х7: Добавим полученное ограничение в матрицу 1/3. 0 1 0 0 0 5/3 1/3 8/3 0 -1 1 0 0 0 0 1/3 -1/3 4/3 1/3 0 1/6 1/3 -5/6 Ш -1/2 0 0 0 1 0 10/3 2/3 16/3 1/3 /-4 Ведущий элемент может находиться в пятом столбце. Проанализируем пятый столбец. 20 2 - 2 -> 2 * (-1/2) =-1 Ведущий элемент щ$. Выполним пересчет элементов ведущей строки. 0 1 0 0 0 5/3 1/3 8/3 0 -1 1 0 0 0 0 1/3 -1/3 4/3 2 0 1/6 1/3 -5/6 1 -1/2 0 0 0 1 0 10/3 2/3 16/3 2 /-4 Формула для пересчета первой строки Формула для пересчета второй строки Формула для пересчета третьей строки Формула для пересчета пятой строки Ч>зу=¥зу+^Ф4, Ys/ = V5y+-<P4,- 0 1 5/2 0 0 5/3 1/3 7/2 0 -1 1 0 0 0 0 0 -1 3 2 1 0 0 0 1 0 0 0 0 1 0 3 0 7 2 /-з В последней строке матрицы четвертый элемент положительный, поэтому ведущий элемент будет находиться в четвертом столбце. Выполним анализ четвертого столбца. - - 7/3 1 минимальный элемент равен 1, поэтому ведущим элементом будет ом- Выполним пересчет элементов четвертой строки
4.2. Метод Гомори 87 0 1 5/2 0 0 V3 1/3 7/2 0 -1 1 0 0 0 0 0 -1 3 1 1 0 0 0 1/2 0 0 0 0 1 0 3 0 7 1 /-з Формула для пересчета второй строки у у =v|/2y + Ф4У Формула для пересчета третьей строки \|/з/ =v|/3y -Зср^- Формула для пересчета пятой строки yjy =yVsj ""Ф4/ 0 1 5/2 0 0 5/3 1/3 7/2 0 -1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 -3 0 1/2 1 0 0 3 1 3 1 f-4 Ответ: Х{\; 0; 3); Fw = 4. Подставим целочисленный ответ в уравнение целевой функции и выражения ограничений. F{x) = xi+x2+x3=\ -xi + 3*2 + 2x3<6; 2дс, + 4*2 + 2дс3 < 8; 3xi+2x2-x3<4; 1 + 1-0+1-3 = 4; -1-1+3-0 + 2-3<6; 5<6; 2-l+4-0 + 2-3<8; 8<8; 3-l+2-0-l-3<4; 0<4. Наложенные ограничения выполняются. Пример 4.4 Найти максимум целевой функции: Fw = 2 xi + 4х2 наложенных ограничениях: max при ч 1 19/6 i 19/3 i 2х,+д:2<19/3; х1+3х2й\0; х, и х2 - целые. Ц 1 1 0 13 0 1 2 4 0 0 i 10/1 -► i 10/3 -► 19/3 10 19/6 10/3 6,33; 3,33.
88 Глава 4. Целочисленное программирование 1 1/2 0 [5/2] 0 3 1/2 0 -1/2 1 -1 0 19/6 41/6 /-19/3 1 о 19/3 3/5 -1/5 и 41/15 -1/5 2/5 О О 2/5 6/5 Ответ:Х{915; 41 /15); Fw = 218/15. 9/5 41/15 /-218/15 Определяем дробные части: 9,4 4 - = 1-=>—; 5 5 5 ±i=2!U!i. 15 15 15 12 _П 15 > 15* Приведем к общему знаменателю: _4 5 Так как первая строка матрицы содержит большую дробную часть 12/15> 11/15, то будем учитывать дробные части элементов фиктивных переменных первой строки. 3 — и 5 5 5 5 Составим дополнительное ограничение целочисленности для 1-й строки: 3/5хз +4/5*4>4/5 или 3/5х3 + 4/5дг4-Х5 = 4/5. Добавим полученное ограничение в матрицу: 1 О О 3/5 -1/5 -1/5 О 2/5 О 4/5 -1 О 0 2/5 6/5 9/5 41/15 4/5 /-218/15 1 0 0 0 0 1 0 0 0 0 1 0 -1 2/3 4/3 2/3 1 -1/3 -5/3 2/3 1 3 4/3 /-14 Ответ: X(l;3);F(x) = 14. Подставим целочисленный ответ в уравнение целевой функции и выражения ограничений
4.3. Метод Баллаша 89 Fw = 2jc,+4x2 = 2-1+4-3=2+12=14; 2дг, +лг2< 19/3; 2-1 + 1 -3 < 19/3; 2 + 3 < 19/3; 5 < 19/3; jci + Зх2 < Ю; 1 • 1 + 3 • 3 < 10; 1 + 9 < 10; 10 < 10. Наложенные ограничения выполняются. 4.3. Метод Баллаша Метод Баллаша ориентирован на решение задач выбора наилучшего (в некотором смысле) решения. Вектор решения формируется как сочетание входящих в него целочисленных переменных. Особенностью этого метода является то, что вектор решения всегда содержит целочисленные значения, т. е. отсутствует необходимость уточнять ранее полученное нецелочисленное решение (как в методе Гомори). К недостаткам метода Баллаша следует отнести неоптимальность алгоритма вычислений, так как надо сформировать полный набор сочетаний из переменных, входящих в вектор решения. Выполнить проверку на соблюдение условий ограничений по полному набору сочетаний, а вычислений критерия качества — по части сочетаний, которые удовлетворяют условиям ограничений. Математическая модель задачи имеет вид: п ^Г/fo =>тах (4.4) при ограничениях п ^ayXgubj при х,.=0,1, / = 1, л, j = l,m, (4.5) /=1 где Pi — эффект (прибыль) от производства (продажи, транспортировки и т. д.) ресурса; xi — ресурс; ay— затраты на изготовление (реализацию и т. д.) /-го ресурса; bj — ограничение на затраты. Алгоритм метода Баллаша 1. Расположить переменные в невозрастающей последовательности. 2. Присвоить критерию качества значение первой переменной (максимальное из всех возможных) и сохранить вектор решения,
90 Глава 4. Целочисленное программирование который содержит только одну первую переменную. Организовать полный перебор сочетаний переменных, включаемых в решение. 3. Определить текущий набор переменных. 4. Вычислить допустимость текущего набора переменных (нарушены ограничения или нет?). Если ограничения не нарушены, то перейти к шагу 5. Если ограничения нарушены, то перейти к шагу 3. 5. Вычислить текущий критерий качества. 6. Если текущий критерий качества больше предшествующего критерия качества, то сохранить значение текущего критерия качества и сохранить вектор переменных (вектор решения) и перейти к шагу 7. Если текущий критерий качества меньше предшествующего критерия качества, то перейти к шагу 3. 7. Проверить, все ли варианты сочетания переменных рассмотрены? Если все варианты, то перейти к шагу 8. Если рассмотрены не все варианты, то перейти к шагу 3. 8. Организовать вывод результатов вычислений. Расчет окончен. Работу метода Баллаша рассмотрим на примере. Пример 4.5 Завод «Электросила» может выпускать пять типов электрических турбин. Для каждой турбины определены затраты ресурсов на ее изготовление и прибыль от ее реализации. Исходные данные приведены в табл. 4.1. Определить наилучшую программу выпуска турбин. Таблица 4.1 I № технол. | операции 1 2 3 1 Прибыль, [ тыс. руб. Норма затрат ресу] 1 48 51 62 512 2 52 39 58 480 рса на изготовление турбины 3 37 34 51 395 4 24 29 47 320 5 18 21 33 300 Лимит I ресурса 1 150 170 230 При вычислении нарушений ограничений вычисления выполняются для каждого номера технологической операции. При нарушении ограничений хотя бы одной технологической операции данный вектор решений считается недопустимым (отмечается знаком «-»). Ход решения примера приведен в табл. 4.2.
4.3. Метод Баллаша 91 Решение Таблица 4.2 № варианта 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ' 23 24 25 26 27 ШЙ8Ш 29 30 31 32 Состав вектора решении 1 0 0 0 0 0 0 0 I) 0 I) 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 да 1 1 1 1 2 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 ая- 1 1 1 1 3 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 то: 1 1 1 1 4 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 ш 0 0 1 1 5 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 •т; 0 1 0 1 Предыдущий критерии качества 512 512 512 512 620 620 695 715 1015 1015 1015 1015 1100 1100 1175 1195 1495 1495 1495 1495 1495 1495 1495 1495 1527 1527 1527 ж$тютт 1612 1612 1612 1612 Выполнение ограничений по операциям 1 + + + + + + + + + + + + + + + + - + + + + + + + + + + %.Ж® + — - - 2 + + + + + + + + + + + + + + + + + + + + - + + + + + !Ж/¥3'Й: + + + - 3 + + + + + + + + + + + + + + + + + + + + + + + + + + шш + + + - Текущий 1 критерий качества| 0 300 320 620 395 695 715 1015 480 780 800 1100 875 1175 1195 1495 512 812 832 1132 907 1207 1227 1527 992 1292 1312 fA6I211 1387 1687 1707 2007 | Оптимальный вариант найден на двадцать восьмом шаге.
92 Глава 4. Целочисленное программирование С помощью метода Баллаша можно решать как задачи линейного программирования, так и задачи нелинейного программирования. Нелинейность целевой функции может снизить быстродействие метода, но принципиальных ограничений на использование этого метода нет [6]. 4.4. Метод Фора - Мальгранжа Этот метод не требует первоначального определения нецелочисленного решения. В нем так же, как и в методе Баллаша, задается набор переменных, определяющих вектор решения. Но в отличие от метода Баллаша выполняется не полный перебор, а назначение переменных в вектор решения по определенному правилу. Затем также из множества рассчитанных вариантов выбирается оптимальный вариант. Коэффициенты целевой функции должны быть положительными. Если один или несколько коэффициентов целевой функции отрицательны, то математическими приемами добиваются положительности этих коэффициентов. Метод Фора - Мальгранжа выполняется в два этапа: 1. Определение опорного плана. 2. Улучшение опорного плана. Метод Фора - Мальгранжа использует математическую модель (4.1) при наложенных ограничениях (4.2). Для построения опорного плана используют следующую методику. В опорный план помещают первую переменную. Анализируют опорный план на ненарушение условий ограничений. Если условия не нарушены, то к первой переменной добавляется вторая переменная и т. д. до тех пор, пока условие не будет нарушено. Переменную, нарушившую условия ограничений, удаляют из вектора решений. В вектор решения добавляют следующую переменную и т.д. до тех пор, пока не рассмотрят все переменные. Таким образом, получают опорный план. Далее улучшают опорный план, увеличивают значение целевой функции на единицу. К ограничениям задачи добавляют дополнительное ограничение вида: £c,.*,>F(°)+l- (4.6) 1=1 Так как сами переменные могут принимать только два значения О или 1, то минимальное приращение целевой функции будет 1. Поиск
4.4. Метод Фора - Мальгранжа 93 вяввввяявшвааавваввааввявВ1^вв^^^^ввввв^в^^ав-в^вв^вв^в_в=ВВ8ВВВВа решения, удовлетворяющего ограничениям (4.2) и (4.6), выполняется по следующему правилу. Просматриваются переменные, вошедшие в опорный план, начиная с последней переменной. Последнюю переменную полагают равной нулю, а последующим за ней переменным пытаются присвоить единицы. Если опорный план улучшить не удается, то опорный план является оптимальным. Если опорный план удалось улучшить, то ограничение (4.6.) заменяется на ограничение (4.7) 2>Л.>^,) + 1. (4.7) Процесс поиска наилучшего решения продолжается. « Обобщенный алгоритм метода Фора - Мальгранжа 1. Расположить коэффициенты целевой функции в порядке убывания. 2. Найти опорное решение. 3. Последней переменной х* = 1 в векторе решений присвоить значение 0. 4. Сформировать дополнительное ограничение и добавить его к исходным ограничениям. 5. Поочередно присваивать переменным с порядковым номером, большим к, значение единицы. Если улучшить опорное решение не удается, то найдено оптимальное решение и перейти к шагу 7. Если опорное решение удалось улучшить, переходим к шагу 6. 6. Последней переменной xt = 1 в векторе решений присвоить значение 0 и перейти к шагу 4. 7. Вывод решения, завершение работы. Рассмотрим работу метода Фора - Мальгранжа на примере. Пример 4.6 Сформировать производственную программу работы сборочного цеха, если максимальное значение ресурса 45. Условия приведены в табл. 4.3.
94 Глава 4. Целочисленное программирование Таблица 4.3 Характеристика и размерность |Прибыль, тыс. руб. [Потребность в ресурсах Номера изделий | 1 22 18 2 20 9 3 14 10 4 12 8 5 10 7 6 9 6 7 7 5 8 5 2 | Сформируем целевую функцию и ограничение. Целевая функция: 22xi + 20х2 + 14х3 + 12х4 + 10х5 + 9х6 +7х7 +5х8 -> max. Ограничение: 18х; + 9х2 + Юхз + 8х4 + 7х5 + 6х6 +5х7 + 2х8 < 45. Поочередно назначая 1 переменным, получим опорное решение: *(1;1;1;1;0;0;1;0). Решение Таблица 4.4 Шаги 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Значения переменных, входящих в вектор решения 1 2 0 0 0 0 0 0 3 1 1 1 1 0 0 0 0 0 0 0 4 1 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 5 0 1 0 0 1 0 0 1 1 1 0 1 0 0 1 1 0 6 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 7 0 0 0 1 0 0 1 1 0 1 1 0 0 1 0 1 1 8 0 0 0 Значения целевой функции 68 66 70 68 69 68 66 68 66 64 63 63 62 60 60 58 57 левой части 1 ограничений 45 44 45 44 44 43 42 45 42 41 40 45 44 43 43 42 41
4.4. Метод Фора - Мальгранжа 95 Продолжение табл. 4.4 Шаги 18 19 20 21 22 :>23-:. 24 25 26 27 28 29 Значения переменных, входящих в вектор решения 1 (Г 0 0 0 0 0 0 ?. 0 0 0 0 0 0 3 0 0 0 0 0 0 1 4 0 0 5 0 1< 0 6 0 0 7 1 0 1; 0 8 0 'Mr Значения целевой функции 60 58 56 55 53 У Г "12" 70 68 67 65 63 57 левой части ограничений 44 41 40 39 38 \,:,.'\;тс::':,\ 42 41 40 39 37 38 После первого шага (построения опорного решения) целевая функция (сумма прибыли) получила значение 68 (табл. 4.4). После первого шага добавим новое ограничение: 22*1 + 20лг2 + 14лг3 + 12х4 + 10лг5 + 9х6 +7х7 + 5х8 > 69. Далее на втором шаге переменной х4 присвоим 0 и попытаемся присвоить х5 = 1. Значение целевой функции будет равно 66. Добавлять нового ограничения не будем. Далее, на третьем шаге, положим переменную х5 = 0 и, начиная с переменной х6, будем им присваивать поочередно 1. Комбинация {1; 1; 1; 0; 0; 1; 1; 1} нарушает условие ограничения (требуется ресурс более 45) и поэтому пропущена. На третьем шаге получено значение целевой функции, равное 70, поэтому вводим новое ограничение: 22х, + 20*2 + 14х3 + 12х4 + 10*5 + 9х6 +7х7 + 5 х8 > 71. Аналогичным образом продолжается поиск оптимального решения. Оптимальное решение будет достигнуто на 23-м шаге: целевая функция примет значение, равное 72, и будет удовлетворено условие ограничения (ресурс используется целиком — 45 единиц) [6].
96 Глава 4. Целочисленное программирование 4.5. Метод «ветвей и границ» Использование этого метода предполагает нахождение опорного решения одним из методов линейного программирования, например симплексным методом. Затем поочередно одну из полученных нецелочисленных переменных, входящую в вектор решения, переводят в целочисленное значение, и т.д., пока все переменные не примут целочисленное значение. При переводе каждой из переменных в целочисленное значение добавляют по одному ограничению и решают две задачи. Деление на две задачи не выполняется, если получено целочисленное решение или значение целевой функции получило меньшее значение, чем ранее зафиксированное значение. Метод «ветвей и границ» заканчивает свою работу, когда рассмотрены все нецелочисленные переменные, входящие в вектор решения, т. е. дальнейшее ветвление алгоритма невозможно. Математическая модель задачи метода «ветвей и границ» представлена выражениями: п целевая функция: F(JC) = ^cixi => max(min) n при ограничениях: ^ aijxi = bj, x{J > 0 — целое, / = 1, n, j = 1, m. /=i Далее организуется полный перебор по всем нецелочисленным переменным, вошедшим в оптимальное решение. Для каждой переменной поочередно формулируются два дополнительных ограничения и, соответственно, две задачи. В первой задаче дополнительное ограничение содержит округление до ближайшего меньшего целого значения: хк=хГ-хГ- (4-8) Во второй задаче дополнительное ограничение содержит округление до ближайшего большего целого значения: **=*Г-*Г+1, (4-9) где символом Л обозначена дробная часть числа, а символом * целая часть числа.
4.5. Метод «ветвей и границ» 97 Укрупненный алгоритм метода «ветвей и границ» 1. Получить опорное решение. 2. Проверить, является ли полученное решение целочисленным? Если «да», то перейти к шагу 11. Если «нет», то присвоить значению целевой функции большое отрицательное значение и перейти к шагу 3. 3. Из вектора решения выбрать переменную, имеющую наибольшее нецелочисленное значение. 4. Определить дополнительное ограничение для выбранной переменной и выполнить ветвление алгоритма на две задачи. 5. Выбрать очередную из двух задач. Проверить, просмотрен ли весь список задач? Если «да», то перейти к шагу 11. Если «нет», то перейти к шагу 6. 6. Найти оптимальное решение очередной задачи. 7. Проверить полученное оптимальное решение. Если найденное решение лучше ранее зафиксированного результата, то перейти к шагу 9. Если найденное решение хуже ранее зафиксированного результата, то перейти к шагу 8. 8. Отказаться от дальнейшего ветвления и перейти к шагу 5. 9. Проверить, является ли полученное решение целочисленным. Если «да», то перейти к шагу 10. Если «нет», то перейти к шагу 3. 10. Запомнить вектор решения и значение целевой функции и перейти к шагу 5. 11. Проверить, равно ли значение целевой функции ранее установленному большому отрицательному значению (на шаге 2)? Если «да», то задача не имеет целочисленного решения. Если «нет», то перейти к шагу 12. 12. Вывести вектор решения и значение целевой функции. Пример 4.7 Определить максимум целевой функции Fw = 6 х\ + 2 х2 при ограничениях: |l3x1+4x2<49; \-х{ +4х2<9. Использование симплексного метода приведет к следующему решению (рис. 4.2): F{x) = 26; ^(2,86; 2,96).
Qg Глава 4. Целочисленное программирование 1 **- 3 ™ ■ Zj[2 7 / / t — — 5 •*»• Рис. 4.2. Результат решения симплексным методом: — — —линия уровня целевой функции; линии ограничения ОДР Первый шаг Первая ветвь. Вводим целочисленное ограничение на значение первой фактической переменной. Округляем с недостатком таким образом, что х\ < 2. Вводим фиктивную переменную х5 (фиктивные переменные хз и х* добавлены симплексным методом) такую, что х\ + х5 = 2. Это позволили выделить подобласть ниже прямой линии х\ = 2. Решим с помощью симплексного метода подзадачу: F(x) = 6*i +2л:2 —> niax при ограничениях Г13х,+4х2<49; <-хх +4х2 <10; 1*1 ^ 2- Ответ: F{x) = 20,25; Х(2; 2,75). Вторая ветвь. Округляем значение первой фактической переменной с избытком таким образом, что х\ < 3. Вводим фиктивную переменную х5 такую, что х\ + х5 = 3. Это позволит выделить подобласть выше прямой линии х\ = 3. Решим с помощью симплексного метода подзадачу: ^(х) = 6*1 +2^2 —> niax при ограничениях [13х, + 4х2<49; ч — jcj + 4х2 <10; [*,>3. Ответ: F{x) = 25,5; Л^З; 2,5).
4.5. Метод кветеей и границ» 99 Из результатов, полученных в первой и второй ветви, выбираем такой, который дает наибольшее значение целевой функции. То есть, за опорное решение принимаем математическую модель, полученную во второй ветви. На втором шаге будем избавляться от нецелочисленности второй фактической переменной. Второй шаг Первая ветвь. Отмечаем, что по условию задачи значение первой фактической переменной не может превышать 3. Округляем значение второй фактической переменной с недостатком, таким образом, что хг < 2. Вводим фиктивную переменную Хб такую, что х2 + Хб = 2. Это позволит выделить подобласть левее прямой линии х2 = 2. Решим с помощью симплексного метода подзадачу: F(X) = 6 Xi + 2 Хг —► max при ограничениях [13jc, + 4х2<49; 1-х, + 4х2 <10; |*i-3; 1*2*2. Ответ: F{x) = 24; Х(3; 2). Вторая ветвь. Округляем значение второй фактической переменной с избытком таким образом, что х3 < 3. Вводим фиктивную переменную хв такую, что х2 + Хб = 3. Это позволит выделить подобласть правее прямой линии х2 = 3. Решим с помощью симплексного метода подзадачу: F(X) = 6x\ + 2х2 —► шах при ограничениях [13х1+4х2<49; 1-Х! +4х2 <10; 1*2*3. Найти решение невозможно, так как поиск решения должен выполняться за пределами области допустимых решений. 7*
100 Глава 4. Целочисленное программирование Дальнейшие вычисления прекращаются, так как в первой ветви второго шага получено целочисленное решение, а вторая ветвь «зашла в тупик». Окончательный ответ: F(jc) = 24; Х(3; 2). Метод «ветвей и границ» относится к классу универсальных методов, т. е. позволяет решать не только задачи линейного программирования, но и комбинаторные задачи дискретного программирования. Но этот метод применим при решении задач малой размерности, так как при большой размерности задачи требуется много машинного времени [3]. 4.6. Примеры 1. Найти целочисленное решение методом Гомори, если целевая функция F^) = 2х\ + 3x2 + 4*з + 7 х4 —* niax и ограничения х, - 2х2 + 2х3 +хЛ<9; 2х2-хъ +3х4<12. Ответ:Х{\\ 16; 20; 0); F{x) = 130. 2. Найти целочисленное решение методом Баллаша, если целевая функция F(JC) = *1 +2*2 + 3*3 + 4х4+ 5х5+ 6х6 + 7*7 + 8х8 —> max и ограничения х, + 5х2 + 4х3 + 2х5 + 4х7 < 32; 2х2 + Зх4 + 4х6 + 6х8 < 44. Ответ: Х(0; 0; 1; 1; 0; 0; 0; 0); Fix) = 146. 3. Найти целочисленное решение методом Гомори, если целевая функция F(JC) = 2xj + 3 jc2 + 4х3 + 5х4 —> min и ограничения \х2 - 5х3 + 4х4 ^ 14; \lxx +3jc3 +х4<18; \Ъхх +2jc2-jc3<9. Ответ: Х(0; 4; 0; 18); F(x) = 102. 4. Найти целочисленное решение методом Баллаша, если целевая функция^) =х\ +2x2 + Зх3 + 4х4 + 5х5 + 6х6 + 7х7 + 8х8 —► min и ограничения
4.6. Примеры 101 [хх + 2х2 - Зх3 + 2х5 + 4х7 > 30; \ х2 + х4 + 2х6 + 6х8 < 40; [Зх, + 2х2 + 4х5 + 6х6 > 24. 5. Найти целочисленное решение методом Фора - Мальгранжа, если целевая функция Fw=xi+2x2 + 3x3 + 4x4 +5x5+ 6хб + 7х7 + 8х8 —* шах и ограничения [хх + 5х2 + 4х3 - 2х5 + 4х7 > 48; <2х2 +4х4 -х6 +3х8 <36; [X! + 2х2 + 4х5 + х6 < 24. 6. Найти целочисленное решение методом Фора - Мальгранжа, если целевая функция F^)=xj+2x2+ 3х3 + 4х4 + 5х5 +6х6 + 7х7 + 8х8 —* min и ограничения f 5х, + 4х2 + Зх3 - 2х5 + х7 > 22; 12х2 + Зх4 + 4х6 + 6х8 < 18; [х, +2х2 +х5 +2х6>10. Контрольные вопросы 1. Сформулируйте задачу целочисленного программирования. 2. Приведите примеры задач целочисленного программирования. 3. В чем отличие математических моделей задач целочисленного программирования от задач линейного программирования? 4. Почему в задачах целочисленного программирования недопустимо округление ответа, полученного методами линейного программирования? 5. Назовите два класса задач целочисленного программирования и укажите их особенности. 6. Объясните в чем суть и особенности метода Гомори. 7. Укажите особенности метода «ветвей и границ» и расскажите об его алгоритме. 8. Расскажите об особенностях метода Баллаша и об алгоритме этого метода. 9. Укажите отличительные особенности метода Фора - Мальгранжа и его алгоритма.
Глава 5 Динамическое программирование 5.1. Основные понятия и определения Под динамическим программированием понимают некоторый специальный метод оптимизации, суть которого состоит в отыскании оптимального решения путем выполнения вычислений в несколько шагов (этапов). Вся задача оптимизации разделяется на несколько шагов, причем все шаги могут быть уникальными или одинаковыми и чередоваться друг с другом. Некоторые задачи оптимизации легко разделяются на шаги естественным способом, а для других — вводится искусственное разделение на шаги. Примерами задач, решаемых динамическим программированием, могут быть: распределение ресурсов (финансовых, сырьевых, материальных и т.д.) между предприятиями, замена (или ремонт) промышленного оборудования, прокладка коммуникаций (трубопроводов, дорог и т. д.) и пр. В этих задачах, как правило, в качестве шагов (этапов) выступают отрезки времени (годы, кварталы и т. д.), которые явно задаются в условии задачи. Оптимальное решение задачи в целом складывается из оптимальных решений на каждом шаге т £ = £/,, (5.1.) 1=1 где // — оптимальное решение на /-м шаге. В этом случае говорят, что целевая функция L обладает «аддитивным критерием качества».
5.2. Нахождение кратчайшего пути 103 5.2. Нахождение кратчайшего пути Задача динамического программирования по своей сути является управляемым процессом, причем управление выполняется на каждом шаге. Особо надо подчеркнуть, что выбор оптимального решения на конкретном шаге не дает гарантии получения оптимального решения для всей задачи. То есть для получения оптимального решения для всей задачи иногда приходится выбирать не лучшее решение на конкретном шаге. Таким образом, планирование многошаговой задачи сводится к выбору такого решения на каждом шаге, которое учитывает последствия на следующих (будущих) шагах. На текущем шаге выбирается не лучшее решение, а то, которое предполагает максимальную сумму выигрыша от всех оставшихся шагов. Учитывая вышесказанное, выполнять вычисления в задачах динамического программирования удобнее от конца к началу. Действительно, легко можно планировать последний, т - 1, шаг. Выполняя вычисления по последнему шагу, надо сделать ряд предположений: как закончился предыдущий, т - 1, шаг и для каждого предположения найти условно-оптимальное решение на т-м шаге. Аналогично выполняются т-1,т-2ит.д. шаги, вплоть до первого шага. Таким образом, будут найдены условно-оптимальные решения на каждом шаге. Далее выполняется переход от условно-оптимального решения к безусловно-оптимальному решению на каждом шаге, т. е. выполняются вычисления от первого шага к последнему шагу, ориентируясь на полученные условно-оптимальные решения. Теперь на первом шаге известна «стоимость» решения задачи от второго шага до последнего шага и, следовательно, можно указать оптимальное решение на первом шаге (снизить «стоимость» первого шага). Далее аналогично выполняются второй, третий и т. д. шаги. При использовании динамического программирования многошаговая задача решается дважды: от конца к началу (определение условно-оптимального решения) и от начала к концу (определение безусловно-оптимального решения). Первый этап длительный и трудоемкий, второй — короткий и уточняет решения первого этапа (по готовым рекомендациям определяется безусловно-оптимальное решение на каждом шаге).
J04 Глава 5. Динамическое программирование Пример 5.1 Проложить полотно железной дороги по кратчайшему, с экономической точки зрения, пути между пунктами А и Б. На географической карте строится некоторая прямоугольная область, где в левом нижнем углу помещен пункт А, а в правом верхнем углу — пункт Б. Прямоугольная область по горизонтали и по вертикали разделяется на произвольное количество отрезков, и по границам отрезков строится сетка. Для каждой стороны элементарного прямоугольника определяется стоимость прокладки пути (рис. 5.1). Для упрощения решения задачи положим, что путь может прокладываться только по границам элементарных прямоугольных областей (т. е. под углом 90°), заранее известна стоимость строительства по каждому элементарному отрезку, и путь от пункта Б к пункту А прокладывается в направлении справа налево и сверху вниз без петель. Таким образом, каждый возможный путь от пункта А до пункта Б будет представлять собой ломаную линию. Надо проложить такой путь от А к Б, чтобы суммарные затраты на его строительство были минимальны. Возможны два варианта: полный перебор всех возможных путей, что очень долго и трудно, или использование динамического программирования с разделением задачи по шагам. Разделим расстояние между пунктами А и Б на 17 отрезков (шагов) по горизонтали и на 8 отрезков (шагов) по вертикали. Тогда длина любого пути составит т = 17 + 8 = 25 отрезков (шагов). На рис. 5.1 указаны стоимости строительства пути по каждому отрезку. Перемещение от Б к А выполняется последовательно по элементарному пути (шагу) к следующей узловой точке. Каждая узловая точка характеризуется двумя координатами: горизонтальной и вертикальной. Обе координаты целочисленные и большие нуля: 0<х< 17 и 0<у<8. В каждой узловой точке будем определять условное оптимальное управление (движение по горизонтали или движение по вертикали). Направление движения выбирается из условия: стоимость строительства всех остальных отрезков пути, включая текущий отрезок, должна быть минимальной. Эту стоимость будем называть условно-оптимальной. Итак, запустим процедуру поиска условно-оптимального решения от конца к началу (от пункта Б к пункту А). На последнем 25-м шаге будем находиться в верхнем правом углу (пункт Б). Попасть в
г10—г10—г11—г10—г- 11 12 11 10 10 но—Lii —ho—[-li —L I _1 Л _1° _Л° (-10 hlO h 9 V- 9 к 11 11 10 9 8 Lll [-12 [-11 [-10 L 13 12 12 10 10 |- 9 L 8 LlO LlO L 12 13 12 12 11 LlO LlO UlO Lll L 14 10 8 7 6 |-8 —у 9 •—LlO—Ln—L: 9 10 11 10 10 Ln—Lio —Ln—Ln —L: 10 i-ll Г.12 rll TlO rll гЮ 10 11 10 10 8 A L16 L15 Иб L-12 11 10 11 11 12 13 14 о —Ln —Ln —Lio —Lio —L 9—L 9 —|-io —Lio —Ln —Ln —L 10 jjj j j j I j Jf J 0 hlO h 11 hll 1- 8 h 8 у 9 1-9 у 8 к 7 1-10 k 7 10 10 11 11 10 11 12 11 8 7 о—Lio—L 9 —L 9 —Lio—Lio—L 8 —L 8 —Lio—Ln—Ln—L 10 11 11 11 10 9 9 8 9 9 11 1 у 9 1-9 1-8 i-S • L 7 L 7 [-8 L 7 [-9 LlO L 11 10 10 10 10 11 II II 12 12 12 2—L12—Ln—Li3—L12—Ln—Lio—Lio—Lio—L 9 —Lio—L 9 10 11 10 11 10 9 8 8 8 7 °484847474бЧб45Ч748-1-94 9 9 8 7 9 11 12 13 14 12 10 0 LlO [-9 [-9 1-8 L"7 hS 1-9 LlO LlO Lll L 10 11 8 7 8 10 11 9 11 12 14 -Ln —Lio —L14 —Lx3 —L12—L 8 —Lio —L14 —Li5 —LX6 —L i-pi^B 15 15 6 6 || S 11 12 °4H 7 9 44 9 8 44 15 15 ;-U-l Рис. 5.1. Таблица стоимостей строительства элементарных участков пути
106 Глава 5. Динамическое программирование пункт Б можно с 24-го шага и возможны два варианта: двигаться по горизонтали (стоимость 11, узел Б\) или двигаться по вертикали (стоимость 15, узел Б2) — рис. 5.2. и I 15 15 и Въ 14 Рис. 5.2. Определение направления движения Из узла Б\ к пункту Б можно двигаться только в одном направлении — по горизонтали, и стоимость движения составит 11. Точно также из узла Б2 к пункту Б можно двигаться только в одном направлении — по вертикали, и стоимость движения составит 15. Таким образом, для последнего 25-го шага предпочтительнее движение из узла Б\. Теперь рассмотрим предшествующий 24-й шаг. Предыдущий 23-шаг мог закончиться в одном из узлов В\9 В2 и 2?з- Из узла В\ движение возможно только в одном направлении — по горизонтали к узлу Б\, и стоимость этого перехода составит 11, а суммарная стоимость до конечного пункта Б— 22. Из узла В2 возможны два направления движения: • В2 — Б\ — Б с общей стоимостью движения 11 + 15 = 26; • В2 — Б2 — Б с общей стоимостью движения 15 + 12 = 27. Наилучший путь первый, и его стоимость 26 поместим в кружок В2. Из узла 2?з движение возможно только в одном направлении — по вертикали к узлу Б2, и общая стоимость движения составит 15 + 14 = 29. Наилучший вариант движения от узла В\ к узлу Би так как его суммарная стоимость составит 22.
5.2. Нахождение кратчайшего пути 1Q7 Далее поступаем аналогичным образом, т. е. на каждом шаге оптимизируем только текущий шаг и прибавляем результат от оптимизации последующих шагов. По изложенному алгоритму выполняется условная оптимизация: в каждой узловой точке известно направление движения и стоимость оставшегося пути. Дойдя до пункта А, получим условную оптимальную стоимость строительства железнодорожного пути, равную 262 (рис. 5.3), 16 Е 11 Л/, Л, tf, Я, 9 Р\ Щ 0, 10 11 9 9 ЯГ| 10 9 15 16 12 10 9 9 с, г, У\ 8 8 9 9 11 ! Д\ Г, 5, ft Б 10 9 11 И 11 Ж, 3, я, Ц\ Рис. 5.3. Прокладка пути в обратном направлении Во время движения от пункта Б к пункту А несколько раз возникала ситуация выбора: куда идти, влево или вниз (по горизонтали или по вертикали), при одинаковой стоимости работ (вершины Ей МиРи Си Фи Х{$1 В данной ситуации выбор направления движения был произвольным, так как при повторном просчете неудачный выбор будет исправлен. Теперь при прямом просчете алгоритма возможно улучшение полученных решений на отдельных шагах. Переходим к безусловному оптимальному управлению — определению пути от пункта А к пункту Б (рис. 5.4) самым дешевым способом. Начинаем движение от пункта А вверх (по вертикали), хотя условно-оптимальное решение дало результат по горизонтали. Теперь,
108 Глава 5. Динамическое программирование двигаясь из пункта А по вертикали, ищем самый короткий («дешевый») путь к одной из узловых точек, в которых был неоднозначный выбор (Е\, Ми Ри Си Ф\,Х\). Если вновь пройденный путь дает лучшие результаты, чем ранее пройденный условно-оптимальный путь, то условно-оптимальный участок пути заменяем на безусловно-оптимальный путь. От узловой точки Pi до пункта Б стоимость работ составляет 145. По вновь пройденному оптимальному пути, стоимость работ составляет 95. 10 ю и 7ПТ 11 Л/, Л, Кх #, 9 Вх Бх Б Р\ Я, Ох 8 9 10 10 Ж, 11 11 11 8 8 9 9 3, 11 10 10 9 9 Я, Рис. 5.4. Прокладка пути в прямом направлении Итоговая сумма 145 + 95 = 240, что меньше условно-оптимального решения (262). Поэтому условно-оптимальное решение от пункта А до узловой точки Р\ заменим на только что найденное безусловно- оптимальное решение. Далее от узловой точки Р\ также возможен альтернативный путь до узловой точки М\ (рис. 5.5). Р, 7 10 11 11 Л/, ^93) (ш\ (ш\ П23) Q Рис. 5.5. Уточнение пути на участке Р\ - М\ Стоимость каждого из путей условно-оптимального и безусловно- оптимального одинаковая, поэтому можно выбрать любой из путей.
5.2. Нахождение кратчайшего пути 109 Но от узловой точки Р\ до узловой точки Е\ можно добраться, минуя узловую точку М\. Рассмотрим этот путь (на рис. 5.6 показан пунктирной линией). ю 10 11 12 11 10 11 £, Д, Г, Я, £, Б 10 11 101 7| 10 10 9 11 Л/, Л, tf, Я, 9 О, 9 8 8 9 9 11 10 ж1 зх я, 9 11 11 11 8 9 10 Рис. 5.6. Альтернативные пути Итоговая сумма по только что пройденному пути составляет 249, что больше ранее найденного решения. Поэтому замену путей выполнять не будем. От узловой точки М\ до узловой точки Е\ можно добраться другим путем (рис. 5.7). Мх 8 10 10 11 П35) (из) П5П Ибо) П70) П8о) П9П Рис. 5.7. Уточнение пути на участке М\ - Б\ Стоимость движения по этому пути составит 191 + 52 = 243, что «дороже» (длиннее), чем по ранее пройденному пути, поэтому замену пути выполнять не будем [3]. Больше альтернативных разветвлений не было. Оптимизация закончена. Безусловно-оптимальный путь показан на рис. 5.8. Его стоимость составляет 240. Причем отрезок пути от узловой точки Р\ до узловой точки М\ можно выполнить двумя вариантами, одинаковыми по стоимости.
НО Глава 5. Динамическое программирование 10 Ех Дх Л Вх Ех Б 111 10 9 11 11 11 Жх 1 8 9 10 1 111 7 10 11 MJ Л! /Г) Их 9| 7 По 11 ГТ1 8 8 9 9 Зх Рх\ Пх Ох [И 10 10 9 9 Я, Рис. 5.8. Оптимальный путь с возможным альтернативным участком 5.3. Распределение ресурсов С помощью методов динамического программирования можно решать задачи распределения ресурсов. Общий подход к решению задач распределения ресурсов тот же, но имеются некоторые особенности. Распределить некоторый ресурс (например, финансы) в объеме Sмежду предприятиями Р\9Р29 ...9 Рп- Ясно, что вложение финансов в каждое предприятие должно приносить дополнительную прибыль. Чем больше сумма финансовых вложений в предприятие, тем больше дополнительный доход, т. е. функция дополнительного дохода неубывающая. Но следует иметь в виду что, начиная с какого-то момента, дополнительная прибыль не увеличивается, т. е. наступает насыщение или, другими словами, предприятие не может освоить выделенные ресурсы. Задача стоит так: как распределить выделенные ресурсы между предприятиями, чтобы суммарный доход от всех предприятий был максимальным. Распределяемые ресурсы выделяются предприятиям порциями (равными или неравными), распределенными во времени (по периодам).
5.3. Распределение ресурсов 211 Перед каждым шагом (периодом выделения ресурсов) имеется некоторая сумма S еще не распределенных ресурсов. На каждом шаге предприятиям назначаются ресурсы х\9 Х2, ..., х„. Требуется найти оптимальное сочетание xj,х2,..., хт при котором совокупный доход максимален п L = £a,(x,) => max. (5.2) /=i Начнем оптимизацию с последнего шага т. К последнему шагу мы подошли с остатком ресурсов S. Очевидно, что их надо назначить последнему предприятию Р„. Следовательно, оптимальное решение будет: xn(S)=S> (5.3) и условный оптимальный доход составит Ln(S)= <** (sy (5.4) Ha предпоследнем шаге п - 1 имеем запас ресурсов S, а условный оптимальный доход на двух последних шагах Ьп.\^ Если на предпоследнем шаге п - 1 предприятию Р„.\ будут выделены ресурсы х, то на последнем шаге п ресурсов останется £ - х, и условный оптимальный доход на двух последних шагах составит: Ln-\ (S) = а л-1 (S) + Ln (s-x) 9 (5.5) и нужно найти такое х, чтобы доход был максимальным: Ln-\(S) =™™{<*n-nx)+Ln(S-x)}> (5.6) т. е. из возможных значений выбирается наибольшее значение в фигурных скобках. Аналогично оптимизируются шаги п - 2, п - 3,... и т. д. Дойдя до 1-го шага, будем иметь начальное (фиксированное) значение ресурсов Q, поэтому условный оптимальный доход составит: L* =L\(Q) =™g{aHx)+Li{Q-x)}- (5-7) Теперь надо выполнить обратные вычисления и уточнить распределение ресурсов. Пример 5.2 Имеется четыре предприятия, между которыми надо распределить 7 единиц ресурсов. В табл. 5.1 даны функции дохода а, от вложения фиксированных порций денежных средств.
122 Глава 5. Динамическое программирование Таблица 5.1 X 1 2 3 4 5 6 7 ctiw 0,7 0,9 1,1 1,2 1,3 1,3 1,3 а2(х) 0,1 0,4 0,8 1,1 1,5 1,6 2,0 «зм 0,1 0,3 0,9 1,0 1,4 1,5 1,< а4М 1,0 2,2 1 2,4 1 2,4 1 2,4 2,4 1 2,4 | Для каждого из четырех предприятий, начиная с какой-то суммы, наступает режим насыщения, т. е. предприятие не в состоянии освоить вложенные средства. Запустим алгоритм с конца. Количество шагов равно количеству предприятий. Первый шаг. Денежные средства назначаются четвертому предприятию. Ц\) ~ 11 Цг)= 2,2; Z,(3> = 2,4; Z,(4) = 2,4; L(5) = 2,4;Z,(6) = 2,4;L(7) = 2,4. Второй шаг. Денежные средства распределяем между 4- и 3-м предприятиями. l,(n = max 11,0: 0,11 = 1.0; Lm = max {2,2; 1,0 + 0,1; 0,3} = 2,2; Z,(3) = max {2£, 2,2 + 0,1; 1,0 + 0,3; 0,9} = 2,4; Lw = max {2,4; 2.4 + 0.1: 2.2 4- 0.3: 1,0 + 0,9; 1,0} = 2.5; Z,(5) = max {2,4; 2,4 + 0,1; 2,4 + 0,3; 2.2 + 0.9: 1,0 + 1,1; 1,4} = 3,1; L(6) = max {2,4; 2,4 + 0,1; 2,4 + 0,3; 2.4 + 0.9: 2,2 + 1,0; 1,0 + 1,4; 1,5} =3,3; I(7) = max {2,4; 2,4 + 0,1; 2,4 + 0,3; 2,4 + 0,9; 2,4 + 1,0; 2.2 + 1.4: 1,0+1,5; 1,5} =3,6. Третий шаг. Денежные средства распределяются между вторым шагом и 2-м предприятием. Z,(i) = max{L0;0,l} = l,0; Z,(2) = max {22; 1,0 + 0,1; 0,4} = 2,2; L(3) = max {2£; 2,2 + 0,1; 1,0 + 0,4; 0,8} = 2,4; Z,(4) = max {2,5; 2,4 + 0.1:2.2 + 0.4: 1,0 + 0,8; 1,1} = 2,6; L(5) = max {3J.; 2,5 + 0,1; 2,4 + 0,4; 2,2 + 0,8; 1,0 + 1,1; 1,5} = 3,1; L(6) = max {ЗЛ; 3,1 + 0,1; 2,5 + 0,4; 2,4 + 0,8; 2.2+ 1.1: 1,0 + 1,5; 1,6} =3,3;
5.3. Распределение ресурсов JJ3 La) = max {3,6; 3,3 + 0,1; 3,1 + 0,4; 2,5 + 0,8; 2,4+1,1; 2,2 + 1.5: 1,0+1,6; 2,0} =3,7. Четвертый шаг. Денежные средства распределяются между третьим шагом и 1-м предприятием. Z,(1) = max{L0;0,7} = l,0; Z,(2) = max {2,2; 1,0 + 0,7; 0,9} = 2,2; Z,(3) = max {2,4; 2.2 + 0.7: 1,0 + 0,9; 1,1} = 2,9; 1(4) = max {2,6; 2.4 + 0.7: 2.2 + 0.9: 1,0 + 1,1; 1,2} = 3,1; 1(5) = max {3,1; 2.6 + 0.7: 2.4 + 0.9: 2.2+1.1: 1,0 +1,2; 1,3} = 3,3; Z,(6) = max {3,3; >.!**+0.7: 2,6 + 0,9; 2,4 + 1,1; 2,2 + 1,2; 1,0 + 1,3; 1,3} =3,8; 1(7) = max {3,7; 3.3 + 0.7: 3.1 +0.9: 2,6 + 1,1; 2,4 + 1,2^2,2 + 1,3; 1,0+1,3; 1,3} =4,0. Максимальный доход 4,0 от вложенных средств может быть получен в двух вариантах распределения денежных средств. Первый вариант, в свою очередь, на третьем шаге разделяется также на два варианта: Первому предприятию 1; Первому предприятию 1; Второму предприятию 4; Второму предприятию 0; Третьему предприятию 0; Третьему предприятию 3; Четвертому предприятию 2; Четвертому предприятию 3. Второй вариант: Первому предприятию 2; Второму предприятию 0; Третьему предприятию 3; Четвертому предприятию 2. Таким образом, имеются три варианта оптимального распределения денежных средств, которые представлены в табл. 5.2 [5]. Таблица 5.2 Предприятие 1 2 3 1 4 Вариант 1 1 4 0 2 Вариант 2 1 0 3 3 Вариант 3 2 0 3 2 Рассмотрим подробнее как получились эти варианты распределения денежных средств.
114 Глава 5. Динамическое программирование На последнем четвертом шаге оптимальным способом денежные средства можно распределить двумя способами: 1) максимальная прибыль состоит из 3,3 + 0,7. На четвертом шаге денежные средства распределялись между группой предприятий (состав группы 2-е, 3-е и 4-е предприятие) и первым предприятием. Первому предприятию была выделена 1 единица денежных средств и от первого предприятия получена прибыль — 0,7. Соответственно группе предприятий было предоставлено 6 единиц денежных средств и от них получена прибыль — 3,3. Как была получена прибыль 3,3? Смотрим третий шаг. Эту прибыль можно получить двумя способами: а) прибыль состоит из 3,3. То есть, все денежные средства (6 единиц) были переданы группе предприятий (состав группы 3-е и 4-е предприятие). На втором шаге 6 единиц денежных средств были разделены так: 3 единицы — третьему предприятию (прибыль 0,9) и 3 единицы - четвертому предприятию (прибыль 2,4). То есть, второй вариант табл. 5.2. б) прибыль состоит из 2,2 + 1,1. Второму предприятию передано 4 единицы денежных средств (прибыль 1,1) и группе предприятий (состав группы 3-е и 4-е предприятие) было передано 2 единицы денежных средств (прибыль 2,2). На втором шаге эти 2 единицы денежных средств были распределены так: третьему предприятию - 0 единиц и четвертому предприятию 2 единицы (прибыль 2,2). То есть, первый вариант из табл. 5.2. 2) максимальная прибыль состоит из 3,1 + 0,9. На четвертом шаге первому предприятию было выделено 2 единицы денежных средств (прибыль 0,9), а группе предприятий — 5 единиц (прибыль 2,2). На третьем шаге - 0 единиц второму предприятию и 5 единиц группе предприятий. На втором шаге — 3 единицы третьему предприятию (прибыль 0,9) и 2 единицы четвертому предприятию (прибыль 2,2). Это третий вариант из табл. 5.2. 5.4. Примеры 1. Из пункта А в пункт Б необходимо проложить трубопровод по самому экономичному пути. Данные приведены на рис. 5.9. 2. Из пункта А в пункт Б необходимо проложить шоссейную дорогу по самому экономичному пути. Данные приведены на рис. 5.10.
\ BcfewHdii кияонэд 'б'§ *эи j 11— 9I~|— 9П— 9I"|—SI~|— *'П— 0T~I— 8 "I— zrl— €l~]— ^П— orT— IX~|— °П— zr]— 9ГТ— srT— 9I"| SI SI W Zl II б II 01 8 L 8 II 01 6 L 8 01 01 4 I ZlJ II-j II-j 01-j OI-j 6-J 8 J L-\ 8-J 6-j бА 0I-| OI-J TT-j 114 014 ZI-I 8 6 01 Zl VI CI Zl II б £ 8 6 6 01 01 II 01 t II-j OI-j 6-1 8-j iA S-| 9H 9-j iA LA 8-j 8-j OT-j \\A OlH вА 8-| 6 L L 8 8 8 6 01 II 01 II 01 б 9 L 8 01 H I—oi-j—oi-j—oi-j—6-j—oiH—oi-|—oi-j—iiH—z\A—ci-j—ii-j—ziA—ziA—ii-|—oi-j—oi-|—oi-j Zl Zl Zl Zl ZI II II II 01 01 01 01 II II Zl Zl £1 Zl I Il-j OIH OI-j 6 A iA 8-1 L A LA 8-j 8H 6 A 6-j IIH 01A OlH—- 8H 6-j Zl II II I OIH—OI-j II.J II-j ^^Olrl 8-j 8 A OI-j OI-J 6-j—6-j OI-j OI-j OIH II-j ZiA ^HH 9 9 L 8 II Zl II 01 II II 01 01 L 8 б 01 II II hZI-j TT-J OI-j L \ 8-j 6 A 6 "j—8 J 8-j II-j IIH OI-j OI-j 6 H 6-j OIH—014 II 01 01 б 6 6 б б 6 II II 01 01 01 б б 6 |—ziA—zi-j—ii-j—ii-J—oi-J—oi-j— 6-J— 6-j—oiJ—oiH—ii-j—ii-J—oi-J—ii-J—oi-j—n4—oi-j SI SI И €1 Zl II II 01 6 8 6 II 01 01 01 II Zl II I—TIJ—TlJ—TIJ— 6 J—0IJ—ITJ—0TJ—TTJ—ZIJ—TTJ—0TJ— 6J— б J—0IJ—XIJ—0IJ—0IJ v
Г* г-12 г-14 1-13 Г-11 Г-9 г-9 г-10 г-11 г-12 г-14 г-15 г-16 г-12 г-13. г-12 г-10 1 Б 7 8 9 10 11 12 19 14 15 14 13 12 11 19 9 8 7 6 1-8 Us Us U9 —\-9 [-9 UlO [-10 UlO Ull—[-10 1-10—1-10 L-9 1-9 Г9 "Г9 9 10 10 12 13 14 15 13 12 10 8 8 10 11 12 13 13 II UlO U 10 j-11 [■ 9 UlO hlO U 11 [-11 1-12 i-12 H13 hlO hlO 1-11 1- 9 h 9 hlO 11 11 12 12 14 14 15 15 14 14 13 13 10 10 9 9 9 6 U 9 U 9 U 9 U 9 U 8 U 8 L 6 U 6 1- 5 U 5 U 4 U 4 U 6 U 8 1-10 [-12 L.13 9 10 9 9 8 8 7 6 5 4 4 3 5 б 8 12 13 1- [-10 Lie U9 U9 US US 1-6 U 6 1-5 L-4 L-3 L-2 U3 1-5 1-6 Us [-10 1 12 II II 10 10 9 4 8 7 5 5 7 7 9 9 11 14 1- j-11 Ll2 L-12 hll J-1'0 hlO^ U 9 1- 9 U 8 U 8 U 7 1- 8 U 8 U 8 1-10 hll Ull 12 12 11 11 10 9 9 9 8 9 9 10 10 11 12 13 14 15 hl3 ИЗ H12 hll Uo hlO [-9 [-9 1-9 h8 h9 H9 [-10 UlO [-11 [-12 [-13 14 14 13 13 12 12 11 11 10 10 9 9 10 10 11 11 12 12 [-15 [-14 kl3 L-12 Ull UlO UlO UlO UlO UlO Ull Ul2 Ul3 Ul4 Ul5 Ul6 Ul7 1 14 13 13 11 10 10 9 9 8 8 7 9 11 12 13 14 15 15 Li3—L12—L11—Lie—U9—L8 —L7 —L6 —L5 —L4 —L3 —L5 —L7 —L9 —Ln—Li3—Li5—I ■3 i1 ш о u 12 14 i !« Ф I! i 1 О о ф Рис. 5.10. Условия примера 2
11 —г12 —г** —г 15 —г1б —г12 ■—г13 —1-12 —ГЮ - 8 9 Г 8 —г-12—г-14 1-13 г-11 1-9 1-9 г-10 7 8 9 10 11 12 13 14 15 14 13 12 11 10 Ь8—[-8 —[-8—[-9 —[-9 —[-9 —UlO—[-10—[-10—[-11—UlO—[-10 UlO U-9—[-9 —h 9 —h9 9 10 10 12 13 14 15 13 12 10 8 8 10 11 12 13 13 13 [-10 [-10 [-11:—[• 9 b 10 [-10 к 11 111 [-12 Ul2 Ul3 [-10 [-16 111 1- 9 L.9 UlO И 11 il it 14 14 iS 15 14 14 13 13 10 10 9 9 9 6 U 9 U 9 U 9 U 9 U 8 U 8 [- 6 [- б 1- 5 h 5 U 4 1- 4 кб U 8 1-10 U 12 [-13 9 10 9 9 8 8 7 б 5 4 4 3 5 б 8 12 13 14 U 10 1-10 L-9 U 9 U 8 [- 8 U б U 6 U 5 U 4 U 3 L 2 U 3 [-5 [- б [- 8 —LlO 1 12 II II 10 10 9 9 8 7 5 5 7 7 9 9 II 14 14 l-ii—Li2—L12—Lii—Lio—Lio—L 9 —L 9 —u 8 —L 8 —L 7 —L s —L s —L * —[-10—Ln—Ln— 12 12 11 11 10 9 9 9 8 9 9 10 10 11 12 13 14 15 hl3—kl3—kl2—Ull—UlO—UlO—L-9—[-9 —[-9 1-8 —[-9 —[-9 UlO UlO—l-ll—Ul2—Ul3 14 14 13 13 12 12 11 11 10 16 9 9 10 10 11 11 12 12 Ul5—Ul4 —Ul3 Ul2 Ull UlO UlO UlO —UlO UlO Ull —Ul2 Ul3 Ul4 Ul5 Ul6 Ul7 14 13 13 11 10 10 9 9 8 8 7 9 11 12 13 14 15 15 Ьз Lz Ln Lio_L9 L* L7 L6 L5 L4 L3 J.5 L7 L9 Ln_Li3; bs I t Рис. 5.11. Условия примера 3
J28 Глава 5. Динамическое программирование 3. Из пункта А в пункт Б необходимо проложить железную дорогу по самому экономичному пути. Данные приведены на рис. 5.11. 4. Составить план распределения капиталовложений (К=200000 $) в расширение мощностей по четырем предприятиям, максимизирующий общую прибыль предприятий. Исходные данные: известны возможные итоги на каждом из четырех предприятий фирмы в результате расширения действующих мощностей (табл. 5.3). Таблица 5.3 Условия примера 4 Капиталовложения, тыс. $ 0 50 100 150 L 200 Прирост выпуска продукции (g,) по предприятиям, тыс. $/год | 1 0 25 60 100 140 2 0 30 70 90 122 3 0 36 64 95 130 4 0 28 56 ио 142 \ Контрольные вопросы 1. Какие задачи можно решать методами динамического программирования. 2. Объясните алгоритм решения задач динамического программирования. 3. В чем заключается принцип оптимальности? 4. Укажите принцип выбора направления движения? 5. В каких случаях применяется динамическое распределение ресурсов? 6. Каков алгоритм распределения ресурсов?
Глава 6 Нелинейное программирование 6.1. Основные понятия и определения Задача нелинейного программирования формулируется аналогично задаче линейного программирования. Определить, при каких значениях входных параметровх\, х2, ..., х„ целевая функция L достигает своего экстремума (максимума или минимума), причем на значения входных параметров наложены ограничения: А/(х1,х2,...,хл) = 6/, 1 = 1,*,; (6.1) gi{xx,x2,...,xn)>bi, i = *,+!,*$; (6.2) £,(^,Х2,...,хя)£б„ i = ks+\,kt; (6.3) где: hi — ограничения на входные параметры в виде равенств; gi — ограничения на входные параметры в виде неравенств; Xi — входные параметры (переменные); bi — коэффициенты, задающие ограничения на значения входных параметров. Не существует единого подхода при решении задач нелинейного программирования. Для некоторых типов задач нелинейного программирования созданы свои методы — метод множителей Ла- гранжа, метод деформированного многогранника, метод скользящего допуска, квадратичное и выпуклое программирование, градиентные методы и т. д. Условно все задачи нелинейного программирования можно разделить на три типа: 1. Задачи с нелинейной целевой функцией и линейной системой ограничений. Для этого типа задач разработано наибольшее количество методов, хотя экстремум может быть найден далеко не для всех видов целевой функции.
120 Глава б. Нелинейное программирование 2. Задачи с линейной целевой функцией и системой нелинейных ограничений. 3. Задачи с нелинейной целевой функцией и системой нелинейных ограничений. Особенностью поиска экстремума в задачах нелинейного программирования является то, что решение может находиться как в вершинах области допустимых решений (ОДР), так и на ребрах и даже внутри ОДР. Серьезную трудность при решении этих задач представляет наличие нескольких локальных экстремумов внутри или на границе ОДР. Как правило, ограничиваются поиском первого локального экстремума, и лишь некоторые методы позволяют вычислить все локальные экстремумы внутри ОДР и среди них определить глобальный экстремум. В данном случае под глобальным экстремумом понимают наилучший (в некотором смысле) среди найденных локальных экстремумов. В специальную группу выделены методы, позволяющие найти экстремум на границе (ребре) ОДР. Задачи линейного и целочисленного программирования можно рассматривать как частный случай задачи нелинейного программирования. При работе с нелинейными функциями надо ввести уточнения в некоторые определения, данные при описании задачи линейного программирования, и ввести новые определения. Оптимальное решение. Под оптимальным решением будем понимать значения вектора входных параметров х = jci, хг, ..., х„ и соответствующее ему значение целевой функции L(x*), достигающее экстремального значения (минимума или максимума). Под локальным оптимальным решением будем понимать значение целевой Цх) функции, экстремальное (максимальное или минимальное) в некоторой 5-окрестности. Под глобальным оптимальным решением понимается экстремальное значение целевой функции L(x) во всей области допустимых решений. Метод скользящего допуска дает глобальное оптимальное решение. При работе с методами нелинейного программирования для подтверждения нахождения глобального оптимального решения выполняют несколько вычислений при различных начальных значениях (точки старта алгоритма). Но это доказательство косвенное. Вогнутость и выпуклость. Понятия выпуклости и вогнутости используются при доказательстве наличия глобального оптимального решения. На рис. 6.1 приведены строго выпуклая (а) и строго
6.1. Основные понятия и определения 121 вогнутая (б) функции одной переменной, а на рис. 6.2 — унимодальная (а) и мультимодальная (б) функции одной переменной. Fix) F(x). Рис. 6.1. Выпуклая (а) и вогнутая (б) функции одной переменной Д*)а Рис. 6.2. Унимодальная (а) и мультимодальная (б) функции одной переменной Выпуклость и вогнутость накладывают более жесткие требования на функцию нежели требование унимодальности. Мультимо- дальные функции не обладают свойствами выпуклости и вогнутости. Поиск оптимального решения мультимодальной функции представляет большие трудности. Для выпуклых (или вогнутых) функций можно ввести несколько определений. Множество точек я-мерного пространства, содержащее вместе с любыми двумя точками А и В и все точки отрезка АВ, называется выпуклым телом (рис. 6.3, а). Если в сколь угодно малой окрестности точки А содержатся только точки данной области, то точка А называется внутренней точкой выпуклой (вогнутой) области.
122 Глава 6. Нелинейное программирование а б Рис. 6.3. Выпуклое (а) и невыпуклое (б) множества Если в сколь угодно малой окрестности точки А содержится часть точек, которые принадлежат области, а часть точек не принадлежит области, то такая точка А называется граничной точкой выпуклой (вогнутой) области. Если точка А является граничной точкой выпуклой (вогнутой) области и не лежит внутри отрезка, соединяющего две другие точки выпуклой (вогнутой) области, то такая точка А называется угловой точкой выпуклой (вогнутой) области. Выпуклая (вогнутая) область называется замкнутой, если она включает в себя все граничные точки. Если радиус-вектор jc, соединяющий начало координат с любой точкой выпуклой (вогнутой) области, всегда меньше некоторого заданного числа Q, большего нуля, то такая выпуклая (вогнутая) область называется ограниченной. Если такое число Q указать нельзя, то выпуклая (вогнутая) область называется неограниченной. Если выпуклая (вогнутая) замкнутая ограниченная область имеет конечное число угловых точек, то эта выпуклая (вогнутая) область называется л-мерным многогранником. Приведем без доказательства одну теорему. Пересечение выпуклых (вогнутых) областей представляет собой выпуклую (вогнутую) область. Допустимость. Любой вектор х входных параметров, удовлетворяющий условиям ограничений, заданных в виде равенств или неравенств, называется допустимым вектором (допустимой точкой). Множество допустимых точек задает область допустимых решений. Если наилучшее решение (но не экстремальное) находится на границе ОДР, то такое решение называется условно-оптимальным.
6.1. Основные понятия и определения J23 Ограничение в виде неравенства обеспечивает нахождение вектора входных параметров внутри ОДР. Ограничение в виде равенства обеспечивает нахождение вектора входных параметров на пересечении гиперповерхностей. Допустимые (или внутренние) точки (векторы входных параметров) могут находиться внутри ОДР, внутри ОДР на пересечении гиперплоскостей, на границе ОДР. Точки, лежащие за пределами ОДР, называются недопустимыми или внешними. Связывающим (активным) неравенством называется такое, которое для заданного jc превращается в равенство. Область допустимых решений (рис. 6.4) может быть односвязной (а) и многосвязной (б). *2а Рис. 6.4. Односвязная (а) и многосвязная (б) области допустимых решений: ОДР; линия уровня функции; ► — проекция антиградиента В большинстве практических задач ОДР является односвязной. При поиске оптимального решения вектор входных параметров может выходить за границы ОДР. Некоторые методы снабжены процедурами по возврату вектора входных параметров на границу или внутрь ОДР (метод скользящего допуска и др.). Градиент. Линией уровня называется множество точек, для которых целевая функция имеет постоянное значение (рис. 6.4). Если в какой-либо точке функция непрерывна и дифференцируема, то в этой точке существует градиент целевой функции L(x). Градиент указывает направление наискорейшего возрастания (подъема) функции, а антиградиент — противоположное направление. Градиент определяется как вектор-столбец первых частных производных Цх) по х
124 Глава 6. Нелинейное программирование *и- дь(х') дх{ дь(х') дх2 I- (6.4) дйх1) дхп В специальной литературе доказывается, что градиент ортогонален линии уровня, проходящей через точку дифференцирования, и направлен в сторону максимума функции (направление наискорейшего подъема). Противоположное направление градиента (антиградиент) указывает направление минимума (направление наискорейшего спуска). Аппроксимация функций. При решении задач нелинейного программирования наиболее трудоемкой проблемой является вычисление первых и вторых производных. Для уменьшения времени вычислений вместо вычисления производных в некоторых методах используют линейную и квадратичную аппроксимацию. Линейная (первого порядка) аппроксимация целевой функции выполняется с помощью усеченного ряда Тейлора в окрестности точки х. Квадратичная аппроксимация целевой функции получается из разложения в ряд Тейлора путем отбрасывания членов третьего и старших порядков. Необходимые и достаточные условия оптимальности решения. Полностью критерий оптимальности для задач нелинейного программирования не разработан. Критерий оптимальности, как правило, формируется для некоторого круга задач. Для задачи нелинейного программирования, сформулированной выше, необходимыми условиями нахождения локального экстремума целевой функции Цх) являются: а) целевая функция L(x) дифференцируема в точке х*. б) если первая производная целевой функции Цх) равна нулю в точке х*, то точка х* является стационарной. Достаточными условиями существования локального экстремума будут названные необходимые условия и следующее: в) вторые производные целевой функции L(x) в точке х* должны быть положительно определены.
6.2. Методы прямого поиска 125 В случае поиска максимального значения вторые производные целевой функции Цх) должны быть отрицательно определены. Существует несколько типов задач нелинейного программирования, для которых необходимые и достаточные условия не выполняются (например, функции с разрывом), а экстремум (минимум или максимум) существует (рис. 6.5). ЯМ* X Рис. 6.5. Функция с разрывом Следует заметить что, если достаточные условия выполняются, то х* обязательно будет экстремальной точкой. В задачах нелинейного программирования для определения экстремума разработаны многочисленные методы, которые можно объединить в две группы [8]. 6.2. Методы прямого поиска Суть методов прямого поиска состоит в том, что для поиска экстремального значения используются только значения целевой функции. Большинство методов этой группы основаны на экспериментальных данных и отражают опыт практических исследований, но строго теоретического обоснования не имеют. К достоинствам методов прямого поиска следует отнести простоту алгоритма и возможность (практически во всех точках) вычислить значение целевой функции. Недостатком можно считать трудности при обработке (обходе) седловых точек. 6.2.1. Метод покоординатного спуска Суть метода состоит в том, что поиск решения выполняется по каждой оси (направлению изменения переменной х§) в отдельности. Выбирается первая переменная jci (первая ось координат) и с опре-
126 Глава 6. Нелинейное программирование деленным смещением выполняется перемещение по выбранной оси координат. В каждой точке вычисляется значение целевой функции. Движение вдоль выбранной оси координат прекращается в тот момент, когда очередная точка будет иметь значение целевой функции большее, нежели в предыдущей точке (рис. 6.6). Фиксируется лучшая достигнутая точка по текущей оси. Затем переходят ко второй оси координат (вторая переменная х2) и т.д. - до последней переменной х„ (оси координат). Затем процедура поиска повторяется заново, начиная с первой оси координат. у е2 IХ2 и- Рис. 6.6. Одна итерация метода покоординатного спуска На рис. 6.6 показаны ортонормированные векторы в\ и е2. В каждом направлении сначала сделан один неудачный шаг, а затем несколько удачных шагов. Если при проходе очередного цикла нельзя указать ни одного перемещения по любой оси координат, то уменьшают размер шага и выполняют ту же процедуру с меньшим шагом. Поиск экстремума прекращается в одном из двух случаев, или когда размер шага становится меньше некоторой сколь угодно малой величины (две координаты х§ практически не отличаются друг от друга), или когда значения целевой функции в двух соседних точках становятся примерно одинаковыми (не превышают допустимой точности вычислений), или можно потребовать одновременного выполнения первых двух условий. В первом случае, когда координаты практически не изменяются, а целевая функция изменяется, поиск выполняется вблизи точки разрыва целевой функции (в близи +оо или -оо). Во втором случае целевая функция имеет некоторое «плато», на котором целевая функция имеет одинаковое значение. В третьем случае будет найдена точка экстремума, как правило, локального. Для организации поиска методом покоординатного спуска используется рекуррентное соотношение.
6.2. Методы прямого поиска J27 х* = Xм +ak*u* (6.5) где: дс* — координаты текущей точки поиска; дс*"7 — координаты предыдущей точки поиска; ик — единичный вектор, определяющий направление спуска на /г-том шаге, т. е. может принимать значение +1 или -1, что обеспечивает перемещение вдоль выбранной оси в одном из двух направлений; ак — размер шага, причем ак > 0. Одна итерация включает в себя проход по каждой оси координат. Существуют различные варианты реализации метода покоординатного спуска: с фиксированным шагом и с изменяющимся размером шага. Этот метод может работать, как при безусловном поиске экстремума, так и при наложенных ограничениях на аргументы (координаты JC/). Алгоритм метода покоординатного спуска 1. Определить координаты стартовой точки. 2. Вычислить значение целевой функции в стартовой точке. 3. Выбрать очередную ось координат и прибавить Дх (сделать шаг). 4. Вычислить значение целевой функции в текущей точке. 5. Если значение целевой функции в текущей точке меньше, чем значение целевой функции в предыдущей точке, то сделать еще один шаг в том же направлении и перейти к шагу 4. Если значение целевой функции в текущей точке больше, чем значение целевой функции в предыдущей точке, то перейти к шагу 6. 6. Определить был ли сделанный шаг в этом направлении первым. Если «Да», то запомнить что по текущей оси по текущему направлению сделан первый неудачный шаг и перейти к шагу 7. Если «Нет», то перейти к шагу 8. 7. Сменить направление движения по текущей оси координат, т. е. вычесть Ах и перейти к шагу 4. 8. Проверить «Все ли оси координат просмотрены»? Если «Да», то перейти к шагу 9. Если «Нет», то перейти к шагу 3. 9. Проверить «По всем ли осям координат сделано по два неудачных первых шага»? Если «Да», то уменьшить Ах (размер шага) и перейти к шагу 10. Если «Нет», то перейти к шагу 3.
128 Глава 6. Нелинейное программирование 10. Проверить «Проверить достигнута ли требуемая точность вычислений»? Если «Да», то перейти к шагу 11. Если «Нет», то перейти к шагу 3 и начать просмотр с первой оси координат. 11. Остановить вычисления. Вывести значение целевой функции и координаты точки экстремума. При поиске экстремума функции нескольких переменных (двух и более) метод покоординатного спуска может плохо работать, если аргументами функции существует корреляционная зависимость. Для решения этой проблемы необходимо принять специальные меры [1]. 6.2.2. Метод Хука - Дживса Если в методе покоординатного спуска поиск экстремума выполнялся произвольным выбором оси координат, то в методе Хука - Дживса (1961 г.) на первом этапе выполняется анализ Д-окрест- ности базовой точки и по результатам анализа выбирается наилучшее направление движения, а на втором этапе выполняется собственно поиск экстремума, т. е. движение в выбранном направлении. Само движение в указанном направлении может выполняться за один шаг или за несколько шагов до тех пор, пока на прекратится уменьшение целевой функции (при поиске минимума целевой функции). Затем снова выполняется исследующий шаг и движение в новом направлении и т. д. В случае, когда по результатам исследующего шага нельзя указать направление движения (обнаружена область локального экстремума), следует уменьшить размер исследующего шага и повторить процедуру исследования (а потом и движения в указанном направлении). В методе Хука - Дживса используется тоже рекуррентное соотношение (6.5). Процедура поиска экстремума заканчивается, когда достигнута требуемая точность вычислений по значениям целевой функции и по значениям координат точки экстремума. При работе с алгоритмом метода Хука - Дживса следует иметь в виду, что размер шага на этапе исследования и размер шага на этапе движения в направлении экстремума, могут иметь разное значение [1,8]. а) этап исследования А-окрестности базовой точки На этом этапе, по очереди, для каждой оси координат дается приращение А в одну и другую стороны (+Д и -А) и вычисляются значения целевой функции в каждой из точек исследования (рис. 6.7). Из всего множества полученных точек фиксируются те точки, у ко-
6.2. Методы прямого поиска 129 торых значение целевой функции меньше, чем значение целевой функции в базовой точке. Для определения вектора направления поиска экстремума к координатам базовой точки одновременно добавляются смещения А (с учетом знака) по тем осям координат, для которых зафиксированы значения целевой функции меньшие, чем значение целевой функции в базовой точке (при поиске минимума целевой функции). Например, если выполняется поиск минимума целевой функции девяти переменных и по шести осям координат (шести переменным) зафиксированы шесть промежуточных точек, у которых значение целевой функции меньше, чем в базовой точке, то вектор направления поиска будет содержать смещение Л (относительно базовой точки) по этим шести осям координат (шести переменным х). ХА Ue> х» е2 XI ло \Х| Рис. 6.7. Исследование А-окрестности базовой точки для случая двух переменных На рис. 6.7 показан вариант для нахождения минимума целевой функции двух переменных и смещение А по осям координат одинаковое. В точках Xq, Xq, Xl и Xq выполняется исследование А - окрестности. В точках х\ и Х\ целевая функция имеет меньшее значение, чем в базовой точке Х0. Точка Хх новая базовая точка, в окрестности которой выполняется новое исследование А-окрестности. б) этап поиска экстремума В определенном направлении поиска от базовой точки делают шаг и вычисляют значение целевой функции. Если в текущей точке значение целевой функции меньше, чем значение целевой функции в базовой точке, то текущая точка становится базовой точкой, и
130 Глава 6. Нелинейное программирование делают еще один шаг в том же направлении до тех пор, пока значение целевой функции в текущей точке не будет больше, чем в последней базовой точке. Затем заново выполняют этап исследования относительно полученной базовой точки. На рис. 6.8 показана траектория поиска минимума целевой функции. Блок-схема алгоритма метода Хука - Дживса представлена на рис. 6.9. Рис. 6.8. Траектория поиска минимума методом Хука - Дживса т 1 Уменьшить размер шага Т Нет Определить координаты стартовой точки Вычислить значение целевой функции в стартовой точке Выполнить исследование вокруг базовой ^ДостигнуталтЧ Нет ^^Можно juVv ■>w вычислений ?^Х^^ >^иоиска Ч^г [^ Да Останов 1 Да Выполнить поиск и найти новую базовую точку Рис. 6.9. Блок-схема алгоритма Хука-Дживса
6.2. Методы прямого поисиа 131 На практике рекомендуют использовать размер шага равным 1, а на этапе поиска — равным 2. Метод Хука - Дживса плохо работает на узких и длинных «оврагах». 6.2.3. Метод Розенброка Для устранения отмеченного недостатка метода Хука - Дживса математиком Розенброком была предложена новая улучшенная поиска экстремума — метод Розенброка (1960 г.). В методе Хука - Дживса поиск выполняется в ортогональных координатах, построенных в каждой новой базовой точке. Причем построенные координаты колениарны координатам стартовой точки. В методе Розенброка также предусмотрены два этапа: этап исследования А-окрестности и этап поиска экстремума. Этап исследования Д-окрестности полностью соответствует методу Хука - Дживса. А процедура определения направления поиска - оригинальная. В каждой новой базовой точке строится ортогональная система координат, но эта система координат поворачивается на некоторый угол относительно предшествующей системе координат (рис. 6.10). Построение новой системы координат, развернутой относительно предыдущей системы координат, выполняется с помощью процедуры Грама - Шмидта. Разворот системы координат выполняется таким образом, что одна из осей координат располагается параллельно Рис. 6.10. Поворот системы координат (процедура Грамма - Шмидта) 9*
132 Глава 6. Нелинейное программирование выбранному направлению поиска, т. е. вдоль главных осей квадратичной аппроксимации целевой функции (вдоль «оврага»). Именно вдоль этой оси и выполняется один или несколько шагов поиска экстремума [8, 1]. Блок-схема алгоритма метода Розецброка представлена на рис. 6.11. 1 V Задать координаты исследуемых точек 1 Выполнить поворот системы координат (процедура Грама- 1 Шмидта) ь"™'™"™4 i ! { Нет i Нет Да Да 1 Определить координаты стартовой точки Вычислить значение целевой функции ^^jto первая4^ ^^итсрация 1^^ Нет Определить вектор поиска: координаты новой базовой точки и значение целевой функции ^ХудалосьЧ. 'улучшить значение >. целевой > Х^унюши *^г Нет Х^пеудачны ли^^ все направления ^^ ^^сследования^'^ jT Да *^достигнута ли^Хц^^ "^^нычисленийi?^" ЛГ Да Останов 1 Вернуться к предыдущей базовой точке Уменьшить размер шага в два раза Рис. 6.11. Блок-схема алгоритма Розенброка
6.2. Методы прямого поиска J33 В методе Розенброка необходимо предусмотреть некоторое конечное число итераций (шагов), так как он не обеспечивает автоматическое окончание поиска экстремума. 6.2.4. Метод Пауэлла В основу метода Пауэлла (1964 г.) положено свойство функции второго порядка: «линии уровня целевой функции пересекаются прямой линией, проходящей через точку экстремума, под одним и тем же углом с касательной, построенной в точке пересечения с соответствующей линией уровня» (рис. 6.12). Рис. 6.12. Построение линии поиска экстремума по двум стартовым точкам Идея метода Выбирается стартовая точка х0 и с помощью метода покоординатного спуска выполняется одна итерация, т. е. находится первая базовая точка х\. Затем выбирается вторая стартовая точка хг и также определяется первая базовая точка jc3. Через две базовые точки х\ и *з проводится прямая линия, которая обязательно пройдет через точку экстремума х. Вдоль этой прямой линии осуществляется поиск точки экстремума. Прямая линия х\ и х$ будет секущей по отношению к линии хо и х\ и к линии х2 и jc3, т. е. две последние линии параллельны [1,8]. При практическом использовании метода Пауэлла можно обойтись и одной стартовой точкой. Сначала из стартовой точки выполняют одну итерацию методом покоординатного спуска и получают
134 Глава 6. Нелинейное программирование первую базовую точку. Затем из первой базовой точки делают еще одну итерацию и получают вторую базовую точку, которая будет располагаться на другой линии уровня целевой функции (рис. 6.13). При работе с функциями второго порядка экстремум может быть найден за п итераций, что потребует выполнения п2 одномерных поисков. \ II/ Рис. 6.13. Построение линии поиска экстремума по одной стартовой точке Алгоритм метода Пауэлла 1. Определить координаты стартовой точки. Вычислить размер шага (величину ), выполнив одномерный поиск минимума целевой функции по каждой их осей координат: F(*+VJ=minF(*o+/>/>J <6'6) при этом будут получены размер смещения А = Ао = min (A,-) 2. координаты базовой точки: *,=*i + Крп (6.7) где: Xi - единичный ортонормированный вектор. 3. Выполнить п одномерных поисков по каждой оси координат, при чем каждый последующий поиск выполняется из точки, полученной на предыдущем шаге. Также определяем новое смещение А (А0 и координаты базовой точки х&\. 4. Заменяем предыдущее направление поиска на новое направление поиска p=xi+l-Xi (6.8)
6.2. Методы прямого поиска J35 5. Выполняем поиск экстремума функции, т. е. в направлении р =*/+i -*/ с шагом Ль 6. Сделано ли к итераций? (к = п — количество переменных) Если «Да», то перейти к шагу 7. Если «Нет», то — к шагу 9. 7. Целевая функция имеет второй порядок? Если «Да», то поиск прекратить и положить х* = xi+\ и вывести результат. Если «Нет», то перейти к шагу 8. 8. Проверить, выполняется ли условие \\Xi+\ -jc,|| < е. Если «Да», то поиск прекратить и положить х* = jc,+i и вывести результат. Если «Нет», то перейти к пункту 9. 9. Точку xt+\ принять за базовую и перейти к пункту 3. Процедура Пауэлла будет сходиться в точку локального минимума при условии, что целевая функция строго выпуклая. Если целевая функция имеет порядок выше второго, то необходимо предусмотреть дополнительные итерации для локализации | точки экстремума. | Поэтому в приведенном выше алгоритме предусмотрен шаг 8. 6.2.5. Метод регулярного многогранника Метод поиска экстремума с помощью регулярного симплекса был предложен Спендли, Хекстом и Химсвортом. Свое название метод получил за счет использования регулярной (равносторонней) фигуры в w-мерном пространстве, так как регулярные многогранники называют симплексами. Метод регулярного симплекса используется для поиска экстремума функции двух и более переменных. Регулярный симплекс (многогранник) имеет п + 1 вершину, где п — количество переменных целевой функции. Так, для случая двух переменных регулярный симплекс будет иметь три вершины и представлять собой равносторонний треугольник. В случае трех переменных — тетраэдр (правильная пирамида, в основании которой лежит равносторонний треугольник) и т. д. При поиске минимума целевой функции L(x) двух переменных в качестве симплекса используется равносторонний треугольник. Первоначально векторы входных параметров задают в вершинах симплекса, где и вычисляют значения целевой функции. Далее определяют, в какой вершине симплекса целевая функция имеет максимальное значение. Затем определяют центр тяжести симплекса
136 Глава 6. Нелинейное программирование (в данном случае центр равностороннего треугольника) и отображают вершину с максимальным значением целевой функции через центр тяжести (рис. 6.14). a Ъ с Рис. 6.14. Отображение вершины симплекса через центр тяжести: • — точка центра тяжести Строят новый регулярный симплекс, вершинами которого будут две вершины предыдущего симплекса и отображенная вершина. В отображенной вершине вычисляют значение целевой функции, и процесс повторяется. Таким образом, шаг за шагом регулярный симплекс перемещается в сторону минимума. Дополнительно предусмотрены правила уменьшения размера симплекса и предотвращения циклического движения вокруг точки экстремума. Исходный симплекс имеет вершины а, Ъ и с. В вершине а значение целевой функции имеет максимальное значение. Вершина а через центр тяжести отображается, и таким образом, получена отображенная вершина d. Отображенный симплекс имеет вершины Ь, с и г/(рис. 6.15). Поиск экстремума заключается в последовательном отображении вершины симплекса и его сжатии (уменьшении размера симплекса). Траектория поиска экстремума целевой функции показана на рис. 6.15. Для уточнения точки экстремума на последнем шаге надо выполнить сжатие симплекса (на рис. 6.15 не показано). Алгоритм метода регулярного симплекса. 1. Задать координаты х1'] их1,2 стартовой (базовой) точки. Для w-мерного случая — п координат. 2. Задать длину ребра (Ь) регулярного симплекса. 3. Вычислить координаты вершин симплекса по формулам:
6.2. Методы прямого поиска 137 *2 1 ^ У I *L Рис. 6.15. Траектория поиска экстремума ^+^1*. «V2 7 = ' 1 2 л/и + 1 +И-1 , . . X1,2+- ?= Ь, J*l и>/2 , / = 2,и + 1. (6.9) 4. В каждой вершине симплекса определить значение целевой функции L(x). 5. Вычислить критерий останова алгоритма по формуле -i-£№)-4*"+2)N«. (6.10) где е — малое число. Если критерий останова алгоритма меньше е , то перейти к шагу 13. Если «нет», то перейти к шагу 6. 6. Определить вершину с максимальным значением целевой функции и присвоить ей индекс А, т. е. L(xh). Определить вершину с минимальным значением целевой функции и присвоить ей индекс /, т.е.ДД 7. Вычислить координаты центра тяжести (порядковый номер вершины п + 2) по формуле: 2УУ S+2.J _ 1 .<=! л; (6.П)
138 Глава 6. Нелинейное программирование 8. Отобразить вершину хА через центр тяжести, т. е. пересчитать координаты вершины (порядковый номер отображенной вершины и + 3) по формуле: xn+i'J=xn+2-J + a(xn+2'J Л/ ). (6.12) где а — коэффициент отображения. 9. Вычислить значение целевой функции в отображенной вершине. 10. Если значение целевой функции в отображенной вершине меньше чем в вершине х\ то заменить вершину х* симплекса на отображенную вершину. Если «нет», то перейти к шагу 11. 11. Выполнить редукцию (сжатие к вершине У симплекса) симплекса по формуле: х1-' = xlJ+0£(xIJ-xlJ), /*/, i = l,w + 1, У = Гй. (6.13) 12. Перейти к шагу 4. 13. Вывести координаты точки экстремума и значение целевой функции в точке экстремума. Остановить алгоритм. В рассмотренном алгоритме через центр тяжести отображалась только одна вершина xh. Существуют алгоритмы, когда через центр тяжести отображаются несколько вершин симплекса, значения целевых функций в которых больше значения целевой функции в центре тяжести [1]. Траектория поиска экстремума по такому алгоритму представлена на рис. 6.16. *2 X\ Рис. 6.16. Траектория поиска экстремума
6.2. Методы прямого поиска J39 "'■ ——— i^-^—i————————^—^—— ———.————1^—— Метод регулярного симплекса имеет следующие недостатки: • нет возможности ускорить спуск в удачно выбранном направлении; • серьезные трудности обхода «седловых» точек (обход «оврагов» и «хребтов») [1,8]. 6.2.6. Метод деформируемого многогранника Нелдер и Мид усовершенствовали метод регулярного симплекса, сохранив его достоинства, и предложили методику ускорения поиска в удачно выбранном направлении. В методе деформированного многогранника (метод Нелдера - Мида) также строят исходный регулярный симплекс, определяют значения целевой функции в вершинах симплекса. При работе с алгоритмом метода деформируемого многогранника используются следующие соглашения: • первый индекс координаты входного параметра определяет порядковый номер вершины симплекса. Количество вершин симплекса равно п + 1; • второй индекс координаты входного параметра обозначает порядковый номер оси координат (координата направления). Для целевой функции двух переменных максимальное значение второго индекса^ = 2. В двухмерный массив координат вершин симплекса (и + 1 вершина) добавлены координаты: п + 2 — центра тяжести; п + 3 — отображенной вершины; п + 4 — растянутой вершины; п + 5 — сжатой вершины. Для удобства обозначений в выражениях используются индексы: h — номер вершины симплекса, которой принадлежит максимальное значение целевой функции /(xi*))=max{/"(x<*))}, где j = й+1; (6.14) / — номер вершины симплекса, которой принадлежит минимальное значение целевой функции /(*<*>)= min {/(xf)}, где j = йГЙ; (6.15) к — номер шага (итерации) алгоритма.
140 Глава б. Нелинейное программирование Для определения координат центра тяжести симплекса используют выражение: Kn+2,j ~ 1 -х> , где у = 1, я +1. (6.16) 2>s Исходный симплекс — регулярный, следовательно в начало координат можно поместить либо одну из вершин симплекса, либо центр тяжести. Из аналитической геометрии известно, что координаты вершин правильной (регулярной) фигуры можно задать с помощью матрицы D = dx d2 A dy 0 d2 d2 (6.17) Количество столбцов матрицы D соответствует количеству вершин симплекса (п + 1), а строки матрицы D содержат координаты вершин симплекса. Количество строк равно п. Значения элементов матрицы D вычисляют по формулам: ' r(V^TT + w-l); (6.18) (V^7T-i), (6.19) где/ расстояние между вершинами симплекса. Для большинства задач /= 1. Над отображаемой вершиной в методе деформируемого многогранника могут быть выполнены следующие процедуры. 1. Отображение вершины. В случае поиска минимума целевой функции через центр тяжести отображается вершина h с наибольшим значением целевой функции. В случае поиска максимума целевой функции — вершина /. Отображение вершины симплекса (рис. 6.17) выполняется с использованием выражения: 4%j=xikXj+«kXj-W)> (6-20) где а > 0 — коэффициент отображения. Если значение целевой функции в отображенной вершине {п + 3) меньше, чем в вершине Xh, и больше, чем в вершине х/, то координаты вершины xh заменяют на координаты отображенной вершины.
6.2. Методы прямого поиска 141 Рис. 6.17. Варианты отображения вершины симплекса: — — .—отображенная вершина У*3; — растянутая вершина У*4; — • • - — сжатая вершина У*5 2. Растяжение вершины. Если после отображения вершины симплекса оказалось, что значение целевой функции в отображаемой вершине меньше, чем во всех остальных вершинах или равно значению целевой функции в вершине х/, то выбранное направление удачное, т. е. где-то в этом направлении находится экстремум. Поэтому отображаемую вершину надо продвинуть в направлении отображения (см. рис. 6.17). XW _-(*) +V(v;(*> _*<*> ) Г6 2П где у > 1 — коэффициент растяжения. Если значение целевой функции в растянутой вершине меньше, чем значение целевой функции в отображенной вершине, то координаты вершины хи заменяются на координаты растянутой вершины. В противном случае — координаты вершины хн заменяются на координаты отображенной вершины. 3. Сжатие вершины. Если после отображения вершины симплекса оказалось, что значение целевой функции в отображенной вершине больше или равно значению целевой функции в вершине хИу то направление отображения выбрано неудачно и отображенную вершину надо приблизить к центру тяжести (см. рис. 6.17). Сжатие вершины выполняется по формуле: tiij =*&, +Р (*В ~4%j), (6-22) где 0 < р < 1 — коэффициент сжатия. Если после выполнения процедуры сжатия значение целевой функции в сжатой вершине будет меньше, чем в вершине хн, то выполняем замену координат вершины Xh на координаты сжатой вер-
242 Глава 6. Нелинейное программирование шины. В противном случае выполняется процедура редукции вершин симплекса. По формуле (6.22) симплекс сжимается к вершине х/. Можно преобразовать формулу (6.22) и симплекс будет сжиматься к центру тяжести. 4. Редукция вершин. Если в результате выполнения процедур отображения и сжатия оказалось, что выполнить замену координат вершины хи нельзя, то выполняется процедура редукции вершин симплекса, в результате чего геометрические размеры симплекса уменьшаются, как правило, в 2 раза. Редукция вершин симплекса выполняется по формуле: *\Ч) =*S +0-5(*S ~xul У' = йГЙ. (6.23) Процедура редукции выполняется в том случае, когда нет возможности отобразить вершину хь, т. е. симплекс находится в окрестности экстремума и надо уточнить координаты экстремальной точки. Для всех процедур — отображение, растяжение, сжатие, ре- дукция и определение координат центра тяжести — вычисления по указанным формулам надо выполнить для каждого индек- caj (для каждого координатного направления). При выполнении процедур растяжения и сжатия исходный регулярный симплекс изменяет свои геометрические размеры и теряет свойство регулярности. 5. Критерий окончания поиска. Критериев окончания поиска можно указать несколько. Наилучшего критерия окончания поиска нет. Авторы метода деформируемого многогранника рекомендуют в качестве критерия окончания поиска использовать выражение: \-^Ш^)-Ах^Т^ (6-24) где е — произвольное малое число, которое определяет точность вычисления значения целевой функции. Используемый деформируемый многогранник (симплекс) наиболее удачно приспособлен к топографии целевой функции, т. е. изменяет свою форму в зависимости от «рельефа» целевой функции [1].
6.2. Методы прямого поисиа 143 Авторы метода деформируемого многогранника провели ряд исследований и рекомендуют следующие значения коэффициентов: а = 1; Р = 0,5 и у = 2. Другие исследователи этого метода рекомендуют а = 1; 0,4 < Р < 0,6 и 2,8 < у < 3,0 [8]. Предложенные рекомендации хорошо себя показали на многих целевых функциях, хотя при исследовании специальных целевых функций значения коэффициентов могут быть другими. 6.2.7. Метод скользящего допуска Метод скользящего допуска ориентирован на решение задач, которые содержат ограничения на входные параметры в виде неравенств и равенств, причем сами ограничения могут быть как линейными, так и нелинейными. Обеспечение требований выполнения указанных ограничений является трудоемкой задачей, требующей для своего выполнения много машинного времени. Для обеспечения выполнения этих требований метод скользящего допуска использует информацию как допустимых точек (векторов входных параметров), так и почти допустимых и недопустимых точек. Почти допустимыми точками будем называть такие точки, которые нарушают одно или несколько условий ограничения на величину П сколь угодно малую. Идея величины П такова: на первых шагах поиска оптимального решения П имеет достаточно большую величину. По мере выполнения алгоритма величина П уменьшается и в точке экстремума П = 0. Таким образом, задача нелинейного программирования может быть сформулирована так: Цх) = ттДх) (6.25) при ограничениях С1к - *F(;c) > 0, где П — значение критерия скользящего допуска, которое есть положительно определенный функционал над множеством условий ограничений на значения входных параметров. В момент старта значение П определяется по формуле: П° = 2(/и-1)/, (6.26) где т — количество ограничений в виде равенств; / — размер ребра исходного симплекса. На следующих шагах алгоритма значение П определяется по формуле:
144 Глава 6. Нелинейное программирование Я* =min|n*-,;^l|;|xf -*Ц, (6.27) где jc* — координаты i-й вершины многогранника на к-ы шаге; хп+2 — координаты центра тяжести многогранника на £-м шаге. Если учесть значения координат вершины симплекса по каждой оси, то: Из выражения (6.24) видно, что П представляет собой усредненное значение от координат вершин до центра тяжести многогранника и положительно определено. По мере выполнения алгоритма значение П будет изменяться: при выполнении процедуры растяжения — увеличиваться, а при сжатии — уменьшаться. Для обеспечения убывания критерия скользящего допуска П при выполнении алгоритма в выражении (6.27) предусмотрен выбор наименьшего значения между значением критерия текущего шага и значением критерия предыдущего шага. Таким образом, обеспечивается монотонное уменьшение (или неувеличение) критерия скользящего допуска. После выполнения процедуры редукции значение критерия скользящего допуска Q резко уменьшается. В пределе (в точке экстремума) деформируемый многогранник стягивается в точку и КтП*=0. (6.29) Функционал *F(x) является мерой степени нарушения условий ограничения, накладываемых на входные параметры. Значение *F(x) определяется по формуле: *(*)=J 2>,2(*)+ 1>,*,2(*), (6.30) V /=1 /=/и+1 где hi(x) — значение нарушения условий ограничений, заданных в виде равенств; gt(x) — значение нарушения условий ограничений, заданных в виде неравенств; щ — оператор принимающий два значения: 0, если нарушений условий нет, или 1, если условия ограничений нарушены.
6.2. Методы прямого поиска 145 Таким образом, Ч^х) учитывает только нарушенные ограничения и является величиной положительной (берется положительное значение квадратного корня) для любого недопустимого вектора входных параметров, ^(х) можно использовать для различения допустимых Q¥(x) = 0) и недопустимых (Ч^х) > 0) векторов входных параметров. Среди множества недопустимых точек (векторов входных параметров) можно выделить почти допустимые точки, т. е. точки, для которых *¥(х) имеет некоторое небольшое значение. Таким образом, с помощью *¥(х) можно регулировать ширину области почти допустимых точек, сравнивая конкретное значение *¥(х) с каким-то заданным значением. Авторы метода скользящего допуска предлагают следующие критерии оценки допустимости точки (вектора входных значений): а) допустимая точка, если *Р*(х)= 0 J (6.31) б) почти допустимая точка, если 0 < *F*(x) < fi*; (6.32) в) недопустимая точка, если *F*(jc)>^* • (6.33) Поэтому область допустимости точек определяется соотношением: П*-¥(*)>(). (6.34) Алгоритм метода скользящего допуска включает в себя один из методов безусловной оптимизации (регулярного многогранника, Заутендейка, Розенброка, Дживса-Хука и т.д.), процедуру определения статуса точки (допустимая, почти допустимая, недопустимая) и процедуру интерполяции (перевод недопустимой точки в допустимую или почти допустимую). Сама процедура интерполяции в разных ситуациях выполняется по-разному. Если нарушено ограничение в виде равенства, то процедура интерполяции представляет собой один из методов безусловной оптимизации, где в качестве целевой функции выступает функционал *F(;c). В этом случае авторы метода скользящего допуска рекомендуют использовать метод регулярного симплекса или метод деформируемого многогранника. Если нарушено ограничение в виде неравенства, то авторы метода скользящего допуска предлагают оригинальную процедуру, которая будет описана далее, или можно использовать метод деления отрезка пополам, метод «золотого сечения» и т. д. Если нарушено сразу несколько ограничений, то предлагается использовать метод регулярного симплекса или метод деформируемого многогранника. В случае, когда указанные методы не приносят желаемого результата, 10- 1962
146 Глава 6. Нелинейное программирование авторы метода скользящего допуска предлагают использовать метод покоординатного спуска, т. е. работают с первым нарушенным ограничением и пытаются приблизить точку к области почти допустимых значений, затем со вторым нарушенным ограничением и т. д. Как только функционал *¥(х) примет почти допустимое значение, метод покоординатного спуска прекращает свою работу, даже если остались не рассмотренными нарушенные ограничения. По мере движения к экстремуму значение П уменьшается, что приводит к уменьшению области почти допустимых точек. При этом большую часть времени занимает процедура интерполяции, т. е. обеспечение выполнения ограничений. В каждый момент времени только одна вершина многогранника может быть недопустимой. В конце работы алгоритма деформируемый многогранник стягивается в точку (вершины симплекса приближаются к центру тяжести) и, следовательно, величина Q приближается к нулю в соответствии с формулами (6.27) и (6.28). Решением задачи нелинейного программирования обязательно будет допустимая точка в силу свойств метода регулярного симплекса. На последних шагах алгоритма регулярного многогранника ¥(х) не влияет на сходимость алгоритма, так как выполняется процедура редукции, и все вершины сжимаются к центру тяжести. Исходный многогранник строится по правилам, указанным выше. За базовую точку выбирается вершина симплекса, вышедшая за пределы ОДР. Если размеры исходного многогранника меньше ширины почти допустимой области, то ориентация исходного многогранника не влияет на сходимость алгоритма (рис. 6.18). Исходный симплекс с вершинами 7, 2 и 3 лежит за пределами ОДР. В точке 1 находятся вершины двух разных симплексов: основного, с помощью которого выполняется поиск минимума целевой функции, и дополнительного, с помощью которого предпринимается попытка вернуть вершину основного симплекса в область допустимых решений. Если задача возврата вершины симплекса на границу ОДР или в ближайшую от нее зону (почти допустимая точка) решается положительно, то вершина основного симплекса заменяется на найденную вершину. Далее рассматривается только основной симплекс. В вершине 1 целевая функция имеет максимальное значение. В результате отражения вершины 1 получим вершину 4, а после растяжения — вершину 5. Новый симплекс имеет вершины 2,3 и 5. Одна вершина (пятая) уже находится внутри ОДР (см. рис. 6.18).
6.2. Методы прямого пои сна 147 0£\|/(,)£1 5 \|/(,)=10 *1 Рис. 6.18. Перемещение недопустимой точки в область ОДР Стратегия метода скользящего допуска при использовании в качестве основного метода регулярного многогранника заключается в следующем: • целевая функция минимизируется методом деформируемого многогранника; • после выполнения каждой из процедур отображения, растяжения или сжатия выполняется проверка полученной вершины на принадлежность ее к ОДР; • если вновь полученная вершина окажется недопустимой, то метод деформируемого многогранника применяется к функционалу Ч^х) (одному или нескольким нарушенным ограничениям) и переводят недопустимую точку в допустимую или почти допустимую область; • затем снова минимизируют целевую функцию методом деформируемого многогранника и т. д. При переходе от шага к к шагу к + 1 всегда производится замена только одной вершины многогранника. Процедура минимизации целевой функции заканчивается, когда 2; < £, т. е. деформируемый многогранник будет стянут в точку, которая соответствует точке экстремума. ю*
148 Глава 6. Нелинейное программирование Следует иметь в виду, что в методе скользящего допуска строится два симплекса: основной и дополнительный. Первый используется для минимизации целевой функции и изменяется от исходного, регулярного состояния до состояния, стянутого в точку, когда найден экстремум. Второй также деформируемый симплекс каждый раз строится заново в тот момент времени, когда полученную новую точку симплекса целевой функции надо перевести из недопустимой области в допустимую или почти допустимую область (минимизация функционала Ч^х)). Таким образом, относительно полученной недопустимой точки симплекса целевой функции строится регулярный симплекс. В результате работы метода деформируемого многогранника эта недопустимая точка переводится либо в допустимую, либо в почти допустимую. Полученная допустимая или почти допустимая точка заменяет вершину Xh в основном симплексе целевой функции. Изложенная процедура перемещения недопустимой точки в допустимую или почти допустимую область хорошо работает в случае ограничений в виде равенств. В случае ограничений в виде неравенств метод нерегулярного многогранника работает плохо, так как возникает циклический процесс по перемещению точки. То есть недопустимая точка после ее возвращения в ОДР оказывается достаточно глубоко внутри ОДР, и эта точка оказывается точкой максимума целевой функции хц. К точке хь опять применяют процедуру отображения. Отображенная точка опять становится недопустимой и т. д., т. е. возникает циклический процесс. Поэтому при работе с ограничениями в виде неравенств используют процедуру квадратичной интерполяции. Если в результате поиска экстремума одна из вершин деформируемого многогранника вышла за границы ОДР и за границы почти ОДР, то для возврата этой вершины в область ОДР (или почти ОДР) можно воспользоваться следующей процедурой. Из оставшихся внутри ОДР вершин деформируемого многогранника выбирают ту вершину, в которой целевая функция имеет наименьшее значение — х2 (рис. 6.19). Тогда линия, соединяющая эти вершины (*з и хг) деформируемого многогранника, обязательно будет проходить через границу ОДР. Ясно, что в точке пересечения линии, соединяющей вершиных3их2и границы ОДР, значение ^ = 0. Авторы метода скользящего допуска предлагают специальную процедуру для возвращения недопустимой вершины.
6.2. Методы прямого поиска 149 *2Ж 0£уи£1 Vw-5 Vw=10 *■ Рис. 6.19. Перемещение недопустимой точки в область ОДР Обозначим внутреннюю точку хг через xs, а внешнюю точку х3 — через х*~1. Тогда любая точка jc на отрезке Xs и Jc5"1 задается следующим выражением: х = х'+\'$ при 0<ks<k\ (6.35) где X* —расстояние между точками х5 и х5"1, которое определяется выражением: (6.36) где s ^Е(*Г-*у)2« •единичный вектор в направлении Xs -х5~\ которое определяется выражением: X $ = - V (6.37) Дополнительно вводится функция Z{x) от суммы нарушений ограничений в виде неравенств, т. е. ад=1>;ч*), (6.38) где р — количество нарушенных ограничений в виде неравенств в точке х .
ISO Глава б. Нелинейное программирование Теперь надо определить значение функции в начале отрезка z\ (точка JC2 или, что то же самое, xs), в конце отрезка z3 (точка jc3 или, что то же самое, xs~x) и точки где-то в середине отрезка z2. Но точка в середине отрезка не обязательно будет находиться на границе ОДР. Нам же интересно найти на прямой такую точку, которая расположена на границе ОДР. В этом случае нарушение условий ограничений равно нулю, т. е. в этом смысле найденная точка будет оптимальной. Для поиска координат оптимальной точки Jc* на отрезке х *S Л5-1 JC предлагается воспользоваться формулой: X =Х + 4а Х*3, (6.39) где а = z\ - 2 z2 + z3; (6.40) p = 3z,-4z2 + z3. (6.41) В вьфажении (6.39) рассматриваются только положительные корни. Если в задаче нелинейного программирования используются одновременно ограничения в виде равенств и в виде неравенств, то для возврата недопустимой точки (вершины) первоначально используется метод нерегулярного симплекса. Если метод нерегулярного симплекса не дал желаемых результатов, то в недопустимой точке (вершине) приступают к анализу каждого ограничения отдельно. Используют процедуру интерполяции для ограничений в виде равенств методом нерегулярного симплекса, а для ограничений неравенств — по формуле (6.39). После выполнения процедуры интерполяции для каждого ограничения вычисляют значение функционала *F(x). Если \ - *F(x) > 0, то проверку нарушения условий ограничения прекращают, а найденную точку (вершину) интерпретируют как почти допустимую и возвращаются к алгоритму оптимизации целевой функции. Если после просмотра всех ограничений вершину в ОДР вернуть не удалось, то возвращаются к оптимизации целевой функции и выполняют процедуру редукции вершин симплекса. Следует иметь в виду, что при оптимизации функционала ¥(*) используется п + 1 вершина симплекса, где п '•— общее число переменных. А при оптимизации целевой функции используется г + 1 вершина, где г = п-т — число степеней свободы (из рассмотрения исключаются зависимые переменные). Если отсутствуют ограничения в виде равенств, то п = г.
6.3. Градиентные методы 151 Локальные экстремумы (минимумы или максимумы) в методе скользящего допуска можно легко исключить, увеличив размер ребра исходного регулярного симплекса. Чем больше размер ребра симплекса (но не более ширины ОДР), тем выше гарантия исключения локальных экстремумов. По рекомендации авторов метода, оптимальный размер симплекса, когда он покрывает 60 - 80 % ОДР [8]. Преимущества метода скользящего допуска: • скорость сходимости алгоритма не зависит от характеристик целевой функции (или функций) и от характеристик функций ограничений; • так как для определения направления поиска экстремума используется большой объем информации (значения целевой функции во всех вершинах симплекса), то выбирается наилучшее направление и исключаются локальные экстремумы. Но исходный симплекс должен размещаться в области допустимых решений или в области почти допустимых решений. Работа алгоритма заканчивается в следующих случаях: 1. В случае успешного завершения поиска, т. е. нахождения точки (вершины), удовлетворяющей условиям ограничений и доставляющей наименьшее значение целевой функции. 2. В случае неудачи, когда не удается найти допустимую или почти допустимую точку (вершину). Для решения большинства задач рекомендуется использовать следующие значения коэффициентов: а=1; Р = 0,5; у = 2; ^=10"5. 6.3. Градиентные методы Градиентные методы поиска экстремума функции при своей работе требуют вычисления не только значения целевой функции на каком-либо множестве точек, но и вычисления первой производной на том же множестве, а иногда и вычисления второй производной на том же множестве. Эти методы различаются разработанным математическим аппаратом, теоретическим доказательством сходимости и высоким быстродействием. К недостаткам этих методов следует отнести невысокую точность результата и организацию выполнения достаточно трудоемких вычислений.
152 Глава 6. Нелинейное программирование щ^— ■ ———^—i I,. —— 6.3.1. Метод градиентного спуска Суть метода градиентного спуска заключается в том, что в каждой /-й точке алгоритма вычисляется градиент [см. формулу (6.4)], определяются направление движения и шаг. Так как за один шаг невозможно достичь точки минимума целевой функции, то строится последовательность точек, переходя от одной точки к другой, достигают точки минимума. В точке минимума все элементы вектора градиента принимают значение нуля. Для определения координат очередной точки используют направление, противоположное градиенту (антиградиент), а размер шага можно определить по различным правилам. Существует два основных класса правил определения размера шага: с фиксированным коэффициентом изменения размера шага и с оптимальным подбором размера шага. Каждый класс правил содержит несколько конкретных методов поиска минимума. Для случая с фиксированным коэффициентом изменения размера шага координаты точки на к-м шаге определяются по формуле: / = /"1-^. (6.42) Знак минус определяет направление движения против градиента (при поиске минимума целевой функции). Размер шага sk на к-й итерации определяется по формуле: sk=dk&*df(xk-1), (6.43) где dk—коэффициент изменения шага, как правило, меньше единицы. Если условие | /(**"' )-f(xk)\>dk\- grad/f**-1 )| (6.44) не выполняется, то уменьшают коэффициент изменения шага до тех пор, пока неравенство (6.44) не будет выполнено. Критерием останова алгоритма является выполнение следующего неравенства: |-grad/(;t*)|<£, (6.45) где е — наперед заданное сколь угодно малое число. Рекомендуемые значения констант: • коэффициент изменения (уменьшения) шага dk = 1 в стартовой точке. При движении по алгоритму значение коэффициента изменения шага уменьшается; • точность вычисления е = 0,000001. Обобщенный алгоритм метода градиентного спуска с использованием фиксированного коэффициента изменения шага.
6.3. Градиентные методы 153 1. Задать координаты стартовой точки jc; . 2. Задать значения р, dk, е. 3. Вычислить значение целевой функции, значения первых производных в текущей точке по каждой координате и определить антиградиент. 4. Определить, достигнут ли минимум целевой функции, т. е. выполняется ли неравенство (6.45). Если «да», то перейти к шагу 8. Если «нет», то перейти к шагу 5. 5. Вычислить размер шага по формуле (6.43). 6. Определить, надо ли уменьшать коэффициент изменения шага. Если неравенство (6.44) не выполняется, то коэффициент изменения шага уменьшают в 2 раза, dk = 0,5 dk-\ и переходят к шагу 5. Если неравенство (6.44) выполняется, то переходят к шагу 7. 7. Определить координаты текущей точки по формуле (6.43) и перейти к шагу 3. 8. Вывод координат точки минимума х и значения целевой функции в точке минимума/*(л:*). Останов алгоритма. Пример 6.1 Найти минимум целевой функции F(x) = Jtj* + 4х% при е < 0,01 и Сначала решим задачу при постоянном значении коэффициента (табл. 6.1) изменения шага d= 1 (пункт 6 алгоритма не выполняется). Таблица 6.1 Итерация 0 1 2 3 4 5 6 7 8 9 1 ю *i 2 1,76 1,37 0,42 -0,04 -0,03 0,05 0,04 0,03 0,02 -0,04 *2 2 1,03 0,11 -0,2 -1,09 -0,09 -0,91 -1,91 -0,91 0,09 -0,91 ~Ш ддс, 4 3,52 2,74 0,84 -0,08 -0,06 0,1 0,08 0,06 0,04 -0,08 170" 16 8,24 0,88 -1,6 -8,72 -0,72 -7,28 -15,28 -7,28 0,72 -7,28 grad/(**) 16,5 8,96 2,88 1,8 8,72 0,72 7,28 15,28 7,28 0,72 7,28 Разме] Х\ -0,24 -0,39 -0,95 -0,46 0,009 0,08 -0,01 -0,01 -0,01 -0,06 0,01 ршага *2 -0,97 -0,92 -0,31 -0,89 1 1 -1 1 1 -1 1 d
254 Глава 6. Нелинейное программирование Начиная с четвертой итерации, вокруг точки минимума целевой функции начинаются колебания, слабо сходящиеся к точке минимума. Использование п. 6 алгоритма приводит к точке минимума целевой функции по асимптотическому закону, т. е. градиент функции плавно убывает (табл. 6.2). Таблица 6.2 рация 0 1 2 3 3 4 4 4 5 6 7 8 8 9 10 11 *i 2 1,76 1,37 0,42 *2 2 1,03 0,11 -0,2 3*1 4 3,52 2,74 0,84 дх2 16 8,24 0,88 -1,6 grad/(x*) 16,5 8,96 2,88 1,81 Значение целевой функции текущее 20 7,34 1,93 0,34 ствующее 0 20 7,34 1,93 Нарушено условие (3.40), для итерации 3 0,89 0,4 -0,05 -0,16 1,78 0,8 0,4 -1,28 1,82 1,51 0,8 0,26 1,93 0,8 Нарушено условие (3.40), для итерации 4 0,64 |—0,111 1,28 | -0,88 | 1,55 | 0,45 | 0,8 Нарушено условие (3.40), для итерации 4 0,77 0,65 0,53 0,4 0,09 -0,08 -0,03 -0,01 0 0 1,54 1,3 1,06 0,16 0,18 -0,64 -0,24 -0,08 0 0 1,67 1,32 1,06 0,16 0,18 0,62 0,42 0,28 0,03 0,01 0,8 0,62 0,42 0,28 0,03 Нарушено условие (3.40), для итерации 8 0,24 0,18 0,12 -0,01 0 0 0 0 0,48 0,36 0,24 -0,02 0 0 0 0 0,24 0,18 0,12 0,01 0,06 0,03 0,01 0,01 0,03 0,06 0,03 0,01 d 1 1 1 0,5 0,5 0,25 0,125 0,125 0,125 0,125 0,125 0,0625 0,0625 0,0625 0,0625 Размер шага *i -0,24 -0,39 -0,95 -0,48 -0,49 -0,25 -0,12 -0,12 -0,12 -0,13 -0,31 -0,16 -0,06 -0,06 -0,13 *2 -0,97 -0,92 -0,31 -0,16 -0,11 -0,06 -0,03 0,05 0,02 0,01 0 0 0 0 0 Задача решена с требуемой точностью для случая оптимизации шага. В методах с оптимальным подбором размера шага в шестом пункте алгоритма определяется оптимальное значение коэффициента изменения шага по формуле: Ф$, =/(хЫ +</(-grad/M)). С6-46) Этот метод получил название метода наискорейшего спуска. Рассмотренный метод фиксированного изменения размера шага имеет существенный недостаток: по мере приближения к точке ми-
6.4. Примеры 755 нимума заметно уменьшается скорость приближения к минимуму по сравнению с первыми шагами алгоритма. По этой причине разработаны варианты метода градиентного спуска, различным образом изменяющие размер шага. Главным недостатком различных вариантов метода градиентного спуска является то, что процесс поиска минимума целевой функции может закончиться в стационарной точке (точка перегиба, сед- ловая точка). Для выхода из стационарной точки необходимо предпринять дополнительные меры — определить тип точки (стационарная или нет) и в случае положительного ответа применить любой не градиентный метод для выхода из стационарной точки, и далее продолжить поиск методом градиентного спуска [1,8]. 6.4. Примеры 1. Найти минимум целевой функции F(x) =[xf +j^ -1 lj +(*, +jc^ -7j при различных стартовых точках: а)х! = 5;х2 = 5; 6)*i=-5;x2 = 5; в)х!=5;х2=-5; r)xi=-5;*2=-5 с помощью методов регулярного симплекса и деформируемого многогранника. 2. Найти минимум целевой функции F(x) = 4х* + 2х?х2 - х\ при ограничении 2х\ +х2 < 150. 3. Найти минимум целевой функции F{x) =4x12 + 3х{х2 + 2х1 при ограничениях 3 х\ + 2х2 < 180 их\ + 5х2 < 120. Задачи 2 и 3 решить методом скользящего допуска с учетом ограничений и методом градиентного спуска без учета ограничений. Контрольные вопросы 1. Укажите различие между задачей нелинейного программирования и задачей линейного программирования. 2. Что такое экстремум функции? 3. Что такое локальный экстремум? Глобальный экстремум? 4. Дайте определение выпуклой (вогнутой) области.
J56 Глава б. Нелинейное программирование 5. Дайте определение области допустимых решений. 6. Что такое односвязная и многосвязная области допустимых решений? 7. Дайте определение градиента. 8. Расскажите о программных методах вычисления градиента функции одной переменной и функции нескольких переменных. 9. Назовите необходимые и достаточные условия существования локального экстремума. 10. Расскажите о сути метода регулярного симплекса. 11. Что представляет собой процедура отображения вершины симплекса? 12. Относительно какой точки выполняется отображение вершины симплекса? 13. В чем отличие метода деформируемого многогранника от метода регулярного симплекса? 14. Что представляют собой процедуры растяжения, сжатия и редукции симплекса? 15. В чем состоит идея градиентных методов поиска экстремума? 16. Расскажите об особенностях метода градиентного спуска. 17. Расскажите об отличиях метода наискорейшего спуска от градиентного метода.
Глава 7 Сетевые методы планирования Сетевое планирование применяется для создания оптимального плана выполнения работ в сфере промышленного производства, строительства, организации научно-исследовательских работ и т. д. Исходным материалом для сетевого планирования является программа выполнения работ. Программа содержит перечень работ, которые подлежат выполнению с указанием длительности выполнения каждой работы и ее стоимости. На основе этих данных строится сетевая модель (график). Построенная сетевая модель анализируется и при необходимости выполняются некоторые действия по ее улучшению. По данным сетевой модели строится календарный график выполнения работ, где указаны сроки выполнения каждого вида работ, определяются взаимосвязи между работами. По календарному графику определяются критические работы, которые при их выполнении берутся под строгий контроль. 7.1. Основные понятия и определения Сетевая модель — графическое отображение выполняемых работ в их технологической последовательности с указанием времени выполнения каждой работы. Основными элементами сетевой модели являются: 1. Событие — фиксируемый момент времени завершения /*-й работы и начало выполнения (/+ 1)-й работы. На сетевом графике событие обозначается кружком с порядковым номером. 2. Работа — это активные действия по созданию материального или интеллектуального продукта с привлечением различных ресурсов: финансовых, материальных, энергетических и т.д. Различают несколько видов работ:
258 Глава 7. Сетевые методы планирования • действительная работа, определение дано выше; • ожидание — вид работы, который требует для своей реализации только затрат времени: просушка окрашенных изделий, затвердевание бетона и т. д.; • фиктивная работа — логическая связь между событиями, не требующая затрат каких-либо ресурсов, т. е. какая-либо работа не может начинаться до тех пор, пока другая работа (или работы) не будет закончена. Действительная работа и ожидание изображаются на сетевом графике сплошной линией со стрелкой, а фиктивная работа — пунктирной линией со стрелкой (рис. 7.1). ©—Of 3© Рис. 7.1. Действительная и фиктивная работы 3. Путь — это непрерывная последовательность событий и работ, которые включаются только 1 раз. Форма (конфигурация) пути может быть произвольной. Длина пути рассчитывается как сумма времени выполнения работ, входящих в путь. 4. Критический путь — это путь, который содержит напряженные работы. Напряженная работа не имеет резервов по времени для своей реализации. Работы, имеющие резервы по времени, называются некритическими. Для некритических работ имеется возможность передвинуть сроки начала и окончания работы, причем общий срок выполнения всех работ остается прежним. 5. Исходное событие. Каждая сетевая модель имеет одно исходное событие, из которого вытекает одна или несколько работ. Исходное событие не имеет входящих работ. Исходное событие имеет порядковый номер ноль. 6. Завершающее событие. Каждая сетевая модель имеет одно завершающее событие, в котором заканчивается одна или несколько работ. Завершающее событие не имеет выходящих работ и имеет последний порядковый номер. При построении сетевой модели надо соблюдать правила: • сетевая модель может содержать только одно начальное и одно завершающее событие;
7.1. Основные понятия и определения j§g • в сети не должно быть «висячих» событий, т. е. тупиковых событий, кроме завершающего (рис. 7.2, а), и событий, не имеющих входящих работ, кроме начального события (рис. 7.2, б); Рис. 7.2. «Висячие» события • нумерация событий выполняется слева направо. Также слева направо указывается направление стрелок, изображающих работы. Каждая работа начинается из события с меньшим порядковым номером и заканчивается в событии с большим порядковым номером; • между двумя соседними событиями может быть только одна работа. Если имеется несколько параллельно выполняемых работ, которые начинаются в одном событии и заканчиваются в другом, то одну из этих работ оставляют без изменения, а для остальных действительных работ добавляют промежуточные события и фиктивные работы (рис. 7.3); Рис. 7.3. Добавление промежуточных событий и фиктивных работ: а — параллельные работы; б — фиктивные работы
Глава 7. Сетевые методы планирования в сетевой модели запрещено наличие замкнутых контуров (рис. 7.4), т. е. выполнение работ по кольцу с возвращением к начальному событию; сетевая модель должна иметь максимально простую форму; сетевая модель должна строго соответствовать технологическому процессу (цррядку выполнения работ); каждая работа маркируется двумя цифрами. Первая цифра — номер события начала работы, вторая цифра — номер события окончания работы. Маркировка работ должна быть уникальной. Рис. 7.4. Замкнутые контуры Особое внимание следует уделить правильной нумерации событий и, как следствие, правильной маркировке работ. Нумерацию событий в сетевом графике (рис. 7.5) рекомендуется выполнять по следующему алгоритму: Рис. 7.5. Исходный сетевой график • определить начальное событие. Для нашего примера — событие А. Этому событию присвоить ранг 0; • условно вычеркнуть работы, выходящие из события А (рис. 7.6). Событиям Б, В и Г, которые имеют только выходящие работы, присвоить ранг 1; 160
7.1. Основные понятия и определения 261 Рис. 7.6. Определение событий первого ранга • условно вычеркиваем работы, выходящие из событий 1-го ранга (рис. 7.7). Событиям Д и Е присваиваем ранг 2 и т. д. Событиям 3 и Ж— ранг 3, событию И— ранг 4; Рис. 7.7. Определение событий второго ранга • после назначения ранга событиям выполняется нумерация событий по следующим правилам: - события нумеруются слева направо, т. е. от начального события к конечному событию; - если несколько событий имеют одинаковый ранг, то нумерация событий выполняется сверху вниз. Итоговая нумерация событий указана на рис. 7.8. Рис. 7.8. Итоговая нумерация событий Изложенный алгоритм хорошо работает при малой размерности сетевой модели [5]. Если сетевая модель имеет большую размерность, то для выполнения нумерации событий целесообразно использовать алгоритм Форда. II- 1962
162 Глава 7. Сетевые методы планирования Пример 7.1 Кондитерская фабрика решила освоить новый вид продукции — подарочный набор шоколадных конфет «Юбилейный». В состав набора входят шесть видов шоколадных конфет. Данные для производства набора «Юбилейный» приведены в табл. 7.1. Таблица 7.1 Операция А Б В Г и 1 Е Ж 3 И к л м н О п р с Т У ф ц ч ш э ю \ я Наименование работы Разработка технологии производства (ТП) конфет 1-го вида Разработка ТП конфет 2-го вида Разработка ТП конфет 3-го вида Разработка ТП конфет 4-го вида Разработка ТП конфет 5-го вида Разработка ТП конфет 6-го вида Разработка эскиза коробки Передача технологической документации в производство Тоже » » » » » » » » Оформление заказа на изготовление коробки Производство конфет 1-го вида Производство конфет 2-го вида Производство конфет 3-го вида Производство конфет 4-го вида Производство конфет 5-го вида Производство конфет 6-го вида Производство коробок Комплектация наборов конфет Доставка коробок Передача конфет на упаковку Тоже Упаковка наборов конфет Непосредственно предшествующие работы А Б В Г Д Е Ж 3 И К л м н 0 П—Ф ц ч ш э.я Продолжи-1 тельность, ДН. 14 8 16 10 12 14 20 2 2 2 2 2 2 2 8 10 10 12 8 12 6 6 1 2 1 1 |
7.2. Расчет временных параметров J 63 По данным табл. 7.1 построим сетевой график (рис. 7.9). Рис. 7.9. Сетевой график примера 7.1 7.2. Расчет временных параметров Главной характеристикой сетевого графика является длина критического пути. Расчет критического пути выполняют в два этапа (от начала к концу сетевого графика и от конца к началу сетевого графика). На первом этапе определяют ранние сроки наступления событий, а на втором — поздние сроки наступления событий. 1. Вычисление ранних сроков наступления событий. При выполнении этого расчета рассматривают три величины: /Р" — ранний срок начала всех работ, выходящих из события /; /у н — ранний срок начала всех работ, входящих в событие./; ty — время выполнения работы у. Для примера 7.1 будем иметь. Для работы А предшествующих работ нет, тогда: /Г"'=/£'"'+'oi =0 + 14 = 14. Для работы Б, то же г\"• = #"• + /02 = 0 + 8 = 8. Для работы В, то же /3Р"' = 'о'"' + 'оз = ° +16 = 16-
164 Глава 7. Сетевые методы планирования Для работы Г, то же /4Р" = /0рн' + /04 = 0 +10 = 10. Для работы Д, то же /5Р" = #н' + /05 = 0 +12 = 12. Для работы Е, то же /6Р" = /0Р" + /06 = 0 +14 = 14. Для работы Ж, то же /7Р',К = /0рн' + /07 = 0 + 20 = 20. Работе 3 предшествует работа А, срок окончания которой равен 14, тогда /рн- = /рн- + /18 =14 + 2 = 16. Аналогично для работ И, К, Л, М, Н, О: /р» =Ю; С =15; /рн=12; /р2"=14; /Р3Н =16; С =22. Событие 15 может наступить только после наступления событий 8, 9, 10, И, 12, 13 и выполнения соответствующих работ 3, И, К, Л, М, К При этом событие 15 состоится только после выполнения самой длительной работы (выполнение пары «событие + работа»). Тогда /£"■ = тах(/рн + //у)=тах(16 + 8; 10 + 10; 15 + 10; 12 + 12; 14 + 8; 16+12) = 28. Таким образом, раннее начало наступления события 15 возможно только после выполнения самой длительной пары «событие + работа». В нашем случае это событие 13+ работа Ф. Для событий 16, 17 и 18 раннее их наступление вычисляется аналогично событиям 8, 9, 10, 11, 12, 13 и 14: С =28; $"-=34; С = 29. Раннее наступление события 19 рассчитывается аналогично событию 15 /&"• = max (tfM- +19 )= max (34 + 2; 29 +1) = 36. Ранее наступление события 20 будет определено, как /р0н=/р9н+/20=36 + 1 = 37. 2. Вычисление поздних сроков наступления событий. При определении поздних сроков наступления событий расчеты выполняют в обратном порядке. Событие 20 может наступить после самого позднего начала работы Я. Поэтому, /"о"' = 'Гйо = 37- Событие 19 может наступить, если из позднего окончания работы 20 вычесть время выполнения работы Я. То есть t™' =/™' -'Гя2о= = 37-1=36.
7.2. Расчет временных параметров 165 Событие 18 может наступить после выполнения работы Ю, т. е. 'lV' =/Г9Н' ~'18,19 =36-1 = 35. Аналогично рассчитываются события 17, 16, 15, 14, 13, 12, 11, 10,9,8,7: ^п.н. __ .п.и. М7 ~ М9 fll.ll. fll.H. М5 -47 "" /П.Н. __ ,П.Н. «11 — м < 13 п. п. 11 П. II 9 п.н. 7 п.н 45 ^п.н 45 .п.н 45 .п.н 44 __ ^п.н. — м* __ .п.н. — /П-Н. __ __ .п.н. "42 /П-Н. __ /П.Н. 13 -МО .п.н. __ .п.н. • 1 ~" • Й 17,19 =36-2 = 34; 15>17 =34-6 = 28; Мб «18 fll.ll. __ fll.ll. 44 ""Мб 13,15 = 28-12 = 16: ,п.п. _ ,п.н. М2 -'" «15 '11>15 =28-12 = 16; 9 15 =28-10 = 18; = 28-2 = 26: fll.Il. __ fll.n. МО -'15 ~ /П.Н. __ fn.H. * й — * 1 * — 7,14 5,12 3,10 = 20-2 = 18; = 18-2 = 16 45 fll.tl. fll.ll. 16 -МЗ /ПН. __ fn.H. * л — * 11 fll.tl. fll.n. h -l9 16.18=35-1 = 34; ■МИ6 =34-6 = 28; 12,,5=28-8 = 20; 1015=28-10 = 18; M5 =28-8 = 20; 'мз =16-2 = 14; 4>и =16-2 = 14; '2>9=18-2=16;; 1,8 = 20-2 = 18. Событие 0 состоится, если из всех шести вариантов выбрать минимальную по длительности пару «событие — работа». #"• =min (/,"•"• -/ff)=min(18 - 14; 16 - 8; 16 - 13; 14 - 10; 18 - 12; 14- 14) = 0. Полученные данные сведем в табл. 7.2. Таблица 7.2 Работа 0-1 0-2 0-3 0-4 0-5 0-6 0-7 1-8 [ 2-9 жительность, ДН. 14 8 13 10 12 14 20 2 2 Раннее начало 0 0 0 0 0 0 0 14 8 окончание 14 8 13 10 12 14 20 16 10 Позднее начало 4 8 3 4 6 0 5 18 16 окончание 18 16 16 14 18 14* 25 20 18 Полный резерв времени 4 8 3 4 6 0 5 4 8 Свобод-1 ный резерв времени гсв | 4 8 3 4 6 0 5 4 8 I
166 Глава 7. Сетевые методы планирования Окончание табл. 7.2 Работа 3-10 4--11 5-12 6-13 7-14 8-15 9-15 10-15 11-15 12-15 13-15 14-16 15-17 16-18 17-19 18-19 |l9-20 жительность, ДН. 2 2 2 2 2 8 10 10 12 8 12 6 6 1 2 1 1 Раннее начало 13 10 12 14 20 16 10 15 12 14 16 22 28 28 34 29 36 окончание 15 12 14 16 22 24 20 25 24 22 28 28 34 29 36 30 37 Позднее начало 16 14 18 14 25 20 18 18 16 20 16 28 28 34 34 35 36 окончание 18 16 20 16* 27 28 28 28 28 28 28* 34 34* 35 36* 36 37* Полный резерв времени 3 4 6 0 5 4 8 ; 3 4 6 0 6 0 6 0 6 0 Свобод- 1 ный резерв времени гсв 3 4 6 0 5 4 8 3 4 6 0 6 0 6 0 6 0 После выполнения вычислений по прямому и обратному направлению можно определить путь максимального потока или критический путь. Операция принадлежит критическому пути, если одновременно выполняются следующие условия: (7.1) (7.2) (7.3) Для примера 7.1 этим условиям удовлетворяют следующие события и работы: 0-6; 6-13; 13-15; 15-17; 17-19; 19-20, которые отмечены символом * в табл. 7.2. Для анализа полученных результатов используют следующие величины. Максимально поздний срок начала выполнения работы /"у"", при котором еще возможен весь комплекс работ выполнить в срок ,р.н. .п.о.. / - lj > ,р.н. .п.о.. У ~" V ' pp.11. fP-H. ^П.О. П.0
7.2. Расчет временных параметров 167 4j ~lj Чу (7.4) Минимально ранний срок окончания работы tfj0' — самый благоприятный из всех возможных срок окончания работы //}°=/Г+'/;. (7.5) Полный резерв времени Rn, который показывает, на какую величину максимально могут быть увеличены сроки выполнения работ от текущего события до начала сетевого графика относительно критического пути Ц-ф-ф-ф-ф. (7.6) Свободный резерв времени гсв — показывает максимальный резерв времени для текущей работы при условии, что предыдущие и последующие события начинаются в ранние сроки г =/по-/Р°-/... (7.7) 'ев 'у '/ '/у V'-'/ Рассчитаем величины R„9 rCB и поместим их в табл. 7.3. В гаэл. 7.3 пунктирной линией показан алгоритм вычисления Rn, сплошной линией — гсв. Таблица 7.3 Алгоритм вычисления величин Работа 0-1 0-2 0-3 0-4 0-5 0-6 0-7 1-8 2-9 3-10 4-11 5-12 жительность, ДН. 14 8 13 10 12 14 20 2 2 2 2 2 Раннее начало 0 0 0 0 0 0 0 14 8 13 10 12 окончание 14 8 13 10 12 14 20 16 10 15 12 14 Позднее начало 4 8 3 4 6 0 5 18 16 16 14 18 окончание 18 16 16 14 18 14* 25 20 18 18 16 20 Полный резерв времени 4 8 3 4 6 0 5 4 8 3 4 6 Свобод- 1 ный резерв времени гсв 4 8 3 4 6 0 5 4 8 3 4 6 1
268 Глава 7. Сетевые методы планирования Окончание табл. 7.3 Работа 6-13 7-14 8-15 9-15 10-15 11-15 12-15 13-15 14-16 15-17 16-18 17-19 18-19 |l9-20 жительность, ДН. 2 2 8 10 10 12 8 12 6 А ^ 1Щ~ 2 ^-> 1 1 Раннее начало 14 20 16 10 15 12 14 16 22^. -"гв 28 29 36 окончание LV 24Ч 20 25 24 22 Л 428)^ 34 29 36 30 37 Позднее начало — -н-~ 25 ^.20 18 18 16 20 16 -^28 28^ 34 34 35 36 окончание ^ &г 28^. 28 28 28 28 28* 34 ч34' Ж зГ 36 37* Полный резерв времени 0 5 ^4 8 3 4 6 0 6 0 6 6 0 Свободный резерв времени гсв 0 5 4 8 3 4 6 0 6 0 6 0 #6 0 | Полученный сетевой график и вычисленные параметры служат основой для выполнения оптимизационных мероприятий. Оптимизируются различные виды ресурсов: людские резервы, производственные площади, сроки выполнения работ и т. д. Для рассмотренного примера 7.1 введем дополнительные условия, указанные в табл. 7.4. Таблица 7.4 [Операция Л Р С Т У Ф ч э ю \ я Наименование работы Производство конфет 1-го вида Производство конфет 2-го вида Производство конфет 3-го вида Производство конфет 4-го вида Производство конфет 5-го вида Производство конфет 6-го вида Комплектация наборов конфет Передача наборов конфет на склад Передача коробок на упаковку Упаковка наборов конфет Продолжительность, дн. 8 10 10 12 8 12 6 2 1 1 Производственная 1 площадь Sih м2 15 20 20 30 15 30 40 15 15 20 |
7.2. Расчет временных параметров 169 Производственная площадь цеха составляет 50 м . Задача оптимизации может быть сформулирована так: сократить время производства конфет и обеспечить рациональное использование производственных площадей при соблюдении следования операций технологического процесса. Очевидно, что в каждый момент времени суммарная потребность в производственных площадях не должна превышать площади цеха. При выполнении оптимизации вырабатывают правила ее проведения. Для данного примера можно сформулировать несколько наборов правил. Первый набор правил. 1. Выполняется первая работа по списку. 2. При оставшемся свободном ресурсе выполняется следующая возможная работа, требующая меньшего ресурса. 3. Выполняется работа, требующая меньшего времени. Выполняя первый набор правил, будет получен следующий график распределения производственных площадей (рис. 7.10). 50- 40Н 30« 2(4 10' Ч Н \я о 10 15 20 25 30 40 Рис. 7.10. Распределение производственных площадей по первому набору правил Длительность цикла производства конфет — 41 день. Серым цветом выделены неиспользуемые производственные площади. Второй набор правил. 1. Выполняется первая технологически возможная работа, требующая максимального размера площади. 2. На оставшуюся площадь назначается следующая работа с максимальной потребностью площади, которая обеспечивается оставшимся ресурсом. Выполняя второй набор правил, будет получен следующий график распределения производственных площадей (рис. 7.11).
170 Глава 7. Сетевые методы планирования М"> 50- 40- 20- ю- 0 к Р С Т 1 I 5 10 Ф ' к 15 20 1С э П У i 25 —i 30 ч -■---, 35 я t 40 s^sss ДН Рис. 7.11. Распределение производственных площадей по второму набору правил Длительность цикла производства конфет — 39 дней. Серым цветом выделены неиспользуемые производственные площади. В случае выполнения оптимизации по многим критериям создают различные наборы правил выполнения оптимизации и выбирают наилучший график выполнения работ [3,5]. 7.3. Нахождение кратчайшего пути С помощью сетевых моделей также решают некоторые задачи оптимального планирования по одному параметру без вычисления временных параметров сетевого графика. К такому классу относятся задачи по обходу объектов (пунктов) кратчайшим путем. Задача нахождения кратчайшего пути имеет две формулировки: • найти кратчайший разомкнутый путь; • найти кратчайший замкнутый путь. Для решения каждого варианта задачи созданы специальные алгоритмы. 7.3.1. Прямой симметричный алгоритм Этот алгоритм применяется для нахождения кратчайшего разомкнутого пути. Суть алгоритма состоит в том, что, начиная от стартовой вершины рассматриваются альтернативные пути движения к вершине финиша. Если при рассмотрении альтернативных путей нарушается принцип симметричности, то «несимметричный» путь отбрасывается (далее не анализируется). С помо-
7.3. Нахождение кратчайшего пути ] yj щью этого алгоритма решают некоторые задачи оптимального планирования по одному параметру без вычисления временных параметров сетевого графика. Подробно работу алгоритма рассмотрим на примере. Пример 7.2 Проложить водопроводные трубы между девятью объектами кратчайшим (в экономическом смысле) путем. Объект 0 — водонапорная башня. Данные приведены на рис. 7.12, где на ребрах графа — стоимость работ по прокладке водопровода на данном участке (ребре). Рис. 7.12. Условия примера 7.2 Введем следующие обозначения. c\j — стоимость работ по прокладке водопровода между объектами i и у. Qj — минимальная стоимость работ от объекта 0 до объекта у', т.е. 00 = 0. Тогда Qj = min (£>, + с,7). (7.8) Будем иметь: 2о = 0; ei = eo + coi=0 + 2 = 2; 62 = 60 + ^02 = 0 + 4 = 4; 2з = ео + соз = 0 + 3 = 3; е4 = ео + со4 = 2 + 2 = 4; Qs = min(<22 + с25; & + с35) = min(4 + 3; 3 + 2) = 5; Qb = min (<24 + с46; Qs + c56) = min (4 + 4; 5 + 2) = 7; Qn = min (ft + c57; Q6 + c67) = min (5 + 4; 7 + 3) = 9; Qs = min (<24 + c48; Qi + Ы = min (4 + 4; 9 + 5) = 4 + 4 = 8.
172 Глава 7. Сетевые методы планирования Минимальная стоимость прокладки водопровода между пунктами О и 8 составит 2 + 2+4 = 8и пройдет по маршруту 0-1-4-8 (рис. 7.13). (£н-0—-0—© Рис. 7.13. Кратчайший путь между пунктами 0 и 8 Минимальная стоимость прокладки водопровода между всеми пунктами составит: 2 + 2 + 4 + 3 + 2 + 3+2 + 3 = 21. Схема прокладки водопровода, соединяющего все пункты, представлена на рис. 7.14 [5]. Рис. 7.14. Кратчайшая длина водопровода 7.3.2. Задача коммивояжера Задача коммивояжера имеет длинную историю. Во времена расцвета Британской империи (захвата колоний и географических открытий) англичанин У. Гамильтон придумал новую игру, суть которой состоит в том, что необходимо посетить все указанные города и вернуться назад. Такой замкнутый цикл (точка старта является и точкой финиша) называют гамилыпоновым циклом. Впоследствии задача Гамильтона была уточнена и указаны пути ее решения математиками Г. Лейбницем и Я. Бернулли. В современной интерпретации задача коммивояжера формулируется так: В произвольном порядке обойти все вершины замкнутого графа по кратчайшему пути и вернуться в исходную вершину, причем каждая вершина проходится один раз. В настоящее время известно несколько алгоритмов решения задачи коммивояжера, отличающиеся друг от друга эффективностью.
7.3. Нахождение кратчайшего пути J 73 Под эффективностью будем понимать или наименьший пройденный путь, или наименьшие затраты ресурсов (при решении экономических задач, сводимых к задаче коммивояжера). Математическая модель задачи коммивояжера имеет вид: п F(,)=m™T,C'J> <7-9> где п — количество вершин замкнутого графа; Cjj —расстояние между городами (затраты ресурса между работами) при наложенных ограничениях: Cjj > О — расстояния (ресурсы) не отрицательны; С,у = оо — запрет на петли внутри маршрута; Cjj■ = Cji —принцип симметричности (расстояние между городами одинаковое); Cjj+ Cjk^Cjk —принцип треугольника (в город короче проехать напрямую, чем через третий город). При решении практических задач два последних ограничения соблюдаются редко. Так как вершина старта и вершина финиша - одна и та же вершина, то максимально возможное количество замкнутых маршрутов составит (п + 1)!. В общем случае длины всех маршрутов различные и один из них оптимальный (самый короткий). В практических задачах возможно наличие нескольких оптимальных маршрутов (альтернативные решения). Задачу коммивояжера можно решить с помощью одного из алгоритмов: 7.3.3. Прямой алгоритм Идея прямого алгоритма состоит в том, что начиная со стартовой вершины из всех направлений кандидатов выбирается то направление, которое дает наименьшее приращение к сумме пройденного пути. Таким образом, глубина просмотра путей (ветвей) направлений движения составляет один шаг. На первых шагах алгоритм показывает хорошие результаты, а на последних шагах — плохие, так как отсутствуют варианты выбора направления движения и идти приходится по оставшемуся свободному пути. Отсутствие анализа на несколько шагов вперед (на два, три, четыре шага и т. д.) приводит к нахождению далеко не оптимального решения.
174 Глава 7. Сетевые методы планирования Пример 7.3 Определить длину (Q) кратчайшего маршрута (L) коммивояжера. Расстояния (Qjj) между шестью городами представлены в табл. 7.4. Таблица 7.4 Г Город 1 2 3 4 5 6 1 6 * 4 12 14 22 2 6 3 8 7 20 3 4 3 10 11 18 4 12 8 10 9 16 5 14 7 11 9 10 6 22 20 18 16 10 6 = 6i = 0; 6 = 6+ mm (612; 613; 6u;6i5;6i6) = 0 +min (6; 4; 12; 14; 22) = 4; L=l-»3; Q = Q + min (632; Q*; Q35; Q36) = 4 + min (3; 10; 11; 18) = 4 + 3 = 7; L = 1 -» 3 -» 2; Q = 6 + min(024; 625; &б) = 7 + min (8; 7; 20) = 7 + 7 = 14; I=l->3-»2->5; Q = Q + min (054; 6se) = 14 + min (9; 10) = 14 + 9 = 23; I = l-»3->2-»5->4; 6 = 6 + 646 = 23 + 16 = 39; Z,= l->3-»2-»5-»4-»6; 6=6 + 661 = 39 + 22 = 61; L=l->3-»2->5-»4-»6->l. Ответ: длина маршрута 61, порядок объезда городов: 1->3-»2->5-»4->6->-1. Условия примера 7.3 представляют собой симметричную задачу (матрица симметрична относительно главной диагонали). На практике встречаются и несимметричные задачи. Например, проезд на автобусе в прямом и обратном направлении составляет разную сумму или две дороги с односторонним движением и различной протяженностью соединяют два города и т.д. Также возможны и смешанные задачи, в графах которых отсутствуют некоторые ребра
7.3. Нахождение кратчайшего пути 175 (два города не имеют прямой дороги, т. е. проезд осуществляется через третий город). Отсутствие какого-либо ребра в графе в матрице будем обозначать символом оо. Пример 7.4 Изменим условия примера 7.3. Определить длину (Q) кратчайшего маршрута (L) коммивояжера. Расстояния (QiJ) между шестью городами представлены в табл. 7.5. Таблица 7.5 1 Город 1 2 3 4 5 6 1 6 4 12 14 22 2 6 3 8 00 20 3 6 3 10 11 18 4 12 8 10 00 16 5 14 00 11 00 8 6 1 22 20 18 16 10 а) Просмотр матрицы будем выполнять по строкам. 0 = 01 = 0; L = \; 0 = 0 + min(0I2;013;0,4;0i5;0i6) = O + min(6;6;12;14;22) = 6; L = 1 -► 2; 0 = 0 + min (023; 024; 025; Q26) = 6 + min (3; 8; oo; 20) = 6 + 3 = 9; L=l-»2->3; 0 = 0 + min (634; &5; бзб) = 9 + min (10; 11; 18) = 9 + 10 = 19; L=l-»2->3->4; 0 = 0 + min (045; 04б) = 19 + min (oo; 16) = 19 + 16 = 35; Z,= l->2-»3->-4->-6; 0 = 0 + 065 = 35 + 8 = 43; I = l->2->3-»4->6->-5; 0 = 0 + 051=43 + 14 = 57; L = l-»2->3-»4-»6-»5->l. Ответ: длина маршрута 57, порядок объезда городов: 1-»2->3-»4-»6->5->1. б) Просмотр матрицы будем выполнять по столбцам. 0 = 0.=О;
276 Глава 7. Сетевые методы планирования e = e + min(e21;e3i;e4i;e5i;e6i) = 0 + min(6;4;12;14;22) = 4; Z,= l->3; e = e + min(fia;e43;e53;e63) = 4 + miii(3;10;ll;18) = 4 + 3 = 7; Z, = l->3->2; Q = Q + min (£42; £52; бб2) = 7 + min (8; oo; 20) = 7 + 8 = 15; Z,= l->3->2->4; Q = Q + min(Q54;QM)= 15 + min(oo; 16)= 15+ 16 = 31; Z,= l->3->2->4->5; 6 = 6 + 056 = 31+8 = 39; Z,= l->3->2->4->5->6; 2 = 2 + 261 = 39 + 22 = 61; /,= 1->3->2->4->5->6->1. Ответ: длина маршрута 61, порядок объезда городов: 1->3->2->4->5->6->1. Из примера 7.4 видно, что из-за несимметричности матрицы ответы получились разные. Если граф не ориентированный, то можно предусмотреть выбор кратчайшего ребра из двух возможных, соединяющих вершину / с вершинойу. 7.3.4. Алгоритм Дейкстры В 1959 г. голландский математик Дейкстра предложил алгоритм, который решает задачу коммивояжера для любой матрицы исходных данных: симметричной, несимметричной и смешанной (отсутствуют некоторые ребра графа) [10, 11]. Для работы алгоритма Дейкстры используется три массива чисел: 1) двухмерный массив D размером п хп, содержащий веса ребер графа (расстояние между городами, стоимости проезда и т.д.); 2) одномерный массив А размером п, в котором свободные вершины отмечены 0, а номера просмотренных вершин записываются слева направо. В первый элемент массива А помещается номер стартовой вершины; 3) одномерный массив В размером п, который содержит вес ребра (расстояние между соседними городами, стоимость проезда и т.д.). Так, первый элемент массива В содержит вес ребра, вершины которого хранятся в первом и втором элементах массива А, второй эле-
7.3. Нахождение кратчайшего пути J 77 мент массива В содержит вес ребра, вершины которого хранятся во второй и третьей ячейках массива В и т. д. Сумма элементов массива В есть текущее значение формируемого маршрута (Ь$. По окончании работы алгоритма сумма элементов массива В будет соответствовать протяженности оптимального маршрута. Элементы массива В заполняются слева направо в порядке (последовательности) заполнения массива Л. Суть алгоритма Дейкстры состоит в том, что п раз (п равно количеству вершин графа) определяется ребро графа с минимальным весом (длиной пути) из оставшихся свободных вершин в текущей строке массива D. Далее выполняются две проверки: 1) длина найденного ребра графа должна быть меньше или равна симметричному ребру графа. В противном случае выбирается симметричное ребро. Матрица примера 7.3 симметричная, т.е. d^ = d$\ и т. д.; 2) массив В заполнен на к элементов. Массив А заполнен на t элементов, причем / = к - 1. Текущее ребро графа имеет индекс Л Если к к-2 2>*>2>+«/„+</,ы. (7.10) к=\ к=\ то ранее найденная вершина к заменяется на текущую вершину / в массиве А, а в массиве В удаляется последнее значение и заменяется предпоследнее значение. В этой проверке отрабатывается принцип треугольника: ранее выбранный путь оказался длиннее текущего пути. Таким образом, на каждом шаге просматриваются все вершины графа, а анализируются только свободные вершины. Описание алгоритма Дейкстры: 1. Заполнить массив А: первому элементу присвоить номер стартовой вершины. Остальным элементам массива А присвоить значение 0. 2. Заполнить массив В нулями. 3. Организовать перебор строк массива D. 4. Определить номер текущей строки. Номер текущей строки равен номеру последнего элемента, помещенного в массив А. 5. Просмотреть текущую строку массива D и выбрать элемент с минимальным значением из числа свободных элементов. 6. Проверить выбранный элемент на выполнение принципа симметричности. При необходимости выполнить замену ребра. 12- 1962
J78 Глава 7. Сетевые методы планирования 7. Проверить выбранный элемент на выполнение принципа треугольника. При необходимости сделать замену вершины. 8. Все ли строки матрицы D просмотрены? Если «нет», то перейти к пункту 4. Если «да», то — к пункту 9. 9. Сформировать и выдать ответ: структура маршрута и протяженность маршрута. 10. Остановить работу алгоритма. Решим пример 7.3 с помощью алгоритма Дейкстры. Граф для примера 7.3 представлен на рис. 7.15. Работа алгоритма Дейкстры показана на рис. 7.16, где правая часть выражения (7.10) обозначена как Yd. После прохода по шестой строке оказалось, что нарушен принцип треугольника. В результате замены вершин (перестановка вершин 4 и 6) условие (7.10) выполняется. Длина маршрута, найденного с помощью алгоритма Дейкстры, короче на 9 единиц, по сравнению с длиной маршрута (61), определенного прямым алгоритмом. Решим пример 7.4 с помощью алгоритма Дейкстры. Так как в этом алгоритме предусмотрена проверка на соблюдение принципа симметричности, то просмотр матрицы по строкам или столбцам не имеет значения. Работа алгоритма Дейкстры показана на рис. 7.17.
7.3. Нахождение кратчайшего пути 179 I.bk Id Проход по первой строке массива D Массиве 1 1 | 3 | 0 | 0 | 0 | 0 | Массив Я |4|0|0|0|0|0 Проход по третьей строке массива D Массив А Массив В третьей строке массива |1|3|2|0|оГо] 4[3|0[0|0|0| 7>9 Проход по второй строке массива D Массиве | 1 | 3 | 2 | 5 1 0 | 0 | Массив В | 4 | 3 | 7 1 0 | 0 | 0 | 14 > 22 Ibk Id Проход по пятой строке массива D ~TTTfi\s\4\o\ Массив А Массив Я 14|3[7|9|0|0|23>24 Проход по четвертой строке массива D Массиве | 1 |3|2|5|4[6| Массиве |4|3|7|9|16|0|39>40 Проход по шестой строке массива D Массиве 1 1 | 3 | 2 | 5 | 4 | 6 | Массив В 4|3|7|9ll6l22l 61 >57 После применения принципа треугольника Массиве | 1 J 3 | 2 | 5 | 6 | 4 1 Массиве |4|3|7|10|16|12|52>68 Рис. 7.16. Ход решения примера 7.3 (после каждого прохода показан конечный результат) Ответ: длина маршрута 52, порядок объезда городов: / ->3 ->2->5->6->4->1. lbk U Проход по первой строке массива D Массиве | 1 |3 | 0 | 0 | 0 | О Массив Я 1 4 | 0 | 0 | 0 | 0 | 0 | Проход по третьей строке массива D Массиве | 1 [3 |2 Массив Я |4 | 3 | 0 | 0[ 0| 0 1 7>9 Проход по второй строке массива D Массив А Массив В 1 3[2[4 ofo] 4 1 3 | 8 1 01р_ _0j 15 >22 16* Id Проход по пятой строке массива D Массиве | 1 |3|2|4|6[0| Массиве [4|3|8 16 31 >43 Проход по четвертой строке массива D Массиве | 1 |3[2|4|6|5l Массиве |4|3|8ll6liTo 39>? Проход по шестой строке массива D Массив А Массив В 4|3l8|l6|8Tl4| 53 > 67 Рис. 7.17. Ход решения примера 7.4 (после каждого прохода показан конечный результат)
ISO Глава 7. Сетевые методы планирования 7.3.5. Алгоритм Литтла Другое название алгоритма Литтла - метод «ветвей и границ». Так же как и в целочисленном программировании, при использовании алгоритма Литтла необходимо определить верхнюю и нижнюю оценки для разделения множества решений на два класса. Различают две группы задач, решаемых этим алгоритмом: задачи на минимум (определяют нижнюю оценку или границу) и задачи на максимум (определяют верхнюю границу или оценку) [12, 13]. Идея алгоритма такова: определяют нижнюю оценку (для задач на минимум) и разделяют исходную матрицу на две примерно равные части. Затем уменьшают размер матрицы и определяют «плату» за уменьшение размера матрицы. Размер платы может быть или положительный или нулевой, т.е. увеличивать или не изменять размера нижней оценки. Размер матрицы уменьшается до 2 х 2. Затем выполняют движение в обратном порядке и получают оптимальный (по стоимости) маршрут. Рассмотрим работу алгоритма Литтла на примере 7.3. Выполним «зануление» матрицы так, как это было в дельта- методе при решении транспортной задачи (см. рис. 7.18). Рис. 7.18. «Зануление» исходной матрицы После «зануления» матрицы ее элементы должны содержать или положительные, или нулевые значения. Сумма вычтенных значений по строкам равна 35 (4 + 3 + 3 + 8 + 7 + 10), по столбцам — 6 (1 +0 + 0 + 2 + 0 + 3). Общая сумма всех вычитаний — 41. Это и есть нижняя оценка. Из условия задачи ясно, что надо побывать в каждом городе один раз. То есть замкнутый маршрут (цикл) должен содержать уникальные номера городов и переходы из одного города в другой должны
7.3. Нахождение кратчайшего пути 181 выполняться по одному разу в каждой строке и в каждом столбце. Также надо помнить, что стоимость маршрута не может быть меньше нижней оценки (общей суммы выполненных вычитаний). Далее для каждой клетки матрицы, содержащей ноль, надо вычислить частную оценку клетки или просто оценку клетки. Оценка клетки определяется как сумма минимальных элементов соответствующей строки и столбца. Клетка 1 -3 содержит значение ноль. Оценка этой клетки будет равна сумме минимального элемента по первой строке и минимального элемента по третьему столбцу 2 + 0 = 2. Для клетки 2-3 оценка составит 2 + 0 = 2. Для клетки 3-2 оценка будет 0 + 0 = 0. Оценки клеток представлены в виде верхнего индекса на рис. 7.19. Оценки клеток [Ж 1 2 3 4 5 [б_ 1 ш mm 2 О2 3 6 11 2 2 шт 0° 0' 0° 10 3 о2 ioi hi 4 8 4 6 3 щш 7 4 5 10 4 8 1 О5 ~б] 15 14 12 5 О5 ш Рис. 7.19. Расчет оценок клеток Начиная с этого момента приступаем к построению дерева ветвления алгоритма. Максимальная оценка 5 принадлежит двум клеткам 5-6 и 6-5. Поэтому за «нулевое» ребро принимается или ребро 5-6, или ребро 6-5. Возьмем ребро 5-6. Все маршруты разобьем на содержащие ребро 5-6 и не содержащие это ребро. Обе группы маршрутов (содержащие и не содержащие ребро 5-6) будут иметь стоимость не менее нижней оценки (более может быть). Из дальнейшего рассмотрения исключаем пятую строку и шестой столбец (рис. 7.20, а). Этим действием снижаем размер матрицы. Ребро 5-6 (на рис. 7.20 представлено в виде клетки) помечено как запрещенное (серым цветом) для рассмотрения. К уменьшенной матрице применяем процедуру «зануления» (рис. 7.20,6). Из последней строки вычтем 4, а из последнего столбца — 1. Заново определяем оценки нулевых клеток (рис. 7.20, в).
182 Глава 7. Сетевые методы планирования х° 1 2 3 4 [б 1 Ш 2 О2 3 11 2 '2 йн 0° о1 10 3 о2 о2 ш 2 8 4 6 3 5 ш 4 Т] 10 4 8 1 Первый шаг [75" 1 2 3 4 [б 1 ж 2 О2 3 7 2 2 Si 0° о1 6 3 о2 о2 2 4 4 6 3 5 0 Т| 9 3 7 0 и [Ж 1 2 3 4 |б 1 2 О2 3 7 2 2 I! 0° 0° 6 3 к О2 К» 4 6 3 5 2| \Ф 5| 9 3 7 й Рис. 7.20. Ветвление алгоритма: a — снижение размера матрицы; б — «зану- ление матрицы»; в — расчет оценок клеток Клетка 6-4 имеет наибольшую оценку 7. За «нулевое» ребро возьмем 6-4. Далее процедура снижения размера матрицы повторяется. Результат преобразований показан на рис. 7.21. Второй шаг ш 1 2 3 4 1 жш 2 О2 3 2 2 ш Шт 0° 0° 3 о2 о2 2 71 9 3 7 в [55" 1 2 3 [4 1 Г2 Щ 2 2М О2 0° з jo0 3 о2 о2 :|Ш», 2 Т] 6 0 4 щ pfe 1 2' 3 [4 1 «1 2 О2 3 2 2 « 0° О2 3 о2 0° 2 5] 6 О4 4 Шт [№1 У2131 [ 1 Ш 2 | О31 ЬИи \ UU\m Ш> 1 4 [з_ 1 11 рр 3 о2 2 2 И 0Ь з] °1 Щ Третий шаг |№| 1 1 4 Ы 1 О2 2 2 ffltffe 0° з| о2 0 № hi [i. [Г 1 о1 2 2 i £ 71 о1 оЧ ■ Четвертый шаг [35б| 1 4 1 щш 1 3 о2 i № 1 4 1 0 Т| о2 и Рис. 7.21. Продолжение ветвления алгоритма Проанализируем выполненные преобразования и построим дерево алгоритма (рис. 7.22). В результате расчета «зануления» исходной матрицы была получена нижняя оценка — 41. Таким обра-
7.3. Нахождение кратчайшего пути 283 зом, стоимость любого допустимого маршрута будет не менее 41. После вычисления оценок нулевых клеток (см. рис. 7.19), была выбрана клетка 5-6 с максимальной оценкой 5. Соответственно, ребро, соединяющее города 5 и 6, было объявлено «нулевым», и все возможные маршруты были разделены на две группы: содержащие ребро 5-6 и не содержащие этого ребра. Новая нижняя оценка для маршрутов, не содержащих ребра 5-6, должна быть увеличена на оценку клетки 5-6 и составит 41 + 5 = 46. На первом шаге (см. рис. 7.20) нулевое ребро было помечено серым цветом и изъято из дальнейшего рассмотрения. Далее рассматривалась только левая ветвь (рис. 7.22) дерева ветвления алгоритма. Общая сумма «зануления» (по строкам и столбцам) равна 5. Нижняя оценка для левой группы маршрутов (включающих ребро 5-6) составит 41 + 5 = 46. На втором шаге была выбрана клетка 6-4 с оценкой 7. Новая нижняя оценка для маршрутов группы, не содержащей ребро 4-5, будет 53 и ветвление будет выполнено по ребру 6-4. Общая сумма «зануления» (по строкам и столбцам) составит 3. Нижняя оценка для левой группы маршрутов (содержащих ребро 4-5) будет 46 + 3 = 49. На третьем шаге будет удалено ребро 2-5. Оценка клетки 2-5 составляет 4. Следовательно, нижняя оценка правой группы маршрутов будет 49 + 4 = 53. Общая сумма «зануления» — 2. Нижняя оценка левой группы маршрутов равна 49 + 2 = 51. На четвертом шаге выбрана клетка 3-2 с оценкой 2. Нижняя оценка правой группы маршрутов равна 51 + 2 = 53. Общая сумма «зануления» — 1. Нижняя оценка левой группы маршрутов равна 51 + 1 = 52. В результате анализа было составлено дерево ветвления алгоритма (рис. 7.22). Построение оптимального маршрута выполним, используя рис. 7.22 и 7.21. На последнем (четвертом шаге) остались два свободных (не запрещенных) ребра 1-3 и 4-1. Оба ребра включаем в маршрут и добавляем ребра из левой ветви рис. 7.22. Оптимальный маршрут будет состоять из ребер: 1-3; 4-1; 3-2; 2-5; 6-4 и 5-6. После упорядочения получим: 1-3-2-5-6-4-1. Ответ: длина оптимального маршрута не менее 52, порядок объезда городов: 1-3-2-5-6-4-1. Из исходной матрицы подставим значения ребер и определим стоимость маршрута: 4 + 3 + 7+10+16+12 = 52.
184 Глава 7. Сетевые методы планирования 52 ^ 51 49 46 41 Все маршруты Включая ребро 5-6 ^ \ Включая ребро 6-4 \ 46 Без ребра 5-6 53 Без ребра 6-4 У^ ^N^ 53 Включая ребро 2 - 5 1 Без ребра 2-5 <^ ^Ч^ 53 Включая ребро 3-2 Без ребра 3-2 Рис. 7.22. Дерево ветвления алгоритма Для того чтобы убедиться, действительно ли найден оптимальный маршрут, надо проанализировать «правые» группы маршрутов. Все правые группы, кроме первой, имеют нижнюю оценку более 52. Следовательно, эти группы не могут содержать лучшего решения. Остается проверить первую правую группу, нижняя оценка которой составляет 46. Маршруты этой группы не содержат ребра 5-6. Анализ ребра 5-6 выполнялся в начале работы алгоритма. Поэтому из исходной матрицы надо исключить ребро 5-6. Исключение ребра выполним следующим способом: ребрам 5-6 и 6-5 поставим значение оо. Процесс доказательства минимальности алгоритма представлен на рис. 7.23, 7.24 и 7.25. Так как исходная задача симмет- Город 1 2 3 4 5 [ 6 1 т 6 4 12 14 22 2 6 т 3 8 7 20 3 4 3 10 11 18 4 12 8 10 ш 9 16 5 14 7 11 9 т 10 6 22 20 18 16 10 if № 1 2 3 4 5 6 1 II 1 4 7 6 2 2 ЕЁ 0 0 0 4 3 0 0 2 4 2 4 8 5 2 0 5 10 4 8 6 18 17 15 8 Щоо *^** 41 1 ШШ 2 3 4 5 6 2 О2 3 6 5 2 2 3 О2 Bl2_ 0° 0° о2 4 2 4 2 4 8 5 7 2 О4 5 9 3 7 0* ОС Т| 10 9 7 °1 00 mi Рис. 7.23. Исключение ребра 5-6: a — исходная матрица; б — исключение ребер 5-6и6-5;в —расчет оценок
7.4. Обоснование бизнес-проекта 185 №| 1 1 Щ уГ 3 4 [б 2 Oi 6 5 2 2 0° О2 4 3 О2 0* ДД 2 4 8 5 7 ш о4 Т| 9 3 7 Шш\ Первый шаг [Ж 1 2 3 4 [6_ 1 2 О2 5 6 2 2 Кк 7 4 О2 3 О2 о2 ш 2 4 4 8 5 7 Р 2 Т| 9 3 7 00 el [Ж 1 2 3 4 [6 Т] ■ 2 °1 3 б| 2 2 it 7 2 0* 3 о2 о2 4 4 6 3 5 ш 0 Т] 6 0 4 00 щ Рис. 7.24. Первый шаг доказательства оптимальности: a — исключение ребра 4-6; б — перестановка строк; в — «зануление» матрицы 51 58 Без ребра 5-6 Включая ребро 4-6 \ 58 Без ребра 4-6 Рис. 7.25. Дерево доказательства оптимальности алгоритма ричная, то исключались два ребра 5-6 и 6-5. Если задача несимметричная, то исключается одно ребро, и доказательство правильности алгоритма увеличивается на один шаг. Таким образом, в результате проведенного анализа установлено, что оба разветвления правой ветви «Без ребра 5-6» дают оценки 58. Строить последующие ветви не имеет смысла, так как все маршруты будут иметь большую стоимость по сравнению с левой ветвью алгоритма. 7.4. Обоснование бизнес-проекта С целью развития фирмы, обеспечения ее конкурентоспособности в условиях рынка менеджмент фирмы постоянно работает над вопросами расширения и модернизации производства. Строительство новых производственных площадей, модернизация технологического оборудования требуют больших финансовых вложений. Как правило, фирмы не располагают большими суммами свободных денежных средств. Для проведения указанных работ они используют заемные средства — банковские кредиты. Вопросы обоснования суммы необходимых ка-
286 Глава 7. Сетевые методы планирования питальных вложений и сроков погашения банковских кредитов играют важную роль при составлении бизнес-планов, которые предоставляются фирмами в кредитные организации для получения инвестиций. Некоторые расчеты по обоснованию бизнес-плана и получения банковского кредита можно выполнить с помощью сетевого моделирования. Пример 7.5 С целью расширения производства менеджмент фирмы решил выпускать новый вид конкурентоспособной продукции — копченую (по оригинальной технологии) пресноводную рыбу. Для этих целей один из цехов фирмы надо переоборудовать и выполнить следующие работы. 1. Подготовка технического задания на реконструкцию цеха — 50 дн. 2. Заказ и поставка нового печного оборудования — 90 дн. 3. Заказ и поставка нового технологического оборудования — 30 дн. 4. Демонтаж старого оборудования — 25 дн. 5. Установка нового оборудования — 75 дн. 6. Переобучение персонала — 50 дн. 7. Проведение испытаний нового оборудования и сдача цеха в эксплуатацию — 40 дн. Расчетная производительность нового цеха — 36 т продукции в смену. Прибыль от реализации 1 т продукции составит 2000 руб. Необходимую сумму инвестиций — 2 400 000 руб. можно получить как банковский кредит из расчета 24% годовых. Полученный банковский кредит предполагается израсходовать следующим образом: 2 000 000 руб. — закупка нового оборудования, 400 000 руб. — стоимость демонтажа старого оборудования и монтажа нового оборудования и проведение испытаний. Определить, через какое время будет возвращен банковский кредит. Работы по переоборудованию цеха можно выполнять в нормальном и ускоренном режимах (табл. 7.6). Если работы выполнять в последовательности, которая указана в табл. 7.5, то сетевой график будет иметь вид, приведенный на рис. 7.26. Все работы будут выполнены за 360 дней. Рис. 7.26. Сетевой график (прямой) выполнения работ
7.4. Обоснование бизнес-проекта 287 Таблица 7.6 Работа 1 2 3 4 5 6 7 | Итого Нормальный режим Продолжительность, дн. 50 90 30 25 75 50 40 360 Затраты, тыс. руб. 100 1000 500 70 330 100 300 2400 Ускоренный режим ] Продолжительность, дн. 43 78 29 22 71 44 45 332 Затраты, тыс. руб. ПО 1450 600 72 380 105 370 3087 | При внимательном рассмотрении графика (рис. 7.26), можно заметить, что некоторые работы можно выполнять параллельно. Например, пока изготавливается новое оборудование, можно начать демонтаж старого оборудования и т. д. Поэтому сетевой график выполнения работ можно преобразовать к виду, показанному на рис. 7.27. 3©—©—о Рис. 7.27. Сетевой график (улучшенный) выполнения работ Рассчитаем временные параметры и поместим результаты вычислений в табл. 7.7. Критический путь графика: 0-1,1-2, 2-5, 5-6, 6-7. Продолжительность выполнения работ по критическому пути составит 305 дней (50 + 90 + 75 + 40 + 50 = 305). Улучшенный сетевой график выполнения работ по сравнению с прямым сетевым графиком дал сокращение срока выполнения всех работ на 55 дней (360 - 305 = 55). Теперь определим, через какое время можно вернуть взятый кредит. Кредит можно вернуть после начала выпуска новой продукции и получения прибыли от ее реализации. В соответствии с улучшенным сетевым графиком выпуск продукции может начаться через 305 дней после начала работ. Начиная с этого срока, сколько должно пройти дней, чтобы вернуть взятую сумму кредита вместе с процентами по кредиту.
288 Глава 7. Сетевые методы планирования Таблица 7.7 Работа 0-1 1-2 1-3 1-4 2-5 3-5 4-5 5-6 | 6-7 жительность, дн. 50 90 30 25 75 75 75 40 50 Раннее начало 0 50 50 50 140 80 75 215 255 окончание 50 140 80 75 215 155 150 255 305 Позднее начало 0 50 110 115 140 140 140 215 255 окончание 50' 140' 140 140 215* 215 215 255* 305* Полный резерв времени Rn 0 0 60 65 0 60 65 0 0 Свобод-1 ный резерв времени г„ 0 0 60 65 0 60 65 0 о 1 Срок возврата кредита определим графическим способом. По оси Сбудем откладывать время в днях, а по оси Y— стоимость в руб. На начало всех работ (0 дн.) имеем долг 2400 тыс. рублей (первая точка первой прямой линии). Через год (360 дней) долг увеличится на 20% и составит 2400000-1,2 = 2 880000 руб. (вторая точка первой прямой линии). Первая прямая линия — линия долга. Через 305 дней после начала работ прибыль фирмы составит 0 рублей (первая точка второй прямой линии). Через 55 дн. после начала работ (на 360-й день) прибыль фирмы составит: 55-36- 2000 = 3960 тыс. руб. (вторая точка второй прямой линии). Вторая прямая линия — линия прибыли. Точка пересечения двух прямых линий (долга и прибыли) укажет дату возврата банковского кредита (рис. 7.28). Банковский кредит может быть возвращен через 339 дней. Расчет даты возврата банковского кредита можно выполнить аналитически. Запишем уравнение прямой прибыли в отрезках У-Уа = х-ха . У-О = х-0 Уъ-Уа хь~ха' 3960-0 360-305' 55>> = 3960х. Запишем уравнение долга в отрезках у-уа _ х-ха ш у-2400 _ х-0 Уь-Уа~хь-Ха' 2880-2400" 360-0' 360д>-864 000 = 480*.
7.4. Обоснование бизнес-проекта 289 2 750 2 500" 2 250" 2000" I 750" 1500" 1250" iooo" 750 " 500 " 250 " И1 Ж ш щ 320 330 340 Рис. 7.28. Определение срока погашения кредита Решая систему линейных уравнений относительно х, получим срок возврата кредита. 55>> = 3960х; 360j>-864000 = 480jc; 480* =360-3960*- 864000; 55 26 400 jc = 1425 600 * - 47 520 000; 1 399 200 х = 47 520 000; jc = 33,962. Таким образом, через 34 дня после начала выпуска продукции (или через 339 дней после начала работ по реконструкции) банковский кредит может быть возвращен [5]. Приведенный выше расчет выполнен при нормальном режиме работ. Перечисленные работы можно выполнить в ускоренном режиме и раньше ввести цех в эксплуатацию. Но за увеличение интенсивности работ необходимо дополнительно заплатить 687 тыс. руб. Что выгоднее: сократить срок работ и заплатить большую сумму денег или работы выполнять в нормальном режиме? Для ответа на этот вопрос надо рассчитать временные параметры сетевого графика для ускоренного режима (табл. 7.8).
190 Глава 7. Сетевые методы планирования Таблица 7.8 Работа | 0-1 1 1-2 1 1-3 1 1-4 2-5 3-5 4-5 5-6 6-7 жительность, ДН. 43 78 29 22 71 71 71 44 45 Раннее начало 0 43 43 43 121 72 65 192 236 окончание 43 121 72 65 192 143 136 236 281 Позднее начало 0 43 92 99 121 121 121 192 236 окончание 43* 12Г 121 121 192* 192 192 236* 281* Полный резерв времени 0 0 49 56 0 49 56 0 0 Свободный резерв времени г„ 0 | о 1 49 | 56 | 0 | 49 56 0 0 7.5. Примеры 1. Подключить по кратчайшему пути все 10 сельских населенных пунктов к телефонной станции. Числа указывают расстояние в километрах. 2. Определить кратчайший путь прокладки кабеля локальной сети для 16 абонентов. Расстояния между абонентами указаны в таблице.
7.5. Примеры 191 1 Отре- зок 0-7 1-3 1-2 1-5 \10-12 \12-15 Расстояние, км 4 6 8 11 4 9 Отрезок 2-4 i 2-6 3-7 4-8 10-13 13-16 Расстояние, км 7 4 5 6 6 6 Отрезок 5-6 5-7 5-11 6-10 111-12 \14-15 Расстояние, км 9 7 6 11 5 8 Отрезок 7-9 7-11 8-13 9-14 11-14 15-16 Расстоя- ние, км 8 9 12 7 11 10 | 3. Определить последовательность работ по строительству склада. Указать критический путь и возможные временные сдвиги начала и окончания отдельных работ и вывести их на экран. Данные приведены в таблице. Операции А Б В Г Д Е Ж 3 И К Л Описание Расчистка строительной площадки Выемка котлована под фундамент Укладка фундаментных блоков Прокладка наружных инженерных сетей Сооружение каркаса здания Кровельные работы Внутренние сантехнические работы Настилка полов Установка дверных и оконных рам Теплоизоляция перекрытий Прокладка электропроводной сети Непосредственно предшествующие операции — А Б Б В д Г,Е Ж д Е 3 Продолжи-1 тельность, ДН. 2 3 4 4 16 7 4 4 5 3 2 I
792 Глава 7. Сетевые методы планирования м н 0 1 п Штукатурка стен и потолков Внутренняя отделка Наружная отделка Благоустройство территории ИУКУЛ М Е Н,0 10 12 8 5 J 4. Составить сетевой график реконструкции цеха и определить дату возврата банковского кредита. • Подготовка технического задания на реконструкцию цеха — 38 дн. • Заказ и поставка нового оборудования — 110 дн. • Демонтаж старого оборудования — 17 дн. • Ремонт корпуса цеха — 12 дн. • Установка нового оборудования — 25 дн. • Наладка нового оборудования — 65 дн. • Переобучение персонала — 40 дн. • Проведение испытаний нового оборудования и сдача цеха в эксплуатацию — 6 дн. Расчетная производительность нового цеха — 62 изделия в смену. Прибыль от реализации 1 изделия составит 850 руб. Работы по переоборудованию цеха можно выполнять в нормальном и ускоренном режимах (см. таблицу). Для выполнения реконструкции необходимо взять банковский кредит на сумму 20 млн руб. под 24 % годовых. Определить: Возможно ли возвратить взятый кредит через 250 дней? Как наиболее целесообразно выполнять реконструкцию — по нормальному или ускоренному плану? Работа 1 2 3 4 5 6 7 8 [ Итого Нормальный режим Продолжительность, дн. 38 110 17 12 25 65 40 6 313 Затраты, тыс. руб. 100 13000 2500 350 2000 1500 400 150 20000 Ускоренный режим | Продолжительность, дн. 32 90 12 8 20 60 35 5 262 Затраты, руб. ПО 13 500 2750 400 2500 1750 450 200 21660
7.5. Примеры 193 5. Определить кратчайший путь перевозки груза из пункта 1 в пункт 23 (см. рисунок). Данные о расстояниях между пунктами приведены в таблице. 1 Пункты 1 2 3 4 5 б 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 8 3 5 4 3 5 1 6 9 7 8 8 3 9 3 10 11 11 1 12 9 11 13 13 7 14 6 75 4 10 16 12 8 17 14 2 18 13 7 79 11 5 20 6 8 7 27 10 22 9 23\ 12 6 _6J 13- 1962
294 Глава 7. Сетевые методы планирования Контрольные вопросы 1. Что такое работа? 2. Что такое событие? 3. Какие типы работ вы знаете? 4. Дайте определение исходному событию, завершающему событию. 5. Чем отличается критический путь от любого другого пути? 6. Укажите правило нумерации событий. 7. Что такое свободный резерв времени? 8. Что такое полный резерв времени? 9. Расскажите об оптимизации по сетевому графику. 10. Как и кем составляется план оптимизационных мероприятий?
Глава 8 Системы массового обслуживания 8.1. Марковский случайный процесс Построение математических моделей в условиях неопределенности — очень сложная или невыполнимая задача. Лишь для некоторых упрощенных случаев можно построить математическую модель. Следует различать два вида неопределенности: • вероятностные характеристики либо известны, либо могут быть получены в результате эксперимента. Такая неопределенность называется стохастической, и для большинства объектов, содержащих такую неопределенность, можно построить математическую модель, например выход из строя оборудования, приход нового клиента и т. д. • вероятностные характеристики определить невозможно. В этом случае задачу можно попытаться решить с помощью экспертных оценок, но результат будет весьма приблизительным, например, каковы будут модели женской одежды через пять лет? Строгую математическую модель с аналитическим вычислением всех интересующих величин можно построить только в том случае, если случайный процесс носит марковский характер. Случайный процесс будет марковским, если вероятностные характеристики процесса в момент времени / зависят только от текущего (настоящего) состояния процесса в этот момент времени / и не зависят от того, как (каким способом и когда) рассматриваемый процесс перешел в текущее состояние. Если за процессом проводилось наблюдение, известны все предыдущие состояния и известно текущее состояние, то для процесса можно указать вероятность наступления следующего состояния достаточно легко. Причем, если процесс марковский, то достаточно 13*
796 Глава 8. Системы массового обслуживания знать текущее состояние процесса, чтобы делать прогноз будущего состояния процесса, но очевидно, что текущее состояние процесса достигнуто благодаря ряду предшествующих событий. Большинство процессов, наблюдаемых в технике, экономике и других областях, можно свести к марковским процессам, если параметры, управляющие одновременно предшествующими событиями и одновременно влияющие на прогнозируемые события, включить в описание текущего события. Однако следует иметь в виду, что включение слишком большого количества параметров, описывающих состояние процесса (размерность задачи), может привести к тому, что математическое описание будет слишком громоздким и трудно поддаваться решению. Из всего многообразия марковских процессов хорошо изучены и представляют большой практический интерес марковские случайные процессы с дискретными состоя- ниями и непрерывным временем. Под дискретным состоянием будем понимать, что процесс переходит из одного состояния в другое скачкообразно за очень короткое время (практически мгновенно), и количество этих состояний известно (фиксировано). Под непрерывным временем будем понимать такое, при котором переход из одного допустимого состояния в другое допустимое состояние происходит в произвольные моменты времени, т. е. заранее не определенные. Потоки событий. Однородные события, следующие друг за другом в произвольные моменты времени (случайно), называются потоком событий (или входным потоком заявок). Примерами потоков событий могут быть: поток пассажиров в авиакассе, поток посетителей парикмахерской, поток отказов технического устройства и т.д. Здесь под событием понимается факт поступления заявок на обработку (приход покупателя, наличие отказа технического средства, поступление телефонного вызова и т.д.), а не результат его обработки (как это рассматривается в теории вероятностей). Поэтому в системах массового обслуживания вероятностными характеристиками будет обладать не отдельное событие, а интервал времени. Интенсивностью X потока событий называется среднее число событий за единицу времени. Интенсивность X может быть как числом постоянным (константой), так и величиной, зависящей от времени t. Например, количество пассажиров в городском транспорте в «часы пик» резко увеличивается по сравнению с другим временем суток.
8.2. Финальные вероятности состояний joy Все многообразие потоков можно разделить на два больших класса. 1. Регулярные потоки. События внутри потока следуют один за другим, через равные промежутки времени. 2. Стационарные (нерегулярные) потоки. События внутри потока следуют одно за другим хаотично (нерегулярно) и независимо друг от друга. Важно отметить одну особенность стационарного потока — интенсивность X есть величина постоянная. В разные моменты времени, но в равные интервалы времени AT попадает разное количество событий, но среднее количество событий для интервала времени AT остается постоянным. Большинство процессов, характерных для техники, транспорта, экономики и т. д. не стационарны, т. е. имеют ярко выраженные повторения группы событий. Но в отдельные ограниченные отрезки времени (например, внутри суток) эти процессы можно рассматривать как стационарные. Для каждого потока событий можно указать следующие характеристики: 1. Поток без последствия. Если для потока можно указать два непересекающихся интервала времени и внутри одного интервала времени появление событий не зависит от появления событий внутри другого интервала времени, то такой поток называется потоком без последствия. Примерами потоков без последствия могут быть: приход клиентов в банк (у каждого клиента могут быть собственные причины посещения банка), поступление звонков в справочную службу и т. д. 2. Ординарный поток. Если события внутри потока следуют одно за другим и запрещено наступление двух и более событий, то такой поток называется ординарным [2, 3]. 8.2. Финальные вероятности состояний Начиная с этого параграфа и далее будем рассматривать марковские процессы с дискретными состояниями и непрерывным временем. Пример 8.1 Техническое устройство состоит из трёх узлов и в любой момент времени может находиться в одном из восьми состояний (рис. 8.1).
J 98 Глава 8, Системы массового обслуживания Рис. 8.1. Состояния технического устройства Возможные состояния устройства таковы: So — все три узла исправны; S\ — первый узел неисправен, второй и третий исправны; 5г — второй узел неисправен, первый и третий исправны; 53 — третий узел неисправен, первый и второй исправны; 54 — первый и третий узлы неисправны, второй исправен; 55 — второй и третий узлы неисправны, первый исправен; 56 — первый и второй узлы неисправны, третий исправен; 57 — все три узла неисправны. Размеченным графом будем считать такой граф, у которого стрелками указаны переходы из одного состояния в другое, а рядом со стрелкой указана интенсивность перехода. Будем различать две интенсивности — прямую X и обратную ц. Тогда А.], А.2 и А.З — интенсивности потоков отказов соответственно первого, второго и третьего узлов, а |ib |i2 и цз — соответственно интенсивности потоков возвратов (ремонтов) узлов.
8.2. Финальные вероятности состояний 299 Если для ремонта каждого узла имеется отдельный специалист, то среднее время ремонта каждого узла есть величина постоянная и не имеет значения, один или несколько узлов вышли из строя. На основе построенного размеченного графа (см. рис. 8.1) создадим математическую модель. Наше техническое устройство в соответствии с построенным графом в любой момент времени будет находиться в одном из восьми возможных состояний. Обозначим вероятность каждого /-го состояния как/?,(/), тогда 1>(0=1. (8.1) 1=1 Для определения вероятности каждого состояния технического устройства составим соответствующие дифференциальные уравнения. Вероятность того, что техническое устройство будет находиться в состоянии S\ (первый узел неисправен, а второй и третий узлы исправны), обозначимp\{i). Дадим малое приращение по времени А/. За это малое время А/ техническое устройство либо остается в прежнем состоянии So, либо перейдет в состояние S\ из состояний S0, S4 или Se. Определим вероятность первого случая — устройство остается в состоянии S\. В момент времени / устройство было в состоянии Si с вероятностьюp\(t). За время At устройство не перейдет в любое из состояний So, S4 или St. Суммарный поток событий, который может вывести устройство из состояния Si, будет равен Х2 + Х3 + |ii. Каждый из этих потоков событий простейший, поэтому и суммарный поток также будет простейшим (все три свойства стационарности, ординарности и отсутствие последействия сохраняются). Вероятность того, что устройство выйдет из состояния Si будет равна р\ (/) (Х2 + А.3 + \i\) А/, а вероятность того, что останется в состоянии Si —p\(t) [1 - (Х2 + А.З + \i\) A/]. Теперь определим вероятность перехода устройства за время At в состояние Si из состояний S0, S4 или Se'. для54—p4(t)Ai\i3'9 для56—p6(t) Д/|д2; для S0—po(t)AtX\. Таким образом, вероятность нахождения устройства в состоянии Si будет равна: /?,(/ + А0=/?1(0[1-(Ц1+>-2 + ^з)А/]+М0^А^+М0ЦзА/+/?б(0Ц2А/.
200 Глава 8. Системы массового обслуживания Выполним преобразования: pi (t + Д/) =/>, (/) -рх (0 (ц, + Х2 + Х3) Д/ +po(t) h Д/ +р4(0 Из А/ +АО) Иг АС р,(/ + Д/)-/?,(0=/?о(0>-1^+А(0ЦзА^+Рб(0Ц2А/-(Ц1 + Х.2 + Хз)р1(0АП А/ Устремив Д/ к нулю, получим: Ф,(0 Л = А-1 А>(0 +ИзА»(0 + И2 А-С) " (И. + *2 + *з)А (0 (8.2) или -&— = \р0 +iijp4 + ц2р6 - (и, + Х2 + Х3)рх. at Выполнив аналогичные действия, получим семь дифференциальных уравнений: dP (О —— = Vo + ИзА + И2А -0*i + *-2 + *<з)а; ^» (О -fiL— = X2jp0 + ц3 А + ц, />б - (ц2 + X, + Х3 )р2; d„ (О -^— = А-зА + ИгА +^>^ "(Из +*■! +*-2>А; -&-— = Ххрг + Х3рх + ц2р7 - (ц, + ц3 + Ъг)р*\ at dv (О ——=Hi a+*-2А+*з а -(^-1+ и2+и3)а; (8.3) </ (О -Ь— = \р2 + Х2рх + ц3 А - (ц, + ц2 + Хъ)р6; dt dt <ft = *iA + KP* + hPb "(Hi + Иг + Из)/7?; = Hi A + Иг A + Из A - (*■!.+ *ъ + h)Po- Эта система дифференциальных уравнений называется системой уравнений Колмогорова. Имеем систему из восьми линейных дифференциальных уравнений с восемью неизвестными. Известно, что сумма всех вероятностей равна единице, т. е. Р0+Р\+Р2+РЗ+Р4+Р5+Р6+Р1=1- (8.4) Таким образом, любое из уравнений, входящее в систему уравнений (8.3), можно заменить уравнением (8.4), и найти значения вероятностей для каждого события.
8.2. Финальные вероятности состояний 201 Для облегчения процесса составления дифференциальных уравнений можно применить следующее правило: В левой части каждого уравнения следует записать производную вероятности i-го состояния устройства. В правой части сумма произведений потока событий, входящих в текущее состояние, умноженная на вероятность состояния, из которого исходит поток, минус суммарная интенсивность исходящих потоков событий из текущего состояния, ум- \ ноженная на вероятность текущего состояния. J Когда определены вероятности событий, то встаёт вопрос: «Что будет с техническим устройством в установившемся режиме?» В каком состоянии (режиме) будет находиться техническое устройство по прошествии большого периода времени, т. е. при t -» оо. Если существуют пределы вероятностей /?,-(/) состояний устройства и они не зависят от текущего состояния устройства, то эти пределы называются финальными вероятностями состояний. Если число состояний некоторого устройства равно п (конечное число состояний) и из каждого состояния можно перейти в другое состояние, то финальные вероятности существуют. Это положение доказывается в теории случайных процессов. Если финальные вероятности существуют: lim/?,(/) = Pi при i= 1,2,3,...,«, (8.5) то их сумма будет равна единице: 1>,=1- (8-6) 1=1 Финальные вероятности показывают, какое среднее время устройство будет находиться в каждом состоянии. Финальные вероятности находятся из системы дифференциальных уравнений, если их правые части приравнять нулю. Зададим численные значения интенсивности потоков событий для примера 8.1: Xi=l; Х2 = 2; Хз=1; Ц1=2; ц2 = 4; ц3 = 2. Приравняем левые части уравнений системы (8.3) нулю и заменим одно из уравнений (седьмое) выражением (8.4)
202 Глава 8. Системы массового обслуживания \0 = Ххр0 + \13р4+ц2р6-(ц1+Х2 + \3)р1; \0 = \2p0 + iiip5 + \ilp6-(\i2+Xi + X3)p2; \0 = \3po+n2ps + iilp4-(\ii+\l+\2)p3; l0 = V3 + ^i+^2P7-(h+^3+^2)A; \0 = ц1р7+Х2р3+\3р2 -(A., + ц2 + \i3)p5; \0 = \p2 + \2pl+iiip!-(nl+ii2+Xi)p6; 0 = ц,/>, +ц2р2 + цзРз -(\+Х2 +X3)p0; [Pl+Pl+Pl+Pt+Ps+Pe+Pl+Po^- Второй (отрицательный) член каждого выражения перенесем в левую часть |р,(ц, +\2+х.3)=я.,/70+цз/'4+^2a; /?2(ц2 + X, + Х3) = Х2р0 + ц3р5 + ц,/?б; /?з(ц3 + X, + Х2) = Х3/?о + V-iPs + h А? IРМ + Из + ^г) = *iA + ^зЛ + V-iPi> 1 Л(^1 + ^2 + Из) = V-\Pi + *2Л + ^з А5 ЛО1! + ^2 + h) = *i A + ЬгР\ + Из А; U,(X, + Х2 + Х3) = ц,/>, + ц2/>2 + ЦзЛ; [р1=1-Ро ~Р\ -Рг -р3 ~Ра - А ~ А- Подставим конкретные значения (указанные выше) прямых и обратных интенсивностей (Pl(2 + 2 + l) = lp0 + 2p4+4p6; \p2{4 + \ + \) = 2p0 + 2ps + 2p6; Л(2 + 1 + 2) = 1/>0+4Л+2а; 1Л(2 + 2 + 2) = 1Л+1/>,+4р7; Ь5(1 + 2 + 4) = 2/>7 + 2Л + 1а; Л(2 + 4 + 1) = 1Л+2Л+2Л; Л(1 + 2 + 1) = 2Л+4Л + 2Л; [/77 = 1-/70 -/?, -/?2 -/73 -/?4 ~Ръ ~Рб- После выполнения арифметических действий получим: {5р1=р0 + 2р4 + 4р6; \6р2=2р0 + 2р5+2р6; 5а=А + 4А + 2А; \бр4=р3+р1+4р1; )7р5=2р7+2р3 + р2; \1Рб=Р2+2Р\+2РУ> \4р0 = 2р1+4р2 + 2р3; [Рт-^-Ро ~Р\ ~Рг ~Ръ ~Ра ~ А ~ А-
8.2. Финальные вероятности состояний 203 12 4 Из первого уравнения выразим pi=—p0+—p4+—p6 и подставим его в остальные уравнения: \бр2 = 2р0 + 2р5 + 2р6; \5Р}=Р0+4Р5 + 2Р4> 28 .14 —Ра = Ръ + *Pi + у Po + уР4; \7Р5 = Р2+2РЗ + 2Р7'> {21 2 4 —Р« = уРо + jPa + Л + 2Р?; И» 4 8 — Ро = J Ра + уРб + 4Рг + 2Рз; ,6 7 9 IР7 = * ~jPo ~Р* ~Л ~ JP* ~ Р> ~^Рб' Аналогично выражаем р2=—р0+—Р5+—Рб и подставляем в оставшиеся уравнения и получаем: [5р3 = р0 + 4р5 + 2р4; 28 „14 —Ра = Pi + *Pi + у Po +yP6; —Ps = уРо + уРб + 2р3 + 2р7; J 79 11 4 1 hj-л = уу Po+jPa + у л + 2р?; 124 4 4 44 hyPo = 2Р3 + у Ра + у Ps + уу А! ,23 7 4 32 Г7 =1~JJpo~p>~'jP*~'jPs~l^'P('- 14 2 Выражаем pJ =—p0 +—ps +—p4 и подставляем в оставшиеся уравнения и получаем: 26 2 4 . 4 —Р4=уРо+уРб + 4р7 + уР5; 76 11 1 ^4 j^-Ps = jyPo + уРб + 2р7 +уР4; 79 11 4 1 -у-Рб=ууРо+уР4+уР5 + 2Р7; 20 8 44 44 ТР. = уР4+ТуР5 + ТуР«; ,26 9 32 32 Р7=1-ТуРо-уР4-ТуР5-ТуР*.
204 Глава 8. Системы массового обслуживания Из первого уравнения выразим Ра =-LPo + j-p, +^Ръ +J$Pi и подставим в оставшиеся уравнения. После выполнения преобразований получим: 964 31 89 18 _ 310 178 828 Рб " 5087 Ро + 5087 Ps + 5087 Р?' 155 155 60 -11_21 _21 _*1 Л-п „/'о 93^5 ад Л' Из первого уравнения выразим р5= р0 + р6 + р7 и подставим в оставшиеся уравнения _ 54 405 141042 Рб~814 671 Ро + 814 671 Р?' _ 54 405 33 230 /,°~94 497 Л + 94 497 Р7' 6266 42 471 49 491 Рт ~ 19 172 57 516 Ро 57 516 Рб' Из первого уравнения/?б подставим в оставшиеся уравнения: 17 372453 670 Ро "зтохгозотз^7' р7= 0,2845 -0,6927 р0. Из первого уравнения ро подставим в оставшееся уравнение р7 = 0,2845+0,6927 0,4697р7; р7 = 0'2845 =0,2146. Определим остальные вероятности, подставляя полученные результаты в обратном порядке ро = 0,4694 • 0,2146 = 0,1007; р6 = 0,06678 • 0,1007 + 0,1731 • 0,2146 = 0,04387; р5 = 0,1608 • 0,1007 + 0,09232 • 0,04387 + 0,2801 • 0,2146 = 0,08035; р4 = 0,07692 • 0,1007 + 0,1538 • 0,08035 + 0,1538 • 0,04387 + + 0,7692 0,2146 = 0,08035; р3 = 0,2 • 0,1007 + 0,8 • 0,08035 + 0,4 • 0,1853 = 0,1585; рг = 0,3333 • 0,1007 + 0,3333 • 0,08035 + 0,3333 • 0,04387 = 0,07498;
8.3. Системы массового обслуживания 205 рх = 0,2 • 0,1007 + 0,4 - 0,1853 + 0,8 • 0,04387 = 0,1294. Выполним проверку. Сумма вероятностей всех событий должна быть равна единице. РО +Р\ +Р2 +РЗ +Р4 +Р5 +Рб +Р7 = 1. 0,1294 + 0,07498 + 0,1585 + 0,1853 + 0,08035 + 0,04387 + 0,1007 + + 0,2146 = 0,9877 Полученный результат меньше единицы, так как значение каждой вероятности было округлено. 8.3. Системы массового обслуживания С системами массового обслуживания (СМО) приходится сталкиваться очень часто. Это и работа телефонной станции, и различные очереди (на автозаправке, в поликлинике, в билетной кассе и т.д.), работа некоторых организаций (магазины, мастерские, парикмахерские и т. д.). Каждая СМО имеет как минимум три элемента: обслуживающий инструмент (станок, касса, канал связи и т. д.), который в дальнейшем будем называть каналом обслуживания или просто каналом; входной поток, т. е. поток заявок, поступающих на обслуживание; выходной поток, т. е. заявки, выполненные СМО (обеспеченные услугой). Каждая поступившая заявка и принятая на обслуживание внутри СМО обрабатывается некоторое время, называемое временем обслуживания — /об. Все заявки поступают случайным образом и независимо друг от друга. Будем рассматривать простейший случай: в каждый момент времени может поступить только одна заявка. Случаи поступления двух и более заявок в один и тот же момент времени не рассматриваются. Таким образом, в некоторые моменты времени поступившие заявки будут скапливаться на входе СМО и ожидать своей обработки либо покидать СМО необслуженными. В другие моменты времени СМО может простаивать, т. е. не иметь заявок на обслуживание. График работы СМО представляет собой ступенчатую функцию, т. е. состояние СМО изменяется скачкообразно. При моделировании работы СМО ставится задача связать технические характеристики СМО, такие, как количество каналов, производительность каждого канала, характер входного потока и т.д., с показателями работы СМО (различные средние величины — среднее время обслуживания одной заявки, среднее время ожидания
206 Глава 8. Системы массового обслуживания обслуживания, среднее количество заявок, обслуживаемых за единицу времени и т.д.). Системы массового обслуживания можно классифицировать по разным признакам, например по способу обработки входного потока заявок, (рис. 8.2). Системы массового обслуживания > г с отказами | (без очереди) | V с очередью > , т т 1 Неограниченная 1 1 очередь || Ограниченная очередь ▼ ▼ по длине очереди по времени обслуживания С приоритетами >г > Абсолютный приоритет \ X Относительный при- оритет В порядке | поступления Рис. 8.2. Классификация систем массового обслуживания По способу функционирования СМО могут быть: • открытыми, т. е. поток заявок не зависит от внутреннего состояния СМО; • закрытыми, т. е. входной поток зависит от состояния СМО (один ремонтный рабочий обслуживает все каналы по мере их выхода из строя) [3]. 8.4. Схема гибели и размножения Большинство реальных процессов, протекающих в технике, экономике, транспорте и т. д., можно описать с помощью размеченного графа специального вида (рис 8.3).
8.4. Схеме гибели и размножения 207 S, ^23 ^34 ^ш-1,п d=Et s. ^32 *-43 *п, п-1 Рис. 8.3. Размеченный граф процесса Особенностью графа, представленного на рис. 8.3, является то, что каждое состояние, кроме первого и последнего, связано только с предыдущим и последующим состояниями. Вычислим финальные вероятности событий. Составим систему линейных уравнений: - для события S\ hiP\= ^2i Pi- (8.7) - ДЛЯ СОбыТИЯ 4^2 (Х.23 + ^2\)Pl = ^\2Р\ + ^32 Рз- Выполнив преобразование, получим ^23 Р2 = ^32 РЪ \ аналогично для события S3 Х.34 Рз= ^4з Ра и т. д. Для события Sn К-\,пРп-\ = Кп-\ Рп- Таким образом, получим систему линейных уравнений: ^12^1 ~^2\Р2> Кр2=Ь*Ръ. (88) \-\,пРп-\ =К,п-\Рп- Используя нормированное условие />1+Л+/>з+...+Л=1, (8-9) из первого уравнения выразим р2 через р\ Рг^Рх. (8.10) К2\ Из второго уравнения, выполнив подстановку, выразимр3 черезр\\ Р3=^-Рг=^-Рг. (8.11) Л.32 Л-21 ^32 Из третьего уравнения, выполнив подстановку, выразим/?4 через/71: А=^з=ЬфзЪ£А (812) Л.43 ^-21 ^32 ^43 и т. д. К^..х1гх2^ (8лз)
208 Глава 8. Системы массового обслуживания В числителе формулы (8.13) стоит произведение интенсивностей потоков событий с увеличивающимся номером событий (прямой проход, т.е. слева направо), а в знаменателе произведение интенсивностей потоков событий с уменьшающимся номером событий (обратный проход, т. е. справа налево). После выполнения действий (8.10) — (8.12) оказалось, что все интенсивности событий отр2 Дор„ выражены через оцнур\. Теперь, используя выражение (8.9), преобразуем формулу (8.13) к виду: ( Р\ 1+^2 Х2Х I ^12 ^23 | ^12 ^23 ^34 . Х21 Х32 К2\ А.32 А.43 или ХХ2 Х23, ..X л-1,л ^п,п-\ '"^32^21 J = 1 Л = 1 + Ь. х. j ^12 ^23 j ^12 ^23 ^34 | ХХ2 Х23. л-1, п Х2Х Х32 Х2Х Х32 Х43 ..Я.32 ^21 (8.14) *-21 /ч,21 /ч,32 /v,21 /v,32 'МЗ ,у*п,п-\ ' Остальные вероятности можно вычислить, используя выражение (8.14), в соответствии с формулами (8.10) — (8.13), подставляя в каждую из них необходимое количество членов ряда в знаменателе дроби. Пример 8.2 Определить финальные вероятности событий для технического устройства с помощью формул гибели и размножения. 0^==Et=^OIt=1 5 4 5 Рис. 8.4. Размеченный граф процесса £3= А> = Определим финальную вероятность события So по формуле (8.14). 1 If01 ■ 01 12 ■ 01 12^23 ■ ^01^12^23^34 , ^01^12^23^34^45 Л.,0 А.10Л2, А.|оА.2|А.з2 А.щ А.71 А,^? А,, 1 , 1 1-2 1-2-1 1-21-2 1-2-1-2-1 1+—+—+ + + 4 4-5 4-5-4 4-5-4-5 4-5-4-5-4 10л21л32л43 ^10^21^32^43^54 = 0,7207. По формуле (8.10) определим финальную вероятность события Si
8.5. Моделирование систем массового обслуживания 209 Л^А =4-0,7207 = 0,1802. Л.10 4 Используя формулы (8.11) — (8.13), определим остальные финальные вероятности событий А -Т^Л ~ ■ 0.7207 = 0,07207; A.10A.2i 4-5 = Х"Х»Х»р0 =^Т.0,7207 = 0,01802; Я.10Я.21Я.32 4-5-4 л = ЬД2ЬДи.л = 1±1±. 0,7207=0,007207; Л.10 A.2i A.32 А.43 4-5-4-5 ^^01^12^23^34^45^ =12±2J_.0,7207=0,001802. ^10^21^32^43^54 4-5-4-5-4 Выполним проверку. Сумма вероятностей всех событий должна быть равна единице Р\ +Р2 +РЗ +Р4 +Р5 +Р6 +Р7 +Р0 = 1; 0,7207 + 0,1802 + 0,07207 + 0,01802 + 0,007207 + 0,001802 = 0,999999. 8.5. Моделирование систем массового обслуживания На любую СМО (одноканальная, многоканальная, марковская, не марковская, с очередью, без очереди) воздействуют два потока событий: входной поток и выходной поток. В установившемся (стационарном) режиме среднее число входящих событий за единицу времени равно среднему числу выходящих событий (обслуженных) и оба потока имеют одну и ту же интенсивность X =—. Обозначим через X(t) количество вошедших событий за время Г, а через Y(t) — количество обслуженных (вышедших) событий. В момент времени t\ и и обслуживается одно событие (заявка). В момент времени t2 обслуживаются два события (заявки). В момент времени /3 заявок нет, и каналы обслуживания простаивают. Обе функции X(t) и Y(t) имеют ступенчатый характер. Очевидно, что Z{t) = X{t) - Y(t) есть не что иное, как количество событий (заявок), которые обслуживаются в СМО в момент времени /. Графически функция Z{t) на рис. 8.5 представлена заштрихованной областью и ограничена с двух сторон функциями X{i) и Y(t). 14- 1962
210 Глава 8. Системы массового обслуживания 10 9 8 7 6 5 4 3 2 1 1 1\\\\\\\ 1 fffff^TiriH 111 ^^^1 1 HI 11111111111 II ill 111 111 I I Г ■ ■■ ::.::: -**> ■i ■ i t '/ h h U T Рис. 8.5. Хронология работы системы массового обслуживания Если t -> оо, то среднее число входящих в СМО событий можно определить: Lm„=Uz{t)dt. (8.15) т Геометрическая интерпретация интеграла — есть пло- 0 щадь заштрихованной фигуры (рис. 8.5). Но сама фигура состоит из совокупности прямоугольников. Каждый прямоугольник имеет единичную высоту (обслуживается одно событие) и длину, равную времени обслуживания события (время пребывания события внутри СМО). Таким образом: т \z(f)A = Yji- (816> О ' Равенство (8.16) справедливо при достаточно большом значении Т и последним прямоугольником (или прямоугольниками) можно пренебречь, т.е. в интеграл включены все события, обслуженные СМО, за время Т. Разделим левую и правую части выражения (8.16) на Г т =_L V/ =-* • ^СИСТ rp / jj rp »
8.5. Моделирование систем массового обслуживания 211 и теперь правую часть разделим и умножим на X ^сист - ТХ ^ где ТХ — это среднее время пребывания события внутри системы, т. е. среднее время обслуживания события. ^"сист "*■ Л. 7 обе ИЛИ Гобс^сист- (8-17) Выражение (8.17) называется формулой Литтла. Для любой СМО среднее время обслуживания события (заявки) равно среднему числу событий в СМО, делённому на интенсивность входного потока событий. Формулу Литтла можно вывести и для времени ожидания обслуживания событием Гож^ож, (8-18) где Ьож— среднее число событий в очереди на обслуживание (средняя длина очереди). 8.5.1. Одноканальная СМО с неограниченной очередью СМО такого вида распространены достаточно широко. Это и очередь на прием к врачу, и очередь на проезд по мосту при движении с одной полосой, и очередь на вход в автобус при наличии устройства автоматизированного контроля проезда пассажиров и т.д. Такие СМО можно представить с помощью размеченного графа, представленного на рис. 8.6. Рис. 8.6. Одноканальная СМО с неограниченной очередью Под неограниченной очередью будем понимать количество заявок, поступивших на обслуживание, не ограничено и время обслу- 14*
212 Глава 8. Системы массового обслуживания живания каждой заявки произвольное, но все заявки рано или поздно будут обслужены. В этом случае нет смысла говорить об абсолютной пропускной способности (А = X) и об относительной пропускной способности (g=l). Каждая вновь поступившая заявка будет переводить СМО в новое состояние S с увеличением индекса на 1, т. е. слева направо. А каждая обслуженная заявка будет уменьшать индекс состояния S на 1, т.е. перемещение по графу справа налево. Так как в каждый момент времени обслуживается только одна заявка (одноканальная СМО), то все интенсивности поступления заявок равны X и все интенсивности обслуживания заявок равны ц. В специальной литературе доказывается, что при неограниченном числе состояний СМО финальные вероятности отсутствуют. Для данного случая финальные вероятности существуют с учетом наложенных ограничений: все заявки рано или поздно будут обслужены и выполняется условие: р=-<1. (8.19) Используя формулы (8.10) — (8.13) и (8.14), определим финальные вероятности событий. Л=——ГТГ-ГТ5 7-^Г— = 2 ! .,-. - (8.20) + ... l+p+p2+p3+...+pw+... Учитывая, что l+p+p2+p3 + ...+pw + ...= , получаем зна- 1-р чение финальной вероятности события S0: /7о=1-р. (8.21) Финальные вероятности последующих событий будут определены как: Р\ - PPol Рг = р2ро\ Ръ - pVoi • • - Рт = ртРо\ • • • (8.22) Вычислим среднее число заявок в СМО. Так как количество заявок может принимать значения 0, 1, 2, 3, ... , т, ... , то можно записать: 00 W /и=1 Далее, раскрыв значение рт и выполнив дифференцирование, получим:
8.5. Моделирование систем массового обслуживания 213 ^сис^т2-. (8.23) 1-р Применив формулу (8.17), определим время обслуживания заявки: 7сист х Ц1-Р)' с ; Определим среднюю длину очереди (среднее число заявок, ожидающих обслуживания). Так как рассматриваемая нами СМО одно- канальная, то обслуживаться может только одна заявка, а остальные заявки ждут своей очереди. Вероятность такого события (занятости одного канала) будет равна Рзан = 1 ~Ро = Р- Так как СМО обслуживает только одну заявку, то Lo6ai= р. Длина очереди есть разница между общим числом заявок и заявками, находящимися в обслуживании, тогда: ^о,=4„сх-Р=7£—Р = т^-- (8-25) 1-р 1-р Средне время пребывания заявки в очереди можно определить 2 Т„=— • (8.26) 04 Ц1-р) Все характеристики одноканальной СМО определены. Пример 8.3 На оптовую базу поступают на разгрузку три автомобиля в час (X = 3). Среднее время разгрузки (Гобс) одного автомобиля — 10 мин. Определить характеристики одноканальной СМО с неограниченной очередью. Решение Определим интенсивность обслуживания автомобилей 1 1 =1=2=1 По формуле (8.23) определим среднее число обслуживаемых автомобилей: 1-р 1-0,5
214 Глава 8. Системы массового обслуживания По формуле (8.24) определим среднее время (час) обслуживания автомобиля: Т — сист — сист X 3' По формуле (8.25) определим длину очереди (среднее количество автомобилей ожидающих разгрузки): L04 = LCHCT - р = 1 - 0,5 = 0,5. По формуле (8.26) определим среднее время ожидания в очереди автомобиля: 04 Ц1-р) 3(1-0,5) 1,5 8.5.2. Одноканальная СМО с ограниченной очередью Отличие данной СМО от предыдущей состоит в том, что после поступления п-й заявки всем остальным заявкам будет отказано в обслуживании и они покинут систему. Размеченный граф для одно- канальной СМО с ограниченной очередью показан на рис. 8.7. X ^==d^l==J^1;: Рис. 8.7. Одноканальная СМО с ограниченной очередью Вычисление характеристик СМО выполняется по формулам (8.20) — (8.26), но учитывается конечное количество членной геометрической прогрессии. 8.5.3. Многоканальная СМО с ограниченной очередью Примерами многоканальных СМО могут быть: морской порт, имеющий несколько стенок для обработки судов; овощная база, имеющая несколько площадок для обработки товаров и т.д. Для вычисления характеристик СМО воспользуемся теми же приемами, которые были рассмотрены в одноканальной СМО с неограниченной очередью.
8.5. Моделирование систем массового обслуживания 215 Определим численные значения следующих характеристик: Р0 — вероятности простоя каналов обслуживания; Л>тк — вероятности отказа в обслуживании; Л>бс — вероятности обслуживания; щ — среднего числа каналов, занятых обслуживанием; Аз — доли каналов, занятых обслуживанием; А — абсолютная пропускная способность (среднее количество заявок, обслуженных за единицу времени); Q — относительная пропускная способность (среднее значение обслуженных заявок). Размеченный граф такой СМО представлен на рис. 8.8. !Tfcz=JTl, T^H::i:i:J^i"/j:i"/j:tl^ И 2ц Зц т\х (т + \)ц пР Рис. 8.8. Многоканальная СМО с ограниченной очередью Данная СМО имеет «каналов с одинаковыми техническими характеристиками и может находиться в одном из состояний: So — заявки отсутствуют; S\ — поступила одна заявка и она обслуживается первым каналом, остальные каналы простаивают; 5г — во время выполнения первой заявки поступила вторая заявка. Вторая заявка обслуживается вторым каналом. Остальные каналы простаивают; 5з — во время выполнения двух заявок поступила третья заявка. Третья заявка обслуживается третьим каналом. Остальные каналы простаивают и т. д.; Sn — во время выполнения п - 1 заявок поступила заявка п, которая обслуживается w-м каналом. Все каналы заняты. Последующим заявкам будет отказано в обслуживании, если ко времени поступления очередной заявки не освободится ни один канал. Заявки на обслуживание поступают произвольно с интенсивностью X. При поступлении второй заявки ее обрабатывает второй канал, и интенсивность обслуживания заявок СМО удваивается и равна 2ц. При поступлении третьей заявки в работу включается третий канал и интенсивность обслуживания заявок становится равной Зц
216 Глава 8. Системы массового обслуживания и т.д. Максимально возможная интенсивность обработки заявок СМО будет равна п ц. Используя формулу (8.20), учитывая, что используется п каналов и выполняя необходимые преобразования, получаем: Финальная вероятность события So: 1 А>=- t X X X X ц ц 2! цЗ! ц п\ или, заменяя XI ц на р, получаем: А> = 1 Л2 ~3 ~» ' 1+p+£L+£_+...+P_ 2! 3! п\ Финальные вероятности последующих событий: 2 3 п Л=РЛи Pi=—Po> Рз=—Ро> ••• Р*=—Poll 3! п\ Вероятность отказа в обслуживании: п ^отк=Рл = 7Ро- Относительная пропускная способность: п\ Абсолютная пропускная способность: A=XQ=X \l~Po Среднее число занятых каналов: U I п\ (8.27) (8.28) (8.29) (8.30) (8.31) (8.32) (8.33) Пример 8.4 На автозаправочной станции имеется четыре колонки по отпуску моторного топлива. Каждые три минуты прибывает автомобиль на заправку (Я. = 3). Среднее время обслуживания одного автомобиля (Гобс) равно 1 мин. Определить финальные вероятности состояний СМО (pi), вероятность отказа в обслуживании (Pan), относи-
8.5. Моделирование систем массового обслуживания 217 тельную пропускную способность (0, абсолютную пропускную способность (А) и среднее число занятых каналов (к3). Решение Определим интенсивность обслуживания заявок ц: ц=—=-=1 и р=-=-=3. ^обс ! И 1 По формуле (8.28) определим финальную вероятность для события S0: 1 24 ЛЛ^ *»", , 9 27 81 а555аа061- 1+3+-+—+— 2 6 24 По формулам (8.29) определим остальные финальные вероятности: Р\ = РРо = 3-0,061 = 0,1832; />2=^j-/>o=f-0,061=0,2745; /73 = 4,5-0,061=0,2745; /74 = 3,375-0,061=0,2059. Определим вероятность отказа в обслуживании по формуле (8.30): />ОТх=Р4 = 0,2059. Определим относительную пропускную способность по формуле (8.31): Q = 1 - Роле = 1 - 0,2059 = 0,7941. Определим относительную пропускную способность по формуле (8.32): A = XQ = 3 0,7941 =2,3823. Определим среднее число занятых каналов по формуле (8.33): *,=i=y^2,3823. и 1 8.5.4. Многоканальная СМО с неограниченной очередью Задача формулируется аналогично предьщущей задаче. Размеченный граф представлен на рис. 8.9. СМО имеет п каналов с одинаковыми техническими характеристиками и может находиться в одном из состояний: So — заявки отсутствуют;
218 Глава 8. Системы массового обслуживания X X X X X X X X X Q£=Q]^i^GQ;::::::|^^^ ц 2ц Зц тр (т + 1)ц яц п\и п\и п\и п\и Рис. 8.8. Многоканальная СМО с неограниченной очередью S\ — поступила одна заявка, и она обслуживается первым каналом, остальные каналы простаивают; и — во время выполнения первой заявки поступила вторая заявка. Вторая заявка обслуживается вторым каналом. Остальные каналы простаивают; 5з — во время выполнения двух заявок поступила третья заявка. Третья заявка обслуживается третьим каналом. Остальные каналы простаивают и т. д.; S„ — во время выполнения п - 1 заявок поступила заявка п, которая обслуживается w-м каналом. Все каналы заняты; S„+\ — вновь поступившая заявка встает в очередь и ожидает обслуживания. Все последующие заявки также встают в очередь. Для СМО такого типа финальные вероятности состояний могут существовать только при выполнении условия — < 1. Вычислим п значения финальных вероятностей состояний: 1 . ^0" г, г,2 ^ ^П Л"+1 ' Р^Р . Р . . Р . Р l + ii + J^ + i^ + ... + !i- + 1! 2! 3! " п\ п\(п-р) _Pn+1 _Pn+* Рп+\~ . Ро> ••-> Рп+к - к .А)»"" Без доказательства приведем формулы для расчета характеристик СМО [3]. Среднее число занятых каналов: *3=-=р. (8.35) Ц Среднее число заявок в очереди (длина очереди):
8.6. Примеры 219 А>ч = _ Р Ро пп\\\^ Среднее число обслуживаемых заявок: ^сист ~~ ^оч "■ Р* Среднее время обслуживания заявки: у = ^сист сист Л Среднее время ожидания обслуживания: Т — °ч оч х' (8.36) (8.37) (8.38) (8.39) 8.6. Примеры 1. Найти финальные вероятности. 2. Составить систему дифференциальных уравнений Колмогорова.
220 Глава 8. Системы массового обслуживания аввввва=_ae^BBBBS_^SSBBBBaaBB^s^aaBBaBSSBass^BaBBBBBB^BBBaBCES=;:;BSB8Ssas 3. Определить финальные вероятности с помощью формул схемы гибели и размножения. Ш*| о I Ч с I *| о I < I ' И I 2 К I 3 I 4. Торговая фирма «Восток» желает построить складское помещение. Грузооборот склада Q составляет 75 000 т. Период поступления материалов Тп — 365 сут. Средний вес груза в одной партии q — 23 т, средний срок хранения на складе Гхр — 10 сут. Средняя загрузка на 1 м2 площади склада Рк — 0,8 т/м2. Определить полезную складскую площадь, обеспечивающую пропуск данного грузооборота с вероятностью 0,95. 5. В морской порт поступает в среднем 11 сухогрузов в сутки. В порту имеется пять кранов. Каждый кран обслуживает одно судно в среднем за 12 ч. Все краны работают круглосуточно. Определить характеристики работы морского порта как объекта системы массового обслуживания и сделать рекомендации по улучшению работы порта. 6. Определить необходимое количество операторов по приему заказов с вероятностью обслуживания 0,95. Телефонные звонки поступают с интенсивностью 85 звонков в час. Время обслуживания одного звонка в среднем 2 мин. Телефонная аппаратура обеспечивает ожидание трех абонентов. 7. Магазин получает ранние овощи из пригородных теплиц. Автомобили прибывают в разное время с интенсивностью 7 машин в час. Подсобные помещения и оборудование по предпродажной подготовке позволяют обрабатывать и хранить товар, привезенный двумя автомобилями. В магазине работают 3 фасовщика (и = 3), каждый из которых может обработать товар с одной машины за 4 ч. Продолжительность рабочего дня при сменной работе — 12 ч. Определить емкость подсобных помещений, чтобы вероятность полной обработки товара была не ниже 0,95. 8. Овощная база в течение года реализует 65 000 т овощной продукции. Средняя загрузка одного автомобиля — 1,5 т. Производительность одного погрузочно-разгрузочного места — три автомобиля в час. Овощная база работает 320 дней в году по 12 ч в сутки. Убыток от простоя автомобиля перед загрузкой составляет 100000 руб. в год, а простой одного погрузочного места — 180000 руб. в год. Каждый автомобиль работает в среднем по 2000 ч в год. Определить оптимальное число погрузочных мест.
8.6. Примеры 221 Контрольные вопросы 1. Что такое стохастическая неопределенность? 2. Объясните понятие потока? 3. Дайте определение регулярному потоку, стационарному потоку? 4. Чем отличается поток с последействием от потока без последействия? 5. Что такое ординарный поток? 6. Какова суть уравнений Колмогорова? 7. Укажите состав системы массового обслуживания. 8. Дайте определение времени обслуживания. 9. Что такое каналы обслуживания? Приведите примеры. 10. Назовите варианты систем массового обслуживания с очередью. 11. Объясните понятие закрытая система массового обслуживания и открытая система массового обслуживания.
Глава 9 Игровые модели 9.1. Основные понятия В гл. 8 были рассмотрены модели, построенные на основе статистических законов. Результатом исследования этих моделей было определение вероятности наступления того или иного события и, как следствие, выполнения расчета характеристик системы массового обслуживания. В игровых моделях статистические данные либо вообще отсутствуют, либо носят весьма приблизительный характер. В очень редких (исключительных) случаях для игровых моделей можно определить количественную оценку или указать оптимальное решение. Поэтому построение игровых моделей носит, как правило, эвристический характер с большой долей волюнтаризма. В игровых моделях не ставится задача найти какое-то числовое решение, а требуется лишь или очертить область возможных решений, или предоставить некоторые дополнительные сведения о возможном развитии событий и рекомендовать правила поведения. Различают два больших класса игровых моделей: модели без противодействия (или их еще называют «играми с природой») и модели с противодействием (действия конкурентов на рынке). Игры с противодействием часто называют конфликтными ситуациями, которые широко распространены в обществе. Например, конкурентная борьба в экономике, в спортивных соревнованиях, состязание сторон в ходе судебного заседания и т.д. Игровая модель, в отличие от конфликтной ситуации, строится по определенным законам, а игроки придерживаются определенных правил. Конфликтная же ситуация, строго говоря, развивается спонтанно. Участниками игры (конфликтной ситуации) могут быть минимум два человека (парная игра) или несколько человек (множественная игра). Игра развивается по оговоренным правилам. Игроки по очереди делают свои ходы. Естественно, перед каждым ходом игрок может или сохранить предыдущую стратегию или применить
9.2. Игры с противодействием и нулевой суммой 223 новую стратегию. Если игрок при выборе очередного хода придерживается каких-либо правил, то такая игра носит название стратегической. Однако игрок во время игры может менять вариант своего поведения (но не правил), т. е. сменить стратегию. Если игра содержит ограниченное количество стратегий, то такая игра называется конечной. В противном случае — бесконечной. Стратегия, приносящая игроку максимальный выигрыш, называется оптимальной. Наиболее полно разработан математический аппарат игр с нулевой суммой, когда выигрыш одного игрока равен проигрышу другого игрока, т.е. общая сумма выигрыша всех игроков равна нулю. При построении игровых моделей предполагается, что каждый из игроков будет выбирать только лучшую (для себя) стратегию. Результатом исследования игровой модели является определение наиболее осторожной стратегии поведения игрока либо обеспечение гарантированного выигрыша (как правило, минимального), либо сведение к минимуму проигрыша. Риски при получении большего выигрыша не учитываются и не оцениваются. Таким образом, результат исследования игровых моделей указывает на оптимальную стратегию поведения (гарантированный выигрыш), а какой стратегией воспользуется игрок в реальной жизни — дело самого игрока [3, 7, 9]. 9.2. Игры с противодействием и нулевой суммой Предположим, что имеются две конкурирующие фирмы, выпускающие однотипные товары. Для обеспечения наибольшей прибыли обе фирмы разработали стратегии реализации товаров. В общем случае это можно записать в виде матрицы (табл. 9.1). Таблица 9.1 Таблица стратегий I Стратегии | В\ \ В2 | ... | Вп \ Л\ 0ц а]2 ... аХп I Аг I аг\ \ ац \ •• I ain \ | Am | ат\ | А/п2 I »" | атп \ Пусть фирма А разработала четыре стратегии, а фирма В — пять стратегий.
224 Глава 9. Игровые модели То есть фирма А — а\\ аг\ а^\ а* —> я,, где /=1,/и. Фирма В соответственно — b\\ bj, b3; Ы -> bj, где j=l,n. Каждая фирма от реализации своей стратегии предполагает получить какой-то доход (табл. 9.2). Таблица 9.2 Пример стратегий двух игроков | Стратегии Ах Аг Аг А, *| 5 1 2 3 Вг 8 10 4 5 Вг 7 5 3 4 в. 5 5 6 4 Вь 4 6 2 3 Если фирма А выберет первую стратегию, то минимальный доход составит 4. Минимальный доход от второй стратегии — 1; от третьей — 2; от четвертой — 3. У фирмы В имеется в наличии пять стратегий. Использование первой стратегии обернется убытком в 1 единицу; второй (убыток) — 4; третьей — 3, четвертой — 4 и пятой — 2. На первый взгляд фирма А должна избрать вторую стратегию (Аг), чтобы получить выигрыш 10, но в ответ вторая фирма изберет первую стратегию (В\) и выигрыш фирмы А составит только 1. Поэтому в теории игр придерживаются осторожных стратегий, которые можно сформулировать так: получить максимальный доход из возмоэ/сных минимальных. Введем в табл. 9.2 дополнительную строку и дополнительный столбец, в которых укажем возможные минимальные прибыли и максимальные убытки (табл. 9.3). Таблица 9.3 Минимальные прибыли и максимальные убытки Стратегии Ах А2 Аг А, Максимальный [ убыток фирмы В Вх 5 1 2 3 5 Вг 8 10 4 5 10 Вг 7 5 3 4 7 в. 5 5 6 4 6 Вь 4 6 2 3 6 Минимальная прибыль фирмы А 4 1 2 3
_; 9.2. Игры с противодействием и нулевой суммой 225 Исходя из данных табл. 9.2 фирме А надо придерживаться стратегии Ль а фирме В — стратегии В\. Таким образом, гарантированный минимальный доход фирмы А составит 4, а минимально возможный доход, который отдаст фирма 5, составит 5 (минимально возможный проигрыш). Минимальный гарантированный вышрыш называется нижней ценой игры. При плохой игре фирмы В выигрыш может быть и большим. Минимально возможный проигрыш называется верхней ценой игры. Для нашего примера нижняя граница игры составляет 4 (минимальный гарантированный выигрыш фирмы А\ а верхняя граница игры — 5 (минимально возможный проигрыш фирмы В). Приведенные выше рассуждения хороши, если конкурирующая фирма заранее не знает, как себя поведет противник. Если конкурирующая фирма ознакомлена с планами конкурента, то она может выбрать другую стратегию (отличную от осторожной стратегии) и получить больший выигрыш (доход). Таким образом, приведенные осторожные стратегии являются неустойчивыми по отношению к дополнительной информации. На практике иногда случается, что нижняя цена игры равна верхней цене игры. В этом случае говорят об устойчивых стратегиях игроков (конкурирующих фирм) или о задачах с седловой точкой. Задача с седловой точкой представлена в табл. 9.4. Таблица 9.4 Задача с седловой точкой Стратегии Ах Аг Аз А, Минимальный | убыток фирмы В я. 4 1 2 3 4 в2 8 10 4 5 10 Вг 7 5 3 4 7 в. 5 5 6 4 6 Вь 4 6 2 3 6 Минимальная прибыль фирмы А \ 4 1 2 3 Стратегии обоих противников в задачах с седловой точкой называются оптимальными и не зависят от дополнительно полученной информации. В специальной литературе доказано, что если при исследовании игровой модели известна вся предыстория (все ранее сделанные ходы), то существуют оптимальные (чистые) стратегии поведения игроков (конкурентов). 15- 1962
226 Глава 9. Игровые модели Если игровая задача не имеет седловой точки, то на практике конкурирующие фирмы (игроки) используют смешанные стратегии, т. е. попеременно используют две или более стратегий. В этом случае использование фирмой А нескольких стратегий можно записать как сумму вероятностей использования каждой стратегии & =р\ +р2 + ... +рп- Соответственно, использование нескольких стратегий фирмой В можно записать как Sb = q\ + qi + ... + qm- Поэтому в общем случае исследование игровой модели сводится к определению вероятностей использования конкретных стратегий каждой фирмой (игроком). 9.3. Графический метод решения игровых задач с нулевой суммой Суть графического метода состоит в том, что из матрицы удаляют дублирующие и поглощаемые строки и столбцы. Дублирующими называют полностью одинаковые строки или столбцы. Доминирующей строкой называется такая строка, которая содержит элементы, большие или равные соответствующим элементам другой строки, называемой поглощаемой. Доминирующим столбцом называется такой, который содержит элементы, меньшие или равные соответствующим элементам другого столбца, который называется поглощаемым. Воспользуемся табл. 9.2. Строка (стратегия) А\ является доминирующей по отношения к строке (стратегии) А*, так как содержит элементы, большие соответствующих элементов строки А^ Соответственно строка А* является поглощаемой и из дальнейшего рассмотрения удаляется (табл. 9.5). Таблица 9.5 Первый шаг упрощения таблицы | Стратегии Ах А2 Аъ В\ 5 1 2 Вг 8 10 4 В3 7 5 3 в* 5 5 6 в$ 4 6 2 1 Первый столбец является доминирующим по отношению ко второму, третьему и четвертому столбцам (поглощаемым). Поступаем аналогично (табл. 9.6). Еще раз просматриваем строки. Первая строка поглощает третью строку.
9.3. Графический метод решения игровых задач с нулевой суммой 227 Таблица 9.6 Второй шаг упрощения таблицы | Стратегии А} Аг Аъ Я. 5 1 2 Вь 4 6 2 | Поглощаемые строки (столбцы) содержат самые плохие стратегии. Окончательно получим (табл. 9.7). Таблица 9.7 Третий шаг упрощения таблицы | Стратегии Ах . Аг В\ 5 1 Вь 4 6 Вероятность использования первой фирмой первой стратегии обозначим через jci. Тогда вероятность использования второй стратегии первым игроком будете = 1 — jci. Ожидаемый выигрыш фирмы А от применения первой стратегии составит: Я11*1 +021*2 = Я11*1 +tf2l0 ~*l) = 011*1 +Я21-Я21*1 =(ДЦ- 02l)*l +Я21- (9.1) Аналогичным способом получим ожидаемый выигрыш фирмы А от применения второй стратегии: (Я12-Я22)*1+Я22. (9.2) В выражения (9.1) и (9.2) подставим конкретные значения. (tfii-tf2i)*i+tf2i = (5-l)*i + 1 =4*i + 1; (tfl2 - Д22)*1 + ^22 = (4 - 6)JC] + 6 = -2*1 + 6. На оси х отложим две точки 0 и 1. Через эти точки проведем прямые линии, параллельные оси у. Затем в первое выражение подставим 0 вместо jci, а потом — единицу. И по двум точкам построим прямую линию. Рис. 9.1. Графический способ определения стратегии фирмы А 15*
228 Глава 9. Паровые модели Аналогично построим вторую прямую линию. Пересечение двух прямых линий и даст решение задачи (рис. 9.1). Итак, вероятность использования первой стратегии фирмой А составляет 0,83 {х\ = 0,83), а второй стратегии — соответственно 0,17 (jc2 = 0,17). Аналогично определим оптимальную стратегию поведения фирмы В fa 1 - ап)у\ + ян = (5 - 4)>>, + 4 = ух + 4; (tf2i - о22)у\ + 022 = (1 - 6)^i + 6 = -5ух + 6. 1 0 У\\ 1 1 5 l4^ 4 6 Рис. 9.2. Графический способ определения стратегии фирмы В Вероятность использования первой стратегии фирмой В составляет 0,33 (у\ = 0,33), а второй стратегии — соответственно 0,67 (у5 = 0,67) [5,9]. 9.4. Общий метод решения игровых задач с нулевой суммой Рассмотрим общий случай, когда игровая модель не имеет сед- ловой точки. Тогда эту модель можно представить в виде матрицы (табл. 9.8). Таблица 9.8 Общая таблица стратегий 1 Стратегии Ах Лг ... 1 Am в. Я|| 021 От\ в2 ап а-22 <*ml 1 • • • вп 0\п din ... Qmn 1 Надо найти смешанную стратегию фирмы А (первого игрока) — Sa =p\ +р2 + ... +р„ и смешанную стратегию фирмы В (второго игрока) — Sb = q\ + qi + ... + qm- Выполним некоторые математические преобразования. Если первая фирма будет строго применять опти-
9.4. Общий метод решения игровых задач с нулевой суммой 229 мальную стратегию (или комплекс стратегий), то фирма В не сможет изменить ход игры без дополнительного ущерба для себя. Тогда можно записать: *пА+*12А+*1зА + --- + *ыА.^с>; ai\P\ + аггРг + *23 А + • • • + а2тРт * <*'> *31 А + °32 А + *33 А + • • • + аЪтРт * «Ч (93) К А + *n2p2 + «изА + • • • + *™Ал ^ ©. где со — гарантированный минимальный выигрыш. Все неравенства в выражении (9.3) разделим на со, и введем обозначения: Получим: _ Р\. Y _ А . v _ А . -г- , *2 - , Х3 - , ... Хт - (О СО СО ах ххх + а12х2 + д13х3 +...+tflm*m > 1; *21*1 + *22*2 + *23*3 + ' • • + а2т*т * Ь аъхХх + Я32*2 + *33*3 + • • • + аЪт*т * U <*Я\Х\ + ^„2*2 + * лЗ*3 + • • • + апт*т * 1> 1 СО (9.4) где*,>0и хх+х2+х3+...+хт = — при i=l,m. со Но со — это минимальный гарантированный выигрыш, поэтому его надо максимизировать. Следованно, I „ало мнюшизиро- СО вать. Таким образом, задача свелась к задаче линейного программирования с целевой функцией F(x) = х\ + х2 +jc3 + ... +хт -> min (9.5) и системой линейных ограничений (9.4). Данную задачу можно решить симплексным методом. Прямая задача на минимум решается для фирмы А. Двойственная задача для фирмы В решается на максимум. 9.5. Игры с природой (без противодействия) В играх с противодействием фирме А (одному игроку) противостоит другая фирма — В (игрок). Фирма В выбирает целенаправленную стратегию поведения с тем, чтобы уменьшить выигрыш фирмы А (следовательно, и свой проигрыш).
230 Глава 9. Игровые модели В играх с природой вторым игроком является природа, которая действует («выбирает» стратегии) случайным образом. То есть она может или улучшать положение первого игрока, или ухудшать. Поэтому существует несколько критериев оценки результатов исследования игровой модели. 1 * Критерий Вальде (пессимистический). В соответствии с этим критерием следует применять самую осторожную стратегию, которая сведет к минимуму вероятность (риск) проигрыша и доставит минимальную прибыль. Эта стратегия обеспечивается критерием: max min ay. (9.6) То есть этот критерий совпадает с нижней ценой игры. 2. Критерий максимума (оптимистический). Этот критерий полагает, что природа будет максимально благосклонна к игроку. Можно выбирать самые авантюристические стратегии и они будут реализовываться max max ay. (9.7) 3. Критерий Гурвица. Критерий Гурвица занимает промежуточное значение между критерием Вальде и критерием максимума. Сам игрок определяет вероятность своего «везения» max (a min ay + (1 - а) max ay). (9.8) Ответственное лицо, принимающее решение, определяет значение коэффициента а. Если потери могут быть весьма значительными, то значение коэффициента а приближается к единице. 4. Критерий Сэвиджа. Этот критерий анализирует возможные риски от применения каждой из стратегий и выбирает такую стратегию, которая обеспечивает приемлемые потери. Риски по каждой стратегии определяются по формуле: гу = такад-ау. (9.9) То есть из максимально возможного выигрыша вычитается выигрыш, полученный от использования выбранной стратегии. Смысл каждого элемента матрицы рисков состоит в том, что какие потери понесет фирма (точнее, недополученная прибыль), если для каждого текущего состояния природы будет выбрана неоптимальная стратегия. Оптимальная стратегия может быть определена по формуле: min (max (max ay - ay)). (9.10) Для примера возьмем таблицу стратегий (табл. 9.9) и составим для нее таблицу рисков (табл. 9.10).
9.5. Игры с природой (без противодействия) 231 Если фирма (игрок) выберет стратегию А\, а природа реализует стратегию В\, то фирма получит максимально возможную прибыль 5 (недополученная прибыль составит 0). Фирма угадала состояние природы. Но если природа реализует стратегию 54, то фирма вместо максимально возможной прибыли 12 получит прибыль 5, а недополученная прибыль составит 7 [5, 9]. Таблица 9.9 Таблица стратегий | Стратегии Ах Аг А3 А, 5, 5 1 2 3 5 Вг 8 10 4 5 10 Вг 7 5 3 4 7 В* 5 5 6 12 12 вП 4 6 2 3 6 | Таблица 9.10 Таблица рисков | Стратегии Al Аг Аг \ А, Я. 0 4 3 2 В2 2 0 6 5 Вг 0 2 4 3 В, 7 7 6 0 я5 2 0 4 3 | Пример 9.1 Швейная фабрика на летний сезон может реализовать два вида костюмов: для жаркой погоды (первый вид) — 1200 костюмов по цене 520 руб. и 200 костюмов для холодной погоды по цене 1000 руб., если погода будет жаркой. Если погода будет холодной, то фабрика может реализовать 650 костюмов первого вида и 700 костюмов второго вида. Определить план выпуска костюмов каждого вида и прибыль, полученную от их реализации. Решение Швейная фабрика располагает двумя стратегиями: А\ — погода будет жаркой и Аг — погода будет холодной.
232 Глава 9. Паровые модели Если фабрика воспользуется первой стратегией и погода действительно будет жаркой, то прибыль фабрики составит: 1200 - 520 + 200 -1000 = 624 000 + 200 000 = 824 000 руб. Если фабрика воспользуется первой стратегией, но погода будет холодной, то прибыль фабрики составит: 650 • 520 + 200 - 1000 - (1200 - 650) 520 = 338 000 + 200000 - -286 000 = = 252 000 руб. Если фабрика воспользуется второй стратегией и погода действительно будет холодной, то прибыль фабрики составит: 650 - 520 + 700 -1000 = 338 000 + 700 000 = 1 038 000 руб. Если фабрика воспользуется второй стратегией, но погода будет жаркой, то прибыль фабрики составит: 650 • 520 + 200 • 1000 - (700 - 200) • 1000 = 338000 + 200000 - -500000 = 38 000 руб. Составим математическую модель (табл. 9.11). Таблица 9.11 Условие расчета | Стратегии А\ \ м. я. 824000 38000 в2 ~] 252000 1038000 а = max (252 000; 38 000) = 252 000 руб. р = min (824 000; 1 038 000) = 824 000 руб. Таким образом, цена игры находится в диапазоне от 252 000 руб. до 824000 руб. Минимальный гарантированный доход швейной фабрики составит 252 000 руб., но возможен и доход в 824 000 руб. Определим план выпуска изделий швейной фабрикой. Вероятность выбора стратегии А\ обозначим через х\, а вероятность выбора стратегии А2 — через х2. Учитывая, что х2 = 1 -*ь можем записать: (а\\ - ai\)x\ + а2\ = (824000 - 38 000)*i + 38 000 = = 786 000*! + 38000; (я 12 - tf22)*i + 022 = (252 000 - 1 038 ООО)*! + 1 038 000 = = -786 000*! + 1038 000; х\ = 0,64; х2 = 0,36; 0,64(1200; 200) + 0,36(650; 700) = (1002; 380).
9.6. Примеры 233 Цена игры составит: со = 786 000хх + 38 000 = 541 040 руб. Таким образом, план выпуска изделий таков: 1002 костюма первого вида и 380 костюмов второго вида, и при любых погодных условиях швейная фабрика получит прибыль не менее 541 040 руб. Определим критерии. 1. Критерий Вальде: max (min ay) = max (38 000; 252 000) = 252 000 руб. Швейной фабрике целесообразно использовать стратегию А\. 2. Критерий максимума: max (max а0) = max (824 000; 1 038 000) = 1 038 000 руб. Швейной фабрике целесообразно использовать стратегию А^ 3. Критерий Гурвица: пусть а = 0,4, тогда для стратегии А\ a min ay + (1 - a) max ai} = 0,4 • 252 000 + (1 - 0,4) 824 000 = = 595 200 руб. для стратегии Аг aminaiy + (l-a)maxaiy = 0,4-38 000 + (l-0,4)1038000 = = 638 000 руб. Швейной фабрике целесообразно использовать стратегию Л2. 4. Критерий Сэвиджа: Максимальный элемент в первом столбце — 824 000, во втором столбце—1038000. Матрица рисков будет иметь вид: ( 0 786000^1 1,786000 0 / Швейной фабрике целесообразно использовать стратегию А\ или Л2. 9.6. Примеры 1. Определите оптимальные стратегии и цену игры 4 5 2 7 13] 2 4 3 5 3 8 А = \2 9 7 4 2 4 6 4 2 5 13 5 5 4 8 4 5 2. Определите оптимальные стратегии и цену игры
234 Глава 9. Паровые модели А = 2 3 7 4 6 5 4 5 4 8 9 2 3 5 4| 61 7 5 2 3 8 3. Фирма производит пользующиеся спросом детские платья и костюмы, реализация которых зависит от состояния погоды. Затраты фирмы на единицу продукции составили: платье — 9 ед., костюм — 32 ед. Цена реализации 22 и 48 ед. соответственно. По многолетним данным продаж фирма может реализовать в условиях теплой погоды 2200 платьев и 950 костюмов, а при прохладной погоде — 870 платьев и 1800 костюмов. Определить стратегию фирмы с учетом погодных условий, обеспечивающую ей максимальный доход от реализации продукции. Степень оптимизма — 0,6 . 4. Торговая фирма разработала несколько планов продаж письменных столов и стоек TV на предстоящей ярмарке с учетом изменяющейся конъюнктуры рынка и спроса покупателей. Показатели дохода представлены в таблице. Определить оптимальный план продаж. Планы | продаж 1 2 3 4 5 [ 6 Величина дохода, тыс. руб. | Д1 850 600 460 320 240 75 Д2 500 900 300 150 370 820 дз 200 400 600 80 350 510 Д4 1 50 550 380 270 190 440 | Контрольные вопросы 1. Чем отличаются игровые задачи от задач систем массового обслуживания? 2. Дайте характеристику игровым моделям с противодействием, без противодействия? 3. Раскройте понятие конечной и бесконечной игры. 4. Какая стратегия называется оптимальной? 5. Укажите суть игровых моделей с противодействием и нулевой суммой. 6. Раскройте понятие седловой точки.
9.6. Примеры 235 вававВфВфВВВаааявавза№СЕПВа9В^в:=!Еа-звжвхажввв|Ш!ЗВШВаяввпва 7. Что называется нижней ценой игры, верхней ценой игры? 8. Какие стратегии называются устойчивыми, неустойчивыми? 9. Укажите суть смешанных стратегий. 10. Раскройте понятие доминирующей строки, доминирующего столбца. 11. Раскройте суть критерия Вальде. 12. Расскажите об особенностях критерия максимума, 13. Какова суть критерия Гурвица? 14. Каковы преимущества и недостатки критерия Сэвиджа?
Литература 1. Аттеков А. В., Галкин С. В., Зарубин В. С. Методы оптимизации: Учеб. для вузов / Под ред. В. С. Зарубина, А. П. Крищенко. — 2-е изд., стериотип. — М.: Изд-во МГТУ им. Н.Э. Баумана, 2003. 2. Бережная Е. В., Бережной 5. И, Математические методы моделирования экономических систем: Учеб. пособие. — М.: Финансы и статистика, 2003. 3. Вентцель Е. С. Исследование операций: задачи, принципы, методология. — 2-е изд., стериотип. — М.: Наука, 1988. 4. Ганшин Г С. Методы оптимизации и решение уравнений. — М.: Наука, 1987. 5. Красе М. С, Чупрынов Б. П. Основы математики и ее приложения в экономическом образовании: Учебник. — 2-е изд., испр. — М.: Дело, 2003. 6. Ларионов А. К, Новоселов А. Л., Юрченко Т. И. Экономико-математические методы в планировании: Учеб. для сред. спец. заведений. — 2-е изд., перераб. и доп. — М.: Высш. шк., 1991. 7. Пинегина М. В. Математические методы и модели в экономике: Учеб. пособие для студентов вузов экономических специальностей. — М.: Издательство «Экзамен», 2004. 8. Химмелъблау Д. Прикладное нелинейное программирование. — М.: Мир, 1975. 9. Шикин Е. В., Чхартишвили А. Г Математические методы и модели в управлении: Учеб. пособие. — 3-е изд. — М.: Дело, 2004. 10. Теория графов. Методические указания по подготовке к контрольным работам по дисциплине «Дискретная математика» / Сост.: Н. И. Жит- никова, Г. И. Федорова, А.К. Галимов. — Уфа: Уфимск. гос. авиац. техн. ун-т, 2005. 11. Грызина Н. Ю„ Мастяева И. Н„ Семенихина О. Н„ Тимашков П. С. Математические методы исследования операций: Учебное пособие, руководство по изучению дисциплины, практикум по дисциплине. — М.:МЭСИ,2005. 12. Липатов Е. П. Теория графов и её применения. — М.: Знание, 1986. 13. Оре О. Теория графов. — М.: Наука, 1982.
Оглавление Предисловие 3 Глава 1. Понятие модели 5 Глава 2. Линейное программирование . 17 2.1. Основные понятия и определения 17 2.2. Графический метод 19 2.3. Математический аппарат задач линейного программирования 21 2.4. Симплексный метод 24 2.5. Общий случай 33 2.6. Решение двойственных (обратных) задач 35 2.6.1. Решение симметричных двойственных задач 36 2.6.2. Решение несимметричных двойственных задач 38 2.7. Альтернативное оптимальное решение 45 2.8. Графическая интерпретация симплексного метода 47 Глава 3. Транспортная задача 52 3.1. Общие понятия и определения 52 3.2. Математическая формулировка транспортной задачи 55 3.3. Построение опорного плана перевозок 57 3.3.1. Метод «северо-западного угла» 57 3.3.2. Метод минимальных элементов 58 3.3.3. Метод добротностей 61 3.4. Создание оптимального плана перевозок 65 3.4.1. Распределительный метод 65 3.4.2. Метод потенциалов 69 3.4.3. Дельта-метод 74 3.5. Задачи, сводящиеся к транспортной задаче 78 Глава 4. Целочисленное программирование 83 4.1. Общие положения 83 4.2. Метод Гомори 85 4.3. Метод Баллаша 89 4.4. Метод Фора - Мальгранжа 92 4.5. Метод «ветвей и границ» 96
238 Оглавление Глава 5. Динамическое программирование 102 5.1. Основные понятия и определения 102 5.2. Нахождение кратчайшего пути 103 5.3. Распределение ресурсов 110 Глава 6. Нелинейное программирование 119 6.1. Основные понятия и определения 119 6.2. Методы прямого поиска 125 6.2.1. Метод покоординатного спуска 125 6.2.2. Метод Хука - Дживса 128 6.2.3. Метод Розенброка 131 6.2.4. Метод Пауэлла 133 6.2.5. Метод регулярного многогранника 135 6.2.6. Метод деформируемого многогранника 139 6.2.7. Метод скользящего допуска 143 6.3. Градиентные методы 151 6.3.1. Метод градиентного спуска 152 Глава 7. Сетевые методы планирования 157 7.1. Основные понятия и определения 157 7.2. Расчет временных параметров 163 7.3. Нахождение кратчайшего пути 170 7.3.1. Прямой симметричный алгоритм 170 7.3.2. Задача коммивояжера 172 7.3.3. Прямой алгоритм 173 7.3.4. Алгоритм Дейкстры 176 7.3.5. Алгоритм Литтла 180 7.4. Обоснование бизнес-проекта 185 Глава 8. Системы массового обслуживания 195 8.1. Марковский случайный процесс 195 8.2. Финальные вероятности состояний 197 8.3. Системы массового обслуживания 205 8.4. Схема гибели и размножения 206 8.5. Моделирование систем массового обслуживания 209 8.5.1. Одноканальная СМО с неограниченной очередью 211 8.5.2. Одноканальная СМО с ограниченной очередью 214 8.5.3. Многоканальная СМО с ограниченной очередью 214 8.5.4. Многоканальная СМО с неограниченной очередью 217 Глава 9. Игровые модели 222 9.1. Основные понятия 222 9.2. Игры с противодействием и нулевой суммой 223
Оглавление 239 9.3. Графический метод решения игровых задач с нулевой суммой 226 9.4. Общий метод решения игровых задач с нулевой суммой 228 9.5. Игры с природой (без противодействия) 229 Литература 236
Агальцов Виктор Петрович МАТЕМАТИЧЕСКИЕ МЕТОДЫ в программировании Учебник Редактор А. В. Волковицкая Корректор А. В. Ачёшина Компьютерная верстка С. Ч. Соколовского Оформление серии Т. В. Иванишной Подписано в печать 26.06.2014. Формат 60x90/16. Бумага офсетная. Печать офсетная. Усл. печ. л. 15. Уч.-изд. л. 15,5. Гарнитура «Тайме». Тираж 2000 экз. Заказ № 1962 Издательский Дом «ФОРУМ» 101990, Москва-Центр, Колпачный пер., 9а Тел./факс: (495) 625-39-27 E-mail: forum-books@mail.ru По вопросам приобретения книг обращайтесь: Отдел продаж «ИНФРА-М» 127282, Москва, ул. Полярная, д. 31в Тел.:(495)363-42-60 Факс:(495)363-92-12 E-mail: books@infra-m.ru Отпечатано с готовых диапозитивов в ОАО ордена «Знак Почета» «Смоленская областная типография им. В.И. Смирнова». 214000, г. Смоленск, проспект им. Ю. Гагарина, 2.