Вы находитесь на странице: 1из 241

В.П.

Агальцов
образование

методы
в программировании
Профессиональное

т
В. П. Агальцов

МАТЕМАТИЧЕСКИЕ МЕТОДЫ
в программировании
Издание 2-е, переработанное и дополненное

Р ек о м ен д о ва н о М и н и ст ерст вом об р а зо ва н и я
Р о с с и й с к о й Ф е д е р а ц и и в к а ч е с т в е у ч е б н и к а для
с т у д е н т о в у ч р е ж д е н и й с р е д н е г о п р о ф е с с и о н а 1 ъ н о го
о б р а зо в а н и я , о б у ч а ю щ и х с я п о гр у п п е с п е ц и а ч ь н о с т е й
« И н ф о р м а т и к а и в ы ч и с л и т ел ь н а я т ех н и к а »

Э лектронно- Соответствует
Федеральному государственному
образовательному стандарту
3-го поколения
znanium .com

Москва
ИД «ФОРУМ»
2015
УД К 51-7(075.32)
ЬЬК 22.18я723
А23

Рецензенты:

заведующий кафедрой «Математическая экономика» Московского


института электроники и математики (технический университет)
доктор физико-математических наук, профессор В. М. Четвериков;
кандидат технических наук, доцент кафедры «Информатика»
Российского государственного социального университета
О. Н. Рубсиъская

Агальцов В. П.
А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
Горячо любимой
Галине Серафимовне
посвящаю

Предисловие
Проблема выполнения различных вычислений была актуальна во
все времена. По мере развития общественно-экономических отноше­
ний усложнялись поставленные задачи, которые для своего решения
требовали разработки новых методов вычислений. На смену простей­
шим арифметическим и геометрическим вычислениям пришли алгеб­
раические и тригонометрические вычисления.
Организация современного производства требует не только наличия
современных станков и оборудования, но и разработки новых техноло­
гических процессов и современных методов управления производством.
Для решения каждой из поставленных задач разрабатываются матема­
тические модели, анализируя которые удается найти наилучшее реше­
ние поставленной задачи. Создание математической модели — сложная
и кропотливая работа, которая в современных условиях под силу кол­
лективам разработчиков. Для создания математической модели одного
и того же объекта различные коллективы могут использовать различ­
ный математический аппарат. В коллектив разработчиков математиче­
ских моделей привлекаются высококвалифицированные специалисты,
которые, с одной стороны, хорошо знают физические процессы, проте­
кающие при работе объекта, и, с другой стороны, глубоко и всесторон­
не владеют соответствующим математическим аппаратом. После созда­
ния математической модели специалистами-аналитиками за дело при­
нимаются специалисты-программисты, которые реализуют созданную
модель в виде программных кодов. Далее с математической моделью
работают специалисты-практики. Целенаправленно воздействуя на мо­
дель, они изучают ее поведение и подбирают оптимальный режим рабо­
ты для реального объекта.
Целью настоящего учебника является: научить студентов от сло­
весного описания задачи перейти к абстрактной математической моде­
ли, реализовать математическую модель в виде программных кодов,
провести исследование математической модели и получить вектор
входных воздействий, доставляющий оптимальное решение. Конечно
же, речь идет о простых математических моделях, позволяющих ре­
шить элементарные задачи.
Учебник содержит девять глав, в которых рассмотрены следующие
вопросы.
В первой главе раскрыты основные принципы построения математи­
ческих моделей, дана их классификация, введены основные определения.
4 Предисловие

Вторая глава посвящена задаче линейного программирования и


основному методу решения таких задач — симплексному методу. По­
казана последовательность решения задачи линейного программирования.
В третьей главе рассматривается транспортная задача, т. е. нахо­
ждение оптимального плана перевозок грузов от производителей к
потребителям. Рассмотрены три метода нахождения опорного плана
перевозок и три метода нахождения оптимального плана перевозок.
В четвертой главе даны методы целочисленного решения задачи ли­
нейного программирования. Простое округление результата, полученного
симплексным методом, не приводит к приемлемому решению, и специ­
альные целочисленные методы позволяют найти оптимальное целочис­
ленное решение. В главе рассмотрены четыре метода.
Пятая глава раскрывает принципы динамического программиро­
вания, позволяющие решить проблему нахождения оптимального
(кратчайшего) пути при сооружении различных хозяйственных объектов.
В шестой главе рассмотрены методы решения нелинейных задач.
Некоторые практические задачи невозможно описать линейными урав­
нениями и необходимо использовать трудоемкие методы нелинейного
программирования. В главе рассмотрены три метода.
Седьмая глава посвящена сетевому планированию производства и
распределения ресурсов. Излагаются вопросы, связанные с составлени­
ем сетевого графика выполнения работ, нахождения критического пути
и определения временных ресурсов.
В восьмой главе рассматриваются вопросы, связанные с функ­
ционированием систем массового обслуживания, определением ха­
рактеристик этих систем и финальных вероятностей состояний сис­
темы.
Девятая глава посвящена исследованию игровых моделей и поис­
ку стратегий поведения в условиях полной или частичной неопреде­
ленности. Результаты исследования модели носят рекомендательный
характер, позволяют ориентироваться в сложившейся ситуации и при­
нять правильное решение.
Учебник написан в полном соответствии с требованиями Государст­
венного образовательного стандарта по специальностям 230105 и
230103 к минимуму знаний и практических умений. Объем учебника
соответствует количеству часов аудиторных занятий по дисциплине
«Математические методы».
Автор будет благодарен читателям, которые пожелают прислать
свои замечания и уточнения к тексту учебника по адресу редакции: forum-
books@mail.ru.
Глава 1
Понятие модели
в в ^ а в а а в а в в в в в в Ё

1.1. Классификация моделей


По мере развития науки и техники перед человеком все чаще
встает проблема: «Как найти правильное решение?». Для облегче­
ния решения этой задачи реальные процессы (или объекты) заме­
няются их аналогами или моделями. Затем производится анализ по­
ведения модели в тех или иных условиях с помощью персонального
компьютера. В этом случае говорят о компьютерном моделирова­
нии. Но персональный компьютер может работать только с матема­
тическими моделями, которые с помощью языков программирова­
ния переводятся в набор машинных кодов, которые и обрабатывает
персональный компьютер. Какое же место занимают математиче­
ские модели и как они получаются?
Современные технические и экономические системы (объекты
или процессы) имеют устойчивую тенденцию усложнения в своем
развитии. Очень часто нельзя поставить эксперимент на реальной
системе (объекте или процессе) по многим причинам: громоздкость
систем и, как следствие, невозможно правильно управлять многими
параметрами, длительность по времени прохождения процессов в
реальной системе, слишком большая цена ошибки при неправиль­
ном управлении системой и т. д.
Для изучения сложных систем различных видов, с цепью опти­
мального управления ими необходимо создать их модели. На этих мо­
делях изучается поведение реальных систем (объектов или процессов),
влияние различных внешних воздействий на работу системы, изучение
закономерностей их функционирования и развития.
Построение математической модели процесса, явления или объ­
екта начинается с построения упрощенного варианта модели, в ко­
тором учитываются только основные черты. В результате просле­
6 Гпава 1. Понятие модели

живаются основные связи между входными параметрами, ограни-


чениями и показателем эффективности. Общего подхода к построе­
нию модели нет. В каждом конкретном случае при построении ма­
тематической модели учитывается большое количество факторов:
цель построения модели, круг решаемых задач, точность описания
модели и точность выполнения вычислений. Математическая модель
должна отражать все существенные факторы, определяющие ее по­
ведение, и при этом быть простой и удобной для восприятия резуль­
татов. Каждая математическая модель процесса, явления или объекта
в своей основе имеет математический количественный метод.
Применение математических количественных методов для
обоснования выбора того или иного управляющего решения во всех
областях человеческой деятельности называется исследованием
операций. Целью исследования операций является нахождение с
использованием специального математического аппарата решения,
удовлетворяющего заданным условиям. На самом деле при реше­
нии практически любой задачи имеется неограниченное количество
решений. Множество решений, удовлетворяющих заданным усло­
виям (ограничениям), называется допустимым множеством реше­
ний. Выбор из множества допустимых решений одного решения,
наилучшего в каком-либо смысле, называемого оптимальным ре­
шением, и есть задача исследования операций. Надо помнить, что
оптимальное решение является наилучшим только при заданных
ограничениях. Если изменить ограничения (увеличить или умень­
шить ресурсы), то и оптимальное решение будет другим. При ре­
шении задачи исследования операций без ограничений на ресурсы
можно ставить вопрос о нахождении наилучшего решения среди
локальных оптимальных решений. Такое наилучшее решение назы­
вается глобальным экстремумом (минимумом или максимумом).
Нахождение глобального экстремума — очень сложная задача и,
как правило, найти его не удается.
Поиск локального или глобального экстремума выполняется
набором некоторых действий, подчиняющихся общей идее опре­
деления экстремума (плану поиска решения), оформленной в виде
алгоритма поиска. Каждое отдельное действие, входящее в план
решения, называется операцией. Операция всегда является управ­
ляемым воздействием на модель исследуемого объекта, т. е. иссле­
дователь задает набор входных воздействий на модель и получает
реакцию на выполненное воздействие. Анализируя реакции на
1.1. Классификация моделей 7
входные воздействия, исследователь делает вывод: достигнут или
нет экстремум.
К настоящему времени известно большое количество моделей.
Так что же такое модель? Полного и всеобъемлющего определения
модели не существует. Применительно к тому или иному виду дея­
тельности человека вводится понятие модели. В роли модели может
выступать: набор формул, увеличенный или уменьшенный макет
реального объекта, схемы, чертежи, рисунки и т.д. Для каждого
объекта (или явления) можно создать несколько моделей, которые
отличаются друг от друга степенью точности (адекватности) ориги­
налу. Также модели различаются по их назначению: для ознакомле­
ния с внешним видом объекта, для изучения структуры и функцио­
нирования объекта, для изучения законов развития и протекания
явления, для управления объектом, для прогноза работы объекта
или протекания явления и т.д. Таким образом, учитывая сказанное,
можно дать следующее определение модели.

Модель — это материальный или идеальный объект, заменяю­


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

Примеры моделей:
1. Рисунок будущего здания.
По этой модели можно оценить эстетические особенности зда­
ния, как оно вписывается в существующую застройку и т. д.
2. Макет радиотелеграфа.
Макет представляет собой уменьшенную копию реального ра­
диотелеграфа и воспроизводит основные функциональные возмож­
ности оригинала. Эта модель предназначена для изучения основных
принципов работы радиотелеграфа.
3. Электрическая схема радиоприемника.
Во время проведения лекций по радиотехнике по этой модели
удобно рассказывать о назначении отдельных узлов (блоков) ра­
диоприемника.
4. Система уравнений, описывающих полет артиллерийского
снаряда.
В этой модели в качестве коэффициентов используют массу по­
рохового заряда, массу снаряда, угол наклона ствола орудия и т. д.
8 Гпава 1. Понятие модели

Также учитываются сопутствующие явления, например направле­


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

Рис. 1.1. Классификация моделей

Материальные модели. Модели этой группы реализованы в виде


реальных физических объектов — макетов. Как правило, макет — это
увеличенная или уменьшенная копия реального объекта. Макеты свя­
заны с оригиналом различными характеристиками: геометрическими,
физическими и т.д. Изучение оригинала производится путем воздей­
ствия на макет и обработкой реакций макета на суммарное воздейст­
вие. Такой метод исследования называется экспериментальным.
Материальные модели подразделяются на макеты подобия (фи­
зические модели) и заменяющие макеты (аналоговые модели). Для
создания аналоговых моделей используется принцип подобия. Раз­
личные по физической природе явления могут описываться одина­
ковыми математическими уравнениями, что допускает исследова­
ние различных явлений на одной модели.
Идеальные модели. В этом случае создается либо мысленный
образ (сущность) объекта или явления в памяти человека или ком­
пьютера, либо абстрактная математическая модель. Такая модель
носит теоретический характер.
Идеальные модели подразделяются на:
• сущностные (интерактивные), создаваемые в памяти чело­
века или компьютера, для создания которых, как правило,
не требуется строгих уравнений. Законы функционирования
таких моделей строятся на ситуациях и предположениях, ос­
нованных на наблюдениях за оригиналом (объектом или яв­
лением);
1.1. Классификация моделей 9
• символьные, построенные на наборе символов: алфавит,
пиктограммы, технические символы и т.д. Символьные мо­
дели выступают в виде графиков, чертежей, рисунков, тек­
стов, формул и т.д. Одним из видов символьных моделей
являются математические модели (рис. 1.2).

Рис. 1.2. Классификация математических моделей

Компьютерное моделирование имеет дело с математическими


моделями. С помощью математических уравнений можно описать
принцип функционирования практически любого реального объек­
та, явления или процесса, протекающего в природе, экономике или
обществе. Естественно, что для описания всего многообразия объ­
ектов и явлений используется различный математический аппарат,
что и определяет многообразие математических моделей (рис. 1.2).
По степени точности математические модели бывают аналитиче­
ские и статистические. В аналитических моделях устанавливаются
точные зависимости между входными параметрами и выходным
параметром целевой функции (критерием эффективности). Эти за­
висимости записываются в виде алгебраических уравнений, диффе­
ренциальных уравнений, уравнений в частных производных и т. д.
Аналитические модели используются для описания простых про­
цессов, явлений и объектов и учитывают небольшое количество
факторов. Такие модели грубы, но лучше приспособлены к отыска­
нию оптимального решения и имеют наглядные и простые решения.
Если поведение модели зависит от многих факторов (входных па­
раметров и ограничений), носящих случайный характер и коррели­
10 Гпава 1. Понятие модели

рованных между собой, то аналитическую модель, как правило; по­


строить невозможно и в этом случае используют статистическую
модель.
Статистическая модель строится на основе данных (наблюде­
ний) за поведением реального процесса, явления или объекта. Ис­
ходные данные носят случайный характер. Каждое воздействие на
такую модель называется реализацией. Реализация состоит из це­
почки расчетов, выполняемых по специально разработанной проце­
дуре, которая учитывает влияние случайных факторов. После вы­
полнения большого количества реализаций полученные результаты
обрабатываются специальными методами. В результате получают
усредненные характеристики (математическое ожидание и диспер­
сия) процесса, явления или объекта. Статистические модели позво­
ляют учитывать большое количество факторов, более точны, чем
аналитические модели, но более громоздки и требуют много ма­
шинного времени для получения результата. Полученные результа­
ты носят усредненный (приближенный) характер, плохо восприни­
маются, плохо приспособлены к поиску оптимального решения.
Дескриптивные модели — описательные модели (description —
описание). Объект, явление или процесс описываются математически­
ми уравнениями (законами функционирования). Наиболее часто деск­
риптивные модели используются в механике, физике, химии и т.д. и
описывают протекающие процессы без вмешательства в ход событий.
Оптимизационные модели предназначены для управления объ­
ектом, явлением или процессом. И строятся с целью получения
наилучших результатов при изменении управляющих факторов
(параметров).
Игровые модели. Применяются для управления процессами, ко­
торые противодействуют исследователю.
Имитационные модели. Используются для моделирования
сложных технических систем или общественных процессов, когда
не ясно, какую цель или цели надо достигнуть. То есть речь идет о
прогнозе развития системы или процесса в зависимости от приня­
той стратегии управления.
Многокритериальные модели. Применяются для нахождения наи­
лучшего решения по нескольким целевым функциям (направлениям).
Модели прогнозирования. Позволяют создать прогноз о поведе­
нии объекта или системы. Прогноз носит приближенный характер и
используется для принятия решения ответственным лицом.
1.1. Классификация моделей И
При построении математической модели необходимо обеспе­
чить достаточную точность вычислений (точность решения) и не­
обходимую подробность модели. Любая математическая модель
включает в себя описание основных, т. е. необходимых для исследо­
вания свойств и законов функционирования исследуемого объекта,
процесса или явления. Нет практической необходимости учитывать
абсолютно все свойства и законы функционирования исследуемого
объекта, процесса или явления, так как учет второстепенных
свойств приводит к неоправданному увеличению сложности мате­
матической модели и, как правило, полученные решения (результа­
ты) трудно объяснимы. Надо стремиться к построению более про­
стых математических моделей, но адекватно (при заданных услови­
ях исследования) отображающих объект, процесс или явление. При
составлении математической модели надо избегать двух крайно­
стей: чрезмерной детализации и чрезмерного огрубления модели.
Для создания математической модели надо обладать глубокими и
разносторонними знаниями. Прежде всего, надо знать сущность ис­
следуемого объекта, процесса или явления. Очень хорошо представ­
лять связи между отдельными протекающими процессами и состав­
ляющими единое целое — единый исследуемый процесс (явление). С
другой стороны, надо хорошо знать математический аппарат для
описания каждого из протекающих процессов и математический спо­
соб объединения отдельных процессов в единый процесс. Как прави­
ло, таких специалистов мало и созданием математических моделей
занимаются научные коллективы. Создание одной математической
модели объекта, процесса или явления не гарантирует получения
точных (хороших) результатов. Поэтому для исследования одного
объекта, процесса или явления составляют несколько математиче­
ских моделей и желательно созданных различными научными кол­
лективами. Если результаты исследования одного и того же объекта,
процесса или явления на разных математических моделях дали одни
и те же (или близкие) результаты, то это может служить серьезным
основанием того, что математические модели адекватны исследуе­
мому объекту, процессу или явлению и дают правильное представле­
ние об объекте, процессе или явлении.
Для работы с математическими моделями необходимо познако­
миться с терминами и определениями. В своей основе каждая мате­
матическая модель имеет целевую функцию, которая описывает
функционирование реального объекта, процесса или явления. В за­
12 Гпава 1. Понятие модели

висимости от исследуемого (моделируемого) объекта, явления или


процесса целевая функция может быть представлена одной функ­
циональной зависимостью, системой уравнений (линейных, нели­
нейных, дифференциальных и т. д.), набором статистических дан­
ных и т.д. При работе с целевой функцией исследователь воздейст­
вует на нее через набор входных параметров (рис. 1.3).

Входной параметр 1 Выходной параметр 1


Входной параметр 2 Выходной параметр 2
Входной параметр 3 Модель системы Выходной параметр 3
(объекта или процесса)
Входной параметр п - 1 Выходной параметр т - 1
Входной параметр п Выходной параметр т

Рис. 1.3. Обобщенная схема математической модели

Реакция математической модели (целевой функции) на набор


входных воздействий (вектор входных параметров) называется ре­
шением (вектор выходных параметров).
Так как исследователь может подавать на математическую мо­
дель множество наборов входных параметров, то в его распоряжении
будет находиться множество решений. Лучшее, по заранее оговорен­
ным признакам, решение называется оптимальным. При работе с
математическими моделями необходимо построить кратчайший ал­
горитм по поиску оптимального решения, т. е. набор входных пара­
метров задается по определенному плану (алгоритму).
В большинстве исследуемых математических моделей не удается
указать единственное оптимальное решение по многим причинам:
• единственное глобальное оптимальное решение может быть
найдено при отсутствии ограничений на значения входных
параметров, чего на практике не бывает;
• для поиска глобального оптимального решения необходимо
выполнить большой объем вычислений и, следовательно, за­
тратить много машинного времени, что тоже невозможно;
• глобальное оптимальное решение отсутствует и можно го­
ворить о нескольких одинаковых локальных решениях;
• локальных оптимальных решений множество, в этом случае
говорят об области допустимых решений, которую иногда
называют областью Парето.
1. 1. Классификация моделей 13
При работе с математическими моделями надо иметь в виду, что
оптимальное решение может быть представлено как одним значе­
нием, так и набором значений (вектором).
Кроме набора входных параметров и одного (или нескольких)
значения оптимального решения исследователю приходится иметь
дело с ограничениями на значения входных параметров (или просто
ограничениями). Ограничения могут быть заданы в виде равенств
или неравенств и описаны как линейными зависимостями, так и
нелинейными.
По способу реализации математические модели можно разде­
лить следующим образом.
1. Линейное программирование.
Математическая модель целиком (целевая функция и ограниче­
ния) описывается уравнениями первого порядка. Линейное програм­
мирование включает в себя несколько методов решения (задач):
• симплексный;
• графический;
• транспортная задача;
• целочисленное программирование.
2. Нелинейное программирование.
Целевая функция и ограничения, составляющие математическую
модель, содержат хотя бы одно нелинейное уравнение (уравнение
второго порядка и выше). Нелинейное программирование содержит
несколько методов решения (задач):
• графический;
• методы прямого поиска;
• регулярного симплекса;
• деформируемого многогранника (Нелдера - Мида);
• градиентный.
3. Динамическое программирование.
Ориентировано на решение задач прокладки магистралей крат­
чайшим путем и перераспределения различных видов ресурсов.
4. Сетевое планирование.
Решает проблему построения графика выполнения работ, рас1
пределения производственных, финансовых и трудовых ресурсов.
5. Принятие решений и элементы планирования.
В этом случае в качестве целевой функции выступает набор ста­
тистических данных или некоторые данные прогноза. Решением
задачи являются рекомендации о способах поведения (стратегии).
14 Гпава 1. Понятие модели

Решение носит рекомендательный характер (приблизительное ре­


шение). Выбор стратегии целиком остается за человеком — ответ­
ственным лицом, принимающим решение. Для принятия решения
разработаны следующие теории:
• теория игр;
• системы массового обслуживания.

1.2. Примеры
Линейные уравнения широко используются при создании эконо­
мических моделей в любой отрасли производства. Если известны
нормы затрат а, какого-либо сырья на производство изделия /-го вида
и объем запаса этого вида сырья на какой-то период времени, то мо­
жем записать программу выпуска изделий на данном предприятии
п

/=1

Пример 1.1
На складе имеется 300 кг сырья. Надо изготовить два вида про­
дукции. На изготовление первого изделия требуется 2 кг сырья, а на
изготовление второго изделия — 5 кг. Определить план выпуска
двух изделий.
Можно записать следующее уравнение: 2х\ + 5*2 = 300.
Отложим на осях координат максимальные объемы выпуска
первого и второго изделий и соединим их прямой линией. Любая
точка на этой прямой соответствует одному из допустимых планов
выпуска изделий (рис. 1.4).

60

150 *'
Рис. 1.4. Геометрическое представление уравнения
баланса наличия и потребления ресурса
1.2. Примеры 75
Пример 1.2
На двух предприятиях надо разместить заказ на 200 изделий.
В результате проведенных исследований на этих предприятиях вы­
яснилось, что затраты на изготовление * изделий на первом пред­
приятии составляют 4JC2, а на втором — 20* + б*2. Количество из­
делий в партиях различное. Определить план выпуска изделий на
каждом предприятии при условии, чтобы общие затраты были ми­
нимальны.
Составим уравнение суммарных затрат:
4*,2 + 20jc2 + 6*2 —>min;
*, + х 2 = 2 0 0 — ограничение на общее количество изделий;
*, > 0 ; *2 > 0 — количество изделий должно быть положитель­
ным числом;
X = (*,, *2) — вектор решения.

Решение
х, = 200 - *2;
4*2 + 20*2 + 6 х \ = 4 (200- x 2f + 20х2 + 6* | =
= 1О*2 -1580*2 + 160000 —» min;
10*22 -1580*2 +160000 = 0.
Возьмем первую производную:
20*2-1580 = 0;

* ,= 2 0 0 -7 9 = 121.
Ответ: Х {\2 \, 79).

Пример 1.3
Фермер может сегодня собрать 120 т картофеля. Цена за 1 кг
картофеля сегодня составляет 10 рублей. Если картофель не выка­
пывать, то каждую неделю урожай будет увеличиваться на 20 т, це­
на за 1 кг уменьшаться на 1 рубль. Когда надо собрать урожай, что­
бы получить максимальную прибыль?
16 Глава 1. Понятие модели

Решение
Обозначим через х количество недель.
(120 + 20x)(l0 - х ) = 1200 - 120л: + 200* - 20 х2 =
= 1200 + 80дс - 20л:2 —> max.
Возьмем первую производную:
1200+ 8 0 * - 20л:2 =0;
80 jc- 4 0 x = 0;
jc = 2.
Ответ: через 2 недели.

Контрольные вопросы

1. Что такое модель?


2. Приведите классификацию моделей.
3. Дайте понятие каждого типа моделей.
4. Какие вы знаете виды математических моделей?
5. Дайте определение целевой функции.
6. Что такое область допустимых решений?
7. Что называется допустимым решением, оптимальным решением?
Глава 2
Линейное программирование
■ ■ ■ B B B B E B E B B B B B S sasasi

2.1. Основные понятия и определения


Первое упоминание (1938 г.) о математических методах в эффек­
тивном управлении производством принадлежит советскому матема­
тику JI. В. Канторовичу. Год спустя, в 1939 г., JI. В. Канторович опуб­
ликовал работу «Математические методы организации и планирования
производства» и практически применил полученные результаты. Тер­
мин «линейное программирование» ввели американские математики
Дж. Данциг и Т. Купманс в конце 40-х годов. Дж. Данциг разработал
математический аппарат симплексного метода решения задач линей­
ного программирования (1951 г.). Симплексный метод находит приме­
нение для решения широкого круга задач линейного программирова­
ния и до настоящего времени является одним из основных методов.
Линейное программирование — это раздел математики, ориенти­
рованный на нахождение экстремума (максимума или минимума) в
задачах, которые описываются линейными уравнениями. Причем
линейными уравнениями описывается как сама целевая функция, так
и входные параметры (переменные) условия ограничений на входные
параметры. Необходимым условием задач линейного программиро­
вания является обязательное наличие ограничений на ресурсы (сы­
рье, материалы, финансы, спрос произведенной продукции и т.д.).
Другим важным условием решения задачи является выбор критерия
останова алгоритма, т. е. целевая функция должна быть оптимальна в
некотором смысле. Оптимальность целевой функции должна быть
выражена количественно. Если целевая функция представлена одним
или двумя уравнениями, то на практике такие задачи решаются дос­
таточно легко. Критерий останова алгоритма (или критерий опти­
мальности) должен удовлетворять следующим требованиям:
1) быть единственным для данной задачи;
2 - 1962
18 Гпава 2. Линейное программирование

2) измеряться в единицах количества;


3) линейно зависеть от входных параметров.
Исходя из вышесказанного, можно сформулировать задачу ли­
нейного программирования в общем виде:
найти экстремум целевой функции
Fix) = cixi + Czx 2 + с3*3+... + c„xn max(min) (2.1)
при ограничениях в виде равенств:
«11*1 + а \2Х2 + а,3х3 -Ь й
ап дс, + °2 2 Х2 + а 23Х3 + " + а 2пХп = б2;
.
(2.2)
+ а „2Х2 + а »зх з + •• + *«■*. = Ьт \
.

при ограничениях в виде неравенств:


аР\х\ + ар7 хг + op3 xi + ... + apnxn <bp;
, °r\X\ + аг2х2 + °гЗХЪ+ — + атх„ < К (2.3)

a vlX l + Ov2*2 + ° V3X 3 + — + a vnX n <


и условиях неотрицательности входных параметров:
* ,> (); х2 > 0 ; ...; ^ 0. (2.4)
В краткой форме задача линейного программирования может
быть записана так:
П
А*> = Е сл (2-5)
/=1
при условии
п
2 Х * , - bi (ИЛИ Э Д " Р И / = 1, 2, .,т , X) t. 0, i = \,n, (2.6)
/=1
где , ...,х„ — входные переменные;
си ..., с„; ап, ..., a„v; bu ..., bv — числа положительные, отрица­
тельные и равные нулю.
В матричной форме эта задача может быть записана так:
СХ —> max, при Ajc < b или Ах > Ь; х > 0 (2.7)
«и а \2 а \ъ •* * а \п
°2 \ а 22 *2 3 " а 2п h
или (2.8), (2.9)
°т \ а т2 а тЪ тп ьт

С\ С2 СЪ " * С*
2.2. Графический метод 19
Задачи линейного программирования можно решить аналитиче­
ски и графически.

2.2. Графический метод


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

Пример 2.1
Пусть задано уравнение прямой: 4*, + 5*2 = 10.
Преобразуем данное уравнение: 0,4 *, + 0,5 x-i - 1. Теперь по­
строим прямую линию (рис. 2.1, а). Если вместо уравнения напи­
сать неравенство: 4*i + 5 *2 < 10, то график примет вид (рис. 2.1,6).

Рис. 2.1. Решение линейного уравнения

Линейное уравнение с двумя неизвестными отображается на


плоскости прямой линией (рис. 2.1, а), линейное неравенство — по­
луплоскостью (рис, 2.1,6). Из рис. 2.1, б видно, что часть плоскости,
расположенная под линией со штриховкой, удовлетворяет неравен­
ству и называется областью допустимых решений (ОДР) или обла­
стью Парето.
Аналогичным образом можно показать решение системы ли­
нейных уравнений. Пусть дана система линейных неравенств:
*, + 10*2 * ,/10+ *2 < 1;
2*, + *2 < 9; или 2*,/9 + *2/9<1;
15*, + 2*2 ^ 24; 5*,/8 + *2/12<1.
20 Гпава 2. Линейное программирование

Выполним аналогичные построения (рис. 2.2, а) и получим об­


ласть допустимых значений, ограниченную ломаной линией ABCD.
Зададим простейшую целевую функцию — прямую линию под
углом наклона 135°. Уравнение этой линии имеет вид: F = х х + х 2 и
графически отображено пунктирной линией на рис. 2.2,6. Любая
точка внутри области Парето и на границе этой области будет до­
пустимым решением. Если надо определить максимум целевой
функции F, то пунктирную линию надо перемещать параллельно
себе в направлении стрелки (увеличения значений целевой функ­
ции). Понятно, что максимальное значение функции F будет дос­
тигнуто в точке В. Аналогичные рассуждения можно выполнить и
для м-мерной задачи, но графическую интерпретацию выполнить не
удастся.

Рис. 2.2. Графический метод нахождения оптимального решения:


а — область допустимых решений; б — нахождение оптимального
решения; 1 —х\ + 10jt2= 10; 2 — 2х\ + jc2= 9; 3 — 15х\ + 2дг2= 24

Таким образом, задача линейного программирования сводится к


построению линий ограничений, определению точек пересечения
линий ограничений, вычислению значений целевой функции в точ­
ках пересечений и выбора точки с максимальным значением целевой
функции. Поэтому большинство методов линейного программирова­
ния сводится к определению точек пересечения, способу перехода от
одной точки к другой, вычислению значения целевой функции в оче­
редной точке пересечения и выбору оптимальной точки.
2.3. Математический аппарат задач линейного программирования 21
........... I .........I iLL.i..il м I , ■I ■ ............... ■ ■ 1 ■ . .ШУ.-.Ц 1 ■■ 11 ,11

2.3. Математический аппарат задач линейного


программирования
К задачам линейного программирования (ЗЛП) относятся такие
задачи, для которых целевая функция F(X) описывается линейным
уравнением и область допустимых решений D также задается ли­
нейными равенствами или линейными неравенствами. Математиче­
ское описание ЗЛП представлено выражениями (2.1) — (2.9). Если
выражения, ограничивающие область допустимых решений D, за­
писаны в виде неравенств, то необходимо выполнить некоторые
преобразования и неравенства перевести в равенства.
Если левая часть выражения неравенства меньше или равна
свободному члену, то в левую часть выражения добавляют новую
переменную со знаком плюс и знак неравенства заменяют на знак
равенства:
2*, - 5дг2 - *3 < 8 —> 2*, - 5*2 - *з + *4 = 8.
Если левая часть выражения неравенства больше или равна свобод­
ному члену, то в левую часть выражения добавляют новую переменную
со знаком минус и знак неравенства заменяют на знак равенства:
* ,- 3 *2 +5*з >2 -» * , - 3*2+5*з- * 4 =2.
Если равенства, как заданные так и преобразованные, ограничи­
вающие область допустимых решений D, содержат отрицательные
свободные члены, то необходимо выполнить преобразование и сво­
бодные члены сделать положительными. Для этого надо каждый
член равенства умножить на минус единицу ( - 1):
- *, + 2*з - 4*4 = -7 —» *, - 2*з + 4*4 = 7.
Далее для работы с задачей линейного программирования урав­
нение целевой функции и уравнения ограничений приведем к кано­
ническому виду. Приведение уравнений к каноническому виду рас­
смотрим на примере.

Пример 2.2
Найти максимальное значение целевой функции = 3*, +*2 +5*3
при заданных ограничениях:
- *, + 3*2 + 2*з = 9;
<3*2 + 2*з < 5;
2х, - *3 > 4.
22 Гпава 2. Линейное программирование

Выполним преобразование двух последних неравенств.


Зх2 + 2*3 < 5 —> 3*2 + 2*3 + *4 = 5.
2х, - * , > 4 2jc, —jc3 —дг5 =4.
Система ограничений примет вид:
—ДГ| +3*2 + 2*3 = 9;
3*2 + 2*3 + х 4 = 5;
2х, - * 3 - * 5 =4.
Для того чтобы преобразовать целевую функцию и систему урав­
нений ограничений к каноническому виду, надо добавить недостающие
переменные с нулевым коэффициентом в каждое уравнение. Будем
иметь задачу линейного программирования в канонической форме:
- 1*, + Зх2 + 2*3 + 0х4 + 0*5 = 9;
О*, + 3*2 + 2*з +1*4 + 0*5 = 5;
2*, + 0*2 - 1*з + 0*4 - 1*5 = 4;
3*, + 1*2 + 5*з + 0*4 + 0*5.
Если оставить одни коэффициенты при переменных, то будем
иметь задачу линейного программирования в матричном виде.
-1 3 2 0 0 9
о 3 2 1 о b
2 0 -1 0 -1
3 1 5 0 0
где А — матрица, составленная из коэффициентов уравнений огра­
ничений;
b — вектор ресурсов (вектор свободных членов);
с — вектор решений (вектор коэффициентов целевой функции).
Без доказательства приведем две леммы.
Лемма 1. Если для канонической ЗЛП вектор решений с не содержит
положительных элементов и является допустимым планом для данной
ЗЛП, то этот вектор является оптимальным планом для данной ЗЛП.
Из леммы 1 вытекает, что, если после выполнения некоторых
математических действий над канонической матрицей ЗЛП добить­
ся состояния, когда все значения элементов вектора решений будут
отрицательными или равными нулю, будет найдено оптимальное
решение. Таким образом, критерием остановки вычислительного
алгоритма будет указанное состояние элементов вектора решений.
Лемма 2. Если для канонической ЗЛП вектор решений с содер­
жит положительные и большие нуля элементы (или один элемент) и
2.3. Математический аппарат задач линейного программирования 23

является допустимым планом для данной ЗЛП, то этот вектор явля­


ется опорным планом для данной ЗЛП.
Из леммы 2 следует, что, выполняя некоторые математические
действия над канонической ЗЛП и переходя от одного опорного
плана к другому, надо добиваться увеличения количества отрица­
тельных или нулевых элементов в векторе решений.
Задачи линейного программирования носят двойственный ха­
рактер. Рассмотренная выше задача (2.1) — (2.9) называется прямой
задачей линейного программирования. Если в прямой ЗЛП задано
нахождение максимального значения целевой функции, то в двой­
ственной (или обратной) ЗЛП — нахождение минимума целевой
функции. Правило составления обратной ЗЛП таково.

Вместо неизвестных величин х в прямой ЗЛП вводятся новые


неизвестные переменные у, количество которых равно количест­
ву выражений ограничений в прямой ЗЛП.
Количество выражений ограничений в обратной ЗЛП будет
равно количеству неизвестных в целевой функции прямой ЗЛП.
Коэффициентами каждого выражения ограничения обратной
ЗЛП будут соответственно коэффициенты одной переменной из
всех выражений ограничений прямой ЗЛП. Причем в обратной
ЗЛП знаки неравенств меняются на противоположные. В каче­
стве свободных членов для каждого выражения ограничения бу­
дут соответствующие коэффициенты переменных целевой
функции прямой ЗЛП.
Коэффициентами целевой функции обратной ЗЛП будут сво-
бодные члены выражений ограничений прямой ЗЛП.____________

Рассмотрим порядок составления обратной ЗЛП на примере.


Прямая ЗЛП Обратная ЗЛП
Целевая функция: Целевая функция:
F(x) = х 1 + 4*2 + Зх3 + 2*4 —>max. = 6 y t + Зу 2 + 4у 3 + 8у 4 —>min.
Ограничения: Ограничения:
- *, + 3*2 + 2*з = 6; ~У 1 + 2 у 4 =и
3*2 + 2*4 < 3; Зу, + Зу 2 + 2у 3 > 4;
2*2 - * з ^ 4 ; 2У\ ~ У ъ ~ 3^4 ^ 3;
2*, -3*з + 2*4 <8. 2 у 2 + 2 у 4 >2 .
Гпава 2. Линейное программирование

Также без доказательства приведем две теоремы.


Теорема 1. Если прямая ЗЛП (или обратная ЗЛП) имеет опти­
мальное решение, то и двойственная ей ЗЛП имеет также опти­
мальное решение. И аналогично, если прямая ЗЛП (или обратная
ЗЛП) не имеет решения (отсутствует область допустимых реше­
ний), то и двойственная ей ЗЛП также не имеет решения.
Теорема 2. Допустимое решение двойственной задачи (векторы
Х и Y) будет оптимальным в том и только том случае, если это ре­
шение удовлетворяет условию:

2.4. Симплексный метод


Рассмотренный выше графический метод решения систем ли­
нейных уравнений не всегда применим. Универсальным методом
решения систем линейных уравнений является симплексный метод.
Идея симплексного метода состоит в том, что поставленная
описательная задача переводится в математическую форму. Мате­
матическая формулировка задачи содержит уравнение целевой
функции с указанием желаемого результата — определение мини­
мума или максимума целевой функции; системы линейных ограни­
чений, заданных равенствами или неравенствами. Полученное ма­
тематическое описание приводят к каноническому виду. Затем ма­
тематическое описание задачи приводят к матричной форме. После
того как система линейных уравнений приведена к матричной фор­
ме, приступают к решению задачи линейного программирования.
Алгоритм решения этой задачи состоит из последовательности по­
строения матриц. Каждый шаг решения приближает к получению
желаемого результата.
Алгоритм решения следующий:
1) определить ведущий столбец;
2) определить ведущий элемент;
3) определить ведущую строку;
2.4. Симплексный метод 25
4) составить уравнения пересчета матрицы;
5) выполнить пересчет матрицы;
6) проверить результаты пересчета матрицы на оптимальность;
7) если найденное решение оптимально, то вычисления прекра­
тить и сформулировать ответ. Если найденное решение не опти­
мально, то перейти к п. 1.
Признаком оптимальности решения является наличие в векторе
решений только отрицательных или нулевых значений коэффици­
ентов, как для фактических переменных, так и для фиктивных пе­
ременных (при решении задачи на поиск максимума). Столбец в
канонической задаче линейного программирования называется пра­
вильным, если все его элементы равны нулю, кроме единственного
положительного и равного единице.
Вся матрица в канонической задаче линейного программирова­
ния называется правильной, если она содержит минимум т пра­
вильных столбцов (где т равно числу строк в матрице).

Все правильные столбцы должны содержать единицы в разных


строках матрицы._________________________________________

Ответ записывается следующим образом: каждому отрицатель­


ному коэффициенту в векторе решений ставится в соответствие ну­
левой коэффициент для соответствующей переменной в ответе; для
каждого нулевого коэффициента в векторе решений (т.е. для пра­
вильного столбца) ставится в соответствие значение свободного
члена (из вектора Ь) из строки, содержащей единицу в столбце дан­
ной переменной. Фиктивные переменные в ответе не учитываются.
Ведущим столбцом может быть назначен любой столбец t мат­
рицы, удовлетворяющий одному из условий:
• первый столбец, содержащий положительный элемент (кро­
ме нуля) в строке (векторе) решений;
• столбец, содержащий наибольший положительный элемент
в строке (векторе) решений;
• если столбец t удовлетворяет условию:
in Л°у I при решении задач на шах; (2.10а)
= max -Iс° min—

= min I с® max— 1 при решении задач на min, (2.106)


26 Гпава 2. Линейное программирование

причем с) — коэффициент целевой функции в столбце j и ojj —


коэффициент в столбце j выбранной строки / матрицы А.
Третий способ определения ведущего элемента матрицы А при­
водит к самому короткому решению задачи, так как первые два
способа носят формальный (произвольный) характер. Вычисления
по формуле (2.10) выполняются только для положительных и боль­
ших нуля элементов столбца [2 ,3 ,4 ,5 , 7].
Критерием останова алгоритма поиска решения будет:

Для поиска max целевой функции — все коэффициенты векто­


ра решений или равны нулю, или отрицательны.
Для поиска min целевой функции — все коэффициенты векто-
ра решений или равны нулю, или положительны._______________

Критерий останова алгоритма сформулирован для задач, целевая


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

Пример 2.3
Найти максимум целевой функции:
FM = jc, + 2 хг + х 3 + 2 х 4 (2.11)
при наложенных ограничениях:
jc, +х 2 +3jc4 < 8;
• 2х, + Зх2 + х 3 > 14; (2.12)
х 2 + 2х3 + 4дг4 = 9.
Для решения поставленной задачи заменим ограничения, задан­
ные в виде неравенств, на ограничения в виде равенств. Над огра­
ничениями выполним действия, указанные в § 2.2.
В нашем примере первое неравенство имеет вид: х\ + х 2 + 3 х» < 8,
и, применив первое условие, получим: х\ + х 2 + 3 х 4 + х$ = 8; второе
ограничение имеет вид 2 х\ + 3 х 2 + хз > 14, применив к нему второе
правило, получим: 2 х\ + Зх2 + дез - х в = 14; третье ограничение зада­
но в виде равенства, поэтому: х 2 + 2х 3 + 4х 4 = 9.
Уравнения ограничений после проведенных преобразований вы­
делены жирным шрифтом. Преобразуем полученные уравнения в ка­
ноническую форму, т. е. добавим нулевые члены в каждое уравнение.
2.4. Симплексный метод 27

х\ + х 2 + + 3*4 + *5 + 0*6 = 8;
2*, + 3*2 + *з + 0*4 + 0*5 - *6 = 14; (2.13)
0*i +*-, + 2*^ + 4хЛ+ 0*s + 0Xf, = 9;
F{x) ~ + 2*2 + *3 + 2*4 + 0*5 + 0*6 => max — целевая функция.
Оставим одни коэффициенты и получим условия задачи в мат­
ричном виде:
1 1 0 3 1 0 8
2 Ш 1 0 0 -1 14 (2.14)
0 1 2 4 0 0 9
1 2 1 2 0 0
Таким образом, каноническая задача линейного программи­
рования определена матрицей А, вектором свободных членов b =
{8; 14; 9} и вектором решения с = {1; 2; 1; 2; 0; 0}.
Воспользуемся для расчета третьим способом (выражение (2.10)).
Четырем столбцам матрицы А соответствуют коэффициенты векто­
ра решения, большие нуля. Любой из столбцов может быть назначен
ведущим.
I min—
По третьему правилу max-ic,.. • 6°1 определим минимальные
I °у \
элементы в каждом столбце.
Для первого столбца: 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.
Сначала внутри каждого столбца выбираем минимальный эле­
мент и умножаем его на соответствующее значение из вектора ре­
шения. Затем из четырех величин выбираем максимальное.
Таким образом, ведущим элементом будет элемент а2 г, ведущий
столбец — второй, ведущая строка — вторая. Ведущий элемент вы­
делен прямоугольной рамкой.
Во втором столбце будем исключать вторую переменную. Для
этого надо, чтобы в ведущей строке коэффициент при второй пере­
менной был равен 1.
Ведущая вторая строка (ее элементы обозначим буквой <р) будет
пересчитываться по формуле:
ф " = ф /а 22 ф" = ф /3 , (2.15)
28 Глава 2. Линейное программирование

где <рп — новое значение элемента ведущей строки;


Ф — текущее значение элемента ведущей строки;
а 22 — значение ведущего элемента
1 1 0 3 1 0 8
2 /3 1 1/3 0 0 - 1 /3 14/3
0 1 2 4 0 0 9
1 2 1 2 0 0
В остальных строках матрицы коэффициент при второй пере­
менной должен быть равен 0. Для первой строки (элементы, кото­
рых обозначим буквой у) получим формулу для пересчета:
V?y=Viy-l95y. (2.16)
где v|/JV — новое значение элемента первой строки;
Фу — новое значение элемента второй (ведущей) строки.
Такое преобразование строк матрицы носит название преобра­
зование Жордана - Гаусса.
Для третьей строки:
Ч'з,='1'з,-1ф2,- (2.17)
Для четвертой строки (строки вектора решений):
V4,- = ¥ 4у- 2(р^. (2.18)
1/3 0 - 1 /3 3 1 |1 /3 | 10/3
2 /3 1 1/3 0 0 - 1 /3 14/3
- 2 / 3 0 5 /3 4 0 1/3 13/3
- 1 /3 0 1/3 2 0 2 /3 / - 2 8 / 3
Значение целевой функции/ определим по формуле:
/ " = f ~ g , ф" = 0 -2 - 1 4 /3 = / - 2 8 / 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
Угу = V 2y + - <Pij >
3
II I ||
= V 3y >
3 <Piy
2 ,_H .
vHy = V 4y Ф1y>
3
1 0 -1 9 3 1 10
1 1 0 3 1 0 8
-1 0 m 1 -1 0 1

00
m
-1 0 1 - 4 -2 0 /
1
Так как третий элемент вектора решений больше нуля, то вы­
числения необходимо повторить. В третьем столбце единственный
элемент а33 положительный и больший нуля, поэтому он и будет
ведущим элементом.
Для ведущей (третьей) строки:
ф " = ф / о 33 —► фн = ф /2 .
Для первой, второй и четвертой строк соответственно:
м'!,,- = ч'1,+ФзУ;
У2у = ^ 2у-°Фзу =Угр
< , = ' | ' 4 , - 1Фзу;
1/2 0 0 19/2 5 /2 1 21/2
1 1 0 3 1 0 8
- 1/2 0 1 1/2 - 1/2 0 1/2
- 1/2 0 0 - 9 / 2 - 3 / 2 0 / - 3 3 / 2
Так как вектор решения (фактические и фиктивные перемен­
ные) содержит нулевые и отрицательные значения, то найдено оп­
тимальное решение.
Найденное решение записывается следующим образом: отрица­
тельным коэффициентам в векторе решений соответствуют нулевые
значения, а нулевым значениям — значения свободных членов (Ь) в
строках, содержащих единицу.
Ответ: Х { 0; 8; 1/2; 0}.
SO Гпава 2. Линейное программирование
—— .......... ............. ■ '" • .......... ...... ............
Так как пятая и шестая переменные — фиктивные, то в решении
они не учитываются. Максимальное значение, равное 33/2, целевая
функция принимает при следующих значениях аргументов: х\ = 0;
хг = 8 ; JC3 = 1 / 2 ; х* = 0.

Проверка:
— Х| + 2 х 2 + Ху + 2х4 = 1-0 + 2-8 + 1-1/2 + 2-0 = 0 + 16+0,5 + 0 = 16,5;
х, + х2 + Зх4 <8; 1 -0 +1 -8 + 0*0,5 + 3 • 0 < 8; 0 + 8 + 0 + 0^8; 8^8;
2х,+3xj+х, >14; 2-0+3-8+1-0,5+3-0>14; 0+24+0,5+0>14; 245>14;
х2 + 2х3 + 4х4 = 9; 0-0 + 1- 8 + 2 - 0,5 + 4- 0 = 9; 0 + 8 + 1 + 0=9; 9 = 9.

Пример 2.4
Найти максимум целевой функции F (x) = 2х, + 4х 2 + 2х3 при на­
ложенных ограничениях:
х2 + 2х3 > 4;
2xj + Зх2 + х3 = 6;
4 2х, + 2х2 ^ 4;
Xj > 0 , j = 1,3.
Добавлены две фиктивные переменные и матрица приведена к
каноническому виду
0х, + 1х2 + 2х3 - 1х4 + 0х5 = 4;
2х, + Зх2 + 1х3 + 0х4 + 0х5 = 6; 4
2х, + 2х2 + 0х3 + 0х4 + 1х5 = 4;
2х, + 4х2 + 2х3 + 0х4 + 0х5.
Составим матричную модель
0 1 2 -1 0 4
2 Ц] 1 0 0 6
2 2 0 0 1 4
2 4 2 0 0
В этом примере любой из первых трех столбцов может быть на­
значен ведущим столбцом. Определим ведущий элемент по треть­
ему правилу.
Для первого столбца: 6/2 4/2 2-2 = 4.
Для второго столбца: 4/1 6/3 4/2 2-4 = 8.
Для третьего столбца: 4/2 6/1 -* 2-2 = 4.
2.4. Симплексный метод 3]
1 ■! 1— ............. ■ Ч ............ .................................................. LI I I I! Ш. ! . II I И» ! I I И 1 II! - ................. ... | —

В каждой строке минимальное значение вьзделено рамкой. Каж­


дое минимальное значение в столбце умножается на соответствую­
щий коэффициент последней строки. Наибольшая оценка 8 нахо­
дится во втором столбце и принадлежит двум элементам а22 и а2з-
Любой из этих элементов может быть назначен ведущим.
Ведущий элемент — а22. Выполним пересчет элементов веду­
щей (второй) строки
0 1 2 -1 0 4
2 /3 1 1/3 0 0 2
2 2 0 0 1 4
2 4 2 0 0
Будем исключать первую фактическую переменную.
Формула для пересчета первой строки: у "у = v|/1у. -<р"у.
Формула для пересчета третьей строки: \|/“у- = \|/3у. - 2 <р"у-.
Формула для пересчета четвертой строки: у "у = \y4J -4 ф " у.
- 2 / 3 0 |5 /3 | -1 0 2
2 /3 1 1/3 0 0 2
2 /3 0 - 2 / 3 0 1 0
- 2 / 3 0 2 /3 0 0 /-8
В последней строке один элемент о» положительный. Следователь­
но, ведущим будет третий столбец. Вычислим оценки для элементов:
о,з — 2/(5/3) = 6/5;
а2з — 2/(1/3) = 6/1.
Наименьшую оценку имеет элемент Поэтому его и назначим
ведущим элементом. Выполним пересчет элементов ведущей (пер­
вой) строки
-2 /5 0 1 - 3 / 5 0 6 /5
2 /3 1 1/3 0 0 2
2 /3 0 - 2 / 3 0 1 0
- 2 / 3 0 2 /3 0 0 /" 8

Формула для пересчета второй строки: \\>2j = \\/2J ф"; .


2
Формула для пересчета третьей строки: ц/jV = \|/3у. + —ф"7-.
2
Формула для пересчета четвертой строки: уЦу = \|/4у ф"у.
32 Гпава 2. Линейное программирование

-2 /5 0 1 -3 /5 0 6/5
4/5 1 0 |1/5| 0 8/5
2/5 0 0 -2 /5 1 4/5
-2 /5 0 0 2/5 0 /-4 4 /5
В последней строке один элемент 044 положительный. Поэтому
ведущим столбцом будет четвертый. Четвертый столбец содержит
положительный единственный элемент, кроме элемента последней
строки. Следовательно, ведущий элемент 024- Выполним пересчет
элементов ведущей (второй) строки
-2 /5 0 1 -3 /5 0 6/5
4 5 0 1 0 8
2/5 0 0 -2 /5 1 4/5
-2 /5 0 0 2/5 0 /-4 4 /5

Формула для пересчета первой строки:

Формула для пересчета третьей строки: vj/"y = 4i3J + — .


2
Формула для пересчета четвертой строки: = у 4у - —ф ^.

2 3 1 0 0 6
4 5 0 1 0 8
14/5 2 0 0 1 4
-2 -2 0 0 0 /-1 2
В последней строке все элементы или отрицательные, или рав­
ны нулю. Оптимальное решение найдено.
Ответ: Х(0', 0; 6).

Проверка:
F(x) —2х\ + 4 x2 + 2*з = 2 - 0 + 4-0 + 2-6 = 12;
х 2 + 2х3 >4; 0-0 + 1 -0 + 2 - 6 > 3 ; 12>4;
2лг, + Здг2 +*3 = 6; 2-0 + 3- 0 + 1 -6 = 6; 6 = 6;
2*,+2*2 <4; 2 0 + 2 0 + 0 -6 < 4 ; 0<4.
2.5. Общий случай 33
2.5. Общий случай
Выше рассмотрен вариант правильной математической модели, т.е.
выражение целевой функции содержит только положительные коэффи­
циенты и критерий сходимости метода формулируется как наличие от­
рицательных или нулевых коэффициентов в последней строке матрицы.
На практике встречаются случаи, когда коэффициенты целевой
функции принимают как положительные, так и отрицательные зна­
чения. Для решения таких задач используют два подхода.
Первый подход. Математическую модель приводят к правиль­
ному виду по правилам, изложенным в разд. 2.4, но в начало проце­
дуры добавляют один шаг — применяют процедуру Жордана - Гаус­
са поочередно к тем столбцам, которые в последней строке матрицы
содержат отрицательные коэффициенты, добиваясь при этом заме­
ны отрицательных значений коэффициентов на нулевые значения.
Второй подход. Поставленную задачу решают по правилам, из­
ложенным в разд. 2.4, добавив новые условия.

Если выполнены условия разд. 2.4 (все элементы последней строки


или отрицательные, или нулевые при поиске максимума и, наобо­
рот, — при поиске минимума), но количество правильных столб­
цов матричной модели меньше, чем количество условий ограниче­
ний, то определяют ведущий элемент по правилам разд. 2.4, но
только в строках, которые не были ведущими.__________________

Пример 2.5. Первый подход


Найти максимум целевой функции F(X) = -2 х \ + 3*2 при ограни­
чениях
2дс, - х 2 й 6;
- х 1 +3х2 < 6;
' х ,+ 2х2 < 8; __
Xj> 0, j = 1, 2.
Выполнив необходимые преобразования, получим матричную
модель
2 -1 1 0 0 6
-1 3 0 1 0 6
1 2 0 0 1 8
-2 3 0 0 0
3- 1962
34 Гпава 2. Линейное программирование

Первый элемент последней строки — отрицательный. Выпол­


ним преобразование Жордана - Гаусса относительно элемента азь
так как он имеет коэффициент, равный единице. Формула для пере­
счета последней строки: \|/“у = \|/4у. + 2ф"у
2 -1 1 0 0 6
-1 0 0 1 0 6
1 2 0 0 1 8
0 7 0 0 2 / + 16

дим к алгоритму, описанному в разд. 2.4.


Ведущим элементом будет ац. Пересчитаем коэффициенты вто­
рой строки
2 -1 1 0 0 6
-1 /3 1 0 1/3 0 2
1 2 0 0 1 8
0 7 0 0 2 / + 16
Формула для пересчета первой строки: vj/"у. = \|iXj +ф
Формула для пересчета третьей строки: у"; = v|/3y - 2 ф^-.
Формула для пересчета четвертой строки: \|/"у. = \|/4у. - 7 ф^..
5/3 0 1 1/3 0 8
-1 /3 1 0 1/3 0 2
5/3 0 0 -2 /3 Ш 4
7/3 0 0 -7 /3 2 / + 2
Ведущий элемент — я35. Формула для пересчета четвертой стро-
ки: \|/4У= \1/4у- 2 фУу
5/3 0 1 1/3 0 8
-1/3 1 0 1/3 0 2
5/3 0 0 -2 /3 1 4
-1 0 0 -1 0 /-6
Все коэффициенты последней строки отрицательные. Целевая
функция достигает своего максимума, равного 6, в точке Х (0; 2).
Проверка:
F{x) = - 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. Решение двойственных (обратных) задач 35

2.6. Решение двойственных (обратных) задач


В разд. 2.3 был рассмотрен математический аппарат и правила
составления обратной (двойственной) задачи. Существует три раз­
новидности двойственной задачи.
1. Симметричная двойственная задача.
Симметричной двойственной задачей называется такая задача, в
которой целевая функция содержит все переменные с коэффициен­
тами, отличными от нуля; все уравнения и неравенства условий огра­
ничений также содержат все переменные с коэффициентами, отлич­
ными от нуля; количество ограничений равно количеству переменных.
2. Несимметричная двойственная задача.
В несимметричной двойственной задаче количество условий ог­
раничений меньше, чем количество переменных, а остальные два
условия выполняются.
3. Смешанная двойственная задача.
Смешанная двойственная задача может иметь произвольную
структуру математической модели (по отношению к симметричной
и несимметричной задачам).
Для решения двойственных задач можно использовать алгоритм
симплексного метода или специальные формы пересчета.
Суть специальных форм пересчета состоит в том, что сначала
устанавливается соответствие между фактическими и фиктивными
переменными.

Фактические переменные для прямой задачи являются фиктивны­


ми переменными для двойственной (обратной) задачи и наоборот.

В общем случае соответствие между фактическими и фиктивны­


ми переменными для прямой и обратной задачи приведено в табл. 2.1.
Таблица 2.1
Переменные
Задача
фактические для х фиктивные для х
Обратная Уб У5 У4 У\ У2 Уз
Прямая *1 *2 *3 *4 Х5 *6
После решения прямой (обратной) задачи полученную матрицу
транспонируют и по известным правилам записывают ответ.
36 Гпава 2. Линейное программирование

2.6.1. Решение симметричных двойственных задач

При решении симметричных задач прямая и двойственная зада­


чи решаются одинаково. При переходе от прямой задачи к двойст­
венной количество фактических и фиктивных переменных не изме­
няется. Выигрыша в вычислительных операциях нет.

Пример 2.6. Второй подход


Найти максимум целевой функции F(X) = *i + *2 + *э при ограни­
чениях
- хх + 3*2 + 2*з < 6;
• 2*| + 4*2 + 2*з < 8;
3*, +2*2 - * 3 <4.
Составим матричную модель
-1 3 т 1 0 0 6
2 4 2 0 1 0 8
3 2 -1 0 0 1 4
1 1 1 0 0 0
Ведущий элемент — а\г. Выполним пересчет элементов веду-
щей (первой) строки
-1 /2 3 /2 1 1/2 0 0 3
2 4 2 0 1 0 8
3 2 -1 0 0 1 4
1 1 1 0 0 0
Формула для пересчета второй строки: = V ij ~ 2ф";
Формула для пересчета третьей строки: = \|/3у. + <р"у.
Формула для пересчета четвертой строки: = \|/4у--ср"у-.
-1 /2 3 /2 1 1/2 0 0 3
а 1 0 -1 1 0 2
5 /2 7 /2 0 1/2 0 1 7
3 /2 -1 /2 0 -1 /2 0 0 /- з
Ведущий элемент — а2\. Выполним пересчет элементов веду­
щей (второй) строки
-1 /2 3 /2 1 1/2 0 0 3
1 1/3 0 -1 /3 1/3 0 2 /3
5 /2 7 /2 0 1/2 0 1 7
3 /2 -1 /2 ' 0 -1 /2 0 0 / - з
2.6. Решение двойственных (обратных) задач 37

Формула для пересчета первой строки: vj/JV= vj/,7 + — ср^-.

Формула для пересчета третьей строки: y"; =М/зу- ■ф"7•


3
Формула для пересчета четвертой строки: х|/"у. = \\i4J - — ф"у..

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/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 + 2 •0 —1 -10/3 < 4; —
4/3 < 4; -4/3< 4.
Составим двойственную задачу. Найти минимум целевой функ­
ции F(y) = 6 y t + &у2 + 4у3
~У\ + 2 у 2 +З^3 > 1;
- 3^, + 4у 2 + 2^з > 1;
2 у ,+ 2 у 2 - у 3 2 1 .

Составим матричную модель


-1 2 3 -1 0 0 1
3 4 2 0 -1 0 1
2 2 -1 0 0 -1 1
-6 -8 -4 0 0 0
Все коэффициенты последней строки матрицы принудительно
сделаны отрицательными. Оптимальное решение будет найдено,
если в последней строке матрицы будем иметь все коэффициенты
положительные или равные нулю.
После выполнения соответствующих вычислений было получе­
но следующее решение.
Ответ: У(0; 1/2; 0); = 4.
Проверка:
F(y) = 6 •0 + 8 • 1/2 + 4 •0 = 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 *2 *3 *4 *5 *6
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
Транспонируем матрицу и добавим имена переменных
0 1 0 0 Уь
5/3 1/3 8/3 -1 У5
1 0 0 0 У4
1/3 -1 /3 4/3 0 yt
1/6 1/3 -5 /6 - 1/2 У2
0 0 1 0 Уз
10/3 2/3 16/3 /-4
Ответ: У(0; 1/2; 0); = 4.

2.6.2. Решение несимметричных двойственных задач

Решение несимметричных двойственных задач представляет


большой практический интерес. При переходе к двойственной задаче
общее количество переменных не изменяется, но при этом уменьша­
ется количество фактических переменных и, соответственно, увели­
чивается количество фиктивных переменных. Используя такое пере­
распределение переменных, можно существенно понизить степень
сложности задачи (уменьшить количество фактических переменных)
и решить поставленную задачу графическим методом.
Рассмотрим решение прямой и обратной (двойственной) задачи
симплексным методом.
2.6. Решение двойственных (обратных) задач 39
Пример 2.7. Второй подход
Найти максимум целевой функции = 2х\ + 2*2 + 2хз + 2*4 + 2*5
при ограничениях
Здс, + 5*2 - 2*3 + *4 + 4*j <12;
*, + *2 + 2*з + 5*5 < 6;
" - * , +3*2 +3*з +4*4 +2*5 <7;
X j > О, У = 1,5.
Составим матричную модель
0 5 - 2 1 4 1 0 0 12
1 1 2 0 5 0 1 0 6
-1 3 3 4 2 0 0 1 7
2 2 2 2 2 0 0 0
Ведущий элемент О ц. Выполним[ пересчет эле!
щей (первой) строки
1 5/3 2/3 1/3 4/3 1/3 0 0 4
1 1 2 0 5 0 1 0 6
-1 3 3 4 2 0 0 1 7
2 2 2 2 2 0 0 0
Формула для пересчета второй строки:
Формула для пересчета третьей строки: У у = У з ; + ф"у-•
Формула для пересчета четвертой строки: уЦу = \y4J - 2 <р"у.

1 5/3 -2 /3 1/3 4/3 1/3 0 0 4


0 -2 /3 8/3 -1 /3 11/3 -1 /3 1 0 2
0 14/3 7/3 113/31 10/3 1/3 0 1 11
0 -4 /3 10/3 4/3 - 2 / 3 -2 /3 0 0 /-8
Ведущий элемент — 034. Выполним пересчет элементов веду­
щей (третьей) строки
1 5/3 - 2 / 3 1/3 4/3 1/3 0 0 4
0 -2 /3 8/3 -1 /3 11/3 -1 /3 1 0 2
0 14/13 7/13 1 10/13 1/13 0 3/13 33/13
00
1

0 - 4 / 3 10/3 4/3 -2 /3 -2 /3 0 0

Формула для пересчета первой строки: \|/"у = ц/1у (p"y.


40 Гпава 2.Линейное программирование

Формула для пересчета второй строки: xj/"y- = у 2у+ —ф"у

Формула для пересчета четвертой строки: \|/^ = \|/4у ф"у

1 17/13 -11/13 0 14/13 4/13 0 -1/13 41/13


0 -4 /3 137/13 0 51/13 -4/13 1 1/13 37/13
0 14/13 7/13 1 10/13 1/13 0 3/13 33/13
0 -36/13 34/13 0 -22/13 10/13 0 -4/13 /- 1 4 8 /1 3

Ведущий элемент — an. Выполним пересчет элементов веду­


щей (второй) строки
1 17/13 -11/13 0 14/13 4/13 0 -1/13 41/13
0 -4/37 1 0 51/37 -4/37 13/37 1/37 1
0 14/13 7/13 1 10/13 1/13 0 3/13 33/13
0 -36/13 34/13 0 -22/13 10/13 0 -4/13 /-1 4 8 /1 3

Формула для пересчета первой строки: vj/JV = у 1у. + — ф ^.


7
Формула для пересчета третьей строки: \|/"у. = y 3j- ф ^.

Формула для пересчета четвертой строки: \|/4у = \\/Aj ф"у-.

1 45/37 0 0 83/37 8/37 11/37 -2 /3 7 4


0 -4 /3 7 1 0 51/37 -4 /3 7 13/37 1/37 1
0 42/37 0 1 1/37 5/37 -7 /3 7 8/37 2
0 -9 2/37 0 0 -196/37 -18/37 -34/37 -1 4/37 /-1 4
Ответ: Х(4; 0; 1; 2; 0).
Проверка:
F(X) = 2- 4 + 2- 0 + 2 -1 + 2 -2 + 2- 0 = 8 + 2 + 4 = 1 4 .
Первое ограничение: 3 •4 + 5 •0 - 2 • 1 + 1 •2 + 4 •0 < 12;
12 - 2 + 2 < 12;
12 < 12.
Второе ограничение: 1 -4 + 1 0 + 2 1 + 0- 2 + 5- 0 < 6 ;
4 + 2 < 6;
6 < 6.
2.6. Решение двойственных (обратных) задач 41
Третье ограничение: -1 -4 + 3- 0 + 3 1 + 4- 2 + 2 0 < 7 ;
-4 + 3 + 8 < 7;
7 <7.
Найдем решение двойственной задачи, используя формулы пе­
ресчета. Транспонируем матрицу и добавим имена переменных
1 0 0 0
45/37 - 4 /3 7 42/37 -9 2 /3 7
0 1 0 0
0 0 1 0
83/37 51/37 1/37 -196/37
8/37 - 4 /3 7 5/37 -18/37
11/37 13/37 -7 /3 7 -3 4 /3 7
-2 /3 7 1/37 8/37 -1 4/37
4 1 2 /-1 4
Ответ: У(18/37; 34/37; 14/37).

Пример 2.8. Второй подход


Составим двойственную задачу. Найти минимум целевой
функции F<y) ~ 12yi + 6 у 2 + 7уз,
*У\ + у 2 - у 3 > 2 ;
5у х + у 2 + Ъуг > 2;
- 2 у х + 1 у 2 + ЗУз * 2 ;
‘ y t + 4у 3 > 2;
4^1 + + 2 у} > 2 ;
y j Z О, У= 1,3.
Составим матричную модель
3 1 -1 -1 0 0 0 0 2
5 1 3 0 -1 0 0 0 2
-2 2 3 0 0 -1 0 0 2
1 0 4 0 0 0 -1 0 2
4 5 [21 0 0 0 0 -1 2
-12 - 6 - 7 0 0 0 0 0
В данном примере все коэффициенты последней строки матрицы
сделаны отрицательными. Будем стремиться к тому, чтобы в последней
строке матрицы все коэффициенты были положительными или нулевы­
ми. В соответствии с формулой (2.10 б) определим ведущий элемент.
Ведущий элемент — а53 . Выполним пересчет элементов веду­
щей (пятой) строки
42 Гпава 2. Линейное программирование

3 1 -1 -1 00 0 0
5 1 3 0 -1 0 0 о
-2 2 3 0 0 -1 0 О
1 О 4 0 00 -1 О
2 5 /2 1 О -1 /2
-1 2 - 6 - 7 0 О О
Формула для пересчета первой строки: Viy = V i; +Ф5,-
Формула для пересчета второй строки: У2у='К2у-Зф5,у
Формула для пересчета третьей строки: Ч ' з , = Ч ' з у - З ф 5Н;-

Формула для пересчета четвертой строки: л|/"у = \|/4у. - 4 ф"у.


Формула для пересчета шестой строки: = \\>6J + 7 ф"у..

□ 7 /2 0 -1 0 0 0 - 1/2 3
-1 - 1 3 /2 0 0 -1 0 0 3 /2 -1
- 8 - 11/2 0 0 0 -1 0 3 /2 -1
-7 -10 0 0 0 0 -1 2 -2
2 5 /2 1 0 0 0 0 - 1/2 1
2 2 3 /2 0 0 0 0 0 -7 /2 / +7
В последнем столбце ни один элемент нельзя назначить веду­
щим. Правильный столбец только один (третий). Необходимо про­
должить поиск. Поступаем по второму правилу (разд. 2.5).
Ведущий элемент — аи . Выполним пересчет элементов веду­
щей (первой) строки
1 7/10 0 - 1 / 5 0 0 0 - 1/10 3 /5
-1 -1 3 /2 0 0 -1 0 0 3 /2 -1
- 8 - 11/2 0 0 0 -1 0 3 /2 -1
-7 -1 0 0 0 0 0 -1 2 -2
2 5 /2 1 0 0 0 0 - 1/2 1
2 23 /2 0 0 0 0 0 - 7 / 2 / + 7
Формула для пересчета второй строки: Угу “ Угу+Фу-
Формула для пересчета третьей строки: Узу ='Изу + 8 ФГу
Формула для пересчета четвертой строки: y/4j = y/AJ +1 <pXj.
Формула для пересчета пятой строки: 4 s j = V s j - 2 q>"j-
Формула для пересчета шестой строки: < , • =М '6у - 2 ф Г у
2.6. Решение двойственных (обратных) задач 43
1 7/10 0 -1 /5 О О О -1 /1 0 3 /5
0 - 2 9 /5 0 - 1 / 5 -1 0 0 7 /5 -2 /5
О 1/10 0 - 8 / 5 0 -1 0 7/10 19/5
О -5 1 /1 0 0 - 7 / 5 О О - Ь 113/10 11/5
О 11/10 1 2 /5 0 0 0 - 3 /1 0 -1 /5
О 101/10 0 275 б О 0 -3 3 /1 0 | / + 2 9 /5
Восьмой столбец содержит отрицательный элемент в последней
строке. Один из элементов этого столбца ац или ащ может быть на­
значен ведущим.
Ведущий элемент — а48. Выполним пересчет элементов веду­
щей (четвертой) строки
1 7/10 0 -1 /5 0 0 0 - 1/10 3 /5
0 -2 9 /5 0 - 1 /5 -1 0 0 7 /5 -2 /5
0 1/10 0 -8 /5 0 -1 0 7/10 1 9 /5
0 -5 1 /1 3 0 -1 4 /1 3 0 0 -1 0 /1 3 1 22/13
0 11/10 1 2 /5 0 0 0 -3 /1 0 -1 /5
0 101/10 0 2 /5 0 0 0 -3 3 /1 0 / + 2 9 /5

Формула для пересчета первой строки: vl'y = V iy + — Ф 4у

Формула для пересчета второй строки: 't'2,-=4'2y - J <P4y


7_
Формула для пересчета третьей строки: V 3, = ^ - Ш Ф 4у
10
_3_
Формула для пересчета пятой строки: = Ч'5у+т77Ф4у
10

Формула для пересчета шестой строки:

1 4/13 0 -4 /1 3 0 0 -1/13 0 10/13


0 -4 /1 3 0 17/13 -1 0 14/13 0 -3 6 /1 3
0 |37/13| 0 -11/13 0 -1 7/13 0 34/13
0 -51/13 0 -14/13 0 0 -10/13 1 22/13
0 -1/13 1 1/13 0 0 -3 /1 3 0 4/13
0 -37/13 0 -41/13 0 0 -33/13 0 / + 148/13
Ведущий элемент 032. Выполним пересчет элементов веду-
щей (третьей) строки
44 Глава 2. Линейное программирование

1 4/13 О -4 /1 3 О О -1/13 О 10/13


О -4 /1 3 О 17/13 -1 О 14/13 О -36/13
О 1 О -11/37 О -13/37 7/37 О 34/37
О -51/13 О -14/13 О О -10/13 1 22/13
О -1/13 1 1/13 О О -3 /1 3 О 4/13
О -3 7 /1 3 О -41/13 О О -33/13 О[/ + 148/13

Формула для пересчета первой строки: vyJV

Формула для пересчета второй строки: \у"у

51 н
Формула для пересчета четвертой строки: цi "j = У 4у+ ^ Ф з у

_1_
Формула для пересчета пятой строки: \|i "j ^ ,,+ й Ф з ,-
13
37
Формула для пересчета шестой строки: уЦу ^ у + ^ Ф з ,.

1 0 0 -8 /3 7 0 4/37 -5 /3 7 0 18/37
0 0 0 45/37 -1 -4 /3 7 42/37 0 92/37
0 1 0 -11/37 0 -1 3/37 7/37 0 34/37
0 0 0 -8 3 /3 7 0 -5 1 /3 7 -1 /3 7 1 196/37
0 0 1 2/37 0 -1 /3 7 -8 /3 7 0 14/37
0 0 0 -4 0 -1 -2 0 / + 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 0 0 0
0 0 1 0 0 0
0 0 0 0 1 0
-8 /3 7 45/37 -11/37 -83/37 2/37 -4
0 -1 0 0 0 0
4/37 -4 /3 7 -13/37 -51/37 -1 /3 7 -1
-5 /3 7 42/37 7/37 -1/37 -8 /3 7 -2
0 0 0 1 0 0
18/37 92/37 34/37 196/37 14/37 / + 14
Ответ: X (4; 0; 1 ; 2 ; 0).

2.7. Альтернативное оптимальное решение


В рассмотренных выше примерах (разд. 2.4 и 2.5) оптимальное
решение считалось найденным, если все коэффициенты последней
строки матрицы имели отрицательное или нулевое значение (для
случая поиска максимума целевой функции). При решении практи­
ческих задач симплексным методом оказывается, что имеется не­
сколько альтернативных оптимальных решений.

Если в последней строке последней матрицы имеются нулевые


значения в столбцах, кроме правильных, то существует альтер-
нативное оптимальное решение.______________________________

Для нахождения альтернативного оптимального решения надо


неправильный столбец, имеющий нулевой элемент в последней
строке, сделать правильным, заменив один из правильных столбцов,
принадлежащий фактической переменной.
46 Гпава 2. Линейное программирование

Ранее был рассмотрен пример 2.6. Последняя матрица примера 2.6


приведена ниже
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/3; 0; 10/3); F(x) = 4.
Четвертый столбец в последней строке содержит нулевой элемент.
Сделаем четвертый столбец правильным за счет третьего столбца.
Ведущий элемент — ан . Выполним пересчет элементов веду­
щей (первой) строки
0 5 3 1 1/2 0 10
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

Формула для пересчета второй строки: V"

Формула для пересчета третьей строки:

0 5 3 1 1/2 0 10
1 2 1 0 1/2 0 4
0 4/3 -4 0 -3/2 1 -8
0 -1 0 0 - 1/2 0 /-4
Ответ: Х(4; 0; 0); F(X) = 4.
Выполним аналогичную процедуру по замене первого правиль­
ного столбца. Исходная матрица представлена ниже
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
:емент — 024- ВЫПОЛНИМ пересчет :
роки
0 5/3 1 1/3 1/6 0 10/3
- 3 -1 0 1 -1 0 -2
0 8/3 0 4/3 - 5 / 6 1 16/3
0 -1 0 0 - 1/2 0 / - 4
2.8. Графическая интерпретация симплексного метода 47

Формула для пересчета первой строки: v|/"y. = \|/,у. ——ф"у-.


4
Формула для пересчета третьей строки: vj/”y = \|/3у. - —ф"7-•

1 2 1 0 1/2 0 4
-3 -1 0 1 -1 0 -2
4 4/3 0 0 1/2 1 8
0 -1 0 0 - 1/2 0 / - 4
Ответ: X (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
(Rs). Пусть ребро Rs пересекают четыре плоскости (рис. 2.3) в точ­
ках Х \, Хг, Хз и Xs,.
Пусть Хо — стартовая точка движения вдоль ребра R$. Ребра R\
и Яг — неотсекающие, т. е. относительно этих ребер стартовая точка
лежит внутри области допустимых решений. Ребра Лз и Л» — отсе­
кающие, т. е. относительно этих ребер стартовая точка лежит вне
48 Гпава 2. Линейное программирование

R]

Рис. 2.3. Определение направления движения и шага

области допустимых решений. В этом случае возможны следующие


варианты определения размера шага s:

При выборе размера шага по первому условию перемещение


производится в точку пересечения ближайшего неотсекающего
ребра с ребром R$. Второй вариант — перемещает в точку, наиболее
приближенную к границе области допустимых значений. Третий
вариант — максимально близко приближает точку к области допус­
тимых значений. Четвертый вариант — далеко уводит точку от об­
ласти допустимых значений, что увеличивает количество итераций.
Первый и третий варианты можно считать опорными решениями,
так как они медленно и монотонно приближают к цели. Второй ва­
риант максимально быстро приводит к желаемчму решению. Алго­
ритм, построенный по второму варианту носит название метода на­
искорейшего спуска. При практическом использовании симплекс­
ного метода размеры шага могут варьироваться (принимать проме­
жуточные значения) от первого до третьего вариантов [3,4].

2.9. Примеры
1. Определить оптимальный план выпуска изделий с целью по
лучения наибольшей прибыли от их реализации. Условия задачи
приведены в таблице.
2.9. Примеры 49
Нормы расхода сырья на одно
Стоимость
изделие
Изделия ед. изделия,
Томаты, Специи, Эл. энергия,
РУб-
кг кг кВт-ч
Томаты неочищенные 2,1 0,09 7 28
Томаты маринованные 2,3 0,07 9 35
Томатная паста 3,2 0,7 8 34
Запасы сырья 1500 400 4200
Ответ:*(198,93; 31,35; 315,67); Fw = 17400.

2. Кондитерская фабрика на одной поточной линии может вы­


пускать четыре вида шоколадных конфет. Определить план выпуска
каждого сорта конфет и обеспечить наибольший экономический
эффект. Данные приведены в таблице.
Нормы расхода сырья на производство Цена
Сорт конфет 1 кг конфет, кг 1 кг,
Шоколад Сахар Вафли Фундук Крахмал руб.
Мишка на севере 0,2 0,4 0,1 - 0,3 245
Белочка 0,1 0,5 — 0,3 0,1 280
Трюфели 0,65 0,3 — — 0,05 320
Юбилейные 0,15 0,4 — — 0,45 210
Запасы сырья, кг 850 1350 45 95 1500
Ответ: *(450; 316,67; 649,22; 2042,25); F(x) = 835 540,70.

3. Швейная фабрика выпускает мужские костюмы четырех ар­


тикулов. Составить план выпуска костюмов и минимизировать за­
траты на их изготовление по данным, приведенным в таблице.
Трудоемкость, ч Себестои­
Эл. Тепл.
Артикул закрой­ мость од­
костюма контро­ энергия, энергия, ного кос­
щика швеи кВт-ч ккал
лера тюма, руб.
17831 3,5 6 0,5 11,2 580 750
21326 2,5 4 1 8,2 470 590
22337 4,2 5,5 1,2 14 540 810
27468 3 4,5 0,8 10,2 610 550
Нормы затрат 390 490 100 1000 57000
Ответ: *(21,29; 81,03; 6,94; 0); F(s) = 69 392,80.
SO Гпава 2* Линейное программирование
" Ц 1" - Ч ' Ч «в-яаа-д ■■■............... ж - ............................ ..... ............................... ...................................— — i II. ||.| I

4. Определить максимум целевой функции F(x) = 3 х 2 + 2 лг3 + *4


при ограничениях:
xt +x 2 + Зх4 < 10;
- 2дс, + Зх2 + х 3 > 14;
х 2 + 2х 3 + 4jc3 = 6.
Ответ: X (2,325; 6; 0; 0); Fw = 18.

5. Определить максимум целевой функции F<* = 2 х\ + 24*2 + 5*4


при ограничениях:
х, + 1х 2 + 4дс3 < 4;
• 8х, + 12*з + 6х4 > 21;
5дс2 - 2;с3 + 4дс4 = 7.
Ответ: *(1,63; 0,34; 0; 1,33); Fw « 18,02.

6. Определить минимум целевой функции F(X) - 5*i +дс2 + 2дсз + Зх*


при ограничениях:
- 2хх + Зх3 + х4 < 12;
• 3;с2 + 4х 4 > 9;
2 хх + х 2 - 2 х 3 = 6 .

Ответ: ЛГ(18,75; 0; 15,75; 2,25); F(x) = 132.

7. Дана целевая функция F ^ = 2 х \ +jc2 + 2дсз + 4дс4 при ограничениях:


* \ + х 2 + Здс4 < 14;
2хх + Зх2 + х 3 < 33;
4х{ + х 2 + 2х 3 + 4х4 < 19;
Зх, + х 2 + 2дс3 + Зх4 <15.
Решить двойственную задачу.
Ответ: прямая задача— *(0; 0; 0,1667; 4,6667); Fw = 19;
двойственная задача — У(0; 0; 1; 0); Fw = 19.

8. Дана целевая функция F(xy- 2 xi + 4 x2 + 5*4 при ограничениях:


jc, + 7х 2 + 4д:3 < 4;
8х, + 12*з + 6 х 4 < 36;
5х2 - 2 х 3 +4х 4 <21;
Зх, + х 2 + 2х3 + Здс4 ^17.
Решить двойственную задачу.
2.9. Примеры 51
Ответ: прямая задача — Х(0,\165\ 0; 0,2069; 5,3529); F(X) = 27,12;
двойственная задача — У(0; 0,0294; 0,7647; 0,5882); = 27,12.

9. Дана целевая функция F ад = 5jcj +хг + 2х3 + 3^4 при ограничениях:


2хх + 3jc3 + х 4 < 12;
^ Зх2 + 4 х4 < 9;
' 2хх + х 2 - 2х3 < 6;
2 хх + х 2 + 4jc3 + Здг4 <17.
Решить двойственную задачу.
Ответ: прямая задача— ^(3,7778; 0; 0,7778; 2,1111); F(X) = 26,78;
двойственная задача — У(0,3333; 0; 1,2778; 0,8889); F(jC) = 26,78.

Контрольные вопросы

1. Какие задачи относятся к задачам линейного программирования?


2. Как определяется область допустимых решений?
3. Назовите способы задания границ области допустимых решений.
4. Что означает понятие каноническая форма записи задачи линейного
программирования?
5. Что означает понятие вектор решений?
6. Чем отличается опорный план от оптимального плана?
7. Назовите способы определения ведущего столбца?
8. Назовите преимущества и недостатки каждого способа определения
ведущего столбца.
9. Укажите критерий останова алгоритма для поиска максимума целевой
функции.
10. Какова идея симплексного метода поиска оптимального решения?
11. Каков геометрический смысл симплексного метода?
12. Что означает двойственность задачи линейного программирования?
Глава 3
Транспортная задача

3.1. Общие понятия и определения


Транспортная задача относится к классу задач линейного про­
граммирования. Транспортная задача решает проблему нахождения
оптимального (минимального по стоимости) плана распределения и
перемещения ресурсов от производителей к потребителям. Пробле­
ма оптимизации стоимости перевозок актуальна и на сегодняшний
день, так как позволяет фирмам и предприятиям существенно со­
кратить расходы на транспорт. Правильная организация перевозок
позволяет устранить встречные и дублирующие перевозки, сокра­
тить количество дальних перевозок и т. д. При решении транспорт­
ной задачи необходимо:
• обеспечить всех потребителей ресурсами;
• распределить все произведенные ресурсы;
• переместить ресурсы от производителей к потребителям с
наименьшими затратами.
От каждого производителя ресурс может перемещаться к любо­
му потребителю и измеряться в одних единицах измерения.
Примерами транспортных задач (табл. 3.1) могут быть:
Таблица 3.1
Примеры транспортных задач
Производитель Ресурс Единица Потребитель ресурса
ресурса измерения
Шахта Уголь Тонна Тепловая электростанция
Автозавод Автомобиль Штука Магазин
Оптовая база Книга Экземпляр Магазин
Хлебозавод Хлеб Батон Магазин
Рассмотрим простейшую задачу.
3.1. Общие понятия и определения 53
Пример 3.1
Имеется два цеха по изготовлению мягких кресел. Производитель­
ность первого цеха — 4 кресла в сутки, а второго — 2 кресла. Имеются
два магазина, которые продают эти кресла, причем каждый магазин
продает ежедневно по три кресла. Стоимость перевозки одного кресла
от каждого цеха до каждого магазина приведена в табл. 3.2.
Таблица 3.2
Условия примера 3.1
Стоимость перевозки Производители кресел
Цех 1
1 Цех 2
Потребители
кресел Магазин 1 Магазин 2
Определить объем поставок кресел от каждого цеха в каждый
магазин при минимальной стоимости перевозок.
Указанная задача имеет три решения
Решение 1=
]
Решение 2 = “2 2 Решение 3 =
.1 ч ]■
Решение 1: из первого цеха поставляются в первый магазин три
кресла, а во второй магазин — одно кресло из первого цеха и два кресла
из второго цеха. Аналогично можно рассмотреть и остальные решения.
Все три решения являются допустимыми, так как полностью
распределены все ресурсы. Из трех допустимых решений надо вы­
брать наилучшее, т. е. такое, которое обеспечит минимальные за­
траты при перевозке кресел. Это решение будет оптимальным.
Определим стоимости перевозок при каждом решении.
Решение 1 : 3 - 3 + 4 1 + 1- 0 + 6 - 2 = 25.
Решение 2:3-2 + 4- 2 + 1 - 1 + 6 - 1 = 2 1 .
Решение 3 : 3 1 + 4 - 3 + 1- 2 + 6-0=17.
Таким образом, решение 3 будет оптимальным.
Из приведенного примера видно, что транспортная задача разре­
шима, когда количество произведенного ресурса равно количеству
потребленного ресурса. Такая задача называется сбалансированной
или закрытой. В реальных условиях такая задача достаточно редкая.
Чаще встречаются ситуации, когда произведено ресурса больше, чем
его могут потребить — избыток ресурса. Или заказов на ресурс
больше, чем выпускает изготовитель, — дефицит ресурса. В том и
другом случаях поступают по одной схеме: в задачу добавляют или
54 Гпава 3. Транспортная задача

фиктивного потребителя или фиктивного изготовителя и находят оп­


тимальное решение. В первом случае произведенный ресурс будет за­
леживаться у одного (или нескольких) изготовителей, а во втором —
один потребитель (или несколько потребителей) не дополучит ре­
сурс. Такие транспортные задачи называются несбалансированными
или открытыми. Рассмотренные ниже методы решения транспорт­
ной задачи имеют дело со сбалансированными задачами.
Транспортная задача всегда разрешима и может иметь:
• единственное решение;
• несколько допустимых решений, одно из которых — опти­
мальное;
• несколько допустимых решений и все они — оптимальные.

Пример 3.2
Для следующей транспортной задачи (табл. 3.3.) любой допус­
тимый план является оптимальным.
Таблица 3.3
Условие примера 2
Стоимость перевозки Производитель ресурса
1 2 3 2
4 5 6 3
7 8 9 2
Потребитель ресурса 4 1 2
При любом допустимом плане распределения ресурсов стои­
мость перевозок от производителей ресурсов к потребителям ресур­
сов будет одинаковой и равной 33 [4].
В простейших примерах оптимальное решение находилось про­
стым перебором вариантов. На практике размерность транспортной
задачи составляет несколько десятков производителей и потребите­
лей ресурсов. Поэтому при решении реальных транспортных задач
надо решить две проблемы: найти допустимые решения и из числа
допустимых решений выбрать оптимальное решение. Для решения
этих проблем разработаны различные методы.
Общий алгоритм решения транспортной задачи:
1. Формализация задачи (составление матрицы стоимостей
перевозок).
2. Приведение задачи к сбалансированному виду.
3.2. Математическая формулировка транспортной задачи 55
3. Построение опорного плана.
4. Построение оптимального плана.
Для построения опорного плана разработаны три метода:
• метод «северо-западного угла»;
• метод наименьшего элемента;
• метод добротностей.
Для определения оптимального плана перевозок разработаны
методы:
• распределительный;
• потенциалов;
• дельта-метод.

3.2. Математическая формулировка


транспортной задачи
От каждого нго производителя произведенный им ресурс а, мо­
жет перемещаться к у-му потребителю ресурса в объеме, не превы­
шающем bj. Таким образом, ху будет означать перемещение некото­
рого числа единиц ресурса от i-ro производителя к у'-му потребите­
лю. Через Су обозначим стоимость перемещения единицы ресурса
от /-го производителя к j- му потребителю.
Тогда матрица X = {jc,y} будет называться матрицей перевозок
или планом перевозок и, соответственно, матрица С = {с,у} — мат­
рицей стоимости.
Предполагаем, что суммарный объем произведенного ресурса в
точности совпадает с объемом потребления ресурса (задача закры­
того типа). Понятно, что любой план перевозок X, обеспечивающий
распределение ресурса между потребителями, будет допустимым.
Суммарная стоимость всех перевозок, вычисленная по любому до­
пустимому плану, будет

F(*)=1£ Z ciJxir (з л )
I j
Оптимальным планом перевозок X* будет называться тот из до­
пустимых планов перевозок, который обеспечит минимальную
сумму затрат на перевозку всех ресурсов.
Отсюда следует, что исходные данные транспортной задачи за­
даются вектором произведенных ресурсов А = {о,}, вектором по­
56 Гпава 3. Транспортная задача

требления ресурсов В = {£»,} и матрицей стоимостей С = {с,у} при / =


1, т vij = 1, где т — общее число производителей ресурса,
а и — общее число потребителей ресурса.
Математическая модель транспортной задачи такова:
т п
F(x) = У У р цХи =>rnin (3-2)

при заданных условиях ограничении:


12 %\п
21 *22 *23 *2/7 = а
С31 32 *33 г3п = а или
1= 1

т\ m2 \яЗ =
*11 121 т\ =
*12 *22 *32 *т2 — Ь2;
*13 С23 *33 *тЗ = *з; или (3.4)
у=1
*1 п Х 2п х Ъп =
где > 0; / = 1, т; j = 1, и.
Таким образом, транспортную задачу можно решить симплекс­
ным методом, но при этом потребуется выполнить большое количе­
ство пересчетов матрицы.
При анализе условий транспортной задачи выявлено, что все
коэффициенты при неизвестных Ху равны единице. Это обстоя­
тельство позволяет решить транспортную задачу более простыми
методами, нежели симплексный метод. Далее условия ограниче­
ний (3.3) и (3.4) линейно зависимы, так как суммы правых частей
по условию задачи должны быть равны (сумма произведенных ре­
сурсов распределяется между потребителями ресурсов). Количест­
во линейно независимых уравнений среди условий ограничений
(3.3) и (3.4) равно т + « - 1. В поставленной транспортной задаче
общее количество переменных равно щ п и количество базисных
переменных равно т + rt - 1, следовательно количество свободных
переменных будет равно (m - 1) (и - 1). В задачах линейного про­
граммирования оптимальное решение находится в одной из вер­
шин области допустимых решений, тогда при решении транспорт­
ной задачи как минимум (т - 1) (и - 1) перевозок будут иметь ну­
левое значение.
3.3. Построение опорного плана перевозок 57

По аналогии с симплексным методом допустимым решением


будем называть любое решение, которое удовлетворяет условиям
(3.3) и (3.4). Опорным решением будем называть такое, которое
имеет т + п - 1 перевозок, отличных от нуля. Оптимальным реше­
нием будет одно из опорных решений, которое обеспечивает мини­
мальную сумму затрат по всем перевозкам.
Если при решении задачи линейного программирования сим­
плексным методом требовалось на каждом шаге пересчитывать
матрицу целиком, то при решении транспортной задачи одним из
методов поиска оптимального решения пересчитывается только
часть матрицы (замкнутый контур), что резко сокращает количество
вычислений.

3.3. Построение опорного плана перевозок


Для того чтобы начать решение транспортной задачи, надо по­
строить опорный план. Опорный (или начальный) план является
одним из допустимых планов.

3.3.1. Метод «северо-западного угла»

При использовании этого метода опорный план перевозок начи­


нают строить с левого верхнего (северо-западного) угла матрицы
перевозок по следующему алгоритму:
1. Первому потребителю назначается ресурс от первого произ
водителя. При этом возможны следующие варианты:
• запрос первого потребителя удовлетворен не полностью, то­
гда недостающий ресурс первому потребителю добавляют
от второго производителя и при необходимости от третьего
производителя, до тех пор пока потребности первого потре­
бителя не будут полностью обеспечены;
• запрос первого потребителя удовлетворен полностью. Остаток
ресурса от первого производителя назначают второму потре­
бителю, а при необходимости и третьему потребителю и т. д.;
• запрос первого потребителя обеспечен полностью ресурсом
первого производителя и ресурс первого производителя из­
расходован полностью. Далее переходят к обеспечению за­
проса второго потребителя.
58 Глава 3. Транспортная задача

2. Затем обеспечивают потребности второго потребителя по об­


разцу первого потребителя. И так далее пока не будут обеспечены
запросы всех потребителей.
Рассмотрим работу метода «северо-западного угла».

Пример 3.3
Условия примера 3.3 заданы матрицей стоимостей, а ответ -
матрицей плана перевозок (рис. 3.1).

Матрица стоимостей План перевозок


исходная
6 5 8 7 14 10 4 14
3 6 4 2 12 10 2 12
9 1 3 6 8 4 4 8
10 14 6 4 10 14 6 4
Рис. 3.1. Условие и ответ примера 3.3

Определим стоимость всех перевозок по полученному плану.


С = Х,гС„ +Х, 2 -С12 + Х22-С22+Х23-С2з+Х}з-Сз} +Х}4-Сз4 =
= 10-6 + 4-5 + 10-6 + 2-4 + 4-3 + 4 - 6 =
= 60 + 20 + 60 + 8 + 12 + 24 = 184.
При распределении ресурсов по методу северо-западного угла не
учитываются затраты на перевозки, указанные в матрице стоимостей,
следовательно опорный (допустимый) план перевозок будет не оп­
тимальным. Метод минимальных элементов, рассмотренный далее,
учитывает затраты на перевозки при создании опорного плана, по­
этому стоимость затрат на все перевозки должна быть меньшей.

3.3.2. Метод минимальных элементов

Суть метода состоит в том, что в матрице стоимостей С = {с,]}


выбирается стоимость минимальной перевозки су. Затем назначает­
ся максимальный объем ресурса от производителя i к потребителю j
для данной перевозки. При этом возможны три варианта:
1) производитель i имеет ресурса больше, чем надо потребителюу.
В этом случае удовлетворяется полностью заявка потребителя j,
а остаток произведенного ресурса будет распределен после. Так как
потребность потребителя j удовлетворена полностью, то исключа­
3.3. Построение опорного плана перевозок 59
ется из рассмотрения столбец матрицы стоимости, принадлежащий
/-му потребителю;
2) производитель / имеет ресурса меньше, чем надо потребителю j.
В этом случае весь имеющийся ресурс производителя / назнача­
ется потребителю j. Недостающая часть ресурса потребителю j бу­
дет назначена потом. Так как весь ресурс производителя / исчерпан
полностью, то из рассмотрения удаляется строка матрицы стоимо­
сти, принадлежащая производителю i;
3) производитель / имеет ресурса столько, сколько надо потре­
бителю у.
В этом случае, аналогично рассмотренным выше случаям, из
рассмотрения удаляются и строка, и столбец матрицы стоимости.
Затем из матрицы стоимостей выбирается следующая минималь­
ная стоимость перевозки ресурса от производителя к потребителю,
удовлетворяются потребности следующего потребителя ресурса
(полностью или частично) и удаляется из рассмотрения очередная
строка или столбец матрицы стоимостей. Процесс повторяется до тех
пор, пока не будет распределен полностью весь произведенный ре­
сурс между всеми потребителями. Так как ресурса произведено ров­
но столько, сколько нужно потребителям, то задача распределения
будет обязательно выполнена.

Пример 3.4
Используя условия примера 3.4 (рис. 3.2) определить опорный
план перевозок.

Стоимость перевозок Производство


6 5 8 7 14
3 6 4 2 12
9 1 3 6 8
10 14 6 4
Потребление
Рис. 3.2. Условия примера 3.4

Из таблицы примера видно, что минимальная стоимость пере­


возки суз. — между третьим производителем и вторым потребите­
лем. Элемент сц на данном шаге считается ведущим. Поэтому на­
значим второму потребителю 8 единиц ресурса от третьего произ-
60 Гпава 3. Транспортная задача

Матрица стоимостей Опорный план


6 5 8 7 14
3 6 4 2 12

9 1 3 6 8

10 14 6 4

После 1-го шага 6 5 8 7 14


3 6 4 2 12

X 8
10 6 6 4

После 2-го шага 6 5 8 14


3 6 4 X 8 4
8

10 6 6

После 3-го шага 6 5 8 14


X
00
4
8

2 6 6

После 4-го шага 6

4
00

После 5-го шага X 8 6 2 6

4
00

После 6 -го шага л 2 6 6

8 4
8

Рис. 3.3. Процесс распределения ресурсов


3.3. Построение опорного плана перевозок 61
водителя. Недостающие 6 единиц ресурса второму потребителю
назначим позже от другого производителя. Так как ресурс третьего
производителя использован полностью, то исключаем из рассмот­
рения третью строку {9; 1; 3; 6} матрицы стоимостей.
Из оставшихся 1-й и 2-й строк матрицы стоимостей минималь­
ный элемент c-ц — между вторым производителем и четвертым по­
требителем. Потребность четвертого потребителя (4 единицы) в ре­
сурсе полностью удовлетворяется запасом второго производителя.
Запас ресурса (8 единиц) у второго производителя будет распреде­
лен позже. Поэтому четвертый столбец матрицы из дальнейшего
рассмотрения исключается.
Аналогично распределяем оставшиеся ресурсы. Процесс рас­
пределения показан на рис. 3.3.
На рис. 3.3 и последующих в матрице стоимостей минимальный
(ведущий) элемент подчеркнут, символом «х» в удаляемой строке
или столбце отмечено место ведущего элемента.
2 6 6
Таким образом, получен опорный план X = 8
8
Для полученного опорного плана определим стоимость всех
перевозок.
С = Х \\'С \\ + Х \ г • С \г + Х ц • Сп + Х г \ -С г\ + Х ы - С ы + *з2- сз2 =
= 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 из исходной матрицы, а в матрицу решения (плана перевозок)
записывается поставка ресурса;
б) спрос потребителя удовлетворен частично, а ресурс произво­
дителя использован полностью. В этом случае из рассмотрения уда­
ляется строка к из исходной матрицы, а в матрицу решения (плана
перевозок) записывается поставка ресурса;
в) спрос потребителя удовлетворен полностью и полностью ис­
черпан ресурс производителя. В этом случае из рассмотрения уда­
ляется строка к и столбец t из исходной матрицы, а в матрицу реше­
ния (плана перевозок) записывается поставка ресурса;
5) переходят к следующему шагу.
В соответствии с требованиями предыдущего шага алгоритма из
исходной матрицы стоимостей удалена строка или столбец (или од­
новременно и строка, и столбец) и выполняется возврат к первому
шагу алгоритма. Процесс повторяется до тех пор, пока не будут
распределены все ресурсы [3, 4, 5].
3.3. Построение опорного плана перевозок 63
Пример 3.5
Рассмотрим работу алгоритма на примере 3.3. Результат после­
довательных преобразований показан на рис. 3.4.

Первый проход по алгоритму


Исходная Преобразование Преобразование
строк столбцов
6 5 8 7 14 1 0 3 2 14 0 0 1 2 14
3 6 4 2 12 1 4 2 0 12 0 4 0 0 12
9 1 3 6 8 8 0 2 5 8 7 0 0 5 8
10 14 6 4 10 14 6 4 10 14 6 4

Матрица стоимостей План перевозок


преобразование строк промежуточный
отность 0 0 0 8
0 0 0 1 2 14 14
0 0 4 0 0 12 8
0 7 0 0 5 8 8
10 14 6 4 10 14 6

Второй проход по алгоритму


Исходная Преобразование Преобразование
строк столбцов
6 5 8 14 1 0 3 14 1 0 2 14
3 6 4 8 0 3 1 8 0 3 0 8
9 1 3 8 8 0 2 8 8 0 1 8
10 14 6 10 14 6 10 14 6

Матрица стоимостей План перевозок


преобразование строк промежуточный
ютность 10 0 6
14 1 0 2 14 14 14
0 0 3 0 12 4 8
8 8 0 1 8 8
10 14 6 10
б
64 Гпава 3. Транспортная задача

Третий проход по алгоритму


Исходная Преобразование Преобразование
стоимостей

строк столбцов
Матрицы

0 0 0
3 4 8 0 1 8 0 1 8
9 3 8 6 0 8 6 0 8
10 6 10 6 10 6

Матрица стоимостей План перевозок


преобразование строк промежуточный
ютность 60 6

о 1 0 14
8 0 1 8 8 4
48 6 0 8
10 6

Четвертый проход по алгоритму


Исходная Преобразование Преобразование
строк столбцов
стоимостей
Матрицы

0 0
ОО
ОО

ОО
9 3 9 3 9 3
2 6 2 6 2 6

Матрица стоимостей План перевозок


преобразование строк промежуточный
Добротность 90
0 14
8 4
ОО

96 9 3 2 6

2 6 10

Рис. 3.4. Создание опорного плана перевозок


а — первый проход по алгоритму; б — второй
проход по алгоритму; в — третий проход по ал­
горитму; г — четвертый проход по алгоритму
3.4. Создание оптимального плана перевозок 65
— — — 1 ..... — — ..... — ■■ -----— - я - д — -аи-яв

Осталось распределить восемь единиц ресурса от третьего про­


изводителя. Распределить ресурсы можно единственным способом:
две единицы ресурса — первому потребителю и шесть единиц —
второму. Поэтому план перевозок будет иметь вид:

План перевозок
опорный план
14
8 4
2 6
10 14 6 4

После четвертого прохода по алгоритму получен опорный план


для решения транспортной задачи. Определим стоимость всех пере­
возок по полученному опорному плану.
С = х 12 • С \ 2 + Хгх •С21 + *24 ‘ С24 + *31 ‘ ^31 + *33 ' ^33 =
= 1 4- 5 + 8 - 3 + 4 - 2 + 2 - 9 + 6-3 = 7 0 + 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.

Стоимость перевозок Производство Опорный план


8 14 2 6 6 14
12 8 4 12
8 8
10 14 10 14 6 4
Потребление
Рис. 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.
Вершинам построенных контуров присвоим значения коэффи­
циентов. Значения коэффициентов равны соответствующим зна­
чениям элементов матрицы стоимостей, а знаки должны строго
чередоваться.
Первый контур: С, = 7 + (-2 ) + 3 + (-6 ) = 2.
Второй контур: С2 = 6 + (-3 ) + 6 + (-5 ) = 4.
Третий контур: Сэ = 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—
-
2
8
г
L
|- 0
1
4
14
12
8 Г —6—
2 L -1 6 4
14
12
8 8 8 8
10 14 б 4 10 14 6 4

Рис. 3.6. Первое перераспределение ресурсов:


a — опорный план перевозок до перераспреде­
ления; б — опорный план перевозок после пере­
распределения

Выполним проверку правильности сделанной операции. До пере­


распределения поставок сумма по каждому столбцу третьего контура
(без учета знака) составляла: 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:
С, = 8 + (-4 ) + 3 + (-6 ) = 1.
Для элемента 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. Создание оптимального плана перевозок ДО

Для элемента 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 + (-2 ) + 3 + (-6 ) + 5 + ( -1 ) = 5.
Полученный опорный план оптимален, так как все алгебраиче­
ские суммы не отрицательны.
Вычислим стоимость всех перевозок по оптимальному плану
С = 8 6 + 6 - 5 + 2 - 3 + 6 4 + 4 - 2 + 8 - 1 = 4 8 + 30 + 6 + 24 + 8 + 8 =124.

3.4.2. Метод потенциалов

Имея опорный план перевозок, в методе потенциалов выполня­


ют анализ клеток матрицы плана перевозок. Все заполненные клет­
ки матрицы перевозок называются базисными, все незаполненные
клетки — свободными. За опорный план перевозок возьмем план,
полученный методом «северо-западного угла» (рис. 3.7).

10 4 14
10 2 12

4 4 8

10 14 6 4
Рис. 3.7. Опорный план перевозок для метода потенциалов

Суммарная стоимость перевозок опорного плана С = 184.


Базисные клетки опорного плана — <яц, <*12, агг, <*23, <*зз, <*34; сво­
бодные — ой, Дм, <*21, ° 24, «31» ап- Для каждой свободной клетки,
аналогично распределительному методу, можно построить замкну­
тый контур (цикл) и перераспределить ресурсы между поставщика­
ми и потребителями.
План перевозок будет оптимальным, если он содержит т + и
положительных чисел щ и vj, которые называются потенциалами
строк и столбцов соответственно. Для вычисления потенциалов в
матрицу плана перевозок добавляют одну строку сверху и один стол­
бец слева (рис. 3.8).
Для определения потенциалов строк и столбцов используют
формулу и, + vj = су, подставляя в нее значения из базисных клеток.
70 Гпава 3. Транспортная задача

а
3
s 10 4 14
я
яи 10 2 12
н
о 4 4 8
С
10 14 б 4
Рис. 3.8. Добавленные строка и столбец для расчета потенциалов
«
Для начала выполнения расчетов надо потенциал одной строки или
одного столбца приравнять нулю. Затем, используя указанную фор­
мулу, выполнить остальные вычисления. Примем за ноль потенциал
первой строки щ = 0 .
Для уменьшения количества вычислений потенциал равный
нулю желательно присвоить той строке или столбцу, который
содержит наибольшее количество заполненных клеток._________
Тогда vj = с\ \ - щ = 6 - 0 = 6 . Далее выбираем те базисные клетки,
для которых уже имеется один потенциал (или строки или столбца), и
определяем следующий потенциал. Для базисной клетки ап известен
потенциал первой строки щ. Поэтому можем определить потенциал
второго столбца: v2 = с\2- щ = 5 - 0 = 5.
Аналогично выполним расчет оставшихся потенциалов (рис. 3.9):
Определим потенциал второй строки: U2 “ С22 ~ V2 = 6 —5 = 1.
Определим потенциал третьего столбца: Уз = с2ъ - и2 = 4 - 1 = 3 .
Определим потенциал третьей строки: щ = с33 - Уз = 3 - 3 = 0.
Определим потенциал четвертого столбца: v4 = С3 4 - щ = 6 - 0 =6.
Матрица Опорный Оценки свободных
стоимостей план клеток
6 5 3 6 6 5 3 6
6 5 8 7 14 0 10 4 14 0 X X - 5 - 1 14
3 6 4 2 12 1 10
2 12 1 4 X X 5 12
9 1 3 6 8 0 4 4 8 0 -3 4 X X 8
10 14 6 4 10 14 6 4 10 14 6 4
Рис. 3.9. Расчет потенциалов строк и столбцов
3.4. Создание оптимального плана перевозок 71
Для свободных клеток вычисляются оценки по формуле щ + Vj -
~ С у < 0.
Для клетки 1,3 имеем: и\ + v3 - ci3 < 0 ; 0 + 3 - 8 < 0 -5 < 0;
Для клетки 1,4 имеем: щ + V4 - с\4 < 0 ; 0 + 6 - 7 < 0 - 1 < 0 ;
Для клетки 2,1 имеем: щ + vt - С21 < 0 ; 1 + 6 - 3 < 0 4 < 0; не
выполняется.
Для клетки 2,4 имеем: м2 + v4 - С24 < 0; 1 + 6 - 2 < 0; 5 < 0; не
выполняется.
Для клетки 3,1 имеем: i/3 + V| - c3i < 0 ; 0 + 6 - 9 < 0; -3 < 0;
Для клетки 3,2 имеем: t/3 + v-i - с32 < 0 ; 0 + 5 - 1 < 0; 4 < 0; не
выполняется.
Если оценки всех свободных клеток отрицательны или равны
нулю, то опорный план — оптимальный. Если хотя бы одна оценка
больше нуля, то относительно этой свободной клетки строят замк­
нутый контур и выполняют перераспределение ресурсов (аналогич­
но распределительному методу). Если несколько свободных клеток
имеют оценки, большие нуля, то замкнутый контур строят для сво­
бодной клетки с наибольшим значением оценки.
Наибольшую оценку имеет клетка о24- Относительно этой клет­
ки построим замкнутый прямоугольный контур и переместим грузы
(рис. 3. 10).

Опорный Перераспределение Оценки свободных


план ресурсов клеток
6 5 -2 1 6 5 -2 1

10 4 14 0 10 4 14 0 X X - 1 0 - 6 14
10 2 г1 12 1 10 2 12 1 4 X -5 X 12
4 4 8 5 6 2 8 5 2 9 X X 8
10 14 6 4 10 14 6 4 10 14 6 4
Рис. ЗЛО. Первое перераспределение ресурсов

Аналогично выполним расчеты потенциалов и оценок свобод­


ных клеток.
Расчет потенциалов.
Потенциал первой строки примем за ноль.
Определим потенциал первого столбца: vj = с \i - и\ = 6 —0 = 6.
Определим потенциал второго столбца: v2 = с ]2 - «1 = 5 —0 = 5.
Определим потенциал второй строки: иг = c22 - v2 = 6 - 5 = 1.
Определим потенциал четвертого столбца: v4 = с24 - «2 = 2 - 1 = 1.
72 Гпава 3. Транспортная задача

Определим потенциал третьей строки: Щ = С 34 - v4 = 6 - 1 = 5.


Определим потенциал третьего столбца: V3 —С3 3 —щ —3 —5 = —2.
Расчет оценок свободных клеток.
Для клетки 1,3 имеем: щ + v3 - с\з <0; 0 -2 - 8 < 0; -10 < 0 ;
Для клетки 1,4 имеем: щ + v4 - с\4 <0; 0 + 1 - 7 < 0; -6 < 0;
Для клетки 2,1 имеем: и2 + Vi - с2\ <0; 1 + 6 - 3 < 0; 4 < 0; не
выполняется.
Для клетки 2,3 имеем: и2 + v3 - с2з <0; 1 -2 - 4 < 0; “ 5 < 0;
Для клетки 3,1 имеем: щ + v\ - С31 <0; 5 + 6 - 9 < 0; 2 < 0; не
выполняется.
Для клетки 3,2 имеем: щ + v2 - с32 <0; 5 + 5 - 1 < 0; 9 < 0; не
выполняется.
Наибольшую оценку имеет клетка а32• Относительно этой клет­
ки построим замкнутый прямоугольный контур и переместим грузы
(рис. 3.11).
Опорный Перераспределение Оценки свободных
план ресурсов клеток
1 0 2 -4 1 0 2 -4
10 4 145 10 4 14 5 X X - 1 - 6 14
126 8 4 12 6 4 X 4 X 12
-- | I2
~tr 2 8 1 2 6 8 1 -7 X X -9 8
10 14 6 4 10 14 6 4 10 14 6 4
Рис. 3.11. Второе перераспределение ресурсов
Аналогично выполним расчеты потенциалов и оценок свобод­
ных клеток.
Расчет потенциалов.
Потенциал второго столбца примем за ноль.
Определим потенциал первой строки: щ = С\2 - v2 = 5 - 0 = 5.
Определим потенциал второй строки: U2 = С22 — V2 = 6 —0 = 6.
Определим потенциал третьей строки: щ = С32 - v2 = 1 - 0 = 1.
Определим потенциал первого столбца: Vi = С\\ - и\ = 6 - 5 = 1.
Определим потенциал третьего столбца: v3 = С33 - щ = 3 - 1 = 2 .
Определим потенциал четвертого столбца: v4 = с24- и2 = 2 - 6 = -4.
Расчет оценок свободных клеток.
Для клетки 1,3 имеем: щ + v3 - С\3 < 0 ; 5 + 2 - 8 < 0; - 1 < 0 ;
Для клетки 1,4 имеем: щ + v4 - см < 0 ; 5 - 4 - 7 < 0; -6 < 0;
Для клетки 2,1 имеем: и2 + v\ - с2\ < 0 ; 6 + 1 - 3 < 0; 4 < 0; не
выполняется.
3.4. Создание оптимального плана перевозок 73
Для клетки 2,3 имеем: и2 + v3 - c2i < 0; 6 + 2 - 4 < 0; 4 < 0; не
выполняется.
Для клетки 3,1 имеем: щ + Vi - c3t < 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).

Опорный Перераспределение Оценки свободных


план ресу рсов клеток
6 5 -1 -1 6 5 - 1 -1
п4 14 0 2 1 2 14 0 X X - 9 - 8 14
L 8 4 4 12 -3 X -4 - 8 X 12
12 -3 8
2 6 8 -4 2 6 8 - 4 -7 X X - 1 1 8
10 14 6 4 10 14 6 4 10 14 6 4
Рис. 3.12. Третье перераспределение ресурсов
Аналогично выполним расчеты потенциалов и оценок свобод­
ных клеток.
Расчет потенциалов.
Потенциал первой строки примем за ноль.
Определим потенциал первого столбца: vi = C n —и, = 6 —0 = 6.
Определим потенциал второго столбца: v2 = С\2 - щ = 5 - 0 = 5.
Определим потенциал второй строки: и2- с 2\ - V| = 3 —6 = -3.
Определим потенциал третьей строки: Щ= Суг- V2 = 1 —5 = —4.
Определим потенциал третьего столбца: v3 = Сзз - щ = 3 —4 = —1.
Определим потенциал четвертого столбца: V4 = С24 - «2 = 2 - 3 = - 1 .
Расчет оценок свободных клеток.
Для клетки 1,3 имеем: щ + v3 - ci3 < 0 ; 0 —1 —8 < 0; -9 < 0;
Для клетки 1,4 имеем: щ + v4 - си < 0 ; 0 - 1 - 7 < 0; -8 < 0;
Для клетки 2,2 имеем: и2 + vj - с2\ < 0 ; -3 + 5 —6 < 0; —4 < 0;
Для клетки 2,3 имеем: и2 + v3 - с23 < 0 ; - 3 - 1 - 4 < 0; -8 < 0;
Для клетки 3,1 имеем: ы3 + V| - сц < 0 ; —4 + 6 - 9 < 0; -7 < 0;
Для клетки 3,4 имеем: м3 + v4 - с34 < 0 ; - 4 - 1 - 6 < 0; -11 < 0;
Так как все оценки свободных клеток отрицательны или равны
нулю, то опорный план является оптимальным. Определим стои­
мость перевозок по оптимальному плану:
С = 2 - 6 + 12-5+ 8-3+ 4-2 + 2 - 1 + 6 - 3 = 12 + 60 +2 4 + 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} из значений всех

Матрица Преобразование Преобразование


исходная строк столбцов
- 1 0 - 2 0
6 5 8 7 14 -5 1 0 3 2 14 0 0 1 2 14
3 6 4 2 12 - 2 1 4 2 0 12 0 4 0 0 12

9 1 3 6 8 - 1 8 0 2 5 8 7 0 0 5 8

10 14 6 4 10 14 6 4 10 14 6 4
Рис. 3.13. Исходные данные и первое преобразование
76 Гпава 3. Транспортная задача

элементов соответствующей строки, и, аналогично, для процедуры


преобразования столбцов надо значение соответствующего элемента
вектора t = {1; 0; 2; 0} вычесть из всех значений элементов столбца.
Напомним, что вектор производства ресурсов обозначался как
а = {а,}, а вектор потребления ресурсов — b = {bj). Определим дель-
та-оценку выполненных преобразований.
До = { b t } - { a k } = (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.
Если в разреженной таблице можно указать на пересечении
строки / и столбца j такой ноль, что он будет единственный или в
строке /, или в столбце j , то относительно этого нуля надо выпол­
нить одно вредное и одно полезное преобразования.
В нашем примере (рис. 3.13) такой элемент единственный — агл-
Относительно элемента а2л выполним одно вредное и одно полезное
преобразования (рис. 3.14).

Матрица Матрица Матрица


разреженная вредное действие полезное действие
-2
0 0 1 2 14 0 0 1 2 14 0 0 1 0 14
0 4 0 0 12 2 2 6 2 2 12 2 6 2 0 12

7 0 0 5 8 7 0 0 5 8 7 0 0 3 8

10 14 6 4 10 14 6 4 10 14 6 4
Рис. 3.14. Парное преобразование матрицы

Определим дельта-оценку выполненных преобразований.


А, = (10; 14; 6; 4) (0; 0; 0; 2) - (14; 12; 8) (0; 2; 0) = 8 - 24 = -1 6 .
Дельта-оценка не может быть отрицательной. Другого преобра­
зования указать нельзя, поэтому план перевозок, определенный на
предыдущем шаге, будет оптимальным.
Определим оптимальный план перевозок для нашего примера.
На первом шаге назначаются максимально возможные перевоз­
ки для строк и столбцов, имеющих единственное нулевое значение.
Для нашего примера — столбец четвертый (рис. 3.15).
Так как потребность четвертого потребителя удовлетворена
полностью, то четвертый столбец исключается из дальнейшего рас­
смотрения. На втором шаге отсутствуют столбцы или строки, со­
держащие единственный ноль. В этом случае выбирается клетка с
нулевым значением, имеющая минимальную стоимость перевозки
3.4. Создание оптимального плана перевозок 77
Матрица исходная План перевозок
Шаг 1 0 0 1 2 14 14
0 4 0 0 12 4 12

7 0 0 5 8 8

10 14 6 4 10 14 6 4
Рис. 3.15. Первый шаг определения оптимального плана перевозок

единицы ресурса (рис. 3.16). В нашем примере это клетка а32- Таким
образом, можно утверждать, что пример содержит альтернативное
оптимальное решение.

Шаг 2 0 0 1 14 14
0 4 0 X 8 4 12

7 0 0 8 8 8

10 14 6 10 14 6 4
Рис. 3.16. Второй шаг определения оптимального плана перевозок

Так как третий производитель исчерпал свой ресурс, то третья


строка удаляется из дальнейшего рассмотрения. На третьем шаге
назначаются ресурсы второму и третьему потребителям, которые
исключаются из дальнейшего рассмотрения (рис. 3.17).

ШагЗ 0 0 1 14 6 8

0 4 0 X 8 6 4 2

X 8

10 6 6 10

Рис. 3.17. Третий шаг определения оптимального плана перевозок

На последнем шаге назначаются ресурсы первому потребителю


(рис. 3.18).

Шаг 4 0 X 8 8 6 14
0 X X 2 2 6 4 12

X 8 8

10 10 14 6 4
Рис. 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. Задачи, сводящиеся к транспортной задаче

4. Если после выполнения пункта 3 не удалось получить по един­


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

Пример 3.8
Распределить работы между исполнителями. Исходные данные
приведены в таблице.
4 7 3 3
1 2 6 2

3 5 4 1

6 2 1 4
1 1 1 1
Выполним разреживание (зануление) матрицы.
0 - 1 0 0
-3 1 4 0 0 1 -3 1 3 0 0 1

-1 0 1 5 1 1 -1 0 0 5 1 1

-1 2 4 3 0 1 -1 2 3 3 0 1

-1 5 1 0 3 1 -1 5 0 0 3 1

1 1 1 1 1 1 1 1

Слева и сверху от матрицы стоимостей указаны векторы вычи­


таний по строкам и по столбцам. Первый столбец и третья строка
содержат по единственному нулю. Поэтому второму исполнителю
можно назначить первую работу и третьему исполнителю —четвер­
тую работу. Но первому и четвертому исполнителям не возможно
назначить работы. Применим венгерский алгоритм. Вычеркнем нули.
0 - 1 0
-J 1 J и 1
—1 '(Г 1Т" 1J 1 1
-1 2 3 3 ) 1
-= г -з- -(Г -tг -1—
1 1 1
В трех оставшихся клетках — минимальный элемент 2. Вычтем
его из трех невычеркнутых клеток.
80 Гпава 3. Транспортная задача

"Т" 1'J " ■ч 1


1
-2 0 1 1 ( i
г
"ГГ "U1
1 1 1
К трем клеткам четвертого столбца, находящимся на пересечв'
нии линий, прибавим 2.
2
1 3 0 2

0 0 5 3
0 1 1 0

5 0 0 5
1 1 1 1
Единственный ноль находится в первой строке и четвертом
столбце. Процедуру необходимо повторить.

Теперь единственный ноль имеется в четвертой строке, третьем


и четвертом столбцах. Поэтому четвертому исполнителю будет на­
значена вторая работа, первому исполнителю — третья работа и
третьему исполнителю — четвертая работа. Второму исполнителю
осталась первая работа.
Определим суммарную стоимость работ: 2 + 3 + 1 + 1 = 7.

3.6. Примеры
1. Составьте план перевозок ресурсов от производителей к по
требителям с минимальными затратами по условиям таблицы. Зада­
чу решить методами «северо-западного угла» и потенциалов.
3.6. Примеры 81

Стоимость перевозки единицы ресурса, Производители ресурса


руб. Объем произ­ Наименование
водства ресурса производителя
4 2 3 6 2 125 1

1 3 2 5 3 240 2

3 2 6 4 2 75 3
2 1 4 3 3 330 4
85 45 280 110 250 Объем производства ресурса
1 2 3 4 5
Потребители ресурса
Наименование потребителя
2. Составьте план перевозок ресурсов от производителей к по­
требителям с минимальными затратами по условиям таблицы. Зада­
чу решить методами минимального элемента и распределительным.

Стоимость перевозки единицы ресурса, Производители ресурса


РУб- Объем произ­ Наименование
водства ресурса производителя
24 36 28 16 33 125 1

42 52 38 22 46 240 2

14 58 22 34 36 75 3
2 0 34 40 52 37 330 4
150 245 70 340 220 Объем производства ресурса
1 •2 3 4 5
Потребители ресурса
Наименование потребителя
3. Составьте план перевозок ресурсов от производителей к по­
требителям с минимальными затратами по условиям таблицы. Зада­
чу решить методами добротностей и дельта-методом.

Стоимость перевозки единицы ресурса, Производители ресурса


РУб- Объем произ­ Наименование
водства ресурса производителя
18 32 14 16 33 233 1

16 26 34 22 46 115 2

14 22 26
34 36 307 3
12 8 52
20 37 425 4
134 182 75 224 165 Объем производства ресурса
1 2 3 4 5
Потребители ресурса
Наименование потребителя
4. Составьте план перевозок ресурсов от производителей к по­
требителям с минимальными затратами по условиям таблицы. Зада­
чу решить методами «северо-западного угла» и распределительным.
6 - 1962
Гпава 3. Транспортная задача

Стоимость перевозки единицы ресурса, Производители ресурса


руб. Объем произ­ Наименование
водства ресурса производителя
60 35 95 20 15 1200 1

50 55 100 80 120 800 2

40 25 75 75 80 250 3
30 65 60 45 25 450 4
555 343 133 235 424 Объем производства ресурса
1 2 3 4 5
Потребители ресурса
Наименование потребителя
5. Составьте план перевозок ресурсов от производителей к по­
требителям с минимальными затратами по условиям таблицы. Зада­
чу решить методами наименьшего элемента и дельта-методом.
Производители ресурса
Стоимость перевозки единицы ресурса,
руб. Объем произ­ Наименование
водства ресурса производителя
33 45 27 37 25 1000 1

17 57 43 49 45 700 2

41 39 51 53 39 800 3
23 27 25 41 43 500 4
640 480 735 500 365 Объем производства ресурса
1 2 3 4 5
Потребители ресурса
Наименование потребителя

Контрольные вопросы

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 ) = X е/*/ => max (min) (4.1)
/=1
6*
84 Гпава 4. Целочисленное программирование

*2а
11 \
иь Ч
9 \
8
7 \
\
6
5
4 N4
3 \
2
\
N
1 N
1 2 3 4 5 6 7 8 V 10 и 1$Ь

Рис. 4.1. Решение задачи графическим методом:


— — ограничение; — —— целевая функция

при наложенных ограничениях


п __ ___
y^ 'a ilxl = bj при Ху > 0 — целое, / = 1, n, j = 1, т. (4.2)
/=1
Задачу целочисленного программирования решают одним из ме­
тодов линейного программирования, например симплексным мето­
дом. Если найдено оптимальное решение X(f\ ,f 2, которое не
является целочисленным (хотя бы одно из значений f дробное), то
дополнительно вводят одно или несколько условий ограничений и
продолжают поиск оптимального целочисленного решения специ­
альными методами, f — пересчитанные значения свободных членов
bj. Пусть хотя бы одно f и один Ху, не входящий в правильный стол­
бец, будут дробными, тогда целой частью числа f называется наи­
большее целое число, не превышающее числа f
ft = f i ~ f i и ху = ху - х у , (4.3)
где символом ' обозначена дробная часть числа, а символом ~ целая
часть числа.

Если fi — дробное число, а все ху — целые числа, то задача не


имеет целочисленного решения._______________________________
4.2. Метод Гомори 85
1'IM I ■ ■■ И--..- ■ ■ .

4.2. Метод Гомори


Идея метода Гомори состоит в том, что поставленную задачу
сначала решаем любым методом линейного программирования (на­
пример, симплексным методом), а затем в полученном ответе выде­
ляем дробные части и составляем дополнительное ограничение.
Полученное дополнительное ограничение вводим в последнюю (по
ходу решения) матрицу симплексного метода и определяем цело­
численный ответ.

Пример 4.3
Рассмотрим метод Гомори на примере 2.6.
Найти максимум целевой функции F (Jt) = х\ + *2 + *з- Ограниче­
ния имеют вид:
-* , + 3*2 + 2*з < 6;
• 2*j + 4*2 + 2*3 < 8;
3*| +2*2 - * 3 < 4.
Дополнительно потребуем, чтобы *ь *2 и *3 были целочисленными.
Задача была решена симплексным методом и получен ответ.
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/3; 0; 10/3); F(x) = 4.

Для вектора решений * (2/3; 0; 10/3) определим дробные части


2 10 ,1
— и — =3—.
3 3 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 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 0 16/3
0 0 0 1/3 | 1/ б | 1 1/3
0 -1 0 0 - 1/2 0 / - 4
Ведущий элемент может находиться в пятом столбце. Проана­
лизируем пятый столбец.
20 2 - 2 -> 2 * (—1/2) = —1
Ведущий элемент 045. Выполним пересчет элементов ведущей
строки.
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 0 16/3
0 0 0 2 1 1 2
0 -1 0 0 - 1/2 0 / - 4

Формула для пересчета первой строки Y .y ^ y -^ y

Формула для пересчета второй строки V 2 y = V 2y - J < P 4 y

Формула для пересчета третьей строки ^ з у = ¥ з у + |ч > 4 у

Формула для пересчета пятой строки Vsy =

0 5/3 0 1 03 0
1 1/3 0 0
0 -1 0
5/2 7/2 0 0 37 0
0 0 1 0 22 1
0 -1 0 1
0 / - з 0
В последней строке матрицы четвертый элемент положитель­
ный, поэтому ведущий элемент будет находиться в четвертом
столбце. Выполним анализ четвертого столбца.
- - 7/3 1 минимальный элемент равен 1, поэтому ве­
дущим элементом будет af44.
Выполним пересчет элементов четвертой строки
4.2. Метод Гомори 87

0 5/3 1 0 0 0 3
1 1/3 0 -1 0 0 0
5 /2 7 /2 0 3 0 0 7
0 0 0 1 1/2 1 1
0 -1 0 1 0 0 /-3
Формула для пересчета второй строки у ' у =\\>2j + Ф 4у

Формула для пересчета третьей строки Узу = у 3у -Зф 4у

Формула для пересчета пятой строки V?/ = Vsy “ Ф4/


0 5/3 1 0 0 0 3
1 1/3 0 0 1 0 1
5 /2 7 /2 0 0 -3 0 3
0 0 0 1 1/2 1 1
0 -1 0 1 0 0 /-4

Ответ: Х { 1; 0; 3); = 4.

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


и выражения ограничений.
+ *2 + *з = 1-1 + 1 - 0 + 1 - 3 =4;
—jcj + 3*2 + 2*з<6; - 1 - 1 + 3 - 0 + 2- 3 < 6 ; 5 < 6;
2дс, +4*2 + 2х3< 8 ; 2• 1 + 4 - 0 + 2 • 3 <8; 8<8;
3*i + 2 *2—*з < 4; 3-1 + 2*0—1-3<4; 0<4.
Наложенные ограничения выполняются.

Пример 4.4
Найти максимум целевой функции: = 2 *1 + 4 *2 —►max при
наложенных ограничениях:
2*, + *2 <19/3;
- *, +3*2 ^10;
*, и *2 - целые.
1 1 1 0 19/3
1 3 0 1 10
2 4 0 0
19/6 и 10/1 19/6 6,33;
19/3 и 10/3 — 10/3 3,33.
88 Глава 4. Целочисленное программирование

1 1 /2 1 /2 0 19/6
0 |5/2| - 1 / 2 1 4 1/ 6
0 3 -1 0 /-1 9 /3
19/3 и 41/15
1 0 3 /5 -1/5 9/5
0 1 -1/5 2/5 41/15
0 0 2 /5 6 /5 / - 2 1 8 / 1 5
Ответ: Х (9 / 5; 41 /15); F(x) = 218 /15.

Определяем дробные части:


9 ,4 4 41 „ И 11
- = 1—=>—; — = 2 — =>— .
5 5 5 15 15 15
Приведем к общему знаменателю:
4 = 12 И
5 15 > 15*
Так как первая строка матрицы содержит большую дробную
часть 12 /1 5 > 11/15, то будем учитывать дробные части элементов
фиктивных переменных первой строки.

Составим дополнительное ограничение целочисленности для 1-й


строки:
3/5*3 + 4 / 5 х » > 4 / 5 или 3/5хз + 4 / 5 х4- х ^ - 4 / 5.
Добавим полученное ограничение в матрицу:
1 0 3 /5 -1/5 0 9/5
0 1 -1/5 2/5 0 41/15
0 0 I3/SI 4 / 5 - 1 4/5
0 0 2/5 6/5 0 /-218/15
1 0 0 -1 1 1
0 1 0 2/3 -1/3 3
0 0 1 4/3 -5/3 4/3
0 0 0 2/3 2/3 /-1 4

Ответ: Х { 1; 3); F (jt) = 14.

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


и выражения ограничений
4.3. Метод Баллаша 89
^ s — i ^ — —— и ми I i n ни 1| 5д д д в а д а в ш а — 111ш и п и ш 11г а и 1и ' и д с « д д н и ш 1 i r i i ' i U 1 ш ч и mu ■ ■i ' —

F w = 2 x , +4^2 = 2 - 1 + 4 - 3 = 2 + 1 2 = 14;
2jc, +jc2< 19/3; 2-1 + 1-3 < 19/3; 2 + 3 < 19/3; 5 < 19/3;
x\ + 3*2 < 10; 1-1 + 3 - 3 < 10; 1+9<10; 10 < 10.
Наложенные ограничения выполняются.

4.3. Метод Баллаша


Метод Баллаша ориентирован на решение задач выбора наи­
лучшего (в некотором смысле) решения. Вектор решения формиру­
ется как сочетание входящих в него целочисленных переменных.
Особенностью этого метода является то, что вектор решения всегда
содержит целочисленные значения, т. е. отсутствует необходимость
уточнять ранее полученное нецелочисленное решение (как в методе
Гомори). К недостаткам метода Баллаша следует отнести неопти-
мальность алгоритма вычислений, так как надо сформировать пол­
ный набор сочетаний из переменных, входящих в вектор решения.
Выполнить проверку на соблюдение условий ограничений по пол­
ному набору сочетаний, а вычислений критерия качества — по час­
ти сочетаний, которые удовлетворяют условиям ограничений.
Математическая модель задачи имеет вид:
П
=> max (4.4)
i=i
при ограничениях
п __ __ ___
- bj ПРИ */ = °> 1» *= !>". j = ! > ( 4 - 5 )
i=1
где Pt — эффект (прибыль) от производства (продажи, транспор­
тировки и т. д.) ресурса;
Xj — ресурс;
а,у— затраты на изготовление (реализацию и т. д.) /-го ресурса;
bj — ограничение на затраты.

Алгоритм метода Баллаша


1. Расположить переменные в невозрастающей последователь­
ности.
2. Присвоить критерию качества значение первой переменной
(максимальное из всех возможных) и сохранить вектор решения,
90 Гпава 4. Целочисленное программирование

который содержит только одну первую переменную. Организовать


полный перебор сочетаний переменных, включаемых в решение.
3. Определить текущий набор переменных.
4. Вычислить допустимость текущего набора переменных (нару­
шены ограничения или нет?). Если ограничения не нарушены, то пе­
рейти к шагу 5. Если ограничения нарушены, то перейти к шагу 3.
5. Вычислить текущий критерий качества.
6. Если текущий критерий качества больше предшествующего
критерия качества, то сохранить значение текущего критерия каче­
ства и сохранить вектор переменных (вектор решения) и перейти к
шагу 7. Если текущий критерий качества меньше предшествующего
критерия качества, то перейти к шагу 3.
7. Проверить, все ли варианты сочетания переменных рассмот­
рены? Если все варианты, то перейти к шагу 8. Если рассмотрены
не все варианты, то перейти к шагу 3.
8. Организовать вывод результатов вычислений. Расчет окончен.
Работу метода Баллаша рассмотрим на примере.

Пример 4.5

Завод «Электросила» может выпускать пять типов электрических


турбин. Для каждой турбины определены затраты ресурсов на ее из­
готовление и прибыль от ее реализации. Исходные данные приведе­
ны в табл. 4.1. Определить наилучшую программу выпуска турбин.
Таблица 4.1
№ технол. Норма затрат ресу]рса на изготовление турбины Лимит
операции 1 2 3 4 5 ресурса
1 48 52 37 24 18 150
2 51 39 34 29 21 170
3 62 58 51 47 33 230
Прибыль,
512 480 395 320 300
тыс. руб.
При вычислении нарушений ограничений вычисления выполня­
ются для каждого номера технологической операции. При наруше­
нии ограничений хотя бы одной технологической операции данный
вектор решений считается недопустимым (отмечается знаком «-»).
Ход решения примера приведен в табл. 4.2.
4.3. Метод Баллаша 91
Решение
Таблица 4.2

№ Состав вектора Предыдущий Выполнение ограни­ Текущий


решений критерий ка­ чений по операциям критерий
варианта
1 2 3 4 5 чества 1 2 3 качества
1 0 0 0 0 0 512 + + + 0

2 0 0 0 0 1 512 + + 4* 300
3 0 0 0 1 0 512 + + + 320
4 0 0 0 1 1 512 + + + 620
5 0 0 1 0 0 620 + + + 395
6 0 0 1 0 1 620 + + + 695
7 0 0 1 1 0 695 + + + 715
8 0 0 1 1 1 715 + + + 1015
9 0 1 0 0 0 1015 + + + 480
10 0 1 0 0 1 1015 + + + 780
11 0 1 0 1 0 1015 + + + 800
12 0 1 0 1 1 1015 + + + 1100

13 0 1 1 0 0 1100 + + + 875
14 0 1 1 0 1 1100 + + + 1175
15 0 1 1 1 0 1175 + + + 1195
16 0 1 1 1 1 1195 + + + 1495
17 1 0 0 0 0 1495 - 512
18 1 0 0 0 1 1495 + + + 812
19 1 0 0 1 0 1495 + + + 832
20 1 0 0 1 1 1495 + + + 1132
21 1 0 1 0 0 1495 + + + 907
22 1 0 1 0 1 1495 - + + 1207
23 1 0 1 1 0 1495 + + + 1227
24 1 0 1 1 1 1495 + + + 1527
25 1 1 0 0 0 1527 + + + 992
26 1 1 0 0 1 1527 + + + 1292
27 1 1 0 1 0 1527 + + + 1312
Л* ,1 1 :о’ 1 1 1--:'?Л1527.,-:;.!'! 'Y % 1612
29 1 1 1 0 0 1612 + + + 1387
30 1 1 1 0 1 1612 - + + 1687
31 1 1 1 1 0 1612 — + + 1707
32 1 1 1 1 1 1612 - - - 2007
Оптимальный вариант найден на двадцать восьмом шаге.
92 Гпава 4. Целочисленное программирование

С помощью метода Баллаша можно решать как задачи линейно­


го программирования, так и задачи нелинейного программирова­
ния. Нелинейность целевой функции может снизить быстродейст­
вие метода, но принципиальных ограничений на использование это­
го метода нет [6].

4.4. Метод Фора - Мальгранжа


Этот метод не требует первоначального определения нецело­
численного решения. В нем так же, как и в методе Баллаша, задает­
ся набор переменных, определяющих вектор решения. Но в отличие
от метода Баллаша выполняется не полный перебор, а назначение
переменных в вектор решения по определенному правилу. Затем
также из множества рассчитанных вариантов выбирается оптималь­
ный вариант. Коэффициенты целевой функции должны быть поло­
жительными. Если один или несколько коэффициентов целевой
функции отрицательны, то математическими приемами добиваются
положительности этих коэффициентов.
Метод Фора - Мальгранжа выполняется в два этапа:
1. Определение опорного плана.
2. Улучшение опорного плана.
Метод Фора —Мальгранжа использует математическую модель
(4.1) при наложенных ограничениях (4.2). Для построения опорного
плана используют следующую методику. В опорный план помеща­
ют первую переменную. Анализируют опорный план на ненаруше-
ние условий ограничений. Если условия не нарушены, то к первой
переменной добавляется вторая переменная и т. д. до тех пор, пока
условие не будет нарушено. Переменную, нарушившую условия
ограничений, удаляют из вектора решений. В вектор решения до­
бавляют следующую переменную и т.д. до тех пор, пока не рас­
смотрят все переменные. Таким образом, получают опорный план.
Далее улучшают опорный план, увеличивают значение целевой
функции на единицу. К ограничениям задачи добавляют дополни­
тельное ограничение вида:
п
(4.6)
;=|
Так как сами переменные могут принимать только два значения О
или 1, то минимальное приращение целевой функции будет 1. Поиск
4.4. Метод Фора - Мальгранжа 93
решения, удовлетворяющего ограничениям (4.2) и (4.6), выполняется
по следующему правилу. Просматриваются переменные, вошедшие в
опорный план, начиная с последней переменной. Последнюю пере­
менную полагают равной нулю, а последующим за ней переменным
пытаются присвоить единицы. Если опорный план улучшить не удает­
ся, то опорный план является оптимальным. Если опорный план уда­
лось улучшить, то ограничение (4.6.) заменяется на ограничение (4.7)
П
(4.7)

Процесс поиска наилучшего решения продолжается.

Обобщенный алгоритм метода Фора - Мальгранжа

1.Расположить коэффициенты целевой функции в порядке


убывания.
2. Найти опорное решение.
3. Последней переменной дс* = 1 в векторе решений присвоить
значение 0.
4. Сформировать дополнительное ограничение и добавить его к
исходным ограничениям.
5. Поочередно присваивать переменным с порядковым номе­
ром, большим к, значение единицы. Если улучшить опорное ре­
шение не удается, то найдено оптимальное решение и перейти к
шагу 7. Если опорное решение удалось улучшить, переходим к
шагу 6.
6. Последней переменной х, = 1 в векторе решений присвоить
значение 0 и перейти к шагу 4.
7. Вывод решения, завершение работы.
Рассмотрим работу метода Фора - Мальгранжа на примере.

Пример 4.6

Сформировать производственную программу работы сборочно­


го цеха, если максимальное значение ресурса 45. Условия приведе­
ны в табл. 4.3.
94 Гпава 4. Целочисленное программирование

Таблица 4.3
Номера изделий
Характеристика и размерность
1 2 3 4 5 6 7 8

Прибыль, тыс. руб. 22 20 14 1 2 1 0 9 7 5


Потребность в ресурсах 18 9 10 8 7 6 5 2

Сформируем целевую функцию и ограничение.


Целевая функция:
22*i + 20*2 + 14*з + 12*4 + 10*5 + 9*6 +7*7+5*8 —*■max.
Ограничение:
18*; + 9*2 + 10*3 + 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
функции ограничений
1 1 1 1 1 0 0 0 0 68 45
2 1 1 1 0 1 0 0 0 66 44
3 1 1 1 0 0 1 0 1 70 45
4 1 1 1 0 0 0 1 1 68 44
5 1 1 0 1 1 0 0 1 69 44
6 1 1 0 1 0 1 0 1 68 43
7 1 1 0 1 0 0 1 1 66 42
8 1 1 0 0 1 1 1 68 45
9 1 1 0 0 1 1 0 1 66 42
10 1 1 0 0 1 0 1 1 64 41
11 1 1 0 0 0 1 1 1 63 40
12 1 0 1 1 1 0 0 1 63 45
13 1 0 1 1 0 1 0 1 62 44
14 1 0 1 1 0 0 1 1 60 43
15 1 0 1 0 1 1 0 1 60 43
16 1 0 1 0 1 0 1 1 58 42
17 1 0 1 0 0 1 1 1 57 41
4.4. Метод Фора - Мальгранжа 95
Продолжение табл. 4.4
Значения переменных,
Значения
входящих в вектор решения
Шаги
целевой левой части
1 2 3 4 5 6 7 8
функции ограничений
18 1 0 0 1 1 1 1 0 60 44
19 1 0 0 1 1 1 0 1 58 41
20 1 0 0 1 1 1 1 56 40
21 1 0 0 1 1 1 1 55 39
22 1 0 0 1 1 1 1 53 38
23 0 72 45:
24 0 1 1 1 1 И 1 70 42
25 0 1 1 1 1 1 1 68 41
26 0 1 1 1 1 1 1 67 40
27 0 1 1 1 1 1 1 65 39
28 0 1 0 1 1 1 1 1 63 37
29 0 0 1 1 1 1 1 1 57 38
После первого шага (построения опорного решения) целевая
функция (сумма прибыли) получила значение 6 8 (табл. 4.4). После
первого шага добавим новое ограничение:
22*1 + 20*2 + 14хз + 12x4 + 10xs + 9хв +7x7 + 5х« > 69.
Далее на втором шаге переменной Х4 присвоим 0 и попытаемся
присвоить Х5 = 1. Значение целевой функции будет равно 6 6 . Добав­
лять нового ограничения не будем.
Далее, на третьем шаге, положим переменную Х5 = 0 и, начиная
с переменной х$, будем им присваивать поочередно 1. Комбинация
{ 1 ; 1 ; 1 ; 0 ; 0 ; 1 ; 1 ; 1 } нарушает условие ограничения (требуется ресурс
более 45) и поэтому пропущена. На третьем шаге получено значение
целевой функции, равное 70, поэтому вводим новое ограничение:
22xi + 20x2+ 14хз + 12x4+ 10x5+ 9хб +7x7+ 5xg> 71.
Аналогичным образом продолжается поиск оптимального решения.
Оптимальное решение будет достигнуто на 23-м шаге: целевая
функция примет значение, равное 72, и будет удовлетворено усло­
вие ограничения (ресурс используется целиком — 45 единиц) [6 ].
96 Гпава 4. Целочисленное программирование

4.5. Метод «ветвей и границ»


Использование этого метода предполагает нахождение опорно­
го решения одним из методов линейного программирования, на­
пример симплексным методом. Затем поочередно одну из получен­
ных нецелочисленных переменных, входящую в вектор решения,
переводят в целочисленное значение, и т.д., пока все переменные
не примут целочисленное значение. При переводе каждой из пере­
менных в целочисленное значение добавляют по одному ограниче­
нию и решают две задачи. Деление на две задачи не выполняется,
если получено целочисленное решение или значение целевой функ­
ции получило меньшее значение, чем ранее зафиксированное зна­
чение. Метод «ветвей и границ» заканчивает свою работу, когда
рассмотрены все нецелочисленные переменные, входящие в вектор
решения, т. е. дальнейшее ветвление алгоритма невозможно.
Математическая модель задачи метода «ветвей и границ» пред­
ставлена выражениями:
п
целевая функция: F(x) - Х СЛ => max (min)
i=l
n __ ___
при ограничениях: ^ avxt = b j, Ху > 0 — целое, / = 1, n, j = l,m.
/=1
Далее организуется полный перебор по всем нецелочисленным
переменным, вошедшим в оптимальное решение. Для каждой пере­
менной поочередно формулируются два дополнительных ограниче­
ния и, соответственно, две задачи.
В первой задаче дополнительное ограничение содержит округ­
ление до ближайшего меньшего целого значения:

хк = х Г - х Г . (4.8)
Во второй задаче дополнительное ограничение содержит округ­
ление до ближайшего большего целого значения:

(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
Определить максимум целевой функции F(x) - 6 х\ + 2 x2 при ог­
раничениях:
fl3jCi + 4х2 й49;
\ - х 1 + 4 х 2 <9.

Использование симплексного метода приведет к следующему ре­


шению (рис. 4.2): F(.V)= 26; ^(2,86; 2,96).
Рис. 4.2. Результат решения симплексным методом:
----------линия уровня целевой функции;
----------линии ограничения ОДР
Первый шаг
Первая ветвь. Вводим целочисленное ограничение на значение
первой фактической переменной. Округляем с недостатком таким
образом, что *i < 2. Вводим фиктивную переменную *5 (фиктивные
переменные *3 и *4 добавлены симплексным методом) такую, что
*i + *5 = 2. Это позволили выделить подобласть ниже прямой линии
*1 = 2. Решим с помощью симплексного метода подзадачу:
F(X) = 6*1 + 2 x2 —> шах
при ограничениях
13*, + 4 *2 <49;
<- х 1 + 4 * 2 <10;
*, <2.

Ответ: F(x) = 20,25; Х(2; 2,75).

Вторая ветвь. Округляем значение первой фактической пере­


менной с избытком таким образом, что *1 < 3. Вводим фиктивную
переменную *5 такую, что *1 + *5 = 3. Это позволит выделить подоб­
ласть выше прямой линии *1 = 3. Решим с помощью симплексного
метода подзадачу:
F(x) = 6*1 + 2*2 —> max
при ограничениях
13*, +4*2 <49;
• - * , +4*2 <10;
*, >3.

Ответ: F(X) = 25,5; Х{Ъ\ 2,5).


4.5. Метод вввтввй и границ» 99
Из результатов, полученных в первой и второй ветви, выбираем
такой, который дает наибольшее значение целевой функции. То
есть, за опорное решение принимаем математическую модель, по­
лученную во второй ветви.
На втором шаге будем избавляться от нецелочисленности вто­
рой фактической переменной.

Второй шаг
Первая ветвь. Отмечаем, что по условию задачи значение первой
фактической переменной не может превышать 3. Округляем значе­
ние второй фактической переменной с недостатком, таким образом,
что хг < 2. Вводим фиктивную переменную хв такую, что хг + *6 = 2.
Это позволит выделить подобласть левее прямой линии хг = 2. Решим
с помощью симплексного метода подзадачу:
F(X) = 6xi + 2хг —* max
при ограничениях
13дс, +4;t2 <49;
—jc, +4дс2 <10;
jc, <3;
*2 - 2-
Ответ: F(X) = 24; ^ (3 ; 2).

Вторая ветвь. Округляем значение второй фактической пере­


менной с избытком таким образом, что xj < 3. Вводим фиктивную
переменную хв такую, что Х2 +Хв = 3. Это позволит выделить подоб­
ласть правее прямой линии х2 = 3. Решим с помощью симплексного
метода подзадачу:
F(X) = 6 * i + 2*2 —♦ шах
при ограничениях
13х, +4*2 < 49;
— jc, +4дг2 ^Ю;
xt <3;
х2 >3.
Найти решение невозможно, так как поиск решения должен вы­
полняться за пределами области допустимых решений.
100 Гпава 4. Целочисленное программирование

Дальнейшие вычисления прекращаются, так как в первой ветви


второго шага получено целочисленное решение, а вторая ветвь
«зашла в тупик».
Окончательный ответ: F(X)-2 4 ;X (3 ; 2).
Метод «ветвей и границ» относится к классу универсальных ме­
тодов, т. е. позволяет решать не только задачи линейного програм­
мирования, но и комбинаторные задачи дискретного программиро­
вания. Но этот метод применим при решении задач малой размер­
ности, так как при большой размерности задачи требуется много
машинного времени [3].

4.6. Примеры
1. Найти целочисленное решение методом Гомори, если целевая
функция F(X) = 2*i + 3*2 + 4*з + 7*4 —* max и ограничения
[х, - 2*2 + 2*3 + *4 < 9;
[2*2 - *3 + 3*4 < 12.

Ответ: Х(1; 16; 20; 0); Fix) = 130.

2. Найти целочисленное решение методом Баллаша, если целевая


функция = *i + 2*2 + 3*з + 4*4 + 5*s + 6*6 + 7*7 + 8*g —*• max и
ограничения
Г*, + 5*2 + 4*3 + 2*5 + 4*7 < 32;
[2*2 + 3*4 + 4*6 + 6*g < 44.

Ответ: Х(0; 0; 1; 1; 0; 0; 0; 0); = 146.

3. Найти целочисленное решение методом Гомори, если целевая


функция F w = 2*i + 3*2 + 4*з + 5*4 —> min и ограничения
*2 - 5*з + 4*4 > 14;
• 2*, +3*з + * 4 <18;
3*, + 2*2 - *3 < 9.
Ответ: *(0; 4; 0; 18); F(x) = 102.
4. Найти целочисленное решение методом Баллаша, если целевая
функцияF(X) = *i + 2*2 + 3*з + 4*4 + 5*5 + 6*6 + 7х1 + 8*g —» min и
ограничения
4.6. Примеры 101
I 111111 ii nn'ii i i iii i m h iii i ii I i i r i i H i n - n ’ i i c aa— а и а в с т а д д и ^ а а д а ^ i и iiiii n i i hi 1i 1 1 i н '.м м и 1 mi i i

xx + 2x2 - 3x3 + 2xs + 4x7 > 30;


«x2 + jc4 + 2x6 + 6xs < 40;
3xt + 2 x 2 + 4x5 + 6x6 > 24.

5. Найти целочисленное решение методом Фора - Мальгранжа, если


целевая функция F(*)=jci +2х2 + 3хз + 4х4 + 5х5 + 6х6 + 7д:7 + 8л:8 —> max
и ограничения
jCj + 5 х 2 + 4jc3 - 2xs + 4jc7 > 48;
«2хг + 4jc4 - x6 + 3x8 < 36;
Xj + 2 x 2 + 4xs + x6 < 24.
6. Найти целочисленное решение методом Фора - Мальгранжа, если
целеваяфункция/г(]С)=л:1+2^2 + 3x3 + 4x4 + 5x5 + 6x6 + 7jc7 + 8x8 —►min
и ограничения
5х, + 4jc2 + Здс3 - 2 х 5 + х 7 > 22;
<2 х 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.)

где U— оптимальное решение на /-м шаге.


В этом случае говорят, что целевая функция L обладает «адди
тивным критерием качества».
5.2. Нахождение кратчайшего пути юз
i Iлin ■I г- ■I■■ .. .
± ::■■■■■■гам—-- -■ 11
5.2. Нахождение кратчайшего пути
Задача динамического программирования по своей сути явля­
ется управляемым процессом, причем управление выполняется на
каждом шаге. Особо надо подчеркнуть, что выбор оптимального
решения на конкретном шаге не дает гарантии получения опти­
мального решения для всей задачи. То есть для получения опти­
мального решения для всей задачи иногда приходится выбирать не
лучшее решение на конкретном шаге. Таким образом, планирова­
ние многошаговой задачи сводится к выбору такого решения на
каждом шаге, которое учитывает последствия на следующих (бу­
дущих) шагах. На текущем шаге выбирается не лучшее решение, а
то, которое предполагает максимальную сумму выигрыша от всех
оставшихся шагов.
Учитывая вышесказанное, выполнять вычисления в задачах ди­
намического программирования удобнее от конца к началу. Дейст­
вительно, легко можно планировать последний, т - 1, шаг. Выпол­
няя вычисления по последнему шагу, надо сделать ряд предполо­
жений: как закончился предыдущий, т - 1 , шаг и для каждого
предположения найти условно-оптимальное решение на от-м шаге.
Аналогично выполняются о т - 1 , о т - 2 и т . д . шаги, вплоть до пер­
вого шага.
Таким образом, будут найдены условно-оптимальные решения
на каждом шаге. Далее выполняется переход от условно-оптималь-
ного решения к безусловно-оптимальному решению на каждом
шаге, т. е. выполняются вычисления от первого шага к последнему
шагу, ориентируясь на полученные условно-оптимальные реше­
ния. Теперь на первом шаге известна «стоимость» решения задачи
от второго шага до последнего шага и, следовательно, можно ука­
зать оптимальное решение на первом шаге (снизить «стоимость»
первого шага). Далее аналогично выполняются второй, третий и
т. д. шаги.
При использовании динамического программирования много­
шаговая задача решается дважды: от конца к началу (определение
условно-оптимального решения) и от начала к концу (определение
безусловно-оптимального решения). Первый этап длительный и
трудоемкий, второй — короткий и уточняет решения первого этапа
(по готовым рекомендациям определяется безусловно-оптимальное
решение на каждом шаге).
104 Гпава 5. Динамическое программирование

Пример 5.1
Проложить полотно железной дороги по кратчайшему, с эконо­
мической точки зрения, пути между пунктами А и Б. На географи­
ческой карте строится некоторая прямоугольная область, где в ле­
вом нижнем углу помещен пункт А, а в правом верхнем углу —
пункт Б. Прямоугольная область по горизонтали и по вертикали
разделяется на произвольное количество отрезков, и по границам
отрезков строится сетка. Для каждой стороны элементарного пря­
моугольника определяется стоимость прокладки пути (рис. 5.1).
Для упрощения решения задачи положим, что путь может про­
кладываться только по границам элементарных прямоугольных
областей (т. е. под углом 90°), заранее известна стоимость строи­
тельства по каждому элементарному отрезку, и путь от пункта Б к
пункту А прокладывается в направлении справа налево и сверху
вниз без петель. Таким образом, каждый возможный путь от пунк­
та А до пункта Б будет представлять собой ломаную линию. Надо
проложить такой путь от А к Б, чтобы суммарные затраты на его
строительство были минимальны. Возможны два варианта: пол­
ный перебор всех возможных путей, что очень долго и трудно, или
использование динамического программирования с разделением
задачи по шагам.
Разделим расстояние между пунктами А и Б на 17 отрезков
(шагов) по горизонтали и на 8 отрезков (шагов) по вертикали.
Тогда длина любого пути составит m = 17 + 8 = 25 отрезков (ша­
гов). На рис. 5.1 указаны стоимости строительства пути по каж­
дому отрезку.
Перемещение от Б к А выполняется последовательно по элемен­
тарному пути (шагу) к следующей узловой точке. Каждая узловая
точка характеризуется двумя координатами: горизонтальной и верти­
кальной. Обе координаты целочисленные и большие нуля: 0 < х < 17
и 0 < ^ < 8. В каждой узловой точке будем определять условное оп­
тимальное управление (движение по горизонтали или движение по
вертикали). Направление движения выбирается из условия: стои­
мость строительства всех остальных отрезков пути, включая текущий
отрезок, должна быть минимальной. Эту стоимость будем называть
условно-оптимальной.
Итак, запустим процедуру поиска условно-оптимального реше­
ния от конца к началу (от пункта Б к пункту А). На последнем 25-м
шаге будем находиться в верхнем правом углу (пункт Б). Попасть в
5.2. Нахождение кратчайшего пути 105

|— ^н j ^ | \о j fH | м j « - J - 00 1 | ' гн— j

i-н
^Н rH М
rH О
1-Н i-t
1-Н о
rH «н
i-Н гч
гЧ ч>
гН

. « ч Г* 1-н О О О О 45
гН *4 1-Н i-Н i-Н i-Н iH tH i-Н
j - з— s —j—г-— ,— j _ s —j—з —|
1
»H - i i - H O
iH fH
»H O
i-Н O
iH ^ »-t
*-H VO
iH

Рис. 5.1. Таблица стоимостей строительства элементарных участков пути


л Д t- - o> л oo ° <£>
I— ^ —I— ^ — |—*"*—|— — | - £2— |—» — |— 2 — |— Я—|
O O qq O fs. О о ^

| 1 - 3 . ^ л_ | _ 2 - | _ С0— J - d - j - o o — | - 3 - j - л - |

3 2 04 00 00 2 2
j j j 1 — On j Д | 1S ■' | ■3 — |

2 Os Ov 00 c- 2 ' C O O O O

Я
Г ^ ^ Т * " Т аТ 8 -1~я'Т 81
<* » 2 «" Я >o t' Й
|— ®>— |— o<— |— Я-—|— 2 — j—2 — |— Я— |— o,— |— со—|

h * + orT '=T =^ r si " 2^ — t "i


Я 2 Я °> “ 2 <- <л 2

I- “ " I - 3" T ~ 2 _ t _ 3 — 1~ *“ t " " 1


2 Я Я л «л Я oe <л 2

л Я 2 2 < * 2 оо ° Я
|---° ---1---° —j "— Т ---- 1--- ° ---- j- Я—|---№— |---О»—j- 2 —|

гНМНт8^ ^ “гНМ
Ov О О О »н <N О О О
гЧ гН i-Н ^Н i-Н rH iH i-H

О »н л . О O i H rH т-н «Ч
«Н «Н ^ г-н 1-Н тН 1-Н tH 1-Н

|_ S - j - S _ |_ ^ |_ S _ ^ - | |~ " J- 1 I
г -1 О ск ^н О О О - ^ Ю
»Н ^ ^ *Н 1-Н ^Н iH rH
| _ - _ | _ л_ ^ о -------- 1 _ - _ |------- 1

2 3 2 2 » 2 c s o j j
|— a ^ j — л -^ j— Я - | — 2 — j - Q - j - 2 — |— 2 —^ —2 —|
О
н Он О С* VO
.О Т
106 Гпава 5. Динамическое программирование

пункт Б можно с 24-го шага и возможны два варианта: двигаться по


горизонтали (стоимость 11, узел Б\) или двигаться по вертикали
(стоимость 15, узел Б2) — рис. 5.2.

Рис. 5.2. Определение направления движения

Из узла Б\ к пункту Б можно двигаться только в одном направ­


лении — по горизонтали, и стоимость движения составит 11. Точно
также из узла Бг к пункту Б можно двигаться только в одном на­
правлении — по вертикали, и стоимость движения составит 15. Та­
ким образом, для последнего 25-го шага предпочтительнее движе­
ние из узла Б ь Теперь рассмотрим предшествующий 24-й шаг. Пре­
дыдущий 23-шаг мог закончиться в одном из узлов В\, Вг и By Из
узла В\ движение возможно только в одном направлении — по го­
ризонтали к узлу Б и и стоимость этого перехода составит 11, а сум­
марная стоимость до конечного пункта Б — 22. Из узла Вг возмож­
ны два направления движения:
• B^ — Б\ — Б с общей стоимостью движения 11 + 15 = 26;
• Вг — Б2 — Б с общей стоимостью движения 15 + 12 = 27.
Наилучший путь первый, и его стоимость 26 поместим в кру­
жок Вг.
Из узла Вт, движение возможно только в одном направлении —
по вертикали к узлу Бг, и общая стоимость движения составит
15 + 14 = 29.
Наилучший вариант движения от узла В\ к узлу Б\, так как его
суммарная стоимость составит 22.
5.2. Нахождение кратчайшего пути 107

Далее поступаем аналогичным образом, т. е. на каждом шаге оп­


тимизируем только текущий шаг и прибавляем результат от опти­
мизации последующих шагов.
По изложенному алгоритму выполняется условная оптимизация:
в каждой узловой точке известно направление движения и стоимость
оставшегося пути. Дойдя до пункта А, получим условную оптималь­
ную стоимость строительства железнодорожного пути, равную 262
(рис. 5.3).

Е\ Д\ Г\ В\ Б\ Б
11 10 9 11 11 11
Ж\
А/, Л\ К[ Я, 9
8 8 9 9 5,
/>, Я, 0\ 11
10 10 9 9 Я,
С,
11
Г,
9
9
X, 10 ф .

16 15 16 1 2 Цх
А Ж, Ul\ V,
Рис. 5.3. Прокладка пути в обратном направлении

Во время движения от пункта Б к пункту А несколько раз воз­


никала ситуация выбора: куда идти, влево или вниз (по горизонтали
или по вертикали), при одинаковой стоимости работ (вершины Е\,
М\, Р\, С1, Ф\,Х\)1 В данной ситуации выбор направления движения
был произвольным, так как при повторном просчете неудачный вы­
бор будет исправлен.
Теперь при прямом просчете алгоритма возможно улучшение
полученных решений на отдельных шагах. Переходим к безуслов­
ному оптимальному управлению — определению пути от пункта А
к пункту Б (рис. 5.4) самым дешевым способом.
Начинаем движение от пункта А вверх (по вертикали), хотя ус­
ловно-оптимальное решение дало результат по горизонтали. Теперь,
108 Гпава 5. Динамическое программирование

двигаясь из пункта А по вертикали, ищем самый короткий («деше­


вый») путь к одной из узловых точек, в которых был неоднознач­
ный выбор (Еи Ми Pi, Cj, Ф\,Х\). Если вновь пройденный путь дает
лучшие результаты, чем ранее пройденный условно-оптимальный
путь, то условно-оптимальный участок пути заменяем на безуслов­
но-оптимальный путь.
От узловой точки Pi до пункта Б стоимость работ составляет 145.
По вновь пройденному оптимальному пути, стоимость работ состав­
ляет 95.

Е\ Д\ Г\ 2>| Б

Итоговая сумма 145 + 95 = 240, что меньше условно-оптимально-


го решения (262). Поэтому условно-оптимальное решение от пункта
А до узловой точки Pi заменим на только что найденное безусловно­
оптимальное решение. Далее от узловой точки Р\ также возможен
альтернативный путь до узловой точки М\ (рис. 5.5).

Р, 7 10 11 11 Ml

Рис. 5.5. Уточнение пути на участке Р\ - Mi

Стоимость каждого из путей условно-оптимального и безусловно­


оптимального одинаковая, поэтому можно выбрать любой из путей.
5.2. Нахождение кратчайшего пути 109
Но от узловой точки Р\ до узловой точки Е\ можно добраться,
минуя узловую точку М\. Рассмотрим этот путь (на рис. 5.6 показан
пунктирной линией).

---------- 1
9 10 11 12 И 10 11 £, Д, Г\ Вх Б\ Б

1
1
1
О 11 10 9 11 11 11
Ж,
1 0 1 л, К, Я, 9
л/,
71 8 8 9 9 3,
Pt| Я, О, И
10 10 10 9 9 я,

11
г[7Г
8 9 10

10

Рис. 5.6. Альтернативные пути

Итоговая сумма по только что пройденному пути составляет


249, что больше ранее найденного решения. Поэтому замену путей
выполнять не будем.
От узловой точки М\ до узловой точки Е\ можно добраться дру­
гим путем (рис. 5.7).

М\ 8 8 10 10 11

0 — —^4з)------- ^71)------- @ ------- © ------- ^8о)—----- ©

Рис. 5.7. Уточнение пути на участке Мх- Бх

Стоимость движения по этому пути составит 191 + 52 = 243, что


«дороже» (длиннее), чем по ранее пройденному пути, поэтому за­
мену пути выполнять не будем [3].
Больше альтернативных разветвлений не было. Оптимизация
закончена. Безусловно-оптимальный путь показан на рис. 5.8. Его
стоимость составляет 240. Причем отрезок пути от узловой точки Р\
до узловой точки М\ можно выполнить двумя вариантами, одинако­
выми по стоимости.
110 Гпава 5. Динамическое программирование

Е\ Д\ ГI В\ Б\ Б
пГТо 9 И И И

Л/, JI\ К\ Их 9
7 По 1Г“ 111 8 8 9 9 5,

Рис. 5.8. Оптимальный путь с возможным


альтернативным участком

5.3. Распределение ресурсов


С помощью методов динамического программирования мож­
но решать задачи распределения ресурсов. Общий подход к реше­
нию задач распределения ресурсов тот же, но имеются некоторые
особенности.
Распределить некоторый ресурс (например, финансы) в объеме
S между предприятиями Р\, Р2, ..., Р„. Ясно, что вложение финансов
в каждое предприятие должно приносить дополнительную прибыль.
Чем больше сумма финансовых вложений в предприятие, тем боль­
ше дополнительный доход, т. е. функция дополнительного дохода
неубывающая. Но следует иметь в виду что, начиная с какого-то
момента, дополнительная прибыль не увеличивается, т. е. наступает
насыщение или, другими словами, предприятие не может освоить
выделенные ресурсы.
Задача стоит так: как распределить выделенные ресурсы между
предприятиями, чтобы суммарный доход от всех предприятий был
максимальным. Распределяемые ресурсы выделяются предприяти­
ям порциями (равными или неравными), распределенными во вре­
мени (по периодам).
5.3. Распределение ресурсов Щ

Перед каждым шагом (периодом выделения ресурсов) имеется


некоторая сумма S еще не распределенных ресурсов. На каждом
шаге предприятиям назначаются ресурсы х\, хг, ..., х„. Требуется
найти оптимальное сочетание x t,x 2, х„, при котором совокупный
доход максимален
П
£ = £< * /(* /) => т а х - (5.2)
i= l

Начнем оптимизацию с последнего шага т. К последнему шагу


мы подошли с остатком ресурсов S. Очевидно, что их надо назна­
чить последнему предприятию Р„. Следовательно, оптимальное ре­
шение будет:
x„(S)= S , (5.3)
и условный оптимальный доход составит
Ai(S) = a n(sy (5-4)
На предпоследнем шаге п - 1 имеем запас ресурсов 5, а услов­
ный оптимальный доход на двух последних шагах L„.\(S)-
Если на предпоследнем шаге п - 1 предприятию Р„.\ будут вы­
делены ресурсы х, то на последнем шаге п ресурсов останется S - x ,
и условный оптимальный доход на двух последних шагах составит:
Ai-l(S) =(Хя-1(5) + Ai(S-*)> (5-5)
и нужно найти такое х, чтобы доход был максимальным:
К -\ (*) = а я_, (Jt) + L„ (S_X)}, (5.6)
т. е. из возможных значений выбирается наибольшее значение в фи­
гурных скобках.
Аналогично оптимизируются шаги п - 2, и - 3,... и т. д.
Дойдя до 1-го шага, будем иметь начальное (фиксированное) зна­
чение ресурсов Q, поэтому условный оптимальный доход составит:
= А (о = “ a*! a i w + Li ( q - x ) }• (5-7)
Теперь надо выполнить обратные вычисления и уточнить рас­
пределение ресурсов.

Пример 5.2
Имеется четыре предприятия, между которыми надо распреде­
лить 7 единиц ресурсов. В табл. 5.1 даны функции дохода а,- от вло­
жения фиксированных порций денежных средств.
Ц2 Гпава 5. Динамическое программирование

Таблица 5.1

X a l(x) a 2M am a 4(jr)
1 0,7 0,1 0,1 1,0
2 0,9 0,4 0,3 2,2
3 1,1 0,8 0,9 2,4
4 1,2 1,1 1,0 2,4
5 1,3 1,5 1,4 2,4
6 1,3 1,6 1,5 2,4
7 1,3 2,0 i;5 2,4
Для каждого из четырех предприятий, начиная с какой-то сум­
мы, наступает режим насыщения, т. е. предприятие не в состоянии
освоить вложенные средства.
Запустим алгоритм с конца. Количество шагов равно количест­
ву предприятий.
Первый шаг. Денежные средства назначаются четвертому пред­
приятию.
Ц о = 1; L(i) = 2,2; L$) = 2,4; Z,(4) = 2,4;
L(s) = 2,4; L(в) = 2,4; Lq) = 2,4.
Второй шаг. Денежные средства распределяем между 4- и 3-м
предприятиями.
L( 1) = шах ( 1.0: 0,1} = 1,0;
Z,(2) = max (2.2: 1,0 + 0,1; 0,3} = 2,2;
Z,(3) = max (2.4: 2,2 + 0,1; 1,0 + 0,3; 0,9} = 2,4;
L(4) = max {2,4; 2.4+ 0.1: 2.2 + 0.3: 1,0 + 0,9; 1,0} = 2.5;
I (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;
1(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 ( 1.0: 0,1} = 1,0;
Z(2) = max {2,2; 1,0 + 0,1; 0,4} = 2,2;
L(з) = max (2.4: 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;
Z/(5) = max {3J.; 2,5 + 0,1; 2,4 + 0,4; 2,2 + 0,8; 1,0 + 1,1; 1,5} = 3,1;
I( 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. Распределение ресурсов 113
L(j) —шах {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-м предприятием.
I(i) = шах 11.0: 0,7} = 1,0;
L(2) = max (2.2: 1,0 + 0,7; 0,9} = 2,2;
L(3) = шах {2,4; 2.2 + 0.7: 1,0 + 0,9; 1,1} = 2,9;
Z,(4) = шах {2,6; 2.4 + 0.7: 2.2 + 0.9:1,0 + 1,1; 1,2} =3,1;
Z,(5) = max {3,1; 2.6 + 0.7: 2.4 + 0.9: 2.2 +1 .1 :1,0 +1,2; 1,3} = 3,3;
1(6) = max {3,3; 3-.1ь+0.7: 2,6 + 0,9; 2,4 + 1,1; 2,2 + 1,2; 1,0 + 1,3;
1,3} =3,8;
L(7) = max {3,7; 3.3 + 0.7: 3.1 + 0.9: 2,6 + 1,1; 2,4 + l,2'u2,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 1 1 2
2 4 0 0
3 0 3 3
4 2 3 2

Рассмотрим подробнее как получились эти варианты распределе­


ния денежных средств.
114 Гпава 5. Динамическое программирование
■1 '. ..а ■ '.i n ...1 ■ ■ ■ ■ 11 l i l I IU. I I I III I Ц З Г -.Т Ж 1 l l l l l l I lllir iU L IU l . I 11411

На последнем четвертом шаге оптимальным способом денежные


средства можно распределить двумя способами:
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.
5.4. Примеры

W
р - р rT ' j SO 11 | 1 1Н — - j » " , q v ' " "■■j" 111 в о — p - П

ГН n <4 О iH
i~h
O

r-t vo
^

1 “ ~1 :3—f I = I-15 I ' I— 1 "9 1


*И4 Г
Н * ~4
Н О . Н
Н O OН О
rt «н
н 'О
н
»^rН“ |I ' О»Н" “|I Is- ■■II■■i~1Hi----ГИ
I М
| I Ч" ' II И
О
I'I 1<Т-1“ ПI
h
i-Н тН
О
1-Н rH О *Н
О гь О

| _ =_ ^ s _ | _ „ _ | _ . _ ^ _ | ------------ j - a - f - ^ - |
<* Я ^ Я л л оо 2 £

О О QQ О JV О О ^

*н vn 00 00 S mi v\ ^
я^ -о ч■■j я j os ■-j я-'"! ■о\...| - з - |:-я—j
3 о* л оо с- 2 « 00 00 ез
^— 2 — |— о\— |— 3 — |— о \— |—Я — |— S — |— Я — |— 3 — |
С
ои
S
Яи
С
Я * » 3 ^ Я Ч) Г- ^
ЕЗ
t_ * i _ ^ T s ‘ t ' 2 - r a T s " T * i " * 1 CQ
Я 3 » 3 00 Я г- 00 q
I— f-°— I
>*

I—
Я

2
2

Я
|—Я:—|—Я—|—2 —|—Я
Я

Я
<*

о>
«

л
2

Я
| 2 —j—2 — |—o>—|—я - j
^

»
—M os

°>
j

2
©\

и
X
Он

о» Я 2 2 °> 2 « 2 . Я
| _ S ^ ^ J j L _ o _ ^ . J j -------------1----------- j l 2 ^

0' " . Н0 И0 0
Н T * NИ
И О
И ОН О И
|_ S _ |_ ^ |_ _ |_ S_ ^ _ | -------|- s - |-----^
О i“< л. О О ft г Н г Н Г !
w »Н »Н iH 1-Ц i-Н r-j

t_ a i “ 8 T * T s_ t aT b" i “ a_t ' n


^ О
г-I л
^ »^-Н О
i-Н О *-( О
f-н »н VO

О 1-t О 0 0 ° Л о »л
rH i-< vH rH w «Н 4/1 1-4 1-1
| — Я — j— оч— J"— Я — | — Я ■- | ■Q — |— 3 — |— 3 — | — 3 — |

2 ^ 2 2 Я л 2 у Я 2
•Я 1 о\ 11 Я 1 Я ■м i 1 о\ 1 3*™^
116 Гпава 5. Динамическое программирование

(4


0 Т П Г Н ----- г п гН— I— i—
я, О I—
<0
t I О «н СО Г* *)

1 21
а л -л. я » .я я .а а
I—00—I——I—01—
I—~—\~*—I—**—I——|—**•—|
jl» j Я | o -j-o , I о> j я—
Я 0> Я 00 1П 00 2 Д л
h s+О 3TО 2T^ '° ~Г) h T
'О 00
s~ оf 2‘trt £!'1гч
f H M n i —
!н 2 2 ^ «N 00 0 \ Д ш
|—Я■■■| ■■ой1 | ’I' ■2— I ’о\—1-“ о\—J

2
5.10. У словия примера
P ' tЯ' * rTЯ aT " - 'Гh iП— 0t—
S 0
fH
2 *

Ш Ю 00
Н - *1
"S щ- | I-1 | ■00 ""j 1■2 ■
■■| ■■оо—j
5 S Я * ч) о\ сл 2 45
Рис.

l- s i “ a T a i - *- M — l” 3 i — I
m ^ н v v w ^

h s T s T J5T " “ h i ^ i _3i " ’ 1


0\ <7\ 2 00 00 2 2 2 »

— |“ а + 2 1
^ н и Н ^
h =- ^ s1 —
S Л л . л л Я Я Я 2
|— s j я j а—|—оч ■j s j я— j - а —| - я- j
2 » Д Л о> Я Я 2 Я
[—оч—|—S -^—S —|—«ч— |-G—jl—Д—1_2 — 2 —j
Я « 2 <* 2 Я 2 2 Я
|—оа—|—S— Д—|—S —^-СЗ— Д—
00 00
L—г.—1—
5.4. Примеры 117

*н ^ ^
I— h ^ T~ 8'
ffi

ь
Й

S
0\

S
bT
Д

S
оо



V)

* оо
s^
_

s
s+
я
a1
^
I—^—I—^—I— —j—**--l""1^—I—^—\ —^—("~ ^
Я
r+-T "r“+ rH —Н
S 8 ^ ГЧ 00 о\ Я «

Рис. 5.11. Условия примера 3


л г-
~ Т ’ “ М — I— r ^ i
00 00 g V

’^ h " - 1- s-t — 1

r ^ - j - a - f ------1
3 s S »
l“ * ' T aT " 1
- |- s ^ j- s - p a - j- s - |
ih *н <4 sM
s - r =- ^ s- w^ H »h
*H iH ^
- T ai - a1

г -т -н
pmH Л
fH wi Ы
IIS Гпава S. Динамическое программирование

3. Из пункта А в пункт Б необходимо проложить желез


дорогу по самому экономичному пути. Данные приведены на рис.
5.11.
4. Составить план распределения капиталовложений (К =200000 $)
в расширение мощностей по четырем предприятиям, максимизирую­
щий общую прибыль предприятий.
Исходные данные: известны возможные итоги на каждом из че­
тырех предприятий фирмы в результате расширения действующих
мощностей (табл. 5.3).
Таблица 5.3
Условия примера 4
Прирост выпуска продукции (g,) по предприятиям,
Капиталовложения,
тыс. $/год
тыс. $
1 2 3 4
0 0 0 0 0
50 25 30 36 28
100 60 70 64 56
150 100 90 95 110
200 140 122 130 142

Контрольные вопросы

1. Какие задачи можно решать методами динамического программирования,


2. Объясните алгоритм решения задач динамического программирования.
3. В чем заключается принцип оптимальности?
4. Укажите принцип выбора направления движения?
5. В каких случаях применяется динамическое распределение ресурсов?
6. Каков алгоритм распределения ресурсов?
Г л а в а 6
Нелинейное программирование

6.1. Основные понятия и определения


Задача нелинейного программирования формулируется анало­
гично задаче линейного программирования.
Определить, при каких значениях входных параметров х \,х 2, ...,
х„ целевая функция L достигает своего экстремума (максимума или
минимума), причем на значения входных параметров наложены
ограничения:
hi(xu x2,...,x n) = bi, / = 1Д,; (6.1)
g ,(x „ jг2. . . .,*„)> £,, / = * ,+ 1 Д 5; (6.2)
g i (xu x2,.. .,x n) Z b i, i = ks +l,k,; (6.3)
где: hi — ограничения на входные параметры в виде равенств;
gi — ограничения на входные параметры в виде неравенств;
Xj — входные параметры (переменные);
bj — коэффициенты, задающие ограничения на значения вход­
ных параметров.
Не существует единого подхода при решении задач нелинейно­
го программирования. Для некоторых типов задач нелинейного
программирования созданы свои методы — метод множителей Ла­
гранжа, метод деформированного многогранника, метод скользяще­
го допуска, квадратичное и выпуклое программирование, градиент­
ные методы и т. д.
Условно все задачи нелинейного программирования можно раз­
делить на три типа:
1. Задачи с нелинейной целевой функцией и линейной системой
ограничений. Для этого типа задач разработано наибольшее коли­
чество методов, хотя экстремум может быть найден далеко не для
всех видов целевой функции.
120 Гпава 6. Нелинейное программирование

2. Задачи с линейной целевой функцией и системой нелинейных


ограничений.
3. Задачи с нелинейной целевой функцией и системой нелиней­
ных ограничений.
Особенностью поиска экстремума в задачах нелинейного про­
граммирования является то, что решение может находиться как в
вершинах области допустимых решений (ОДР), так и на ребрах и да­
же внутри ОДР. Серьезную трудность при решении этих задач пред­
ставляет наличие нескольких локальных экстремумов внутри или на
границе ОДР. Как правило, ограничиваются поиском первого ло­
кального экстремума, и лишь некоторые методы позволяют вычис­
лить все локальные экстремумы внутри ОДР и среди них определить
глобальный экстремум. В данном случае под глобальным экстрему­
мом понимают наилучший (в некотором смысле) среди найденных
локальных экстремумов. В специальную группу выделены методы,
позволяющие найти экстремум на границе (ребре) ОДР.
Задачи линейного и целочисленного программирования можно
рассматривать как частный случай задачи нелинейного программи­
рования.
При работе с нелинейными функциями надо ввести уточнения в
некоторые определения, данные при описании задачи линейного
программирования, и ввести новые определения.
Оптимальное решение. Под оптимальным решением будем
понимать значения вектора входных параметров х = хи х2, ..., х„ и
соответствующее ему значение целевой функции L(х*), достигаю­
щее экстремального значения (минимума или максимума).
Под локальным оптимальным решением будем понимать значе­
ние целевой L(x*) функции, экстремальное (максимальное или ми­
нимальное) в некоторой 5-окрестности. Под глобальным оптималь­
ным решением понимается экстремальное значение целевой функ­
ции L(x ) во всей области допустимых решений. Метод скользящего
допуска дает глобальное оптимальное решение. При работе с мето­
дами нелинейного программирования для подтверждения нахожде­
ния глобального оптимального решения выполняют несколько вы­
числений при различных начальных значениях (точки старта алго­
ритма). Но это доказательство косвенное.
Вогнутость и выпуклость. Понятия выпуклости и вогнутости
используются при доказательстве наличия глобального оптималь­
ного решения. На рис. 6.1 приведены строго выпуклая (а) и строго
6.1. Основные понятия и определения J21
а а н а в н в ш в в в в в в Е а м в п в в в х а в г я в ^ в в а ш я в в в а а а в г в а ^ в а в а а п а а а а а о в в а а

вогнутая (б) функции одной переменной, а на рис. 6.2 — унимо­


дальная (а) и мультимодальная (б) функции одной переменной.

а б
Рис. 6.1. Выпуклая (а) и вогнутая (б)
функции одной переменной

а б
Рис. 6.2. Унимодальная (а) и мультимодальная (б)
функции одной переменной

Выпуклость и вогнутость накладывают более жесткие требова­


ния на функцию нежели требование унимодальности. Мультимо­
дальные функции не обладают свойствами выпуклости и вогнутости.
Поиск оптимального решения мультимодальной функции пред­
ставляет большие трудности. Для выпуклых (или вогнутых) функ­
ций можно ввести несколько определений.
Множество точек «-мерного пространства, содержащее вместе с
любыми двумя точками А и В и все точки отрезка АВ, называется
выпуклым телом (рис. 6.3, а).
Если в сколь угодно малой окрестности точки А содержатся
только точки данной области, то точка А называется внутренней
точкой выпуклой (вогнутой) области.
122 Гпава 6. Нелинейное программирование

F(x) т

X X
a б
Рис. 6.3. Выпуклое (а) и невыпуклое (б) множества

Если в сколь угодно малой окрестности точки А содержится


часть точек, которые принадлежат области, а часть точек не при­
надлежит области, то такая точка А называется граничной точкой
выпуклой (вогнутой) области.
Если точка А является граничной точкой выпуклой (вогнутой)
области и не лежит внутри отрезка, соединяющего две другие точки
выпуклой (вогнутой) области, то такая точка А называется угловой
точкой выпуклой (вогнутой) области.
Выпуклая (вогнутая) область называется замкнутой, если она
включает в себя все граничные точки.
Если радиус-вектор х, соединяющий начало координат с любой
точкой выпуклой (вогнутой) области, всегда меньше некоторого
заданного числа Q, большего нуля, то такая выпуклая (вогнутая)
область называется ограниченной. Если такое число Q указать нель­
зя, то выпуклая (вогнутая) область называется неограниченной.
Если выпуклая (вогнутая) замкнутая ограниченная область име­
ет конечное число угловых точек, то эта выпуклая (вогнутая) об­
ласть называется «-мерным многогранником.
Приведем без доказательства одну теорему. Пересечение вы­
пуклых (вогнутых) областей представляет собой выпуклую (вогну­
тую) область. _
Допустимость. Любой вектор х входных параметров, удовле­
творяющий условиям ограничений, заданных в виде равенств или
неравенств, называется допустимым вектором (допустимой точкой).
Множество допустимых точек задает область допустимых решений.
Если наилучшее решение (но не экстремальное) находится на гра­
нице ОДР, то такое решение называется условно-оптимальным.
6.1. Основные понятия и определения 123
Ограничение в виде неравенства обеспечивает нахождение векто­
ра входных параметров внутри ОДР. Ограничение в виде равенства
обеспечивает нахождение вектора входных параметров на пересече­
нии гиперповерхностей. Допустимые (или внутренние) точки (векто­
ры входных параметров) могут находиться внутри ОДР, внутри ОДР
на пересечении гиперплоскостей, на границе ОДР. Точки, лежащие за
пределами ОДР, называются недопустимыми или внешними.
Связывающим (активным) неравенством называется такое, кото­
рое для заданного х превращается в равенство. Область допустимых
решений (рис. 6.4) может быть односвязной (а) и многосвязной (б).

хг

Х\

а б
Рис. 6.4. Односвязная (а) и многосвязная (б)
области допустимых решений:
--------- ОДР;
--------- линия уровня функции;
---- ►— проекция антиградиента

В большинстве практических задач ОДР является односвяз­


ной. При поиске оптимального решения вектор входных параметров
может выходить за границы ОДР. Некоторые методы снабжены
процедурами по возврату вектора входных параметров на границу
или внутрь ОДР (метод скользящего допуска и др.).
Градиент. Линией уровня называется множество точек, для ко­
торых целевая функция имеет постоянное значение (рис. 6.4).
Если в какой-либо точке функция непрерывна и дифференци­
руема, то в этой точке существует градиент целевой функции L(x).
Градиент указывает направление наискорейшего возрастания (подъе­
ма) функции, а антиградиент — противоположное направление. Гра­
диент определяется как вектор-столбец первых частных производ­
ных L(x) по х
124 Гпава 6. Нелинейное программирование

дь(х‘)
fit,

(6.4)

дх„
В специальной литературе доказывается, что градиент ортого­
нален линии уровня, проходящей через точку дифференцирования,
и направлен в сторону максимума функции (направление наиско­
рейшего подъема). Противоположное направление градиента (анти­
градиент) указывает направление минимума (направление наиско­
рейшего спуска).
Аппроксимация функций. При решении задач нелинейного
программирования наиболее трудоемкой проблемой является вычис­
ление первых и вторых производных. Для уменьшения времени вы­
числений вместо вычисления производных в некоторых методах ис­
пользуют линейную и квадратичную аппроксимацию. Линейная (пер­
вого порядка) аппроксимация целевой функции выполняется с по­
мощью усеченного ряда Тейлора в окрестности точки х. Квадратич­
ная аппроксимация целевой функции получается из разложения в ряд
Тейлора путем отбрасывания членов третьего и старших порядков.
Необходимые и достаточные условия оптимальности реше­
ния. Полностью критерий оптимальности для задач нелинейного
программирования не разработан. Критерий оптимальности, как
правило, формируется для некоторого круга задач.
Для задачи нелинейного программирования, сформулированной
выше, необходимыми условиями нахождения локального экстре­
мума целевой функции L(x) являются:
а) целевая функция L(x) дифференцируема в точке х*.
б) если первая производная целевой функции L(x) равна нулю в
точке х*, то точка х* является стационарной.
Достаточными условиями существования локального экстрему­
ма будут названные необходимые условия и следующее:
в) вторые производные целевой функции L(x) в точке х* долж­
ны быть положительно определены.
6.2. Методы прямого поиска 125
В случае поиска максимального значения вторые производные
целевой функции L(x) должны быть отрицательно определены.
Существует несколько типов задач нелинейного программиро­
вания, для которых необходимые и достаточные условия не выпол­
няются (например, функции с разрывом), а экстремум (минимум
или максимум) существует (рис. 6.S).

Рис. 6.5. Функция с разрывом

Следует заметить что, если достаточные условия выполняются,


то х* обязательно будет экстремальной точкой.
В задачах нелинейного программирования для определения экс­
тремума разработаны многочисленные методы, которые можно
объединить в две группы [8].

6.2. Методы прямого поиска


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

6.2.1. Метод покоординатного спуска


Суть метода состоит в том, что поиск решения выполняется по
каждой оси (направлению изменения переменной *,) в отдельности.
Выбирается первая переменная (первая ось координат) и с опре­
126 Глава 6. Нелинейное программирование

деленным смещением выполняется перемещение по выбранной оси


координат. В каждой точке вычисляется значение целевой функции.
Движение вдоль выбранной оси координат прекращается в тот мо­
мент, когда очередная точка будет иметь значение целевой функции
большее, нежели в предыдущей точке (рис. 6.6). Фиксируется луч­
шая достигнутая точка по текущей оси. Затем переходят ко второй
оси координат (вторая переменная х2) и т.д. - до последней пере­
менной х„ (оси координат). Затем процедура поиска повторяется
заново, начиная с первой оси координат.

Л -

Lv
Рис. 6.6. Одна итерация метода покоординатного спуска

На рис. 6.6 показаны ортонормированные векторы е\ и ег. В ка­


ждом направлении сначала сделан один неудачный шаг, а затем не­
сколько удачных шагов.
Если при проходе очередного цикла нельзя указать ни одного
перемещения по любой оси координат, то уменьшают размер шага
и выполняют ту же процедуру с меньшим шагом.
Поиск экстремума прекращается в одном из двух случаев, или
когда размер шага становится меньше некоторой сколь угодно ма­
лой величины (две координаты х-, практически не отличаются друг
от друга), или когда значения целевой функции в двух соседних
точках становятся примерно одинаковыми (не превышают допус­
тимой точности вычислений), или можно потребовать одновремен­
ного выполнения первых двух условий. В первом случае, когда ко­
ординаты практически не изменяются, а целевая функция изменя­
ется, поиск выполняется вблизи точки разрыва целевой функции (в
близи +00 или - о о ) . Во втором случае целевая функция имеет неко­
торое «плато», на котором целевая функция имеет одинаковое зна­
чение. В третьем случае будет найдена точка экстремума, как пра­
вило, локального.
Для организации поиска методом покоординатного спуска ис­
пользуется рекуррентное соотношение.
6.2. Методы прямого поиска 127

jc* = ж*'1 + « * * « * (6.5)


где: дс*— координаты текущей точки поиска;
х*-/ — координаты предыдущей точки поиска;
и* — единичный вектор, определяющий направление спуска
на A-том шаге, т. е. может принимать значение +1 или
-1, что обеспечивает перемещение вдоль выбранной
оси в одном из двух направлений;
о* — размер шага, причем в* > 0.
Одна итерация включает в себя проход по каждой оси координат.
Существуют различные варианты реализации метода покоорди­
натного спуска: с фиксированным шагом и с изменяющимся разме­
ром шага. Этот метод может работать, как при безусловном поиске
экстремума, так и при наложенных ограничениях на аргументы (ко­
ординаты Xj).

Алгоритм метода покоординатного спуска


1. Определить координаты стартовой точки.
2. Вычислить значение целевой функции в стартовой точке.
3. Выбрать очередную ось координат и прибавить Ах (сделать
шаг).
4. Вычислить значение целевой функции в текущей точке.
5. Если значение целевой функции в текущей точке меньше, чем
значение целевой функции в предыдущей точке, то сделать еще
один шаг в том же направлении и перейти к шагу 4. Если зна­
чение целевой функции в текущей точке больше, чем значение
целевой функции в предыдущей точке, то перейти к шагу 6.
6. Определить был ли сделанный шаг в этом направлении пер­
вым. Если «Да», то запомнить что по текущей оси по текущему
направлению сделан первый неудачный шаг и перейти к шагу 7.
Если «Нет», то перейти к шагу 8.
7. Сменить направление движения по текущей оси координат,
т. е. вычесть Ах и перейти к шагу 4.
8. Проверить «Все ли оси координат просмотрены»? Если «Да»,
то перейти к шагу 9. Если «Нет», то перейти к шагу 3.
9. Проверить «По всем ли осям координат сделано по два неудач­
ных первых шага»? Если «Да», то уменьшить Ах (размер шага)
и перейти к шагу 10. Если «Нет», то перейти к шагу 3.
128 Гпава б. Нелинейное программирование

10. Проверить «Проверить достигнута ли требуемая точность вы­


числений»? Если «Да», то перейти к шагу 11. Если «Нет», то
перейти к шагу 3 и начать просмотр с первой оси координат.
11. Остановить вычисления. Вывести значение целевой функции и
координаты точки экстремума.
При поиске экстремума функции нескольких переменных (двух и
более) метод покоординатного спуска может плохо работать, если ар­
гументами функции существует корреляционная зависимость. Для
решения этой проблемы необходимо принять специальные меры [1].

6.2.2. Метод Хука - Дживса

Если в методе покоординатного спуска поиск экстремума вы­


полнялся произвольным выбором оси координат, то в методе Хука -
Дживса (1961 г.) на первом этапе выполняется анализ Д-окрест-
ности базовой точки и по результатам анализа выбирается наилуч­
шее направление движения, а на втором этапе выполняется собст­
венно поиск экстремума, т. е. движение в выбранном направлении.
Само движение в указанном направлении может выполняться за
один шаг или за несколько шагов до тех пор, пока на прекратится
уменьшение целевой функции (при поиске минимума целевой
функции). Затем снова выполняется исследующий шаг и движение
в новом направлении и т. д. В случае, когда по результатам иссле­
дующего шага нельзя указать направление движения (обнаружена
область локального экстремума), следует уменьшить размер иссле­
дующего шага и повторить процедуру исследования (а потом и
движения в указанном направлении). В методе Хука - Дживса ис­
пользуется тоже рекуррентное соотношение (6.5). Процедура поис­
ка экстремума заканчивается, когда достигнута требуемая точность
вычислений по значениям целевой функции и по значениям коор­
динат точки экстремума. При работе с алгоритмом метода Хука -
Дживса следует иметь в виду, что размер шага на этапе исследова­
ния и размер шага на этапе движения в направлении экстремума,
могут иметь разное значение [1,8].
а) этап исследования Д-окрестности базовой точки
На этом этапе, по очереди, для каждой оси координат дается
приращение Д в одну и другую стороны (+Д и -Д) и вычисляются
значения целевой функции в каждой из точек исследования (рис. 6.7).
Из всего множества полученных точек фиксируются те точки, у ко­
6.2. Методы прямого поиска 129
торых значение целевой функции меньше, чем значение целевой
функции в базовой точке. Для определения вектора направления
поиска экстремума к координатам базовой точки одновременно до­
бавляются смещения Д (с учетом знака) по тем осям координат, для
которых зафиксированы значения целевой функции меньшие, чем
значение целевой функции в базовой точке (при поиске минимума
целевой функции). Например, если выполняется поиск минимума
целевой функции девяти переменных и по шести осям координат
(шести переменным) зафиксированы шесть промежуточных точек,
у которых значение целевой функции меньше, чем в базовой точке,
то вектор направления поиска будет содержать смещение Л (отно­
сительно базовой точки) по этим шести осям координат (шести пе­
ременным х).

чч
Рис. 6.7. Исследование Д-окрестности базовой точки
для случая двух переменных

На рис. 6.7 показан вариант для нахождения минимума целевой


функции двух переменных и смещение Д по осям координат одина­
ковое. В точках X I Х%, Х \ и Xq выполняется исследование Д -
окрестности. В точках Х$ и Х$ целевая функция имеет меньшее
значение, чем в базовой точке Х 0. Точка Х 1 новая базовая точка, в
окрестности которой выполняется новое исследование Д-окрестности.
б) этап поиска экстремума
В определенном направлении поиска от базовой точки делают
шаг и вычисляют значение целевой функции. Если в текущей точке
значение целевой функции меньше, чем значение целевой функции
в базовой точке, то текущая точка становится базовой точкой, и
130 Гпава 6. Нелинейное программирование

делают еще один шаг в том же направлении до тех пор, пока значе­
ние целевой функции в текущей точке не будет больше, чем в по­
следней базовой точке. Затем заново выполняют этап исследования
относительно полученной базовой точки. На рис. 6.8 показана тра­
ектория поиска минимума целевой функции.
Блок-схема алгоритма метода Хука - Дживса представлена на
рис. 6.9.

Рис. 6 .8 . Траектория поиска минимума методом Хука - Дживса

Рис. 6.9. Блок-схема алгоритма Хука-Дживса


6.2. Методы прямого поиска 131
На практике рекомендуют использовать размер шага равным 1,
а на этапе поиска — равным 2.
Метод Хука - Дживса плохо работает на узких и длинных «ов­
рагах».

6.2.3. Метод Розенброка

Для устранения отмеченного недостатка метода Хука - Дживса


математиком Розенброком была предложена новая улучшенная по­
иска экстремума — метод Розенброка (1960 г.). В методе Хука -
Дживса поиск выполняется в ортогональных координатах, постро­
енных в каждой новой базовой точке. Причем построенные коорди­
наты колениарны координатам стартовой точки.
В методе Розенброка также предусмотрены два этапа: этап ис­
следования Д-окрестности и этап поиска экстремума. Этап исследо­
вания Д-окрестности полностью соответствует методу Хука - Джив­
са. А процедура определения направления поиска - оригинальная. В
каждой новой базовой точке строится ортогональная система коор­
динат, но эта система координат поворачивается на некоторый угол
относительно предшествующей системе координат (рис. 6.10). По­
строение новой системы координат, развернутой относительно пре­
дыдущей системы координат, выполняется с помощью процедуры
Грама - Шмидта. Разворот системы координат выполняется таким
образом, что одна из осей координат располагается параллельно

Рис. 6.10. Поворот системы координат (процедура Грамма - Шмидта)


132 Гпава 6. Нелинейное программирование

выбранному направлению поиска, т. е. вдоль главных осей квадра­


тичной аппроксимации целевой функции (вдоль «оврага»). Именно
вдоль этой оси и выполняется один или несколько шагов поиска
экстремума [8, 1].
Блок-схема алгоритма метода Розецброка представлена на рис. 6.11.

Рис. 6.11. Блок-схема алгоритма Розенброка


6.2. Методы прямого поиска 133
В методе Розенброка необходимо предусмотреть некоторое ко­
нечное число итераций (шагов), так как он не обеспечивает автома­
тическое окончание поиска экстремума.

6.2.4. Метод Пауэлла

В основу метода Пауэлла (1964 г.) положено свойство функции


второго порядка: «линии уровня целевой функции пересекаются
прямой линией, проходящей через точку экстремума, под одним и
тем же углом с касательной, построенной в точке пересечения с со­
ответствующей линией уровня» (рис. 6.12).

Рис. 6.12. Построение линии поиска экстремума


по двум стартовым точкам

Идея метода
Выбирается стартовая точка *о и с помощью метода покоорди­
натного спуска выполняется одна итерация, т. е. находится первая
базовая точка х\. Затем выбирается вторая стартовая точка х2 и так­
же определяется первая базовая точка х3. Через две базовые точки jti
и *з проводится прямая линия, которая обязательно пройдет через
точку экстремума х . Вдоль этой прямой линии осуществляется по­
иск точки экстремума. Прямая линия х\ и хз будет секущей по от­
ношению к линии хо и *i и к линии х2 и дгз, т. е. две последние линии
параллельны [1, 8].
При практическом использовании метода Пауэлла можно обой­
тись и одной стартовой точкой. Сначала из стартовой точки выпол­
няют одну итерацию методом покоординатного спуска и получают
]3 4 Глава б. Нелинейное программирование
■ ш е в в в в ш а а а в в ^ в в а в в в а п в в в в в в в в в а в ^ в а в а а а в а в ^ в в в в я в в а в в в в в в

первую базовую точку. Затем из первой базовой точки делают еще


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

Рис. 6.13. Построение линии поиска экстремума по одной стартовой точке

Алгоритм метода Пауэлла


1. Определить координаты стартовой точки. Вычислить размер
шага (величину ), выполнив одномерный поиск минимума це­
левой функции по каждой их осей координат:
^ +V „ )= m in f( v * ^ ) <6-6>
при этом будут получены размер смещения Д = ho = min (А,)
2. координаты базовой точки:
xi = х \ + К р » (6-7)
где: Xi - единичный ортонормированный вектор.
3. Выполнить п одномерных поисков по каждой оси координат,
при чем каждый последующий поиск выполняется из точки,
полученной на предыдущем шаге. Также определяем новое
смещение Д Qi\) и координаты базовой точки лСн-ь
4. Заменяем предыдущее направление поиска на новое направле­
ние поиска
p = xi+l-x i (6.8)
6.2. Методы прямого поиска 135
5. Выполняем поиск экстремума функции, т. е. в направлении
р = хм - х( с шагом h\.
6. Сделано ли к итераций? (к = п — количество переменных) Если
«Да», то перейти к шагу 7. Если «Нет», то — к шагу 9.
7. Целевая функция имеет второй порядок? Если «Да», то поиск
прекратить и положить х = x,+i и вывести результат. Если
«Нет», то перейти к шагу 8.
8. Проверить, выполняется ли условие ||x/+i -х,|| < £. Если «Да», то
поиск прекратить и положить х = хж и вывести результат. Ес­
ли «Нет», то перейти к пункту 9.
9. Точку Xtv1принять за базовую и перейти к пункту 3.
Процедура Пауэлла будет сходиться в точку локального мини­
мума при условии, что целевая функция строго выпуклая.
Если целевая функция имеет порядок выше второго, то необхо­
димо предусмотреть дополнительные итерации для локализации
точки экстремума._________________________________________
Поэтому в приведенном выше алгоритме предусмотрен шаг 8.

6.2.5. Метод регулярного многогранника

Метод поиска экстремума с помощью регулярного симплекса


был предложен Спендли, Хекстом и Химсвортом. Свое название
метод получил за счет использования регулярной (равносторонней)
фигуры в w-мерном пространстве, так как регулярные многогранни­
ки называют симплексами. Метод регулярного симплекса использу­
ется для поиска экстремума функции двух и более переменных. Ре­
гулярный симплекс (многогранник) имеет п + 1 вершину, где п —
количество переменных целевой функции. Так, для случая двух пе­
ременных регулярный симплекс будет иметь три вершины и пред­
ставлять собой равносторонний треугольник. В случае трех пере­
менных — тетраэдр (правильная пирамида, в основании которой
лежит равносторонний треугольник) и т. д.
При поиске минимума целевой функции L(x) двух переменных в
качестве симплекса используется равносторонний треугольник.
Первоначально векторы входных параметров задают в вершинах
симплекса, где и вычисляют значения целевой функции. Далее оп­
ределяют, в какой вершине симплекса целевая функция имеет мак­
симальное значение. Затем определяют центр тяжести симплекса
136 Гпава 6. Нелинейное программирование

(в данном случае центр равностороннего треугольника) и отобра­


жают вершину с максимальным значением целевой функции через
центр тяжести (рис. 6.14).

а Ъ

Рис. 6.14. Отображение вершины симплекса


через центр тяжести:
• — точка центра тяжести

Строят новый регулярный симплекс, вершинами которого бу­


дут две вершины предыдущего симплекса и отображенная вершина.
В отображенной вершине вычисляют значение целевой функции, и
процесс повторяется. Таким образом, шаг за шагом регулярный
симплекс перемещается в сторону минимума. Дополнительно пре­
дусмотрены правила уменьшения размера симплекса и предотвра­
щения циклического движения вокруг точки экстремума.
Исходный симплекс имеет вершины a, b и с. В вершине а значение
целевой функции имеет максимальное значение. Вершина а через
центр тяжести отображается, и таким образом, получена отображенная
вершина d. Отображенный симплекс имеет вершины Ь, e n d (рис. 6.15).
Поиск экстремума заключается в последовательном отображении
вершины симплекса и его сжатии (уменьшении размера симплекса).
Траектория поиска экстремума целевой функции показана на рис. 6.15.
Для уточнения точки экстремума на последнем шаге надо выполнить
сжатие симплекса (на рис. 6.15 не показано).

Алгоритм метода регулярного симплекса.


1. Задать координаты дс1,1 и х 1,2 стартовой (базовой) точки. Для
и-мерного случая — п координат.
2. Задать длину ребра (Ь) регулярного симплекса.
3. Вычислить координаты вершин симплекса по формулам:
6.2. Методы прямого поиска 137

Уй+Т-1
J=‘
XUJ = «л/2 ’
, i = 2 ,n + \. (6.9)
I 2 •Jn + 1 + n —l , . .
X' + ----------- 7=-------Ь, J * l
n jl
4. В каждой вершине симплекса определить значение целевой
функции Цх).
5. Вычислить критерий останова алгоритма по формуле

Se, (6.10)
" + 1 1.1
где е — малое число.
Если критерий останова алгоритма меньше е , то перейти к шагу
13. Если «нет», то перейти к шагу 6.
6. Определить вершину с максимальным значением целевой
функции и присвоить ей индекс h, т. е. L(xh). Определить вершину с
минимальным значением целевой функции и присвоить ей индекс /,
т. е. L(д/).
7. Вычислить координаты центра тяжести (порядковый номер
вершины и + 2) по формуле:
17-1 > —
гл+2tj _ 1 _
- x h’J (6 . 11)
2У'
IT
1

_
238 Гпава 6. Нелинейное программирование

8. Отобразить вершину xh через центр тяжести, т. е. пересчи­


тать координаты вершины (порядковый номер отображенной вер­
шины гг + 3) по формуле:
xn+3'J = Xn+2-J + a(xn+2’j - x h’J), (6.12)
где a — коэффициент отображения.
9. Вычислить значение целевой функции в отображенной вершине.
10. Если значение целевой функции в отображенной вершине
меньше чем в вершине дД то заменить вершину х* симплекса на
отображенную вершину. Если «нет», то перейти к шагу 11.
11. Выполнить редукцию (сжатие к вершине xf симплекса) сим­
плекса по формуле:
x',J = x l,J +0,5{x',J- д /’-'), / * / , / = 1,и +1, j = 1,n. (6.13)
12. Перейти к шагу 4.
13. Вывести координаты точки экстремума и значение целевой
функции в точке экстремума. Остановить алгоритм.
В рассмотренном алгоритме через центр тяжести отображалась
только одна вершина х \ Существуют алгоритмы, когда через центр
тяжести отображаются несколько вершин симплекса, значения це­
левых функций в которых больше значения целевой функции в цен­
тре тяжести [1]. Траектория поиска экстремума по такому алгорит­
му представлена на рис. 6.16.

Рис. 6.16. Траектория поиска экстремума


6.2. Методы прямого поиска 139
Метод регулярного симплекса имеет следующие недостатки:
• нет возможности ускорить спуск в удачно выбранном на­
правлении;
• серьезные трудности обхода «седловых» точек (обход «ов­
рагов» и «хребтов») [1,8].

6.2.6. Метод деформируемого многогранника

Нелдер и Мид усовершенствовали метод регулярного симплек­


са, сохранив его достоинства, и предложили методику ускорения
поиска в удачно выбранном направлении.
В методе деформированного многогранника (метод Нелдера -
Мида) также строят исходный регулярный симплекс, определяют
значения целевой функции в вершинах симплекса.
При работе с алгоритмом метода деформируемого многогран­
ника используются следующие соглашения:
• первый индекс координаты входного параметра определяет
порядковый номер вершины симплекса. Количество вершин
симплекса равно n + 1;
• второй индекс координаты входного параметра обозначает
порядковый номер оси координат (координата направле­
ния). Для целевой функции двух переменных максимальное
значение второго индекса j = 2.
В двухмерный массив координат вершин симплекса (и + 1 вер­
шина) добавлены координаты:
п + 2 — центра тяжести;
п + 3 — отображенной вершины;
п + 4 — растянутой вершины;
п + 5 — сжатой вершины.
Для удобства обозначений в выражениях используются индексы:
А— номер вершины симплекса, которой принадлежит макси­
мальное значение целевой функции
f{x[k)) = max \f{x(P )}, где j = 1, n + 1; (6.14)
/ — номер вершины симплекса, которой принадлежит мини­
мальное значение целевой функции
f(x jk)) = min \f{x(P )}, где j = 1, n +1; (6.15)
k — номер шага (итерации) алгоритма.
140 Гпава в. Нелинейное программирование

Для определения координат центра тяжести симплекса исполь­


зуют выражение:

/= | /

Исходный симплекс — регулярный, следовательно в начало ко­


ординат можно поместить либо одну из вершин симплекса, либо
центр тяжести. Из аналитической геометрии известно, что координа­
ты вершин правильной (регулярной) фигуры можно задать с помо­
щью матрицы
О dx d 2 ... d 2
0 d 2 dx ... d 2
(6.17)
О d 2 d 2 ... dx
Количество столбцов матрицы D соответствует количеству
вершин симплекса (и + 1), а строки матрицы D содержат координа­
ты вершин симплекса. Количество строк равно и.
Значения элементов матрицы D вычисляют по формулам:
(6.18)

(6.19)

где t — расстояние между вершинами симплекса. Для большинства


задач / = 1.
Над отображаемой вершиной в методе деформируемого много­
гранника могут быть выполнены следующие процедуры.
1. Отображение вершины.
В случае поиска минимума целевой функции через центр тяжести
отображается вершина h с наибольшим значением целевой функции.
В случае поиска максимума целевой функции — вершина /. Отобра­
жение вершины симплекса (рис. 6.17) выполняется с использованием
выражения:
(6.20)
где а > 0 — коэффициент отображения.
Если значение целевой функции в отображенной вершине (п + 3)
меньше, чем в вершине д и больше, чем в вершине х/, то координаты
вершины Xh заменяют на координаты отображенной вершины.
6.2. Методы прямого поиска 141

Рис. 6.17. Варианты отображения вершины симплекса:


— — •— отображенная вершина х"*3;
.......... — растянутая вершина х"*4;
— • • - — сжатая вершина У*5

2. Растяжение вершины.
Если после отображения вершины симплекса оказалось, что
значение целевой функции в отображаемой вершине меньше, чем
во всех остальных вершинах или равно значению целевой функции
в вершине х/, то выбранное направление удачное, т. е. где-то в этом
направлении находится экстремум. Поэтому отображаемую верши­
ну надо продвинуть в направлении отображения (см. рис. 6.17).
(6.21)
где у > 1 — коэффициент растяжения.
Если значение целевой функции в растянутой вершине меньше,
чем значение целевой функции в отображенной вершине, то коор­
динаты вершины X/, заменяются на координаты растянутой верши­
ны. В противном случае — координаты вершины х* заменяются на
координаты отображенной вершины.
3. Сжатие вершины.
Если после отображения вершины симплекса оказалось, что
значение целевой функции в отображенной вершине больше или
равно значению целевой функции в вершине х*, то направление
отображения выбрано неудачно и отображенную вершину надо
приблизить к центру тяжести (см. рис. 6.17). Сжатие вершины вы­
полняется по формуле:
(6 .22)
где 0 < р < 1 — коэффициент сжатия.
Если после выполнения процедуры сжатия значение целевой
функции в сжатой вершине будет меньше, чем в вершине х*, то вы­
полняем замену координат вершины х* на координаты сжатой вер­
142 Г raea 6. Нелинейное программирование

шины. В противном случае выполняется процедура редукции вер­


шин симплекса.
По формуле (6.22) симплекс сжимается к вершине х/. Можно пре­
образовать формулу (6.22) и симплекс будет сжиматься к центру тяже­
сти.
4. Редукция вершин.
Если в результате выполнения процедур отображения и сжа­
тия оказалось, что выполнить замену координат вершины хь нель­
зя, то выполняется процедура редукции вершин симплекса, в ре­
зультате чего геометрические размеры симплекса уменьшаются,
как правило, в 2 раза. Редукция вершин симплекса выполняется
по формуле:
= *£*]+0,5 (*<*> -*<*]), j = й Г Й . (6.23)
Процедура редукции выполняется в том случае, когда нет возмож­
ности отобразить вершину xh, т. е. симплекс находится в окрестности
экстремума и надо уточнить координаты экстремальной точки.

Для всех процедур — отображение, растяжение, сжатие, р е­


дукция и определение координат центра тяжести — вычисле­
ния по указанным формулам надо выполнить для каждого индек-
са j (для каждого координатного направления).___________________

При выполнении процедур растяжения и сжатия исходный ре­


гулярный симплекс изменяет свои геометрические размеры и теряет
свойство регулярности.
5. Критерий окончания поиска.
Критериев окончания поиска можно указать несколько. Наи­
лучшего критерия окончания поиска нет. Авторы метода деформи­
руемого многогранника рекомендуют в качестве критерия оконча­
ния поиска использовать выражение:

где г — произвольное малое число, которое определяет точность


вычисления значения целевой функции.
Используемый деформируемый многогранник (симплекс) наибо­
лее удачно приспособлен к топографии целевой функции, т. е. изме­
няет свою форму в зависимости от «рельефа» целевой функции [1].
• 6.2. Методы прямого поиска J43
' пи ч. I .11 г ■ ■■■ .1 ■I.l тг.тгг1 1
■■ г . - -г■■■l-в........i - ■ . ■ ■ . . ■■■

Авторы метода деформируемого многогранника провели ряд


исследований и рекомендуют следующие значения коэффициентов:
а = 1; Р = 0,5 и у = 2. Другие исследователи этого метода рекомен­
дуют а = 1; 0,4 < р < 0,6 и 2,8 < у < 3,0 [8]. Предложенные рекомен­
дации хорошо себя показали на многих целевых функциях, хотя при
исследовании специальных целевых функций значения коэффици­
ентов могут быть другими.

6.2.7. Метод скользящего допуска

Метод скользящего допуска ориентирован на решение задач, ко­


торые содержат ограничения на входные параметры в виде нера­
венств и равенств, причем сами ограничения могут быть как линей­
ными, так и нелинейными. Обеспечение требований выполнения ука­
занных ограничений является трудоемкой задачей, требующей для
своего выполнения много машинного времени. Дня обеспечения вы­
полнения этих требований метод скользящего допуска использует
информацию как допустимых точек (векторов входных параметров),
так и почти допустимых и недопустимых точек. Почти допустимыми
точками будем называть такие точки, которые нарушают одно или
несколько условий ограничения на величину П сколь угодно малую.
Идея величины О. такова: на первых шагах поиска оптимального ре­
шения Q имеет достаточно большую величину. По мере выполнения
алгоритма величина Q уменьшается и в точке экстремума С1 = 0.
Таким образом, задача нелинейного программирования может
быть сформулирована так:
L(x) = min f(x) (6.25)
при ограничениях П* - '{'(х) > 0,
где Q — значение критерия скользящего допуска, которое есть по­
ложительно определенный функционал над множеством
условий ограничений на значения входных параметров.
В момент старта значение £1 определяется по формуле:
П° = 2 ( т - 1)(, (6.26)
где т — количество ограничений в виде равенств;
t — размер ребра исходного симплекса.
На следующих шагах алгоритма значение £2 определяется по
формуле:
144 Гпава 6. Нелинейное программирование

где xf — координаты i-к вершины многогранника на к-м шаге;


х кп+2 — координаты центра тяжести многогранника на к-м шаге.
Если учесть значения координат вершины симплекса по каждой
оси, то:

Из выражения (6.24) видно, что Q представляет собой усреднен­


ное значение от координат вершин до центра тяжести многогранни­
ка и положительно определено. По мере выполнения алгоритма
значение П будет изменяться: при выполнении процедуры растяже­
ния — увеличиваться, а при сжатии — уменьшаться. Для обеспече­
ния убывания критерия скользящего допуска Q при выполнении
алгоритма в выражении (6.27) предусмотрен выбор наименьшего
значения между значением критерия текущего шага и значением
критерия предыдущего шага. Таким образом, обеспечивается моно­
тонное уменьшение (или неувеличение) критерия скользящего до­
пуска. После выполнения процедуры редукции значение критерия
скользящего допуска О. резко уменьшается. В пределе (в точке экс­
тремума) деформируемый многогранник стягивается в точку и
lim Пк =0. (6.29)
Функционал vF(;c) является мерой степени нарушения условий
ограничения, накладываемых на входные параметры. Значение ¥(*)
определяется по формуле:

(6.30)

где hj(x) — значение нарушения условий ограничений, заданных в


виде равенств;
g i( x ) — значение нарушения условий ограничений, заданных в
виде неравенств;
и, — оператор принимающий два значения: 0, если нарушений
условий нет, или 1, если условия ограничений нарушены.
6.2. Методы прямого поиска 145
Таким образом, ¥(*) учитывает только нарушенные ограниче­
ния и является величиной положительной (берется положительное
значение квадратного корня) для любого недопустимого вектора
входных параметров, ^(х) можно использовать для различения до­
пустимых (¥(*) = 0) и недопустимых (¥(*) > 0) векторов входных
параметров.
Среди множества недопустимых точек (векторов входных пара­
метров) можно выделить почти допустимые точки, т. е. точки, для
которых ¥(х) имеет некоторое небольшое значение. Таким образом,
с помощью ¥(*) можно регулировать ширину области почти допус­
тимых точек, сравнивая конкретное значение *¥(х) с каким-то за­
данным значением. Авторы метода скользящего допуска предлага­
ют следующие критерии оценки допустимости точки (вектора
входных значений):
а) допустимая точка, если ^*(х) = 0; (6.31)
б) почти допустимая точка, если 0< < С1к; (6.32)
в) недопустимая точка, если *Р*(х) ■ (6-33)
Поэтому область допустимости точек определяется соотношением:
П * -В Д > 0 . (6.34)
Алгоритм метода скользящего допуска включает в себя один из
методов безусловной оптимизации (регулярного многогранника,
Заутендейка, Розенброка, Дживса-Хука и т.д.), процедуру опреде­
ления статуса точки (допустимая, почти допустимая, недопустимая)
и процедуру интерполяции (перевод недопустимой точки в допус­
тимую или почти допустимую). Сама процедура интерполяции в
разных ситуациях выполняется по-разному. Если нарушено ограни­
чение в виде равенства, то процедура интерполяции представляет
собой один из методов безусловной оптимизации, где в качестве
целевой функции выступает функционал 'Р(х). В этом случае авто­
ры метода скользящего допуска рекомендуют использовать метод
регулярного симплекса или метод деформируемого многогранника.
Если нарушено ограничение в виде неравенства, то авторы метода
скользящего допуска предлагают оригинальную процедуру, которая
будет описана далее, или можно использовать метод деления отрез­
ка пополам, метод «золотого сечения» и т.д. Если нарушено сразу
несколько ограничений, то предлагается использовать метод регу­
лярного симплекса или метод деформируемого многогранника. В слу­
чае, когда указанные методы не приносят желаемого результата,
10- 1962
146 Гпава 6- Нелинейное программирование

авторы метода скользящего допуска предлагают использовать ме­


тод покоординатного спуска, т. е. работают с первым нарушенным
ограничением и пытаются приблизить точку к области почти допус­
тимых значений, затем со вторым нарушенным ограничением и т. д.
Как только функционал ¥(*) примет почти допустимое значение,
метод покоординатного спуска прекращает свою работу, даже если
остались не рассмотренными нарушенные ограничения.
По мере движения к экстремуму значение Л уменьшается, что
приводит к уменьшению области почти допустимых точек. При этом
большую часть времени занимает процедура интерполяции, т.е. обес­
печение выполнения ограничений. В каждый момент времени только
одна вершина многогранника может бьггь недопустимой. В конце ра­
боты алгоритма деформируемый многогранник стягивается в точку
(вершины симплекса приближаются к центру тяжести) и, следова­
тельно, величина Q приближается к нулю в соответствии с формула­
ми (6.27) и (6.28). Решением задачи нелинейного программирования
обязательно будет допустимая точка в силу свойств метода регуляр­
ного симплекса. На последних шагах алгоритма регулярного много­
гранника ¥(х) не влияет на сходимость алгоритма, так как выполняет­
ся процедура редукции, и все вершины сжимаются к центру тяжести.
Исходный многогранник строится по правилам, указанным вы­
ше. За базовую точку выбирается вершина симплекса, вышедшая за
пределы ОДР. Если размеры исходного многогранника меньше ши­
рины почти допустимой области, то ориентация исходного много­
гранника не влияет на сходимость алгоритма (рис. 6.18).
Исходный симплекс с вершинами 1, 2 и 3 лежит за пределами
ОДР. В точке I находятся вершины двух разных симплексов: ос­
новного, с помощью которого выполняется поиск минимума целе­
вой функции, и дополнительного, с помощью которого предприни­
мается попытка вернуть вершину основного симплекса в область
допустимых решений. Если задача возврата вершины симплекса на
границу ОДР или в ближайшую от нее зону (почти допустимая точ­
ка) решается положительно, то вершина основного симплекса заме­
няется на найденную вершину. Далее рассматривается только ос­
новной симплекс.
В вершине 1 целевая функция имеет максимальное значение. В ре­
зультате отражения вершины 1 получим вершину 4, а после растяже­
ния — вершину 5. Новый симплекс имеет вершины 2,3 и 5. Одна вер­
шина (пятая) уже находится внутри ОДР (см. рис. 6.18).
6.2. Методы прямого поиска 147

Рис. 6.18. Перемещение недопустимой


точки в область ОДР
Стратегия метода скользящего допуска при использовании в ка­
честве основного метода регулярного многогранника заключается в
следующем:
• целевая функция минимизируется методом деформируемого
многогранника;
• после выполнения каждой из процедур отображения, растя­
жения или сжатия выполняется проверка полученной вер­
шины на принадлежность ее к ОДР;
• если вновь полученная вершина окажется недопустимой, то
метод деформируемого многогранника применяется к функ­
ционалу ¥(*) (одному или нескольким нарушенным ограни­
чениям) и переводят недопустимую точку в допустимую
или почти допустимую область;
• затем снова минимизируют целевую функцию методом де­
формируемого многогранника и т. д.
При переходе от шага к к шагу к + 1 всегда производится замена
только одной вершины многогранника.
Процедура минимизации целевой функции заканчивается, когда
^ < е, т. е. деформируемый многогранник будет стянут в точку, ко­
торая соответствует точке экстремума.
ю*
148 Гпава 6. Нелинейное программирование

Следует иметь в виду, что в методе скользящего допуска стро­


ится два симплекса: основной и дополнительный. Первый исполь­
зуется для минимизации целевой функции и изменяется от исход­
ного, регулярного состояния до состояния, стянутого в точку, когда
найден экстремум.
Второй также деформируемый симплекс каждый раз строится за­
ново в тот момент времени, когда полученную новую точку симплек­
са целевой функции надо перевести из недопустимой области в до­
пустимую или почти допустимую область (минимизация функциона­
ла ¥(х)). Таким образом, относительно полученной недопустимой
точки симплекса целевой функции строится регулярный симплекс. В
результате работы метода деформируемого многогранника эта недо­
пустимая точка переводится либо в допустимую, либо в почти допус­
тимую. Полученная допустимая или почти допустимая точка заменя­
ет вершину X/, в основном симплексе целевой функции.
Изложенная процедура перемещения недопустимой точки в до­
пустимую или почти допустимую область хорошо работает в случае
ограничений в виде равенств. В случае ограничений в виде нера­
венств метод нерегулярного многогранника работает плохо, так как
возникает циклический процесс по перемещению точки. То есть
недопустимая точка после ее возвращения в ОДР оказывается дос­
таточно глубоко внутри ОДР, и эта точка оказывается точкой мак­
симума целевой функции дс*. К точке х/, опять применяют процедуру
отображения. Отображенная точка опять становится недопустимой
и т. д., т. е. возникает циклический процесс.
Поэтому при работе с ограничениями в виде неравенств исполь­
зуют процедуру квадратичной интерполяции.
Если в результате поиска экстремума одна из вершин деформи­
руемого многогранника вышла за границы ОДР и за границы почти
ОДР, то для возврата этой вершины в область ОДР (или почти ОДР)
можно воспользоваться следующей процедурой.
Из оставшихся внутри ОДР вершин деформируемого многогран­
ника выбирают ту вершину, в которой целевая функция имеет наи­
меньшее значение — Хг (рис. 6.19). Тогда линия, соединяющая эти
вершины (дгз и xj) деформируемого многогранника, обязательно будет
проходить через границу ОДР. Ясно, что в точке пересечения линии,
соединяющей вершины хз и х2 и границы ОДР, значение ^ = 0. Авто­
ры метода скользящего допуска предлагают специальную процедуру
для возвращения недопустимой вершины.
6.2. Методы прямого поиска 149

Рис. 6.19. Перемещение недопустимой


точки в область ОДР
Обозначим внутреннюю точку дгг через X s , а внешнюю точку хз —
через х*-1. Тогда любая точка х на отрезке Xs и Jc1' 1 задается сле­
дующим вьфажением:
x = xs +XsS при 0<Х* <ЛГ, (6.35)
где X* — расстояние между точками Xs и х*-1, которое определя­
ется выражением:

X* = (6.36)

где -единичный вектор в направлении xs - X s ', которое оп­


ределяется выражением:
s =- (6.37)
Г
Дополнительно вводится функция Z(x) от суммы нарушений ог­
раничений в виде неравенств, т. е.

а д = 1 > 2(*), (6.38)


/=1
где р — количество нарушенных ограничений в виде неравенств
в точке х .
ISO Гпава 6. Нелинейное программирование

Теперь надо определить значение функции в начале отрезка z\


(точка хг или, что то же самое, X s ), в конце отрезка z3 (точка х3или, что
то же самое, X s 1) и точки где-то в середине отрезка z2. Но точка в се-
редине отрезка не обязательно будет находиться на границе ОДР. Нам
же интересно найти на прямой такую точку, которая расположена на
границе ОДР. В этом случае нарушение условий ограничений равно
нулю, т. е. в этом смысле найденная точка будет оптимальной.
Для поиска координат оптимальной точки х * на отрезке x s - X s 1
предлагается воспользоваться формулой:

(6.39)
J
где a = z i - 2 z 2 + z3; (6.40)
Р = 3zj - 4 z2 + z3. (6.41)
В выражении (6.39) рассматриваются только положительные корни.
Если в задаче нелинейного программирования используются од­
новременно ограничения в виде равенств и в виде неравенств, то для
возврата недопустимой точки (вершины) первоначально используется
метод нерегулярного симплекса. Если метод нерегулярного симплекса
не дал желаемых результатов, то в недопустимой точке (вершине)
приступают к анализу каждого ограничения отдельно. Используют
процедуру интерполяции для ограничений в виде равенств методом
нерегулярного симплекса, а для ограничений неравенств — по форму­
ле (6.39). После выполнения процедуры интерполяции для каждого
ограничения вычисляют значение функционала ¥(л). Если £, - Щх) > О,
то проверку нарушения условий ограничения прекращают, а найден­
ную точку (вершину) интерпретируют как почти допустимую и воз­
вращаются к алгоритму оптимизации целевой функции. Если после
просмотра всех ограничений вершину в ОДР вернуть не удалось, то
возвращаются к оптимизации целевой функции и выполняют проце­
дуру редукции вершин симплекса.
Следует иметь в виду, что при оптимизации функционала Ч^х)
используется n + 1 вершина симплекса, где и ;— общее число пере­
менных. А при оптимизации целевой функции используется r+ 1
вершина, где г = п - т — число степеней свободы (из рассмотрения
исключаются зависимые переменные). Если отсутствуют ограниче­
ния в виде равенств, то п = г.
6.3. Гоадивнтныв методы 151
Локальные экстремумы (минимумы или максимумы) в методе
скользящего допуска можно легко исключить, увеличив размер ребра
исходного регулярного симплекса. Чем больше размер ребра сим­
плекса (но не более ширины ОДР), тем выше гарантия исключения
локальных экстремумов. По рекомендации авторов метода, оптималь­
ный размер симплекса, когда он покрывает 60 - 80 % ОДР [8].
Преимущества метода скользящего допуска:
• скорость сходимости алгоритма не зависит от характеристик
целевой функции (или функций) и от характеристик функ­
ций ограничений;
• так как для определения направления поиска экстремума
используется большой объем информации (значения целе­
вой функции во всех вершинах симплекса), то выбирается
наилучшее направление и исключаются локальные экстре­
мумы. Но исходный симплекс должен размещаться в облас­
ти допустимых решений или в области почти допустимых
решений.
Работа алгоритма заканчивается в следующих случаях:
1. В случае успешного завершения поиска, т. е. нахождения точ­
ки (вершины), удовлетворяющей условиям ограничений и достав­
ляющей наименьшее значение целевой функции.
2. В случае неудачи, когда не удается найти допустимую или
почти допустимую точку (вершину).
Для решения большинства задач рекомендуется использовать
следующие значения коэффициентов:
а = 1; Р = 0,5; у = 2; $=1<Г*.

6.3. Градиентные методы


Градиентные методы поиска экстремума функции при своей ра­
боте требуют вычисления не только значения целевой функции на
каком-либо множестве точек, но и вычисления первой производной
на том же множестве, а иногда и вычисления второй производной
на том же множестве. Эти методы различаются разработанным ма­
тематическим аппаратом, теоретическим доказательством сходимо­
сти и высоким быстродействием. К недостаткам этих методов сле­
дует отнести невысокую точность результата и организацию вы­
полнения достаточно трудоемких вычислений.
252 гпава & Нелинейное программирование
■ 1■ 1 ' ' —— — — — — ......................................................................................................— — ^ —

6.3.1. Метод градиентного спуска

Суть метода градиентного спуска заключается в том, что в каж­


дой У-й точке алгоритма вычисляется градиент [см. формулу (6.4)],
определяются направление движения и шаг. Так как за один шаг не­
возможно достичь точки минимума целевой функции, то строится
последовательность точек, переходя от одной точки к другой, дости­
гают точки минимума. В точке минимума все элементы вектора гра­
диента принимают значение нуля. Для определения координат оче­
редной точки используют направление, противоположное градиенту
(антиградиент), а размер шага можно определить по различным пра­
вилам. Существует два основных класса правил определения размера
шага: с фиксированным коэффициентом изменения размера шага и с
оптимальным подбором размера шага. Каждый класс правил содер­
жит несколько конкретных методов поиска минимума.
Для случая с фиксированным коэффициентом изменения разме­
ра шага координаты точки на к-м шаге определяются по формуле:
** = / • '- 5 * . (6.42)
Знак минус определяет направление движения против градиента
(при поиске минимума целевой функции).
Размер шага j * на &-й итерации определяется по формуле:
S k = d k & a d f ( x k- 1), (6.43)
где dk— коэффициент изменения шага, как правило, меньше единицы.
Если условие
| / ( * * - ') - f ( x k )| > d k | - grad/(* * -' )| (6.44)
не выполняется, то уменьшают коэффициент изменения шага до тех
пор, пока неравенство (6.44) не будет выполнено.
Критерием останова алгоритма является выполнение следующе­
го неравенства:
|-g ra d /(x * )|< e , (6.45)
где е — наперед заданное сколь угодно малое число.
Рекомендуемые значения констант:
• коэффициент изменения (уменьшения) шага с4 = 1 в старто­
вой точке. При движении по алгоритму значение коэффици­
ента изменения шага уменьшается;
• точность вычисления е = 0,000001.
Обобщенный алгоритм метода градиентного спуска с использо­
ванием фиксированного коэффициента изменения шага.
6.3. Градиентные методы 153

1. Задать координаты стартовой точки х? .


2. Задать значенияр, d^, s.
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. Вывод координат точки минимума х и значения целевой
функции в точке минимума f (jc*). Останов алгоритма.

Пример 6.1
Найти минимум целевой функции F(x) = xf +4х% при е < 0,01 и
d0= 1.
Сначала решим задачу при постоянном значении коэффициента
(табл. 6.1) изменения шага d = 1 (пункт 6 алгоритма не выполняется).
Таблица 6.1

Итера­ а /И з /И Разме] шага


*1 хг grad/(**) d
ция Эх, дх2 *i х2
0 2 2 4 16 16,5 -0,24 -0,97 1
1 1,76 1,03 3,52 8,24 8,96 -0,39 -0,92 1
2 1,37 0,11 2,74 0 ,8 8 2 ,88 -0,95 -0,31 1
3 0,42 -0 ,2 0,84 - 1,6 1,8 -0,46 -0,89 1
4 -0,04 -1,09 -0,08 -8,72 8,72 0,009 1 1
5 -0,03 -0,09 -0,06 -0,72 0,72 0,08 1 1
6 0,05 -0,91 0 ,1 -7,28 7,28 - 0 ,0 1 -1 1
7 0,04 -1,91 0,08 -15,28 15,28 - 0,01 1 1
8 0,03 -0,91 0,06 -7,28 7,28 - 0 ,0 1 1 1
9 0,02 0,09 0,04 0,72 0,72 -0,06 -1 1
10 -0,04 -0,91 -0,08 -7,28 7,28 0,01 1 1
154' i Гпава 6. Нелинейное программирование

Начиная с четвертой итерации, вокруг точки минимума целевой


функции начинаются колебания, слабо сходящиеся к точке минимума.
Использование п. 6 алгоритма приводит к точке минимума целе­
вой функции по асимптотическому закону, т. е. градиент функции
плавно убывает (табл. 6.2).
Таблица 6.2
Значе ние целе-
Размер шага
Ите­ ВОЙ ( )ункции
5/ И з /И
ра­ *1 *2 grad/(x*) теку­ предше­ d
дхх дх2
ция щее ствую­ *\ *2
щее
0 2 2 4 16 16,5 20 0 1 -0,24 -0,97
1 1,76 1,03 3,52 8,24 8,96 7,34 20 1 -0,39 -0,92
2 1,37 0,11 2,74 0,88 2,88 1,93 7,34 1 -0,95 -0,31
3 0,42 -0,2 0,84 -1,6 1,81 0,34 1,93
Нарушено условие (3.40), для итерации 3 0,5 -0,48 -0,16
3 0,89 -0,05 1,78 0,4 1,82 0,8 1,93 0,5 -0,49 -0,11
4 0,4 -0,16 0,8 -1,28 1,51 0,26 0,8
Нарушено условие (3.40), для итерации 4 0,25 -0,25 -0,06
4 0,64 |- 0 ,1 1 1 1,28 | -0,88 | 1,55 | 0,45 1 0,8
Нарушено условие (3.40), для итерации 4 0,125 -0,12 -0,03
4 0,77 -0,08 1,54 -0,64 1,67 0,62 0,8 0,125 -0,12 0,05
5 0,65 -0,03 1,3 -0,24 1,32 0,42 0,62 0,125 -0,12 0,02
6 0,53 -0,01 1,06 -0,08 1,06 0,28 0,42 0,125 -0,13 0,01
7 0,4 0 0,16 0 0,16 0,03 0,28 0,125 -0,31 0
8 0,09 0 0,18 0 0,18 0,01 0,03
Нарушено условие (3.40), для итерации 8 0,0625 -0,16 0
8 0,24 0 0,48 0 0,24 0,06 0,03 0,0625 -0,06 0
9 0,18 0 0,36 0 0,18 0,03 0,06 0,0625 -0,06 0
10 0,12 0 0,24 0 0,12 0,01 0,03 0,0625 -0,13 0
И -0,01 0 -0,02 0 0,01 0,01 0,01

Задача решена с требуемой точностью для слуЧая оптимизации


шага.
В методах с оптимальным подбором размера шага в шестом
пункте алгоритма определяется оптимальное значение коэффициен­
та изменения шага по формуле:
<Pdt = / \ х к+> + d ( - grad/(x* ))). (6.46)
Этот метод получил название метода наискорейшего спуска.
Рассмотренный метод фиксированного изменения размера шага
имеет существенный недостаток: по мере приближения к точке ми­
6.4. Примеры 755

нимума заметно уменьшается скорость приближения к минимуму


по сравнению с первыми шагами алгоритма. По этой причине раз­
работаны варианты метода градиентного спуска, различным обра­
зом изменяющие размер шага.
Главным недостатком различных вариантов метода градиентно­
го спуска является то, что процесс поиска минимума целевой функ­
ции может закончиться в стационарной точке (точка перегиба, сед-
ловая точка). Для выхода из стационарной точки необходимо пред­
принять дополнительные меры — определить тип точки (стацио­
нарная или нет) и в случае положительного ответа применить лю­
бой не градиентный метод для выхода из стационарной точки, и
далее продолжить поиск методом градиентного спуска [ 1, 8].

6.4. Примеры

1. Найти минимум целевой функции +Х2 -1 l)2+(*! +Д^ ~ lf


при различных стартовых точках:
а) jcj = 5; х2 = 5;
б)^1 = -5 ; х2 = 5;
в)х, = 5; х2 = - 5 ;
r)*i = -5 ; *2 = - 5
с помощью методов регулярного симплекса и деформируемого
многогранника.
2. Найти минимум целевой функции = 4х* + 2 х*х2 - х\ при
ограничении 2 х \+ х 2< 150.
3. Найти минимум целевой функции F (x) = 4х,2 + ?>Х\Х2 + 2x1 ПРИ
ограничениях 3 xi + 2 х2< 180 и х\ + 5х2 < 120.
Задачи 2 и 3 решить методом скользящего допуска с учетом ог­
раничений и методом градиентного спуска без учета ограничений.

Контрольные вопросы

1. Укажите различие между задачей нелинейного программирования и


задачей линейного программирования.
2. Что такое экстремум функции?
3. Что такое локальный экстремум? Глобальный экстремум?
4. Дайте определение выпуклой (вогнутой) области.
JS6 Гпава 6. Нелинейное программирование

5. Дайте определение области допустимых решений.


6. Что такое односвязная и многосвязная области допустимых решений?
7. Дайте определение градиента.
8. Расскажите о программных методах вычисления градиента функции
одной переменной и функции нескольких переменных.
9. Назовите необходимые и достаточные условия существования локаль­
ного экстремума.
10. Расскажите о сути метода регулярного симплекса.
11. Что представляет собой процедура отображения вершины симплекса?
12. Относительно какой точки выполняется отображение вершины сим­
плекса?
13. В чем отличие метода деформируемого многогранника от метода ре­
гулярного симплекса?
14. Что представляют собой процедуры растяжения, сжатия и редукции
симплекса?
15. В чем состоит идея градиентных методов поиска экстремума?
16. Расскажите об особенностях метода градиентного спуска.
17. Расскажите об отличиях метода наискорейшего спуска от градиентно­
го метода.
Глава 7
Сетевые методы планирования

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


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

7.1. Основные понятия и определения


Сетевая модель — графическое отображение выполняемых ра­
бот в их технологической последовательности с указанием времени
выполнения каждой работы. Основными элементами сетевой моде­
ли являются:
1. Событие — фиксируемый момент времени завершения /-й
работы и начало выполнения (/ + 1)-й работы. На сетевом графике
событие обозначается кружком с порядковым номером.
2. Работа — это активные действия по созданию материального
или интеллектуального продукта с привлечением различных ресур­
сов: финансовых, материальных, энергетических и т.д. Различают
несколько видов работ:
158 Гпава 7. Свтввыв методы планирования

•действительная работа, определение дано выше;


•ожидание — вид работы, который требует для своей реали­
зации только затрат времени: просушка окрашенных изде­
лий, затвердевание бетона и т. д.;
• фиктивная работа — логическая связь между событиями, не
требующая затрат каких-либо ресурсов, т. е. какая-либо ра­
бота не может начинаться до тех пор, пока другая работа
(или работы) не будет закончена.
Действительная работа и ожидание изображаются на сетевом
графике сплошной линией со стрелкой, а фиктивная работа —
пунктирной линией со стрелкой (рис. 7.1).

© —

Рис. 7.1. Действительная и фиктивная работы

3. Путь — это непрерывная последовательность событий и ра­


бот, которые включаются только 1 раз. Форма (конфигурация) пути
может быть произвольной. Длина пути рассчитывается как сумма
времени выполнения работ, входящих в путь.
4. Критический путь — это путь, который содержит напряжен­
ные работы. Напряженная работа не имеет резервов по времени для
своей реализации. Работы, имеющие резервы по времени, называ­
ются некритическими. Для некритических работ имеется возмож­
ность передвинуть сроки начала и окончания работы, причем об­
щий срок выполнения всех работ остается прежним.
5. Исходное событие. Каждая сетевая модель имеет одно исход­
ное событие, из которого вытекает одна или несколько работ. Ис­
ходное событие не имеет входящих работ. Исходное событие имеет
порядковый номер ноль.
6. Завершающее событие. Каждая сетевая модель имеет одно
завершающее событие, в котором заканчивается одна или несколь­
ко работ. Завершающее событие не имеет выходящих работ и имеет
последний порядковый номер.
При построении сетевой модели надо соблюдать правила:
• сетевая модель может содержать только одно начальное и
одно завершающее событие;
7.1. Основные понятия и определения 159
в сети не должно быть «висячих» событий, т.е. тупиковых со­
бытий, кроме завершающего (рис. 1 .2 , а), и событий, не имею­
щих входящих работ, кроме начального события (рис. 7.2, б);

а б
Рис. 7.2. «Висячие» события

нумерация событий выполняется слева направо. Также сле­


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

а б
Рис. 7.3. Добавление промежуточных событий
и фиктивных работ:
а — параллельные работы; б — фиктивные работы
16Q Гпава 7. Сетевые методы планирования
ц ^...'1 I »r I r-i-J -ii ■ 1 г г - п ■ ------....................................................................... ■ i . -;д

• в сетевой модели запрещено наличие замкнутых контуров


(рис. 7.4), т. е. выполнение работ по кольцу с возвращением
к начальному событию;
• сетевая модель должна иметь максимально простую форму;
• сетевая модель должна строго соответствовать технологиче­
скому процессу (цррядку выполнения работ);
• каждая работа маркируется двумя цифрами. Первая цифра —
номер события начала работы, вторая цифра — номер со­
бытия окончания работы. Маркировка работ должна быть
уникальной.

Особое внимание следует уделить правильной нумерации собы­


тий и, как следствие, правильной маркировке работ.
Нумерацию событий в сетевом графике (рис. 7.5) рекомендуется
выполнять по следующему алгоритму:

• определить начальное событие. Для нашего примера — со­


бытие Л. Этому событию присвоить ранг 0;
• условно вычеркнуть работы, выходящие из события А (рис. 7.6).
Событиям Б, В и Г, которые имеют только выходящие рабо­
ты, присвоить ранг 1;
7.1. Основные понятия и определения 161

• условно вычеркиваем работы, выходящие из событий 1-го


ранга (рис. 7.7). Событиям Д и Е присваиваем ранг 2 и т. д.
Событиям 3 и Ж — ранг 3, событию И — ранг 4;

Рис. 7.7. Определение событий второго ранга

• после назначения ранга событиям выполняется нумерация


событий по следующим правилам:
- события нумеруются слева направо, т. е. от началь­
ного события к конечному событию;
- если несколько событий имеют одинаковый ранг,
то нумерация событий выполняется сверху вниз.
Итоговая нумерация событий указана на рис. 7.8.

Изложенный алгоритм хорошо работает при малой размерности


сетевой модели [5]. Если сетевая модель имеет большую размер­
ность, то для выполнения нумерации событий целесообразно ис­
пользовать алгоритм Форда.
II - 1962
162 Гпава 7. Сетевые методы планирования

Пример 7.1
Кондитерская фабрика решила освоить новый вид продукции —
подарочный набор шоколадных конфет «Юбилейный». В состав
набора входят шесть видов шоколадных конфет. Данные для произ­
водства набора «Юбилейный» приведены в табл. 7.1.
Таблица 7.1
Непосредственно Продолжи­
Опера­
Наименование работы предшествующие тельность,
ция
работы дн.
Разработка технологии производ­ 14
А
ства (ТП) конфет 1-го вида
Б Разработка ТП конфет 2-го вида 8
В Разработка ТП конфет 3-го вида 16
Г Разработка ТП конфет 4-го вида 10
Д Разработка ТП конфет 5-го вида 12
Е Разработка ТП конфет 6-го вида 14
Ж Разработка эскиза коробки 20
Передача технологической доку­ А 2
3
ментации в производство
И То же Б 2
К »» В 2
Л »» Г 2
м »» Д 2
н »» Е 2
Оформление заказа на изготовле­ Ж 2
О ние коробки
п Производство конфет 1-го вида 3 8
р Производство конфет 2-го вида И 10
с Производство конфет 3-го вида К 10
Т Производство конфет 4-го вида Л 12
У Производство конфет 5-го вида м 8
ф Производство конфет 6-го вида н 12
ц Производство коробок о 6
ч Комплектация наборов конфет П—Ф 6
ш Доставка коробок ц 1
э Передача конфет на упаковку ч 2
ю То же ш 1
я Упаковка наборов конфет э.я 1
7.2. Расчет временных параметров J63

По данным табл. 7.1 построим сетевой график (рис. 7.9).

7.2. Расчет временных параметров


Главной характеристикой сетевого графика является длина кри­
тического пути. Расчет критического пути выполняют в два этапа
(от начала к концу сетевого графика и от конца к началу сетевого
графика). На первом этапе определяют ранние сроки наступления
событий, а на втором — поздние сроки наступления событий.
1. Вычисление ранних сроков наступления событий.
При выполнении этого расчета рассматривают три величины:
tf'H' — ранний срок начала всех работ, выходящих из события
tj'H' — ранний срок начала всех работ, входящих в событие j;
ty — время выполнения работы ij.
Для примера 7.1 будем иметь.
Для работы А предшествующих работ нет, тогда:
/,р н =*0р н + /01 =0 + 14 = 14.
Для работы Б, то же /£"' = " + /02 =0 + 8 = 8.
Для работы В, то же /Зр'"' = ^ “ +/03 =0 + 16 = 16.
164 Гпава 7- Сетевые методы планирования

Для работы Г, то же / f 11' = /£н- + /04 =0 + 10 = 10.


Для работы Д, то же tf"' = /о'н +t 05 =0 + 12 = 12.
Для работы Е, то же / £ ' = /р" + /06 = 0 +14 = 14.
Для работы Ж, то же tf ,L= /рн' + 101 = 0 + 20 = 20.
Работе 3 предшествует работав, срок окончания которой равен 14,
тогда /£•"• = /,рн + /lg=14 + 2 = 16.
Аналогично для работ И, К, Л, М, Н, О:
=10; /|Р0"' =15; /,7 =12; /,7 =14; / 7 =16; / 7 =22.
Событие 15 может наступить только после наступления событий
8, 9, 10, 11, 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; / 7 = 3 4 ; С = 29.
Раннее наступление события 19 рассчитывается аналогично со­
бытию 15
/,7' = шах (//’"' + /у)= max (34 + 2; 29 + 1) = 36.
i
Ранее наступление события 20 будет определено, как
/го" = г7 + /20 = 36 +1 = 37.
2. Вычисление поздних сроков наступления событий.
При определении поздних сроков наступления событий расчеты
выполняют в обратном порядке. Событие 20 может наступить после
самого позднего начала работы Я. Поэтому, /"о"' = /"д'го = 37.
Событие 19 может наступить, если из позднего окончания рабо­
ты 20 вычесть время выполнения работы Я. То есть /J1*'=/™’“ /"аго =
= 37 - 1 = 36.
7.2. Расчет временных параметров 165
Событие 18 может наступить после выполнения работы Ю, т. е.
С ' = С -*18,19 = 3 6 -1 = 35.
Аналогично рассчитываются события 17, 16, 15, 14, 13, 12, 11,
10, 9, 8, 7:
,п.н. .п.п. ^П.Н. ^п.н.
47 = 19 —*17,19 = 36 - 2 = 34; Мб —М8 “ *16,18 = 35-1 = 34;
fii.ii. = уП.Н. ^п.и. fn.ii.
15 17 —*15,17 = 34 - 6 = 28; 14 = Мб ""*14,16 = 3 4 -6 ==28;
,п.н. #п.и. ^п.п. ^п.н.
М3 = 15 “ *13,15 = 28 -1 2 = 16; М2 = 15 "”*12,15 = 2 8 -8 ==20;
.п.п. #п.н. #п.и. ^п.н.
Ml = М5 -*11,15 = 28 -12 = 16; МО = М5 ” *10,15 = 28-10 = 18;
,п.и. = #п.н. иП.11. #п.н.
9 15 “ *9,15 := 28--10 = 18; *8 = 15 “ *8,15 := 2 8 -8 = 20;
^п.н. ^п.н. ^П.Н. .п.п.
7 = 14 “ *7,14 = 28--2 = 26; 16 = М3 *6,13 := 1 6 -2 = 14;
.п.п. ^п.н. ,п.н. .П.11.
*5 = М2 - *5,12 := 20--2 = 18; и = Ml ”"*4,11 := 1 6 -2 = 14;
,n.H. #п.н. .п.н. ,П.Н.
*3 - МО -*з,ю := 18--2 = 16; 12 = 9 —*2,9 ==1 8 -2 = ]16;;
/8" н- - / 1 8 = 2 0 _ 2 = 18.
Событие 0 состоится, если из всех шести вариантов выбрать
минимальную по длительности пару «событие — работа».
/0ПН = m in ( ^ H-^ )= m in (1 8 - 14; 16 - 8; 16 - 13; 14 - 10; 18 -
/
12; 14 - 14) = 0.
Полученные данные сведем в табл. 7.2.
Таблица 7.2
Продол­ Раннее Позднее Полный Свобод­
Работа житель­ резерв ный ре­
ность, начало окон­ начало окон­ времени зерв вре­
чание чание
ДН. К мени гсв
0 -1 14 0 14 4 18 4 4
0 -2 8 0 8 8 16 8 8
0 16
О
СП

13 13 3 3 3
1
-рь
1

10 0 10 4 14 4 4
0

0 -5 12 0 12 6 18 6 6
0 -6 14 0 14 0 14* 0 0
1

20 0 20 5 25 5 5
0

1 -8 2 14 16 18 20 4 4
2 -9 2 8 10 16 18 8 8
166 Г пава 7- Сетевые методы планирования

Окончание табл. 7.2


с
Продол­ Раннее Позднее Полный Свобод­
Работа житель­ резерв ный ре­
ность, начало окон­ начало окон­ времени зерв вре­
чание чание мени гсв
дн. Лп
3 -1 0 2 13 15 16 18 3 3
4-11 2 10 12 14 16 4 4
5 -1 2 2 12 14 18 20 6 6
6-13 2 14 16 14 16* 0 0
7 -1 4 2 20 22 25 27 5 5
8-15 8 16 24 20 28 4 4
9 -1 5 10 10 20 18 28 8 8
10-15 10 15 25 18 28 ; 3 3
11-15 12 12 24 16 28 4 4
12-15 8 14 22 20 28 6 6
13-15 12 16 28 16 28* 0 0
14-16 6 22 28 28 34 6 6
15-17 6 28 34 28 34* 0 0
16-18 1 28 29 34 35 6 6
17-19 2 34 36 34 36* 0 0
18-19 1 29 30 35 36 6 6
19-20 1 36 37 36 37* 0 0
После выполнения вычислений по прямому и обратному на­
правлению можно определить путь максимального потока или кри­
тический путь. Операция принадлежит критическому пути, если
одновременно выполняются следующие условия:
/?•"•=/ ; 0-; (7.1)

t f a = t ”0-; (7.2)
/Р"- - *(Р И- = tj°- - 1” °- = tt j . (7.3)
Для примера 7.1 этим условиям удовлетворяют следующие со­
бытия и работы: 0-6; 6-13; 13-15; 15-17; 17-19; 19-20, которые
отмечены символом * в табл. 7.2.
Для анализа полученных результатов используют следующие
величины.
Максимально поздний срок начала выполнения работы t"f',
при котором еще возможен весь комплекс работ выполнить в срок
7.2. Расчет временных параметров J67

С = 'Г '- '. у (?-4)


Минимально ранний срок окончания работы /Ру°' — самый бла­
гоприятный из всех возможных срок окончания работы
tf°- = /(Р"- +t.j. (7.5)
Полный резерв времени R„, который показывает, на какую ве­
личину максимально могут быть увеличены сроки выполнения ра­
бот от текущего события до начала сетевого графика относительно
критического пути
(7.6)
Свободный резерв времени гсв — показывает максимальный ре­
зерв времени для текущей работы при условии,- что предыдущие и
последующие события начинаются в ранние сроки
Г с . = 'Г - 'Г - '/ у - (7-7)
Рассчитаем величины Rn, гсв и поместим их в табл. 7.3.
В -Лол. 7.3 пунктирной линией показан алгоритм вычисления Rn,
сплошной линией — гсв.
Таблица 7.3

Алгоритм вычисления величин


Продол­ Раннее Позднее Полный Свобод­
житель­ резерв ный ре­
Работа
ность, начало окон­ начало окон­ времени зерв вре­
чание чание мени г„
ДН. Л„
0 -1 14 0 14 4 18 4 4
0 -2 8 0 8 8 16 8 8
0 -3 13 0 13 3 16 3 3
10 0 10 4 14 4 4
О
1
1

12 0 12 6 18 6 6
0

14 0 14 0 14* 0 0
40
О
1

0 -7 20 0 20 5 25 5 5
1 -8 2 14 16 18 20 4 4
2 -9 2 8 10 16 18 8 8
3 -1 0 2 13 15 16 18 3 3
4 -1 1 2 10 12 14 16 4 4
5 -1 2 2 12 14 18 20 6 6
]68 Гпава 7. Сетевые методы планирования

Окончание табл. 7.3


Продол­ Раннее Позднее Полный Свобод­
житель­ резерв ный ре­
Работа
ность, начало окон­ начало окон­ времени зерв вре­
чание чание мени гС8
дн. Лп
6 -1 3 2 14 — +4 — 0 0
7 -1 4 2 20 (2 2 / 25 (27; 5 5
8 -1 5 8 16 2 4 ^ ■—^о 28_ „ , ^ 4 4
9 -1 5 10 10 20 18 28 8 8
10- 15 10 15 25 18 28 3 3
11-15 12 12 24 16 28 4 4
12-15 8 14 22 20 28 6 6
13-15 12 16 2S 16 28’ 0 0
14-16 6 22_ - ( 2 8 b ^ 8 34 6 6
15-17 А ^ — 28 34 28"'" S34* 0 0
16-18 tiJ 28 29 34 6 ,6
щ
17-19 2 — 36 34 зТ - ’" О
18-19 1 29 30 35 36 6 # 6
19-20 1 36 37 36 37* 0 0

Полученный сетевой график и вычисленные параметры служат


основой для выполнения оптимизационных мероприятий. Оптими­
зируются различные виды ресурсов: людские резервы, производст­
венные площади, сроки выполнения работ и т. д.
Для рассмотренного примера 7.1 введем дополнительные усло­
вия, указанные в табл. 7.4.
Таблица 7.4
Опе­ Продолжи­ Производственная
Наименование работы
рация тельность, дн. площадь Sihм2
Я Производство конфет 1-го вида 8 15
Р Производство конфет 2-го вида 10 20
С Производство конфет 3-го вида 10 20
Т Производство конфет 4-го вида 12 30
У Производство конфет 5-го вида 8 15
Ф Производство конфет 6 -го вида 12 30
ч Комплектация наборов конфет 6 40
э Передача наборов конфет на склад 2 15
ю Передача коробок на упаковку 1 15
я Упаковка наборов конфет 1 20
7.2. Расчет временных параметров 169

Производственная площадь цеха составляет 50 м2. Задача опти­


мизации может быть сформулирована так: сократить время произ­
водства конфет и обеспечить рациональное использование произ­
водственных площадей при соблюдении следования операций тех­
нологического процесса. Очевидно, что в каждый момент времени
суммарная потребность в производственных площадях не должна
превышать площади цеха.
При выполнении оптимизации вырабатывают правила ее прове­
дения. Для данного примера можно сформулировать несколько на­
боров правил.
Первый набор правил.
1. Выполняется первая работа по списку.
2. При оставшемся свободном ресурсе выполняется следующая
возможная работа, требующая меньшего ресурса.
3. Выполняется работа, требующая меньшего времени.
Выполняя первый набор правил, будет получен следующий гра­
фик распределения производственных площадей (рис. 7.10).
м1,.

50---------------------------------- 1--------------------------------------- ---------- — ----------— — -------------- :; ; .

40" р Т ю
Ю э
Э I
зо---------------------------- 1— -----------------------------L -I—

20- У —*--------------- 1------- ф 4


10- п С я

-----1----- 1 I----- *-—I —1I-—


-------- 1------- Ц--------- и —►
0 5 10
10 15 20 25 30 35 40 дн

Рис. 7.10. Распределение производственных площадей


по первому набору правил

Длительность цикла производства конфет — 41 день. Серым


цветом выделены неиспользуемые производственные площади.
Второй набор правил.
1. Выполняется первая технологически возможная работа, тре­
бующая максимального размера площади.
2. На оставшуюся площадь назначается следующая работа с
максимальной потребностью площади, которая обеспечивается ос­
тавшимся ресурсом.
Выполняя второй набор правил, будет получен следующий гра­
фик распределения производственных площадей (рис. 7.11).
170 Г.пава 7. Сетевые методы планирования

М
50

40

30

20
10

г- —г— “I— —
г— —I—
ю 15 20 25 30 35 40 дн

Рис. 7.11. Распределение производственных площадей


по второму набору правил

Длительность цикла производства конфет — 39 дней. Серым


цветом выделены неиспользуемые производственные площади.
В случае выполнения оптимизации по многим критериям соз­
дают различные наборы правил выполнения оптимизации и выби­
рают наилучший график выполнения работ [3, 5].

7.3. Нахождение кратчайшего пути


С помощью сетевых моделей также решают некоторые задачи
оптимального планирования по одному параметру без вычисления
временных параметров сетевого графика. К такому классу относят­
ся задачи по обходу объектов (пунктов) кратчайшим путем.
Задача нахождения кратчайшего пути имеет две формулировки:
• найти кратчайший разомкнутый путь;
• найти кратчайший замкнутый путь.
Для решения каждого варианта задачи созданы специальные ал­
горитмы.

7.3.1. Прямой симметричный алгоритм

Этот алгоритм применяется для нахождения кратчайшего ра­


зомкнутого пути. Суть алгоритма состоит в том, что, начиная от
стартовой вершины рассматриваются альтернативные пути дви­
жения к вершине финиша. Если при рассмотрении альтернатив­
ных путей нарушается принцип симметричности, то «несиммет­
ричный» путь отбрасывается (далее не анализируется). С помо­
7.3. Нахождение кратчайшего пути 171
щью этого алгоритма решают некоторые задачи оптимального
планирования по одному параметру без вычисления временных
параметров сетевого графика. Подробно работу алгоритма рас­
смотрим на примере.

Пример 7.2
Проложить водопроводные трубы между девятью объектами
кратчайшим (в экономическом смысле) путем. Объект 0 — водо­
напорная башня. Данные приведены на рис. 7.12, где на ребрах гра­
фа — стоимость работ по прокладке водопровода на данном участке
(ребре).

Рис. 7.12. Условия примера 7.2

Введем следующие обозначения.


сц — стоимость работ по прокладке водопровода между объек­
тами / и j.
Qj — минимальная стоимость работ от объекта 0 до объекта j,
т. е. Qo = 0.
Тогда Qj = min (g, + c,7). (7.8)
Будем иметь:
Qo - 0;
£?1 = бо + Coi = 0 + 2 = 2;
Q t= Qo + Сог = 0 + 4 = 4;
6 з = б о + соз = 0 + 3 = 3 ;

Qa —Qo + со4 = 2 + 2 = 4;
Qs = min (Q2 + с25; Qi + с35) = min (4 + 3; 3 + 2) = 5;
Qe = min (Q4 + c46; Qs + ci6) = min (4 + 4; 5 + 2) = 7;
Qi = min (Q5 + c57; Q6 + c67) = min (5 +4; 7 + 3) = 9;
Qs = min (Q4 + c4«; Qy + c78) = min (4 + 4; 9 + 5) = 4 + 4 = 8.
172 Глава 7. Сетевые методы планирования

Минимальная стоимость прокладки водопровода между пунктами


Ои 8 составит 2 + 2 + 4 = 8и пройдет по маршруту 0 - 1 - 4 - 8 (рис. 7.13).

© — * 0 — <Э— ©
Рис. 7.13. Кратчайший путь между пунктами 0 и 8

Минимальная стоимость прокладки водопровода между всеми


пунктами составит: 2 + 2 + 4 + 3 + 2 + 3+2 + 3 = 21. Схема прокладки
водопровода, соединяющего все пункты, представлена на рис. 7.14 [5]. '

7.3.2. Задача коммивояжера

Задача коммивояжера имеет длинную историю. Во времена рас­


цвета Британской империи (захвата колоний и географических от­
крытий) англичанин У. Гамильтон придумал новую игру, суть ко­
торой состоит в том, что необходимо посетить все указанные города
и вернуться назад. Такой замкнутый цикл (точка старта является и
точкой финиша) называют гамильтоновым циклом. Впоследствии
задача Гамильтона была уточнена и указаны пути ее решения мате­
матиками Г. Лейбницем и Я. Бернулли.
В современной интерпретации задача коммивояжера формули­
руется так:

В произвольном порядке обойти все вершины замкнутого графа


по кратчайшему пути и вернуться в исходную вершину, причем
каждая вершина проходится один раз.________________________

В настоящее время известно несколько алгоритмов решения за­


дачи коммивояжера, отличающиеся друг от друга эффективностью.
7.3. Нахождение кратчайшего пути 173
Под эффективностью будем понимать или наименьший пройден­
ный путь, или наименьшие затраты ресурсов (при решении эконо­
мических задач, сводимых к задаче коммивояжера).
Математическая модель задачи коммивояжера имеет вид:
п
(7.9)

где п — количество вершин замкнутого графа;


С,у — расстояние между городами (затраты ресурса между
работами) при наложенных ограничениях:
Q j > О — расстояния (ресурсы) не отрицательны;
Cij = оо — запрет на петли внутри маршрута;
Cij = Cji — принцип симметричности (расстояние между горо­
дами одинаковое);
Q /+ Cjk'Z-Cik — принцип треугольника (в город короче про­
ехать напрямую, чем через третий город).
При решении практических задач два последних ограничения
соблюдаются редко.
Так как вершина старта и вершина финиша - одна и та же вер­
шина, то максимально возможное количество замкнутых маршру­
тов составит (и + 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 8 7 20
3 * 4 3 10 11 18
4 _J 12 8 10 9 16
5 14 7 11 9 10
6 22 20 18 16

Q = {2i = 0;
L = 1;
Q = Q + min (Qi2; Qiy, Qu, Qis; Qie) = 0 + min (6; 4; 12; 14; 22) = 4;
L = 1 -» 3 ;
Q = Q + min (Q32; 6 34, Qv, бзб) = 4 + min (3; 10; 11; 18) = 4 + 3 = 7;
1 = 1 —> 3 —> 2;
Q = Q + min (024; Qzs; Огь) = 7 + min (8; 7; 20) = 7 + 7 = 14;
Z, = 1 —> 3 —> 2 —>■5;
Q = Q + min (Q5i; QS6) = 14 + min (9; 10) = 14 + 9 = 23;
L = 1 —> 3 —^ 2 —^ 5 —^ 4;
6 = 6 + 646 = 23 + 16 = 39;
L = l —> 3 —> 2 —> 5 —> 4 —>6;
6 = 6 + Sei = 39 + 22 = 61;
Z, = 1 —>■3 —> 2 —> 5 —> 4 —>• 6 —> 1.
Ответ: длина маршрута 61, порядок объезда городов:
1 - > 3 —> 2 —> 5 - > 4 - > 6 - > 1.

Условия примера 7.3 представляют собой симметричную задачу


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

(два города не имеют прямой дороги, т. е. проезд осуществляется


через третий город). Отсутствие какого-либо ребра в графе в матри­
це будем обозначать символом оо.

Пример 7.4
Изменим условия примера 7.3. Определить длину (2) кратчай­
шего маршрута (L) коммивояжера. Расстояния (2/у) между шестью
городами представлены в табл. 7.5.
Таблица 7.5
Город 1 2 3 4 5 6
1 6 6 12 14 22
2 6 3 8 00 20
3 4 3 10 11 18
4 12 8 10 00 16
5 14 00 и 00 10
6 22 20 18 16 8
а) Просмотр матрицы будем выполнять по строкам.
2 = 2 i = 0;
1 = 1;
Q = Q + min (gi2; Qn, 2м; Qis', 2ie) = 0 + min (6; 6; 12; 14; 22) = 6;
L = 1 —>2;
Q = Q + min (бгз; 024J 625; 2гб) = 6 + min (3; 8; оо; 20) = 6 + 3 = 9;
Z= 1 -> 2 —►3;
2 = 2 + min(Q34; 635; 2зе) = 9 + min ( 10; 11; 18) = 9 + 10 = 19;
Z,= l - » 2 - » 3 - > 4 ;
2 = 2 + min (645; Q46) = 19 + min (00; 16) = 19 + 16 = 35;
Z, = 1 —>2 —> 3 —>4 —> 6;
2 = 6 + 065 = 35 + 8 = 43;
Z,= l - > 2 - » 3 - > 4 —> 6-»5;
2 = 2 + 251 = 43 + 14 = 57;
Z, = 1 —> 2 —> 3 —>4 —> 6 5 —> 1.
Ответ: длина маршрута 57, порядок объезда городов:
1 —> 2 —> 3 —> 4 —> 6 —> 5 —> 1.

б) Просмотр матрицы будем выполнять по столбцам.


2 = 2 i = 0;
/7 6 Гпава 7. Сетевые методы планирования

1 = 1;
Q = Q + min (62 ь бзь 641; 6 si; 06i) = О+ min (6 ; 4; 12; 14; 22) = 4;
L = 1 —» 3;
0 = 0 + min (бгз; 643; Q 5 3 , вез) = 4 + min (3; 10; 11; 18) = 4 + 3 = 7;
Z, = 1 —> 3 —> 2;
Q = Q + min (£>42; 652; бег) = 7 + min (8; 00 ; 20 ) = 7 + 8 = 15;
Z, = 1 —>• 3 —> 2 —> 4;
Q = Q + min(QS4;Q 64)= 15 + min ( 00 ; 16)= 15+ 16 = 31;
Z, = 1 —> 3 —> 2 —> 4 —> 5;
6 = 6 + 056 = 31 + 8 = 39;
Z,= l - > 3 - > 2 - > 4 —> 5 —> 6 ;
Q = Q + 061 = 39 + 22 = 61;
Z. = 1 —>• 3 —>• 2 —>•4 —> 5 — 6 —>• 1.
Ответ: длина маршрута 61, порядок объезда городов:
1 -> 3 -> 2 -» 4 -> 5 -> 6 -> 1.
Из примера 7.4 видно, что из-за несимметричности матрицы от­
веты получились разные. Если граф не ориентированный, то можно
предусмотреть выбор кратчайшего ребра из двух возможных, со­
единяющих вершину / с вершиной j.

7.3.4. Алгоритм Дейкстры

В 1959 г. голландский математик Дейкстра предложил алго­


ритм, который решает задачу коммивояжера для любой матрицы
исходных данных: симметричной, несимметричной и смешанной
(отсутствуют некоторые ребра графа) [ 10, 11].
Для работы алгоритма Дейкстры используется три массива чисел:
1) двухмерный массив D размером п хп, содержащий веса ребер
графа (расстояние между городами, стоимости проезда и т. д.);
2) одномерный массив А размером и, в котором свободные вер­
шины отмечены 0 , а номера просмотренных вершин записываются
слева направо. В первый элемент массива А помещается номер
стартовой вершины;
3) одномерный массив В размером п, который содержит вес ребра
(расстояние между соседними городами, стоимость проезда и т.д.).
Так, первый элемент массива В содержит вес ребра, вершины кото­
рого хранятся в первом и втором элементах массива А, второй эле­
7.3. Нахождение кратчайшего пути 177
мент массива В содержит вес ребра, вершины которого хранятся во
второй и третьей ячейках массива Л и т. д. Сумма элементов массива
В есть текущее значение формируемого маршрута (bk)■ По оконча­
нии работы алгоритма сумма элементов массива В будет соответст­
вовать протяженности оптимального маршрута. Элементы массива
В заполняются слева направо в порядке (последовательности) за­
полнения массива^.
Суть алгоритма Дейкстры состоит в том, что п раз (п равно ко­
личеству вершин графа) определяется ребро графа с минимальным
весом (длиной пути) из оставшихся свободных вершин в текущей
строке массива D. Далее выполняются две проверки:
1) длина найденного ребра графа должна быть меньше или равна
симметричному ребру графа. В противном случае выбирается сим­
метричное ребро. Матрица примера 7.3 симметричная, т. е. d \3 = c/ji
и т. д.;
2) массив В заполнен на к элементов. Массив А заполнен на t
элементов, причем t = к - 1. Текущее ребро графа имеет индекс t.
Если
к к-2
(7.10)

то ранее найденная вершина к заменяется на текущую вершину t в


массиве А, а в массиве В удаляется последнее значение и заменяется
предпоследнее значение. В этой проверке отрабатывается принцип
треугольника: ранее выбранный путь оказался длиннее текущего пути.
Таким образом, на каждом шаге просматриваются все вершины
графа, а анализируются только свободные вершины.
Описание алгоритма Дейкстры:
1. Заполнить массив А: первому элементу присвоить номер стар­
товой вершины. Остальным элементам массива А присвоить зна­
чение 0 .
2. Заполнить массив В нулями.
3. Организовать перебор строк массива!).
4. Определить номер текущей строки. Номер текущей строки
равен номеру последнего элемента, помещенного в массив А.
5. Просмотреть текущую строку массива D и выбрать элемент с
минимальным значением из числа свободных элементов.
6 . Проверить выбранный элемент на выполнение принципа сим­
метричности. При необходимости выполнить замену ребра.
12- 1962
178 Гпава 7. Сетевые методы планирования

7. Проверить выбранный элемент на выполнение принципа тре­


угольника. При необходимости сделать замену вершины.
8. Все ли строки матрицы D просмотрены? Если «нет», то пе­
рейти к пункту 4. Если «да», то — к пункту 9.
9. Сформировать и выдать ответ: структура маршрута и протя­
женность маршрута.
10. Остановить работу алгоритма.
Решим пример 7.3 с помощью алгоритма Дейкстры. Граф для
примера 7.3 представлен на рис. 7.15.
Работа алгоритма Дейкстры показана на рис. 7.16, где правая
часть выражения (7.10) обозначена как Ы.

Рис. 7.15. Неориентированный симметричный


граф примера 7.3

После прохода по шестой строке оказалось, что нарушен прин­


цип треугольника. В результате замены вершин (перестановка вер­
шин 4 и 6) условие (7.10) выполняется.
Длина маршрута, найденного с помощью алгоритма Дейкстры,
короче на 9 единиц, по сравнению с длиной маршрута (61), опреде­
ленного прямым алгоритмом.
Решим пример 7.4 с помощью алгоритма Дейкстры. Так как в
этом алгоритме предусмотрена проверка на соблюдение принци­
па симметричности, то просмотр матрицы по строкам или столб­
цам не имеет значения. Работа алгоритма Дейкстры показана на
рис. 7.17.
7.3. Нахождение кратчайшего пути 179
lb k I d Zbt Id
Проход по первой строке массива D Проход по пятой строке массива D
Массив A | l | 3 | 0 | 0 | 0 | 0 | Массив А ~ Г Т Т Т 2 | 5 | 4 | 0 |

Массив В 4 | 0 | 0 | 0 | 0 jО Массив В | 4 | 3 | 7 | 9 | 0 | 0 | 2 3 >2 4

Проход по третьей строке массива D Проход по четвертой строке массива D


Массив А
ф 2 0 0 0 Массив А | 1 | 3 | 2 | 5 | 4 | 6 |

Массив В j4 | 3 О] 7 > 9 Массив В 3 I 7 I 9 |1б| о ] 39 >40

Проход по второй строке массива D Проход по шестой строке массива D


Массив A | l | 3 | 2 | s | o | o | Массив А | 1 | 3 | 2 | 5 | 4 | 6 |

Массив В |4|з|7|0|0|0 14 >22 Массив В | 4 | 3 | 7 | 9 |l6|22[ 61 > 57

После применения принципа треугольника


Массив А | 1 | 3 | 2 | 5 | 6 | 4 |

Массив В | 4 | 3 | 7 110| Гб 12 52 >68

Рис. 7.16. Ход решения примера 7.3


(после каждого прохода показан конечный результат)
Ответ: длина маршрута 52, порядок объезда городов:

16* U I bk U
Проход по первой строке массива D Проход по пятой строке массива D
Массив A | l | 3 | 0 | 0 | 0 | 0 | Массив А | 1 | 3 | 2 | 4 | 6 | 0 |

Массив В | 4 10 | 0 0 | 0 | 0 | Массив В | 4 | 3 | 8 16 31 >43

Проход по третьей строке массива D Проход по четвертой строке массива D


Массив А | 1 | 3 2 | 0 Массив А | 1 | з | 2 | 4 | б | 5 |

Массив В 3 I 0 I О I 0 I 0~| 7 > 9 Массив В |4 |3 |8 |1 6 |1 П ~ 0 39 >?

Проход по второй строке массива D Проход по шестой строке массива D


Массив A | l | 3 | 2 | 4 | o | o Массив А тиш ппи
00
о
о

Массив В 4 3 0 15 >22 Массив В 4 |з 1 8 |1 б |8 ~ р 4 | 53 > 67

Рис. 7.17. Ход решения примера 7.4


(после каждого прохода показан конечный результат)
ISO Гпава 7. Сетевые методы планирования

7.3.5. Алгоритм Литтла

Другое название алгоритма Литтла - метод «ветвей и границ».


Так же как и в целочисленном программировании, при использова­
нии алгоритма Литтла необходимо определить верхнюю и нижнюю
оценки для разделения множества решений на два класса. Различа­
ют две группы задач, решаемых этим алгоритмом: задачи на мини­
мум (определяют нижнюю оценку или границу) и задачи на макси­
мум (определяют верхнюю границу или оценку) [12,13].
Идея алгоритма такова: определяют нижнюю оценку (для задач
на минимум) и разделяют исходную матрицу на две примерно рав­
ные части. Затем уменьшают размер матрицы и определяют «пла­
ту» за уменьшение размера матрицы. Размер платы может быть или
положительный или нулевой, т. е. увеличивать или не изменять
размера нижней оценки. Размер матрицы уменьшается до 2 х 2. За­
тем выполняют движение в обратном порядке и получают опти­
мальный (по стоимости) маршрут.
Рассмотрим работу алгоритма Литтла на примере 7.3.
Выполним «зануление» матрицы так, как это было в дельта­
методе при решении транспортной задачи (см. рис. 7.18).
Зануление по строкам Зануление по столбцам
Город!| 1 j 3 4 5 6 №| 3 4 5 6
2 L J 2
1 16 4 12 14 22 ш и 0 8 10 18
3
2 — [з 8 7 20 2 з1 ■ 5 4 17
ь
3 4 ho 11 18 3 оН 7 8 15
4 12 8 \о\ — 19 16 4 4 0 2 ш 1 8
5 14 7 11 [jo 5 7 0 4 3
6 22 20 18 1 6 Щ 6 12 10 8 6 0

Рис. 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 6
1 ж 2 о2 6 10 15
2 2 ш
о* 3 4 14
щ
IN
О

3 0° 5 8 12
4 3 о1 2 1 5
5 6 0° 4 0* ш О5
6 и 10 8 4 О5 ш

Рис. 7.19. Расчет оценок клеток


Начиная с этого момента приступаем к построению дерева
ветвления алгоритма. Максимальная оценка 5 принадлежит двум
клеткам 5 -6 и 6 -5 . Поэтому за «нулевое» ребро принимается или
ребро 5 -6 , или ребро 6 -5 . Возьмем ребро 5 -6 . Все маршруты ра­
зобьем на содержащие ребро 5 -6 и не содержащие это ребро. Обе
группы маршрутов (содержащие и не содержащие ребро 5 -6 ) будут
иметь стоимость не менее нижней оценки (более может быть).
Из дальнейшего рассмотрения исключаем пятую строку и шес­
той столбец (рис. 1.20, а). Этим действием снижаем размер матри­
цы. Ребро 5 -6 (на рис. 7.20 представлено в виде клетки) помечено
как запрещенное (серым цветом) для рассмотрения. К уменьшенной
матрице применяем процедуру «зануления» (рис. 7.20,6). Из по­
следней строки вычтем 4, а из последнего столбца — 1. Заново оп­
ределяем оценки нулевых клеток (рис. 7.20, в).
JS2 Гпава 7. Сетевые методы планирования

№ 1 2 3 4 5 № 1 2 3 4 5
1 « 2 о2 6 10 1 2 oi 6 9
."Ж"
2 2 ш
0* 3 4 2 2 0* 3 3
3 О1 0° ш 5 8 3 0* 0° Я 5 7
4 3 О1 2 т1 4 3 0° 2 » 0*
6 11 10 8 4 6 7 6 4 [cF

a б в
Рис. 7.20. Ветвление алгоритма:
a — снижение размера матрицы; б — «зану-
ление матрицы»; в — расчет оценок клеток
Клетка 6 -4 имеет наибольшую оценку 7. За «нулевое» ребро
возьмем 6 -4 . Далее процедура снижения размера матрицы повто­
ряется. Результат преобразований показан на рис. 7.21.
_______________ Второй шаг _______________
№ 1 2 3 5 № 3 5 № 1 2 3 5
1 it 2 о2 9
1 1 2
1 И 2 о2 6 1 т 2 о2 6
2 • о2 3 2 2№ о2 0 2 2 « 0° О4
3 0* 0° Щ7 3 О2 0° ш 4 3 0* 0° щ 4
4 3 0° 2 i t 4 3 10° 2 о! 4 3 О2 2 ,о!

Третий шаг
№| 3 № 1 2 3 № 1 2 3
1 щ
1 1 2
2 о2 1 Ж 2 oi 1 2 0i
3 о2 N 4 3 & 2 4 1 <& 0
4 3 121 3 о2 0° * 3 о2 0° щ
Четвертый шаг
№ 1 3 № 1 3
1 О2 1 о2
4 1 <й 4 0
a б, в
Рис. 7.21. Продолжение ветвления алгоритма
Проанализируем выполненные преобразования и построим де­
рево алгоритма (рис. 7.22). В результате расчета «зануления» ис­
ходной матрицы была получена нижняя оценка — 41. Таким обра-
7.3. Нахождение кратчайшего пути 183

зом, стоимость любого допустимого маршрута будет не менее 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. Сетевые методы планирования

41

Рис. 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 3 4 5 6 №| 1 2 3 4 5 6
1 т 6 4 12 14 22 1 т 22
0 8 10 18 1т 2 0* 8 9 10
2 6 т 3 8 7 20 2_ _з_§0 5 4 17 2 2 5 3 9
3 4 3 ш 10 11 18 3 1 0 ш
7 8 15 3 О2 0° 7 7 7
4 12 8 10 9 16 4 4 0 2 »
1 _8_ 4 3 0° 2 т 0* 0*
5 14 7 'Ш1
11 9 4Щ ‘ 10 5 7 0 4 2 00 5 6 0i 4 2 00
6 22 20 18 16 10 0 . 6 6 4 2 о |* Ж 6 5 4 2 О4 ОС

a б в

Рис. 7.23. Исключение ребра 5-6 :


a — исходная матрица; б — исключение ребер
5 - 6 и 6 - 5 ; в —расчет оценок
7.4. Обоснование бизнес-проекта 185

a б в
Рис. 7.24. Первый шаг доказательства оптимальности:
a — исключение ребра 4-6; б — перестановка
строк; в — «зануление» матрицы

51

Рис. 7.25. Дерево доказательства оптимальности алгоритма


ричная, то исключались два ребра 5 -6 и 6 -5 . Если задача несим­
метричная, то исключается одно ребро, и доказательство правиль­
ности алгоритма увеличивается на один шаг.
Таким образом, в результате проведенного анализа установлено,
что оба разветвления правой ветви «Без ребра 5-6» дают оценки 58.
Строить последующие ветви не имеет смысла, так как все маршру­
ты будут иметь большую стоимость по сравнению с левой ветвью
алгоритма.

7.4. Обоснование бизнес-проекта


С целью развития фирмы, обеспечения ее конкурентоспособности
в условиях рынка менеджмент фирмы постоянно работает над вопро­
сами расширения и модернизации производства. Строительство новых
производственных площадей, модернизация технологического обору­
дования требуют больших финансовых вложений. Как правило, фир­
мы не располагают большими суммами свободных денежных средств.
Для проведения указанных работ они используют заемные средства —
банковские кредиты. Вопросы обоснования суммы необходимых ка­
186 Гпава 7. Сетевые методы планирования

питальных вложений и сроков погашения банковских кредитов играют


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

Пример 7.5
С целью расширения производства менеджмент фирмы решил вы­
пускать новый вид конкурентоспособной продукции — копченую (по
оригинальной технологии) пресноводную рыбу. Для этих целей один из
цехов фирмы надо переоборудовать и выполнить следующие работы.
1. Подготовка технического задания на реконструкцию цеха —
50 дн.
2. Заказ и поставка нового печного оборудования — 90 дн.
3. Заказ и поставка нового технологического оборудования — 30 дн.
4. Демонтаж старого оборудования — 25 дн.
5. Установка нового оборудования — 75 дн.
6. Переобучение персонала — 50 дн.
7. Проведение испытаний нового оборудования и сдача цеха в
эксплуатацию — 40 дн.
Расчетная производительность нового цеха — 36 т продукции в
смену. Прибыль от реализации 1 т продукции составит 2000 руб. Не­
обходимую сумму инвестиций — 2400000 руб. можно получить как
банковский кредит из расчета 24% годовых. Полученный банков­
ский кредит предполагается израсходовать следующим образом:
2000000 руб. — закупка нового оборудования, 400000 руб. — стои­
мость демонтажа старого оборудования и монтажа нового оборудо­
вания и проведение испытаний. Определить, через какое время будет
возвращен банковский кредит. Работы по переоборудованию цеха
можно выполнять в нормальном и ускоренном режимах (табл. 7.6).
Если работы выполнять в последовательности, которая указана в
табл. 7.5, то сетевой график будет иметь вид, приведенный на рис. 7.26.
Все работы будут выполнены за 360 дней.

Рис. 7.26. Сетевой график (прямой) выполнения работ


7.4. Обоснование бизнес-проекта J87

Таблица 7.6
Нормальный режим Ускоренный режим
Работа Продолжитель­ Затраты, Продолжитель­ Затраты,
ность, дн. тыс. руб. ность, дн. тыс. руб.
1 50 100 43 110

2 90 1000 78 1450
3 30 500 29 600
4 25 70 22 72
5 75 330 71 380
6 50 100 44 105
7 40 300 45 370
Итого 360 2400 332 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 дней после начала работ. Начиная с этого срока, сколько
должно пройти дней, чтобы вернуть взятую сумму кредита вместе с
процентами по кредиту.
188 Гпава 7. Сетевые методы планирования

Таблица 7.7
Раннее Позднее Полный Свобод­
Продол­
резерв ный ре­
Работа житель­ окон­ окон­
времени зерв вре­
ность, дн. начало чание начало чание
Rn мени г„

»О
0 - 1 50 0 50 0 0 0

1 - 2 90 50 140 50 140’ 0 0

1 -3 30 50 80 110 140 60 60
1 -4 25 50 75 115 140 65 65
(N

75 140 215 140 215* 0 0


1

3 -5 75 80 155 140 215 60 60


4 -5 75 75 150 140 215 65 65
5 -6 40 215 255 215 255* 0 0

6 -7 50 255 305 255 305’ 0 0

Срок возврата кредита определим графическим способом. По оси


X будем откладывать время в днях, а по оси Y — стоимость в руб. На
начало всех работ (0 дн.) имеем долг 2400 тыс. рублей (первая точка
первой прямой линии). Через год (360 дней) долг увеличится на 20% и
составит 2400000-1,2 = 2 880000 руб. (вторая точка первой прямой
линии). Первая прямая линия — линия долга. Через 305 дней после
начала работ прибыль фирмы составит 0 рублей (первая точка второй
прямой линии). Через 55 дн. после начала работ (на 360-й день) при­
быль фирмы составит: 55 •36 •2000 = 3960 тыс. руб. (вторая точка вто­
рой прямой линии). Вторая прямая линия — линия прибыли.
Точка пересечения двух прямых линий (долга и прибыли) ука­
жет дату возврата банковского кредита (рис. 7.28).
Банковский кредит может быть возвращен через 339 дней.
Расчет даты возврата банковского кредита можно выполнить
аналитически. Запишем уравнение прямой прибыли в отрезках
у-У а х - х а ' у -0 _ х -0
Уь-Уа хь ~ ха ’ 3960-0 360-305'
55у = 3960*.
Запишем уравнение долга в отрезках
у -у а _ х -х а 7-2400 _ дг-0
Уь-Уа ~ хь ~ ха ’ 2880-2400 ~ 3 6 0 -0 ’
360>> - 864 000 = 480х
7.4. Обоснование бизнес-проекта 189
ТЫС.руб./
зо о о " /
j
2 750
(
2 500 /
2 250
t >
2 000
/
I 750
/
1 500 /
1 250 Г/
/
1 000
750 !
500 Гi
250
/
0
300 310 320 330 340 350 360 370 380

Рис. 7.28. Определение срока погашения кредита

Решая систему линейных уравнений относительно х, получим


срок возврата кредита.
55^ = 3960л:;
360^-864000 = 480*;
480* = 360 ‘ 3960-* - 864000;
55
26 400 л: = 1425 600 х - 47 520 000;
1 399 200 х = 47 520 000;
дг = 33,962.
Таким образом, через 34 дня после начала выпуска продукции
(или через 339 дней после начала работ по реконструкции) банков­
ский кредит может быть возвращен [5].
Приведенный выше расчет выполнен при нормальном режиме
работ. Перечисленные работы можно выполнить в ускоренном ре­
жиме и раньше ввести цех в эксплуатацию. Но за увеличение интен­
сивности работ необходимо дополнительно заплатить 687 тыс. руб.
Что выгоднее: сократить срок работ и заплатить большую сумму де­
нег или работы выполнять в нормальном режиме? Для ответа на этот
вопрос надо рассчитать временные параметры сетевого графика для
ускоренного режима (табл. 7.8).
190 .
Гпава 7 Сетевые методы планирования

Таблица 7.8

Продол­ Раннее Позднее Полный Свобод­


резерв ный ре­
Работа житель­
ность, начало оконча­ начало оконча­ времени зерв вре­
дн. ние ние мени гт
0-1 43 0 43 0 43* 0 0
1-2 78 43 121 43 121* 0 0
1-3 29 43 72 92 121 49 49
1-4 22 43 65 99 121 56 56
2 -5 71 121 192 121 192* 0 0
3 -5 71 72 143 121 192 49 49
4 -5 71 65 136 121 192 56 56
5 -6 44 192 236 192 236* 0 0
6 -7 45 236 281 236 281’ 0 0

7.5. Примеры
1. Подключить по кратчайшему пути все 10 сельских населен
ных пунктов к телефонной станции. Числа указывают расстояние в
километрах.

2. Определить кратчайший путь прокладки кабеля локальной се


ти для 16 абонентов.
Расстояния между абонентами указаны в таблице.
7.5. Примеры 191
Отре­ Расстоя­ Отре­ Расстоя­ Отре­ Расстоя­ Отре­ Расстоя­
зок ние, км зок ние, км зок ние, км зок ние, км
0-7 4 2-4 7 5 - 6 9 7 - 9 8

1-3 6 2-6 4 5-7 7 7-11 9


1-2 8 3-7 5 5-11 6 8-13 12

1-5 11 4-8 6 6-10 11 9-14 7


10-12 4 10-13 6 11-12 5 11-14 11

12-15 9 13-16 6 14-15 8 15-16 10

3. Определить последовательность работ по строительству скла­


да. Указать критический путь и возможные временные сдвиги начала
и окончания отдельных работ и вывести их на экран. Данные приве­
дены в таблице.
Непосредственно Продолжи­
Опе­
Описание предшествующие тельность,
рации
операции дн.
А Расчистка строительной площадки — 2

Б Выемка котлована под фундамент А 3


В Укладка фундаментных блоков Б 4
Прокладка наружных инженерных
Г Б 4
сетей
Д Сооружение каркаса здания В 16
Е Кровельные работы д 7
Ж Внутренние сантехнические работы Г, Е 4
3 Настилка полов Ж 4
И Установка дверных и оконных рам Д 5
К Теплоизоляция перекрытий Е 3
Л Прокладка электропроводной сети 3 2
192 Гпава 7. Сетевые методы планирования
■---- '■■■ ■ ■ л I ........—.1. —------ ,J_=

м Штукатурка стен и потолков И, К, Л 10

н Внутренняя отделка М 12

о Наружная отделка Е 8

п Благоустройство территории н,о 5


4. Составить сетевой график реконструкции цеха и определить
дату возврата банковского кредита.
• Подготовка технического задания на реконструкцию цеха —
38 дн.
• Заказ и поставка нового оборудования — 110 дн.
• Демонтаж старого оборудования — 17 дн.
• Ремонт корпуса цеха — 12 дн.
• Установка нового оборудования — 25 дн.
• Наладка нового оборудования — 65 дн.
• Переобучение персонала — 40 дн.
• Проведение испытаний нового оборудования и сдача цеха в
эксплуатацию — 6 дн.
Расчетная производительность нового цеха — 62 изделия в сме­
ну. Прибыль от реализации 1 изделия составит 850 руб. Работы по
переоборудованию цеха можно выполнять в нормальном и уско­
ренном режимах (см. таблицу).
Для выполнения реконструкции необходимо взять банковский
кредит на сумму 20 млн руб. под 24 % годовых.
Определить: Возможно ли возвратить взятый кредит через 250
дней? Как наиболее целесообразно выполнять реконструкцию — по
нормальному или ускоренному плану?
Нормальный режим Ускоренный режим
Работа Продолжитель­ Затраты, Продолжитель­ Затраты,
ность, дн. тыс. руб. ность, дн. руб.
1 38 100 32 110

2 110 13000 90 13 500


3 17 2500 12 2750
4 12 350 8 400
5 25 20 0 0 20 2500
6 65 1500 60 1750
7 40 400 35 450
8 6 150 5 200

Итого 313 2 0 0 0 0 262 21660


7.5. Примеры 193
S. Определить кратчайший путь перевозки груза из пункта 1 в
пункт 23 (см. рисунок). Данные о расстояниях между пунктами
приведены в таблице.

Пункты 1 2 3 4 5 6 7 8 9 10 и 12 13 14 15 16 17 18 19 20 21 22 23
1 8 5 7
2 3
3 9
4 8 3
5 3
6 11
7 1 12
8 9
9 11 8
10 13 14
11 6 4
12 7 10
13 2 6
14 13
15 7 11
16 5
17 8
18 10
19 7 12
20 9
21 6
22 6
1 3 - 1962
194 Глава 7. Сетевые методы планирования

Контрольные вопросы

1. Что такое работа?


2. Что такое событие?
3. Какие типы работ вы знаете?
4. Дайте определение исходному событию, завершающему событию.
5. Чем отличается критический путь от любого другого пути?
6 . Укажите правило нумерации событий.
7. Что такое свободный резерв времени?
8 . Что такое полный резерв времени?
9. Расскажите об оптимизации по сетевому графику.
10. Как и кем составляется план оптимизационных мероприятий?
Глава 8
Системы массового обслуживания

8.1. Марковский случайный процесс


Построение математических моделей в условиях неопределен­
ности — очень сложная или невыполнимая задача. Лишь для некото­
рых упрощенных случаев можно построить математическую модель.
Следует различать два вида неопределенности:
• вероятностные характеристики либо известны, либо могут
быть получены в результате эксперимента. Такая неопреде­
ленность называется стохастической, и для большинства
объектов, содержащих такую неопределенность, можно по­
строить математическую модель, например выход из строя
оборудования, приход нового клиента и т.д.
• вероятностные характеристики определить невозможно. В этом
случае задачу можно попытаться решить с помощью экс­
пертных оценок, но результат будет весьма приблизитель­
ным, например, каковы будут модели женской одежды через
пять лет?
Строгую математическую модель с аналитическим вычислени­
ем всех интересующих величин можно построить только в том слу­
чае, если случайный процесс носит марковский характер.
Случайный процесс будет марковским, если вероятностные ха­
рактеристики процесса в момент времени t зависят только от теку­
щего (настоящего) состояния процесса в этот момент времени t и не
зависят от того, как (каким способом и когда) рассматриваемый
процесс перешел в текущее состояние.
Если за процессом проводилось наблюдение, известны все пре­
дыдущие состояния и известно текущее состояние, то для процесса
можно указать вероятность наступления следующего состояния
достаточно легко. Причем, если процесс марковский, то достаточно
13'
196 Гпава 8. Системы массового обслуживания

знать текущее состояние процесса, чтобы делать прогноз будущего


состояния процесса, но очевидно, что текущее состояние процесса
достигнуто благодаря ряду предшествующих событий.
Большинство процессов, наблюдаемых в технике, экономике и
других областях, можно свести к марковским процессам, если па­
раметры, управляющие одновременно предшествующими события­
ми и одновременно влияющие на прогнозируемые события, вклю­
чить в описание текущего события. Однако следует иметь в виду,
что включение слишком большого количества параметров, описы­
вающих состояние процесса (размерность задачи), может привести
к тому, что математическое описание будет слишком громоздким и
трудно поддаваться решению. Из всего многообразия марковских
процессов хорошо изучены и представляют большой практический
интерес марковские случайные процессы с дискретными состоя­
ниями и непрерывным временем.
Под дискретным состоянием будем понимать, что процесс пе­
реходит из одного состояния в другое скачкообразно за очень ко­
роткое время (практически мгновенно), и количество этих состоя­
ний известно (фиксировано).
Под непрерывным временем будем понимать такое, при кото­
ром переход из одного допустимого состояния в другое допустимое
состояние происходит в произвольные моменты времени, т. е. зара­
нее не определенные.
Потоки событий. Однородные события, следующие друг за
другом в произвольные моменты времени (случайно), называются
потоком событий (или входным потоком заявок). Примерами пото­
ков событий могут быть: поток пассажиров в авиакассе, поток посе­
тителей парикмахерской, поток отказов технического устройства и
т.д. Здесь под событием понимается факт поступления заявок на
обработку (приход покупателя, наличие отказа технического сред­
ства, поступление телефонного вызова и т.д.), а не результат его
обработки (как это рассматривается в теории вероятностей). Поэто­
му в системах массового обслуживания вероятностными характери­
стиками будет обладать не отдельное событие, а интервал времени.
Интенсивностью X потока событий называется среднее число со­
бытий за единицу времени. Интенсивность X может быть как числом
постоянным (константой), так и величиной, зависящей от времени t.
Например, количество пассажиров в городском транспорте в «часы
пик» резко увеличивается по сравнению с другим временем суток.
8.2. Финальные вероятности состояний 197
Все многообразие потоков можно разделить на два больших класса.
1. Регулярные потоки. События внутри потока следуют один за
другим, через равные промежутки времени.
2. Стационарные (нерегулярные) потоки. События внутри по­
тока следуют одно за другим хаотично (нерегулярно) и независимо
друг от друга. Важно отметить одну особенность стационарного
потока — интенсивность X есть величина постоянная. В разные мо­
менты времени, но в равные интервалы времени АТ попадает разное
количество событий, но среднее количество событий для интервала
времени АТ остается постоянным.
Большинство процессов, характерных для техники, транспорта,
экономики и т. д. не стационарны, т. е. имеют ярко выраженные по­
вторения группы событий. Но в отдельные ограниченные отрезки
времени (например, внутри суток) эти процессы можно рассматри­
вать как стационарные.
Для каждого потока событий можно указать следующие харак­
теристики:
1. Поток без последствия. Если для потока можно указать два
непересекающихся интервала времени и внутри одного интервала
времени появление событий не зависит от появления событий внут­
ри другого интервала времени, то такой поток называется потоком
без последствия. Примерами потоков без последствия могут быть:
приход клиентов в банк (у каждого клиента могут быть собствен­
ные причины посещения банка), поступление звонков в справочную
службу и т. д.
2. Ординарный поток. Если события внутри потока следуют од­
но за другим и запрещено наступление двух и более событий, то
такой поток называется ординарным [2, 3].

8.2. Финальные вероятности состояний


Начиная с этого параграфа и далее будем рассматривать марков­
ские процессы с дискретными состояниями и непрерывным временем.

Пример 8.1
Техническое устройство состоит из трёх узлов и в любой момент
времени может находиться в одном из восьми состояний (рис. 8.1).
198 гпава 9. Системы массового обслуживания

Возможные состояния устройства таковы:


So — все три узла исправны;
5] — первый узел неисправен, второй и третий исправны;
52 — второй узел неисправен, первый и третий исправны;
53 — третий узел неисправен, первый и второй исправны;
54 — первый и третий узлы неисправны, второй исправен;
S$ — второй и третий узлы неисправны, первый исправен;
5б — первый и второй узлы неисправны, третий исправен;
Sy — все три узла неисправны.
Размеченным графом будем считать такой граф, у которого
стрелками указаны переходы из одного состояния в другое, а рядом
со стрелкой указана интенсивность перехода. Будем различать две
интенсивности — прямую X и обратную ц.
Тогда А.], А.2 и Хз — интенсивности потоков отказов соответст­
венно первого, второго и третьего узлов, а ць цг и Цэ — соответст­
венно интенсивности потоков возвратов (ремонтов) узлов.
8.2. Финальные вероятности состояний 799
Если для ремонта каждого узла имеется отдельный специалист,
то среднее время ремонта каждого узла есть величина постоянная и
не имеет значения, один или несколько узлов вышли из строя.
На основе построенного размеченного графа (см. рис. 8.1) соз­
дадим математическую модель.
Наше техническое устройство в соответствии с построенным
графом в любой момент времени будет находиться в одном из
восьми возможных состояний. Обозначим вероятность каждого /-го
состояния как /?,(/), тогда

i > ( 0=1- (8.1)


/=1
Для определения вероятности каждого состояния технического
устройства составим соответствующие дифференциальные уравнения.
Вероятность того, что техническое устройство будет находиться в со­
стоянии 5] (первый узел неисправен, а второй и третий узлы исправ­
ны), обозначим p\{t). Дадим малое приращение по времени At. За это
малое время At техническое устройство либо остается в прежнем со­
стоянии So, либо перейдет в состояние Si из состояний So, S4 или S&.
Определим вероятность первого случая — устройство остается
в состоянии S\. В момент времени / устройство было в состоянии Si
с вероятностьюp\(t). За время At устройство не перейдет в любое из
состояний So, S 4 или Se- Суммарный поток событий, который может
вывести устройство из состояния Si, будет равен + А.3 + Ць Каж­
дый из этих потоков событий простейший, поэтому и суммарный
поток также будет простейшим (все три свойства стационарности,
ординарности и отсутствие последействия сохраняются).
Вероятность того, что устройство выйдет из состояния Si будет
равна p\(t) (Х2 + Хз + ц0 At, а вероятность того, что останется в со­
стоянии Si — pi(t) [1 - (А-2 + Хз + цО А/].
Теперь определим вероятность перехода устройства за время At
в состояние Si из состояний So, S 4 или S^:
для£ 4— p*(t)At\i3;
для Se— p 6(t)At\i2,
для S0— po(t)At\\.
Таким образом, вероятность нахождения устройства в состоя­
нии Si будет равна:
Р\(t + А/) ~Р\ if) [1- (hi +А-2+ Х3) At] + p 0(t) X] At +p4(t) ЦзAt +p6(t) ц2At.
200 Гпава 8. Системы массового обслуживания

Выполним преобразования:
Р\ (t + А /) =Р) ( 0 - р \ ( 0 (H i +Я -2 + h ) A t +po(t) X, Д / + p 4(t) Цз А> + Рб(0 Ц2 А /;
Р\ (I + А /) ~ Р \ ( 0 =/>о(0 >-1 А / + р 4( 0 Цз А / + Р б (0 Ц2А / - (H i + Я .2 + Я.з)/?1 (/) Дг,
р \ it + A/) Pi (О = ^ (,) + Цзр 4(,) + И2р 6(/) - (ц, + \ 2 + Х } )/>,(/).
At
Устремив А/ к нулю, получим:

= V o (О +ЦзР4(0 + ИгРб(0 “ + *2 + *э)А(0

или “ S p = XiA> +Ц3Р4 +Иг/>б“ (Hi +^-2 +^з)Л- (8-2)


Выполнив аналогичные действия, получим семь дифференци­
альных уравнений:
d . (/)
= \Р о + V-ъРа + ИгРв ~ (h + *-2 + h )Р\;
dp (О
= *-гА> + йзА + Hi А ” (Иг + \ + *з )Рг\
d p (О
= h P o + И 2Р 5 + Hi Р а ~ (Из + + ^ г)л ;

dp (О
= А .^3 + а.3/?, + ц 2/>7 - (ц , + ц 3 + Х2) р 4,

“ </ (0 (8,3)
= h/>7 + ^гРз + *эРг ~(Х1+ Иг + Нз)/^
</ (/)
= \,/?2 + Хгр х + Ц3/?7 - (ц , + Ц2 + ^з)Рб5


= Х,/>5 + Х 2/>4 + Х3р 6 - (ц , + ц 2 + ц 3) р 7;

^ (О
= HiА + Ц2Р 2 + ЦзЛ - (*ч + + *-з)А>-
Эта система дифференциальных уравнений называется систе­
мой уравнений Колмогорова. Имеем систему из восьми линейных
дифференциальных уравнений с восемью неизвестными. Известно,
что сумма всех вероятностей равна единице, т. е.
Ро +Р \ + Р 2 + Р З + Р 4 + Р 5 + Р б + Р Т = 1. (8.4)
Таким образом, любое из уравнений, входящее в систему урав­
нений (8.3), можно заменить уравнением (8.4), и найти значения
вероятностей для каждого события.
8.2. Финальные вероятности состояний 201
Для облегчения процесса составления дифференциальных урав­
нений можно применить следующее правило:

В левой части каждого уравнения следует записать производ­


ную вероятности i-го состояния устройства.
В правой части сумма произведений потока событий, входя­
щих в текущее состояние, умноженная на вероятность состоя­
ния, из которого исходит поток, минус суммарная интенсив­
ность исходящих потоков событий из текущего состояния, ум-
ноженная на вероятность текущего состояния.______________ _

Когда определены вероятности событий, то встаёт вопрос: «Что


будет с техническим устройством в установившемся режиме?» В ка­
ком состоянии (режиме) будет находиться техническое устройство по
прошествии большого периода времени, т. е. при t —> оо. Если суще­
ствуют пределы вероятностей p,{t) состояний устройства и они не
зависят от текущего состояния устройства, то эти пределы называют­
ся финальными вероятностями состояний.
Если число состояний некоторого устройства равно п (конечное
число состояний) и из каждого состояния можно перейти в другое
состояние, то финальные вероятности существуют. Это положение
доказывается в теории случайных процессов.
Если финальные вероятности существуют:
limp,(t) = Pi при/= 1, 2, 3 ,..., п, (8.5)
/->»
то их сумма будет равна единице:

2 > , = 1. (8.6)
/=1

Финальные вероятности показывают, какое среднее время уст­


ройство будет находиться в каждом состоянии. Финальные вероят­
ности находятся из системы дифференциальных уравнений, если их
правые части приравнять нулю.
Зададим численные значения интенсивности потоков событий
для примера 8.1:
X i = l ; Х2 = 2; X3 = l ; Hi = 2; ц2 = 4; ц3 = 2.
Приравняем левые части уравнений системы (8.3) нулю и заме­
ним одно из уравнений (седьмое) выражением (8.4)
202 Глава 8. Системы массового обслуживания

О= Ххр 0 + ц3р4 + \i2p 6 - (ц, + Х2 + Х3)рх;


О= Х2р 0 + ц 3р 5 + ц, р 6 - (ц2 + X, + Х3) р 2;
О= Х3р 0 + \i2p 5 + ц,р 4 - (ц3 + X, + Х2)р3;
, О= Ххр 3 + Х3р х+\i2Pi —(ц.| + Из + X ^p i,
‘ О= ц,/>7 + Х2р 3 + Х3р2- (X, + ц2 + ц3)р5;
О= \Р г + ^ 2Р\ + РъРп “ (h + Нг + *з)Рб>
О= ц,;?, + \к2р 2 + ц3р3- (X, + Х2 +Х3)р0;
.Pi +P2+Pi +P4+Ps +P6+Pt +Po =1-
Второй (отрицательный) член каждого выражения перенесем в
левую часть
Pi (Hi +Х2 +Х3) = Х{р0+ \i3pA+ ц2р6;
Р г^г + ^i + ^з) = ^гРо "'"ИзЛ + И-|/,б5
Рз (Цз + *-i + h ) = hPo + V-iPs + Hi Pa;
, Ра^ \ + Из + ^ 2) = ^чРз +^jPi +Иг/,7>
' PsQ-l + V-2 + h>) = HlP? + *-2^3 + h P l ’
РбСМч + Й2 ^ 3) = \ P 2 ^ 2Pl ИзPi’
PoC^l + ^2 + ^ 3) = HiPi + H2P 2 + НзЛ>
Pi = l~ P o ~ P i- Р г - Р з - P a - P s ~Рб-
Подставим конкретные значения (указанные выше) прямых и
обратных интенсивностей
[pl(2 + 2 + l) = lp 0 +2p 4 +4p6;
Рг(4 + 1+!) = 2Ро + 2Р$ + 2 А>5
/>з(2 +1 + 2) = 1^0 + 4р 5 + 2^4;
< Л (2 + 2 + 2) = 1Л + 1/?, + 4/>7;
/>5(1 + 2 + 4) = 2р7 + 2р 3 +1 р2;
p6(2 + 4 + l) = lp 2 +2pl +2p7;
р0(\ + 2 + \) = 2рх+4р 2 +2р3;
.Pi =1-Ро “ Л “ Л -Р з ~ Pa - P s “ Ре-
После выполнения арифметических действий получим:
' Spl = p 0 + 2 p 4 + 4 p t ;
6р 2 = 2р 0 + 2р 5 + 2 р6;
$Рз= Po+4 Ps+ 2 Pa'>
. 6р4 = Рз+Р1+ 4 /> 7;
7ps =2p 7 +2p 3 + р2;
1Рб=Рг+ 2Р \+ 2 Р1>
4р 0 = 2рх+4р 2 +2р3;
.Pi = 1“ Ро “ Р\ —Р2 —Рз —Ра —Ps —Рб-
8.2. Финальные вероятности состояний 203

Из первого уравнения выразим Pi =уА, + ^ Р а + у^* и подста'


вим его в остальные уравнения:
(>Рг = 2 Ро + 2Ps + 2 Рб'г
5 Р з = P o + 4 P s + 2 P a '>
28 1 4
— Ра = P)+ *Pi + уА> + J P * ;

7Ps = Р г + 2 Р) + 2 Р 1 >
• 27 2 4
— />« = уРо + у ^ 4 + Рг + 2 р?;
48 4 8 . -
— />о =у /> 4 + у /> б + 4 Л + 2Р3;
, 6 7 9
Pi —*“ уРо ~ Рг ~ Рз —у Р а ~ Ps - у / V

Аналогично выражаем /72 =у / ’о+ у/>5+у / ’б и подставляем в


оставшиеся уравнения и получаем:
5/>3 = Ро+ 4/,5+ 2/>4;
28 1 4
— = Рз+4/>7 + у р 0 + у р 6;
20 1 1
— Ps = уРо + уРб + 2Р3 + 2р7;
79 11 4 1
- у Р б = j j P o + y/>4 + j Л + 2р7;
124 4 4 44
— Р 0 = 2РЪ+ - Р А+ - Р ^ + — Р6\
,2 3 7 4 32
= ТГРо ~ Ръ ~ 7 Ра ~ I Ps ~ 7 Г Рв'
1 А О
Выражаем p J = —p 0+ —p s + —p 4 и подставляем в оставшиеся
уравнения и получаем:
'26 2 4 . 4
204 Гпава 8. Системы массового обслуживания

1 2
Из первого уравнения выразим р 4 =— р 0 +— р } + —2 рб+ —
10
р1
и подставим в оставшиеся уравнения. После выполнения преобра­
зований получим:
964 31 89 18
13-15_/,s ЪЛЪРо + \ Ъ Л 5 Рь + n Pl '
310 178 828
Рб ~ 5087 Ро + 5087 Ps + 5087 Р7’
155 155 60
Ро 319 + 319 ^ + 319 /?7’
_ 13 73 94 94
Pl~U 93 Ро 93 Р$ 93 Рб
155 89 135
Из первого уравнения выразим р 5 =—— р 0 +—— р 6 +——р 1 и
подставим в оставшиеся уравнения
54 405 141 042
Рб ~ 814 671 Ро + 814 671 Р?’
54 405 33 230
Ро ~ 94 497 Рб + 94 497 P l '
6266 42 471 49 491
Л _ 19 172 57 516 Ро 57 516 Рб
Из первого уравнения рв подставим в оставшиеся уравнения:
17 372453 670
~ 37 012 030731 ^ 7’
ру = 0,2845- 0,6921р0.
Из первого уравнения р 0 подставим в оставшееся уравнение
Pl = 0,2845+0,6927 •0,4697р7; />7= -у |^ = 0 ,2 1 4 6 .

Определим остальные вероятности, подставляя полученные ре­


зультаты в обратном порядке
ро = 0,4694 •0,2146 = 0,1007;
р 6 = 0,06678 •0,1007 + 0,1731 •0,2146 = 0,04387;
p s = 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;
р г = 0,2 •0,1007 + 0,8 •0,08035 + 0,4 •0,1853 = 0,1585;
р 2 = 0,3333 •0,1007 + 0,3333 •0,08035 + 0,3333 •0,04387 = 0,07498;
8.3. Системы массового обслуживания 205

pi = 0,2 •0,1007 + 0,4 •0,1853 + 0,8 •0,04387 = 0,1294.


Выполним проверку. Сумма вероятностей всех событий должна
быть равна единице.
P0 +Pl + Р 2 + Р З + Р 4 + Р 5 + Р 6 + Р 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).

Системы массового обслуживания

с отказами с очередью
(без очереди)

Неограниченная Ограниченная С приоритетами


очередь очередь

Рис. 8.2. Классификация систем массового обслуживания

По способу функционирования СМО могут быть:


• открытыми, т. е. поток заявок не зависит от внутреннего со­
стояния СМО;
• закрытыми, т.е. входной поток зависит от состояния СМО
(один ремонтный рабочий обслуживает все каналы по мере
их выхода из строя) [3].

8.4. Схема гибели и размножения


Большинство реальных процессов, протекающих в технике,
экономике, транспорте и т. д., можно описать с помощью размечен­
ного графа специального вида (рис 8.3).
8.4. Схема гибели и размножения 207

Ht=4Z]
^12 __________ ^23 __________ ^34 ^*-1, в

^21 ^31
Рис. 8.3. Размеченный граф процесса

Особенностью графа, представленного на рис. 8.3, является то,


что каждое состояние, кроме первого и последнего, связано только
с предыдущим и последующим состояниями.
Вычислим финальные вероятности событий. Составим систему
линейных уравнений:
- ДЛЯ СОбыТИЯ S\ А,12Р\ = Х.21pi- (8.7)
- ДЛЯ события Si (Х-23 + A-2i)/>2 = Х\гР\ + Хз2Pi.
Выполнив преобразование, получим
А-23Рг = Х32рз;
аналогично для события S3 А.34рз = Я.43р 4 и т. д.
Для события S„ Кл.пРпА А-л,п-1р„.
Таким образом, получим систему линейных уравнений:
XnPi =^2l/>2i
. ХгзРг =ХзаРз'’ (8.8)

^n-l.nPn-l ^п,п-\Рп ■
Используя нормированное условие
Pi +Р2 +Рз + ... +РЯ= 1, (8.9)
из первого уравнения выразим р 2 через р\
Р2 =?т-Рх- (8.Ю)
л21
Из второго уравнения, выполнив подстановку, выразим рз через р\.
p^ p^ h l h L Pl. (8.11)
Л3 2 а 21 л 3 2
Из третьего уравнения, выполнив подстановку, выразимр 4 через р \:
208 гпава & Системы массового обслуживания
а я в в в в а в в в в в в в в в в я в н а н в в т а в в в в в в в в а ш я а

В числителе формулы (8.13) стоит произведение интенсивностей


потоков событий с увеличивающимся номером событий (прямой
проход, т.е. слева направо), а в знаменателе произведение интен­
сивностей потоков событий с уменьшающимся номером событий
(обратный проход, т. е. справа налево).
После выполнения действий (8.10) — (8.12) оказалось, что все
интенсивности событий отpz дор„ выражены через одну р\. Теперь,
используя выражение (8.9), преобразуем формулу (8.13) к виду:
/ \ Л А А

I ! ^12 | ^12 ^-23 | ^12 ^23 ^34 j | ^12 ^23 •• =1


А
Я,21 ХгхХЪ2 ^21^32^43 ^п,п-1•••^'32^21
или
Р \= ------------------------------ '------------5— \------5------• (8.14)
} I ^12 | ^12^23 | ^12^23^34 , | ^ 1 2 ^ 2 3 • • - ^ я -1 ,я

X2l ^-21^32 ^21 ^*32 ^43 ^л,л-1 -"^Зг ^21


Остальные вероятности можно вычислить, используя выражение
(8.14), в соответствии с формулами (8.10) — (8.13), подставляя в каж­
дую из них необходимое количество членов ряда в знаменателе дроби.

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

Рис. 8.4. Размеченный граф процесса

Определим финальную вероятность события So по формуле (8.14).


__________________________________________________________________________1 _______________________________________________________________________ ___

Y | ^01 | ^01^12 ! ^01^12^23 | ^01^12^23^34 ^01^12^23^34^45 j

^10 ^10^21 ^10^21^32 ^10^21^32^43 ^10^21^32^43^54


1 =0,7207.
, 1 1-2 1-2-1 1-2-1-2 1-2-1-2-1
1+—+---- +------- + ---------- +
4 4-5 4-5-4 4-5-4-5 4-5-4-5-4
По формуле (8.10) определим финальную вероятность события Si
8.5. Моделирование систем массового обслуживания 209

Pi = ^ Р о =7-0,7207 = 0,1802.
A-io 4
Используя формулы (8.11) — (8.13), определим остальные фи­
нальные вероятности событий
=^ о Л 1 р =L 1 .0,7207 = 0,07207;
Х10Х2/ ° 4-5
= = j^ 2 J _ . о 7207 = 0,01802;
*..0* 21*32 4-5-4
= = b 2 J L l . 0 7207=0,007207;
Х10?.21Хз2Х4з 4-5-4-5
=,^01^12.^23^34.^45, Ро = 1' 2 ' 1' 2 ' 1 ■0,7207=0,001802.
10 21 32 43 54 4-5-4-5-4
Выполним проверку. Сумма вероятностей всех событий должна
быть равна единице
Р\ +Р2 +Рз +Р4 +Ps +Рб +Pi +Ро - 1;
0,7207 + 0,1802 + 0,07207 + 0,01802 + 0,007207 + 0,001802 = 0,999999.

8.5. Моделирование систем массового обслуживания


На любую СМО (одноканальная, многоканальная, марковская,
не марковская, с очередью, без очереди) воздействуют два потока
событий: входной поток и выходной поток. В установившемся (ста­
ционарном) режиме среднее число входящих событий за единицу
времени равно среднему числу выходящих событий (обслуженных)
и оба потока имеют одну и ту же интенсивность X =
Обозначим через X(t) количество вошедших событий за время Т,
а через Y(t) — количество обслуженных (вышедших) событий.
В момент времени t\ и U обслуживается одно событие (заявка).
В момент времени t2 обслуживаются два события (заявки). В мо­
мент времени h заявок нет, и каналы обслуживания простаивают.
Обе функции X(t) и Y(t) имеют ступенчатый характер.
Очевидно, что Z(t) =X(t) - У(/) есть не что иное, как количество со­
бытий (заявок), которые обслуживаются в СМО в момент времени t.
Графически функция Z(t) на рис. 8.5 представлена заштрихо­
ванной областью и ограничена с двух сторон функциями X(t) и Y(t).
1 4 - 1962
210 Глава 8. Системы массового обслуживания

Рис. 8.5. Хронология работы системы массового обслуживания

Если t -> оо, то среднее число входящих в СМО событий можно


определить:

LCKCT= U z ( t) d t. (8.15)

I
Геометрическая интерпретация интеграла JZ(t)dt — есть пло-
о
щадь заштрихованной фигуры (рис. 8.5). Но сама фигура состоит из
совокупности прямоугольников. Каждый прямоугольник имеет еди­
ничную высоту (обслуживается одно событие) и длину, равную вре­
мени обслуживания события (время пребывания события внутри
СМО). Таким образом:
т
j z ( o * = 2 //- (816>
О <
Равенство (8.16) справедливо при достаточно большом значении
Т и последним прямоугольником (или прямоугольниками) можно
пренебречь, т. е. в интеграл включены все события, обслуженные
СМО, за время Т.
Разделим левую и правую части выражения (8.16) на Г
, Ео
8.5. Моделирование систем массового обслуживания 211

и теперь правую часть разделим и умножим на X


Ъ
4hCT- Г
' Х *>»
где Т X — это среднее время пребывания события внутри систе­
мы, т. е. среднее время обслуживания события.
^СИСТ ~ X T збс
ИЛИ

Тыь (817)
Выражение (8.17) называется формулой Литтла. Для любой
СМО среднее время обслуживания события (заявки) равно сред­
нему числу событий в СМО, делённому на интенсивность входно­
го потока событий.
Формулу Литтла можно вывести и для времени ожидания об­
служивания событием
Гож ^ож . (8.18)
где Ьож— среднее число событий в очереди на обслуживание
(средняя длина очереди).

8.5.1. Одноканальная СМО с неограниченной очередью

СМО такого вида распространены достаточно широко. Это и


очередь на прием к врачу, и очередь на проезд по мосту при движе­
нии с одной полосой, и очередь на вход в автобус при наличии уст­
ройства автоматизированного контроля проезда пассажиров и т.д.
Такие СМО можно представить с помощью размеченного графа,
представленного на рис. 8.6.

14 1* 1
Рис. 8.6. Одноканальная СМО с ^ограниченной очередью

Под неограниченной очередью будем понимать количество зая­


вок, поступивших на обслуживание, не ограничено и время обслу­
14'
212 Гпава 8. Системы массового обслуживания

живания каждой заявки произвольное, но все заявки рано или позд­


но будут обслужены. В этом случае нет смысла говорить об абсо­
лютной пропускной способности (А = X) и об относительной пропу­
скной способности (6 = 1 ).
Каждая вновь поступившая заявка будет переводить СМО в новое
состояние S с увеличением индекса на 1, т. е. слева направо. А каждая
обслуженная заявка будет уменьшать индекс состояния S на 1, т. е.
перемещение по графу справа налево. Так как в каждый момент вре­
мени обслуживается только одна заявка (одноканальная СМО), то все
интенсивности поступления заявок равны X и все интенсивности об­
служивания заявок равны ц. В специальной литературе доказывается,
что при неограниченном числе состояний СМО финальные вероят­
ности отсутствуют. Для данного случая финальные вероятности су­
ществуют с учетом наложенных ограничений: все заявки рано или
поздно будут обслужены и выполняется условие:
р = -< 1 . (8.19)
И
Используя формулы (8.10) — (8.13) и (8.14), определим финаль­
ные вероятности событий.

А /_ х 2 / чЗ / \я I , , 2 , 3 , , я , ‘ (^-20)
МЛ 1+Р+Р +Р + . . . + Р + . . .
+ ...+ - +...

Учитывая, что 1+р+р2+р3+ ...+ рл’ + ...= ----- , получаем зна-


1-р
чение финальной вероятности события S0:
/70= 1 - Р- (8.21)
Финальные вероятности последующих событий будут опреде­
лены как:
Р\ = РАь Рг = pVo; Рз = pVo; ••• Рт = ртро, ■•• (8.22)
Вычислим среднее число заявок в СМО. Так как количество
заявок может принимать значения 0, 1, 2, 3 ,... , т ,... , то можно
записать:
00

А=иСТ='0 Ро + 1Р\ + 2 Рг +:3Рз + ■- + 'т Рп, + •-• = £ т Рт ■


W /77=1

Далее, раскрыв значение рт и выполнив дифференцирование,


получим:
8.5. Моделирование систем массового обслуживания 213

(8-23>
1-р
Применив формулу (8.17), определим время обслуживания заявки:

< 8 '2 4 )

Определим среднюю длину очереди (среднее число заявок, ожи­


дающих обслуживания). Так как рассматриваемая нами СМО одно­
канальная, то обслуживаться может только одна заявка, а остальные
заявки ждут своей очереди. Вероятность такого события (занятости
одного канала) будет равна Дан = 1 -ро = Р- Так как СМО обслужи­
вает ТОЛЬКО ОДНу Заявку, ТОХобсл = р.
Длина очереди есть разница между общим числом заявок и за­
явками, находящимися в обслуживании, тогда:

1-р 1-р
Средне время пребывания заявки в очереди можно определить

Г" =Т 7 Г -Т
Х(1-р) (826)
Все характеристики одноканальной СМО определены.

Пример 8.3
На оптовую базу поступают на разгрузку три автомобиля в час
(к = 3). Среднее время разгрузки (Гебе) одного автомобиля — 10 мин.
Определить характеристики одноканальной СМО с неограниченной
очередью.

Решение
Определим интенсивность обслуживания автомобилей
1 1 =1=2=1
^ 7 ^ " 1 /6 " " Р_ Ц~6_ 2
По формуле (8.23) определим среднее число обслуживаемых
автомобилей:
Р _ 0,5 ,
214 Глава 8. Системы массового обслуживания

По формуле (8.24) определим среднее время (час) обслуживания


автомобиля:
'Г _ ^сист _ ^
сист X 3‘
По формуле (8.25) определим длину очереди (среднее количест­
во автомобилей ожидающих разгрузки):
L04 —Lchct Р 1 0,5 0,5.
По формуле (8.26) определим среднее время ожидания в очере­
ди автомобиля:
Тт =—£---- = 0,52 _ Q ^ _ q Д667
04 Ц1-р) 3 (1-0,5) 1,5

8.5.2. Одноканальная СМО с ограниченной очередью

Отличие данной СМО от предыдущей состоит в том, что после


поступления п-й заявки всем остальным заявкам будет отказано в
обслуживании и они покинут систему. Размеченный граф для одно­
канальной СМО с ограниченной очередью показан на рис. 8.7.

Рис. 8.7. Одноканальная СМО с ограниченной очередью

Вычисление характеристик СМО выполняется по формулам


(8.20) — (8.26), но учитывается конечное количество членной гео­
метрической прогрессии.

8.5.3. Многоканальная СМО с ограниченной очередью

Примерами многоканальных СМО могут быть: морской порт,


имеющий несколько стенок для обработки судов; овощная база,
имеющая несколько площадок для обработки товаров и т.д. Для
вычисления характеристик СМО воспользуемся теми же приемами,
которые были рассмотрены в одноканальной СМО с неограничен­
ной очередью.
8.5. Моделирование систем массового обслуживания 215

Определим численные значения следующих характеристик:


Ро — вероятности простоя каналов обслуживания;
Рот — вероятности отказа в обслуживании;
Робе— вероятности обслуживания;
«з — среднего числа каналов, занятых обслуживанием;
кз — доли каналов, занятых обслуживанием;
А — абсолютная пропускная способность (среднее количество
заявок, обслуженных за единицу времени);
Q — относительная пропускная способность (среднее значение
обслуженных заявок).
Размеченный граф такой СМО представлен на рис. 8.8.

Ц 2ц Зц тц (">+ lV

Рис. 8.8. Многоканальная СМО с ограниченной очередью

Данная СМО имеет п каналов с одинаковыми техническими ха­


рактеристиками и может находиться в одном из состояний:
So — заявки отсутствуют;
S\ — поступила одна заявка и она обслуживается первым кана­
лом, остальные каналы простаивают;
5г — во время выполнения первой заявки поступила вторая за­
явка. Вторая заявка обслуживается вторым каналом. Остальные ка­
налы простаивают;
5з — во время выполнения двух заявок поступила третья заявка.
Третья заявка обслуживается третьим каналом. Остальные каналы
простаивают и т. д.;
S„ — во время выполнения п - 1 заявок поступила заявка и, ко­
торая обслуживается л-м каналом. Все каналы заняты. Последую­
щим заявкам будет отказано в обслуживании, если ко времени по­
ступления очередной заявки не освободится ни один канал.
Заявки на обслуживание поступают произвольно с интенсивно­
стью X. При поступлении второй заявки ее обрабатывает второй ка­
нал, и интенсивность обслуживания заявок СМО удваивается и рав­
на 2ц. При поступлении третьей заявки в работу включается третий
канал и интенсивность обслуживания заявок становится равной Зц
216 Гпава 8. Системы массового обслуживания

и т.д. Максимально возможная интенсивность обработки заявок


СМО будет равна п ц.
Используя формулу (8.20), учитывая, что используется п кана­
лов и выполняя необходимые преобразования, получаем:
Финальная вероятность события So:
1
Ро: . X X (8.27)
X
1+—+-----+ — +.
|i ц 2! цЗ!
или, заменяя Х/ц на р, получаем:
1
Ро=— Л2 3 _л
(8.28)
1+Р+— + — +...+—
2! 3! п\
Финальные вероятности последующих событий:
2 3 п
Pl=PPo’> Р2~ Р о ’> Р З у Р 0>•” Р”~ Р°- (8.29)
Вероятность отказа в обслуживании:

=Р„ ^ С о ­ (8.30)
относительная пропускная способность:
(8.31)
Абсолютная пропускная способность:

A=XQ=X^1- £ Po (8.32)

Среднее число занятых каналов:

(8.33)
ц I и! Ро

Пример 8.4
На автозаправочной станции имеется четыре колонки по отпус­
ку моторного топлива. Каждые три минуты прибывает автомобиль
на заправку (А. = 3). Среднее время обслуживания одного автомоби­
ля (Гобс) равно 1 мин. Определить финальные вероятности состоя­
ний СМО (pi), вероятность отказа в обслуживании (Pan), относи-
8.5. Моделирование систем массового обслуживания 217

тельную пропускную способность ( 0 , абсолютную пропускную


способность (А) и среднее число занятых каналов (А:,).

Решение
Определим интенсивность обслуживания заявок ц:
1 1 1 X 3 _
ц=— =-=1 и р=—= -= 3 .
обе Ц ^
По формуле (8.28) определим финальную вероятность для со­
бытия So:

Ро= 9 27 81 = 555=°’061
1 + 3 + -+ — +—
2 6 24
По формулам (8.29) определим остальные финальные вероятности:
Р\ = р/>о = 3 0,061 =0,1832;
061=0,2745;
р 3 = 4,5 0,061=0,2745;
р4 = 3,375 0,061 =0,2059.
Определим вероятность отказа в обслуживании по формуле (8.30):
Рот* ~ Ра ~ 0,2059.
Определим относительную пропускную способность по форму­
ле (8.31):
Q = 1 - Рот* = 1 - 0,2059 = 0,7941.
Определим относительную пропускную способность по форму­
ле (8.32):
A = X Q = 3 0,7941 =2,3823.
Определим среднее число занятых каналов по формуле (8.33):
. А 2,3823
к, =—=—----- =2,3823.
U 1

8.5.4. Многоканальная СМО с неограниченной очередью

Задача формулируется аналогично предыдущей задаче. Разме­


ченный граф представлен на рис. 8.9.
СМО имеет п каналов с одинаковыми техническими характери­
стиками и может находиться в одном из состояний:
So — заявки отсутствуют;
218 Гпава 8. Системы массового обслуживания

X X X X X ___X X ____X X
|Х]ц===С1=
ц 2ц
= Ш Зц ::тц0 (т + 1)ц пц лц пц пц лц

Рис. 8.8. Многоканальная СМО с неограниченной очередью

S\ — поступила одна заявка, и она обслуживается первым кана­


лом, остальные каналы простаивают;
i!>2 — во время выполнения первой заявки поступила вторая за­
явка. Вторая заявка обслуживается вторым каналом. Остальные ка­
налы простаивают;
Si — во время выполнения двух заявок поступила третья заявка.
Третья заявка обслуживается третьим каналом. Остальные каналы
простаивают и т. д.;
S„ — во время выполнения п - 1 заявок поступила заявка п, ко­
торая обслуживается n-м каналом. Все каналы заняты;
5п+1 — вновь поступившая заявка встает в очередь и ожидает
обслуживания. Все последующие заявки также встают в очередь.
Для СМО такого типа финальные вероятности состояний могут
существовать только при выполнении условия —<1. Вычислим
п
значения финальных вероятностей состояний:
1
Ро=- .2 „3 Лп Лл+|
1! 2! 3! " л! п\ (п-р)
2 3 п
Pl =-J7Pol Pi ^ Р * ’ Рг у Ро’ •••’ Рп =^Г#>; (834)
_Р п+‘ _ . . _ _Р"+* _
Pn+l ~ I Ро> •*•» Pn+к ~ * ГА)’ --"
ПП\ П п\

Без доказательства приведем формулы для расчета характери­


стик СМО [3].
Среднее число занятых каналов:
*з= -= р . (8.35)
Ц
Среднее число заявок в очереди (длина очереди):
8.6. Примеры 219
л+1
Р__ Ро (8.36)
А* =■ \2
пп\ I 1 -£
Среднее число обслуживаемых заявок:
Lqист —-^оч + р. (8.37)
Среднее время обслуживания заявки:
'Г _ ~^сист
(8.38)
снст X '
Среднее время ожидания обслуживания:
Т = ^*04 (8.39)
04 X '

8.6. Примеры
1. Найти финальные вероятности.

2 1

4
Г

2. Составить систему дифференциальных уравнений Колмогорова.


220 Гпава 8. Системы массового обслуживания

3. Определить финальные вероятности с помощью формул схе­


мы гибели и размножения.

4. Торговая фирма «Восток» желает построить складское поме­


щение. Грузооборот склада Q составляет 75 ОООт. Период поступления
материалов Т„ — 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
Таблица стратегий
Стратегии Я. В2 вп
Аг tfl 1 ап Q\n
Л2 а2\ а22 din

&т\ &т2 &тп


Пусть фирма А разработала четыре стратегии, а фирма В — пять
стратегий.
224 Гпава 9. Игровыв модели

То есть фирма А — аь ay, аз; а* —>а„ где i=l,m.


Фирма В соответственно — by, by, by, b4 -> bj, где j =1,п.
Каждая фирма от реализации своей стратегии предполагает по­
лучить какой-то доход (табл. 9.2).
Таблица 9.2
Пример стратегий двух игроков
Стратегии Я. Вг Вг В4 Вь
А, 5 8 7 5 4
Аг 1 10 5 5 6
Аг 2 4 3 6 2
А,4 3 5 4 4 3
Если фирма А выберет первую стратегию, то минимальный до­
ход составит 4. Минимальный доход от второй стратегии — 1; от
третьей — 2; от четвертой — 3. У фирмы В имеется в наличии пять
стратегий. Использование первой стратегии обернется убытком в 1 еди­
ницу; второй (убыток) — 4; третьей — 3, четвертой — 4 и пятой — 2.
На первый взгляд фирма А должна избрать вторую стратегию
(Аг), чтобы получить выигрыш 10, но в ответ вторая фирма изберет
первую стратегию (Вi) и выигрыш фирмы А составит только 1. По­
этому в теории игр придерживаются осторожных стратегий, кото­
рые можно сформулировать так: получить максимальный доход из
возможных минимальных. Введем в табл. 9.2 дополнительную строку
и дополнительный столбец, в которых укажем возможные мини­
мальные прибыли и максимальные убытки (табл. 9.3).
Таблица 9.3
Минимальные прибыли и максимальные убытки

Стратегии Минимальная
в, В2 Вг в4 Вь прибыль фирмы А
А, 5 8 7 5 4 4
Аг 1 10 5 5 6 1
Аг 2 4 3 6 2 2
А4 3 5 4 4 3 3
Максимальный 5 10 7 6 6
убыток фирмы В
^^^^^^^^9^Игрьм^фопи/водвОсговыв*мм<улвво1Йсу»*мо4^^^^^^^25
Исходя из данных табл. 9.2 фирме А надо придерживаться стра­
тегии Аь а фирме В — стратегии В\. Таким образом, гарантирован­
ный минимальный доход фирмы А составит 4, а минимально воз­
можный доход, который отдаст фирма В, составит 5 (минимально
возможный проигрыш).
Минимальный гарантированный выигрыш называется нижней це­
ной игры. При плохой игре фирмы В выигрыш может быть и большим.
Минимально возможный проигрыш называется верхней ценой
игры.
Для нашего примера нижняя граница игры составляет 4 (мини­
мальный гарантированный выигрыш фирмы А), а верхняя граница
игры — 5 (минимально возможный проигрыш фирмы В). Приве­
денные выше рассуждения хороши, если конкурирующая фирма
заранее не знает, как себя поведет противник. Если конкурирующая
фирма ознакомлена с планами конкурента, то она может выбрать
другую стратегию (отличную от осторожной стратегии) и получить
больший выигрыш (доход). Таким образом, приведенные осторож­
ные стратегии являются неустойчивыми по отношению к дополни­
тельной информации.
На практике иногда случается, что нижняя цена игры равна
верхней цене игры. В этом случае говорят об устойчивых стратеги­
ях игроков (конкурирующих фирм) или о задачах с седловой точ­
кой. Задача с седловой точкой представлена в табл. 9.4.
Таблица 9.4
Задача с седловой точкой
Минимальная при­
Стратегии в, в2 Вз В4 В5 быль фирмы А
А, 4 8 7 5 4 4
а2 1 10 5 5 6 1
Аз 2 4 3 б 2 2
а4 3 5 4 4 3 3
Минимальный 4 10 7 6 6
убыток фирмы В
Стратегии обоих противников в задачах с седловой точкой на­
зываются оптимальными и не зависят от дополнительно получен­
ной информации. В специальной литературе доказано, что если при
исследовании игровой модели известна вся предыстория (все ранее
сделанные ходы), то существуют оптимальные (чистые) стратегии
поведения игроков (конкурентов).
15 - 1962
226 Гпава 9. Игровые модели

Если игровая задача не имеет седповой точки, то на практике кон­


курирующие фирмы (игроки) используют смешанные стратегии, т.е.
попеременно используют две или более стратегий. В этом случае ис­
пользование фирмой А нескольких стратегий можно записать как сум­
му вероятностей использования каждой стратегии Sa - р \ + р 2+ ... + р„.
Соответственно, использование нескольких стратегий фирмой В мож­
но записать как 5* = q\ + q2 + ... + qm- Поэтому в общем случае иссле­
дование игровой модели сводится к определению вероятностей ис­
пользования конкретных стратегий каждой фирмой (игроком).

9.3. Графический метод решения игровых задач


с нулевой суммой
Суть графического метода состоит в том, что из матрицы уда­
ляют дублирующие и поглощаемые строки и столбцы. Дублирую­
щими называют полностью одинаковые строки или столбцы. Доми­
нирующей строкой называется такая строка, которая содержит эле­
менты, большие или равные соответствующим элементам другой
строки, называемой поглощаемой. Доминирующим столбцом назы­
вается такой, который содержит элементы, меньшие или равные
соответствующим элементам другого столбца, который называется
поглощаемым.
Воспользуемся табл. 9.2.
Строка (стратегия) А\ является доминирующей по отношения к
строке (стратегии) Л4, так как содержит элементы, большие соответ­
ствующих элементов строки Л4. Соответственно строка А\ является
поглощаемой и из дальнейшего рассмотрения удаляется (табл. 9.5).
Таблица 9.5
Первый шаг упрощения таблицы
Стратегии в, В2 Вг В4 В5
А1 5 8 7 5 4
Аг 1 10 5 5 6
Аз 2 4 3 6 2
Первый столбец является доминирующим по отношению ко
второму, третьему и четвертому столбцам (поглощаемым). Посту­
паем аналогично (табл. 9.6).
Еще раз просматриваем строки. Первая строка поглощает тре­
тью строку.
9.3. Графический метод решения игровых задач с нулевой суммой 227

Таблица 9.6
Второй шаг упрощения таблицы
Стратегии в, в5
А, 5 4
Аг 1 6
А3 2 2
Поглощаемые строки (столбцы) содержат самые плохие стратегии.
Окончательно получим (табл. 9.7).
Таблица 9.7
Третий шаг упрощения таблицы
Стратегии в, в5
А, 5 4
а2 1 6

Вероятность использования первой фирмой первой стратегии


обозначим через х\. Тогда вероятность использования второй стра­
тегии первым игроком будет х 2 = 1 —jcj. Ожидаемый выигрыш фир­
мы А от применения первой стратегии составит:
Оц* 1 + 021*2 = 0] 1*1 + 02l(l - * l ) = Oll*l + 0 2 1 - 021*1 = (oU- 02l)*l + 0 21 - (9 .1 )
Аналогичным способом получим ожидаемый выигрыш фирмы
А от применения второй стратегии:
( 0 l 2 - 0 22)* l +022. (9 .2 )
В выражения (9.1) и (9.2) подставим конкретные значения.
(0 1 1 -0 2 1 ) дг1+021 = ( 5 - 1 ) дг1 + 1 = 4 * 1 + 1;
(012 - 022)*1 + 022 = (4 - 6)*1 + 6 = -2X1 + 6.
На оси х отложим две точки 0 и 1. Через эти точки проведем
прямые линии, параллельные оси у. Затем в первое выражение под­
ставим 0 вместо Х \, а потом — единицу. И по двум точкам построим
прямую линию.

Рис. 9.1. Графический способ определения стратегии фирмы А


15*
228 Г пава 9. Паровые модели
вввзввааввавш н ви вяш вш вввввш вввяп вввш вш ш ваш вш ввп аш н аш вш в

Аналогично построим вторую прямую линию. Пересечение


двух прямых линий и даст решение задачи (рис. 9.1).
Итак, вероятность использования первой стратегии фирмой А
составляет 0,83 (xi = 0,83), а второй стратегии — соответственно
0,17 (*2 = 0,17).
Аналогично определим оптимальную стратегию поведения
фирмы В
(ап - ai2>^i + Я|2 = (5 - 4)^i + 4 = / | + 4;
(а21- а22)у\ + а22 = (1 - 6)ух + 6 = -5 у х + 6.

Рис. 9.2. Графический способ определения стратегии фирмы В

Вероятность использования первой стратегии фирмой В составляет


0,33 (у| = 0,33), а второй стратегии — соответственно 0,67 (у$ —0,67) [5,9].

9.4. Общий метод решения игровых задач


с нулевой суммой
Рассмотрим общий случай, когда игровая модель не имеет сед-
ловой точки. Тогда эту модель можно представить в виде матрицы
(табл. 9.8).
Таблица 9.8
Общая таблица стратегий
Стратегии Вх В2 вп
Ах а\\ ап а\п
Аг 021 а22 &2п

Ат От\ &т2 &тп


Надо найти смешанную стратегию фирмы А (первого игрока) —
Sa =р\ +р 2 + ... + р„ и смешанную стратегию фирмы В (второго иг­
рока) — Sb = q\ + q2 + ... + qm- Выполним некоторые математические
преобразования. Если первая фирма будет строго применять опта-
9.4. Общий метод решений игровых зада ч с нулевой суммой 229
мальную стратегию (или комплекс стратегий), то фирма В не смо­
жет изменить ход игры без дополнительного ущерба для себя. Тогда
можно записать:
«1\Р\ + а\2Рг + а \зРз + •••+ «1тРт * ю;
°г\Р\ + a2lPl + «23Pi + •••+ а гтРт *
« si А + аъгРг + « зз Рз + ■■• + азтРт * «Ч (9.3)

?п\Р\ + anlP l + «„зЛ + ••■+ аптРт *


где со — гарантированный минимальный выигрыш.
Все неравенства в выражении (9.3) разделим на со, и введем обо­
значения:
Хг _= Р\ . X, _ Pi .
v =" _Л .
= Г —PjSL
т ”
со со со СО
Получим:
а,,х, + al2x 2 +al3x} + ...+а,тхт> 1;
<*21*1 + «22*2 + «23*3 + — + а 2тХ т * t
«31*1 + « 3 2 * 2 + « 3 3 * 3 + - + « 3 m * m * U (9.4)

«„1*1 + «„2*2 + «„3*3 + ••' + « „ m * m * Ь


1
гдед:;>0и JC, + x 2 +JC3 +... + JCm = — при 1 = 1 ,/и.

Но со — это минимальный гарантированный выигрыш, поэтому
его надо максимизировать. Следовательно, — надо минимизиро-
(0
вать. Таким образом, задача свелась к задаче линейного программи­
рования с целевой функцией
F(x) = *1 + хг + хз + ... +хт—>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 a y + (1 - а) max ay). (9.8)
Ответственное лицо, принимающее решение, определяет значе­
ние коэффициента а. Если потери могут быть весьма значительны­
ми, то значение коэффициента а приближается к единице.
4. Критерий Сэвиджа.
Этот критерий анализирует возможные риски от применения
каждой из стратегий и выбирает такую стратегию, которая обеспе­
чивает приемлемые потери. Риски по каждой стратегии определя­
ются по формуле:
Гу = max ay - ay. (9.9)
То есть из максимально возможного выигрыша вычитается вы­
игрыш, полученный от использования выбранной стратегии. Смысл
каждого элемента матрицы рисков состоит в том, что какие потери
понесет фирма (точнее, недополученная прибыль), если для каждого
текущего состояния природы будет выбрана неоптимальная страте­
гия. Оптимальная стратегия может быть определена по формуле:
min (max (max a y - ay)). (9.10)
Для примера возьмем таблицу стратегий (табл. 9.9) и составим
для нее таблицу рисков (табл. 9.10).
9.5. Игры с природой (без противодействия) 231
Если фирма (игрок) выберет стратегию А\, а природа реализует
стратегию В\, то фирма получит максимально возможную прибыль
5 (недополученная прибыль составит 0). Фирма угадала состояние
природы. Но если природа реализует стратегию В4, то фирма вместо
максимально возможной прибыли 12 получит прибыль 5, а недопо­
лученная прибыль составит 7 [5, 9].
Таблица 9.9
Таблица стратегий
Стратегии В, в2 Въ В4 в5
А, 5 8 7 5 4
Аг 1 10 5 5 6
А3 2 4 3 6 2
а4 3 5 4 12 3
5 10 7 12 6

Таблица 9.10
Таблица рисков
Стратегии By в2 Вз в4 Вь
А, 0 2 0 7 2
а2 4 0 2 7 0

Аз 3 6 4 6 4
а4 2 5 3 0 3

Пример 9.1
Швейная фабрика на летний сезон может реализовать два вида
костюмов: для жаркой погоды (первый вид) — 1200 костюмов по цене
520 руб. и 200 костюмов для холодной погоды по цене 1000 руб., если
погода будет жаркой. Если погода будет холодной, то фабрика может
реализовать 650 костюмов первого вида и 700 костюмов второго вида.
Определить план выпуска костюмов каждого вида и прибыль,
полученную от их реализации.

Решение
Швейная фабрика располагает двумя стратегиями: А\ — погода
будет жаркой и А2— погода будет холодной.
232 Гпава 9. Игровые модели

Если фабрика воспользуется первой стратегией и погода дейст­


вительно будет жаркой, то прибыль фабрики составит:
1200 •520 + 200 -1000 = 624 000 + 200 000 = 824 000 руб.
Если фабрика воспользуется первой стратегией, но погода будет
холодной, то прибыль фабрики составит:
650 • 520 + 200 • 1000 - (1200 - 650) 520 = 338000 + 200000 -
-286 000 = = 252 000 руб.
Если фабрика воспользуется второй стратегией и погода дейст­
вительно будет холодной, то прибыль фабрики составит:
650 •520 + 700 -1000 = 338 000 + 700 000 = 1038 000 руб.
Если фабрика воспользуется второй стратегией, но погода будет
жаркой, то прибыль фабрики составит:
650 • 520 + 200 • 1000 - (700 - 200) • 1000 = 338000 + 200000 -
-500 000 = 38 000 руб.
Составим математическую модель (табл. 9.11).
Таблица 9.11
Условие расчета
Стратегии 5, Вг
А, 824000 252000
Аг 38000 1038000

а = max (252 000; 38 000) = 252 000 руб.


р = min (824 000; 1038 000) = 824 000 руб.
Таким образом, цена игры находится в диапазоне от 252000 руб.
до 824000 руб.
Минимальный гарантированный доход швейной фабрики соста­
вит 252 000 руб., но возможен и доход в 824 000 руб.
Определим план выпуска изделий швейной фабрикой. Вероят­
ность выбора стратегии А\ обозначим через х\, а вероятность выбора
стратегии А2— через х2. Учитывая, что х2 = 1 -х\, можем записать:
(оц —о2\)х \ + 021 = (824 000 —38 000) jcj + 38 000 =
= 786 000 *, + 38000;
(fln - ° 2г)х\ + а22 = (252 000 - 1038 000)х, + 1 038 000 =
= -786 ОООдг, + 1038000;
= 0,64; х 2 = 0,36;
0,64(1200; 200) + 0,36(650; 700) = (1002; 380).
9.6. Примеры 233

Цена игры составит: со = 786 ОООXi + 38 ООО= 541040 руб.


Таким образом, план выпуска изделий таков: 1002 костюма пер­
вого вида и 380 костюмов второго вида, и при любых погодных ус­
ловиях швейная фабрика получит прибыль не менее 541 040 руб.
Определим критерии.
1. Критерий Вальде:
max (min ay) = max (38 000; 252 000) = 252 000 руб.
Швейной фабрике целесообразно использовать стратегию А\.
2. Критерий максимума:
max (max ay) = max (824 000; 1038 000) = 1038 000 руб.
Швейной фабрике целесообразно использовать стратегию Аг-
3. Критерий Гурвица:
пусть а = 0,4, тогда для стратегии А\
a minify + (1 - a) max ay = 0,4 •252 000 + (1 - 0,4) 824000 =
= 595 200 руб.
для стратегии А2
amina/, + (1 - a) maxay = 0,4 •38 000 + (1 -0,4) 1038000 =
= 638 000 руб.
Швейной фабрике целесообразно использовать стратегию А2.
4. Критерий Сэвиджа:
Максимальный элемент в первом столбце — 824 000, во втором
столбце — 1038 000.
Матрица рисков будет иметь вид:
( 0 786000"
,786000 0 /
Швейной фабрике целесообразно использовать стратегию А\
или Аг-

9.6. Примеры
1. Определите оптимальные стратегии и цену игры
14 5 2 7 1 3]
4 3 5 3
А= 9 7 4 2
4 2 5 1
5 4 8 4
2. Определите оптимальные стратегии и цену игры
234 Гпава 9. Игровые модели

2 5 3 4
3 4 5 6
7 8 9 7
4 9 7 5
6 2 1 2
5 3 5 3
4 5 6 8
3. Фирма производит пользующиеся спросом детские платья и
костюмы, реализация которых зависит от состояния погоды. Затра­
ты фирмы на единицу продукции составили: платье — 9 ед., кос­
тюм — 32 ед. Цена реализации 22 и 48 ед. соответственно. По мно­
голетним данным продаж фирма может реализовать в условиях те­
плой погоды 2200 платьев и 950 костюмов, а при прохладной пого­
де — 870 платьев и 1800 костюмов. Определить стратегию фирмы с
учетом погодных условий, обеспечивающую ей максимальный до­
ход от реализации продукции. Степень оптимизма — 0,6 .
4. Торговая фирма разработала несколько планов продаж пись­
менных столов и стоек TV на предстоящей ярмарке с учетом изме­
няющейся конъюнктуры рынка и спроса покупателей. Показатели
дохода представлены в таблице. Определить оптимальный план
продаж.
Планы Величина дохода, тыс. руб.
продаж Д1 Д2 ДЗ Д4
1 850 500 200 50
2 600 900 400 550
3 460 300 600 380
4 320 150 80 270
5 240 370 350 190
6 75 820 510 440

Контрольные вопросы

1. Чем отличаются игровые задачи от задач систем массового обслуживания?


2. Дайте характеристику игровым моделям с противодействием, без про­
тиводействия?
3. Раскройте понятие конечной и бесконечной игры.
4. Какая стратегия называется оптимальной?
5. Укажите суть игровых моделей с противодействием и нулевой суммой.
6. Раскройте понятие седловой точки.
9.6. Примеры 235
m i iH M iiiig M H ii I iJiiiT i w w i i i i i H i i i . i u f c . i ..m i i ui it, ii ■ ш i im iiU i д д в д с м в а — B i L i iir iii , m in i n, ,mi u «Ml i n LI и м I'UHHI .щ и ц ц л

7. Что называется нижней ценой игры, верхней ценой игры?


8. Какие стратегии называются устойчивыми, неустойчивыми?
9. Укажите суть смешанных стратегий.
10. Раскройте понятие доминирующей строки, доминирующего столбца.
11. Раскройте суть критерия Вальде.
12. Расскажите об особенностях критерия максимума,
13. Какова суть критерия Гурвица?
14. Каковы преимущества и недостатки критерия Сэвиджа?
Литература

1. Аттеков А. В., Галкин С. В., Зарубин В. С. Методы оптимизации:


Учеб. для вузов / Под ред. В. С. Зарубина, А. П. Крищенко. — 2-е
изд., стериотип. — М.: Изд-во МГТУ им. Н.Э. Баумана, 2003.
2. Бережная Е. В., Бережной В. И. Математические методы модели­
рования экономических систем: Учеб. пособие. — М.: Финансы и
статистика, 2003.
3. Вентцель Е. С. Исследование операций: задачи, принципы, ме­
тодология. — 2-е изд., стериотип. — М.: Наука, 1988.
4. Ганшин Г. С. Методы оптимизации и решение уравнений. — М.:
Наука, 1987.
5. Красс М С, Чупрынов Б, П. Основы математики и ее приложения в
экономическом образовании: Учебник. — 2-е изд., испр. — М.: Дело,
2003.
6. Ларионов А. К , Новоселов А. J1., Юрченко Т. И. Экономико-ма-
тематические методы в планировании: Учеб. для сред. спец. за­
ведений. — 2-е изд., перераб. и доп. — М.: Высш. шк., 1991.
7. Пинегина М. В. Математические методы и модели в экономике:
Учеб. пособие для студентов вузов экономических специальностей. —
М.: Издательство «Экзамен», 2004.
8. Химмельблау Д. Прикладное нелинейное программирование. — М.:
Мир, 1975.
9. Шикин Е. 5., Чхартишвили А. Г. Математические методы и модели
в управлении: Учеб. пособие. — 3-е изд. — М.: Дело, 2004.
10. Теория графов. Методические указания по подготовке к контрольным
работам по дисциплине «Дискретная математика» / Сост.: Н. И. Жит-
никова, Г. И. Федорова, А.К. Галимов. — Уфа: Уфимск. гос. авиац.
техн. ун-т, 2005.
И. Грызина Н. Ю., Мастяева К Н., Семенихина О. Н., Тимашков П. С.
Математические методы исследования операций: Учебное пособие,
руководство по изучению дисциплины, практикум по дисциплине. —
М.: МЭСИ, 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 Оглавление
1 .........................■ М ............... ......... ............ — ...... 1—g -!■' -L - .Л.1

Глава 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. Основные понятия............................................................................. 2 2 2
9.2. Игры с противодействием и нулевой суммой................................ 223
Оглавление 239

9.3. Графический метод решения игровых задач с нулевой


суммой...............................................................................................226
9.4. Общий метод решения игровых задач с нулевой суммой............. 228
9.5. Игры с природой (без противодействия)........................................ 229
Литература....................................................................................... 236
Агальцов Виктор Петрович

МАТЕМАТИЧЕСКИЕ МЕТОДЫ
в программировании

Учебник

Редактор А. В. Волковицкая
Корректор А. В. А 1ёшина
Компьютерная верстка С. Ч. Соколовского
Оформление серии Т. В. Иваншиной

Подписано в печать 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.

Вам также может понравиться