Текст
                    А. А. ГРЕШИЛОВ
ИЗДАТЕЛЬСТВО МГТУ


А. А. ГРЕШИЛОВ ПРИКЛАДНЫЕ ЗАДАЧИ МАТЕМАТИЧЕСКОГО ПРОГРАММИРОВАНИЯ Допущено Государственным ко¬ митетом ’СССР по народному образованию в качестве учеб¬ ного пособия для студентов высших технических учебных заведений ИЗДАТЕЛЬСТВО МГТУ 1990
ББК 22.18 Г81 Грешилов А. А. Прикладные задачи математического программирования: Учебное пособие. — М.: Изд-во МГТУ, 1990. — 189 с., ил. ISBN 5-7038-0103-6 Рассматривается в популярной форме широкий круг задач математи¬ ческого программирования, возникающих в повседневной жизни (форми¬ рование семейного бюджета, организация досуга, составление диет, по¬ купка автомобиля и т. д.), при разработке занимательных игр на компью¬ терах («военные» зидачи), а также в производственной деятельности. Излагаются особенности этих задач и методы их решения, подробно опи¬ сываются алгоритмы решения каждой задачи. Для студентов технических и экономических специальностей вузов, изучающих методы оптимизации, исследования операций и системного анализа. Рис. 70. Табл. 48. Библиогр. 22 назв. Рецензенты: канд. техн, наук Л. В. Маркин, канд. физ.-мат. наук А. В. Тимохов ББК 22.18 Анатолий Антонович Грешилов ПРИКЛАДНЫЕ ЗАДАЧИ МАТЕМАТИЧЕСКОГО ПРОГРАММИРОВАНИЯ Редактор С. Н. Удалова Художественный редактор Л. М. Толмачева Технический редактор О. В. Рыбина Корректор Л. И. Малютина Подписано в печать 26.11.90. Формат 60X90716. Бумага тип. №2. Усл. печ. л. 12. Уч.-изд. л. 11,34. Тираж 4200 экз. Заказ 1290. Цена 40 коп. Изд. № 242. Издательство МГТУ 107005, Москва, Б-5, 2.-я Бауманская, 5. Типография Минстанкопрома СССР Москва, 142002, г. Щербинка, ул. Типографская, д. 10 ISBN 5-7038-0103-6 © а. А. Грешилов, 1990. „ 1602110000—242 Г 095(02)—90 3-90
ВВЕДЕНИЕ Развитие вычислительной техники и широкое распространение персональных компьютеров дает возможность многие решения принимать не «на веру», а построив соответствующую модель яв¬ ления, на основе соответствующих расчетов. В свою очередь, такой подход требует алгоритмов и методов решения производственных и повседневных задач, а также алгоритмов составления заниматель¬ ных игр, доступных самому широкому кругу пользователей. Как правило, в задачах можно выделить цель, во имя которой их решают, и указать условия, т. е. ограничения, при которых они должны быть решены. Такими задачами занимается раздел мате¬ матики — математическое программирование. По математическо¬ му программированию существует достаточно много литературы, однако все книги часто ориентированы на математиков, в крайнем случае на студентов экономических вузов, изучивших дифференци¬ альное и. интегральное исчисления. Книги, которая была бы до¬ ступна инженеру, владеющему математикой в объеме техническо¬ го вуза, нет. Восполнить этот пробел предназначена данная кни¬ га. Она рассчитана на самый широкий круг пользователей персо¬ нальных компьютеров и микрокалькуляторов, на любителей за¬ нимательных задач по математике. Для понимания всех разделов книги достаточно знаний математики в объеме первых двух кур¬ сов вузов, а для понимания алгоритмов решения задач и этого не требуется. По ходу изложения теоретических основ решения задач математического программирования даны определения ряда поня¬ тий, необходимых для понимания излагаемых алгоритмов: квадра¬ тичные формы, скалярное произведение векторов, частные произ¬ водные, градиент, производная по направлению, линейная зави¬ симость векторов и т. п. В гл. 1 рассказано об истории появления математической дис¬ циплины — математического программирования, а также обсуж¬ дены основные особенности задач на условный экстремум, решае¬ мых в этом* разделе математики. Приведены простейшая оптими¬ зационная задача и графические методы решения задач матема¬ тического программирования. В гл. 2 рассмотрен наиболее простой и изученный раздел ма¬ тематического программирования — линейное программирование. 3
Здесь же рассмотрены и частные случаи линейного программиро¬ вания — транспортные задачи и задачи целочисленного линейного программирования. Приведены примеры решения задач линейного программирования из различных областей знания. В гл. 3 описаны сетевые задачи. На конкретных примерах рассмотрены сетевые задачи о минимальной стоимости (о крат¬ чайшей сети) и о максимальном потоке, показаны их особенности и преимущества по сравнению с задачами линейного программи¬ рования. В гл. 4 рассмотрены задачи, решаемые с помощью динамиче¬ ского программирования. Показана связь динамического програм¬ мирования с другими разделами математического программиро¬ вания. В гл. 5 рассказано о некоторых направлениях развития мето¬ дов решения задач математического программирования: о пара¬ метрическом программировании; о решении многопродуктовых се¬ тевых задач; об одном из эвристических методов решения сетевых задач — о методе штрафных (барьерных) функций. В книге не излагаются численные методы безусловной и ус¬ ловной оптимизации, применяемые в математическом программи¬ ровании, несмотря на большую их важность в изучении этой ма¬ тематической дисциплины. Читатель может самостоятельно позна¬ комиться с численными методами, поскольку они хорошо описа¬ ны в литературе. В задачах математического программирования всегда рассмат¬ ривают функции многих переменных. Поэтому решение задачи об экстремуме имеет несколько координат, а рассчитываемые вели¬ чины являются векторами. Как правило, векторный смысл рас¬ сматриваемых величин ясен из контекста задач. Но в ряде слу¬ чаев, когда, по нашему мнению, следовало подчеркнуть, что мы имеем дело с векторами, последние выделены полужирным шриф¬ том. Математические символы объяснены по тексту и дан их спи¬ сок. Чтобы познакомить читателя с разнообразными формами за¬ писи решения в линейном программировании, в процессе изложе¬ ния материала приведены различные формы симплекс-таблиц. 4
Глава 1. ВВЕДЕНИЕ В МАТЕМАТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ 1.1. Общие положения математического программирования Деятельность отдельных людей и коллективов, как правило, связана с выбором таких решений, которые позволили бы получить некие оптимальные результаты — затратить минимум средств на питание семьи, достичь максимальной прибыли предприятия, до¬ биться наилучших показателей в спорте и т. д. Но в каждой кон¬ кретной ситуации надо считаться с реальными условиями, накла¬ дываемыми на решение данной задачи. При расчете затрат на пи¬ тание следует приобретать те продукты и в таком количестве, чтобы организм получил необходимые ему жиры, белки, углево¬ ды и т. п.; достигнуть максимальной прибыли предприятия нель¬ зя, не учитывая реальных запасов сырья, его стоимости и целого ряда других факторов; для достижения наилучших показателей в спорте необходимо правильно организовать тренировку спортсме¬ нов, оптимально использовать имеющиеся технические средства и площадки, правильно сформировать команду. Но чтобы что-то рас¬ считать, надо формализовать задачу, т. е. составить математиче¬ скую модель изучаемого явления, поскольку математические ме¬ тоды можно применять не непосредственно к изучаемой деятель¬ ности, а лишь к математическим моделям того или иного круга явлений. Результаты исследований математических моделей пред¬ ставляют практический интерес только тогда, когда модели адек¬ ватно отображают реальные ситуации, достаточно совершенны. Приведенные примеры позволяют выделить в наших моделях цель и сформулировать целевую функцию (оптимизационный кри¬ терий): минимум затрат, максимум прибыли, наилучшие спортив¬ ные достижения — и условия-ограничения: необходимое количест¬ во жиров, белков и углеводов; запасы сырья и его стоимость; воз¬ можности спортивных площадок и различные варианты состава команд. Задача отыскания минимума некоторой функции f (х) эквивалентна задаче отыскания максимума той же функции, взя¬ той со знаком минус (рис. 1.1) и наоборот. Поскольку принципи¬ альных отличий в отыскании минимума и максимума не сущест- 5
вует, будем говорить об оп¬ тимальном (optimum — наи¬ лучший) значении целевых функций. Итак, сформулиро¬ ванные в реальных задачах требования могут быть вы¬ ражены количественными критериями и записаны в X виде математических выра,- жений, т. е. мы можем пере¬ вести условие задачи на ма¬ тематический язык и полу¬ чить так называемую мате¬ матическую формулировку му_ задачи. Процесс формирова¬ ния реальной математиче¬ ской задачи и последующего ее решения достаточно сложен. Его можно представить в виде сле¬ дующих этапов. • 1. Изучение объекта. Анализ особенностей функционирования объекта; определение факторов, оказывающих влияние (их числа и степени влияния); получение характеристик объекта в различных условиях; выбор оптимизируемого критерия. 2. Описательное моделирование. Установление и словесная фиксация основных связей и зависимостей между характеристи¬ ками процесса или явления с точки зрения оптимизируемого кри¬ терия. 3. Математическое моделирование. Перевод описательной мо¬ дели на формальный математический язык. Все условия записыва¬ ют в виде соответствующей системы равенств и неравенств, а критерий оптимизации — в виде функции. После того как задача записана в математической форме, ее конкретное содержание пе¬ рестает нас интересовать до проведения содержательного анализа получаемого решения. Дело в том, что различные по своему со¬ держанию задачи часто можно свести к одной и той же формаль¬ ной математической записи. 4. Выбор или создание метода решения. Исходя из полученной математической записи задачи выбирают, либо известный метод решения, либо некую модификацию известного метода, либо раз¬ рабатывают новый метод решения. Под допустимым решением понимают такой набор значений искомых величин (переменных), который удовлетворяет поставленным условиям-ограничениям за¬ дачи. Решением задачи будет то решение из множества допусти¬ мых решений, при котором целевая функция достигает своего наи¬ большего (наименьшего) значения. 5. Выбор или написание программы для решения задачи на ЭВМ. Задачи, содержащие целевую функцию и условия-ограниче¬ ния и описывающие поведение реальных объектов,, как правило, имеют большое число переменных и большое число зависимостей 6
(уравнений связи) между ними. Поэтому в разумные сроки они могут быть решены только с помощью ЭВМ. Программа для ЭВМ реализует выбранный метод решения задачи. 6. Решение задачи на ЭВМ. Необходимую информацию для решения задачи вводят в память ЭВМ вместе с программой. В соответствии с программой ЭВМ обрабатывает введенную чис¬ ловую информацию, получает решение и выдает его пользователю в заданной им форме. 7. Анализ полученного решения. Анализ решения бывает фор¬ мальным и содержательным. При формальном (математическом) анализе проверяют соответствие полученного решения построен¬ ной математической модели, т. е. проверяют, правильно ли вве¬ дены исходные данные, правильно ли функционируют программа, ЭВМ и т. д. При содержательном анализе проверяют соответствие полученного решения тому реальному объекту, который моделиро¬ вали. В результате содержательного анализа в модель (словесную и математическую) могут быть внесены изменения, затем весь рассмотренный процесс повторяют. Только после полного завершения анализа модель можно ис¬ пользовать для расчета. Чтобы подчеркнуть важность содержа¬ тельного анализа, приведем следующий пример. Когда впервые ре¬ шали задачу о питании, то в качестве фактора оптимизации взя¬ ли минимум затрат, а в условие-ограничение включили только требование по калорийности пищи. Решение задачи было тако¬ вым: питаться следует уксусом, который входит в состав всевоз¬ можных продуктов питания — и калорийность обеспечена, и сто¬ имость минимальна. Построим математическую модель задачи о питании. Пусть хозяйка собирается в магазин за продуктами. Предпо¬ ложим, что в рацион семьи входят три различных питательных вещества и требуется их соответственно не менее Ьь Ь2, Ь3 еди¬ ниц. В магазине продается пять различных продуктов по цене с2і ..., с5. Единица продукта і-го вида содержит aij j-ro пита¬ тельного вещества, т. е., например, а^ показывает, что в единице второго продукта третьего питательного вещества будет а23 еди¬ ниц. Какое количество продуктов каждого вида х2, х3, х4і х5 следует купить хозяйке, чтобы стоимость продуктов была мини¬ мальна, но в то же время рацион семьи содержал все необходи¬ мые питательные вещества в нужном количестве? Целевая функция этой задачи — минимизировать по х2, х3, х4, х5 стоимость продуктов: qXi -г с2х2 4- с3х3 4- с4х4 4- е5х5 = V -> min . " Хі х6 Условия-ограничения задачи: количество первого питательного ве¬ щества должно быть не менее т. е. 4“ ^21-^2 ! #зіХ3 4" Я41Л4 "т ^51X5 5 ЯцХі bj 1
Аналогично для других питательных веществ получим неравенства 5 „ Ді2хі + а22х2 + я32х3 + а42х4 + я52*5 = 2 йі2Хі ’ 4=1 5 "Ь ^23^2 + a33X3 ”1” ^43X4 + #5з -^5 = #і3^і ^3 • 4=1 Очевидно, что количество продуктов > 0 ; х2 > 0 ; х3 > 0 ; х4 > 0 ; х5 > 0 . Разработкой методов решения задач, содержащих целевую функцию и условия ограничения (задачи на условный экстремум), занимается раздел математики — математическое программиро¬ вание. Математическое программирование — математическая дисцип¬ лина, посвященная теории и методам решения задач о нахожде¬ нии экстремумов функций на множествах, определяемых линей¬ ными и нелинейными ограничениями в виде равенств и нера¬ венств. Название «математическое программирование» связано с тем, что целью решения задач является выбор программы действий. Отдельные задачи математического программирования и мето¬ ды их решения известны давно. Так в числе старинных русских задач по математике есть следующая: сколько надо взять бабе на базар для продажи живых гусей, уток и кур, чтобы выручить как можно больше денег, если можно взять товар весом не более Р кг; причем известно, что #і — вес одной курицы, а2 — вес одной утки, #3 — вес одного гуся, Сі — стоимость одной курицы, с2 — стоимость одной утки, с3 — стои¬ мость одного гуся. Пусть Хі, х2, хз — число соответственно кур, уток и гусей, взятом бабой для продажи. Целевая функция в этой задаче — максимальная стоимость птицы: з Сіхі ^2Х2 "Т" % срсі —> max z=i Х1 ’ *2 ’ Хз ’ Условие-ограничение — вес товара, который может взять баба: з chxi + а2х2 + а3х3 = J < Р . 4=1 Среди старинных задач по математике встречается задачу о Кенигсбергских мостах, сформулированная и решенная известным математиком Леонардом Эйлером в 1736 г.: можно ли поочередно обойти все семь мостов города Кенигсберга, соединяющих райо¬ ны этого города с островом на реке Прегель, пройдя по каждо¬ му мосту только один раз. Как мы увидим дальше, это тоже зада¬ ча математического программирования. 8
. Принципиальные результаты теории оптимизации, явившейся основой математического программирования, были получены еще в период становления математического анализа. В этой связи сле¬ дует отметить теорему французского математика П. Ферма (1601 —1665 гг.) о необходимом условии локального экстремума в безусловной задаче оптимизации и исследования другого фран¬ цузского математика Ж. Лагранжа (1736—1815 гг.) в теории ус¬ ловных экстремумов, указывающие необходимые условия экстре¬ мума в задаче оптимизации при наличии ограничений в виде ра¬ венств. Ж. Лагранж предложил метод решения задач на условный экстремум (1797 г.), который заключается в сведении этих задач к задачам на безусловный экстремум вспомогательной функции— функции Лагранжа. Сам метод получил название — метод (неоп¬ ределенных) множителей Лагранжа. Функцию Лагранжа приме¬ няют как при исследовании задач вариационного исчисления, так и задач математического программирования. Естественное развитие методов математического анализа, по¬ священных определению точек экстремумов функций, привело к таким математическим дисциплинам, как вариационное исчисле¬ ние и математическое программирование. Вариационное исчисле¬ ние— математическая дисциплина, занимающаяся отысканием эк¬ стремальных (наибольших и наименьших) значений функциона¬ лов — переменных величин, зависящих от выбора одной или не¬ скольких функций. Одной из первых задач вариационного исчис¬ ления была знаменитая задача о брахистохроне И. Бернулли (1696 г.): определить форму кривой, лежащей в вертикальной плоскости, по которой тяжелая материальная точка, двигаясь под действием одной только силы тяжести и не имеющая начальной скорости, перейдет из верхнего положения в нижнее за минимум времени. Эта задача сводится к отысканию функции z/(x), до¬ ставляющей минимум функционалу Т(у) = ( ^yldx)-dx а У 20 у(х) где а и b — абсциссы верхней и нижней точек. Несмотря на столь ранние истоки математического программи¬ рования, его развитие относится к концу 30-х годов нашего сто¬ летия. Математическое программирование развивалось как метод решения задач управления и планирования, а также в связи с возникшими в 50-е годы разделом математики «исследование операций» и совокупностью методологических средств, называе¬ мых системным анализом. Наиболее разработанным разделом математического програм¬ мирования является линейное программирование, содержащее те- ориюі и методы решения условных экстремальных задач, в кото¬ рых критерии оптимальности линейно зависят от неизвестных, а ограничения — линейные равенства и неравенства. Развитие ли¬ нейного программирования тесно связано с задачами управления и планирования. Первые публикации по линейному программиро¬ 9
ванию принадлежат советскому ученому Л. В. Канторовичу («Ма¬ тематические методы в организации и планировании производст¬ ва». ЛГУ, 1939, с. 67), удостоенному в 1975 г. совместно с аме¬ риканским ученым Т. Купмансом Нобелевской премии за вклад в теорию оптимизации распределения ресурсов. Математическое программирование стало бурно развиваться наряду с развитием вычислительной техники и применением ЭВМ в научных исследованиях. Появление быстродействующих вычис¬ лительных машин создало мощные предпосылки для автоматиза¬ ции многочисленных задач управления и стимулировало разработ¬ ку специальных новых математических методов, позволяющих сводить решение задач управления и планирования к последова¬ тельности автоматически выполняемых операций в соответствии с исходной информацией,— математического, в основном линей¬ ного программирования. Методы математического программирования применялись и од¬ новременно развивались во время второй мировой войны для пла¬ нирования военных операций. Еще до начала второй мировой вой¬ ны методы анализа военных систем с использованием математи¬ ческого программирования стали применяться военными специа¬ листами в Великобритании, а затем и в других странах. В США и Канаде были созданы специальные подразделения, занимавши¬ еся анализом военных операций. В 1938 г. в США был введен термин «исследование операций» для характеристики рода дея¬ тельности необычной исследовательской группы, созданной по инициативе Air Ministry Research Station и выполнявшей работы по анализу военных систем, в частности решавшей задачи опти¬ мального использования радиолокационных установок в общей системе обороны страны. Этот анализ являлся основой для приня¬ тия командованием соответствующих решений. Впоследствии исследование операций сформировалось в науч¬ ное направление. Исследование операций — научный метод выработки количест¬ венно обоснованных рекомендаций по принятию решений. Описание всякой задачи исследования операций включает за¬ дание компонентов (факторов) решения, налагаемых на них ог¬ раничений и системы целей. Каждой из целей соответствует це¬ левая функция, заданная на множестве допустимых решений, значения которой выражают меру осуществления цели. Среди задач исследования операций выделяются те, в которых имеется одна целевая функция, принимающая численные значе¬ ния. Это и есть задачи математического оптимального программи¬ рования, т. е. математическое программриование — раздел науки об исследовании операций. Задачи с несколькими целевыми функциями или с одйой целевой функцией, но принимающей вектор¬ ные значения или значения еще более сложной природы, называ¬ ют многокритериальными. Они решаются путем сведения к зада¬ чам с единственной целевой функцией либо на основе использова¬ ния теории игр. 10
Задачи исследования операций классифицируют и по их тео¬ ретико-информационным свойствам. Если субъект в ходе приня¬ тия решения сохраняет свое информационное состояние, т. е. ни¬ какой информации не приобретает и не утрачивает, то принятие решения можно рассматривать как мгновенный акт. Соответст¬ вующие задачи называются статическими. Напротив, если субъект в ходе принятия решения изменяет свое информационное состоя¬ ние, получая или теряя информацию, то в такой динамической за¬ даче обычно целесообразно принимать решение поэтапно (много¬ шаговые решения). Значительная часть теории динамических за¬ дач исследования операций входит в динамическое программиро¬ вание. С конца 40-х годов сфера приложения исследования операций стала охватывать разнообразные стороны человеческой деятель¬ ности. ІИсследование операций используется для решения как чи¬ сто технических (особенно технологических), так и технико-эко¬ номических задач, а также задач управления на различных уровнях. Лишь отдельные задачи исследования операций поддаются аналитическому решению и сравнительно немногие — численному решению вручную. Поэтому рост возможностей исследования опе¬ раций тесно связан с прогрессом вычислительной техники. В настоящее время издается большое число научных журналов по исследованию операций, первый из которых был издан в 1950 г. В 1957 г. в Лондоне был созван первый конгресс Между¬ народной Федерации обществ исследования операций (Internatio¬ nal Federation of Operations Research Societies' —IFORS); эти конгрессы проводят’каждые три года. С 50-х годов нашего столетия для обоснований решений по сложным проблемам в системах политического, социального, во¬ енного, экономического, научного и технического характера стала применяться совокупность методологических средств, получившая название системный анализ. Системный анализ используют для решения таких задач, как распределение производств, мощностей между различными видами изделий, определение будущей потреб¬ ности в новом оборудовании и в рабочей силе той или иной ква¬ лификации, прогнозирование спроса на различные виды продук¬ ции, а также при решении проблем, связанных с развитием и тех¬ ническим оснащением вооруженных сил, освоением космоса и т. д. Системный анализ опирается на ряд прикладных математиче¬ ских дисциплин и разделов, в частности на исследования опера¬ ций. Когда в задаче системного анализа имеется одна четко вы¬ раженная цель, степень достижения которой можно оценить на основе одного критерия, испольуют методы математического про¬ граммирования. Первое применение системного анализа в военном деле относят к истории древних веков, когда правитель Сиракуз обратился к Архимеду с просьбой помочь осажденному городу прорвать осаду римлян. И
Отдельные исследования по системному анализу проводились в конце XIX и начале XX веков, а также в первую мировую вой¬ ну. Так, в 1886 г. военное командование прибегло к системному анализу чтобы принять решение относительно производства 12-дюймовых орудий (1 дюйм —2,54 см), заряжающихся с ка¬ зенной части и предназначенных для использования в береговой артиллерии. Необходимо было сделать выбор между орудием, вы¬ пускаемым фирмой Krupp, и орудием нового образца американ¬ ского производства. Во время первой мировой войны с помощью системного анализа разрабатывались, например, стратегические планы борьбы с подводными лодками. Но эти работы не имели практического выхода и были неиз¬ вестны. Поэтому во время второй мировой войны работы при¬ шлось начинать заново. Системный анализ (и его часть — иссле¬ дование операций) во время второй мировой войны применяли в основном в области тактики. Например, для того, чтобы решить, что использовать в первую очередь в качестве радиолокационных помех — пассивные или активные помехи; как определить наибо¬ лее эффективные цели для бомбометания; какие из способов об¬ наружения подводных лодок являются наилучшими и т. п. После войны центр тяжести исследований сместился с такти¬ ческих задач на задачи планирования, так как возникла необхо- мость создания новых видов оружия. Затем область применения методов исследования операций расширилась настолько, что ох¬ ватила и военно-политические доктрины государств. Примерами задач, решаемых с помощью методов исследования операций и использующих математическое программирование, мо¬ гут быть следующие: 1) разработка методов управления людьми и техникой, обес¬ печивающих достаточно высокий уровень эффективности деятель¬ ности людей; 2) разработка методов использования имеющихся в распоря¬ жении людей техники, обеспечивающей выполнение поставленной задачи с минимальными затратами или с максимальным эффек¬ том; 3) определение техники, материалов, которые необходимо раз¬ работать, создать, приобрести и развернуть в рамках общей стра¬ тегии деятельности людей. Первые две задачи наиболее полно допускают применение формальных методов, которые являются наиболее продуктивны¬ ми. Методы, используемые при принятии решений и распределе¬ нии ресурсов в различных областях науки и техники (экономике, торговле и промышленности—управление запасами, назначение ■персонала, составление маршрутов и т. п.)—практически не от¬ личаются и интенсивно развиваются в последние десятилетия. Важным классом задач математического программирования являются так называемое сетевые (потоковые) задачи, в терми¬ нах которых могут быть сформулированы задачи линейного про¬ граммирования. 12
Рассмотрим в качестве примера так называемую транспорт¬ ную задачу, являющуюся одной из первых потоковых задач, ре¬ шенную в 1941 г. Хитчкоком Ф. Л. Пусть имеется два завода и три склада. Заводы производят соответственно и s2 единиц продукции, возможности складов — di; d2\ d3 единиц; Si + s2=di + d2+d3. Задача состоит в том, чтобы минимизировать затраты на перевозку продукции с заводов на склады. Пусть хц — объем продукции, который необходимо перевезти с f-го завода на /-й склад и сц — стоимость перевозки единицы продукции с £-го завода на /-й склад. Тогда целевая функция за¬ дачи — стоимость перевозки: ♦ 2 3 С11*11 + ^12*12 H” Cl 3*13 H- ^21*21 H” ^22*22 “Ь ^23*23 = i = lf=l Условие, что вся продукция будет увезена с каждого завода: 8 *11 + *12 *13 =: 'Ѵ *1/ = » min. 3 *21 + *22 + *23 = 2 Х<2}' = S2 * /=1 Эти два равенства можно записать кратко: з 2х0‘ = $*' î і = 1,2 . Условие заполнения складов 2 ^хц = dj ; j = 1,3 і=1 Причем г=1,2; /=1,3. Эта модель может быть описана с помощью сети, если пред¬ положить, что узлами сети являются заводы и склады, а дуга¬ ми— имеющиеся для перевозки груза дороги (рис. 1.2). Сформу¬ лированная транспортная задача является частным случаем зада¬ чи поиска потока минимальной стоимости на сети. Сетевые зада¬ чи применяют при проектировании и совершенствовании больших и сложных систем, а также при поиске путей их наиболее рацио¬ нального использования. В первую очередь это связано с тем, что с помощью сетей можно довольно просто построить модель си¬ стемы. Кроме того, расширение области использования сетей свя¬ зано с тем, что методы сетевого анализа позволяют: 1J строить модель сложной системы как совокупность простых систем; . 2) составлять формальные процедуры для определения каче¬ ственных характеристик системы; 13
Рис. 1.2. Сеть для тран¬ спортной задачи 1) сетевые, модели ществующие системы; 3) указывать механизм взаимодействия компонентов управляющей системы с целью описания последней с помощью ее основ¬ ных характеристик; 4) определять, какие данные необходи¬ мы для исследования системы; 5) проводить исследования управляющей системы и составлять предварительное рас¬ писание работы ее компонентов. Основное достоинство сетевого подхода заключается в том, что он может быть ус¬ пешно применен к решению практически любых задач, когда исследователь может точно построить сетевую модель. Преиму¬ щества использования сетевых моделей можно сформулировать следующим обра¬ зом: могут точно описывать многие реально су- 2) для людей, не занимающихся научной работой, сетевые мо¬ дели являются, вероятно, более понятными, чем любые другие мо¬ дели, используемые в исследовании операций. Пользователю лег¬ че понять сетевую диаграмму, чем абстрактные формулы; 3) сетевые алгоритмы позволяют находить наиболее эффектив¬ ные решения при изучении некоторых больших систем; 4) по сравнению с другими сетевые алгоритмы нередко позво¬ ляют решать задачи со значительно большим числом переменных и ограничений. Это становится возможным из-за того, что при этом часто удается ограничиться изучением лишь части рассмат¬ риваемой системы. Сетевой анализ берет начало с упоминавшейся задачи Эйлера о мостах Кенигсберга. Спустя более века Джеймс Клерк Макс¬ велл и Густав Роберт Кирхгофф, исследуя электрические цепи, сформулировали некоторые основные принципы сетевого анализа. В начале XX века европейскими и американскими инженерами были разработаны методы расчета наибольшей пропускной спо¬ собности телефонных линий и коммутаторов, позволяющие обес¬ печить гарантированное обслуживание определенного числа або¬ нентов. В' связи с развитием вычислительной техники стали про¬ водиться более глубокие исследования построенных моделей и поиск путей реализации алгоритмов на ЭВМ. В настоящее время трудно назвать область практической и научной деятельности, где бы не применялись методы математи¬ ческого программирования: планирование производства; управле¬ ние запасами полезных ископаемых и трудовыми ресурсами; пла¬ нирование и размещение объектов; техническое обслуживание- оборудования; планирование работ над проектами и календарное планирование; построение систем — вычислительных, информаци¬ онных, городской сферы обслуживания, здравоохранения, э,лектро- 14
энергетических, военных, транспортных; организация туризма, спорта и развлечений и т. д. Поэтому наряду с термином решение в математическом программировании употребляются в этом же смысле термины .план, стратегия, управление, поведение. 1.2. Общая запись задачи математического программирования и ее виды Из описанных здесь примеров видно, что задача математиче¬ ского программирования должна содержать некую целевую функ¬ цию, оптимум 'которой следует определить, и систему равенств и неравенств, описывающих условия-ограничения задачи. Общая за¬ дача математического программирования состоит в определении вектора х* с координатами хі, хі, ... ,х„ , который является реше¬ нием задачи: оптимизировать f (,Х1 , Х2 > • • • > хп) (1*0 при ограничениях g1(x1,x2,... ,х„) > 0 ; g2 (xt, х2,..., х„) > 0 ; (1.2) gm (хх, х2,..., хп) > О ; й1(х1,х2,...,х„) = 0 ; ..., хп) = 0 ; (1.3 hp (%і, х2,..., хп) = 0 . Используем понятие вектора как упорядоченной совокупно¬ сти п действительных чисел х= {хь х2, —, хп} (в отличие от сво¬ бодного вектора, известного в геометрии,— направленного отрез¬ ка, который можно переносить в пространстве параллельно его первоначальному положению). Тогда выражения (1.1)—(1.3) можно записать в более компактной форме: оптимизировать f(х) при ограничениях g, (х) > 0 ; і 1, m ; h} (х) = 0 ; і = 1, р . Текущие индексы і и / пробегают все целочисленные значения от 1 соответственно до m и р. Кбординаты вектора х часто необходимо записывать не в виде строки, а в виде столбца. Для этого используется операция транс¬ портирования — элементы строки становятся соответствующими 15
элементами столбца, и наоборот. Обозначается эта операция ин¬ дексом «т»: Л1 \ \7__ Х2 \ (Х^ , %2 » • • • » ^п) I * I * / I • I / Общая задача математического программирования разбивается на задачи, названия которых определяются видом функций, кото¬ рые необходимо оптимизировать и которые входят/ів условия-огра¬ ничения, типом переменных задач, алгоритмом решения. Если функции f(x), £/(х), й/(х) в выражениях (1.1) —(1.3) линейны, то полученную задачу называют задачей линейного программиро¬ вания (например, рассмотренные ранее задача о питании и транс¬ портная задача). Если хотя бы одна из функций f(x), gi(x), hf(x) нелинейна, то (1.1) — (1.3) называют задачей нелинейнего программирования. Многие задачи, в свою очередь, разбивают на подмножества. Так, если f(x) является квадратичной функцией, а ограничения линей¬ ны, то получаем задачу квадратичного программирования (более точно f(x) должна быть квазиопределенной квадратичной фор¬ мой) *. . В сепарабельном программировании целевая функция f(x) представляет собой сумму функций, различных для каждой пере¬ менной. Условия-ограничения здесь могут быть как линейными, так и нелинейными, но все недиагональные элементы матрицы, со¬ стоящей! из вторых частных производных любой функции задачи, равны нулю. Если координаты искомого вектора х являются только целы¬ ми числами, то получаем задачу целочисленного программирова¬ ния (линейного или нелинейного). 1.3. Некоторые сведения об экстремуме функции, частных производных, градиенте и производной по направлению Из курса математики читателю известны простейшие задачи на отыскание точек максимума или минимума функции одной пере¬ менной. Функция ÿ = f(x), определенная в точке Хо, достигает максимума (минимума) в окрестности точки х0, если для всех точек X этой окрестности удовлетворяется неравенство f(x)^f(^o). Максимум и минимум функции объединяют одним названием экстремум. Как правило, точка Хо — внутренняя1 точка естествен¬ ной области определения функции f(x), и экстремум называют внутренним. Если существует производная f' (х) в точке Хо, то функция f (х) может иметь в точке х0 внутренний экстремум лишь в том случае, когда при х = х0 производная f'(xo)=O {необходи¬ мое условие экстремума). Экстремум может быть и в тех точ¬ * Часть определений дана в § 1.3. 16
ках Хо, где производная f' (xq) не существует. Но выполнение не¬ обходимого условия еще не означает, что в точке х0 будет экстре¬ мум. Для того, чтобы в точке Хо был экстремум, производная Г (х) в окрестности точки х0 при переходе через х=х0 должна ме¬ нять свой знак с плюса на минус в точке максимума и с минуса на плюс в точке минимума. Можно применить и другой признак: если в точке Хо первая производная f'(xo)=0 и существует вто¬ рая . производная f"(xo), то в точке х0 будет максимум при f"(xo)<0 и минимум при f" (Хо)>0. В общем случае, если существуют производные от f (х) до n-го порядка включительно и, если f' (х0) =...=f(n-1) (х0) =0 и f(n) (хо) =#0, то функция f(x) имеет в точке х0 максимум при п четном и f(n^(xo)<O и минимум при п четном и f(n)(xo)>O. Ес¬ ли п нечетно, то функция f(x) в точке х0 не имеет ни минимума, ни максимума, а имеет точку перегиба. Дадим несколько определений, которые потребуются в даль¬ нейшем. Действительная функция f(x), определенная при х=х0, имеет в точке Хо (локальный) максимум или (локальный) минимум f(xo), если существует такое положительное число ô, что при всех приращениях Дх независимого переменного х, равных х—Хо, для которых выполняется неравенство 0< |Дх| <ô и существует значе¬ ние /(хо+Дх),.приращение данной функции соответственно Л f = f(x0 4- Дх) —/(х0) < 0 или ^f = Kxo -г Дх) —/(х0) > 0 . Если в каждом из этих.случаев выполняются нестрогие нера’ венства, то говорят, что функция f(x) имеет в точке хо нестрогий максимум (минимум). Локальный (максимум) минимум называют внутренним (мак¬ симумом) минимумом или граничным (максимумом) минимумом, если соответственно точка х0 является внутренней или граничной точкой области определения функции f (х). В формулировке задачи должна быть точно указана область определения функции f(x). Например, функция fi(x)=x при —оо<х<оо не имеет максимума, а функция fï(x)=x при х<1 имеет при х=1 граничный максимум. Если неравенства f (х) <f (х0) [f(x) >f (х0)] выполняются для любой точки X, принадлежащей области определения функции f(x), то говорят о глобальном максимуме (минимуме) функции f (х) в точке х0. Аналогичные определения справедливы для функции многих переменных. • Функцию f(x), имеющую в данной точке х=х0 производную, называют дифференцируемой в этой точке; функцию, имеющую производную во всех точках некоторого промежутка (а, &), назы¬ вают дифференцируемой в этом промежутке. Функцию многих переменных, имеющую полный дифференци¬ ал (в данной точке, области), называют дифференцируемой (в 17
этой точке, области). Необходимое условие дифференцируемости функции многих переменных — наличие частных производных первого порядка (в точке, в области). Достаточные условия диф¬ ференцируемости функции многих переменных — существование и непрерывность всех частных производных первого порядка" (в точке, в области). Числовую функцию f(x) одного векторного аргумента х= = {*і, х2, .... *п} вида = 22 ai,'XiXj 2аіі х2‘+2 2 ai'XiXj ’ »=!/=! і=1 1«</<я где ац — элементы симметричной матрицы (квадратной таблицы чисел) y4 = ||ai/||nXn порядка п, аі/^ац, называют квадратичной формой п переменных. Квадратичную форму f(x) называют положительно (отрица¬ тельно) определенной, если для любого ненулевого вектора х вы¬ полняется неравенство f(x)>0 (f(x)<0). Такие формы объединяют общим названием — знакоопределен¬ ные. Если же имеется ненулевой вектор х, для которого /(х)=0, форму называют квазизнакоопределенной. Квадратичную форму называют знакопеременной, если суще¬ ствуют такие векторы Хі и х2, что f (хі)>0, f (х2)<0. Для наглядного представления поведения функции y=f(x) строят график функции. Если независимую переменную х (аргу¬ мент) и зависимую переменную у рассматривать как декартовы координаты на плоскости, то действительная функция y=f(x) действительного переменного х изобразится кривой — графиком функции у от X. Для функции многих переменных y = f(xb х2, ..., хл) упорядо¬ ченному множеству значений независимых переменных хь х2, ..., хп ставят в соответствие значения переменного у. Множество значений хь х2, ..., хп, для которых определено соотношение y=f (хь*2,...,*л), есть область определения функции f (хьх2,..., хл). Графиком функции многих переменных является поверхность для функций двух переменных и гиперповерхность — для больше¬ го числа переменных. Чтобы представить функцию п переменных, вводятся понятия линий и поверхностей уровня. Это геометриче¬ ское место точек, в которых функция принимает одно и то же зна¬ чение. Уравнение поверхности уровня имеет вид ./(хі, х2, ..., хл) = = С. Давая константе С различные значения, получаем семейство поверхностей уровня, определяющих поведение функции. Линии уровня вводятся для функции двух переменных: f(xb х2)=С. Се¬ мейство линий уровня дает возможность представить функцию двух переменных y=f(xb х2) на плоскости. Например, семейство линий уровня на географических картах даст представление и о морских глубинах, и о высоте горных хребтов. ’ 18
Для характеристики скорости изменения, функции многих пе¬ ременных относительно одной из переменных, например хц при фиксированных значениях остальных независимых переменных вводится понятие частных производных df/dxi. Частная производ¬ ная df/dxi (і=1, п) может быть найдена посредством дифферен¬ цирования функции f(xÏ9 х2, ..., хп) по Хі, если остальные п— 1 не¬ зависимых переменных рассматривать как постоянные параметры. Направление, в котором скорость возрастания функции многих переменных наибольшая, определяется вектором, называемым гра¬ диентом. Противоположное направление называют антиградиен¬ том. Градиент скалярной функции f(xb х2, хп) естц векторная функция точки и определяется как gradfsvf(x1(x2,...,x„) = + + + к, дхг дх2 дхп где V — знак градиента, набла; i, j, ..., k — единичные векторы (орты), направленные по координатным осям: і = {1, 0, ..., 0}; j = {0,l, ..., 0}; k={0,0, ..., 1}. Иногда применяется обозначение градйента в виде Vxf; индекс х у оператора набла показывает переменные, по которым определяется градиент. Другими словами, градиент скалярной функции — это вектор, координатами кото¬ рого являются частные производные заданной функции. Скорость изменения скалярной функции f(xb х2, ..., хп) в про¬ извольном направлении, задаваемом единичным вектором и= = cosa-i+cosp-j + ...+cosyk с направляющими косинусами cosa, cos0, cosy определяется производной по направлению (дейст¬ вительное число) df df , df п , , df — = — cos a cos p + . .. H -cosy. du dxr dx2 dxn Производная по направлению с градиентом скалярной функции Vf связана скалярным произведением df/du= (Vf, u). Скалярным произведением двух векторов а={аь а2, —, и Ь = {&і, Ь2, —, Ьп} называют действительное число, равное сумме произведений соответствующих координат векторов; (a, b) =ûi&i + +а2Ь2+... + апЬп или произведению длин этих векторов на косинус л угла между ними: (a, b) = |a| -|b| cos(a, b). Градиент Vf всегда ортогонален поверхности (линии) уровня функции f(xi, х2, хп). Действительно df/du= | Vf | • |u| cos (Vf, и). Производная по на¬ правлению касательной к поверхности (линии) уровня df/du рав¬ на нулю, I VfI =И=0; |и|#=0. Поэтому cos (Vf, u)=0; ( V f;u) = ^- ; Vf±u . Нам потребуются понятия линейной зависимости и независи¬ мости векторов. Векторы аь а2, ат называют линейно зависи¬ мыми, если найдутся такие действительные числа <ц, а2, —, ат, не все равные нулю, что линейная комбинация векторов аь а2, 19
am равна нулю: оцаі +-a2a24-...4-amam —0. Если же это равен¬ ство выполняется только тогда, когда все числа си, аг, а™ рав¬ ны нулю, то векторы аь а2, ...» am называют линейно независи¬ мыми. * Из определения линейной зависимости векторов следует, что если векторы линейно зависимы, то один из них может быть представлен в виде линейной комбинации остальных, и, обратно, если один из векторов есть линейная комбинация остальных, то векторы линейно зависимы. 1.4. Особенности нахождения оптимальных решений в задачах математического программирования В задачах математического программирования требуется най¬ ти так называемый условный экстремум (максимум или мини¬ мум) функции при наличии ограничений. Рассмотрим задачу ма¬ тематического программирования, в которой есть только ограни¬ чения в виде равенств. Пусть целевая функция задачи является функцией двух переменных: z = f(x) =f(хь х2). Ее аргументы свя¬ заны уравнением <р(хь х2)=0 (ограничения в виде неравенств от¬ сутствуют). Если функции z=f(xÏ9 х2) поставить в соответствие некоторую поверхность, то в данной задаче необходимо найти следующие точки: 1) принадлежащие линии пересечения поверх¬ ности z=f (хі, х2) и цилиндра с образующей, параллельной оси OZ, и с направляющей ф (х, х2)=0; 2) в которых функция z=f(%i, х2) принимает экстремальные значений (рис. 1.3). Как видно из рис. 1.3, точки условного экстремума А и В не совпадают с наи¬ большим или наименьшим значением функции z = f(xb х2) —с без¬ условным экстремумом функции f(xb х2). Если из уравнения свя¬ зи ф (хь х2)=0 можно выразить в явном виде одну переменную через другую, например х2 = ф(хі), то z=f(xb x2)=f[xb ф(хі)] становится функцией одной переменной Хі и ее безусловный экст¬ ремум отыскивается традиционными методами (приравниваем первую производную от f\[x^ ф(хі)] по Хі нулю). Безусловный экстремум функции f (хь ф(хі)) является условным экстремумом для функции f(xb х2) при ограничении ф(хь х2)=0. Однако выразить в явном виде из условий-ограничений необ¬ ходимую часть переменных, как правило, не удается. Лагранж предложил оригинальный метод нахождения услов¬ ного экстремума функции. Метод носит его имя. Пусть требуется решить следующую задачу: минимизировать f(xb х2) ..., хп) при ограничениях hj(x^. х2, ..., хп)=0; / = 1, р. По условию задачи со¬ ставляется функция Лагранжа п Нхі, х2,..., 5„) = f(X1, х2,..., х„) + 2 A.J ЩХ1, х2,..., х„) . /=і Здесь X/ — неизвестные постоянные множйтели, подлежащие определению (множители Лагранжа), т. е. требуется найти п не¬ известных хь х2, -, Хп и р множителей Лагранжа Xb À2, V .20
Xi Рис. 1.3. Геометрическая интерпретация метода Лагранжа Рис. 1.4. Область допустимых значений Хі и х2 Для рассматриваемого в начале параграфа примера Г(%1, х2) = /(%!, х^ + X ф (хг , Ха) . Точки, в которых возможен экстремум, находятся как реше¬ ние системы алгебраических уравнений, полученной приравнива¬ нием нулю частных производных от функции Лагранжа по иско¬ мым переменным (п уравнений) и включением в эту систему р ограничений-равенств. Метод Лагранжа сводит задачу отыскания условного экстремума функции f(x) к задаче отыскания безуслов¬ ного экстремума функции F(x, X). Ограничения-неравенства еще более усложняют задачу. Дело в том, что ограничения-неравенства задают область допустимых значений переменных. Например, пусть требуется оптимизировать некоторую функцию f(x) при ограничениях £і(х) = Xi — Х2 > 0 ; g2(x) = 1—X,—Х2>0 . Область допустимых значений переменных Хі и %2 в этой задаче есть пересечение области, лежащей «внутри» параболы Хі = х2 с кругом единичного радиуса, уравнение окружности которого имеет вид х? +%1 = 1 (рис. 1.4). Пересечение цилиндра, направляющей которого является гра¬ ница полученной области D, с поверхностью z=f(x) может да¬ вать самые разнообразные варианты. На рис. 1.5а—в показаны поверхности, полученные в результате пересечения цилиндра, на¬ правляющей которого служит граница области допустимых значе¬ ний переменных %і и х2, и поверхности, соответствующей целевой функции z=f(xb х2). На рис. 1.5а точка М безусловного экстре¬ мума функции z=f(xi, х2) является и точкой условного экстре¬ мума задачи. На рис. 1.56 точка М является уже граничной и 21
в ней целевая функция достигает своего наибольшего значения. На рис. 1.5в точка М не принадлежит области допустимых зна¬ чений переменных, а целевая функция имеет равные наибольшие значения по линиям ALB и АКВ (т. е. неясно, что же брать за решение задачи). Эти неоднозначные результаты получены даже в случае, когда поверхность целевой функции z=f(x) достаточ¬ но проста и обладает единственным (глобальным) максимумом. Наиболее полные результаты в задачах математического про¬ граммирования получены для выпуклых целевых функций, когда область допустимых значений является выпуклым множеством. Множество точек D называют выпуклым, если для любых точек Мх и М2, принадлежащих области D, отрезок Л4іЛ42 принадлежит множеству (области) D (рис. 1.6а). Другими словами, любая точка [Wi+(1—Х)М2] принадлежит области D для любого X, 0<Х<1, и для любых точек и М2, принадлежащих области D. Причем пересечение конечного числа выпуклых множеств вы¬ пукло. На рис. 1.66 показаны невыпуклые множества. Функцию f(M) называют выпуклой на непустом выпуклом множестве D, если для любых двух точек и Л42, принадлежащих области jD, и любого числа X, O^JX^l, справедливо неравенство ИХ М, + (1 - X) М2] < X дм,) 4- (1 - X) ДМ2) . 22
Рис. 1.6. Выпуклые (а) и невыпуклые (б) области (множества) Функцию f(M) называют строго выпуклой, если для 0<Х<1 и выполняется строгое неравенство f[ À М, + (1 - À) М2] < к f(M.) + (1 - X) ДМ2) . Геометрически выпуклая функция лежит над своими касательны¬ ми. Примером выпуклой функции является парабола. Сумма выпуклых на множестве D функций есть также выпук¬ лая на D функция. Функцию f(x) называют вогнутой на выпуклом множестве D, если функция —f(x) выпукла на D. Ограничения gft(x)>0; ï=l, m образует выпуклое множество D (выпуклую область D), если все функции g\(x) вогнуты. В математическом программировании выделяется важный класс задач — задачи выпуклого программирования: минимизировать f(x’) при ограниченяих gi(x)>0, і= 1, m, где f(x) — выпуклая функция, а все функции gz(x) — вогнуты, т. е. рассматривают выпуклые функции на выпуклых множествах. Задачи выпуклого программирования обладают важным по¬ ложительным свойством: локальные минимумы целевых функций являются одновременно глобальными (единственными). Очевидно, что решить подобную задачу проще (но не просто!), чем в случае, когда целевая функция f(x) и область D будут об¬ щего вида. 1.5. Необходимые и достаточные условия оптимума в задачах математического программирования В общем случае в задачах математического программирования ставится вопрос об отыскании локального минимума (максимума) целевой функции, т. е. такого значения х*, что для значений х, принадлежащих некоторой окрестности этого значения х*, вы¬ полняются неравенства f(x*)< f(x) Для строго минимума (макси¬ мума) и f(x*)<f(x) для нестрогого минимума (максимума). Как и для функций одной переменной, в задачах математического про¬ граммирования требуется сформулировать необходимые и доста¬ точные условия существования оптимума. Если в задаче матема- 23
Рис. 1.7. Положение градиента V f (х) 'в точке решения х* и в точке х, не являю¬ щейся решением задачи математического программирования (знаками « + » и «—> указано направление возрастания значений линий уровня) тического программирования множество D выпукло, а функция f(x) дифференцируема в точке x*^D, то градиент Vf(x*), если он отличен от нуля, составляет нетупой угол <р с вектором, на¬ правленным из X* в любую точку Xi^D. Другими словами, ска¬ лярное произведение (Vf(x*), Хі—х*)>0 (рис. 1.7). Для точки х, не являющейся решением задачи, всегда найдется такая точка хг, что фі будет больше л/2. В тех случаях, когда решение х* принадлежит внутренней об¬ ласти D, градиент Vf (х*) =0. Сформулированное условие является необходимым условием локальной оптимальности в задаче минимизации дифференцируе¬ мой функции на выпуклом множестве (для выпуклой задачи оно является и достаточным условием глобальной оптимальности). Для области D в виде параллелепипеда, когда at^Xi^bt, —co<ai<bi< + oo, 1=1, п, данное (необходимое) условие следу¬ ет понимать как л » 0 , если at < х* < bt , 0, если xi = atj= — œ ; 0 , если X* = bi + 00 • df(x*) дх. Здесь градиент «смотрит» внутрь области D. Чтобы определить координаты возможной оптимальной точки, надо из необходимых условий составить соответствующие системы уравнений и решить их. В общем случае для задачи вида f(x) —» min ; ' (1.4) gi(x) > 0 , і = 1 , m ; (1.5) hj{x) = 0 , j =~ГГр , (1.6) вводится функция Лагранжа L(x, и, X) = f(x) — jp utgi (x) + 2 hj(x), (1.7) /=і /=i где Ui(i=l, m), ‘ki(j=l, p)—множители Лагранжа, подлежащие определению наряду с координатами вектора х. Множители Лаг¬ 24
ранжа л/ для ограничений-равенств могут иметь любой знак, мно¬ жители Лагранжа и,- для ограничений-неравенств — неотрица¬ тельны. Если в задаче математического программирования (1.4) — (1.6) множество P, x^PczRn, выпукло,функцииf(x), gt(x), i = \,m выпуклы на Р и дифференцируемы в точке x*^.D, D = {х^Р| |g7(x)>0, i=l, т, hj(x)=O, j=1.t р}г функции h/(x), /=1, р линейны и при некоторых «*, X/* выполняются условия (ѴхЕ(х, и*, X*), X—х*)^0 при всех хеР и u*gi(x*) =0, і=1, то х* — (глобальное) решение этой задачи. Соотношения (ѴлЛ(х*, и*, X*) , X — х*) >0 (1.8) - при всех xœP, и* gi(x*) = 0 , і = 1 , т , (1.9) для задачи выпуклого программирования являются не только не¬ обходимыми, но и достаточными условиями существования реше¬ ния (условия Куна-Таккера) : а) если X* является внутренней точкой области P; x*ŒintP, то условие (1.8) эквивалентно V«L(x*, и*, Х*)=0; б) если область Р имеет вид параллелепипеда Р = {х € Rn I ak < хк < bk , k = 1, п|, где —oo<ak<bk< + °°, то соотношение (1.8) эквивалентно сле¬ дующему условию: . для любого k= 1, т = 0 , если ак < xk<Zbk ; > 0 , если Xk = акФ — со ; < 0, если x*k = Ьк т<= + оо . в) если Р учитывает условие неотрицательности части (s) пе¬ ременных и имеет вид Р = {х € Рл | xfc > 0 , k = 1, sj, где O^s^n, то условие (1.8) эквивалентно совокупности условий: ~(х*> и*, X*) > 0 , x*k~~(x*, и*, X*) = 0 , é=T7s ; ' дхк Q1.1U) — (х*, и*, X*) = 0 , k = s+ 1 , и.. dxk В отличие от методов отыскания оптимальных решений в за¬ дачах без ограничений-неравенств здесь появляется дополнитель- — (X*. и*, X*) 25
-Ѵху(Х*) Рис. 1.8. Связь направлений гра¬ диентов активных ограничений и антиградиента целевой функции в точке решения х* и в точке х, не являющейся точкой решения ное условие (1.9), которое назы¬ вают условием дополняющей не¬ жесткости: Щ g/x*) = 0 , і = 1 , пг. Это условие разделяет ограниче¬ ния-неравенства на активные, ко¬ торые в точке оптимума обраща¬ ются в нуль (gi(x*)=0, Л; и пассивные (gi(x*)=^=0, і=1, h, 1\ + І2 = нг). Для пассив¬ ных ограничений коэффициенты Лагранжа ut должны быть рав¬ ны нулю, при этом пассивные ог¬ раничения не оказывают своего влияния на решение х*. Рассмотрим случай, когда в функции Лагранжа присутствуют только ограничения-неравенства: gi(x) ^0t f=l, m. Тогда в точке минимума m Vxf(x*) + у Ui yxgi(X*) = О, т. е. антиградиент целевой функции является неотрицательной ли¬ нейной комбинацией градиентов функций, образующих активные ограничения в точке х* (рис. 1.8). На рис. 1.8 показано множество, образованное неравенствами gi(x)<0, §г(х)<0, ^з(х)с0. Здесь же в точках х* и х указаны направления градиентов активных ограничений и антиградиента целевой функции. Отсюда следует, что точкой оптимума не может быть точка X, так как в ней не выполняется условие того, что антиградиент /(х) есть положительная линейная комбинация гра¬ диентов активных ограничений. Решением является точка х*, где данное условие выполняется. w Мы рассмотрели некоторые условия существования решения, учтя производные первого порядка. Как и для функции одной пере- іменной, при анализе условий оптимальности можно рассматривать производные высших порядков (в частности второго). В задачах математического программирования сформулированы и доказаны условия оптимальности второго порядка, в которых оперируют вторыми частными производными от функции Лагранжа. Здесь мы их рассматривать не будем. В общем случае задачу математического программирования можно было бы решать по следующей схеме. 1. Запись задачи в канонической форме вида (1.4) — (1.6) и составление функции Лагранжа (1.7). 26
2. Составление системы условий, которые характеризуют ре¬ шение (определяют точки, где возможно существование оптималь¬ ного решения — стационарные точки): в развернутой форме за¬ писывают условия (1.8), (1.9), а также условия, накладываемые задачей на допустимые значения х и на множители Лагранжа. Например, для условия (1.10) полная система для определения стационарных точек имеет вид л-ё>0; Ê£(x,u,X)>0; xkd/- (х , и , X) = 0 Д = О; с*** dxk ~ (х , iz, л) = 0 , & == s -J- 1 ti • dxk , g,(x) > о ; U:g,(x) = 0 , і = ~l ; gz(x) = 0 , i = / -r 1 , m . 3. Решение полученной системы необходимых условий. Это удается сделать в аналитическом виде лишь в редких случаях. 4. ^ Если удалось получить решение системы необходимых ус¬ ловий — стационарные точки, надо провести исследование стацио¬ нарных точек для отбора среди них решений. Это тоже сделать непросто. Иногда^ проще провести непосредственное исследование поведения целевой функции в стационарной точке. На последних двух этапах полезно привлечение физических и геометричских соображений о возможном решении задачи мате¬ матического программирования. 1.6. Теория двойственности и недифференциальные условия оптимальности в задаче выпуклого программирования В задачах математического программирования (1.4) — (1.6) можно указать условия оптимальности, не прибегая к понятиям производных и градиентов, с помощью так называемой теории двойственности. Особенно плодотворен этот подход в задачах вы¬ пуклого программирования. Будем рассматривать функцию Лагранжа (1.7). Обозначим через f* точную нижнюю грань целевой функции задачи (1.4) — (1.6) на ее допустимом множестве D: f* = inf f(x). Точка x*œZ) . xqD является решением задачи (1.4) — (1.6) в том и только в том слу¬ чае, если f*=f(x*). Введем вектор у с координатами ut(r=l, m) и À/(/ = l, р). Вектор у* называется вектором Куна-Таккера задачи (1.4) — (1.6) , если при всех x^D m р f* < /(x) — 2 «’&(*) + = Цх, y*). i=l /=1 Любой задаче математического программирования можно по¬ ставить в соответствие так называемую двойственную задачу оп- 27
химизации.; Между прямой и двойственной задачами имеются по¬ лезные связи. Двойственной к задаче (1.4) —(1.6 ) называют задачу ср (у) -> max ; у 6 Y , где ср (z/) = inf Цх, и , X) = inf [f(x) — V uigi(x) -|- 'У К h Ах) ] ; X g D xgD 4x4 j j r=ü/EQ|cpÜ/)>-œ}. Исходную задачу называют прямой. Если целевую функцию в двойственной задаче <р(у)->тах заменить на —<p(y)->min, то можно утверждать, что задача, двойственная к произвольной за¬ даче математического программирования, всегда выпукла. Если в задаче математического программирования множество замкнуто и выпукло, функции f(x), gt(x), г=1, m непрерывны и выпуклы на D, функции Л/(х), / = 1, р, линейны или отсутствуют и решение прямой задачи конечно (f*>—оо), в частности она имеет реше¬ ние, то множество решений двойственной задачи непусто и совпа¬ дает с множеством векторов Куна-Таккера прямой задачи. При этом справедливо соотношение двойственности f*=y*, т. е. мини¬ мум целевой функции прямой задачи совпадает с максимумом це¬ левой функции двойственной задачи. Учитывая, что число пере¬ менных в двойственной задаче равно числу условий-ограничений в прямой задаче, в ряде случаев двойственную задачу решить проще. Получим необходимые и достаточные условия оптимальности в задаче выпуклого программирования на основе теории двойствен¬ ности. В этом! случае изменится только форма необходимых и до¬ статочных условий (не будут участвовать производные), но пред¬ посылки в обоих случаях одинаковы. Пара (х*, p*)œPxQ называется седловой точкой функции Л(х, у) на PXQ, если ' А(х*, у*)= minl>(x, g*) ; хсР Цх*, у*) = max Цх*, у) , . і/е Q т. е. L(x, y*)>Z,(x*, y*)>L(x*, у) при всех хе?, yeQ. Тогда точка х*е? является решением прямой задачи в том и только в том случае, если существует вектор y*<^Q такой, что па¬ ра (х*, у*)—седловая точка функции Лагранжа L(x, у) на PXQ- Таким образом, если одновременно решать и прямую и двойственную задачи, то к точке минимума, (к решению) мы мо¬ жем приближаться с «двух» сторон. Вектору Куна-Таккера часто придают экономические интерпре¬ тации. Рассмотрим две из них. Пусть предприятие выпускает не¬ кую продукцию и стремится получить максимальный . доход. Условия-ограничения в виде неравенств характеризуют затраты ресурсов при выпуске продукции. Очевидно, что в процессе вы¬ 28
пуска продукции один или несколько ресурсов будут исчерпаны полностью. Для нас это активные ограничения. Другая часть ре¬ сурсов буд^т не использована (пассивные ограничения). В двой¬ ственной задаче (согласно условию дополняющей нежесткости) Для активных ограничений множители и*=И=0, і=1, А, а для пас¬ сивных ограничений множители ^/=0, г=А+1, т (эти ресурсы недефицитны). То есть предприятию следует закупать в первую очередь те ресурсы, для которых и* (і=1, А) имеют наибольшее значение. Если же есть возможность увеличивать количество всех ресурсов сразу, то их желательно приобретать в пропорциях, опи¬ сываемых вектором Куна-Таккера. В другой интерпретации предприятие хочет продать «ненуж¬ ную» часть сырья и установить за него такую цену, чтобы макси¬ мизировать общий доход. Пусть вектор с — заданный вектор цен на сырье. Предприятие стремится продать сырье по таким ценам, чтобы получить ту же прибыль, как в случае, когда из проданно¬ го сырья изготовлена продукция, а для этого цены с должны быть назначены равными координатам вектора Куна-Таккера у*. 1.7. Графическое решение задач математического программирования Самыми наглядными методами решения задач математического программирования являются графические. Но они приемлемы только для функций двух и иногда трех переменных. Рассмотрим пример: минимизировать f (х) = | xf—21 + | х2—2 | при ограничениях g} (x)=xj—х2>0; А] (х) — X у +х2 —1=0. Получили задачу нелинейного математического программирова¬ ния. Прежде всего построим по условиям-ограничениям допусти¬ мую область D — множество точек (хі, х2), удовлетворяющих ограничениям задачи. Ограничение g\ (х) определяет область «внутри» параболы xj=x2 (рис. 1.9); ограничение hx (х) —окруж¬ ность единичного радиуса с центром в начале координат (рис. 1.9). Допустимая область D этой задачи—дуга окружности АВС. Чтобы найти точку, в которой функция f(x) принимает минималь¬ ное значение на допустимой области Z), построим линии уровня f(x)—штриховые линии. В точке (2.2) f(x)=O; при f(x) = l и f(x)=2 линии уровня образуют квадраты. Градиент функции Vf(x) направлен в сторону дуги АВС, и функция f(x) будет иметь минимальное значение в точке касания линии уровня к ду¬ ге АВС. Так как линии уровня отсекают от осей Хі и х2 равные от- 29
Рис. 1.9. Графическое решение задачи математического программирования резки, то координаты точки ка¬ сания равны 1-cos ji/4=l«sin X л/4 = 1/1/2.Решение задачи: * 1 * 1 Х1 = ўў ’ х2 = ÿy;/min(x) = 1 /2- — 21 2,6 . Нетрудно видеть, что то же ре¬ шение будет и в том случае, если вместо (х) взять g2(x) = х\ + х2 —1 <0. Тогда допусти¬ мая область D будет заклю- чеиа между дугами АВС и АОС (рис. 1.9). Но мини¬ мальное значение функции f(x) в области D будет достигнуто в точках х\ = 1/|/2 ; Х2 = 1/]/2. Рассмотрим второй пример. Пусть в задаче о питании (§ 1.1) с\ —2j с2 — 3 ; @ц — 1 *, @12 — & > ^2і — 3 ; ^22 — 2 > ^зі — 2 » ^32 — 4 > а41 = 2 ; @12 = 2 ; а51 = 1 ; а52 = 0 ; Ьг = 10 ; Ь2 = 12 ; Ь3= 16 ; Ьі = 6 ; &5 = 1 . Получили задачу линейного программирования: минимизировать f(x)=2xi + 3x2 при ограничениях Х1 - п 5х2 х ■> 10 ; 1 “Г 2%2 > 12 ; 2 2х± + 4х2 > 16 ; 3 2хг 4“ 2х2 >6 ; 4 хі ; > 1 ; 5 Х1> 0 ; х2 X 0 . Построим области, определяемые неравенствами в ограничениях задачи (рис. 1.10). Строим сначала прямую Хі+5х2=10 по двум точкам: пусть Хі = 0, тогда х2=2; при х2 = 0 Хі = 10. Нанесем точ¬ ки (0,2) и (10,0) на график и проведем прямую АВ. Чтобы уста¬ новить, какая часть плоскости определяется неравенство^ Хі + 5х2>10, подставим в него координаты точки (0,0). Получим противоречие, т. е. неравенство определяет полуплоскость, не со¬ держащую точку (0,0). Стрелки на прямой АВ указывают эту по- 30
Рис. 1.10. Графическое решение задачи линейного программи¬ рования луплоскость. Аналогично строим области, соответствующие дру¬ гим неравенствам. Неравенство можно сразу исключить,, так как оно «поглощается» неравенством хі>1. Допустимая об¬ ласть D — заштрихованная выпуклая неограниченная многоуголь¬ ная область. Чтобы найти оптимальную точку, построим одну из линий уровня целевой функции и ее градиент. Пусть с = 30, т. е. 2хі + Зх2=30 (штриховая линия), а градиент V/ имеет координа¬ ты (2,3). Так как требуется определить минимальное значение f(x) на области допустимых значений, то перемещаем линию уровня параллельно самой себе в направлении антиградиента до тех пор, пока она будет находиться в допустимой области. Точка «выхода» линии уровня из допустимой области и будет точкой, где f(x) примет минимальное значение: х*=(2, 3); /тт(**) = = 2і.2 + 3-3=13. На рис. 1.10 видно, что задачи математического программи¬ рования могут не иметь решения и могут иметь бесчисленное мно¬ жество решений. Если бы при тех же ограничениях, какие были заданы в условии задачи, потребовалось максимизировать целе¬ вую функцию f (х), то линию уровня пришлось бы перемещать в на¬ правлении градиента Vf. Очевидно, в этом случае решения не суще¬ ствует — множество D не ограничено. • Теперь заменим целевую функцию задачи. Пусть требуется мини¬ мизировать функцию f (х) =Зхі + 2х2. Очевидно, что линии уровня будут параллельны прямой 2, т. е. линия уровня «выйдет» из до¬ пустимой области по отрезку прямой CD: все точки отрезка будут являться решениями задачи (бесчисленное множество решений). При решении задачи линейного программирования может ока¬ заться, что ограничения противоречивы. Например, если ограниче¬ ние 4 записать в виде 2хі + 2х2<6, то это неравенство будет опи¬ сывать полуплоскость, включающую точку (0,0), не имеющую об¬ щих точек с другими полуплоскостями (с решением неравенств 1, 2, 3). Решение в данном случае также не существует. 31
1.8. Простейшая оптимизационная задача Напомним общие методы решения простейших оптимизацион¬ ных задач с ограничениями-равенствами. В этих методах обычно с помощью ограничений переменные выражают друг через друга и подставляют в целевую функцию, после чего требуется найти безусловный экстремум целевой функции, который и является ре¬ шением задачи. Задача. База берет на себя обязательство хранить товар и выдавать его потребителю в объеме г тонн ежедневно. Стоимость хранения товара h рублей за 1 тонну в сутки. База может полу¬ чать товар только равными партиями q тонн и через равные про¬ межутки времени Т. Стоимость хранения запаса товара q в тече¬ ние времени Т равна hqT. Загрузка базы товаром и подготовка к его приему обходится базе независимо от количества товара в р рублей. Очередной завоз товара производится в момент выдачи предыдущего. Определить оптимальный объем порции товара q и интервала его поставки Т, чтобы суточные затраты базы были минимальными. Решение. Суммарные суточные затраты базы c=(hqT+p)/T— функция двух переменных q и Т. Дополни¬ тельное условие T=q/r. Минимизируемая функция c=hq+ (р/Т) = =hq+pr!q — функция одной переменной q. Чтобы найти значе¬ ние q, при котором с будет иметь минимальное значение, найдем' производную с по q и приравняем ее нулю: cq = h — — = 0 9 q2 Отсюда q2=pr]h, q=Vpr/h\ q не может быть по смыслу задачи отрицательно. Чтобы установить вид экстремума функции с при q = КPr/h, найдем вторую производную с" по q и определим ее знак при q= ]/ pr/h: с" = ¥ ; с" ( q = — > 0 . <73 V V h] Отсюда следует, что функция с при q= У рг/Іг достигает наи¬ меньшего значения. Оптимальный интервал поставки товара T=q/r= I/4 У rh Суточные затраты при этом с = h VËL -г р-^~ = 2 Vphr . ' Урс 32
, Глава 2. ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ 2.1. Математическая постановка задачи линейного программирования Из рассмотрения задач математического программирования следует, что в общем виде решить их практически невозможно. Целесообразно рассматривать отдельные классы (виды) задач. Для каждого такого класса удается сформулировать алгоритм решения, приемлемый только для данного класса задач. Наибо¬ лее разработанными в математическом программировании явля¬ ются задачи линейного программирования. В задачах линейногб программирования целевая функция ли¬ нейна, а условия-ограничения содержат линейные равенства и ли¬ нейные неравенства. Переменные могут быть подчинены или не подчинены требованию неотрицательности. Примерами задач ли¬ нейного программирования являются уже сформулированные в гл. 1 задача о питании, транспортная задача и т. п. Одна и та же задача линейного программирования может быть записана в раз¬ личной форме. Говорят; что задача линейного программирования записана в канонической форме, если все ее ограничения, кроме х/>0, /=1, и, представляют собой равенства. Если все ограниче¬ ния имеют вид неравенств, то задача записана в стандартной форме. Для записи задачи линейного программирования в различной форме применяются следующие приемы. 1. Точка минимума функции f(x) совпадает с точкой макси¬ мума функции — f (х). ‘ 2. Ограничения в виде неравенств п 2 ачхі >bi (і = 1 , m) /=1 можно представить в виде равенств, использовав новые перемен¬ ные Хі(і=п+ 1, п+2, tri), Хі>б, называемые слабыми: п V ацХ; — Хі = bi . Àasi 7=1 2—1290 33
Для неравенства ^йі/Х/сЬ,- можно взять х,->0 и получить равен- /=і п ство 2 aijXj + Хі = bi . i=i п 3. Ограничение в виде равенства ^aijXj = bi можно заме- 7=1 * нить двумя неравенствами п п dijXj Ьі , G'ijXj bi. 7=1 7=1 п Если имеется иг равенств J? aijXj = = 1, т) , их можно за- 7=1 менить (тп+1) неравенствами У ацХі > bi(i = 1 , т) и I atjXj — bt j< 0. /=1 і=1 \/=1 J 4. Если на переменную х/(/=1, п) не наложено условие неот¬ рицательности, ее можно заменить двумя неотрицательными пе¬ ременными х? и х~, положив Xj= xf — Xj~ ; х > 0 ; х~ > 0 . Если имеется п таких переменных X/ (/=1, л), то их можно заме¬ нить (zz—{—1 ) неотрицательными переменными х) и х0, положив Xj=Xj —х0. Система ограничений в виде равенств и неравенств образует выпуклое множество — выпуклый многогранник. Это множество может быть ограниченным и неограниченным. Целевая функция задачи линейного программирования — тоже выпуклая функция. Таким образом, задача линейного программирования является частным случаем задачи выпуклого программирования. Рассмотрим систему ограничений задачи линейного програм¬ мирования в виде равенств п üijX/ = blti=\,m,n>m. (2.1) /=і Говорят, что система (2.1) линейных уравнений совместна, если она имеет по крайней мере одно решение. Система (2.1) назы¬ вается избыточной, если одно из уравнений можно выразить в ви¬ де линейной комбинации остальных. Система (2.1) несовместна, если ранг матрицы J|ay||; і=1, /=1, п, равен г, ранг расши¬ ренной матрицы, этой системы (с присоединенным столбцом Ьі) больше г. 34
В системе (2.1) число переменных (неизвестных х) п больше, чем число уравнений т. Будем считать, что ранг этой системы равен т (система неизбыточна) и что система (2.1) совместна. Тогда т переменных из общего их числа п образуют базисные пе¬ ременны^ а остальные (п—т) переменных называют свободными. Система (2.1) в этом случае будет иметь бесчисленное множество решений, так как свободным переменным можно давать любые зна¬ чения, для которых находят значения базисных переменных. Ре¬ шение системы (2.1) называют базисным, если все свободные пе¬ ременные равны нулю. Если система уравнений имеет решение, то она имеет и базисное решение. Решение системы уравнений (2.1) называют допустимым, если все его компоненты неотрицательны. Если система линейных уравнений обладает допустимым реше¬ нием, то она имеет и базисное допустимое решение. Совокупность всех допустимых решений системы (2.1) есть выпуклое множество или, другими словами, множество решений задачи линейного про¬ граммирования выпукло. Так как это множество образовано пло¬ скостями (гиперплоскостями), то оно имеет вид выпуклого мно¬ гогранника. Базисное допустимое решение соответствует крайней точке выпуклого многогранника (его грани или вершине). Если существует оптимальное решение задачи линейного про¬ граммирования, то существует базисное оптимальное решение. Целевая функция задачи линейного программирования есть уравнение плоскости (или гиперплоскости для числа переменных больше трех). Пусть в вершинах выпуклого многоугольника мы установили «столбы», высота которых определяет значения целе¬ вой функции в данной вершине. На эти «столбы» наложим плос¬ кость (графическое представление целевой функции). Очевидно, что максимальное и минимальное значение целевая функция за¬ дачи линейного программирования достигает либо в вершине вы¬ пуклого многогранника, либо на одной из его граней. Таким об¬ разом, решение (решения) задачи линейного программирования лежит в вершинах выпуклого многогранника и для его нахожде¬ ния надо вычислить значения целевой функции в вершинах вы¬ пуклого многогранника, определяемого условиями-ограничениями задачи. 2.2. Симплекс-метод — основной метод решения задач линейного программирования Рассмотрим задачу линейного программирования в канониче¬ ской форме: п найти минимум функции /(х) = V с,х, 7-1 п при условиях ацХ] = bt , і = 1 , m , m < n , Xj^O , / = 1 , n . 7=1 Предполагается, что решение этой задачи существует. Чтобы най¬ 35
ти оптимальное решение, надо найти допустимые базисные реше¬ ния, а из них выбрать оптимальное базисное решение. Для чего мы должны поочередно из столбцов матрицы ||а»/||,, t=l, m, j=l, п выбирать т столбцов и .решать систему из т уравнений с т неизвестными. Такой метод требует решения Ст=п\І\т\(п— —т) 1] уравнений, что практически невозможно, даже для неболь¬ ших значений т. Для решения задач линейного программирования в 1949 г. американским математиком Дж. Данцигом разработан симплекс- метод, ставший основным для решения задач линейного програм¬ мирования. Разберем главные моменты симплекс-метода на небольшом числовом примере: минимизировать Дх) = 3 — х4 + х5 при ограничениях х2 + 2х4 + ЗхБ — 7 = 0 х3 — х4 — Зх5 — 2 = 0 Хі “Г — 2 = 0 %4 > 0 ; х2 > 0 ; х3 > 0 ; > 0 ; х5 > 0 . Определитель, составленный из коэффициентов при неизвестных xt х2, Хз, имеет вид 0 1 0 0 0 1 и не равен нулю. Поэтому ранг мат- 1 0 0 рицы ограничений ; равен 3, базисные переменные — хь х2, Хз, а свободные переменные — х4, х5. Выразим базисные переменные че¬ рез свободные: х4 = 2 — х4 — х6 ; х2 — 7 2х4 Зх5 , х3 — 2 + х4 + Зх5. Базисное решение (при нулевых значениях свободных переменных х4 и х5) в данном случае Хі=2, х2=7, х3=2 и является допусти¬ мым (значения хь х2, х3 положительны). Значение целевой функ¬ ции при таких значениях переменных /(х)=3. Но оно может быть уменьшено, если увеличить значение переменной х4, входящей с отрицательным коэффициентом. Очевидно, что увеличивать х4 можно до тех пор, пока не будут нарушены условия-ограничения задачи, в частности, пока переменные хь х2 и х3 будут неотрица¬ тельны. Например, если х4=2, х5=0, то Хі=0, х2=3, х3=4 — но¬ вое допустимое решение. При х5=0 переменная Хі = 0, если х4= =2/1=2; х2=0, если х4=7/2=3,5; х3=0, если х4=2/( —1) =—2. Чтобы ни одна из переменных Хі, х2, х3 не стала отрицательной, надо выбрать наименьшее положительное отношение элементов столбца свободных членов к соответствующим коэффициентам при х4. Берем х4=2, хі становится равной нулю, т. е. Хі переводим в 36
свободные переменные, а х4=2 становится базисной переменной. Ограничения и целевую функцию надо выразить теперь через хі и х5: из первого уравнения имеем х4=2—хі—Х5, из второго — х2= = 3 + 2хі—х5; из третьего х3 = 4—%і + 2х5 и f(x)=3—2 + хі+х5+х5 = = 1 + Хі+2%5. В данном случае любое увеличение значений свобод¬ ных переменных Хі и х5 ведет к увеличению (но не к уменьшению) значений целевой функции, т. е. получили оптимальное решение: Xj_ = 0 , х5 = 0 , х2 = 3 , х3 = 4 , х4 = 2 , ZminW = 1 . Какие выводы можно сделать из этого примера? Во-первых, надо так разделить базисные и свободные переменные, чтобы получить допустимое базисное решение, а затем выразить базисные пере¬ менные и целевую функцию через свободные переменные. Во-вто¬ рых, по знаку коэффициентов при неизвестных в целевой функции следует определить: а) не достигли ли мы уже оптимального ре¬ шения (нет отрицательных коэффициентов); б) значение какой переменной лучше увеличить, т. е. какую переменную следует пе¬ ревести в свободные. Другими словами, определяя минимальное положительное отношение элементов; столбца свободных членов к коэффициентам при новой свободной переменной, находим пере¬ менную, которую необходимо перевести из базисных в свободные. После чего выражаем условия-ограничения и целевую функцию через новые свободные переменные. Процесс повторяют до тех пор, пока не будет получено опти¬ мальное решение. Если среди коэффициентов при неизвестных в целевой функции есть положительный, а все коэффициенты в ус¬ ловиях-ограничениях при нем неположительны, то задача линей¬ ного программирования не имеет оптимального решения, мини¬ мальное значение целевой функции равно —оо. Рассмотрим геометрическую интерпретацию симплекс-метода, давшую название методу. В условия одной из первых задач линейного программирова¬ ния, для которых Данциг разработал вычислительный метод, вхо¬ дили ограничения вида п Xj = 1 , X/ > 0 , j = 1 , п . І=1 I Эти ограничения в n-мерном пространстве определяют симплекс. Симплекс трехмерного пространства изображен на рис. 2.1. Рас¬ смотрим неравенство Хі+х2<&і при условиях Хі>0, х2^0. Об¬ ласть решения этого неравенства показана на рис. 2.2. Данное неравенство можно преобразовать в уравнение введением слабой переменной х3. Тогда получим систему Хі + х2+х3=&і, хі>0, х2>0, Хз>0. ( Областью решений этой системы является треугольник Д АВС, показанный на рис. 2.1, если принять, что Л=В = С=&і. Каждой точке треугольной области рис. 2.1 соответствует точка обла- 37
^2 Рис. 2.2. Область решения неравенства сти на рис. 2.2. Соответствие можно устанавливать, проектируя эту треугольную область на плоскость %іх2. Если придать слабой переменной х3 постоянное значение с, то %і и должны удовлет¬ ворять уравнению хі+х2=^і—с, которое является уравнением прямой, параллельной хі+х2=6і. Если слабая переменная равна нулю, то Хі+х2=Ьі. Таким образом, значение слабой переменной может служить мерой близости точки из треугольной области к границе %і + х2 = 6і полупространства, определяемого исходным неравенством. В общем случае в симплекс-методе процедуру поиска начина¬ ют с допустимой вершины, а затем переходят в соседнюю верши¬ ну так, чтобы значение целевой функции «улучшилось». В прост¬ ранстве векторов свободных переменных возрастание значения од¬ ной из свободных переменных от нуля, при котором остальные свободные переменные остаются равными нулю, соответствует движению из начала системы координат, образованной свободны¬ ми переменными, по одной из координатных осей. При этом, по¬ скольку (п—1) свободных переменных равны нулю, (п—1) огра¬ ничений задачи выполняются как равенства. Другими словами, все соседние с началом координат вершины (которые соответст¬ вуют текущему решению) связаны с началом координат (п—1) ребрами выпуклого многогранника. Возрастание от нуля значе¬ ния некоторой свободной переменной может привести к тому, что эта переменная станет базисной. Для того, чтобы получить в ка¬ честве решения вершину, необходимо заменить одну из базисных переменных на свободную, т. е. произвести соответствующее пе¬ ремещение вдоль одной из координатных осей до тех пор, пока не будет достигнута другая вершина. Если двигаться дальше, то 38 '
будет нарушено условие неотрицательности переменных. Таким образом, в симплекс-методе начинают с локальной координатной системы с началом координат, соответствующим текущему реше¬ нию, и перемещаются вдоль ребра к соседней вершине, в которой значение целевой функции «улучшается». После перехода в но¬ вую вершину рассматривают новую систему координат с началом в этой вершине. Если движение осуществляют согласно критерию (выбирают минимальный отрицательный коэффициент при неиз¬ вестных в целевой функции), то это соответствует спуску по са¬ мому крутому ребру из всех пересекающихся в начале координат. Величину изменения целевой функции за одну итерацию опреде¬ ляют как углом наклона (крутизной) ребра, так и длиной ребра. Более точно она равна минимальному значению по і величины \Cjbi/aif[ для данного /, где а//—соответствующий элемент векто¬ ра-столбца af для /-й свободной переменной. Замечание. Итак, в симплекс-методе всегда считают, что в первую таблицу внесено допустимое базисное решение. В зада¬ чах, описывающих реальные системы, допустимое базисное реше¬ ние подобрать трудно. Для этого решают вспомогательную зада¬ чу линейного программирования, которая позволяет не только найти допустимое базисное решение, но и установить, совместна ли система ограничений исходной задачи. Пусть система ограничений исходной задачи записана в сле¬ дующем виде: п Ь. — V atjXj = 0 , і = 1 , т , /=і где Z= 1, tn. Этого нетрудно добиться, умножив при необхо¬ димости уравнения на —1. Введем новые переменные п Іі = аг>х> (а) /=1 и рассмотрим новую целевую функцию п / © = 2 & min • ® і=1 Допустимое решение для задачи (а), (б) сразу задано. В про¬ цессе решения задачи возможны следующие случаи: 1) minf(g)=0, g/ = 0, і=1, т (все gz стали свободными пере¬ менными)— полученное решение х/, /=1, п, является допусти¬ мым решением исходной задачи линейного программирования; 2) minf(g)>0 — система ограничений исходной задачи несов¬ местна. В первом случае можно отметить две особенности: а. Целевая функция /(£) достигла своего минимума, равного нулю, а некоторые из переменных gz находятся среди базисных, 39
хотя и равны нулю. При этом нет необходимости обращать вни¬ мание на знаки в строке для целевой функции (можно любую свободную переменную выводить в базисные), так как значение целевой функции не изменится, но следует выполнить условия, обеспечивающие допустимость нового базисного решения (рас¬ смотреть минимальное положительное отношение). б. Даже после выполнения предыдущего пункта в строке для базисной переменной нет положительных элементов (нельзя по¬ лучить положительное отношение). Это означает, что переменные, входящие в уравнение для & с ненулевыми коэффициентами, должны быть равными нулю в данной задаче. В процессе дальней¬ шего решения их надо исключить из рассмотрения. Наряду с решением вспомогательной задачи линейного про¬ граммирования (а), (б) преобразуется и целевая функция исход¬ ной задачи, которая приписывается в задаче (а), (б) в виде до¬ полнительной строки. 2.3. Метод полного исключения Жордана для решения систем линейных алгебраических уравнений На каждом шаге симплекс-метода требуется определять но¬ вые «наборы» базисных и свободных переменных, т. е. решать системы линейных алгебраических уравнений. Задачи линейного программирования решают с помощью стандартных симплекс - таблиц, формализующих алгоритм перевода базисных переменных в свободные. Этот алгоритм и определяет конкретный вид симп- лекс-таблиц. Рассмотрим симплекс-таблицы, преобразуемые с по¬ мощью метода полного исключения Жордана, получившего наи¬ большее распространение в линейном программировании. Рассмотрим систему т линейных алгебраических уравнений с п неизвестными: ' а11ХХ + Û12X2 + • - • + alsXs + . . . -Г ЩпХп — ’ ' "F Uî2X2 “F . . . + ^isXs H- . . . H- O'inXn = bj ; -F ain2X2 "T- • • • “F ^msXs + . . . “Г" O,mnXn bm. В методе полного исключения Жордана делают такие преоб¬ разования, в результате которых в каждой строке и в каждом столбце матрицы системы линейных алгебраических уравнений остаются по одному неизвестному с коэффициентами, равными единице. Например, мы хотим исключить переменную xs из всех строк за исключением f-й строки. Элемент — коэффициент, стоящий перед переменной xs, называют генеральным элементом, і-я строка и s-й столбец — разрешающими. Прежде всего разре¬ шающую строку делят на ais и она остается неизменной. Чтобы исключить xs из первого уравнения, умножим разрешающую стро¬ ку на (—aïs) и сложим с первой строкой. В результате получим первую строку с нулевым элементом на месте ats. Аналогично ис¬ ключаем Xs в остальных строках. Получим новую эквивалентную 40
запись системы алгебраических уравнений. В ней і-я строка име¬ ет прежний вид, но все коэффициенты у нее поделены на ats; s-й столбец состоит из нулевых элементов (кроме единицы, стоящей в f-й строке). Остальные элементы матрицы системы и столбец свободных переменных пересчитываются по правилу прямоуголь¬ ника. Например, новое значение элемента аіп будет равно /7W = in ais а новое значение Ьт столбца свободных членов — Из. правила прямоугольника следует, что когда в разрешающей строке (столбце) есть нулевые элементы, то элементы столбцов (строк), пересекающих эти нулевые элементы, остаются без изме¬ нения. В процессе решения задачи линейного программирования сим¬ плекс-методом возможно «зацикливание». Поясним его суть. Пусть в процессе решения задачи линейного программирования на некотором шаге симплекс-метода наименьших положительных отношений свободных членов к коэффициентам разрешающего столбца оказалось больше одного, т. е. выбор разрешающего эле¬ мента неоднозначен. После этого шага все упомянутые свободные члены, за исключением свободного члена разрешающей строки, обратятся в нуль. Этот случай называют вырождением: сливаются две или большее число вершин выпуклого многогранника Z), ког¬ да ребро (или ребра), соединяющие эти вершины, стягиваются в точку. В алгоритме симплекс-метода каждый шаг означает переход по ребру от данной вершины многогранника D к соседней (рас¬ положенной на том же ребре), а при вырождении — совпадение двух соседних вершин — алгоритм может потерять монотонность, т. е. может случиться, что после указанного шага мы остались в той же вершине, только выраженной с помощью другого набо¬ ра из п уравнений, относящихся к этой вершине. Если продолжать решение симплекс-методом, то не исключено, что после некоторо¬ го числа шагов мы вернемся к уже взятой ранее вершине и про¬ цесс начнет повторяться. Произойдет зацикливание. Если в про¬ цессе реіпения проводилось запоминание уже испытанных ребер, 41
то для прерывания зацикливания достаточно сменить генераль¬ ный элемент. Существуют алгоритмы, где автоматически предусмотрены ме¬ ры против зацикливания — «расклеивание» слипшихся вершин. 2.4. Как спланировать выпуск продукции пошивочному предприятию Выпуск продукции пошивочного предприятия может быть оп¬ ределен из решения задачи линейного программирования. Решать ее будем симплекс-методом. Формулировку задачи и процедуру применения симплекс-метода рассмотрим на конкретном примере. Задача. Намечается выпуск двух видов костюмов — мужских и женских. На женский костюм требуется 1 м шерсти, 2 м лавса¬ на и 1 человеко-день трудозатрат; для мужского костюма — 3,5 м шерсти, 0,5 м лавсана и тоже 1 человеко-день трудозатрат. На пошив этих костюмов имеется 350 м шерсти, 240 м лавсана и 150 человеко-дней трудозатрат. По плану костюмов не должно быть менее ПО штук и необходимо обеспечить прибыль не менее 1400 руб. Требуется определить оптимальное число костюмов каждого вида, обеспечивающее максимальную прибыль, если при¬ быль от реализации женского костюма составляет 10 руб., а от мужского — 20 руб. Решение. Пусть х*і— число женских костюмов, а Х2— мужских. Прибыль от женских костюмов составляет 10 х} руб., а от муж¬ ских 20 х2 руб., т. е. необходимо максимизировать целевую функ¬ цию f (х) = 10 Х1 + 20 х2. Расход шерсти составляет д + 3,5x2, лавсана 2хі + 0,5 х2, тру¬ довых ресурсов Хі + х2. Поэтому ограничения задачи имеют вид: Хі + 3,5х2 350 ; 2хі + 0,5х2 < 240 ; *і + х2< 150 ; %і + х2 > ПО ; Юхі + 20х2 > 1400 ; хг > 0 ; х2 > 0 . Первые три неравенства описывают ограничения по ресурсам, четвертое и пятое — соответственно плановое задание по общему числу костюмов и ограничение по прибыли. Для решения задачи симплекс-методом сведем систему огра¬ ничений к равенствам путем введения неотрицательных слабых переменных х3, х4, Х5, х6, х7 (в первом и втором ограничениях про- 42
ведем умножение на 2, а в пятом сократим обе части неравенства на 10): 2хг -г 7х2 + х3 = 700; 4х± Ч- х2 -г хі = 480; хі + Х2 + х5 = 150; (2.2) Х1 х2 + Х6 = — 110; хі 2х2 —Ч х7 = — 140; хі ^0 , / = 1,7 . Первым этапом в симплекс-методе является отыскание опорного решения — допустимого базисного решения, с которого начинает¬ ся поиск оптимального решения. Чтобы решение было опорным, базисные переменные должны быть неотрицательны, т. е. элемен¬ ты bi (f=l, 5) столбца свободных членов должны быть неотрица¬ тельны. В задачах небольшой размерности опорное решение легко увидеть. В нашем случае самое простое в качестве базисных пере¬ менных взять Хз, х4, %5, Хв, х7і но такое базисное решение не явля¬ ется допустимым (опорным), так как Ь4 и Ь5 отрицательны. Для поиска опорного решения надо сформулировать дополнительную фиктивную целевую функцию ср(х), элементы которой равны сум¬ ме элементов строк, отражающих те ограничения, где &,<0. В симплекс-таблице для ср(х) отводится своя строка, получаемая суммированием соответствующих элементов строк с отрицатель¬ ными значениями Ьі (в нашем случае 4-я и 5-я строки). С по¬ мощью симплекс-метода фиктивная целевая функция максимизи¬ руется. Если max ср (х)=0 и при этом все коэффициенты в стро¬ ке для ф ( (х) будут нулевые, то базисное решение, соответствую¬ щее этой таблице, будет опорным. Тогда, исключая строку для ф(х), переходим к отысканию оптимального решения исходной за¬ дачи. Если шахф(х)=#0, то система ограничений задачи противо¬ речива. Может иметь место случай, когда ф(х) достигла своего максимума, равного нулю, а среди элементов строки ф(х) есть ненулевые элементы. Это означает, что соответствующие перемен¬ ные, в столбцах для которых есть ненулевые элементы, тождест¬ венно равны нулю и могут быть исключены из рассмотрения. Ис¬ ходная таблица симплекс-метода для нашей задачи имеет вид табл. 2.1. Таблицу 2.1. соответствует системе ^ограничений-равенств (2.2). Так, согласно этой таблице ' 0 = 700 — 2%і — 7х2 — х3 ; 0 = 480 — 4хг — х2 — х4 ; 0 = — 140 — — 2х2 — х? , что соотносится с системой уравнений (2.2). Согласно табл. 2.1 f (х)=—10(—Хі) + (—20) (—х2) = 10хі + 20х2. Последний контроль¬ ный столбец содержит сумму всех чисел в строке, и в процессе 43
Таблица 2.1 Исходная таблица Базисные перемен¬ ные Столбец свободных членов Ь; —Х1 —х2 —Х3 —Х4 —Х6 —Хв —Х1 Контроль Х3 700 2 7 0 0 0 « 710 х4 480 4 1 0 1 0 0 0 486 Х5 150 1 1 0 0 1 0 0 153 х6 — ПО -1 — 1 0 0 0 1 0 —111 х7 — 140 — 1 0 0 0 0 1 —142 0 — 10 -20 0 0 0 0 0 —30 <р(х) —250 —2 1 —3 1 0 0 0 1 1 —253 пересчетов сумма всех чисел в строках должна быть равной чис¬ лу в контрольном столбце. Проведем максимизацию функции <р(х). Среди элементов стро¬ ки ф(х) есть отрицательные. Берем меньший отрицательный ко¬ эффициент, равный —3; он указывает, что переменную х2 надо перевести в базисные. Чтобы определить, какую переменную надо из базисных перевести в свободные, рассмотрим положительные отношения Ьі к соответствующим элементам столбца х2: 700/7= = 100; 480/1=480; 150/1 = 150; —110/(—1)-ПО; —140/(—2) =70. Минимальное значение, равное 70, указывает, что х2 надо пере¬ вести в свободные, а генеральным (разрешающим) элементом является (—2) (обведен). Для получения следующей симплекс- таблицы применим метод полного исключения Жордана (табл. 2.2.). Таблица 2.2 Первая итерация Базис ьі -J 1 х2 —х3 —х4 —ХЬ —Х6 —Х1 Контроль Х3 210 —3/2 0 1 0 0 0 213 х4 410 7/2 0 0 1 0 0 1/2 415 Ч 80 1/2 0 0 0 1 0 1/2 82 X* —40 1-1/21 0 0 0 0 1 —1/2 —40 х2 70 1/2 1 0 0 0 0 -1/2 71 /W 1400 0 0 0 0 0 0 —10 1390 <р(х) —40 —1/2 0 0 0 0 1 -1/2 —40 Разрешающую строку (для х2) делим на (—2) и заносим в табл. 2.2; столбец х2 заполняем нулями. Столбцы для х3, х4, Xs, Xg переносим без изменения, так как они пересекают нулевые эле¬ менты разрешающей строки. Остальные элементы таблицы пере¬ 44
считываем по правилу прямоугольника. Проверяем, совпадает ли сумма чисел в строке с числом в контрольном (последнем) столб¬ це. Если совпадения нет, произошла ошибка в расчете. Вместе с функцией <р(х) пересчитывают и целевую функцию |(х). Продолжаем максимизировать <р(х). В базисные переменные можно перевести Хі и х7, так как для них есть отрицательные ко¬ эффициенты в строке <р(х). Переводим Х] в базисные переменные. По минимуму положительных отношений Ьі к элементам столбца (—X]) выбираем элемент х6, который надо перевести в свобод¬ ные; генеральный элемент— (—1/2), разрешающая строка для Хб и разрешающий столбец для хь Получим табл. 2.3. Таблица 2.3 Вторая итерация Базис bi —Xi —x2 —X» —x4 —x6 —Xe —x7 Контроль *3 330 0 0 1 0 0 —3 333 х4 130 0 0 0 1 0 7 —3 135 хъ 40 0 0 0 0 1 1 0 42 *1 80 1 0 0 0 0 —2 1 80 *2 30 0 1 0 0 0 1 —1 31 /(*) 1400 0 0 0 0 0 0 —10 1390 0 0 0 0 0 0 0 0 0 Из табл. 2.3 видно, что достигнут максимум фиктивной целевой функции (<р(х)=0), и все коэффициенты в строке <р(х) равны ну¬ лю, т. е. получено опорное решение х6=х7=0, Хі=80, Хг=30, хз = =330, Х4=130, Х5=40. Это решение не является оптимальным, так как в строке f(x) имеется отрицательный коэффициент. Продолжаем улучшать решение симплекс-методом. Строку <р(х) исключаем. Генеральным будет элемент (1, 7), равный 5; х7 переводим в базис (вместо Хз). Получим табл. 2.4, затем табл. 2.5. В табл. 2.4 отмечен генеральный элемент. Таблица 2.4 Третья итерация Базис b. —Xi —Xi —X8 —x4 —X6 —Xfl —X7 Контроль *7 66 0 0 1/5 0 0 —3/5 5/5 333/5 X4 328 0 0 3/5 1 0 26/5 0 1674/5 X5 40 0 0 0 0 1 III 0 42 *1 14 1 0 -1/5 0 0 —7/5 0 67/5 *2 96 0 1 1/5 0 0 . 2/5 0 488/5 rw 2060 0 0 2 0 0 w —6 0 2056 45
Таблица 2.5 Оптимальное решение Базис —Xi —х2 —Хз —х4 —Хъ 1 1 —Хз —Х1 Контроль X? 90 0 0 1/5 0 3/5 0 1 459/5. х4 120 0 0 3/5 1 —26/5 0 0 582/5 х6 40 0 0 0 0 1 1 0 42 *1 70 1 0 -1/5 0 7/5 0 0 361/5 80 0 1 1/5 0 —2/5 0 0 404/5 fW 2300 0 0 2 0 6 0 0 2308 В табл. 2.5 все коэффициенты строки f(x) неотрицательны, значит максимум f(x) достигнут и получено соответствующее ему решение: %і = 70, х2 = 80, fmax(x) =2300. Таким образом, макси¬ мальная прибыль составит 2300 рублей при производстве 70 жен¬ ских и 80 мужских костюмов. Слабые переменные оказались рав¬ ными х3 = 0, х4=120, %5 = 0, %б = 40, х7 = 90. Что же они показыва¬ ют? Значения х3, х4, х$ показывают остатки ресурсов: шерсть и трудовые ресурсы израсходованы полностью, лавсана осталось 120 м; Xq и х7 показывают, на сколько перевыполнены плановые задания по числу костюмов и по прибыли (имеем в виду, что х7 = 90-10 = 900 руб.). Замечание. Обратим внимание на тот факт, что в рассмотрен¬ ной задаче оптимальное решение мы устанавливали по наличию неотрицательных коэффициентов в строке максимизируемой це¬ левой функции, а в примере § 2.2 — по наличию неотрицатель¬ ных коэффициентов в минимизируемой целевой функции. Здесь никакого противоречия нет: в нашем примере переменные указа¬ ны со знаком минус, поэтому и рассматривались неотрицательные коэффициенты. Рассмотрим графическое решение этой задачи. Поскольку за¬ дача двумерная, то решим ее графически. Система ограничений- неравенств определяет многоугольник допустимых решений (рис. 2.3). Определим полуплоскости, задаваемые неравенствами- ограничениями задачи. Для этого построим прямые, заменив в ограничениях знаки неравенств на знаки равенств. Чтобы выяс¬ нить, какую часть плоскости описывает неравенство, подставляем в него пробную точку, например (0, 0), и устанавливаем, удов¬ летворяет ли она неравенству. Если неравенство удовлетворяется, то искомая полуплоскость включает точку (0, 0). В противном случае берут другую половину плоскости. Для первого неравенства прямую 1\ (хі+3,5 х2=350) строим по точкам Хі = 0, х2=350/3,5 = 100 и х2=0, Хі = 350. Пробная точ¬ ка (0, 0) удовлетворяет неравенству 0<350, т. е. точка (0, 0) вхо¬ дит в искомую полуплоскость (она отмечена стрелочками у пря¬ мой Zi). Прямую Z2 (2хі + 0,5х2=240) строим аналогично: при 46
Рис. 2.3. Графическое решение Хі=0, х2=240/0,5=480 и при х2=0 xt = 240/2= 120. Точка (0, 0) принадлежит искомой полуплоскости. Рассмотрим последнее не¬ равенство 10 +20 х2^ 1400, ему соответствует прямая 15 (хі + +2x2 = 140): при Хі = 0, х2= 140/2 = 70 и при х2=0, Хі = 140. Точка (0, 0) не удовлетворяет неравенству 0^=1400 (ложно), т.е. надо взять полуплоскость, не содержащую точку (0, 0). Пересечение полуплоскостей дает выпуклый многоугольник ABODE. Для на¬ хождения максимума функции f(x) надо построить линию уровня. Пусть f(x)=O, тогда уравнение линии уровня I будет 10хі + + 20х2=0 — прямая, проходящая через начало координат парал¬ лельно прямой Ів: х2=—0,5хі. Градиент целевой функции Vf= = {10, 20} показывает направление ее возрастания. Прямую I перемещаем параллельно самой себе в направлении Vf до тех пор, пока она «не выйдет» из области D. Получаем точку С, точ¬ ку пересечения прямых 1\ и 12: -¬ J хх + 3,5x2== 350 : I хх +х2 = 150 Решая полученную систему уравнений, находим оптимальное ре¬ шение—•координаты точки С (хі=70, х2=80) и вычисляем мак¬ симальное значение целевой функции f„ax(x) = 10-70 + 20-80 = 2300руб . Замечание. Допустим, что в рассматриваемой задаче требова¬ лось найти минимум целевой функции /(х) = 10хх + 20х2. В этом случае линия уровня «вошла» бы в область по линии Is, т. е. все точки отрезка АЕ являлись бы оптимальным решением (бесчисленное множество решений). 47
2.5. Двойственность в задачах линейного программирования В § 1.6 мы убедились, что в ряде случаев проще решить двой¬ ственную задачу математического программирования, чем пря¬ мую. Рассмотрим теорию двойственности для задач линейного программирования. Для каждой задачи линейного программиро¬ вания можно построить uдругую задачу линейного программиро¬ вания, называемую двойственной. Понятие двойственности дает ощутимые преимущества при построении алгоритмов решения за¬ дач линейного программирования. Запишем обе задачи: Прямая задача минимизировать /w = 2 с'хі /=1 при условиях п 2 a‘i*î >bi, і = ; /=і n 2 aijXj =blt i = k-\- 1, m -, i=i Двойственная задача максимизировать ф(«/) = 2^‘ і=1 при условиях Уі 0 , і = 1 , k Уі^О , i = k1 , tn ; Xj^O , / = 1, l ; 2 а”Уі<c'!' i = i=l X, ïï; 0 , j = l + 1, n ; а]‘іУі = cj, j = l + 1 , ft Симметричность обеих задач очевидна. Неравенству в одной за¬ даче . соответствует неотрицательная переменная другой. Равенст¬ ву одной задачи соответствует свободная переменная другой. За¬ дача, двойственная к двойственной задаче, есть исходная (пря¬ мая) задача. Таким образом, любую из этой пары задач можно считать прямой. Для стандартного и канонического видов задачи линейного программирования двойственные задачи можно записать следую¬ щим образом: Стандартный вид Прямая задача Двойственная задача минимизировать n = ^ClXl J=1 максимизировать Ф (У) = ^Ь.Уі 1=1 48
при условиях при условиях ацХі , і = 1 , пг ; 2 аііУі <Cj, j =\,п . Xj>0 , j = 1 , и ; Прямая задача минимизировать I \ Уі> 0 , і = 1 , m Канонический вид Двойственная задача максимизировать Дх) = 2СЛ- ф (у) = 2ь>Уі при условиях при условиях 2 аі‘хі = > і = 1 , /и ; /=і 2 анУі <сі> І = 1 » » ; х/ > 0 , j = 1, п ; Уі Bs 0 , і = 1 , т . Из сравнения обеих задач нетрудно видеть, что: ф 1) матрицу из коэффициентов при переменных в исходной за¬ даче ^11^12 • • • ^21^22 • • • \Дт\^тЧ • • • ^тпJ и аналогичную матрицу в двойственной задаче /а^а^ ... ат\ \ д Т ■ I #12^22 • • • ^тЧ | • • • ttmn получают друг из друга простой заменой строк столбцами с со¬ хранением üpx порядка (такую операцию называют транспониро¬ ванием и обозначают значком «т») ; 2) в исходной задаче имеется п переменных и т ограничений; в двойственной— т переменных и п ограничений; 3) в правых частях систем ограничений каждой из задач стоят коэффициенты целевой функции, взятой из другой задачи; . 4) в исходной задаче в систему ограничений входят неравенст¬ ва типа и требуется минимизировать целевую функцию f(x); в двойственной задаче в систему ограничений входят неравенства типа и требуется максимизировать целевую функцию ср (у). В теории двойственности доказывают следующую теорему: пусть дана пара двойственных задач линейного программирова- 49
:ния (заданных в стандартном виде). Тогда справедливо одно и только одно из следующих утверждений. 1. Обе задачи имеют оптимальные решения и оптимальные значения целевых функций равны, т. е. min f(x) = max ср (у). * 2. Одна из задач не имеет ни одного допустимого решения, а другая имеет по крайней мере одно допустимое решение, но не имеет оптимального решения (целевая функция на множестве до¬ пустимых решений неограничена). 3. Ни одна пара задач не имеет допустимых решений. Между решениями пары двойственных задач линейного про¬ граммирования существуют и другие соотношения, которые уста¬ навливаются теоремами о дополняющей нежесткости: для того, чтобы допустимые решения х и у прямой и двойственной задач были оптимальными, необходимо и достаточно, чтобы выполня¬ лись следующие соотношения: у (Ах — в) = 0 ; (а) (с —уА)х = 0. (б) Условие (а) равносильно условиям п если уі > 0 , то V atjXj = bt, i= 1 ,m ; /=і п если V üijXj > bi, то yt = 0 . /=і Условие (б) равносильно: тп если Cj > V Щ)У1, то X/ = 0 ; . /=і m если Xj > 0 , то cj — а^Уі. і=1 Это условия дополняющей нежесткости в слабой форме. В силь¬ ной форме условия дополняющей нежесткости утверждают: п если уі = 0 , то V ацхі — bi> 0 , 7=1 п если V ацхі — bj = 0 , то уі > 0 . 7=1 п Может случиться, что уі = 0 и а^Х] = bj одновременно. Но всег- /=і 50
да* существует по крайней мере одна пара оптимальных решений, п ДЛЯ которых условия #і = 0 И ^аЧХІ = не МОГУТ выполняться н одновременно. Нетрудно проверить, что, если вектор х — решение прямой за¬ дачи, а вектор у — решение двойственной задачи, то сумма произ¬ ведений соответствующих координат векторов х и у равна нулю (скалярное произведение векторов х и у равно нулю). Геометрическая интерпретация теории двойственности в зада¬ чах линейного программирования. Выберем задачу линейного про¬ граммирования стандартного вида: минимизировать № = 2с,Хі /=1 при условиях п V ciijXj >bi , i = 1 , т ; /=і X/ > 0 , j = 1 , п . Пусть а/ (&і) при /=1, пг совпадают с а,(&/); а,п+і есть единич¬ ный орт е£-, а Ь*т+і = 0, при і=1, п. В §§ 1.3—1.5 мы видели, что обычное условие наличия безусловного экстремума функции во внутренней точке есть обращение в нуль градиента функции в этой точке. Если при этом должны выполняться некоторые огра¬ ничения на переменные в виде равенств, то условием наличия экстремума в допустимой точке будет требование, чтобы в этой точке градиент функции и нормали к поверхностям, соответству¬ ющим ограничениям, были направлены .«в одну сторону». Более точно градиент функции в этой точке должен быть неотрицатель¬ ной линейной комбинацией этих нормалей к поверхностям-ограни¬ чениям. В задаче линейного программирования каждое неравен¬ ство определяет допустимую область — полупространство. Для того, чтобы допустимая точка х была оптимальной, необходимо, чтобы градиент целевой функции в х выражался в виде неотри¬ цательной линейной комбинации направляющих векторов тех и только тех ограничений, которые в точке х обращаются в равен¬ ства, т. е. градиент целевой функции (вектор с) есть неотрицатель¬ ная линейная комбинация нормалей векторов а, для ограничений, обращающихся в равенство: т-\-п с V у‘а'* ’ У' > 0=> (а«* ’х) = ь‘ где уі — соответствующие коэффициенты линейной, комбинации. 51
Рис. 2.4. к иллюстрации выпол¬ нения условия дополняющей не¬ жесткости Рис. 2.5. Нарушение сильной фор¬ мы условия дополняющей нежест¬ кости Из условий дополняющей нежесткости в слабой форме следо¬ вало: если yi>Q, то (аг, х)—Ьі=0 и если (аг, х)—bt>0, то уі=0. В сильной форме утверждалось, что, если ÿi=0, то (а,-, х)—>6г>0 и если (а,, х)—(6г=0, то уі>0. На рис. 2.4 изображены три гиперплоскости (аг, х)—6г=0 (і— = 1, 3) и нормали к ним аь а2, а3. Если вектор с такой, как пока¬ зано на рис. 2.4, то он может быть выражен в' виде неотрицатель¬ ной линейной комбинации векторов аі и а2; вершина, обозначен¬ ная кружком, соответствует оптимальному решению. Здесь вы¬ полняются и условия дополняющей нежесткости как в слабой, так и в сильной форме: у3>0<=4»(а3, х)—63>0; уі>0 (аь х)—Ьі= =0; z/2>0o(a2, х)-”&2=0. Если вектор с таков, как показано на рис. 2.5, с — нормаль к одной из гиперплоскостей, (аь х)—&і = 0, то оптимальная вершина в кружке не удовлетворяет сильной форме условия дополняющей нежесткости, поскольку и і/2=0 и (а2, х)—Ь2=0. Но точка, помеченная крестом на рис. 2.5 и явля¬ ющаяся оптимальным решением, удовлетворяет и слабой, и силь¬ ной форме дополняющей нежесткости: і/г>0-ФФ-(аь х)—Ьі = 0, у2= =04=>(а2, х)— Ь2>0, «/з=0**(а3, х)— &3>0. Для решения задач линейного программирования разработан так называемый двойственный симплекс-метод. Процедуру начи¬ нают с двойственно допустимого решения, когда одновременно Ьг^О и Сд>0, і=1, m, /=1, п, и сохраняют его двойственно допус¬ тимым на протяжении всех шагов. Он реализуется посредством таких же таблиц, как и прямой симплекс-метод. Но здесь снача¬ ла определяется, какая переменная должна быть выведена из ба¬ зиса, а затем — какая должна быть введена в базис. Всегда имеется возможность выбора: решать прямую или двой¬ ственную задачу, использовать прямой или двойственный симп¬ лекс-метод. Выбирают ту модификацию задачи, которую проще .52
решать. Например, если исходная задача содержит переменные, на которые не наложено условие неотрицательности, то бывает удобнее решать двойственную задачу. Прежде чем записать двой¬ ственную задачу, полезно в исходной освободиться от ограниче¬ ний в виде равенств, поскольку они будут порождать в двойст¬ венной задаче переменные, принадлежащие всей действительной оси. В литературе, кроме того, описаны методы одновременного решения прямой и двойственной задач, например метод последо- / п \ . вательного сокращения невязок ( ачхі— Ь/ ІЛ = 1 , m > ПРИ Фик" \/=і J сированных значениях Х/. л 2.6. Как оптимально организовать поставку грузов от поставщиков к потребителям Симплекс-метод дает возможность решить любую задачу ли¬ нейного программирования. Однако существует много методов ре¬ шения задач линейного программирования, которые учитывают конкретные особенности решаемой задачи, а потому более эффек¬ тивных. Примером одной из таких задач является транспортная задача. Задача. Перевозится однородный груз из трех пунков Лі, А2, A3 к четырем местам назначения В2, В3, В4. Из пункта Лі мо¬ жет быть направлено 50 т, из А2— 40 т, из А3 — 20 т. В пункты назначения должно поступить груза: в В{— 30 т, в В2— 25 т, в Вз — 35 т, в В4— 20 т. Расстояния сц от і-го поставщика до /-го потребителя приведены в углах табл. 2.6; /=1,3^/=1,4. Таблица 2.6 Исходные данные в± в2 Вз в4 Запасы л. 3 *11 2 *12 4 *13 1 *14 01 = 50 -42 2 *21 3 *22 1 *23 5 *24 02=40 ,Л3 ' 3 *31 *32 4 *33 4 *34 0з=2О Потребности в\ = 30 в2=25 вз=35 04=20 110 Необходимо составить план перевозки, обеспечивающий наимень¬ ший общий пробег транспорта в тонно-километрах при условии, что все запасы должны быть вывезены, а потребитель получит точно необходимое количество груза. МьГ сформулировали сбалансированную транспортную зада¬ чу, когда количество груза у поставщиков равно потребности по¬ 53
требителей. Несбалансированная транспортная задача сводится к сбалансированной путем введения фиктивного поставщика, если потребности превышают предложения, или фиктивного потреби¬ теля в противном случае. Расстояния в фиктивной строке (столб¬ це) указываются равными нулю. Сбалансированная и несбалан¬ сированная задачи решаются по одному алгоритму. Решение. Пусть xif — количество груза, которое будет достав¬ лено из і-го пункта отправления в j-и пункт назначения; г=ЦГ; /=1,4. Целевая функция задачи — минимизировать общий пробег транспорта в тонно-километрах: 3 4 / (Х) = СіІХіІ і=\ j=\ при условии: весь груз от поставщика должен быть вывезен — х/у di , i == 1,3 ; /=і каждый потребитель получит необходимое ему количество груза— 2^7 = bj , j = М • 1=1 Особенностью данной задачи является тот факт, что в матрице ограничений все коэффициенты при неизвестных равны единице. Это облегчает все вычисления по симплекс-методу. Число переменных в данной задаче равно в общем случае тп, где т — число поставщиков, п — число потребителей. Число уравнений в системе ограничений равно (т-{-п). Однако нетрудно видеть, что одно из этих уравнений может быть получено из дру¬ гих. Так, например, если определено наличие груза у всех отпра¬ вителей и потребность всех получателей, кроме одного, то спрос последнего легко установить как разность между общим запасом и общей потребностью остальных получателей, т. е. система огра¬ ничений содержит т-{-п— 1 независимых уравнений с m-n неиз¬ вестными. Число базисных переменных также будет т + п—1, остальные переменные свободные. Алгоритм решения транспортной задачи сопоставим с алго¬ ритмом симплекс-метода. 1. Нахождение допустимого базисного (опорного) решения. В транспортной задаче его находят довольно просто: а) метод северо-западного угла. Удовлетворяем потребность первого потребителя за счет первого поставщика. Если потребно¬ сти оказались выше возможностей первого поставщика, то под¬ ключаем второго поставщика. Если запасы первого поставщика выше потребностей первого потребителя, то остаток запасов пер¬ вого поставщика передаем второму потребителю и т. д. Мы дол¬ жны заполнить т+п—1 клетку. Может оказаться, что число за¬ полненных клеток меньше zn+n—1 (случай вырождения). Тогда 54
клетки, недостающие до т+п—1, заполняем нулями (эти клетки выбираем произвольно) — это так называемые условные поставки. Процесс получения опорного решения нашей задачи методом се¬ веро-западного угла представлен в табл. 2.7. Таблица 2.7 а) первая итерация б) вторая итерация Bl в2 в, в. аі в2 в9 в4 а- Аг 30 50* 20 Аг 20 - 20* л" 40 ^2 5 45* 35 Аз 20 Аз 20 bj 30* 25 35 20 ПО bj 25* 35 20 80 в) третья итерация г) четвертая итерация В3 в4 аі Ві в2 в, в4 аі А 35 35* 3 30 2 20 4 1 50 Аз bj 3/5 20 ю ю 2 3 5 1 35 5 40 3 2 4 4 20 20 30 25 35 20 ПО Примечание. Помеченные (*) значения ^следует читать как зачеркнутые цифры. За четыре итерации мы заполнили в таблице перевозок пять кле¬ ток вместо шести, но удовлетворили условиям-ограничениям. Надо ввести нулевую клетку — условную поставку. Пусть это будет клетка (1,4): Хи = 0. Получили опорное решение: Хц=30; Хі2=20; Яі4 = 0; х22=5; х2з = 35; хз4 = 20. Значение целевой функции при та¬ ком решении f (х) = 3 • 30+2 • 20 +1 • 10 +1 - 35 + 3 • 5+4 • 20=260 (тонно¬ кило метров) ; б) метод учета наименьших расстояний (стоимостей) перево¬ зок. Он аналогичен методу северо-западного угла. Только запол¬ няются в первую очередь те клетки, для которых указанные рас¬ стояния (стоимости) наименьшие. 2. Проверка полученного плана перевозок на оптимальность. С э-той целью рассмотрим двойственную задачу к поставлен¬ ной транспортной задаче. В качестве двойственных переменных введем величины си, а2, аз, соответствующие первым трем ограни¬ 55
чениям, и Рь р2, рз, Р4 — для остальных ограничений. Эти пере¬ менные называют потенциалами. Целевая функция двойственной задачи: максимизировать ср(ос, P) = 50cz-£ 4“ 40о&2 “і- 20а3 + ЗОр^ -I- 25{32 + 35j33 + 20^4 при условии (для базисных клеток) Г «г + РіО ; аі + Р2 2 ; 04 + Р4 "С 1 k + fe<3; М а2 + Рз 1 > аз + Р4 'С 4 . Для оптимального плана исходной задачи условия-ограничения двойственной задачи выполнялись бы как равенства, так как со¬ гласно условиям дополняющей нежесткости, если в оптимальном плане исходной задачи значение какой-либо переменной строго больше нуля, то соответствующее ограничение двойственной зада¬ чи при подстановке в него оптимального плана становится равен¬ ством. Получим систему (2.3) из шести уравнений с семью пере¬ менными. Поскольку независимых переменных в данной системе ровно 3 + 4—1=6, то одна переменная свободная. Пусть это бу¬ дет Положим аі = 0, получим Рі = 3, ₽2=2, р4=1, а2=1, Рз = 0, аз = 3. Составим таблицу перевозок для данной итерации (табл. 2.8). Таблица 2.8 Первая итерация Зі=з ₽2=2 ₽3=0 ₽4=1 Щ=0 3 30 2 20 4 1 0 а2=1 2 3 5 1 35 5 а3=3 3 2 4 4 20 Полученное решение он, «2. аз, Рь Рг, рз, р4 подставляем в огра¬ ничения двойственной задачи, не вошедшие в систему уравнений (2.3), т. е. соответствующие пустым клеткам. Если эти ограниче¬ ния являются верными неравенствами для найденного решения, то проверяемый допустимый план исходной задачи является оп¬ 56
тимальным. В противном случае — не является. Для пустых кле¬ ток имеем аі + ₽з 4 , 0 < 4 ; а2 < 2 , 4<2 ; Н- , 2 5 ; а3 + Р1<3 , 6СЗ ; аз + ₽2 < 2 > 5 < 2 ; аз ~ Р4 4 , з е 4 . (2.4) Второе, четвертое и пятое неравенства являются неверными, по¬ этому решение не является оптимальным. Необходимо провести улучшение плана. 3. Составление нового допустимого плана. Наметив свободную переменную, которую надо перевести в базисную, определим ба¬ зисную переменную, переводимую в свободные. Переменные, со¬ ответствующие свободным клеткам (2, 1); (3, 1) и (3, 2), в которых неравенства (2.4) нарушаются, могут быть переведены в базис¬ ные. Выбираем клетку (3, 2). В симплекс-методе для выбора гене¬ рального элемента требуется рассмотреть положительные отноше¬ ния в столбце %32. В матрице перевозок положительные коэффици¬ енты в столбце *32 равны +1 и отвечают тем базисным клеткам, которые соответствуют отрицательным вершинам некоторой замк¬ нутой ломаной линии, называемой циклом пересчета для х32. Сле¬ довательно, генеральным элементом является базисная переменная из числа отвечающих отрицательным вершинам цикла пересчета, значение которой минимально. Цикл пересчета — это замкнутая ломаная линия, начинающа¬ яся в свободной клетке, все остальные вершины которой помеще¬ ны в базисные клетки и соединены звеньями, лежащими вдоль строк и столбцрв матрицы. В каждой вершине встречаются только два звена, причем одно из» них расположено по строке, другое по столбцу. Никакие три вершины, встречающиеся подряд при обходе, не лежат на од¬ ной прямой. Если циклом служит самопересекающаяся линия, то точки самопересечения не могут быть ее вершинами. Свободной клетке в цикле присваивают знак «+», другим вершинам — чере¬ дующиеся по ходу знаки «—», « + », «—» и т. д. Построим цикл пересчета для свободной клетки (3, 2) (табл. 2.9). В отрицательных вершинах цикла пересчета стоят два числа: 20, 20; минимальное из них 20. Так как число положительных и отри¬ цательных вершин одинаково, то баланс не нарушится, если в от¬ рицательных вершинах вычесть число а, а в положительных верши¬ нах прибавить это же число а. Вычитая минимальное из чисел, стоящих в отрицательных вершинах, мы получаем новую свобод¬ ную переменную %34, а базисной станет х32. Прибавим 20 в поло¬ жительных вершинах цикла, вычтем 20 в отрицательных вершинах и получим следующее допустимое решение (табл. 2.10). - 57
Т а б’л и ц а 2.9 Цикл пересчета для клетки (3,2) Зі=з ₽2=2 03=0 04=1 ссі = О 30 20 _ — TÎ 0 «2=1 5 35 • а3=3 |± — -I 20 ' Таблица 2.10 Второе допустимое решение 0і=3 ₽2=2 0з=О 04=1 Œi=0 3 Г 30 2 1 0 4 1 20 «2= 1 1 1 1 3 5 35 5 * аз=0 3 2 20 4 4 4. Проверка вновь полученного решения на оптимальность. Находим значения потенциалов для данного допустимого решения: аі 4~ Рі = 3 ; аі 4~ Р2 = 2 ; аі + 04 = 1 і а2 4" Рг = 3 ; а2 4“ Рз — 1 ’> ( аз 4" Рг = 2 • Пусть аі = 0, тогда 0і = 3, 02 = 2, 04=1, сс2=1, 0з = О, аз=0. Оче¬ видно, что для клетки (2, 1) неравенство а2 + 0і=^2 не выполня¬ ется: 3^2, т. е. данное решение не является оптимальным. Шаги 3 и 4 повторяем до тех пор, пока не достигнем оптимального ре¬ шения. Цикл пересчета для клетки (2, 1) показан в табл. 2.10. Третье допустимое решение приведено в табл. 2.11. Здесь же показаны значения рассчитанных для данной итерации потенциалов. Нетрудно убедиться, что для всех свободных кле¬ ток сумма потенциалов меньше сц, т. е. получено оптимальное ре¬ шение. Оно означает, что от первого поставщика к первому потре¬ бителю надо перевезти 25 т груза, ко второму 5 т, к четвертому 20 т; от второго поставщика надо перевезти к первому потребите* 58
Таблица 2.11 Оптимальное решение 31=3 ₽2--2 1 ₽з“2 1 04 = 1 аі а! = 0 3 25 2 5 4 1 20 50 а2 =—1 2 5 3 1 35 5 40 а3=0 3 2 20 4 4 20 bj 30 25 35 25 ПО лю 5 т груза, к третьему 35 т; от третьего поставщика надо пере¬ везти 20 т груза только ко второму потребителю. Минимальное значение целевой функции Anin (х) = 3 • 25+2 • 5 +1 • 20+2 • 5 +1 • 35+2 • 20 = 190 (тонно- километров). 2.7. Задача о перевозках с перегрузкой Забежав несколько вперед (гл. 3), укажем, что сетевой под¬ ход позволяет использовать алгоритм транспортной задачи для решения более сложных задач. В транспортной задаче предпола¬ гается, что ни в одном маршруте, соединяющем источник с неко¬ торым стоком, другие источники и стоки не могут быть использо¬ ваны в качестве промежуточных пунктов. Если считать допусти¬ мой перевозку грузов из источника в сток через другие источники и стоки, то новая задача может быть сведена к обычной транс¬ портной задаче. Объем вычислений, естественно, возрастает, так как в сеть будут включены дополнительные маршруты, соединяю¬ щие каждый источник со всеми другими источниками и каждый сток со всеми другими стоками. Считаем, что транспортные затра¬ ты с//, соответствующие дополнительным маршрутам, известны. Новая задача сводится к модифицированной транспортной зада¬ че, в которой предложения и спрос, соответствующие дополни¬ тельным маршрутам, заданы таким образом, что они не влияют на выбор маршрутов, осуществляемый в основном алгоритме. Вы¬ полнение последнего требования необходимо, поскольку ограни¬ чения на поток по дополнительным маршрутам, задаваемые предложением и спросом, являются фиктивными и вводятся толь¬ ко для вычислительных целей. * Пусть d — минимальная из величин и — суммарных і / предложения и спроса, т. е. d—это реальный поток, протекаю¬ щий по_модифицированной сети. Тогда очевидно, что величину спроса Ьі і-го исходного источника и величину предложения а/ 59
j-го исходного стока' можно принять равными d, т. е. весь поток может протекать через один источник или через один сток. По¬ скольку bi=aj = d, то исходные величины предложения и спроса должньі—быть увеличены на d. Если же увеличить исходные дан¬ ные на d<d, то некоторые планы перевозок, допустимые в исход¬ ной задаче, в модифицированной задаче станут недопустимыми. Выбор d>d не скажется на решении задачи. Поэтому выбира¬ ют d. ; Рассмотрим традиционную транспортную задачу (табл. 2.12). Таблица 2.12 Исходная транспортная задача Ві в2 Вз Запасы А 3 4 7 20 ^2 6 3 2 10 Потребности 10 12 8 Пусть в ней каждый источник и каждый сток может использо- 2 ваться в качестве промежуточного пункта (узла). Здесь (Ц = = і з = ^bj = 30, следовательно, в модифицированной задаче надо вы- /=і брать d = 30. Новая задача о перевозках может быть сведена к транспорт¬ ной задаче со следующими величинами предложения и спроса для стоков и источников: 1) а/=а/ + 30 — для исходных источников, г=1, 2; 2) 6/ = 30—для исходных источников, /=1, 2; 3) 6Zy=30 — для исходных стоков, /=1, 3; 4) &;=&; +30 — для исходных стоков, /=1, 3. Матрица условий модифицированной транспортной задачи для решения задачи перевозок с перегрузкой приведена в табл. 2.13. Транспортные затраты Сі/ для дополнительных маршрутов (три последних строки и два последних столбца в табл. 2.13) предпо¬ лагаются известными. 60
Таблица 2.1& Модифицированная транспортная задача Исходные истоки Исходные источники Запасы в2 В3 Лі л2 А. 3 4 7 0 5 20+30=50 Л2 6 3 2 3 0 10+30=40 в~і 0 5 4 2 5 30 в2 9 0 1 3 2 30 в3 2 4 0 2 6 30 Потребности 10+30=40 12+30=42 8+30=38 30 30 Эту задачу можно решить методом потенциалов. Решив модифи¬ цированную транспортную задачу, тем самым решим поставлен¬ ную задачу о перевозках. 2.8. Целочисленное линейное программирование Рассмотрим следующую задачу линейного программирования: максимизировать /(х) = а00 — а01х1 — а02х2 — ... — аОпхп при условии X/Z-I-1 = #п4-1,0 ^п+1,1 ,2 Хп • (2,5) Хп_|_/и = ^n-vtn, 0 О'П-^-т, 1 Xj ^т-\-п, 2 %% • • • ^т-\-п, пХп • Xj 0 (/ = 1 , . . . , П + 1 , . . . , П + ГЛ) . Заметим, что хп+і, ..., хп+т—слабые переменные, а хь ..., хп — исходные переменные задачи (2.5). Если наряду с ограничениями (2.5) потребовать, чтобы все Х/ (/=1, иг) были целыми, то за¬ дача будет называться задачей целочисленного программирования. Существует большое число задач, особенно комбинаторных, кото¬ рые можно сформулировать как задачи целочисленного програм¬ мирования. ‘ Ограничения (2.5) определяют выпуклую область OABCD в n-мерном пространстве, как показано на рис. 2.6. Узлы целочис¬ ленной решетки на рис. 2.6 изображены точками. Такие точки, расположенные внутри области OABCD, являются допустимыми 61
Рис. 2.6. Области допустимых решений для задач линейного и целочисленного линейного программирования решениями задачи целочислен¬ ного программирования. Опти¬ мальные решения задачи ли¬ нейного программирования всегда располагаются на гра¬ нице области решений. В дан¬ ном случае граничные точки не являются даже допустимыми решениями, поскольку ни одна из них не целочисленна. Пред¬ положим, что область допусти¬ мых решений сужена до выпук¬ лой оболочки допустимых це¬ лых точек внутри допустимой области. На рис. 2.6 эта выпук¬ лая оболочка показана затенен¬ ной областью OEFGH, которую можно рассматривать как область допустимых решений некото¬ рой другой задачи линейного программирования. Действительно, если к задаче линейного программирования, определяющей до¬ пустимую область OABCD, добавить ограничение типа RR\ как показано на рис. 2.6, то для вновь полученной задачи OEFGH будет областью допустимых решений. Такая область обладает двумя важными свойствами: 1) содержит все допустимые целочисленные точки исходной задачи линейного программирования (поскольку является выпуклой оболочкой этих точек); 2) все крайние точки новой области — целочисленны. Поэтому любое базисное опти¬ мальное решение модифицированной задачи линейного програм¬ мирования имеет своими компонентами целые числа и является оптимальным решением исходной задачи целочисленного програм¬ мирования. Как только будут введены дополнительные ограничения, мож¬ но решать модифицированную задачу линейного программирова¬ ния любым обычным методом, и полученное базисное оптималь¬ ное решение автоматически будет целочисленным. Представлен¬ ный ниже целочисленный алгоритм обладает следующими свой¬ ствами: 1) все дополнительные ограничения сохраняют допусти¬ мые точки исходной целочисленной задачи; 2) за^конечное число шагов создается достаточное число дополнительных ограничений для того, чтобы оптимальное решение модифицированной задачи было целочисленным; 3) дополнительные ограничения (гиперплос¬ кости) проходят по крайней мере через одну целочисленную точ¬ ку, хотя и не обязательно находящуюся внутри выпуклой оболоч¬ ки; 4) каждое новое ограничение сокращает область допустимых решений исходной задачи целочисленного программирования. Сле¬ дует подчеркнуть, что оптимальное решение исходной задачи мо¬ жет быть получено прежде, чем размер допустимой области бу¬ дет сокращен до размеров выпуклой оболочки. К тому же, по¬ скольку оптимальное целочисленное решение определяется пере- 62
сечением п гиперплоскостей, таких гиперплоскостей существует- не более, чем это необходимо; некоторые из них могут соответст¬ вовать ограничениям исходной задачи. Задачу целочисленного программирования также можно запи¬ сать в виде табл. 2.14. Таблица 2.14 1 —%1 . • • — *п К*) аоо аоі аоп Х1 0 —1 хп 0 —1 хп+\ 0 агг+\, 1 * • • ап4-1, п Хп+т ап-\-т, 0 1 ' ап-\-т, п Обычно в ограничения задачи (2.5) включают тривиальные соотношения Х/ =—(—Х/) (/=1, п). Причины представления пере¬ менных в виде (—Хі), (—х2), ..., (—Хп) —чисто исторические, но это стало практикой в целочисленном программировании. Будем использовать а/(/=0, /г), для обозначения /-го столбца текущей таблицы и Л//(£ = О, п + т; /=0, /г)—для обозначения элемента і-й строки и /-го столбца таблицы. Предполагается, что все ац в исходной таблице целые. Следовательно, все слабые перемен¬ ные Хл+і, ..., Хп+т должны быть также неотрицательными целыми числами. Вначале задачу целочисленного программирования рассматри¬ вают как задачу линейного программирования и решают ее с по¬ мощью прямого или двойственного симплекс-метода. В конце ра¬ боты алгоритма (f=l, n + m) и ао/^О (/=1,п). Если и целые для всех і, то получено оптимальное решение целочислен¬ ной задачи. В этом случае решение получается сразу, без исполь¬ зования ограничений целочисленности. Если но не все це¬ лые, к ограничениям (2.5) добавляют еще одно. Новое ограниче¬ ние записывают внизу таблицы так, чтобы задача перестала быть прямо допустимой, т. е. aZ0<0 для ï=n+m+l. Затем используют двойственный симплекс-метод с целью сделать все а/о^О. Если Uîq получаются нецелыми, в таблицу добавляют новые ограничения до тех пор, пока все (r=l, п+/п) не станут целыми и неотри¬ цательными. 63
Если после введения дополнительного ограничения текущая таблица перестает быть прямо допустимой, то текущее решение, представляющее собой вершину многогранника решений, не удов¬ летворяет этому дополнительному ограничению. Другими слова¬ ми, дополнительное ограничение отсекает часть пространства ре¬ шений. Если дополнительные ограничения не отсекают ни одной целочисленной точки пространства решений исходной задачи, то, вполне вероятно, после введения достаточного числа дополнитель¬ ных ограничений вершины суженного множества решений будут целочисленными. Тогда, использовав симплекс-метод, можно най¬ ти оптимальное целочисленное решение. Трудность состоит в си¬ стематическом получении дополнительных ограничений и доказа¬ тельстве конечности алгоритма. . Каждый раз после проведения итерации симплекс-метода про¬ исходит изменение множества небазисных переменных. Изменяет¬ ся и таблица. Будем использовать t для обозначения /-таблицы. Изложим сам алгоритм. Шаг 1. Решить задачу целочисленного программирования как задачу линейного программирования с помощью прямого или двойственного симплекс-метода. Если получено оптимальное ре¬ шение задачи линейного программирования, то (і=1, т+п) и aQ}^0 (/=1, ri). Шаг 2. Если aiQ — все целые, то задача решена и решение по¬ лучено без использования дополнительных ограничений. В про¬ тивном случае пусть а*0 — первая нецелочисленная компонента в ûq . Тогда f-я строка называется производящей. Записать внизу таблицы уравнение s = -//o-ѴД.(-х'-), (2.6) / где fiQ=aiQ— [ах0], fr0>0, fl7=af/—[az/]? [•] — ближайшее к числу • целое. Переменную s называют слабой переменной Гомори, а уравнение (2.6) —отсечением Гомори. Проделать шаг (двойственного) симп¬ лекс-метода, использовав в качестве ведущей строки отсечение Гомори (2.6). При этом таблица останется двойственно допусти¬ мой. Повторять до тех пор, пока все а^ (i=l, n+m) не станут целыми неотрицательными. Если а^ на некотором шаге остается отрицательным, следующий шаг (двойственного) симплекс-метода производится без введения отсечения Гомори. (Если abo становит¬ ся отрицательным, нулевую строку не выбирают в качестве про¬ изводящей. Если #00 становится нецелым, следует выбрать нуле¬ вую строку в качестве производящей). В приведенном ниже числовом примере все дополнительные ограничения сохраняются на протяжении вычислений. Это сдела¬ но для того, чтобы показать, что эти дополнительные ограниче¬ ния представляют собой неравенства. Причем, если эти неравенст¬ ва
ва выразить через исходные небазисные переменные, они будут иметь целые коэффициенты. Если сохранять все строки, соответствующие слабым перемен¬ ным Гомори, то эти слабые переменные могут стать базисными. Если слабая переменная Гомори вошла в базис с неотрицатель¬ ным значением, то соответствующая строка представляет собой неравенство, справедливое при текущем решении, и эта строка может быть вычеркнута. Если слабая переменная Гомори стано¬ вится базисной с отрицательным значением, соответствующую строку следует использовать в качестве ведущей. Если сохранять все строки, соответствующие всем отсечениям Гомори, то, вообще говоря, потребуется меньшее число дополнительных ограничений, однако увеличение таблицы предпочтительнее, чем введение лиш¬ них дополнительных ограничений. Приведем пример, иллюстрирующий алгоритм. Пример. Рассмотрим задачу целочисленного программиро¬ вания: максимизировать /(%) = 4%! + 5х2 + при условиях 2%2 < 10 » Хі + 4х2 <11; + Зх2 <13. , х2, х3 > 0 (целые). Вводя слабые переменные х4, х5, хб, получаем: 1 —Х1 —х2 —Хз f(x) 0 —4 —5 —1 0 — 1 0 0 х2 0 0 —1 0 *3 0 0 0 —1 х4 10 3’ 2 0 Х5 11 1 И 0 Хв 13 3 3 1 3—1290 65
Решаем задачу линейного программирования (ведущий эле¬ мент отмечен) : 1 —Х1 —х5 —ха f(x) 55/4 —11/4 5/4 — 1 0 — 1 0 0 х2 11/4 . 1/4 1/4 0 *3 0 . .0 0 —1 х4 18/4 1 10/4 1 —2/4 0 *5 0 0 — 1 0 хб 19/4 9/4 -3/4 1 1 —х4 —хь • — Хз f(x) 187/10 11/10 —7/10 —1 18/10 4/10 —2/10 0 х2 23/10 —1/10 3/10 0 *3 0 0 0 —1 х4 0 —1 0 0 *5 . 0 0 —1 0 *6 7/10 —9/10 —3/10 ІТІ Ведущий столбец ! 1 —х4 —Хц —хв f(x) 194/10 2/10 4/10 1 18/10 4/10 —2/10 0 х2 23/10 —1/10 3/10 0 Хз 7/10 —9/10 —3/10 1 Производящая х4 0 —1 0 0 строка Х5 0 0 —1 0 Хб 0 0 0 —1 S1 —7/10 —1/10 |—7/10| 0 Получено оптимальное решение задачи линейного программиро¬ вания: f (х) = 194/10, %і = 18/10, х2=23/10, х3 = 7/10. Оно не цело¬ численное. Приступаем к шагу 2, дописываем в последней табли¬ це уравнение отсечения и назначаем производящую строку и ве- дущий столбец: 1 —х4 —S1 —ха f(x) 19 1,7 4/7 1 Х1 2 3/7 —2/7 о ■ х2 2 -1/7 3/7 0 Хз 1 —6/7 —3/7 1 х4 0 —1 0 0 Х5 1 1/7 —10/7 0 Х6 0 0 0 —1 $1 0 0 —1 0 66
'Откуда находим оптимальное целочисленное решение fmax(x) = 19, Xj = 2, Х2 = 2, Х3=1. Выразив х4, х5 и хв через исходные небазисные переменные хь х2 и х3, получим неравенство Si^O с целыми коэффициентами: Го ”1” Іо 0 — $Х1 — 2х2) + (11 — х, — 4х2) > 0 , или Хі+Зх2^8. Чтобы получить матрицу, полностью целочислен¬ ную, просто продолжим введение отсечений: Ведущий столбец і 1 — —S1 — 1 . —$2 —Si —xe fM 19 1/7 4/7 1 fW 19 1 0 1 *1 2 3/7 —2/7 0 *1 2 3 —2 0 *2 2 —1/7 3/7 0 • *2 2 —1 1 0 *3 1 —6/7 —3/7 1 *3 1 —6 3 1 х4 0 — 1 0 0 Производя¬ х4 0 —7 4 0 1 1/7 — 10/7 0 щая строка *5 1 1 —2 0 0 0 0 —1 0 0 0 —1 51 0 0 — 1 0 S1 0 0 —1 0 s2 0 —1/7 -4/7 0 s2 0 —1 0 0 2.9. Постановка задачи об оптимальном раскрое материалов (о минимизации отходов) Пусть некоторый полуфабрикат (например, листы фанеры) по¬ ступил на предприятие в виде т различных партий, содержащих соответственно ..., ат единиц полуфабриката одинакового для каждой партии размера. Из поступивших полуфабрикатов требу¬ ется изготовить возможно большее число комплектов деталей, в каждый из которых входит k\ деталей первого вида, k2 деталей вто¬ рого вида и т. д., ki деталей /-го вида. Пусть каждую единицу по¬ луфабриката можно раскроить на детали п различными способа¬ ми, причем при раскрое единицы і-й партии /-м способом получа¬ ется ацх деталей s-ro вида. Обозначим через хц число единиц из і-й партии полуфабрика¬ тов, которые намечено раскроить /-м способом, так что из і-й пар¬ тии при /-м способе раскроя будет получено ац8хц деталей s-ro вида. Всего же по плану из всей і-й партии дета- п лей s-ro вида будет получено будет получено т п 2 aiisxif ‘ І=1 /=1 ciijsXij , а из всех т партий их Так как в каждый комплект гото- 67
вой продукции должно входить ks-деталей s-го вида, то деталей позволит их использовать для составления т п X X aijsxij /=1 /=1 ks ‘ комплектов, и, таким образов, число полных комплектов, которое можно будет выпустить по данному плану ||xz/||, равно наименьше¬ му из частных т п т п S 2 aijixij i=\ f=l >=1 /=1 Введением дополнительной переменной % сведем рассматривае¬ мую задачу к задаче максимизации f(x)=g при ограничениях т п X X ььи (s=—О, Хц + ... + xln = at (і = 1, т) , В > 0 , хц 0 (і = 1, т ; / = 1, п) — целые числа. Не всегда эту задачу решают как целочисленную. Если значения переменных в полученном оптимальном решении задачи линейно¬ го программирования достаточно велики, то приближенное цело¬ численное решение получают из него путем округления до бли¬ жайших допустимых целых чисел. 2.10. Задача о наилучшем использовании посевной площади Пусть поД посев п культур отведено т земельных массивов площадью соответственно в ..., ат гектаров, причем пусть сред¬ няя урожайность /-й культуры на і-м массиве составляет ац цент¬ неров с гектара, а выручка за один центнер j-й культуры состав¬ ляет р} рублей. Определить, какую площадь на каждом массиве следует отвес¬ ти под каждую из культур, чтобы получить максимальную выруч¬ ку, если по плану должно быть собрано не менее &/ центнеров j-й культуры (j=l, п). Обозначим через хі/ площадь, которую предполагается отвести под j-ю культуру на і-м массиве, так что хц+ ... +хіп=аі (і=1, /и). Ожидаемый средний урожай j-й культуры со всех массивов 01/^1/+ ... 4-От/^тЛ 68
По плану он должен быть не менее bj центнеров: ацХц+ ... Хат/хт/^Ь/ (j=l, п), Ожидаемая выручка за урожай /-й культуры p/(a1fXi/+ ... +атІхті), а за урожай всех культур Рі + ••• + ... -j-Pn(ûln^ln-!- ••• ~І~ОтпХтп)- Таким образом, задача заключается в максимизации f (Х) =Pi (ОцХц-|“ ... ~l~OjnlXml) + ... +Рл (OinJCm+ ... -^-ClmnXmn) от переменных Хц,..., хц,..., хтп при выполнении следующих ограничений: Хц . . . Xjn = аг , Х/ni + • • • + Хтп — @т > ацХц + ... + ат1хт1 , й1лх1я + • • • + ^тп^тп , х/у > 0 (і = 1, т ; j = 1, и) . Как обычно, задачу решают симплекснметодом. Иногда задача об оптимальном распределении посевной пло¬ щади выглядит так: имеющуюся посевную площадь распределить под посев п культур так, чтобы обеспечить максимальный урожай при соблюдении определенного соотношения k\ : :... : kn, в кото¬ ром должны производиться эти культуры. Введением дополнительной переменной g, такой, что aljxlj + - - - + amjxmj g q__ 1, , kJ ’ ’ рассматриваемая задача сводится к задаче линейного программи¬ рования — максимизировать f(*)=Ê при ограничениях aljxlj + • • • + amjxmj YYnJ . kj ' ’ ’ Хи + ... 4~ Xin = a(- (i= 1, m) , g, xz/>0 (i = 1 , m ; j = 1, n) . 2.11. Задача о закреплении самолетов за воздушными линиями Эта задача возникает при выборе оптимального варианта пла¬ на закрепления самолетов за данными воздушными линиями, обеспечивающего необходимые объемы перевозок при минималь- 69
них суммарных эксплуатационных расходах. Она формулируется так. Пусть имеется п различных типов самолетов, которые нужно распределить между т авиалиниями. Пусть месячный объем пе¬ ревозок самолетом і-го типа на /-й авиалинии равен а,/ единицам, а связанные с этим месячные эксплуатационные расходы состав¬ ляют Ьц рублей. Определить число хц самолетов і-го типа, кото¬ рое следует закрепить за j-й авиалинией для обеспечения перевоз¬ ки по этой линии сц единиц (і=1, п\ /=1, т) при минимальных суммарных эксплуатационных расходах, если известно, что име¬ ется Ni самолетов t-го типа (і=1, га). Так как объем перевозок по /-Й авиалинии d\jX\j+ ... + dnjXnj tn), а суммарные расходы составляют при этом т п 2 2 ь‘іХіі ’ f=l r = l то задача состоит в минимизации т п /=1 І=1 при ограничениях аі jXij + . . . + anjXnj CLfij = 1 , m) , Xi\ + . . . + Xim = Ni (i= 1 , п) , > 0 (i = 1, n ; j = 1 , m) . и решается симплекс-методом с учетом целочисленности Хц. Пример. Пусть три типа самолетов следует распределить меж¬ ду четырьмя авиалиниями. В приводимой ниже таблице задано число самолетов каждого типа, месячный объем перевозок каж¬ дым самолетом на каждой авиалинии и соответствующие эксплуа¬ тационные расходы. Тип самолета Число самолетов Месячный объем перевозок одним самолетом по авиа¬ линиям Эксплуатационные расходы на один самолет ш по авиалиниям 1 1 1 " ,и 1 ! ІѴ 1 1 11 1 ш 1 IV 1 50 15 10 20 50 15 20 25 40 2 20 30 25 10 17 70 28 15 45 3 30 25 50 30 45 40 70 40 65 Надо распределить самолеты по авиалиниям так, чтобы при минимальных суммарных эксплуатационных расходах перерезти по каждой из четырех авиалиний соответственно не менее 300, 200, 1000 и 500 единиц груза. 70
Обозначим через Хц число самолетов і-го типа (і=1,3), кото¬ рое планируется закрепить за j-й (j=l, 4) авиалинией. Тогда за¬ дача сводится к минимизации f 00 = 15хц+20х12+25хіз+40хі4+70хгі +28X22 + +15хг з+45хг 4+40хзі-|-70Хз 2+40хз з65хз 4 при ограничениях 15Х]д + 30х21 + 25х31 300 , 10х12 + 25х22 + 50х32 > 200 , 20х13 + 10х23 + ЗОх33 1000 , 50х14 + 17х24 + 45х34 > 500 , *11 + *12 + *13 + *14 = 50 , *21 + х22 + х23 + х24 = 20 , *зі +х32 + х33 + х34 = 30 , х;7 > О (і = TJ; j =ІЛ) . Перепишем ограничения в виде у± = 1 5хп + 30х21 + 25х31 — 300 0 у2 = 10х12 + 25х22 + 50х32 — 200 > 0 , у2 — 20х13 + 10х23 + ЗОх3з— 1000 0 , у4 = 50х14 + 17х24 + 45х34— 500 > 0 , 0 = Хц х12 х13 Х14 + 50 , 0 = — Х21 х22 х23 Х24 + 20 , 0 = ■ х31 х32 х33 х34 + 30 , xt7 > 0 (і = 1J ; j = М) Составив таблицу *11 *12 *13 *14 *21 *22 *23 —*24 *31 *32 —*33 *34 1 Уі —15 0 0 0 —30 0 0 0 —25 0 0 0 —300 У2 0 —10 0 0 0 —25 0 0 0 —50 0 0 —200 Уз 0 0 —20 0 0 0 —10 0 0 0 —30 0- -1000 Уь 0 0 0 —50 0 0 0 —17 0 0 0 —45 —500 0 и 1 1 1 0 0 0 0 0 0 0 0 50 0 0 0 0 0 1 1 1 1 0 0 0 0 20 0 0 0 0 0 0 0 0 0 1 1 1 1 30 f(*) Ы Ь. —15 —20 —25 —40 —70 —28 —15 —45 —40 —70 —40 —65 0 и освободившись от 0-уравнений, т. е. переведя последние три пе¬ ременные в свободные и вычеркнув столбцы, соответствующие этим свободным переменным, получим преобразованную таб¬ лицу, в которой еще есть отрицательные свободные члены. 71
*12 *13 —*14 —*21 *22 *24 —*31 —*32 *34 1 15 15 15 —30 0 0 —25 0 0 450 Уі У2 1-101 0 0 0 —25 0 0 —50 0 —200 Уз 0 —20 0 10 10 10 30 30 —30 100 Уі 0 0 —50 0 0 — 17 0 0 45 —500 *11 1 1 1 0 0 0 0 0 0 50 х2з 0 0 0 1 1 1 0 0 0 20 *зз 0 0 0 0 0 0 1 1 1 30 /(*) —5 —10 —25 —55 —13 —30 0 —30 —25 2250 Переходим к отысканию опорного решения. Сделав два шага модифицированных жордановых исключений, придем к таблице Уі -^13 Уі Х21 Х22 ^24 -^31 -^32 —-^-34 1 Уі *12 Уз *14 %11 *23 *33 «*) 9 0 20 100 10 20 20 30 1 «|- о 1 ьэ 1 ~ 1 СИ СИ 1 ю|- 1 «lé о il 1 ND 1 СЛ 2600 откуда видно, что решение %13 = %21 ~І~%22 = *^24 = •Х'ЗІ = -^32 = ^34 = 0 > хп=20, х12=20, х14=10, х23=20, х^^ЗО, для которого /т1п(я) = 2600, является не только опорным, но и оптимальным (все коэффици¬ енты f(x)-строки неположительны!). 2.12. Задача о назначениях (проблема выбора) Будем рассматривать задачу о распределении п механизмов (работников) на п работ таким образом, чтобы каждый механизм (работник) выполнял только одну работу и чтобы при заданной производительности каждого механизма на каждой из работ сум¬ марный эффект был максимальным. Обозначим через /=1, п) производительность і-го меха¬ низма на /-й работе. Тогда данная задача, известная под назва¬ нием задачи о назначениях, будет заключаться в таком выборе п элементов из матрицы ||cz/|| по одному из каждой строки и каж¬ дого столбца, чтобы их сумма + ... + спіп (jk =£ Л)Іпри^=^ была максимальной. 72
Обозначив через хц переменную, равную единице (если /-й ме¬ ханизм назначен на /-ю работу) и равную нулю (если он на эту работу не назначен), мы сведем задачу к следующей задаче ли¬ нейного программирования. Среди неотрицательных целочисленных решений системы 2 п уравнений *п+*/2 + ... +х/л=1 (7=1, /г), *і/+Х2/+ ... +хл/=1 (/=1, /г), означающих, что каждый механизм выполняет одну работу и что каждая работа обеспечивается одним механизмом, найти то, кото¬ рое максимизирует л л z=i 7=1 означающее суммарную производительность всех механизмов. Эту задачу решают с помощью сетевых методов, менее громозд¬ ких, чем симплекс-метод (см. гл. 3}. Пример. Имеются три механизма Ль Л2, Л3, каждый из кото¬ рых может быть использован на каждом из трех видов работ В2, В3 с производительностью (в условных единицах), заданной в виде таблицы В1 В2 Вд 12 3 А2 2 4 1 А3 3 15 Требуется так распределить механизм по одному на каждую из работ, чтобы суммарная производительность всех механизмов бы¬ ла максимальной. . Обозначим, как рекомендовалось выше, через хц переменную, равную единице, если механизм Аі назначен на работу В/, и рав¬ ную нулю, если механизм At не назначен на работу В/. Тогда суммарная производительность механизмов f (Х) =Хц + 2Хі2 +ЗХіз4-2Х21+4Х22+^2з + ЗХзі+Хз2+5ХзЗ, ограничения *11 + *12 + *із = 1 > *21 4~ *22 + *23 = 1 » *31 + *32 + *33 = 1 , *11 + *21 + *31 = 1 , *12 + *22 + *32 = 1 , *13 4“ *23 4“ *33 = 1 • Надо максимизировать f (х) при этих ограничениях. 73
Переписав ограничения задачи в виде 0-уравнений, составим таблицу —*11 —*12 —*13 *21 *22 *23 *31 *32 *33 1 0 ІТІ 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 1 к*) —1 —2 —3 —2 —4 —1 —3 —1 —5 0 После избавления от нулевых строк и вычеркивания столбцов, расположенных под перенесенными наверх нулями, получим таб¬ лицу *22 —*23 *32 *33 1 *ii RI —1 —1 —1 —1 *21 i1 1 0 0 1 *31 0 0 1 1 1 *12 1 0 1 0 1 *13 0 1 0 1. 1 fM 1 3 3 0 9 Среди свободных членов таблицы есть отрицательный, так что опорное решение еще не получено. Сделав шаг метода исключения Жордана (разрешающий эле¬ мент —1 отмечен), получим таблицу *11 *23 *32 *33 1 *22 —1 1 1 1 1 *21 Ijj 0 —1 —1 0 *31 0 0 1 1 1 *12 1 —1 0 —1 0 *13 0 1 0 1 1 fM —1 4 4 1 10 В ней все свободные члены неотрицательны, так что можно перей¬ ти к отысканию оптимального решения. Выбрав разрешающий элемент, как указано в таблице, и сделав один шаг модифициро¬ ванного жорданова исключения, получим окончательно Х2і *23 *32 *33 *22 1 *11 0 *31 1 *12 0 *13 1 fM 1 4 3 0 10 74
Из последней таблицы следует, что максимальная суммарная производительность всех механизмов равна 10 (условным едини¬ цам) и достигается при *11 = 0, *12 = 0, Х13=1, *21 = 0, *22=1, *23 = 0, *31= 1, *32 = 0, *33 = 0, т. е. при следующих назначениях: ~ механизма на работу В3, » А2 » В2 » Лз » Ві. Так как в f(x) -строке последней таблицы есть нулевой элемент, то полученное оптимальное решение задачи не единственное. Сде¬ лав шаг модифицированного жорданова исключения с разреша¬ ющим элементом из столбца, содержащего нуль в f(x) -строке, можно найти другое оптимальное решение этой же задачи. 2.13. Задача об оптимальном распределении самолетов между войсками и учебными полигонами Рассмотрим задачу о наилучшем распределении выпускаемых промышленностью самолетов между войсками и учебными поли¬ гонами, на которых обучаются экипажи, для обеспечения лучшей боеготовности противовоздушной обороны. Пусть некоторая воинская часть, участвующая в боевых вы¬ летах и подготавливающая, кроме того, на своем учебном полиго¬ не экипажи (летчиков), снабжается на протяжении п месяцев са¬ молетами по aj единиц (/=1, п) в- начале каждого месяца. Из них часть х/, для которой имеются в наличии подготовленные эки¬ пажи, направляется сразу в войска, а оставшаяся часть а/—Xj — на полигоны для обучения новых экипажей. Боеготовность части определяется числом самолетов с подготовленными экипажами и временем их пребывания в войсках, так называемым числом ак¬ тивных самолето-месяцев. Возникает задача такого распределения получаемых ежемесяч¬ но самолетов между войсками и учебными полигонами, при кото¬ ром будет достигнута максимальная боеготовность части. Пусть до начала рассматриваемой программы на полигоне имеется z0 самолетов. Число самолетов z/, используемых на поли¬ гоне для обучения в /-месяце, будет состоять из Z/-i самолетов, имевшихся в предыдущем месяце, плюс —х, самолетов, получен¬ ных в начале /-го месяца: z/=z/-i+(a/—X/) (/=Гй). Пусть к началу программы имеется уі обученных экипажей, но не обеспеченных самолетами, и в течение месяца на одном са¬ молете обучается k экипажей. Число экипажей у/, обученных к началу /-го месяца, будет состоять из числа у/-і обученных эки¬ 75
пажей, имевшихся к началу предыдущего месяца, и числа kzj-x экипажей, обученных за этот (/—1) месяц: (/=2Гп). Общее число самолетов, направленных в войска к началу /-го месяца, не должно превышать обученных к этому моменту экипа¬ жей, так что Х1 + ... +х^Уі (/=1, n). К концу периода, на который рассчитана программа, самоле¬ ты, поступившие в войска в первый месяц, обеспечат пхх актив¬ ных самолето-месяцев. Самолеты, поступившие во второй месяц, обеспечат (п—1) х2 активных самолето-месяцев и т. д. Самолеты, поступившие в течение всех п месяцев, обеспечат боеготовность в количестве пхх + (п—1)х2+... +!Іп—(/—1)]Х/+ ... +2хп_х+хп активных самолето-месяцев. Задача заключается в максимизации f(x) = ПХх + \п—1)х2 + ...+2хл_1+хл при ограничениях X/ + z, — z/-î — af = 0 (j = 1 , п) ; У/ — ///_! — kzj-x = 0 (/ = 2 , п) ; Уі — — х2— ... — х/ > 0 (/ = Т7п) ; Xj > 0 , у/ > 0 , Z/ > 0 (/ = 1 , /г) . Замечание. К подобной математической модели сводится зада¬ ча о распределении поступающего в ограниченном количестве сырья (например, металла), часть которого идет на изготовление некоторого изделия, а часть для выпуска оборудования, исполь¬ зуемого для производства этого изделия, если конечной целью яв¬ ляется максимальный выпуск рассматриваемого изделия. 2.14. Задача о рациональном соотношении между различными типами бронебойных снарядов Пусть известно, что противник располагает tn видами танко¬ вой брони, но неизвестно, в каком соотношении он ее использует для производства своих танков. Пусть, кроме того, имеется п ви¬ дов бронебойных снарядов и известен закон поражения каждого вида брони каждым из видов снарядов, т. е. известна вероятность ріі поражения танка с і-и броней снарядом /-го вида (/=1,т; /=1,п). Требуется определить, в каком соотношении надо брать раз¬ ные виды снарядов, чтобы, смешав их и использовав случайным образом, обеспечить максимальное значение математического 76
ожидания числа выведенных из строя танков противника, какими бы видами брони он ни пользовался. Если обозначить через yj число снарядов /-го вида (/=1, п), в данной смеси, то математи¬ ческое ожидание числа пораженных танков с î-й броней выразит¬ ся, очевидно, числом ^Z = P/lÿl+ — ~\~РіпУп- Если же определить математическое ожидание для одного снаря¬ да, т. е. все поделить на у^... +уп, то получим Af/=PtiXi+ ... +р/лхл, где y - yj т. е. Xf — доля снарядов /-го вида в общем числе всех снарядов (их количества относятся, как Хі :х2 :... :хл), так что Х1+Х2+ ... +хл=1; Мі — математическое ожидание числа пораженных танков с î-й броней для одного снаряда. Если предположить, что противнику известны типы снарядов, используемые против его танковой брони, и что он будет ста¬ раться свести к минимуму возможный ущерб, причиняемый своим бронетанковым силам, то гарантированное среднее число пора¬ женных танков для одного снаряда составит, очевидно, наимень¬ шее из чисел Мі (і= 1, т). Поэтому задача состоит в таком под¬ боре чисел Xf (/=1, п), чтобы достигался шах min Mz . X 1<і<т Введением переменной g, такой, чтобы выполнялись условия Р/1Х1+ ... +р/лхл>і (f=l, m), рассматриваемая задача сводится к задаче линейного программи¬ рования, т. е. к максимизации при ограничениях хі + • • • + хп — 1 > Р11А'1 + . . . + Ртхп^ В . Рт1х1 + • • • + Ртп > ? » Ху > 0 (у = 1, п). 77
2.15. Задачи о покрытии множества Одним из вариантов задачи размещения производства являет¬ ся задача о покрытии множества, т. е. задача определения мест размещения и их числа. Например, задача размещения складов,, при котором расстояние от склада до каждого потребителя не превышает 100 км, может быть сформулирована как задача о покрытии множества. Другим примером задачи о покрытии мно¬ жества является задача определения числа и размещения на тер¬ ритории города студенческих общежитий, при котором каждый студент тратит на дорогу до учебного заведения не более одного часа, или задача размещения пожарных команд, при котором расстояние до любой точки города покрывается за 5 мин. Задача о покрытии множества может быть сформулирована следующим образом: найти ШІПДХ) = J CjXj /=1 при ограничении 2 ачхі > 1 , f = 1 , /и , (2.7) /=і X} = (0 ; 1) , j = 1 , п . Величины ац называются коэффициентами покрытия и принима¬ ют значения, равйые единице, если потребитель находится в пре¬ делах /-й области (т. е. покрывается /-й областью), в противном случае ац равны нулю. Аналогично X/ принимает значение, рав¬ ное единице, если в /-й области расположен некоторый объект, и равное нулю в противном случае. Ограничения в задаче требуют, чтобы каждый из пг потребителей был «покрыт» по крайней мере одним из п объектов. Цель в этом случае состоит в том, чтобы «покрыть» потребителей с минимальными затратами, причем Cj— стоимость помещения объекта в /-ю область. Поясним смысл термина «покрывать». Если имеется ряд жи¬ лых строений и решается задача размещения пожарных команд, то і-е жилое строение считается покрытым, если пожарная коман¬ да находится в пределах пяти минут езды от этого строения; аналогично, если существует t-й потребитель и речь идет о разме¬ щении заводов, один из которых должен удовлетворять потреб¬ ности этого потребителя, то последний считается «покрытым» при условии, что завод расположен, например в местах 1, 2 или 3. Та¬ ким образом, aii = at-2=az3= 1 и все остальные ац равны нулю для /=#1,3. Поскольку (2.7) является и задачей целочисленного линейно¬ го программирования, то любой приемлемый для ее решения ме¬ тод может быть использован для решения задачи (2.7) г Однако 78
из-за особой структуры задачи (2.7) специально для ее решения был разработан ряд методов: неявного перебора, секущей плос¬ кости, отсечения, эвристические. Обычно задача о покрытии множества при решении проблемы размещения состоит в определении минимального числа объектов, необходимых для удовлетворения (покрытия) потребностей неко¬ торого множества потребителей. В подобной ситуации (2.7) сво¬ дится к так называемой задаче о полном покрытии, которая полу¬ чается из задачи (2.7), если положить все сц равными единице. Ряд задач размещения экстренных служб может быть сформули¬ рован как задачи о полном покрытии. Помимо задачи о полном покрытии возможна постановка за¬ дачи о частичном покрытии. Если задача о полном покрытии со¬ стоит в определении мест расположения объектов и их минималь¬ ного числа, при котором удовлетворяются все потребители, то зада¬ ча о частичном покрытии связана с определением размещения за¬ данного числа объектов, при котором удовлетворяется максималь¬ ное число потребителей. Практически не всегда можно обеспе¬ чить такое число объектов, которое полностью удовлетворяло бы всех потребителей. Обычно число имеющихся в распоряжении объ¬ ектов достаточно только для частичного «покрытия» множества потребностей. В таких ситуациях целесообразно задачу размеще¬ ния свести к задаче о частичном покрытии. Математически задача о частичном покрытии может быть сфор¬ мулирована следующим образом: найти m max f(x) = 2 max ачхі > 1 < / , t=i ■ при ограничениях 2 Xj < К , Xj = (0 ; 1) , І = ~п , (2.8) /=і где К — максимальное число объектов, подлежащих размещению, величины atj и х/ те же, что и в задаче (2.7). Из вида функционала тахаг/Х/, используемого в целевой функ¬ ции в задаче (2.8), следует, что если некоторое место расположе¬ ния потребителя покрывается более чем одним размещаемым объ¬ ектом, то при вычислении f(x) учитывается только максимальная величина ац. Ограничение в задаче (2.8) показывает, что в луч¬ шем случае имеется К объектов для размещения. Заметим, если f(x) равно m — числу потребителей, то это значит, что /С доста¬ точно велико, чтобы полностью удовлетворить всех потребителей. Таким образом, задача о полном покрытии может быть сведена к задаче о частичном покрытии (2.8) для различных значений К, и решение задачи (2.8) при наименьшем значении К, для которо¬ 79
го f(x)=m, будет оптимальным решением задачи о полном по¬ крытии. Однако обычно задачу о полном покрытии не решают таким образом, так как существуют более эффективные методы ее ре¬ шения. Точное решение задачи (2.8) может быть получено с помощью методов динамического программирования, метода ветвей и гра¬ ниц и двойственных методов. Однако они не приемлемы с вычис¬ лительной точки зрения при п^20 и и поэтому для реше¬ ния задачи (2.8) был разработан ряд эвристических методов. 80
Глава 3. СЕТЕВЫЕ (ПОТОКОВЫЕ) ЗАДАЧИ 3.1. Основные определения и приложения потоковых моделей Многие задачи линейного программирования могут быть сфор¬ мулированы как сетевые. Примером таких задач является транс¬ портная задача (рис. 1.2). Хотя можно указать и такие сетевые задачи, которые нельзя сформулировать в виде задачи линейного программирования. Например, таковой является задача комми¬ вояжера. Вследствие специальной структуры сетевых задач для них по¬ лучено большое, число эффективных алгоритмов и изящных тео¬ рем, обеспечивающих решение широкого круга практических за¬ дач. В большинстве сетевых задач оптимальные решения целочис¬ ленны, чего нельзя сказать о решении общей задачи линейного программирования. Основные определения в сетевых (потоковых) задачах. Введем основные определения и понятия. Сеть состоит из множества узлов (называемых также вершинами, или точками соединения) и мно¬ жества дуг (называемых также звеньями, или ребрами), которы'е связывают эти узлы. Если дуга имеет определенную ориентацию (направление), то ее называют ориентированной, или направлен¬ ной. Сеть называют связной, если при любом разбиении множе¬ ства узлов сети на подмножества X и X найдется дуга А,/ или дуга Ац, когда і-й узел Ni принадлежит_подмножеству X, N-^X, а /-й узел Nj принадлежит подмножеству X, N^X. Мы будем рассматривать только связные сети и будем счи¬ тать, что между любыми двумя узлами Nt и N,- имеется не боль¬ ше одной ориентированной дуги Ац и одной ориентированной ду¬ ги Ац, либо имеется только одна неориентированная дуга Ац. Одну неориентированную дугу можно заменить двумя ориентиро¬ ванными. Существование петель (дуг, ведущих из некоторого узла в тот же узел) исключается. Последовательность узлов и дуг сети Ni, Ац, N2, А2з, ..., Nk-i. Ak-i, k, Nk называют цепью (ориентированной цепью), ведущей 8Î
из узла 2Ѵі в узел Nk. Если #і=Л^, то такую последовательность называют ориентированным циклом. Цепь называют простой, если юна не содержит циклов. Путем будем называть последовательность Ni, ЛІ2, N2, Nk-i, Ak-\t k, Nk, где Nk — узлы сети и либо At- ж, либо Лж, і(*=1, £—1) — дуга сети. Путь отличается от цепи тем, что при движении по пути от до Nk можно пройти дугу сети и в направлении, противоположном ее ориентации. Для неориентиро¬ ванных сетей понятия цепи и пути совпадают. В частности, цик¬ лами являются контуры. Контуром называют конечную цепь, начальный и конечный уз¬ лы которой совпадают. Очевидно, что циклы являются замкнуты¬ ми путями, а контуры замкнутыми цепями. Вырожденный цикл называют петлей. Петля образуется одним узлом и одной дугой и поэтому является как контуром, так и циклом. В связной сети для любых двух различных узлов существует по крайней мере один соединяющий их путь или цепь. Частным случаем связных ориентированных и неориентированных сетей являются деревья. Если множество всех узлов и дуг задать в виде графа G= (N, А), где N — множество узлов, А — множество дуг, то дерево определяют как связное подмножество (подграф) G множества (графа) G, не содержащее циклов, т. е. для любых двух узлов дерева существует единственный путь, соединяющий их. В сети, содержащей п узлов, подграф из k узлов (k^n) является деревом, если выполнены любые два из следующих условий: 1) подграф является связным; 2) подграф не имеет циклов; :3) число дуг в подграфе равно k—1. Остовным связующим деревом (остовом) называют дерево, со¬ держащее все узлы сети. Если сеть содержит п узлов, дерево с п узлами и с п—1 дугами является остовом. Кратчайшим (макси¬ мальным) остовом графа (сети) называют дерево с минимальным (максимальным) весом среди всех связующих деревьев этого гра¬ фа. Вес дерева определяют как сумму весов (длин) его дуг. Ве¬ сом (длиной) дуги называют число, соответствующее некоторой характеристике дуги (расстояние, стоимость и т. п.). Каждой дуге Ац ставят в соответствие положительное число Ьц, называемое пропускной способностью дуги (ребра). В сети выделяют два специальных узла: один из них называ¬ ют источником NSi а другой — стоком Nt. Сеть можно рассматривать как водопроводную систему, в ко¬ торой трубы соответствуют дугам, источник воды — источнику NSi сток воды — стоку Nt, а соединения между трубами — ос¬ тальным узлам сети. В качестве пропускной способности выступа¬ ет поперечное сечение трубы. Полезные аналоги могут быть составлены и с электрическими цепями. 82
Потоком из источника Ns b сток Nt в сети называют множест¬ во неотрицательных чисел %//, поставленных в соответствие неко¬ торой дуге сети, если эти числа удовлетворяют следующим линей¬ ным ограничениям: хч 2 X] k ~~ ‘ i k ' — V , если j = s ; 0, если i^=s, j (3.1) V , если j = t у > 0 ; 0 < Хіі bij для всех і, / . (3.2) Здесь первая сумма берется по дугам, ведущим в узел Nj, а вто¬ рая сумма — по дугам, ведущим из узла Nj. Неотрицательное число V называют величиной потока. Число хц называют потоком по дуге Аіі, или дуговым потоком. Ограничения (3.1) выражают тот факт, что в каждый узел (кроме источника и стока) приходит столько потока, сколько из него уходит (условие сохранения по¬ тока). Ограничение (3.2) означает, что поток хц по дуге ограни¬ чен пропускной способностью дуги bij. Очевидно, что задача нахождения величины максимального по¬ дтока в любой сети является задачей линейного программирования: максимизировать ѵ = ^xsj при ограничениях (3.1) — (3.2). Но в / силу специфики задачи сетевые методы решения здесь оказыва¬ ются более эффективными, чем симплекс-метод для общей задачи линейного программирования. Если сеть является цепью А12, N2, ..., Nk с источником Ni и стоком Nk, максимальная величина потока, который может быть пропущен через сеть, ограничивается минимальной из пропускных способностей дуг этой сети. Дуга с минимальной пропускной спо¬ собностью является «узким местом» в сети. В произвольной сети «узкое место» определяют разрезом. Пусть X — некоторое под¬ множество узлов сети, X — дополнение подмножества X Объе¬ динение X и X определяет множество узлов сети). Разрезом (Х> X) называют множество всех дуг А/, для которых M-œX; Nj^X.. Таким образом, разрез представляет собой множество дуг, удале¬ ние которых из сети превращает сеть в несвязанную. Разрез (X, X) называют разделяющим узлы Ns и Nt (или отделяющим узел Ns. от Nt), если Ns^X-, Nt^X. Пропускной способностью с(Х, X), или величиной разреза, называют сумму 2^/ , которую берут ч _ по всем ориентированным дугам, соединяющим Ni^X и Nj^X. При определении разреза учитывают все дуги между подмноже¬ ством Ü и подмножеством X, а при определении пропускной спо¬ собности разреза — только пропускные способности дуг из X в X, ориентированные дуги из X в X не учитывают. Поэтому в общем случае с(Х, Х)=^=с(Х, X). 83
Ясно, что из-за ограничений (3.1) — (3.2) максимальный поток меньше или равен пропускной способности любого разреза, раз¬ деляющего Ns и Nt: ѵ = 2 Хі,'~ 2 Xti- w,-ex » Л\-ех at .ex , тѵ;ех 1 j l j В любой сети величина максимального потока из источника Ns в сток Nt всегда равна минимальной пропускной способности всех разрезов, разделяющих Ns и Nt. Разрез, разделяющий Ns и Nt и обладающий минимальной пропускной способностью, называют минимальным разрезом. Эти утверждения объединены в теореме о максимальном потоке и минимальном разрезе., Л Обозначим через Fst множество неотрицательных чисел хг7, удов¬ летворяющих ограничениям (3.1) — (3.2). Будем называть путь из Ns в Nt увеличивающим поток Fst, если хц<Ьц на всех пря¬ мых дугах и хГ7>0 на всех обратных дугах этого пути. Пот'ок Fst максимален тогда и только тогда, когда не существует пути, уве¬ личивающего поток Fst. Величина максимального потока в любой сети принимает, без¬ условно, единственное значение. Но может существовать несколь¬ ко различных максимальных потоков Fst, имеющих одинаковые значения. Может существовать и несколько минимальных разрезов в сети. Итак, всякая задача о потоке в сети может быть сформулиро¬ вана как задача линейного программирования, но общая задача линейного программирования не всегда имеет целочисленное ре¬ шение. Здесь нас будет интересовать подкласс тех задач линейно¬ го программирования, которые обладают целочисленным оптималь¬ ным решением. Задача линейного программирования с ограниче¬ ниями п V aijXj<Cbi ; і = 1 , m ; > 0 ; j — 1 ,п , j /=і ’ всегда имеет целочисленное оптимальное решение при любом це¬ лочисленном векторе ограничений b = {ôi, b2, ..., Ьт}т, если матри¬ ца А (прямоугольная таблица чисел) / ^11^12 • • • аіп \ А = I ^21^22 • * * ^2п I \^ml^m2 • • ^mn / является абсолютно унимодулярной. Матрицу А называют абсолютно унимодулярной, если все ее миноры равны либо 0, либо ±1. (Минором k-го порядка для матрицы А является определитель k-ro порядка, по¬ строенный из элементов, стоящих на пересечении произвольных k столбцов и k строк матрицы.) 84
Целочисленность оптимального решения означает, что выпук¬ лый многогранник, определяемый ограничениями п 2 ачхі Ьі, і = 1 , пг ; X/ > 0 , j = 1 , п , /=і ймеет целочисленные крайние точки при любом целочисленном векторе Ь, если матрица А абсолютно унимодулярна. Оказывается, что условие абсолютной унимодулярности матрицы А является не только необходимым, но и достаточным для целочисленного оп¬ тимального решения. Проверить унимодулярность матрицы А, вычислив всевозмож¬ ные миноры, достаточно сложно. Существуют достаточные, но не необходимые условия абсолютной унимодулярности матрицы А, которые проверить гораздо легче. Матрица А абсолютно унимо¬ дулярна, если: 1) каждый ее элемент равен 0, +1, —1; 2) каждый ее столбец содержит не более двух ненулевых эле¬ ментов; 3) строки матрицы А можно разбить на два непересекающихся множества и /?2 таким образом, что а) если столбец из А содержит два ненулевых элемента од¬ ного знака, то один из них входит в /?ь другой — в /?2; б) если столбец из А содержит два ненулевых элемента с про¬ тивоположными знаками, то оба они входят либо в либо в /?2. “ Приложение потоковых моделей. В приложениях часто встре¬ чаются задачи, которые могут быть сформулированы в виде задач о кратчайшей цепи, о потоке минимальной стоимости, о макси¬ мальном потоке и т. п. Например, задача о кратчайшей цепи за¬ ключается в следующем. Заданы множества дуг и узлов. Каждой дуге (г, j) поставлена в соответствие величина сц, равная стоимо¬ сти единицы потока по этой дуге. Требуется найти цепь из источ¬ ника s в сток t, минимизирующую стоимость единицы потока из s в t. Примером подобной задачи может быть задача о замене устаревшего оборудования на новое. Здесь минимизируются об¬ щие затраты на закупку и обслуживание оборудования, если лик¬ видационная стоимость при различных сроках службы оборудова¬ ния, а также эксплуатационные расходы и расходы на техническое обслуживание и текущий ремонт в каждый промежуток времени считаются известными. Обычно задают и величину планируемого периода. . Значительное место в приложениях занимают сетевые задачи, связанные с планированием и составлением расписания выполне¬ ния работ по осуществлению больших проектов, по проведению научных исследований и опытных, конструкторских разработок, а также при составлении расписаний движения транспорта, кален¬ дарного планирования, распределения ресурсов и т. д. 85
В более общей интерпретации дугу сети представляют как зве¬ но в механизме, предназначенном для транспортировки потока,, который может протекать по дуге в единицу времени, что опреде¬ ляет пропускную способность дуги. Многие обобщения задачи о максимальном потоке по существу сводят к поиску максимального потока в сети, к легко осуществи¬ мому поиску некоторых цепей сети. Примером одной из таких за¬ дач является задача о потоке в сети с несколькими источниками и стоками, когда заданы мощности источников и возможности (спрос) стоков. В данной задаче множество всех узлов разбива¬ ется на источники S, промежуточные узлы R и стоки Т. Каждому узлу ТѴ/œS ставится в соответствие неотрицательное число at (возможности), а каждому узлу Nj^T — неотрицательное число bj (спрос). ' Возникает система ограничений у X//—= аі ’ £s ; / 2^-2^ = 0’ / k ^xii-^ixkl = bl, ^6Т; І Ь О < Xij < Ьц . Если потоку разрешается течь из любого источника в любой сток, то эта задача легко сводится к задаче с одним источником и одним стоком путем добавления одного дополнительного источ¬ ника и одного дополнительного стока (рис. 3.1). Помимо этого добавляют новые ориентированные дуги, ведущие из дополнитель¬ ного источника во все MœS и имеющие пропускные способности аі, а также ориентированные дуги с пропускными способностями Ьі, ведущие из каждого Nj^T в дополнительный сток. Теперь за¬ дача об удовлетворении требуемого спроса заданным предложе¬ ниям (возможностям) сводится к нахождению максимального по¬ тока в расширенной сети. Если в сети с несколькими источниками и стоками поток дол-. жен идти из определенных источников в заданные стоки, возни¬ кает так называемая задача о многопродуктовых потоках в сети. Рис. 3.1. Сведение сетевой задачи к задаче с оді/ш ис¬ точником и одним стоком 86
Рис. 3.2. Исходная (а) и расширенная (б) сети сток источник Получим еще одно обобщение задачи о потоке, если для каж¬ дой дуги введем ограничение на пропускную способность и сверху, и снизу, т. е. О^Іц^Хц^Ьц. Требуется определить, существует ли поток из источника Ns в сток Nt, удовлетворяющий на дугах ограничениям сверху и снизу. Пусть в сети имеется только одна ориентированная дуга Ац с ограниченным снизу дуговым потоком ///. Расширим сеть, до¬ бавив два новых узла — искусственный источник Nj с предло¬ жением Іц и искусственный сток с таким же спросом Іц. Пропуск¬ ную способность дуги Ац при этом изменим: если она была равна Ьц, то в новой сети она станет равной Ьц—Іц. Добавим, кроме того, ориентированную дугу из Nt в Ns с бесконечной пропускной способностью. Будем искать в расширенной сети максимальный поток из источника Nj в сток Ni. Если величина этого потока в расширенной сети больше или равна Іц, а поток по дуге равен Xts, то в исходной сети существует такой поток из Ns в Nt вели¬ чины v=xts, что Іц^хц. Исходная и расширенная сети приведены на рис. 3.2 а, б. Если в сети имеется несколько дуг, обладающих нижними границами для дуговых потоков, то следует ввести не¬ сколько искусственных источников и стоков, а затем задачу с не¬ сколькими источниками и стоками свести к задаче с одним источ¬ ником и одним стоком введением дополнительного источника и дополнительного стока, как это было сделано в предыдущей за¬ даче. 3.2. Задача о покупке автомобиля Одним из примеров задачи о наикратчайшей сети, или о сети наименьшей стоимости, является задача об оптимизации расходов на приобретение и эксплуатацию автомобиля. ’ Со временем эксплуатационные расходы на содержание авто¬ мобиля заметно возрастают, да и сам автомобиль устаревает мо¬ рально и технически. Возникает вопрос, когда же следует заме¬ нить автомобиль и что принять за критерий, определяющий его замену? Выберем в качестве критерия общие затраты на покупку 87
Рис. 3.3. Сеть для задачи о покупке автомобиля и содержание автомобиля за некоторый период времени Т. Для определенности будем считать: Т=8 лет; в начальный момент ав¬ томобиля нет; решение о покупке автомобиля может приниматься в начале каждого года исходя из затрат на его приобретение, эксплуатационных расходов за период, в течение которого авто¬ мобиль будет использоваться, и ликвидационной стоимости авто¬ мобиля в момент его замены на новый. Предположим, что замена автомобиля должна совершаться по крайней мере каждые 4 года. На рис. 3.3 изображена сеть для рассматриваемой задачи. Началу каждого года соответствует узел. Если автомобиль куплен в начале f-го года, а заменен в начале /-го года, то такому варианту соответствует дуга (і, /). Общие затраты на дуге /—1 (і, f) Ct, = Рі-\- ^mk — sj , где Pi — стоимость автомобиля в на- Л=1 чале і-го года, mk — эксплуатационные расходы в течение &-го года, s, — ликвидационная стоимость автомобиля в начале /-го года. Значения ci, для нашего случая приведены в табл. 3.1. Таблица 3.1 Общие затраты по дугам Шаг 2 3 4 5 6 7 8 9 1 1450 2750 3850 4750 - 2 1700 3200 4450 5450 3 1850 3425 4750 5800 4 1950 3650 5050 6150 5 2075 3875 5350 6500 6 2200 4100 5650 7 2325 4325 8 2450 Вследствие инфляции и модернизации автомобилей возрастает стоимость автомобиля и увеличиваются расходы на его содер¬ жание. Оптимальному решению данной задачи соответствует крат¬ чайшая цепь из узла s=l в узел t=9. Поэтому цепь можно рас¬ сматривать как цепь, минимизирующую стоимость единицы по¬ тока из узла / в узел 9 при условии, что стоим/эсть единицы по¬ 88
тока по дуге (г, /) равна сц. Для решения этой задачи восполь¬ зуемся алгоритмом Дейкстры (Дикстры). В алгоритме Дейкстры минимизируется либо стоимость, либо время прохождения единицы потока по данной цепи. Каждой дуге •ориентированной сети ставится в соответствие обобщенная стои¬ мость дуги Cij. Фиктивным («бесплатным») дугам приписывается стоимость Cij = Ot а каждой паре узлов (г, /), для которых не су¬ ществует дуги, соединяющей их, — стоимость сц = оо. Математи¬ ческая постановка этой задачи следующая: минимизировать при условии 2Л/-2Л.-1; / ] 2 — 2 = ® s ’ * ’ і і = Л/>0; Сі}:>0 • і і Получили задачу линейного программирования с неизвестными fij. Согласно первому равенству единица потока вытекает из источ¬ ника s, а согласно третьему — единица потока втекает в сток t. Второе равенство гарантирует сохранение потока при протекании по сети (естественно, не рассматриваются источник s и сток t). В качестве кратчайшей цепи может быть взята последователь¬ ность смежных дуг (г, /), для которых Д/=1. В алгоритме Дейкстры узлам приписывают либо временные, либо постоянные пометки. Первоначально каждому узлу, исклю¬ чая источник, приписывают пометку, соответствующую длине крат¬ чайшей дуги, ведущей из источника в данный узел. Источнику приписывают постоянную пометку, значение которой равно нулю. Каждому узлу, в который нельзя попасть непосредственно из ис¬ точника, приписывают временную пометку оо, а остальным уз¬ лам — временные пометки cSj, j^s. Если определено, что узел принадлежит кратчайшей цепи, его пометка становится постоян¬ ной. Алгоритм Дейкстры основан на следующем простом факте: если известна кратчайшая цепь из узла s (источника) в узел / и узел k принадлежит этой цепи, то кратчайшая цепь из s в k явля¬ ется частью первоначальной цепи, оканчивающейся в узле k. Ал¬ горитм начинает работать при j = s. Затем величина / увеличива¬ ется на единицу; при j=t алгоритм завершает свою работу. Ите¬ рационная процедура алгоритма состоит в следующем. Для за¬ данного узла / обозначим «длину» кратчайшей цепи cSj из источ¬ ника s в узел /. Если эта «длина» не может быть «улучшена», то 89
соответствующее значение называют постоянной пометкой. В про¬ тивном случае «длину» называют временной пометкой. Сначала постоянную пометку присваивают только источнику. Каждая дру¬ гая пометка является временной и ее величина равна длине дуги, ведущей из источника в соответствующий узел. Для определения «ближайшего» к источнику узла выберем временную пометку с минимальным значением и объявим ее постоянной пометкой. Для получения этой постоянной пометки необходимо следующее. Шаг 1. Рассмотреть оставшиеся узлы с временной пометкой. Сравнить величину каждой временной пометки с суммой величи¬ ны последней из постоянных пометок и «длины» дуги, ведущей из соответствующего постоянно помеченного узла в рассматриваемый узел. Минимальная из двух сравниваемых величин определяется как новая временная пометка рассматриваемого узла. Если вели¬ чина старой временной пометки меньше второй из сравниваемых величин, то пометка остается прежней. Шаг 2. Среди временных пометок выбрать ту, значение кото¬ рой минимально и объявить ее постоянной пометкой. Если при этом постоянную пометку приписывают узлу t (стоку), то алго¬ ритм завершает работу, в противном случае перейти на шаг 1. Для нашего примера: Шаг 0, Припишем источнику (узел 1) постоянную пометку О, а узлам /=2—9 — временные пометки csj=oo. Шаг 1. Для источника остается постоянная пометка 0, для уз¬ ла 2 временная пометка £і2 = 1450, для узла 3 Сі3 = 2750, для уз¬ ла 4 £14 = 3850, для узла 5 €і5 = 4750. Для остальных узлов вре¬ менные пометки равны оо. Последним из постоянно помеченных узлов является узел 1 (единственный, иначе надо было взять узел с минимальной пометкой). Шаг 2. С узлом 1 непосредственно связаны узлы 2—5. Им надо приписать новые временные пометки, равные 02=0+^12=1450, 0з=0+£із=27 50, 04 = 0 +£14 = 3850, ô5 = 0 + £î5 = 4750. Поскольку ô2 минимальна из всех, то узлу 2 приписывают постоянную по¬ метку 02=1450. Шаг 3. Рассматриваем движение из узла 2; оставляем посто¬ янные пометки 0 для узла 1 и 1450 для узла 2. Узлам 3—6, непо¬ средственно связанным с узлом 2, приписываем временные помет¬ ки соответственно бз=£із = 2750, Ô4 = £m = 3850, 05 = ^15 = 4750, ô6=£і6 = 6900, минимальные из возможных временных пометок при движении из узла 1 в узлы / = 3—6. Например, 63 = 62+^23 = = 1450+ 1700 = 3150>2750; б4= 1450 + 3200 = 4650>3850, ...Выбира¬ ем 0з = 2750, 04 = 3850, .... Остальным узлам приписываем времен¬ ные пометки, равные оо. . Шаг 4. Поскольку минимальное значение временных пометок бз, Ô4, 65, бб равно 2750, узлу 3 приписывают постоянную пометку ô3 = 2750. Дальнейшие шаги повторяем аналогично шагам 3 и 4. Результаты вычислений сведем в табл. 3.2. Обратим внимание на выбор временной пометки бб на шаге 9. Последняя постоянная пометка присвоена узлу 5 05 = 4750, тогда 90
Таблица 3.2 Результаты вычислений по алгоритму Дейкстры Шаг 1 2 3 4 5 6 7 8 9 0 0 оо оо оо со 1 [0 1450 2750 3850 4750 оо оо ' оо сю 2 [0 [1450] 2750 3850 4750 оо ос оо оо 3 [0] [1450] 2750 3850 4750 6900 оо сю оо 4 [0 [1450] [2750] 3850 4750 6900 сю оо со 5 [0 [1450] [2750] 3850 4750 6900 8550 оо со 6 [0 [1450] [2750] [3850] 4750 6900 8550 оо оо 7 [о: [1450] [2750] [3850] 4750 6900 8550 10 000 оо 8 [0 [1450] [2750] [3850] [4750] 6900 8550 10 000 со 9 [0 [1450] [2750] [3850] 4750] 6825 8550 10 000 11250 10 [0 [1450] [2750] [3850] 4750] [6825] 8550 10 000 11 250 11 го: [1450] [2750] [3850] 4750] [6900] 8550 10 000 11 250 12 [0: [1450] [2750] [3850] 4750] [6825] [8550] 10 000 11 250 13 [0 [1450] [2750] [3950] 4750] [6825] [8550] 10 000 11 250 14 [0: [1450] [2750] [3850] 4750] [6825] [8550] [10 000] 11 250 15 [0: [1450] [2750] [3850] 4750] [6825] [8550] [10 000] 11 250 16 [0: [1450] [2750] [3850] 4750] [6825] [8550] [10 000] [И 250] для узла 6 временная пометка будет ô6 = ô5 + с56 = 4750 + 2075 = = 6825<6900 (временная пометка бб на шаге 8). Поэтому на ша¬ ге 9 берут минимальное значение бб=6825. Из решения задачи следует, что минимальные общие затраты на покупку и содержание автомобиля составляют за рассмотрен¬ ный период И 250 руб. Кратчайшая цепь состоит из дуг, для каж¬ дой из которых разность между значениями постоянных пометок ее концевых узлов равна длине этой дуги: [ô/I =''[ôd+^7. Послед¬ нее соотношение можно использовать рекурсивно, двигаясь от сто¬ ка t к источнику s. Определив узел, непосредственно предшеству¬ ющий t в кратчайшей цепи, будем повторять данную процедуру до тех пор, пока не достигнем узла s. В нашем случае первое значение сц, совпадающее с разностью между значениями посто¬ янных пометок, равно 6500, т. е. узел 5 непосредственно предше¬ ствует стоку t (узлу 9) в кратчайшей цепи. Следующим узлом кратчайшей цепи (и исходным) будет узел 1. Отсюда для мини¬ мизации общих затрат автомобиль следует заменять в начале первого, пятого и девятого годов. 3.3. Задача о многополюсной кратчайшей цепи Рассмотрим задачу нахождения кратчайших цепей между все¬ ми парами узлов сети. Кратчайшёй цепью между двумя произ¬ вольными узлами является цепь, стоимость единицы потока по которой минимальна. Поскольку направление потока в неориенти¬ рованных дугах нельзя определить заранее, то каждую такую ду¬ гу следует заменить двумя ориентированными дугами с противо¬ 91
положивши направлениями и длинами (стоимостями), равными' длине неориентированной дуги. Предполагается, что длины дуг могут быть как положительными, так и отрицательными. Однако длина, или стоимость, каждого цикла или контура должна быть неотрицательной. Алгоритм решения данной задачи разработан Флойдом. Пусть /Ѵ={1, 2, ..., п} — множество узлов, а сц — ко¬ личественный параметр (длина, стоимость) дуги (і, /), направ¬ ленной от узла і к узлу /. Обозначим через d*k длину кратчайшей цепи из узла і в узел k. Алгоритм Флойда. Он работает следующим образом. Первона¬ чально за длину dik кратчайшей цепи между двумя произвольны¬ ми узлами і й k (между которыми могут быть и промежуточные узлы) принимают длину дуги (f, &), соединяющей эти узлы. Затем последовательно проверяют всевозможные промежуточные узлы, расположенные между і и k. Если длина цепи, проходящей через некоторый промежуточный узел, меньше текущего значения d^, то переменной dik присваивают новое значение; если то значение dik заменяют значением (df/H-d/*). Такую процедуру повторяют для всевозможных пар узлов, пока не будут получены все значения d\k. В алгоритме Флойда начальным значением переменной dik яв¬ ляется величина Cik, а затем данная оценка последовательно улуч¬ шается до тех пор, пока не будет найдена кратчайшая цепь меж¬ ду узлами і и k. Алгоритм Флойда позволяет решать задачу о многополюсной кратчайшей цепи (пути) для сети из п узлов за п итераций. Обозначим символом d[k оценку длины кратчайшей* цепи из узла і в узел k, полученную на /-й итерации, и рассмот¬ рим следующую задачу. Задача. Необходимо соединить восемь объектов многополюс¬ ной цепью кратчайшей длины, причем один из объектов (№ 8) может быть только направляющим информацию, а остальные мо¬ гут и направлять, и получать информацию без каких-либо огра¬ ничений (рис. 3.4). На рис. 3.4 каждый объект представлен узлом, а каждая линия — дугой. Ориентированные дуги соответствуют' распределительным звеньям, которые могут быть использованы^ для передачи информации только в указанном направлении. Чис¬ ла, приписанные дугам, соответствуют расстоянию между объек- Рис. 34. Пример задачи о многополюсной крат¬ чайшей сети 92
тами. Требуется найти для каждого объекта кратчайшие пути, связывающие его с другими объектами. Решение. Воспользуемся алгоритмом Флойда. Поскольку м=8, то число итераций в алгоритме будет 8. На каждой итерации стро¬ ят матрицу длин кратчайших путей, которые содержат текущие оценки длин кратчайших цепей О;'=||^ II, где D0 = 1|cza>I|, и матри¬ цу маршрутов RJ, служащую для нахождения промежуточных уз¬ лов (если таковые имеются) кратчайших цепей. На /-й итерации Rj = ||rkll, где rîk — первый промежуточный узел кратчайшей цепи из і в k, выбираемый среди множества {1, 2, ..., /}, RJ = lk?JI, где rQik=k. Узел гй может быть получен из следую¬ щего соотношения: r3ik = J /{если d’ik 1 > d[j 1 4- dJjk 1 ИГ1 в противном случае . • Строим матрицу длин кратчайших цепей D0 и матрицу маршру¬ тов R0, отсутствие связи помечаем знаком оо; нулем обозначаем связи внутри одного узла. Для D0 получаем ” 0 9 оо 3 оо оо оо _ ÛO 9 0 2 оо 7 оо со оо оо 2 0 2 4 8 6 оо 3 оо 2 0 оо оо 5 оо оо 7 4 оо 0 10 оо 9 оо оо 8 оо 10 0 7 12 оо оо 6 5 оо 7 0 10 оо оо оо оо оо оо со 0 _ для R0 “ 1 2 3 4 5 6 7 8 “ 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 _ 1 2 3 4 5 6 7 8 _ Итерация 1. Выбираем базовый узел /=1. В матрице D0 вы¬ черкиваем /-Ю (базовую) строку и /-й (базовый) столбец. Чтобы определить, приведет ли использование узла 1 к более коротким цепям, необходимо исследовать элементы матрицы D0 с помощью трехместной операции: d{k = шіп^Г1; 4?1 + d/Г1], і ¥= / =г k. Если d^==æ,T. е. /-й элемент базового столбца равен оо, то dü=d/iT1’- Если d/Г1 = оо, т. е. /-й элемент базовой строки равен оо, то d^ik^dik. Если и одно из двух значений d{yx или dfc1 пре¬ восходит dir1, то замену также производить не следует. Столбцы 3, 5, 7 и 8 содержат элементы, равные оо и принадлежащие ба¬ зовой строке, а строки 3, 5—8 содержат элементы, равные оо и принадлежащие базовому столбцу, т. е. исследовать надо элементы 93
(2,2); (2,4); (4,2); (4,4). Поскольку диагональные элементы мож¬ но не рассматривать, необходимо исследовать лишь оценки d°4 и d « : ^24 = min [d°4; Æ + dii] = min [со ; 9 + 3] = 12; d\2 = min [d^; d^ + d?2] = min [oo ; 3 + 9] — 12. Оценки c?24 и ^42 лучше оценок d°4 и dw и должны быть внесе¬ ны в матрицу D1, а в матрице маршрутов надо положить rh =j, Г24 = 1 и г42 =1. Остальные элементы матриц D0 и R0 остаются без изменений. Получим матрицы “ 0 9 X) 3 о.) oo CO oo 9 0 2 12 7 oo oo oo oo 2 0 2 4 8 6 oo D' = 3 12 2 0 oc oc 5 CO oo 7 4 oo 0 10 oo oc oo oo 8 oo 10 0 7 oo oo oo 6 5 oo 7 0 oo _ ce oo oo oo 9 12 10 0 “ 1 2 3 4 5 6 7 8 - 1 2 3 7 5 6 3 8 1 2 3 4 5 6 7 8 R> = 1 1 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 '3 4 5 6 7 8 1 2 3 4 5 6 7 8 _ 1 2 3 4 5 6 7 8 _ Итерация 2. Определим узел 2 как базовый, т. е. проверим, приведет ли его использование к более коротким цепям, и выделяем в матрице D1 вторую строку и второй столбец. Здесь столбцы б, 7, 8 содержат элементы, равные оо, принадлежащие базовой стро¬ ке, а строки 6, 7, 8 — элементы, райные оо, принадлежащие ба¬ зовому столбцу; столбцы и строки 6, 7, 8 не рассматриваем. Ис¬ ключаем и диагональные элементы. Остается исследовать лишь элементы (1,3), (1,4), (1,5), (3,1), (3,4), (3,5), (4,1), (4,3), (4,5), (5,1), (5,3), (5,4). Нетрудно проверить, что здесь улучшены могут быть только оценки d }з, dis, dji, d^, ^5і, d|4, равные оо: d^3 = min [d}3 ; d}2 + ^йз] = min [°° ; 9 4- 2] — 11 ; é/зі = min [йзі ; d^ + ^зі ] — min [°° J 2 + 9] — 11 ; dis = min [d\5 ; d}2 + rfjU] = min [œ ; 9 + 7] = 16 ; d25i = min[dii , dj2 + d2i] = min[œ ; 7 + 9] = 16 ; d45 — min [d45 ; d^ 4“ d2s] = min [оо; 12 -1- 7] = 19; dl4 = min [dl4 ; d|2 + d24] = min [oo ; 7 + 12] = 19 . <94
Таким образом, г ?з = гі5 = Ли = rÏ5 = Ля = Ли =2; остальные эле¬ менты г и остаются без изменения. Новые матрицы имеют вид. “ 0 9 11 3 16 оо оо оо 9 0 2 12 7 ОС ОС оо 11 2 0 2 4 8 6 оо D2 = 3 12 2 0 19 оо 5 оо 16 7 4 19 0 10 ОС оо оо 8 оо оо 10 0 7 оо эс 6 5 оо оо 7 0 оо оо оо оо 9 12 10 0 _ 1 Г 1 2 2 4 2 6 7 8 - 1 2 3 1 5 6 7 8 2 2 3 4 5 6 7 8 R2 = 1 1 3 4 2 6 7 8 2 2 3 2 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 _ 1 2 3 4 5 6 7 8 _ Итерация 3. Определяем, приведет ли использование узла 3 к более коротким цепям. Берем узел 3 в качестве базового и вы¬ деляем 3-ю строку и 3-й столбец в матрице D2. Исключаем диаго¬ нальные элементы, элементы 8-го столбца и 8-й строки, исследуем оставшиеся элементы матрицы D2, получим новые матрицы D3 и R3. Аналогично получаем матрицы D' и R'; / = 4, 8. Матрицы R', / = 5,8, остаются без изменений. Следовательно, оптимальное- решение соответствует матрицам D5 и R5, определяющим и опти¬ мальное расстояние для передачи между объектами и последова¬ тельность передачи информации. " 0 7 5 3 9 13 8 оо ~~ 7 0 2 4 6 10 8 оо 5 2 0 2 4 8 6 оо d5= 3 4 2 0 6 10 5 оо 9 6 4 6 0 10 10 оо 13 10 8 10 10 0 7 оо 8 8 6 5 10 7 0 оо 18 5 13 15 9 12 10 0 _ - 1 4 4 4 4 4 4 8 ” 4 2 3 3 3 3 3 8 4 2 3 4 • 5 6 7 8 R5= 1 3 3 4 3 3 7 8 4 3 3 3 5 6 7 8 4 3 3 3 5 6 7 8 4 3 3 4 3 6 7 8 _ 5 5 5 5 5 6 7 8 _ 95
Например, определим кратчайшую цепь из узла 1 в узел 5. По таблице D5 определяем, что длина этой цепи d 15 =9. Чтобы найти соответствующую последовательность узлов, обратимся к матрице R5. Значение гі5 =4, т. е. узел 4 является первым промежуточным узлом в кратчайшей цепи из узла 1 в узел 5. Теперь надо опреде¬ лить, какой узел следует за узлом 4 в кратчайшей цепи из узла 4 в узел 5. Рассмотрим г 45. Данное значение равно 3. Значит, за узлом 4 следует узел 3. Аналогично, за узлом 3 следует узел 5, так как г35 = 5. Следовательно, кратчайшая цепь из узла 1 в узел 5 определяется последовательностью узлов 1, 4, 3, 5. 3.4. Анализ сложности алгоритмов поиска кратчайших путей В алгоритмах Дейкстры (§ 3.2) и Флойда (§ 3.3) выполняются только две элементарные операции — сложение и сравнение. Рассмотрим сеть, содержащую п узлов. В наихудшем случае в алгоритме Дейкстры конечный узел сети будет n-м по счету узлом, которому приписывают постоянную пометку. Пусть в неко¬ торый момент работы алгоритма т узлам приписаны постоянные пометки, а п—т узлам — временные. Для определения (т+1)-го узла, которому должна быть приписана постоянная пометка, не¬ обходимо вычислить п—т временных пометок, выполнив при этом каждый раз операции сложения и сравнения. После вычисления новых значений временных пометок необходимо также найти ми¬ нимальное среди них, чтобы определить пометку, которая долж¬ на стать постоянной. Данная процедура минимизации состоит из (п—т—1) сравнений. Таким образом если имеется т узлов с по¬ стоянными пометками, то число элементарных операций, которое необходимо выполнить для того, чтобы еще одному узлу припи¬ сать постоянную пометку, равно 3(п—т)—læ3(n—т). Общее число элементарных операций, выполнение которых необходимо для завершения работы алгоритма в наихудшем случае, У 3(п — т) = 3 V (п — т) = 3 [(п — 1) + (п — 2) + т—\ т=\ -г ... + 1 ] = 3/г (п — 2)/2 . В алгоритме Флойда на каждой итерации суммарное число элементов, значение которых должно быть оценено с помощью трехместной операции, можно вычислить, учтя, что: 1) общее число элементов матрицы равно п2; 2) суммарное число элементов в базовой строке и базовом столбце равно 2/г—1; 3) число нулевых элементов на главной диагонали равно п и для них не надо получать оценку; 4) один элемент базовой строки и один элемент базового столбца расположены на главной диагонали; 96
5) анализ каждого элемента требует выполнения одной опера¬ ции сложения и одной операции сравнения; о 6) максимальное число операций, выполняемых на одной ите¬ рации алгоритма, приблизительно равно 2п(п—3); 7) поскольку число итераций равно числу узлов п, общее чис¬ ло элементарных операций в алгоритме Флойда в наихудшем слу¬ чае равно 2п2(п—3). 3.5. Задача о назначениях В практических приложениях достаточно часто необходимо: так распределить рабочих по рабочим местам, чтобы время изго¬ товления изделия было минимальным; так разместить датчики по объектам, чтобы информация о работе объектов была максималь¬ ной; так распределить экипажи самолетов по рейсам, чтобы вре¬ мя простоя техники было минимальным, и т. д. Особенность этой задачи заключается в том, что каждый ресурс (рабочий, датчик, экипаж) используются ровно один раз и каждому объекту будет приписан ровно один ресурс. Решение задачи может быть записано в виде двумерного мас¬ сива Х= [я,-/], r= 1, т, /=1, т, где т — число объектов или ре¬ сурсов. Искомая переменная I 1, если і-й ресурс назначается на у-й объект, 11 ( 0 в противном случае. Критерий эффективности задачи включает в себя элементы мат¬ рицы стоимостей ctj — затраты, связанные с назначением f-го ре¬ сурса на у-й объект. Для любого недопустимого назначения соот¬ ветствующую ему стоимость полагают равной достаточно большо¬ му числу М. Допустимое решение задачи называют назначением. Для заданного значения т ресурсов и объектов существует ml допустимых решений. Допустимое решение строят путем выбора ровно одного элемента в каждой строке матрицы X=||x/j|| и ров¬ но одного элемента в каждом столбце этой матрицы. В задаче о назначениях требуется минимизировать общую стоимость назначений, т. е. необходимо минимизировать т т /=1 при ограничениях: а) каждый ресурс используется ровно один раз — т і ; ровно один ресурс — / . < Z-1 Хц = 1 для всех б) каждому объекту будет т приписан для всех 4—1290 97
Очевидно, что задача о назначения-х является частным случаем транспортной задачи при единичных значениях параметров аі и Ьі. Поэтому для решения задачи о назначениях можно воспользо¬ ваться любым алгоритмом линейного программирования или ме¬ тодом потенциалов для (решения транспортной задачи. Но для по¬ добных задач разработан так называемый венгерский алгоритм, который наиболее эффективно использует специфику задачи о- назначениях. Задача. Разместить 4 датчика у 4 объектов таким образом, чтобы стоимость такого размещения была минимальна. Матрица стоимости назначений имеет вид С = \\сі}\\ = 2 10 9 7 15 4 14 8 13 14 16 11 4 15 13 19 Решение. В процессе решения задачи о назначениях использу¬ ют тот факт, что если к каждому элементу і-й строки добавляют действительное число у/, а к каждому элементу /-го столбца — действительное число б/, то минимизация целевой функции 2.2 сцХц эквивалентна минимизации функции 22^7 » где / і і і d і і — с і і+У і + б / • Шаг 1. Редукция строк и столбцов. Данный шаг предназначен для получения в матрице стоимости назначений возможно боль¬ шего числа нулевых элементов. Для этого в каждой строке из всех элементов вычитают минимальный: 0 8 7 5 11 010 4 2 3 5 0 0 11 9 15 Затем в каждом столбце вычитают минимальные элементы соот~ ветствующего столбца — 0, 0, 5, 0 соответственно: Іко-ІІ = |У| 8 2 5 11 |2| 5 4 2 3 0 0 |£|11 4 15 Шаг 2. Определение назначений. Если в полученной матрице стоимостей можно выбрать по одному нулевому элементу так, что соответствующее этим элементам решение будет допустимым, то данное назначение оптимально. Рассмотрим сначала строки матрицы стоимости назначений. Строки 1, 2 и 4 содержат по одному нулю. Взяв эти строки в по¬ рядке возрастания их номеров, произведем вначале назначение, соответствующее элементу (1,1), и вычеркнем нулевой элемент- 98
(4.1) , так как в столбце 1 может быть только один нулевой эле¬ мент. Затем произведем назначение, соответствующее элементу (2.2) . Элемент (4,1) был уже вычеркнут. Рассмотрим столбцы матрицы стоимости назначений с учетом вычеркнутых нулевых элементов по строкам. Столбцы 3 и 4 со¬ держат по одному нулевому элементу. Проведем третье назначе¬ ние, соответствующее элементу (3,3). В столбце 4 назначение не¬ возможно, так как нулевой элемент стоит в строке 3, а назначе¬ ние в ней выполнено. После выполнения второго шага матрица стоимостей приняла следующий вид: /|сГ| 8 2 5\ 110Д4 ■ \ 2 3 І210 / \ 0 11 4 15/ Поскольку полного назначения нулевой стоимости не может быть получено, необходимо провести дальнейшую модификацию реду¬ цированной матрицы стоимости. Шаг 3. Модификация редуцированной матрицы. Получим но¬ вые нулевые элементы. Определим для редуцированной матрицы стоимостей минимальное множество строк и столбцов, содержа¬ щих нулевые элементы, и найдем минимальный элемент вне дан¬ ного множества: а. Число нулей в строках 1—4 матрицы стоимости соответст¬ венно равно 1, 1, 2 и 1, в столбцах оно равно 2, 1, 1 и 1. б. Максимальное число нулей (по два) содержат строка 3 и столбец 1. Вычеркиваем строку 3. в. Число невычеркнутых нулей равно 1, 1, 1 соответственно в строках 1, 2 и 4. Для столбцов число невычеркнутых нулей равно 2, 1, 0 и 0. Выбираем столбец 1 и его вычеркиваем. Остался толь¬ ко один невычеркнутый нуль — элемент (2,2), поэтому можно вычеркнуть либо строку 2, либо столбец 2. Вычеркиваем строку 2 и получаем следующую матрицу: / I 8 2 5 \ у I 11 4 5 / Если число линий, необходимое для того, чтобы вычеркнуть нуле¬ вые элементы, равно числу строк или столбцов матрицы стоимос¬ ти, то существует назначение нулевой стоимости. г. Минимальное значение невычеркнутого множества равно 2. Вычитая его из всех оставшихся элементов / | 6 0 3 \ \ I 9 2 5 / 99
и складывая его со всеми элементами, расположенными на пере¬ сечении двух штриховых линий (столбца 1 со строками 2 и 3), получаем новую редуцированную матрицу стоимостей: ( 0 60 3\ 130 5 4 J 4 30 О I 092 13/ Остальные элементы предыдущей матрицы стоимости остаются без изменений. Объяснение последней операции следующее. Если значение этого минимального элемента вычесть из всех рстальных элемен¬ тов матрицы, но на месте нулей будут стоять отрицательные ве¬ личины и, по крайней мере, один элемент, не принадлежащий вы¬ деленному (вычеркнутому) множеству строк и столбцов, станет равным нулю. Однако теперь назначение нулевой стоимости мо¬ жет не быть оптимальным, поскольку матрица содержит отри¬ цательные элементы. Чтобы матрица не содержала отрицатель¬ ных элементов, прибавим абсолютное значение наименьшего от¬ рицательного элемента ко всем элементам выделенных строк и столбцов. Отметим, что к элементам, расположенным на пересе¬ чении выделенных строк и столбцов, данная величина прибавля¬ ется дважды. Кроме того, все отрицательные элементы преобра¬ зуют в нулевые или положительные. Новая редуцированная матрица стоимостей содержит еще один нуль — элемент (1, 3). Возвращаемся к шагу 2. Шаги 2 и 3 выполняют до тех пор, пока не будет получено оптимальное ре¬ шение. Шаг 4. Проведение назначений. Проведем назначение, соответ¬ ствующее элементу 1, 3; нуль (1, 1) зачеркиваем. Затем прове¬ дем назначения по элементам (2,2), (4,1), (3,4). Получили оп¬ тимальное решение, поскольку проведено полное назначение: 060 3\ /00 10 130 5 4 1 V и и 1 0 1 0 0 1 _ X = хц = 430 0 1 1 11 1 00 0 1 092 13 / \1 000 Минимальное значение целевой функции (сг-/ берем из исходной матрицы стоимости назначений) : f(x) =9 + 4+11+4=28. Замечание. Если в задаче о назначениях следует обратить в максимум критерий эффективности, то все элементы матрицы стоимостей следует умножить на —1 (тем самым переходим к минимизации исходной целевой функции) и сложить их с доста¬ точно большим числом М так, чтобы вновь получившаяся мат¬ рица стоимости не содержала отрицательных элементов (М до-( 100
статочно выбрать равным по модулю наименьшему отрицатель¬ ному элементу в матрице стоимости). Теперь задачу можно ре¬ шать как задачу минимизации. 3.6. Задача размещения производства Пусть намечается выпуск т видов продукции, которые могли бы производиться на п предприятиях, п>т. Следует из п пред¬ приятий выбрать такие т, каждое из которых будет произво¬ дить один вид продукции. Издержки производства и сбыта еди¬ ницы продукции, плановый объем годового производства продук¬ ции и плановая стоимость единицы продукции каждого вида из¬ вестны. Эту задачу путем введения фиктивных (п—т) видов продук¬ ции с нулевыми стоимостями сводим к задаче о назначениях. Издержки производства и сбыта заданы в табл. 3.3 и 3.4. Таблица 3.3 Издержки производства на единицу продукции (руб.) Вид продукции Предприятие 1 9 3 4 5 1 20 23 38 15 35 2 8 29 6 35 35 3 5 8 3 4 7 Таблица 3.4 Издержки сбыта на единицу продукции (руб.) Предприятие Вид продукции 1 2 3 4 5 1 20 50 20 10 13 2 7 90 8 35 60 3 5 5 4 15 6 Плановый объем производства соответственно 35 000 ед.; 16 000 ед.; 54 000 ед.; плановая стоимость — 55, 50, 30 руб. Решение. Вычислим прибыль на единицу продукции (разность цены и суммарных издержек на производство и сбыт) (табл. 3.5). Таблица 3.5 Прибыль на единицу продукции Предприятие Вид продукции 1 2 3 4 5 1 15 — 18 —3 30 7 ’ 2 35 —69 36 —20 —45 3 20 17 23 11 17 101
Умножив прибыль, приходящуюся на единицу продукции, на го¬ довой объем сбыта, получим общую годовую прибыль, соответст¬ вующую каждой паре: вид продукции — предприятие (табл. 3.6). Таблица 3.6 Прибыль предприятий Предприятие Вид продукции 1 2 3 4 5 1 525 —630 — 105 1050 245 2 5600 — 11 040 5760 —3200 —7200 3 1080 918 1242 5?4 918 Чтобы свести исходную задачу к задаче о назначениях, введем два вида фиктивной продукции (4 и 5), которой соответствует нулевая прибыль. Поскольку это задача максимизации прибыли, то умножим все элементы матрицы на —1. Наименьшее отрица¬ тельное число —5760 — элемент (2,3). Затем ко всем элементам матрицы (кроме нулевых) прибавим число 5760. В результате получим матрицу .стоимости назначений (табл. 3.7). Далее реду¬ цируем матрицу. Модифицируем редуцированную матрицу, вычер¬ кивая в ней третий и четвертый столбцы, четвертую и пятую стро¬ ки. Получим оптимальное решение (табл. 3.8). Таблица 3.7 Матрица стоимости Вид продукции Предприятие 1 2 3 4 5 1 5235 6390 5865 4710 5515 2 160 16 800 0 8960 12 960 3 4680 4842 4518 5166 4842 4 0 0 0 0 0 5 0 0 0 0 0 Таблица 3.8 Оптимальное решение Предприятие Вид продукции 1 2 3 4 5 1 365 1520 1155 [01 645 2 [0] 16 640 0 8960 12 800 3 2 164 [0] 648 164 4 0 [01 160 160 0 5 0 0 160 160 [01 102
Отсюда производство первого вида продукции назначается 4-му предприятию, второго вида — 1-му, третьего вида — 3-му. Сум¬ марная годовая прибыль, соответствующая данному решению, равна 7 892 000 руб. Модифицированный алгоритм решения задачи о назначениях может быть использован и при решении задачи коммивояжера (см. § 3.9). 3.7. Задача о максимальном потоке Пусть задана ориентированная сеть с одним источником s и одним стоком t и пусть дуги (г, /) имеют ограниченную пропуск¬ ную способность. Задача о максимальном потоке заключается в поиске таких потоков по дугам, что результирующий поток, про¬ текающий из источника s в сток t, является максимальным. За¬ дача о максимальном потоке может быть сформулирована как задача линейного программирования и поэтому может быть реше¬ на симплекс-методом. Здесь для ее решения будет использован более эффективный метод расстановки пометок, разработанный Фордом и Фалкерсо- ном. Алгоритм начинает работу с некоторого допустимого реше¬ ния, узлы рассматривают как промежуточные пункты передачи потока, а дуги — как распределительные каналы. Для описания алгоритма вводят два понятия — пометки и увеличивающие (ауг- ментальные) пути потока. Пометку узла используют для указа¬ ния как величины потока, так и источника потока, вызывающего изменение текущей величины потока по дуге, соединяющей этот источник с рассматриваемым узлом. Если qj единиц потока посы¬ лают из узла і в узел j и это вызывает увеличение потока по дан¬ ной дуге, то будем говорить, что узел / помечен из узла7 символом (+?/); в данном случае узлу j приписывают пометку I+qv; і]. Ес¬ ли посылка qj единиц потока вызывает уменьшение потока по дуге, то будем говорить, что узел / помечен из. узла і символом (—qi). В таком случае узлу j приписывают пометку [—<?/; і]. Текущий поток из узла і в узел j увеличивается, когда qj еди¬ ниц дополнительного потока послано в узел j по ориентированной дуге (Z, /) в направлении, совпадающем с ее ориентацией. В та¬ ком случае дугу (i, j) называют прямой. Если qi единиц дополни¬ тельного потока послано в узел / по ориентированной дуге (/, і), т. е. в направлении, противоположном ее ориентации, то текущий поток из / в і уменьшается, а дугу (/, і) называют обратной. Узел j может быть помечен из узла і только после того, как узлу і приписана пометка. Если узел ./ помечен из узла і и дуга (Z, /) прямая, то поток по данной дуге увеличивается и величина, соот¬ ветствующая оставшейся неиспользованной пропускной способ¬ ности дуги, должна быть нужным образом скорректирована. Эту величину обычно называют остаточной пропускной способностью. Если некоторому узлу приписана пометка и при этом использует¬ 103
ся прямая ветвь, то она может иметь только остаточную пропуск¬ ную способность. Увеличивающий (аугментальный) путь потока из s в t опреде¬ ляют как связную последовательность прямых и обратных дуг, по которым из s в t можно послать несколько единиц потока. Поток по каждой прямой дуге увеличивается, не превышая при этом ее пропускной способности, а поток по каждой обратной дуге умень¬ шается, оставаясь при этом неотрицательным. Аугментальный путь потока используют для выбора такого способа изменения потока, при котором поток в узле t увеличивается и при этом для каждо¬ го внутреннего узла сети не будет нарушено условие сохранения потока. Как конкретно можно увеличить поток на q, единиц? Предпо¬ ложим, что дуге (і, /) уже приписан поток f,7^0, f,7^ uih где Uij — пропускная способность дуги (і, /). Величина <?/ не может превосходить остаточной пропускной способности иц—fi}. Но из узла і не всегда можно получить щ,-—fn единиц потока. Отметим, что в узел / можно послать столько единиц потока, сколько их добавлено в узел і, т. е. самое большое qi. Следовательно, поток по прямой дуге (і, /) можно увеличить на величину g/==min-[Çi, fij—uij]. Аналогично помечают узел /, если дуга (j, і) является обратной. Уменьшение потока по дуге (/, /) возможно только е том случае, когда fji>0. Поток может быть уменьшен самое боль¬ шее на число единиц потока, которые можно взять из узла і, т. е. на величину qi. Следовательно, поток по обратной дуге (/, і) мо¬ жет быть уменьшен на величину ç/=min[çi; fji]. ' В начале работы алгоритма источнику приписывают пометку [оо; —], указывающую на то, что из данного узла может выте¬ кать поток бесконечно большой величины. Далее мы ищем аугмен¬ тальный путь потока от источника к стоку, проходящий через по¬ меченные узлы. Все узлы (за исключением источника) в началь¬ ный момент не помечены. Пытаясь достичь стока, мы проходим, выбирая дуги с наибольшими пропускными способностями, по прямым и обратным дугам и последовательно помечаем принад¬ лежащие им узлы. Возможны два случая. 1. Стоку t приписывается метка 'І+^; k\, k — номер узла, свя¬ занного со стоком. В этом случае аугментальный путь потока найден и поток по каждой дуге этого пути может быть увеличен или уменьшен на величину qt. После изменения дуговых потоков текущие пометки стирают и всю описанную процедуру выполня¬ ют заново. 2. Сток t не может быть намечен. Это означает, что аугмен¬ тальный путь потока не может быть найден. Следовательно, по¬ строенные дуговые потоки образуют оптимальное решение (мак¬ симальный поток). Задача: Найти максимальное количество информации, которое может быть передано из источника s в сток t по сети, представ¬ ленной на рис. 3.5. Пропускные способности дуг Uij отмечены на рис. 3.5. 104
Рис. 3.5. Исходные данные для задачи о максимальном потоке (о максимальном количестве инфор¬ мации) Рис. 3.6. Первая итерация Решение. Итерация 1. Каждой дуге (i, j) приписывают пометку If//; иці, где fij — текущий дуговой поток, Uij — пропускная способность ду¬ ги. Приписываем узлу s пометку [оо; —]. Из источника s макси¬ мальный поток идет в узел 2; узлу 2 приписываем пометку [+3; s], так как 92 = min[^s; r/s2] = min [оо; 3] =+3. Из узла 2 мак¬ симальная пропускная способность принадлежит дуге (2, t), веду¬ щей в сток t. Приписываем стоку пометку :[ + 2, 2], так как ç/ = min [<?2; rz2f]=min[3, 2] =2. Изменение дуговых потоков воз¬ можно на 2 единицы fs2 = 2; f2f = 2. Дуги получают следующие пометки (рис. 3.6). Итерация 2. Теперь просматриваем остаточные пропускные способности Uij—fij (выделены жирным шрифтом). Источнику s приписываем пометку [оо; —]. Из источника s предпочтительнее двигаться в узел 1; узлу 1 приписываем пометку [+2; s]. Из уз¬ ла 1 идем в узел 2; узлу 2 приписываем пометку [+2; 1], так как g2=min [çi; rzi2+fi2l = 2. Из узла 2 идем в узел 3. Для узла 3 7з = гпіп[^2; rz23—/2з1=тіп[2; П = 1, узлу 3 приписываем пометку [+1; 2]. Из узла 3 идем в сток. Стоку приписываем пометку [-4-1; 3]. Минимальное изменение дуговых потоков равно 1, т. е. изменение дуговых потоков /зі = 1, fi2=l, /23= 1, /зі = 1. Макси¬ мальный поток равен 2+1=3 ед. Дуги получают следующие по¬ метки (рис. 3.7). Итерация 3. Приписываем узлу s пометку [оо; —]. Из узла s движемся в узел 1: g^min [qs-t us\—Ді1=шіп [оо; 1]= + 1. Узлу 1 приписываем пометку [+1; s]. Из узла 1 идем в сток t: qt = = minçr, U\t—fiJ=min[l, 3] = 1. Стоку t приписываем пометку [+1; 1]. Изменение дуговых потоков для fs\ равно 1; для f\t рав¬ но 1, изменятся только значения потоков на дугах (s, 1) и (1, t). Полные потоки станут равными: f$i = 2, /+=1. Дуги получат сле¬ дующие пометки (рис. 3.8). Максимальный поток станет равным 3+1 = 4 ед. Итерация 4. Приписываем узлу s пометку [оо; —]. Из узла s направляемся в узел 2: ^2=min [qs; uS2—fs2] =min [00; 1]= + 1; узлу 2 приписываем пометку [+1; s]. Из узла 2 мы можем по- 105
Рис. 3.7. Вторая итерация Рис. 3.8. Третья итерация пасть в сток t, только пройдя по обратной дуге в узел 1, а затем в сток t. Определим пометку узла 1 в данном случае: çi = min [<72; /12] =min [+1; 4Г=Ц-'1, т. е узлу 1 приписываем пометку [—1; 21. Для узла t: <7t=min qi; un—fid=min [+1; 1] = + 1; узлу t припи¬ сываем пометку [+1; 1]. Изменение дуговых потоков для fS2 рав¬ но 1, для /12 равно 1, для fn равно 1. Потоки по этим дугам будут соответственно fS2=2, fi2=0, fu=2; максимальный поток из s в t равен 4+1=5 ед. Дуги получают следующие пометки [изменяют пометки только на дугах (s, 2), (1, 2) и (1, /)] (рис. 3.9). Итерация 5. Приписываем узлу s пометку [оо, —]. Из узла мы можем попасть только в узел 3. Для узла 3: Ç3 = min[<7s; us3—/5з1 = =rnin [00; + И=+1; узел 3 получает пометку [+1; $]. Из узла 3 попадаем в сток t : ^f=min[<73; u3t—f3tl = min[l; 1] = + 1. Сток t получает пометку [ + 1, 3]. Изменение дуговых потоков для fs3 и f3t равно 1; соответственно потоки fs3=l; fat —2 (На второй ите¬ рации f3f—l). Максимальный поток равен 5+1=6 ед. Дуги полу¬ чают следующие пометки .(рис. 3.10). Итерация 6. Приписать узлу s пометку [оо, —]. Аугменталь- ■ный поток не может быть найден, т. е. построенные дуговые пото¬ ки образуют оптимальное решение. Максимальный поток (макси¬ мальное количество информации) из источника s в сток t равен 6 ед.: 2 единицы потока идут из источника s через узел 1 в сток /; 1 единица потока идет из источника s через узел 3 в сток 7; 3 еди¬ ницы потока идут из источника s в узел 2, затем 2 единицы пото¬ ка поступают из узла 2 в сток t, а 1 единица потока поступает в сток t через узел 3. Через дугу (1, 2) информация не идет. Рис. 3.10. Оптимальное решение Рис. 3.9. Четвертая итерация 106
3.8. Задача о многополюсном максимальном потоке Мы рассмотрели задачу о максимальном потоке из единствен¬ ного узла s в единственный узел t. В целом ряде технических и экономических приложений возникают задачи, в которых надо оп¬ ределить максимальный потокмежду любыми выбранными парами узлов в сети. Примерами таких систем являются: сети автомобильных дорог, где автострады изображаются дугами, пропускные способ¬ ности которых соответствуют максимально допустимой интенсив¬ ности движения; телефонная или информационная сеть, где линии представляются дугами, а их пропускные способности соответствуют максимальному числу вызовов (или объему информации), которые могут обслуживаться в каждый момент времени; электрические и электроэнергетические системы, где линии электропередачи пред¬ ставлены дугами, а пропускные способности соответствуют макси¬ мальному объему электроэнергии, который может передаваться по линиям в единицу времени и т. п. Задачи о многополюсных максимальных потоках бывают двух видов: анализа и синтеза сети. Задача анализа сети. Задана сеть с ограниченными пропуск¬ ными способностями дуг. Следует определить, каковы величины максимальных потоков, которые можно пропустить между всеми парами узлов в заданной сети. Задача синтеза сети. Требуется построить сеть, в которой вели¬ чины максимальных потоков fu между всеми парами узлов удов¬ летворяют заданным ограничениям снизу и в которой общая про¬ пускная способность всех дуг максимальна. Задачу о многополюсном максимальном потоке можно решить, решив рассмотренную задачу о максимальном потоке между един¬ ственным узлом и единственным стоком. Если пропускная способ¬ ность каждой дуги не зависит от направления движения потока по этой дуге и если каждую пару узлов можно рассматривать как пару источник — сток, то общее число задач о максимальном по¬ токе, которое должно быть решено, равно п(п—1)/2, где п — чис¬ ло узлов в сети. Рассмотрим здесь алгоритм Гомори—Ху, согласно которому максимальный поток в задаче о многополюсном макси¬ мальном потоке определяют только (п—1) раз. Основная идея алгоритма состоит в итеративном построении максимального осто¬ ва дерева, ветви которого соответствуют разрезам, а параметры ветвей — величинам разрезов. Пусть G= (N, А)—неориентиро¬ ванная сеть, где N — множество узлов, А — множество дуг, и пусть dj — пропускная способность дуги (г, /) из множества А, причем сі/=Сц. Максимальный поток между узлами і и / равен Ѵц\ (X, X)// — минимальный разрез, отделяющий і от /(£’œX; /еХ; с(Х, X)z/ — пропускная способность минимального разреза'; отделяющего і от /. Согласно теореме о максимальном потоке и минимальном разрезе Ѵц=с(Х, Х)ц. Если некоторый узел ÆœX, то X);/, а если ÆœX то vkj^c(X, Х)ц. Следовательно, 107
Vij^vik и Vii^Vkj. Поэтому ü,7>min [v(ft; ѵк/]. Если рассмотреть в общем случае связанное множество узлов {i; р; k", q\ /}, то Щ/^ІПІП [Vip, Vpk, Vkq, ^<7/1. Но с другой стороны для максимального остовного дерева ül7Cmin [ѵір, Vpk, vkq, vqi}, где (i, /) — произвольная дуга, не принадлежащая данному дере¬ ву. Если это не так, то вместо любой дуги пути из і в / можно взять дугу (і, /)> в результате чего будет построено дерево с большим весом. Отсюда для любой дуги, не принадлежащей дереву, О|/ = П1ІПІ[і>ір,Ѵрй, Vfcq, Vq/І' Максимальное остовное дерево, удовлетворяющее последнему ра¬ венству, называют деревом разрезов потому, что каждая его ветвь соответствует разрезу, а вес ветви равен пропускной способности разреза. Если требуется определить величину максимального по¬ тока между двумя противоположными узлами, надо в дереве най¬ ти путь, соединяющий эти два узла, и выбрать в этом пути дугу с минимальным весом. Ее вес равен величине максимального по¬ тока между рассматриваемыми узлами. Если некоторый узел s рассматривать как источник, а другой узел t как сток, то максимальный поток между ними vst=c(X, X)st. Если затем в качестве источника и стока выбирают другую пару узлов (і, /), удовлетворяющих условию, что оба они принад¬ лежат X (или X), то множество узлов X [или X, если (і,/) принад¬ лежат X] может быть объединено в один конденсированный узел. При этом величина максимального потока из і в / будет одной и той же для исходной и конденсированной сетей, и в алгоритме Го- мори — Ху при определении величины ѵу используют решение за¬ дачи о максимальном потоке, найденное на предыдущем шаге. Пусть Ni/ — множество узлов, образуемое в результате кон¬ денсации всех узлов, лежащих по ту сторону разреза, где не со¬ держатся узлы і п j; Ау — множество дуг, соединяющих узлы из множества Ny. Если известны пропускные способности дуг, принад¬ лежащих Ау, то для нахождения величины максимального потока между узлами і, j можно воспользоваться процедурой расстанов¬ ки пометок. В свою очередь, пропускные способности дуг из Ау определяют следующим образом. Пусть /і, /2, .... jr— узлы из множества X, непосредственно связанные с узлом іеХ. При конденсации мно¬ жества X дуги (і, /і), (j, /2), .... (i, jr) заменяют одной дугой со¬ единяющей узел і и конденсированный узел X. Пропускная способ¬ ность такой дуги Г Сіх = Су, + Су, + . . . Суг = 2 CUm • m—1 108
Рис. 3.11. Исходные данные для задачи о многополюсном максимальном потоке информации Для определения величины Ѵі/_вновь надо найти минимальный раз¬ рез, отделяющий і от j—(X, Х)ц с минимальной пропускной спо¬ собностью. Теперь можно выбрать другую пару узлов, принадлежа¬ щих либо X, либо X, и построить конденсированную сеть. В резуль¬ тате выполнения процедуры расстановки пометок можно будет определить другой разрез и построить новую конденсированную сеть и т. д. Задача. В сети (рис. 3.11) для каждой пары узлов определить величину максимального потока информации между ними. Решение. Для простоты сначала найдем максимальные потоки между узлами, М, N3, Niti N5. Итерация 1. Выберем два произвольных узла, скажем іЛГі и /Уз, и найдем максимальный поток между ними (путем процедуры рас¬ становки пометок). Получим минимальный разрез (М, N2, Л/в|Мз, N3, N5) величины 4+2+2+ + 2+3=13 и начало пост¬ роения дерева разрезов (рис. 3.12). Итерация 2. Найдем мак¬ симальный поток между N3 и Ni (рис. 3.13). Здесь узлы 1, 2 и 6 объединены в кон¬ денсированный узел. Узел 3 Рис. 3.13. К определению максимального потока между N3 и Ni Рис. 3.12. Начало построения де¬ рева разрезов 109
соединен с узлами 2 и 6, т. е. пропускная способность дуги от конденсированного узла к узлу 3 будет равна 4 + 2 = 6. Узел 5 соединен с узлами 2 и 6, т. е. пропускная способность дуги, соединяющей конденсированный узел с узлом 5, равна 2+3 = 5. Величина максимального потока равна 5+2 + 7=14, минимальный разрез (М, N2, N6, N3, N5\NA). По минимальному разрезу опреде¬ лим, что узлы 3, 5 и (1, 2, 6) лежат по одну сторону в минималь¬ ном разрезе, разделяю¬ щем W3 и ІѴ4. Получим рис. 3.14. Итерация 3. Найдем максимальный поток в той же сети (рис. 3.13) между N3 и N5. Получим минимальный разрез (М, N2, N6, N5, Л^4|.Ѵз) величи¬ ной 5+4+7=16 и симво- дическое изображение се¬ ти (рис. 3.15). Теперь каждая интересующая нас вершина в получен¬ ном дереве (рис. 3.15) со¬ держит только по одному Рис. 3.15. Символическое изображе¬ ние сети с помощью дерева разрезов Рис. 3.16. К нахождению максималь¬ ного потока между узлами М и jV6 Рис. 3.17. К построению дерева разрезов полюсу и максимальные потоки будут /13=/14= = /15=13 (они равны ми¬ нимальной пропускной способности дуги на дан¬ ном пути), /34 = /45= 14; /з5 = 16. Эти потоки равны соответствующим макси¬ мальным потокам в ис¬ ходной сети (рис. 3.15). Если необходимо най¬ ти величины максималь¬ ных потоков между всеми парами узлов, то следует процесс продолжить. Итерация 4, Найдем максимальный поток меж¬ ду узлами и М6всети, изображенной на рис. 3.16. Минимальный разрез (Лгь М21 Мб, ^з, М4, М5) вели¬ чины 6+3+8=17 изобра¬ жен на рис. 3.17. Итерация 5. Найдем максимальный поток меж- 110
4 Рис. 3.18. Дерево разрезов ду узлами іЛГі и ^2« Минимальный разрез (М|Л^2, Мз, N4, N5, N6) величины 10 + 8=18 приведен на рис. 3.18. С помощью дерева, представленного на рис. 3.18, можно определить величины макси¬ мальных потоков между всеми парами узлов (табл. 3.9). Таблица 3.9 Величины максимальных потоков между узлами сети 1 2 3 4 5 6 1 оо 18 13 13 13 17 2 18 со 13 13 13 17 3 13 13 оо 14 16 13 4 13 13 14 оо 14 13 5 13 13 16 14 оо 13 6 17 17 13 13 13 оо Если в двух сетях равны величины максимальных потоков меж¬ ду парами узлов, принадлежащих некоторому заданному множе¬ ству, то эти сети называют потоко-эквивалентными по отношению к заданному множеству узлов. Заметим, что существует много де¬ ревьев, которые потоко-эквивалентны некоторой заданной сети. Потоко-эквивалентное дерево (рис. 3.18) обладает следующей осо¬ бенностью: каждая ветвь этого дерева соответствует некоторому минимальному разрезу в исходной сети. Поэтому его называют деревом разрезов. На дереве разрезов для сети, содержащей п уз¬ лов, показано (п—1) минимальных разрезов исходной сети, не пе¬ ресекающихся друг с другом (см. рис. 3.11). 3.9. Задача коммивояжера В гл. 1 мы упоминали задачу о Кенигсбергских мостах, в кото¬ рой требовалось обойти все мосты, не пересекая ни один из них дважды, т. е. пройти все мосты по кратчайшему пути. Можно привести и другую словесную постановку этой задачи в более общем виде. Некто решил, что настало время вырваться из дома и посмотреть на жизнь в других странах. Он выбрал семь мест, которые намеревался обязательно посетить, получил инфор- 111
мацию о стоимости проезда самолетом в каждый из выбранньіх го¬ родов и стоимость проезда из одного города в другой. Учел все льготы, предоставляемые авиакомпаниями, и составил матрицу стоимостей (табл. 3.10) проезда в выбранные города и обратно. Зная матрицу стоимостей, путешественнику надо так составить маршрут путешествия, чтобы затраты на путешествие были мини¬ мальными и чтобы выполнялось естественное требование: каждый пункт посещается только один раз. Матрица стоимостей из-за льгот авиакомпаний оказалась несимметричной. При симметричной матрице стоимостей процедура решения задачи не изменяется. Таблица 3.10 Матрица стоимостей (условные единицы) № Пункты Исходный пункт Токио Гонконг Лондон Сидней Рим 1 2 3 4 1 5 6 1 Исходный пункт — 270 430 160 300 260 2 Токио 70 — 160 10 300 300 3 Гонконг 200 130 — 350 50 0 4 Лондон 210 160 250 — 180 180 5 Сидней 120 460 270 480 — 50 6 Рим 230 50 50 90 50 — Примечание, уменьшены в 10 раз. В процессе проведения расчетов все стоимости будут Подобные задачи в математическом программировании носят название «задача коммивояжера». Ее формулируют следующим об¬ разом. Коммивояжер должен выехать из исходного пункта и побы¬ вать в каждом из остальных (п—1) пунктов ровно 1 раз и вернуть¬ ся в исходный пункт. Задача заключается в определении последо¬ вательности объезда пунктов, при которой коммивояжеру требует¬ ся минимизировать некоторый критерий эффективности: стоимость проезда, время в пути, суммарное расстояние и т. д. Здесь требует¬ ся выбрать один или несколько оптимальных маршрутов из (п—1)! возможных. Если некоторые города для коммивояжера недоступ¬ ны, то минимальное значение целевой функции должно быть бес¬ конечно большим. Рассмотрим решение задачи коммивояжера методом ветвей и границ. Вначале определяют некоторое допустимое решение (допу¬ стимый маршрут). После чего множество всех оставшихся маршру¬ тов разбивают на все более мелкие подмножества и при каждом разбиении вычисляют нижнюю границу целевой функции текущего наилучшего маршрута. С помощью найденных границ проводят дальнейшее разбиение подмножеств допустимых маршрутов и в ко¬ нечном итоге определяют оптимальный маршрут. Это разбиение подмножеств маршрутов можно рассматривать как узлы дерева. 112
Поэтому данный метод называют методом поиска по дереву реше- ний\ или методом ветвей и границ. * Матрица стоимостей содержит неотрицательные элементы сц. Маршрут Т можно представить как множество упорядоченных пар пунктов Т = {( h, f2), (ъ, із),..., (in-i, inh (Л* и)}- Каждый допу¬ стимый маршрут представляет собой цикл, проходя по которому коммивояжер посещает каждый пункт ровно один раз и возвра¬ щается в исходную точку. Каждая упорядоченная пара (i, j) явля¬ ется дугой, или звеном маршрута. Стоимость маршрута Т равна сумме соответствующих элементов матрицы стоимостей, но только тех, что лежат на маршруте Т\ = 2• і,ІеТ Величина z(T) определена для любого допустимого маршрута и не может быть меньше длины оптимального маршрута, т. е. теку¬ щее значение z(Т) является верхней границей zB(T) стоимости оп¬ тимального маршрута Т. Для вычисления нижних границ стоимости маршрута исполь¬ зуют понятие редукции строк и столбцов матрицы стоимости. Про¬ цедуру вычитания из каждого элемента строки наименьшего эле¬ мента этой же строки и из каждого элемента столбца наименьшего элемента этого же столбца называют соответственно редукцией строк и редукцией столбцов. Матрицу с неотрицательными элемен¬ тами, в каждой строке и в каждом столбце которой содержится по крайней мере один нулевой элемент, называют редуцированной. Она может быть получена в результате последовательной редук¬ ции ее строк и столбцов. Если вычесть из каждого элемента неко¬ торой строки матрицы стоимости постоянную величину с, то стои¬ мость любого маршрута, определяемая новой матрицей, меньше стоимости того же маршрута, определяемого старой матрицей, на величину с, так как для любого допустимого маршрута каждая строка и каждый столбец матрицы стоимости содержит по одному элементу, соответствующему этому маршруту. При редукции от¬ носительные стоимости всех маршрутов останутся неизменными. Следовательно, останутся неизменными и все оптимальные марш¬ руты. Если z\T)—стоимость маршрута Т, определяемая матрицей стоимости до выполнения редукции, Zi (Т) — стоимость того же маршрута, определяемая редуцированной матрицей, Я — сумма всех констант, используемых при вычислении редуцированной матрицы, то z(T) =Zi(T) +Н. Поскольку редуцированная матрица содержит только неотрицательные элементы, то Н является нижней границей стоимости маршрута Т для нередуцированной матрицы стоимости. В алгоритме метода ветвей и границ диагональные элементы ис¬ ходной матрицы стоимости полагают равными оо, т. е. Сп = оо. 1. Выберем произвольный допустимый маршрут, например со¬ стоящий из звеньев (1, 4) (4, 5); (5, 3); (3, -6); (6, 2); (2, 1). Стоимость данного маршрута 2В(Т) = 16+'18+27+0+<5 + 7=73, 113
т. e. для оптимального маршрута стоимость поездки коммивояжера не может превосходить значения гв(Г). / 2. Выполним редукцию строк, а затем столбцов матрицы стои¬ мости; для этого в каждой определим минимальный элемент и найденное значение Сі вычтем из элементов соответствующей стро¬ ки. Получим табл. 3.11. Таблица 3.11 Редукция строк Узлы 1 2 3 4 5 6 сі 1 СО И 27 0 14 10 16 2 6 оо 15 0 29 29 4 3 20 13 оо 35 5 0 0 4 5 0 9 оо 2 2 16 5 7 41 22 43 ОО 0 5 6 18 0 0 4 0 оо 5 3. Затем в полученной табл. З.'П проведем редукцию столбцов. Из табл. 3.11 видно, что проводить следует только редукцию пер¬ вого столбца, так как остальные столбцы содержат нулевые эле¬ менты. Редукция столбцов показана в табл. 3.12. Таблица 3.12 . Редукция столбцов Узлы 1 2 3 4] 5 6 сі 1 оо И 27 0 14 10 16 2 1 со 15 0 29 29 1 3 15 13 оо 35 5 0 0 4 0 0 9 оо 2 2 16 5 2 41 22 43 оо 0 5 6 13 0 0 4 0 оо 5 5 0 0 0 0 0 Н = 48 Строка Q/ содержит вычитаемые константы для каждого столбца при редукции столбцов. Значение нижней границы для всех марш¬ рутов в рассматриваемой задаче равно Н — сумме всех вычитае- 6 мых констант H = V с; + J? Qi= 48. і=і /=і 4. Теперь следует выбрать оптимальный маршрут. Если бы в каждой строке и в каждом столбце было ровно по одному нулево¬ му элементу, то эти элементы и образовали бы оптимальный марш¬ рут и оптимальная стоимость проезда равнялась бы Н. Однако нулевые элементы не единственны в строках и столбцах. Вместо того'чтобы одновременно определять все звенья оптималь- 114
Hord\ маршрута с помощью текущей матрицы стоимости, восполь¬ зуемся алгоритмом, на каждом шаге которого по матрице стои- мостй строится одно звено оптимального маршрута. Естественно вначале выбрать звено нулевой длины, а затем последовательно добавить звенья нулевой или минимальной длины. Если выбрать звено (і, /), то решение не должно содержать других звеньев, со¬ ответствующих элементам і-й строки и /-го столбца; если звено (f, /) можно исключить из окончательного решения, то его можно не рассматривать при выполнении последующих операций. Следо¬ вательно, для каждого звена достаточно рассмотреть следующие два случая: в первом случае звено включают в текущее и все по¬ следующие решения до определения оптимального решения; во- втором — звено исключают из дальнейшего рассмотрения. В на¬ шем примере мы уже получили начальный узел дерева ветвления, соответствующий множеству всех маршрутов с нижней границей стоимости всех маршрутов, равной Я=48, и верхней, равной zB(T)=73. 5. Следующим шагом процедуры является выбор звена, на ко¬ тором будет базироваться ветвление. Так как в каждой строке и в каждом столбце не единственный элемент имеет сгу = О, то надо рассмотреть маршруты, не содержащие звено (i, j). Пункт должен быть связан с некоторым другим пунктом и поэтому каждый маршрут, не содержащий узел (г, /), должен содержать звено Л, у которого стоимость не меньше минимального элемента і-й стро¬ ки, не считая бц. Стоимость звена А обозначим Аі. Аналогично, чтобы в пункт / можно было бы попасть из некоторого другого города, то маршрут, не содержащий узел (г, /), содержит звено В, у которого стоимость не меньше минимального элемента /-го столб¬ ца, не считая Сц. Обозначим стоимость проезда по звену В через В/, а сумму величин Аі и В/ через Фгу. Величину Ф/у называют вторичным штрафом и она равна минимальному штрафу, которо¬ му мы подвергаемся, если не включаем звено (і, j) в оптимальный маршрут. Если штраф за неиспользование звена вычислить для всех звеньев, у которых С/у=О, то можно сравнить соответствующие значения Ф/у и включить в текущий маршрут звено (г, /), за неис¬ пользование которого мы заплатили бы максимальный штраф, т. е. включая звено (î, /), мы получаем выигрыш в стоимости, равный максимальному значению Фгу. Нижняя граница для соответствую¬ щей ветви должна быть выбрана таким образом, чтобы она не пре¬ восходила длины ни одного из маршрутов, не содержащих звена (і, /). Данное требование будет выполнено, если значение новой нижней границы положить равным сумме значений текущей ниж¬ ней границы и максимального штрафа за неиспользование звена (f, /). Для определения максимального значения Фц будем иссле¬ довать все элементы £/у=0; при Qy=/=O величина Ф/у = 0. Данное утвер¬ ждение справедливо в силу того, что если положить сг-у = оо, азатем провести редукцию і-й строки и /-го столбца, то сумма вычитаемых констант будет равна Ф,у. Для нашего случая значения Аі и By приведены в табл. 3.13, а значения Ф/у (вторичный штраф) для 115
Таблица 3.13 Значения At и В/ ' 1 2 3 4 5 6 сі Л. 1 оо 11 27 0 14 10 16 10 2 1 оо 15 0 29 29 1 1 3 15 13 оо 35 5 0 0 5 4 0 0 9 оо 2 2 16 0 5 2 41 22 43 оо 0 5 2 6 13 0 0 4 0 со 5 0 <2; 5 0 0 0 0 0 И = 48 Bj 1 0 9 0 2 0 узлов, соответствующих ^/ = 0, — в табл. 3.14. Максимальное зна¬ чение Ф//= 10 соответствует звену (1, 4). Следовательно, в качест¬ ве базового звена ветвления выбираем звено (1, 4). Таблица 3.14 Значения Ф// Звено (і, і) (1,4) (2,4) (3,6) (4,1) (4,2) (5,6) (6,2) (6,3) (6,5) Фи = Аі + В} 10 1 5 1 0 2 0 9 2 6. Нижняя граница для маршрутов, не включающих звено (1,4), равна Я+Фі4 = 48+ 10=58. Чтобы определить новую ниж¬ нюю границу для маршрутов, включающих звено (1, 4), необхо¬ димо преобразовать матрицу стоимости. Если імы включили в маршрут некоторое звено (k, Z), то в дальнейшем мы не рассмат¬ риваем &-ю строку и Z-й столбец. Кроме того, звено (&, Z) являет¬ ся тогда звеном некоторого ориентированного цикла, и звено (k, Z) не может принадлежать этому же маршруту. Последнее условие МОЖНО выполнить, ПОЛОЖИВ С/*=ОО. Таблица 3.15 Преобразованная матрица стоимости 1 2 3 5 6 2 1 оо 15 29 29 3 15 13 оо 5 0 4 оо 0 9 2 2 5 2 41 22 оо 0 6 13 0 0 0 оо 116
Таблица 3.16 Вторая матрица решений 1 2 3 5 6 с- А- 2 0 14 28 28 1 14 3 15 13 со 5 0 0 5 4 оо 0 9 2 2 0 2 5 2 41 22 оо 0 0 2 6 13 0 0 0 оо 0 0 <2j 0 0 0 0 0 Ях=1 Bj 2 0 9 2 0 Из рассмотрения следует исключить и так называемые запре¬ щенные звенья — звенья, с помощью которых в дальнейшем могут быть образованы циклы, включающие в себя неполное множество пунктов (могут быть образованы подмаршруты). Элементы мат¬ рицы стоимости, соответствующие этим звеньям, берут равны¬ ми оо. Преобразованная матрица стоимости имеет вид (табл. 3.15). Запрещенных звеньев в данном случае не существует. Вторая мат¬ рица решений после редукции строк и столбцов, а также с указа¬ нием значений сц Аі и bj для 2-й матрицы приведена в табл. 3.16. Нижняя граница для маршрута, включающего звено (1,4), может быть вычислена как сумма всех новых вычитаемых констант Hi и старой нижней границы, т. е. нижняя граница равна 48+4=49. Дерево решений для рассмотренных двух этапов имеет вид рис. 3.19. На рис. 3.19 показаны маршруты,, включающие звено ('1,4) и не включающие это звено— (-1,4). В узлах дерева указаны нижние границы для каждого варианта маршрута. 7. С вычисления второй матрицы решений начинается вторая итерация решения. После второй редукции значения Ф2і = 16; Ф36 = =5; ф42 = 2; Фбб —2; ф62 = 0; Фвз = 9 и Фбб = 2. Максимальным сре¬ ди них является значение Фг1 = 16, т. е. выбирают звено (2,1). Новая нижняя граница для маршрута, не включающего звено (2, 1), равна 49+16 = 65. Чтобы определить множество маршрутов, содержащих звено (2,1), вычеркнем во второй матрице стоимости вторую строку и первый столбец. Стоимость звена (4,2) равна теперь оо, но в Рис. 3.19. Дерево решений для первых двух этапов 117
Таблица 3.17 Третья матрица решений 2 3 5 6 сі А. 3 13 со 5 0 0 5 4 со 7 0 0 2 0 5 41 22 со 0 0 22 6 0 0 0 оо 0 0 0 0 0 0 Яі-2 Bj 13 7 0 р третью матрицу решений этот элемент не входит. Но звено (4,2) теперь является запрещенным, поскольку оно могло бы образовать подмаршрут. Поэтому полагаем С42 = оо. В табл. 3.17 приведена третья матрица решений после выполнения редукции. Новая нижняя граница для маршрутов, содержащих звено (2,1), равна 49+2=51. Ветвление на следующей итерации будет осуще¬ ствляться из узла (2,1). Полный маршрут приведен на рис. 3.20. Рис. 3.20. Промежуточное решение Этот маршрут — проме¬ жуточное решение. 8. Построенный пол¬ ный маршрут будет оп¬ тимальным, если его дли¬ на не превосходит длины любого маршрута, соот¬ ветствующего другим звеньям дерева. Длина построенного полного мар¬ шрута равна 63, а ниж¬ няя граница для узла (1т 4), равная 58, меньше 63. Необходимо исследовать и подмножество маршрут тов, которые не содержат звено (1, 4) — исходная матрица стоимости (табл, 3.10). Но для того чтобы исключить все мар¬ шруты, содержащие звено (1, 4), значение элемента Си матрицы стоимости примем равным оо. Полу¬ чим табл. 3.18. Процедуру анализа предыдущих про¬ межуточных точек ветвле- 118
Таблица 3.18 Матрица стоимости возврата «1 2 3 4 5 6 1 со 27 43 оо 30 26 2 7 оо 16 1 30 30 3 20 13 оо 35 5 0 4 21 16 25 оо 18 18 5 12 46 27 48 оо 5 6 23 5 5 9 5 оо ния, которые могли бы определить более короткий маршрут, на¬ зывают возвратом. Поэтому матрицу стоимости называют в дан¬ ном случае матрицей стоимости возврата. 9. С новой матрицей, матрицей стоимости возврата, выполняют описанные процедуры ветвления и построения границ. Полученное при этом дерево изображено на рис. 3.21. Нахождение верхних границ не обязательно, но иногда позволяет сократить проводимые вычисления. Из рис. 3.21 следует, что нижняя граница даже непол¬ ного маршрута, не содержащего звено (1,4), превышаетбЗ. Таким образом, маршрут, содержащий звено (1,4), является оптималь¬ ным. Оптимальный маршрут состоит из следующих звеньев или пар пунктов: (6,2); (4,3); (3,5); (5,6); (2,1); (1,4). Он является ориентированным циклом, стоимость проезда по которому равна 63, т. е. 630 условных денежных единиц. Рис. 3.21. Оптимальное решение 119
Задача коммивояжера не может быть непосредственно сформу¬ лирована и решена как задача линейного программирования. Ос¬ новная особенность задачи коммивояжера заключается в том, что в ней требуется существование ориентированного цикла, в который ровно один раз входят все узлы сети. 3.10. Задача о многополюсной цепи с максимальной пропускной способностью С задачей о многополюсном максимальном потоке тесно связа¬ на задача о многополюсной цепи с максимальной пропускной спо¬ собностью. Алгоритм, описанный в § 3.8, позволяет находить мак¬ симальный поток между каждой парой узлов. Очевидно, макси¬ мальному потоку между каждой парой узлов могло соответство¬ вать множество путей или цепей из источника в сток. В действи¬ тельности в задаче о максимальном потоке рассматривают лишь те пути или цепи, с помощью которых можно увеличить поток из одной точки в другую. Рассмотрим простую сеть, изображенную на рис. 3.22. (Числа, приписанные дугам, соответствуют верхним границам потоков по ним.) Величина максимального потока меж¬ ду узлами А и D равна 40, а соответствующие потоки по‘дугам следующие: Хав = 20, ХАс = 20, Хсв = 5, XBd = 25, Xcd=15. Узлы А и D соединены тремя цепями, как показано ниже. Рассмотрим задачу, относящуюся к приведенной выше сети: какая цепь, ведущая из узла А в узел D, имеет максимальную пропускную способность? Очевидно, цепь с максимальной пропуск¬ ной способностью определяют последовательностью узлов А-+В-+- -+D. Величина максимального потока по этой цепи равна Fmax = =20. Задача, которую мы хотим рассмотреть в данном разделе, это задача о многополюсной цепи с максимальной пропускной способ¬ ностью, т. е. задача о цепи с максимальным потоком между все¬ ми парами узлов. Ху была разработана эффективная вычислительная процедура, которая представляет собой модификацию трехместной операции, используемой при решении задачи о многополюсной кратчайшей цепи (пути). Данный алгоритм работает следующим образом. Шаг 1. Построить матрицу пропускных способностей размером ПХЛ, элементы которой соответствуют пропускным способностям дуг между узлами і и j (i, j= 1, п). 20 15 Рис. 3.22. Сеть для задачи о цепи ^максималь- сУ ной пропускной способностью 120
Шаг 2. а. Для каждого /=1,/г выполнить следующую процедуру: ис¬ ключить /-ю строку и Лй столбец матрицы и над каждым остав¬ шимся элементом dik (диагональные элементы также исключают¬ ся) выполнить трехместную операцию d^ = max{d^; miriWl7, djk\} для всех i, k^j; /=1, п. Еще одна матрица, называемая матрицей маршрутов, необхо¬ дима для определения внутренних узлов каждой цепи. Матрица маршрутов также имеет размеры /г’Х«, где £-й элемент f-й строки в ней первоначально равен k. б. Одновременно с заменами элементов в матрице пропускных способностей выполнить замены элементов в матрице маршрутов по следующему правилу: __ ( j, если dik < min [dl7 , dik], I остается неизменным, если > min [dt7 , djk] . Если узлы і и j не соединены дугой (или связь между ними недопустима), то значение соответствующего элемента dl7 матри¬ цы пропускных способностей полагается равным — оо. •Для иллюстрации данного алгоритма рассмотрим следующую задачу. Задача. Производятся перевозки автотранспортом крупнога¬ баритного оборудования. Требуется перевозить несколько видов оборудования с очень большим вертикальным габаритным разме¬ ром. Это оборудование можно перевозить только по семи утверж¬ денным маршрутам. Задача заключается в выборе маршрутов с максимально допустимыми подмостовыми зазорами. Каждый элемент матрицы, приведенной в табл. 3.19, равен высоте проезда под мостом. Необходимо получить информацию о максимально допустимых вертикальных габаритных размерах гру¬ зов, которые можно транспортировать из каждого пункта погруз¬ ки в каждый пункт выгрузки. Таблица 3.19 Транспортировка крупногабаритного груза 1 В пункт 6 7 2 3 4 5 1 0 11 30 — Gj 2 11 0 . — 12 2 — — X 3 30 — 0 19 — 4 — С 4 — 12 19 0 11 9 — со 5 — 2 — 11 0 — — 6 — — 4 9 — 0 — 7 — — — 20 1 1 0 121
Решение. Для каждой пары узлов определяют соединяющий их маршрут с максимальной пропускной способностью. Ниже при¬ водятся результаты вычислений. Итерация 0: Исходные матрицы Матрица пропускных способностей Матрица маршрутов 1234567 1234567 1 0 11 30 —оо —оо —оо —оо 1 1 2 3 4 5 6 7 2 11 0 — оо 12 2 ОО оо 2 1 2 3 4 5 6 7 3 30 — оо 0 19 —оо 4 —оо 3 1 2 3 4 5 6 7 4 —оо 12 19 0 11 9 —оо 4 1 2 3 4 . 5 6 7 5 —оо 2 0 11 0 ОО 'ОО 5 1 2 3 4 5 6 7 6 —оо —оо 4 9 —оо 0 —оо 6 1 2 3 4 5 6 7 7 —оо —со —оо 20 1 1 0 7 1 2 3 4 5 6 7 Итерация 1: Матрица пропускных способностей Матрица маршрутов 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 0 11 30 'ОЭ —оо ■—оо —оо 1 1 2 3 4 5 6 7 2 И 0 11 12 2 —оо —оо 2 1 2 1 4 5 6 7 3 30 11 0 19 — оо 4 —оо 3 1 1 3 4 5 6 7 4 —оо 12 19 0 11 9 —оо 4 1 2 3 4 5 6 7 5 —оо 2 — оо И 0 —со —оо 5 1 2 3 4 5 6 7 6 —оо —оо 4 9 — оо 0 —со 6 1 2 3 4 5 6 7 7 —оо —оо —оо 20 1 1 0 7 1 2 3 4 5 6 7 Приведем сразу результаты последней итерации 7. Итерация 7: Матрица пропускных способностей Матрица маршрутов 1 2 • 3 4 5 6 7 1 2 3 4 5 6 7 1 0 12 30 19 11 9 —оо 1 1 4 3 3 4 4 7 2 12 0 12 12 11 9 —оо 2 4 2 4 4 4 4 7 3 30 12 0 19 11 9 —оо 3 1 4 3 4 4 4 .7 4 19 12 19 0 11 9 —со 4 3 2 3 4 5 6 7 5 И И И 11 0 9 —оо 5 4 4 4 4 5 4 7 6 9 9 9 9 9 0 —оо 6 4 4 4 4 4 6\ 7 7 19 12 19 20 11 9 0 7 4 4 4 4 4 4 4 \ 7 \ Для каждой пары узлов максимально допустимый вертикаль¬ ный габаритный размер перевозимого груза можно определить не¬ посредственно из последней матрицы пропускных способностей. Оптимальный маршрут также может быть построен с помощью последней матрицы маршрутов. Например, максимальную про- 122
пускную способность цепи из пункта 1 в пункт 4 задают значением элемента di4=19. Соответствующий маршрут строят следующим образом: г'і =3, двигаться из узла 1 в узел 4 через узел 3; Гз4 = 4, двигаться из узла 3 непосредственно в узел 4; г13=3, двигаться из узла 1 непосредственно в узел 3. (7)—4D—42 Отметим, что дуги, соединяющей узлы 1 и 4, не существует. 123
Глава 4. ОСНОВЫ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ 4.1. Условия применимости динамического программирования Как было показано в гл. 1, непосредственное применение толь¬ ко необходимых признаков в задачах математического программи¬ рования для нахождения оптимального решения, как правило, не дает нужных результатов. Во-первых, система уравнений, вытекаю¬ щая из необходимых признаков, оказывается разрешимой только в простейших случаях. Чаще бывает легче непосредственно «нащу¬ пать» максимум целевой функции, чем решить такую систему уравнений. Во-вторых, указанный способ вовсе не гарантирует на¬ хождение решения во всех случаях. Даже если составленная сис¬ тема уравнений может быть решена, отыскание абсолютного экстремума целевой функции требует системы проверок, тем бо¬ лее сложной, чем больше аргументов у функции. Наконец в ряде практических случаев целевую функцию вооб¬ ще нельзя дифференцировать, например когда элементы x = {xit х2,..., Хт} представляют собой не непрерывно изменяющиеся, а дис¬ кретные величины. Все эти обстоятельства приводят к тому, что применение клас¬ сических методов математического анализа или вариационного ис¬ числения в большинстве задач планирования оказывается неэф¬ фективным: при этом первоначально поставленная задача отыска¬ ния экстремума приводит к таким вторичным задачам, которые оказываются не проще исходной, а зачастую сложнее. В гл. 1 было также показало, что все задачи математического оптимального программирования в зависимости от вида целевой функции и ограничений могут быть разбиты на классы, характери¬ зуемые своими методами решения. К примеру, линейное програм¬ мирование изучает класс задач, в которых и целевые функции, и ограничения линейны. Вместе с тем решение многих таких задач может быть упроще¬ но, если развернуть процесс планирования поэтапно, т. е. исполь¬ зовать метод динамического программирования. Идея метода сос¬ тоит в том, что отыскание точек экстремума целевой функции мно¬ 124
гих переменных заменяется многократным отысканием точек экстремума функции одного или небольшого числа переменных. Итак, динамическое программирование есть поэтапное планиро¬ вание многошагового процесса, при котором на каждом этапе оп¬ тимизируется только один шаг. Причем управление на каждом шаге должно выбираться с учетом всех его последствий в будущем. Динамическое программирование — это планирование с учетом перспективы, с учетом интересов всей задачи. В задачах, решаемых методом динамического программирова¬ ния, значение целевой функции (оптимизируемого критерия), до¬ стигнутое за весь процесс, получают простым суммированием част¬ ных значений f/(x) того же критерия, достигнутых на отдельных шагах, т. е. т = 2^ • і=1 Если критерий f(x) обладает этим свойством, то он называется аддитивным. Во многих практических задачах критерий f(x) — аддитивен; если в первоначальной постановке задачи критерий не аддитивен, то постановку задачи надо видоизменить так, чтобы он стал адди¬ тивным. К примеру если рассматривают критерий f(x), представ¬ ленный в виде произведения выигрышей, достигаемых на отдель¬ ных этапах: f(x) (х) 7г(*)(такой критерий называют мультиплексным), то можно преобразовать его к аддитивному, прологарифмировав, m ig/W = 2lgAW- 1=1 Обозначим V=\gf(x), Vi=lgfi(x). Получим новый критерий Ѵ = m = обладающий свойством аддитивности и обращающийся і=1 в максимум (минимум) одновременно с f(x). Рассмотрим общую схему решения задач, имеющих аддитив¬ ный критерий. Пусть процесс управления состоит из пг шагов. На каждом f-м шаге управление хі переводит систему из состояния Sz-_i, до¬ стигнутого в результате (і—1)-го шага, в новое состояние ко¬ торое зависит от состояния \Si-i и выбранного управления Хі. Sz=jSz(SZ-i, Хі). Здесь существенно, чтобы новое состояние зависело только от состояния S/»! и управления xt и не зависело от того, каким обра¬ зом система пришла в состояние Si-1. В крайнем случае^это дости¬ гается увеличением числа состояний системы. В понятие «состоя¬ ние системы» вводят те параметры, от которых зависит будущий результат. 125
В теории динамического программирования, когда рассматри¬ вают стратегии, зависящие только от текущего состояния, опти¬ мальную стратегию характеризуют очень просто. Принцип оптимальности. Оптимальная стратегия обладает тем свойством, что, каковы бы ни были первоначальные состояние и решение, последующее решение должно определять оптимальную стратегию относительно состояния, полученного в результате на¬ чального решения. Рассмотрим задачу о максимизации функции дохода f(x) на m-шаговом процессе. • Под влиянием управлений хь x2,...,xm система переходит из начального состояния So в конечное iSKOh. За т шагов получают выигрыш т f(x)= Vf.^.x,-) , Z=1 где xi) —выигрыш на і-м шаге. Принцип оптимальности по¬ зволяет заключить, что при любом начальном управлении х^ f(x) = Xj) 4“ [/2(^1» ^2) + • • • + fm(Sm— 1, xm)] = — Z1(SO, *1) + *1)] * Поскольку данное соотношение справедливо для всех началь¬ ных решений Хі, то, чтобы найти максимальный доход, надо найти максимум по Хі значения f (х) : fm(SQ) = max f(x) = max[/x(S0, xj + [Sx (Sm_i, xx)]] , m > 1 , • xx Xi где fi (So) = maxfi (So, Xi). Получили основное функциональное Xi уравнение динамического программирования. Его же можно полу¬ чить другим путем: max f(x) = max [max f(x)] . X1...,X^ Xi X2...,X 1 m 1 m Следоватёльно, An(S0) = max [^(Sq , xx) + , x2) 4-... 4- fm(Sm_,, xj] = Xi. . . ,X = max max [^(50, xx) + f2(S;, x2) + . • • 4- fm(Sm_,, xm)] = = max [fx(S0, xx) + max [f2(S;, x2) - ... + fm(Sm_i , xm)] = xn = max [^(50, xj -r fm-i (Sm_\ (So, x,))] . Xi Согласно этому выражению алгоритм получения решения в ди¬ намическом программировании — это последовательность функ¬ ций дохода {fn(Sn-i)} или последовательность стратегий {xn(Srt-i)}. Эти последовательности определяют одна другую. Причем, имеет¬ ся только одна последовательность оптимальных функций дохода, 126
хотя может быть много последовательностей оптимальных страте¬ гий, которые приведут к тому же максимальному доходу. В динамическом программировании, планируя многоэтапную процедуру, управление на каждом шаге выбирают с учетом буду¬ щего. И только на одном шаге — последнем — нет такой необхо¬ димости и этот последний шаг можно спланировать так, чтобы он принес наибольшую выгоду. Спланировав оптимальным образом последний шаг, к нему присоединяют предпоследний и находят согласно основному функ¬ циональному уравнению наибольшую выгоду на этих двух шагах и т. д. Поэтому в динамическом программировании процесс раз¬ ворачивают от конца к началу. А как спланировать последний шаг, если мы не знаем, чем кончился предпоследний? Для этого делают разные предположения о том, чем кончится предпоследний шаг и для каждого допущения выбирают управление на послед¬ нем шаге и запоминают его до конца решения задачи. Этот про¬ цесс повторяют на каждом шаге. Такое оптимальное управление, выбранное при известном условии, чем кончится предыдущий шаг» называют условным. Рассмотрим на примерах схему этой процедуры. 4.2. Задача об оптимальной загрузке транспортного средства неделимыми предметами В § 1.1 мы сформулировали задачу о бабе, отправляющейся на рынок и решающей, сколько ей надо взять живых гусей, кур и уток, чтобы получить наибольшую выручку. Мы знаем и то, что это задача целочисленного линейного программирования. Теперь рассмотрим, как подобные задачи решаются с помощью динами¬ ческого программирования. Задача. Пусть в самолет требуется погрузить 4 вида предме¬ тов, чтобы эффект от этих предметов (например, стоимость) был максимальным. Грузоподъемность самолета равна w; Л, Р2, Рз, Рі — вес соответствующей единицы различных предметов; а 02, 0з, 04 — соответствующая эффективность единицы каждого предмета; Хі, х2, *3, х4— число предметов различных видов, взя¬ тых на борт самолета. Решение. Целевая функция задачи — 4 V ХіѴі -L Х2Ѵ2 4- *зѴ3 Х404 тах • і==1 Ограничение 4 5^ ХіРі - хгРг х2Р2 х3Р3 4- х4Р4 < W . Эту задачу называют в литературе задачей о «рюкзаке» вслед¬ ствие следующей гипотетической ситуации. Турист, собираясь в по¬ ход, должен выбрать, какие предметы ему взять с собой. Каждый 127
предмет имеет свой вес и свою ценность. Требуется, чтобы общий вес рюкзака с выбранными предметами не превышал некоторого заданного веса, а их общая ценность была максимальной. Для численного решения примем, что г^ = 83, А = 24, Рч = 22у Рз = 16, Ра= 10, üi = 96, ^2 = 85, ü3=,50, ѵ4 = 20 некоторых единиц. Очевидно, что это задача целочисленного программирования. Применим для ее решения многошаговую процедуру принятия решения (динамическое программирование). Согласно общей схе¬ ме решения задач динамического программирования будем рас¬ сматривать два этапа. На первом этапе найдем возможные опти¬ мальные варианты при последовательной оптимизации по одной переменной, а на втором этапе из этих «заготовок» выберем опти¬ мальное решение нашей задачи. Первый этап будет содержать 4 шага. На первом шаге нахо¬ дят возможные оптимальные варианты загрузки самолета только предметами первого вида. Необходимо найти и запомнить значе¬ ния Хі и соответствующую им максимальную стоимость груза fi(w) при различных возможных значениях w. В этом случае максимальная эффективность груза определится как А И = шах [х^] Х1 при условии XiPi^.w, %і = 0, 1, 2,... Так как x^w | Рь то для на¬ хождения максимума fі (х) надо Хі взять возможно большим, т. е. I ЬУІ W Хі = —- —наибольшее целое число, не превосходящее —, и та- ІЛ J Рі ким образом ДН = ^~-'|х1. Через lz] обозначают наибольшее це¬ лое число, не превосходящее z. Зададимся значениями w с некоторым шагом и найдем для них Хі и fi(w). Очевидно, если грузоподъемность самолета мень¬ ше 24 ед., то ни одного предмета первого вида погрузить нельзя. При грузоподъемности от 24 до 47 ед. можно погрузить 1 ед. предмета первого вида и т. д. Результаты представим в виде таб¬ лиц. Значения w, fi (w) и Хі приведены в табл/4.1. В таблицах принят более широкий предел для w. — до 87 ед. Таблица 4.1 W *1 0—23 0 0 48—71 192 2 24—47 96 1 72—87 288 3 Проведем оптимизацию на втором шаге. Рассмотрим эффек¬ тивность груза, если загрузить самолет предметами первого и вто¬ рого типов. Максимальную эффективность загрузки обозначим че¬ рез /2(w). Если предметов второго вида взято х2, то вес предме¬ 128
тов первого вида должен быть не больше чем w—Р2х2. Макси¬ мальная эффективность предметов первого вида при этом fx(w — х2Р2) = шах [(ш — х2Р2) ѵг I, а общая эффективность груза — /12 = Х2Ѵ2 + /1(^ X2^2Ï • Тогда f2(w) = тах{х2у2 + Л(йУ — х2Л>)} ; 0 < х2 < М . (4.1) Ха [ Г2 J Максимум этого выражения ищут только по х2. Но мы не знаем, какой вес w могут занимать предметы второго вида. Поэтому мы должны рассмотреть выражение (4.1) для всевозможных значе¬ ний о/ от 0 до 83. При вычислении fi (w—х2Р2) воспользуемся по¬ лученными результатами (табл. 4.1). Например, возьмем а/=46 ед. Для х2 возможны значения О, 1, 2; соответствующая эффективность от предметов второго вида О, 85, 170, а для предметов первого вида составит 46, 24, 2 ед. Из табл. 4.1 для ш=46, 24, 2 ед. находим fi(œ>)=96; 96; 0 ед. Складываем соответствующие значения 0+ 96 = 96 ед; 85+06= = 181 ед., 170+ 0=170 ед. и выбираем наибольшее 181 ед. Оно по¬ лучено для %2=1. Для йу = 46 заносим в табл. 4.2 х2=1. f2(œ’) = 181. Результаты вычисления f2(w) и х2 приведены в табл. 4.2. Таблица 4.2 W х2 W хг 0—21 0 0 48—65 192 0 22—23 85 1 66—67 255 3 24—43 96 ' 0 68—69 266 2 44—45 170 2 70—71 277 1 46—47 181 1 72—87 288 0 Из табл. 4.2 следует, что при грузоподъемности транспортного средства до 21 ед. ничего в него погрузить нельзя, при грузо¬ подъемности 22—23 ед. можно погрузить только один предмет вто¬ рого вида, при грузоподъемности 24—43 ед. — либо один предмет первого вида, либо один предмет второго вида. Максимальной эф¬ фективность груза будет при погрузке предметами первого вида. При грузоподъемности 44—45 ед. можно погрузить либо один предмет первого вида, либо два предмета второго вида. Большая эффективность груза будет в последнем случае и f2 (w) =170. При грузоподъемности 46—47 ед. можно погрузить один предмет пер¬ вого вида, до двух предметов второго вида или же по одному пред¬ мету первого и второго видов. Эффективность груза в последнем варианте — максимальная, и т. д. 5—1290 129
Приступим к оптимизации на третьем шаге. Будем загружать транспортное средство предметами первых трех видов. Требуется максимизировать по х3 f 123 = хзѵз H" f z(w хз^з) ’’ /з(^) — плах /123 ; *3 0<x3<N . из I Задаем значение w іи для каждого такого значения получаем мак¬ симум fun по Хз. Значения f2(^) берут в табл. 4.2. Например,, пусть w=38 ед. Возможное значение Хз = 0; 1; 2 ед. іи соответст¬ вующая эффективность от предметов третьего вида 0; 50; 100 ед.. На предметы первого и второго видов остается соответственно* вес 38; 22; 6 ед. По табл. 4.2 находим f2(^) =96; 85; 0 ед. Сум¬ марная эффективность 96; 135; 100 ед. Максимальное значение эффективности при w = 38 ед. равно 135 ед. при Хз = 1. Результа¬ ты расчетов помещены в табл. 4.3. Таблица 4.3 W хв f3(ûy) Хз 0—15 0 0 44—45 170 0 16—21 50 1 46—47 181 0 22—23 85 0 48—63 192 0 24—31 96 0 64—69 242 1 32—37 100 2 70—71 277 0 38—39 135 1 72—87 288 0 40—43 146 1 Оптимизируем на последнем (четвертом) шаге. Получим опти¬ мальный вес груза, который может принять самолет ш*. Зададимся значением w, которое может быть занято четвер¬ тым грузом, и вычислим Х4, (табл. 4.4). Таблица 4.4 W х4 W х4 0—9 0 0 46—47 181 0 10—15 20 1 48—57 192 0 16—21 50 0 58—63 212 1 22—23 85 0 64—69 242 0 24—33 96 0 70—71 277 0 34—37 116 1 72—81 288 0 38—39 135 0 82—87 308 1 40—45 146 0 130
Начинаем второй этап — нахождение оптимального решения поставленной задачи. Максимальное значение f4(w) —это и есть w*, соответствующее значение аргумента х4 — количество груза четвертого вида, который берет самолет (х4 ) w* = maxf4 (w) =308; х4 =1. Вес, занятый предметами четвертого вида, будет х4 Р4 = 10 ед. На остальные три вида груза остается w—10=73 ед. Входим € этим значением в табл. 4.3 и получаем Хз=0, а затем %2 = 0; х\ =3. Если еще раз вернуться к табл. 4.1—4.4, то увидим, что они содержат «заготовки» для оптимальной загрузки самолета любой грузоподъемности до w (w=87 ед.) указанными предметами. Та¬ ким образом, мы решили не только поставленную задачу, но и ряд родственных задач. С одной стороны это хорошо, а с другой — в памяти компьютера необходимо держать табл. 4.1—4.4: столб¬ цы А(ш), /г(йУ), /з(^), f4(w) на протяжении следующего шага, а столбцы хь х2, х3, х4 и соответствующие им w — на протяжении всего решения. Для сложных задач последнее обстоятельство имеет существенное значение и ограничивает возможности рас¬ смотренного метода. 4.3. Задача о вкладе средств в производство Задача. Планируется деятельность двух отраслей производст¬ ва (например, швейного цеха и цеха по ремонту обуви) сроком ■на 5 лет (т=5). Функция вклада в производство средств <р(х) = = 0,75х; ф (у) =0,3 у, т. е. если средства z вкладывать только в первую отрасль, то по годам средств будет вкладываться z-0,75; z-0,752; z-0,753,... Соответственно, вкладывая средства z только во вторую отрасль, получаем z-0,3; z-0,32; z-0,33, ... Функции дохода как функции от объема вкладываемых средств у и X имеют вид f(x)=l— е~х; ё(у) = 1—е~2У. Требуется распределить имеющиеся ресурсы z=2 между отрасля¬ ми (цехами) по годам так, чтобы получить максимальный доход. Решение. Решение задачи не удается получить полностью в аналитическом виде, решим ее графически. Пусть к началу пятого года количество средств равно z4 и на пятый год выделено средств первому производству х5, тогда второму производству будет выде¬ лено У5(У5—г4—х5). Чтобы найти условное оптимальное управле¬ ние на пятом шаге x5(z4), нужно для каждого z4 найти максимум функции: Л, = 1 — е~Хі + 1 — e“2(Z1-X6) = 2 — [ é~x‘ + е~2<21-Хб)] . 131
При фиксированном z± максимум функции fs достигается либо при *5=0, либо внутри отрезка (0, z4). Максимум внутри отрезка будет в точке Хз , которую находим из условия = 0 ; е~Хі — 2 e~2(24-Xi) = 0 ; дхъ х5 = 4(2г« —; *5>° • То есть при z4>ln 2/2=0,347 максимум достигается в точке *s(z4) = 4 (2г4 — In 2).. При z4^ln2/2 максимум будет в точке х*з (z4) =0. Итак, условное оптимальное управление на пятом шаге *s(Z4) = л 1п 2 0 при z4 < — ; 1 /л 1 In 2 — (2z4 — Іп2) при z4>— . о Z (4.2) Построим на графике (рис. 4.1) зависимость хз =хз (z4) и функ- ию / =f* (z4). При построении зависимости fs(z4) пользуемся (4.2). ' Перейдем к оптимизации на четвертом шаге. Запас средств после третьего шага обозначим z3. Определим, в каких пределах может изменяться z3. Наибольшее значение z3 будет достигнуто, если все средства вложить в первую отрасль: Z3; max = z • 0,753 =2 • 0,753 = 0,844. Рис. 4.1. Зависимость и от г4 Рис. 4.2. Зависимость /43 от xt 132
Рис. 4.3. Зависимость /4*5 и х* от г3 Наименьший запас средств соответствует случаю, когда все средства на трех шагах вложены во вторую отрасль: 2з; тіп = И-0,33 = 0,054. Будем рассматривать теперь набор значений z3 от 0,1 до 0,8 с ша¬ гом 0,1. Для каждого значения z3 найдем условное оптимальное управление на четвертом шаге х4 (z3) и условный оптимальный до¬ ходпа двух последних шагах f4 (z3). Для этого построим серию кривых, показывающих выигрыш на двух последних шагах при любом управлении на четвертом и при оптимальном на пятом: /4Й = /4(?3 > х4) + /5 (г4) = /4(г3. 4- /3 [0,75х4 + 0,3(г3 — х4)] ; Л(гз,х4) = 2-[е-^+е-2(^)] . /5 (z4) берем из рис. 4.1. Значения /45 (х4) приведены «а рис. 4.2. Для каждого значения z3 максимальная ордината определяет условный максимальный выигрыш на двух последних шагах f 4 (z3), а абсцисса — услов¬ ное оптимальное управление х4 (z3). На рис. 4.3 построены графики зависимостей f 45(23) и x4(z3). Аналогично решают задачу для третьего и второго шагов. Ре¬ зультаты приведены на рис. 4.4—4.7. Спланируем первый шаг. Доход на пяти шагах (при любом уп¬ равлении на первом шаге и оптимальном на последующих) /12345 (XJ = /1С? , Хх) + /2345 fe) = 2 - [ tT*' + + /2’345^) J zx = 0,75xx + 0,3(z — xx) . На первом шаге имеющиеся ресурсы известны: z=2. Поэтому fi234s(Xi) опишется одной линией (рис. 4.8). Из рис. 4.8 видно, что максимальный доход будет /12345 = 4,35; оптимальное управление 133
Рис. 4.4. Зависимость f345 от х3 Рис. 4.5. Зависимость /з45 и х3 от z2 на первом шаге х*=1,60. По известному оптимальному управле¬ нию на первом шаге мы можем определить запас средств к концу этого шага, что в свою очередь определит оптимальное управле¬ ние на следующем шаге. Запас средств к концу первого шага: z* = 0,75х* +0,3 (z—x*) =11,32. Оптимальное управление іна втором шаге тогда (рис. 4.7) х2 = = 1,02. Остаток средств к концу второго шага будет 2^2 = 0,75%2 “Г 0,3(2і — Х2) — 0,86 ’, и далее %з = 0,62, ?з = 0,54, х4 = 0,30, z4 = 0,30, х$ = 0 . ! ! 1 О 05 1 № Рис. 4.6. Зависимость ^2345 ОТ *2 Рис. 4.7. Зависимость f2345 и х2 от 21 134
Получим оптимальное управле^ ние, показывающее, сколько средств надо вкладывать в первую отрасль: X* = (*1 , *2 , *3 , *4,4 } = = [1,60; 1,02; 0,62; 0,30; 0} . Автоматически получаем количе¬ ство средств, вкладываемых во вторую отраль у\ = z — х* = 0,40 ; У2 = Z\ —%2 — 0,30 ; Рис. 4.8. Зависимость /12345 от Хі Уз = Z2—X3 = 0,24 ; у4 = 2з — %4 = 0,24 ; Z/5 = —- %5 = 0,30 ; Определим остаток средств: 0,30-0,3 = 0,09. 4.4. Задача о распределении средств поражения Рассмотрим еще одну задачу, которая аналогична задаче о ре¬ зервировании средств, — о распределении средств поражения по обороняющимся целям. Задача. Планируются боевые действия самолетами по оборо¬ няющимся целям. Цели эшелонированы по глубине территории іна четырех параллельных рубежах. Перед тем, как выйти на данный рубеж, самолеты проходят зону действия огневых средств этого рубежа, где подвергаются обстрелу со стороны последних. Огневые средства каждого рубежа могут вести огонь не только по средст¬ вам поражения, направляющимся непосредственно на цели дан¬ ного рубежа, но и по тем самолетам, которые проходят через зо¬ ну действия, направляясь на следующие рубежи. Вероятность поражения одного самолета, пролетающего зону действия орудий г-го рубежа, vt = 1 —е , где Ni — среднее число орудий, сохранивших боеспособность на г-м рубеже; а/ — эффективность стрельбы орудий по самолетам. Среднее число орудий f-го рубежа, пораженных волной самоле¬ тов, направленной на цели этого рубежа, где Ni,— число орудий на і-м рубеже; ѵ/ — среднее число самоле¬ тов в j-й волне, сохранивших боевые свойства до і-го рубежа; 135
Pi — средняя вероятность поражения одного орудия r-го рубежа атакующим его самолетом. Имеется N орудий на всех .рубежах: 4 ^=2^’і= 1,4 ; і=1 где Ni — число орудий на r-м рубеже: ЛЛ = 1О, N2 = 12, N3=15, N4=10, N=47. Имеется zo=8O самолетов, которые надо распределить на четыре волны так, чтобы сделать максимальным среднее число поражений на всех рубежах: /w = ’ І=1 где fi (х) — среднее число поражений на і-м рубеже. Волны распределены по времени так, чтобы к моменту подлета следующей волны предшествующая ей волна самолетов успела выполнить боевое задание. Пусть Л = 0,4, Р2 = 0,5 , Р3 = 0,4 , Р4=1,0, 0^ = 0,05, а2 = 0,04, а3 = 0,04 , а4 = 0,05 . Решение. Будем пользоваться общей схемой решения задач ме¬ тодом динамического программирования. Оптимизируем на чет¬ вертом (последнем) шаге. К зоне действия орудий 4-го рубежа подойдет 2з самолетов. Очевидно, что все они должны быть на¬ правлены на поражение орудий 4-го рубежа. Условное оптимальное управление на 4-м шаге xi (z3) =z3. На 4-м рубеже .У4 орудий; он не подвергался бомбежке, т. е. N4=N4. Эти самолеты поразят на 4-м рубеже f4 (з3) орудий: /:(з3) = 1 —е где Ѵ4(£з)=£з(1—и4); ^4 — вероятность поражения одного самоле¬ та на 4-м рубеже; ѵ4=1-е-щЛГ‘ , т.е. v4(z3) = z3e a'Ni Задаваясь рядом значений z3, получаем /4(23) (рис. 4.9). Вообще- то следовало бы брать значения £з в интервале (0; 80), но в этой задаче в этом нет необходимости. 136
Рис. 4.9. Зависимость f 4 от Z3 —1—1 1 “ *- Х5 О 5 10 20 30 40 Рис. 4.10. Зависимость [ц от х3 Оптимизируем на третьем шаге. Зададимся рядом значений z2 самолетов, преодолевших 1-й и 2-й рубежи: z2œ(10; 40). Для каждого значения z2 подсчитаем суммарный выигрыш: на третьем шаге при любом управлении, на четвертом — при опти¬ мальном: /з4=Фз(^з) (2з). Из z2 самолетов надо выделить х3 на подавление орудий 3-го ру¬ бежа, a (z2—х3) — направить на 4-й рубеж через зону огня 3-го рубежа. Условное оптимальное управление х3 (z2) найдем из усло¬ вия максимального выигрыша на двух последних шагах. Здесь Q3(x3) —среднее число орудий, пораженных на 3-м ру¬ беже выделенными для этой цели х3 самолетами. При Таком уп¬ равлении до 4-го рубежа дойдут z3 самолетов. Имеем ( Qs(x8) = Ml-e N‘ ), где v3 = х3(1 — v3) = х3(1 — 1 + e~a’w*) = x3e“asW’ . Подсчитаем среднее число самолетов из оставшихся (z2—х3) самолетов, прошедших через огонь 3-го рубежа и_ дошедших до 4-го рубежа. На 3-м рубеже осталось в действии N3=<N3—Qs(xs) орудий. Тогда среднее число дошедших самолетов до 4-го рубежа из полного числа (z2—х3) будет z3 = (z2 —х3)е-азЛ'а; ;Ѵ3 = мз(хз) • 137
Рис. 4.11. Зависимость f34 и х3 Рис. 4.12. Зависимость /234 от х2 от z2 Следовательно, _х3 е~аз^зро /з’4(г2) = max ' 0<x3<z2 м3 1 N* 1 — е + /4’[(г2—х3)е"аз^(д:з) ] Задавшись значениями 22, для каждого из них [и взяв значения /4(23) из рис. 4.9] получим f34(x3) (рис. 4.10). Отмечая точки мак¬ симума /34 (^3), для каждого 22 строим из рис. 4.10 зависимость f34 и Хз от 22 (рис. 4.11). Оптимизируем на втором шаге. Процедура аналогична опти¬ мизации на третьем шаге. Для разных значений Z\ (число самолетов, преодолевших 1-й рубеж) вычислим (рис. 4.12) /234 = ФгС^г) 4“ /34(^2) • Здесь ' — Рг Q2(x2) = #2[l-e ]; ѵ2 = х2е-“г№ ; г2 = (?х хз)е 2^2 ; )V2=#2-Q2(x2). Величину /"з4(и2) берем из рис. 4.1'1. Строим зависимость f234 и х2 от 2і (рис. 4.13). 138
Рис. 4.13. Зависимость f 234 и х2 ОТ Zi Оптимизация на первом ша¬ ге. Число самолетов, которые f* налетают на первый рубеж, за¬ дано zo=8O. Выигрыш соста¬ вит /і234(хі) = Qi(xi) + /234(21) ; ( ~^Р'\ Q1(x1) = ^l-e Nl ). vi = xi e~a,N1 ; zi = (20 — *і)е-аі7Л ; ' N1 = Qi(%i) • Величина /234 берется из рис. 4.ГЗ. Строим зависимость fi234 от Хі при zo=8O (рис. 4.14). По точке максимума получаем, что Хі =34, а полное число пораженных ору¬ дий равно 14,1. Итак, 34 самолета бомбят 1-й рубеж, 46 самолетов направле¬ но дальше. К зоне действия орудий 2-го рубежа дошло z* самоле¬ тов (прошли сквозь огонь оставшихся орудий 1-го рубежа из 46 самолетов) : z* = 46-е-аі"‘ ; -ГІР1 (4-3) Qi(^) = ^(l-e Nl ‘); vî = e-a‘W1 . Получили zî =37 и на 1-м рубеже поражено Qi(xî)=5,6 орудий. При zî =37 из рис. 4.13 получили оптимальное управление на вто¬ f А 2,3,4 I Ко = 80 I I О 10 20 50 1)0 50 60 70 80 Рис. 4.14. Зависимость fi234 от Хі 13£
ром шаге х2=23. То есть направить дальше следует 14 самолетов. Пользуясь формулами, аналогичными (4.3), получим Q2(x[) = 5,4, г2* = 10,7, х3* = 0 , Q3(x3) = 0, г3 = 5,9, %4 = 5,9, Q4(%4) = 3,1. Итак, в первую волну войдут 34 самолета; щ = 34. Ко 2-му ру¬ бежу подойдут 37 самолетов, из них пойдут дальше только 14, а так как всего самолетов осталось 46, то во вторую волну следует включить /22 = 46(14/23) =27 самолетов, /г3 = 0 (так как х3=0) и в четвертую волну — оставшиеся 19 самолетов. Анализ полученных результатов показывает, что оптимальнее осуществлять планирование на подступах к каждому рубежу, т. е. при этом решать задачу, аналогичную рассмотренной. » При более подробном рассмотрении убеждаемся, что эта за¬ дача является вырожденной задачей динамического программи¬ рования — планировать нужно каждый шаг отдельно, распреде¬ ляя самолеты перед рубежом так, чтобы получать максимальное число самолетов, преодолевающих данных рубеж. 4.5. Вычислительные аспекты решения задач методом динамического программирования Мы рассмотрели алгоритм решения задач, опирающийся на ос¬ новное функциональное уравнение метода динамического програм¬ мирования /т(5о) = max l/i(S0, Xi) + fm-i (Sm-1 (So, xx))] ; m > 1 (4.4) Xt Если fi (So, Xi) известно, то уравнение (4.4) представляет типич¬ ное рекуррентное соотношение. Чтобы вычислить fm(S0), необхо¬ димо в запоминающем устройстве ЭВМ иметь значения fi(iSo, хі), Sm-i(S0, xQ или алгоритмы для образования этих значений. Так как невозможно запомнить все значения то за¬ поминается лишь дискретный набор значений fm-iI(Sm_i)il. Дру¬ гие значения могут быть получены интерполяцией и экстраполя¬ цией записанных данных. Чтобы найти максимум по Хі, ограни¬ чимся дискретным набором значений {xj/; j = l, 2... Одно или не¬ сколько значений хь дающих максимум, опять запомним. Повторяя эту процедуру на каждом шаге, получаем функцию дохода и функцию стратегии для данного шага. Рекуррентно вы¬ числим последовательности {fn(S„-i)} и {xn(S„_i)}. Видим, что про¬ цедура является итеративной, что облегчает ее программирование. Отметим, что как только fi(S0) использована для вычисления fs (Si) и x2(Si), ее можно стереть из памяти и т. д. И чем меньше область возможных значений х(-, тем меньше требуется объем па¬ мяти, тем легче применить аппарат динамического программиро¬ вания. 140
Для определенности рассмотрим случай, когда /Sfr есть вектор размерности 2, S0=f(x, у), и мы запоминаем значения в 100 точ- как по X и по у, т. е. имеем ІО4 чисел. Этот случай трудностей не вызывает. Если размерность вектора более высокая, скажем 4, то получим ІО8 чисел. Для изучения таких процессов на современных ЭВМ приме¬ няют более тонкие алгоритмы. К примеру, вместо простого запо¬ минания набора значений {/(■%)/}; і=1, 2,... хранят в памяти ме¬ тод воспроизведения f(So). Наиболее простой прием такого вос¬ произведения функции — это представление ее в виде полинома. Методы динамического программирования лучше «подходят» к задачам с дискретными переменными, чем с непрерывными. Ос¬ новное функциональное уравнение имеет один и тот же вид и для дискретных, и для непрерывных переменных. В отдельных слу¬ чаях при наличии непрерывных переменных удается сократить расчеты применением дифференциального исчисления; в большин¬ стве же случаев задача сводится к задаче с дискретными перемен¬ ными. Использование процедуры динамического программирования позволяет найти все оптимальные решения, сколько бы их ни было, для любой аддитивной функции многих переменных, определенной на любом множестве D, заданном условиями-ограничениями. 141
Глава 5. О РАЗВИТИИ МЕТОДОВ РЕШЕНИЯ ЗАДАЧ МАТЕМАТИЧЕСКОГО ПРОГРАММИРОВАНИЯ 5.1. Основные направления развития методов решения задач математического программирования Можно построить математические модели для достаточно ши¬ рокого круга явлений. Однако мы выяснили, что не всякую мате¬ матическую задачу мы в состоянии решить. Во-первых, по причине большой ее размерности, во-вторых из-за наличия нелинейных це¬ левых функций и условий-ограничений. Кроме того, нам хотелось бы, чтобы, не решая заново задачу, иметь инструмент, который позволял бы с небольшими затратами изменить решения при не¬ больших изменениях исходных данных (параметров, целевой функции и условий-ограничений). Поскольку такие изменения ис¬ ходных данных являются случайными величинами, то следовало бы определить и доверительные границы для решений реальной задачи. Но тогда мы выйдем за рамки этой книги — это область стохастического программирования. Тем не менее удается, хотя достаточно и громоздкими метода¬ ми, в задачах линейного программирования установить, как будет изменяться решение задачи, если известны функциональные зави¬ симости, описывающие изменение исходных данных. Подобные за¬ дачи решают в разделе, называемом «параметрическое программи¬ рование». Несмотря на обилие разработанных методов решения сетевых задач трудности остаются. В гл. 2 мы упоминали, что из-за боль¬ шой размерности некоторые сетевые задачи строгими методами решить не удается; в подобных случаях применяют эвристические методы, которые дают хотя и не строго оптимальное решение, но приемлемое в практических приложениях. В гл. 3 мы рассмотрели сетевые задачи для однородного пото¬ ка. В реальных условиях по сети требуется транспортировать (пе¬ редавать) различные «продукты»: например, телефонные разгово¬ ры, телеграммы, телевизионные передачи и т. п., т. е. необходимо иметь алгоритмы, которые позволяли бы решать задачи о много¬ продуктовых потоках в сетях. Методы решения многопродуктовых 142
сетевых задач сложны и поэтому выбираемые алгоритмы позво¬ ляют решить задачу только приближенно. Естественно стремление исследователей тем не менее создать в некотором роде универсальные алгоритмы, которые были бы применимы к достаточно широкому кругу задач математического программирования. К ним относят алгоритмы, реализующие мето¬ ды, штрафных (барьерных) функций: метод внутренней точки, ме¬ тод внешней точки и комбинированный метод внутренней и внеш¬ ней точки. Методами штрафных функций можно решать задачи как линейного, так и нелинейного программирования. Хотя вряд ли экономно их использовать для решения линейных задач. 5.2. Понятие о параметрическом программировании Исходные данные, необходимые для численной постановки ре¬ альных задач математического программирования, определяют в большинстве случаев неточно, приближенно. Это связано не толь¬ ко с наличием погрешностей измерения, но и с желанием описать в математической постановке возможное изменение исходных дан¬ ных, чтобы в дальнейшем для оптимизации решения использовать наилучшие их значения. • Исследование чисто математических проблем, таких как ана¬ лиз чувствительности решения при вариации исходных данных, сценка устойчивости решения, также требует разработки методов, учитывающих неопределенность исходных данных. Как было показано, наиболее развиты к настоящему времени и наиболее доступны для изучения задачи линейного программи¬ рования. Алгоритм учета неопределенности исходных данных мы рассмотрим на примере задач линейного программирования, так как в других случаях учет неопределенности может оказаться крайне трудной проблемой. Раздел математического программи¬ рования, в котором может быть решена данная проблема, назы¬ вают параметрическим программированием. Параметрическое про¬ граммирование изучает в основном задачи, которые являются ес¬ тественным обобщением задач линейного программирования, когда исходные данные (коэффициенты) в целевой функции и в усло¬ виях-ограничениях предполагаются не постоянными величинами, а функциями, зависящими определенным образом (чаще всего ли¬ нейно) от некоторых параметров. Всякой задаче параметрическо¬ го программирования можно поставить в соответствие некоторую задачу линейного программирования, называемую исходной. От того, как именно трактуется исходная задача, зависит трактовка параметрической задачи. Введение параметра обычно отражает некоторую реальную ситуацию. . Приведем несколько постановок задач параметрического про¬ граммирования, которые наиболее естественным образом могут быть сопоставлены с принятой исходной задачей. Рассмотрим, по¬ мимо этого, одну из интерпретаций задачи параметрического про¬ граммирования. 143
Пусть коэффициенты целевой функции исходной задачи линей¬ ного программирования (2.2) зависят от одного параметра. В за¬ даче (2.2) коэффициенты целевой функции представляют собой цену единицы количества некоторого продукта, а координаты век¬ торов-ограничений могут быть истолкованы как запасы различных ресурсов. ■ Целевая функция рассматриваемой задачи параметрического программирования может иметь (в простейшем случае) следую¬ щий вид: f (х) = (Ооі + Ьі/)Хі + ...-|- (ûon+'^n^)xn—>піах, где aoi, —, °on — исходные (старые) коэффициенты задачи линей¬ ного программирования; bi,...,bn — новые коэффициенты; t— па¬ раметр, toR1. Зависимость коэффициентов этой функции от параметра t мож¬ но понимать как зависимость цены единицы продукта от времени. Различные новые коэффициенты Ьігbn отражают индивидуаль¬ ный характер зависимости от параметра t цен разных продуктов. Значение целевой функции исходной задачи равно стоимости вы¬ пущенной продукции, а значение целевой функции соответствую¬ щей параметрической задачи показывает, чему равна стоимость выпускаемой продукции при условии изменения цен единицы про¬ дукции, когда закон изменения этих цен (от времени, от качества продукции и т. п.) задан. Рассмотрим случай, когда от параметра зависят координаты системы ограничений. Можно учесть зависимость этих показателей от времени, способа выработки ресурса, района размещения объек¬ та, модель которого рассматривается в задаче и т. п. Условия- ограничения примут вид (йіі + сиОхі + • • • + (аіп + cirf)xn ■С йю + djt ; (ûmi + cm—11) Xi + ... + (amn+cm„Z) xn -C a то + dmt ; Xj,..., x„ > 0 ; t € R1. Буквами a., с соответствующими индексами обозначены исходные коэффициенты в условиях-ограничениях задачи, а буквами с., и d. — новые коэффициенты, определяющие зависимость исходных коэффициентов от параметра t. Задача параметрического программирования с s независимы¬ ми переменными Л,..., ts, или s-параметрическая задача, записы¬ вается следующим образам: м аксимизиров ать f(x) = (tZoi+вц/і+... + bists) Xi +... + (aon+bnit-^- ■■■~i~bnsts)xn + .+ei/i+... + esfi ' 144
при ограничениях (аіі + сііі^і + • • • + cXXsQ хх + ... + (ах„ + crnlt1 + • • • + <\пі№п аіо H" H- • • • ’ ■ (aml + cmlA + • • • + СтіЛ) Х1 + • • • + (атп + стп111 + • • • + + Cmnsts) ^тО + ^ті^і dmsts > . хх,..., х„ > 0 ; t 6 R1. Рассмотрим метод решения частной задачи линейного парамет¬ рического программирования, в которой все коэффициенты целевой функции линейно зависят от некоторого действительного парамет¬ ра t на конкретном примере: /(х) = (2 +1) хх + (3 — t) х2 +1 ->■ max ; — хх + 2х2 < 4 ' ■ <5Л> хх > 0 ; х2 > 0 ; tÇ. Я1, В матрично-векторной форме max /(х) = (а0. + b t)T х ; Ах а.о ; X > 0 ; t € R1, где а0. = {2 ; 3 ; 0}т ; b= (1 ; — 1 ; 1)т ; х = (хх; х2 ; 1}т ; * а.0= {4,5,8)г : / —1 2\ А= 1 1 \ 2 —I/ Для каждого фиксированного значения t задача (5.1) становится задачей линейного программирования, которую называют принад¬ лежащей этому значению t. Решением параметрической задачи (5.1) называют явным об¬ разом заданную функцию f(t) =max{f(X) = (ао.+Ь/)тх|АХ<а.о; X»}, решающую функцию задачи (5.1), вместе с набором решающих Л Л отношений X\\t),...txn(t), каждое из значений которых при данном значении t равно значениям переменных хь х2,..., хп, образующих оптимальное решение задачи, принадлежащей данному значению t 145
{если это решение существует). Доказано, что r-я критическая область Кг задачи .(5.1), г—1, оо, определяемая условием Кг = {/ aroj(f) = «о/ + brjt > 0 , j = 1, n-\-m\ , является отрезком (замкнутым интервалом). Область определе¬ ния Q решающей функции f(i) выпукла; решающая функция f(t) выпукла в своей области определения. При любом г=1, 2,... для всех значений t из критической об¬ ласти Кг решающая функция линейна и в силу этого непрерывна в области Q. При любом г=1, 2,... внутри критической области К.г множест¬ ва значений отношений Xj(t), j=l, п ограничены постоянными ве¬ личинами; сами эти отношения полунепрерывны сверху. Для построения решающей функции будем пользоваться симп¬ лекс-методом в следующей его модификации. Под последней строкой первой из симплекс-таблиц, полученной при t=to=O и со¬ держащей некоторое допустимое базисное решение, приписывают еще одну строку коэффициентов bj'}t=—bjt, j=\,n + m, где 6/=0 для /=п+1; п+ш. Полученная строка подвергается тем же пре¬ образованиям, что и остальные (табл. 5.1; г=1). Естественно, что в задаче (5.1) мы предварительно перешли к ограничениям — ра¬ венствам и ввели новые переменные х3, х4, х$. За три итерации (г=1,3) мы получили оптимальное решение при t=0 (в табл. 5.1 для каждой итерации выделены разрешающие элементы). Коэффициенты в целевой функции для выбора разрешающего эле¬ мента задают двумя последними строками при фиксированном (заданном) значении t=tç. Для данного допустимого базисного решения надо построить соответствующую критическую область — множество всех значений t, при которых это решение будет опти¬ мальным. Это множество будет замкнутым интервалом. Надо най¬ ти границы этого интервала. Их находят по формулам mli = max | у, — >0,/=l,n + m.; m+i = min an; , — , + оо I b j < 0 , j = 1, n + m bi Если нижняя (верхняя) граница этого интервала есть —оо( + оо), то найдена нижняя (верхняя) граница области Q. Для любой гра¬ ницы этого интервала, такой, что координата ее есть число, по крайней мере один из коэффициентов целевой функции а о/ (t) = — aroi~rbrirt равен нулю. При значениях t=tp, обращающих выра¬ жение a0}+tft в нуль и называемых критическими, решения задачи определены неоднозначно. Если существует второе базис¬ ное решение, то изменяя базис, можно задавать соседнюю крити- 146
Таблица 5.Î Симплекс-таблицы для линейной задачи параметрического программирования Номер итерации —х2 —Хз —х4 —хй û0 Г = 1 — 1 |2| 1 0 0 4 *з 1 1 0 1 0 5 x4 2 —1 0 0 1 8 X5 —2 —3 0 0 0 0 — t t 0 0 0 t —bjt г = 2 1/2 1 1/2 0 0 2 x2 I 3/2 1 0 -1/2 1 0 3 *4 3/2 0 1/2 0 1 10 —7/2 0 3/2 0 0 6 -ao- -//2 0 -//2 0 0 * — t —bjt г = 3 0 1 1/3 1/3 0 3 1 0 -1/3 1 2/3 1 0 2 0 0 Ш —1 1 7 4 0 0 1/3 7/3 0 13 0 0 —2//3 //3 0 0 л = — 1 г = 4 1/2 1 1/2 0 0 2 x2 3/2 0 -1/2 1 0 3 x4 3/2 0 1/2 0 1 10 4 —7/2 0 3/2 0 0 6 • —1!2 0 -//2 0 0 — t Л = + 1 г = 4 0 1 0 1 2/31 -1/3 2/3 x2 1 0 0 1/3 1/3 13/3 *1 0 0 1 —1 1 7 *3 0 0 0 8/3 -1/3 32/3 0 0 0 — //3 2//3 14//3 г = 5 0 3/2 0 1 -1/2 1 x4 1 -1/2 0 0 1/2 4 Xo 0 1 1 0 1/2 8 *3 0 —8/2 0 0 1 8 0 //2 0 0 1/2 5/ 147
ческую область значений t. Если же при попытке заменить базис обнаружена неограниченность решения, то гиперплоскость, соот¬ ветствующая целевой функции при рассматриваемом ее значении, оказывается параллельной одной из граней выпуклого многогран¬ ника, определяемого системой ограничений задачи. Такая грань содержит точки, хотя бы одна из координат которых сколь угодно велика по абсолютному значению. В этом случае достигнута ко¬ нечная нижняя (верхняя) грань области Q. Пусть при построения обнаружилось, что некоторая точка полученного интервала имеет координату, меньшую (большую), чем координата верхней (ниж¬ ней) границы интервала, полученного на предыдущем шаге по¬ строения. Говорят в таком случае, что эта верхняя (нижняя) гра¬ ница превзойдена. Тогда сама эта верхняя (нижняя) граница яв¬ ляется и нижней (верхней) границей строящегося интервала. Оп¬ ределим критическое значение tp = nin. Индекс л=—1 применяют при отыскании нижней границы области Q, индекс л= + 1—при отыскании верхней границы. В нашем случае г=3; отыскиваем нижнюю границу области Q, т. е. полагаем л=—1. Получим, поло¬ жив р=п=—1 (для bj>0; і= 1, п+т), t-i = mli - max ( — — ; — ool = — 7. I 1/3 / Л A Из табл. 5.1 при r=3 следует, что при t=l f(t) = 13, Xi=2(l—Л), Л х2=2Х+3(1—Л), Это критическое значение может быть превзойдено. В табл. 5.1 при г=3 выбран разрешающий элемент, равный 2/3 при /=4. Общая формула для выбора этой небазисной переменной имеет вид Тр 6 (т I <2ot + bxtp = 0 ; хх — небазисная переменная) . Для нас т=4. Получим следующую таблицу при л=—1 и г=4. Она совпала с таблицей, полученной при г=2. Так как все Ьп отрицательны, то t—2=—со и является нижней границей об¬ ласти Q. Из табл. 5.1 дри г=4 получаем, что при/<—7 f(/)=6—t, Л Л Хі = 0, Хг=2. Отыскиваем верхнюю границу области Q, полагаем л= + 1, р=л, р= + 1, г=3. Тогда для 6/<0, /=1, п+т, , 1/3 /+2 = mi = mini — —— ; оо I 1- 1/2 При/=1/2 f (/) = 13, Xi=2A,-H13(l—Л)/3, х2=3%+2(1—À)/3, ^1. Выбираем разрешающий элемент из столбца для х3 и полу¬ чаем новую таблицу при л=і+!1 и г=4. Из этой таблицы' найдем 148
новое ?+2, превышающее критическое значение £+2=1/2. Новое значение t+2 при —7<£<1/2 /(£)=>13, Хі=2, х2 = 3 £+2 = т+4 = min I —’ + 00 I = 8 • При £ = 8 /(£) = 1/3(13+ 14.8) = 48, t _ 13, . ,,, ,, л 2Х — — X + 4(1 — X) ; х2 = — ; Û D •при у < t < 8 /(£) = (32 + 14 £) I 3 , хх = 13/3 , х„ = 2/3 . Строим следующую таблицу при г=5 и л=+,1. Получаем £>8. Окончательные результаты приведены в табл. 5.2 и на рис. 5.1, где показано «вращение» целевой функции, поведение решающей функции f(t) и геометрические образы отношений Хі(£) и x2(t). Таблица 5.2 Решение параметрической задачи (O<À<1) t Л 7(0 Л Xi A x2 t<-7 6 — / 0 2 t = —l 13 2(1 —X) 2X + 3(1 — X) — 7 < / < 1/2 13 2 3 t= 1/2 13 2X+ 13(1 — %)/3 3X + 2(1 — %)/3 1/2 < / < 8 (32 + 14/)/3 13/3 2/3 / = 8 48 13X/3 + 4(1 — %) 2X/3 t> 8 8 + 5/ 4 0 Алгоритм решения линейной параметрической задачи в случае за¬ висимости от параметра коэффициентов целевой функции в пред¬ положении, что допустимая область, характеризующаяся ограни¬ чениями задачи, не пуста и что для некоторого значения парамет¬ ра t=to существует оптимальное решение, имеет следующий вид: 1. При t=to г-я симплекс-таблица является оптимальной. По¬ лагаем л=—1 и р=п, переходим к п. 2. 2. Определяем критическое значение ір = гпя. а. Если |£р| =оо, то достигнута граница области Q. al. Если л=—1, то отыскиваем нижнюю границу области Q. Полагаем л=+1; р=п, заменяем г на г+р + 1 и переходим снова к п., 2. а2. Если л=+1, то отыскиваем верхнюю границу области Q. Переходим к п. 3. 149
Рис. 5.1. Решение задачи параметрического линейного программирования б Если \tp\ <оо, то опре¬ деляем возможность прев¬ зойти критическое значение С помощью выражения для Тр , иногда подбором из нескольких возможных значений, определяем новую- базисную переменную. В этом случае следует прини¬ мать во внимание наличие множества различных реше¬ ний. 61. Если аГ1Х^.О, m,. то достигнута граница об¬ ласти Q. Переходим к п. 2а 1 или к п. 2а2. 62. В противном случае строим новую симплекс- таблицу. Заменяя г на г+1,. р на р'+л, снова начинаем вычисления с п. 2. 3. Вычисления прекраща¬ ем. Для каждой критиче¬ ской области значение ре¬ шающей функции f (t) берем- из соответствующей табли¬ цы. Там же определены оп¬ тимальные значения решаю- '■ Л . щих соотношений хі В практических приложе¬ ниях часто возникают сле¬ дующие частные случаи па¬ раметрической задачи: 1) значение параметра t принадлежит некоторому за¬ ранее выбранному интерва¬ лу LczT?1; 2) требуется отыскать только минимум (максимум) функции А f(t) для всех feT?1, т. е. требуется определить те значения t, при которых возможно достижение этого минимума (максимума); 3) требуется отыскать интервал возможных изменений какого- то одного из коэффициентов целевой функции. ' Особый 'интерес представляет задача нахождения наибольшего интервала такого, что оптимальное базисное решение любой из задач, принадлежащих значениям t из этого интервала,. 150
совпадает с оптимальным базисным решением задачи, принадле¬ жащей значению t = 0. Если область определения Q решающей функции f(t) ограниче¬ на заранее интервалом L, то вычисления, предписываемые п. 2 алгоритма, заканчивают, когда будут достигнуты границы интер¬ вала L. Если интервал не имеет общих точек с интер¬ валом L, то полагают л =—1 или л= + 1 в зависимости от того, будут ли значения t<=L меньше t-i или больше Лц. Если в задаче необходимо установить только минимум (макси¬ мум) значения решающей функции f(t), то вычисления, предписы¬ ваемые п. 2, проводят при л = — 1 или л= + 1 в зависимости от того, в каком направлении уменьшается значение функции f(t). Если требуется только определить возможность вариации одно¬ го из коэффициентов, то сперва устанавливают, существует ли ре¬ шение при f=0 и находят это решение. Вводя затем параметр /, сводят проблему к определению значений t-i (равных /і) и Лц {равных Л>). 5.3. Многопродуктовые потоки в сетях Существует немало практических задач о перевозке несколь¬ ких различных продуктов, которые должны сохраняться при про¬ хождении по дугам сети. Необходимо иметь возможность разли¬ чать продукты. Рассмотрим, например, упрощенную задачу транс¬ портировки трех видов фруктов из садов, расположенных в Кали¬ форнии, в магазины, ведущие оптовую торговлю. Предположим, что сады расположены в городах Санта-Барбара, Бейкерсфилд и Сакраменто. В период уборки урожая из этих садов поставляют в различных количествах апельсины, лимоны и лаймы (табл. 5.3). Таблица 5.3 Производительность (ящики в неделю) Город Апельсины Лимоны ф Лаймы Санта-Барбара 1 І 800 700 700 Бейкерсфилд 1000 800 500 ■Сакраменто 500 1000 500 По договорному соглашению требуется доставлять в оптовые ма¬ газины, расположенные в Денвере, Сиэтле и Канзас-Сити, такое количество фруктов, которое указано в табл. 5.4. Перевозка осуществляется по железной дороге, однако в каждом поезде для фруктов отведено ограниченное место. Пропускные способности путей между различными пунктами отправления и 151
Таблица 5.4 Величина спроса (ящики в неделю) Город Апельсины Лимоны Лаймы Денвер 900 900 700 Сиэтл 700 1000 500 Канзас-Сити 700 600 500 . пунктами назначения приведены в табл. 5.5. Независимо от вида фруктов данные величины задаются числом ящиков, перевозимых в неделю (предполагается, что все фрукты упакованы в ящики одинаковых размеров). Вес каждого ящика, а следовательно, и Таблица 5.5 Пропускная способность железных дорог (ящики в неделю) Из ■ в Денвер Сиэтл Канзас-Сити Санта-Барбара 1200 900 1000 Бейкерсфилд 1200 1000 1100 Сакраменто 950 1300 1000 соответствующие транспортные затраты зависят от вида упакован¬ ных в него фруктов. Затраты на транспортировку одного ящика приведены в табл. 5.6. Задача определения схемы перевозки фруктов, минимизирую¬ щей транспортные затраты, является задачей о многопродуктовом потоке. Характерная особенность задач о многопродуктовом пото¬ ке состоит в том, что по дугам сети протекает несколько неодно¬ родных потоков. При этом суммарный поток всех продуктов по ду¬ ге ограничен ее пропускной способностью. Если бы это было не так, то можно было бы для каждого продукта независимо решить минимизационную транспортную задачу. Однако указанные выше ограничения на пропускные способности дуг существенно услож¬ няют решение задачи. Задачи о многопродуктовом потоке, как и об однопродуктовом потоке, могут быть сформулированы в виде задач линейного про¬ граммирования. Задача о транспортировке фруктов является при¬ мером многопродуктовой транспортной задачи. Обозначим через Хц поток k-vo продукта из і-го источника в /-й сток, а через су —стоимость транспортировки единицы этого продукта. Пусть далее aki и bk —это соответственно предложение узла'і и спрос 152
Таблица 5.6 Транспортные затраты (центы на ящик) в Из Денвер Сиэтл Канзас-Сити Санта-Барбара Апельсины 3,2 2,5 5,6 Лимоны 2,4 1,9 4,3 Лаймы 2,3 1,7 4,0 Бейкерсфилд Апельсины 3,0 2,1 5,5 Лимоны 2,3 1,7 4,4 Лаймы 2,0 1,4 4,3 Сакраменто Апельсины 3,1 - 2,0 5,7 Лимоны 2,2 1,6 4,8 Лаймы 2,0 1,5 4,3 узла / для &-го продукта, а иц — пропускная способность дуги (і,/). Математическая постановка многопродуктовой транспорт¬ ной задачи выглядит следующим образом: минимизировать г т п 2 2 2 Сі'Хіі (5’2) fe=i і=і і=і при условии, что 2 Xij = bkj для всех /, k-, і 2xt' = для всех £’> і < ич- для всех i, j-, k хкц > 0 для всех i, j, k. Как и в однопродуктовой транспортной задаче, предполагается, что для каждого продукта суммарное предложение равно суммарному спросу, т. е. 2 = 2 для всех i і 153
Рис. 5.2. Сеть в многопродуктовой задаче о перевозках Во многих задачах, называемых многопродуктовыми задачами о перевозках, вводят промежуточные узлы, т. е. такие узлы, кото¬ рым не приписывают ни спрос, ни предложение, а только требует¬ ся, чтобы для них выполнялось условие сохранения потока. В качестве одного из таких примеров рассмотрим сеть, изобра¬ женную на рис. 5.2. Узлы 1 и 2 являются источниками 1-го продук¬ та, а узел 2 — источником 2-го продукта. Узел 5 является пунктом назначения для обоих продуктов, а узлы 3 и 4 — промежуточны¬ ми. Многопродуктовая задача о перевозках может быть сформули¬ рована в виде следующей задачи линейного программирования: г минимизировать 2 2 Л=1 А при условии, ЧТО = , если узел * является источником j j k-го продукта, Ѵх*/— 2*// = 0, если узел і является промежуточ- / / ным узлом, = ’ еСЛИ у3ел Î является стоком Л-го ’ / І продукта, Хі/ Uij k для всех (г, /) œA, Ху 0 для всех k и (і, /)œA. Через А здесь обозначается множество дуг сети. Одна из трудностей решения задачи о многопродуктовом пото¬ ке вызвана тем, что оптимальные решения могут быть нецелочис¬ ленными. В качестве примера рассмотрим двухпродуктовую транс¬ портную задачу, сетевая формулировка которой задана на рис. 5.3.. Дугам сети приписаны числа с\ , су , иу. Оптимальное решение соответствующей задачи линейного программирования представле¬ но в табл. 5.7. Нецелочисленные решения возникают по той причине, что мат¬ рицы ограничений в задачах линейного программирования, вооб¬ ще говоря, не унимодулярны. Напомним, что условие унимодуляр- 154
Рис. 5.3. Двухпродуктовая транспортная задача ности матрицы ограничений является достаточным для существо¬ вания целочисленных оптимальных решений. Поскольку в задачах сб однопродуктовом потоке данное условие выполнено, то для них можно разработать высокоэффективные алгоритмы, в которых по существу выполняются только две операции — сложение и вычи¬ тание, а такие операции, как например, деление и обращение мат¬ рицы, не требуются. С вычислительной точки зрения арифметиче¬ ские операции, выполняемые с целыми числами, намного быстрее, чем операции, использующие числа (десятичные) с плавающей точкой. Благодаря этому создают программы, позволяющие очень быстро решать задачи большой размерности. Для задач о многопродуктовом потоке были разработаны спе¬ циальные алгоритмы, в которых учтены специфика структуры и свойства данного класса задач. Было показано, что эти алгоритмы являются более быстрыми, чем процедуры решения общей задачи линейного программирования, но значительно более медленными, чем соответствующие алгоритмы задач об однопродуктовом потоке. Детальное изучение этих методов выходит за рамки нашей книги. Однако в настоящей главе мы рассмотрим ряд специальных вопро¬ сов, связанных с задачами о многопродуктовом потоке и методами их решения. Таблица 5.7 Оптимальное решение задачи линейного программирования Дата Продукт 1 Продукт 2 (1,1) 3/2 1/2 (1, 2) 0 3/2 (1. 3) 1/2 0 . I (2, 1) •0 3/2 (2 ,2) 2 0 : (2, 3) 0 1/2 " (3, 1) 1/2 0 (3, 2) 0 1/2 (3, 3) 3/2 3/2 155
5.4. Специальный класс целочисленных задач о многопродуктовом потоке Как отмечалось выше, общая задача о многопродуктовом по¬ токе может іне иметь целочисленного оптимального решения. Одна¬ ко существует несколько классов этих задач, в которых матрицы ограничений являются унимодулярными, и, следовательно, цело¬ численные оптимальные решения существуют. Интересно отметить, что многие из этих задач могут быть сведены к эквивалентным за¬ дачам об однопродуктовом потоке, которые несложно решаются с помощью любого алгоритма решения задачи о потоке минималь¬ ной стоимости. Для многопродуктовой транспортной задачи известен следую¬ щий результат. Матрица ограничений в многопродуктовой транс¬ портной задаче является унимодулярной в том и только в том случае, когда число источников т или число стоков п не превосхо¬ дит 2. Этот результат гарантирует существование целочисленного оп¬ тимального 'решения в случае, если или п^2 независимо от числа продуктов. Очевидно, что если т или п равно 1, то решение тривиально. Однако, когда и т, и п превосходят 1, то возникает более общая задача линейного программирования. Покажем, что при этом существует более простой метод решения. Введя слабые переменные sq в ограничения на пропускные спо¬ собности дуг, переформулируем многопродуктовую транспортную задачу (5.2) следующим образом: минимизировать при условии, что для всех /, k\ і h • t ai для всех i, k\ V хц + Sy — k иц для всех i, j; , sij > 0 для всех i, j, k. При т=2 данная задача сводится к следующей задаче линейного программирования: минимизировать 2 [(4/ — 4/) -4/ + 4/4 ] (5-3) k=i /=і 156
при условии, что 2 х*/ + s2j = и2! для всех /; k (5.4) — = — ДЛЯ В,сех / (5.5) 2Sy = — 2 U2‘ + 2 ’ і і k (5-6) %2/ + Xij = b* для всех /, /г; (5.7) 52/ + 31/ = u2i + Ulj — 2 bkj для всех /; k (5.8) xkij si; 0 для всех i, j, k. (5.9) Нетрудно заметить, что в равенствах (5.4) — (5.6) каждая из пе¬ ременных х|/ и з2/ появляется дважды: один раз со знаком плюс и один раз со знаком минус. Отметим также, что переменные Х\; и S\j входят только в равенства (5.7) и (5.8) (со знаком плюс). Поэтому можно рассматривать эти переменные как сла¬ бые и исключить их, записав (5.7) и (5.8) в виде х2/<Ь/ для всех /, k\ Sij < u2j + иц для всех j. k Величины, стоящие в правых частях равенств (5.4) — (5.6), пред¬ ставляют собой предложение (если они положительные) и спрос '(если отрицательные). Равенства (5.4) — (5.6) описывают транс¬ портную модель, сетевая структура которой показана на рис. 5.4. Правые части равенств (5.7) и (5.8) представляют собой пропуск¬ ные способности дуг, соответствующих переменным х2/ и з2/. Для решения данной задачи определяют оптимальные потоки х2! и з2/. Затем из (5.7) и (5.8) могут быть найдены величины Хі, и зц. Интересно отметить, что исходная задача линейного програм¬ мирования не имела форму сетевой задачи. Однако с помощью преобразования ограничений удалось свести ее к сетевой и тем самым существенно упростить фешение. 5.5. Приближенное решение многопродуктовой транспортной задачи методом .агрегирования Нередко лицо, принимающее решение, удовлетворяют хорошие, хотя и субоптимальные решения сложных задач. Как правило, это происходит в тех случаях, когда отсутствуют программы, позво¬ ляющие проводить точную оптимизацию, или когда использование 157
Рис. 5.4. Сеть в многопродуктовой транспортной задаче, сведенной к задаче об‘однопродуктовом потоке таких программ требует слишком больших затрат из-за цикличе¬ ского обращения к ним, или же когда нет возможности усовершен¬ ствовать основное программное обеспечение вследствие жестких ограничений на время ответа. Одним из методов, позволяющих упростить решение задачи, является метод агрегирования, заключающийся в замене множе¬ ства объектов (таких как переменные, узлы сети и т. п.) одним объектом. В этом случае сокращаются как время решения задачи, так и требуемая машинная память. Однако полученное решение, как правило, не является оптимальным. Будем рассматривать многопродуктовую транспортную задачу с т источниками п стоками и г продуктами. Сведем ее к сетевой задаче с двумя источниками, разбив множество источников на два подмножества kSi и S2. Теперь необходимо определить новые пред¬ ложения агрегированных узлов, решить вопрос о стоимостях и пропускных способностях агрегированных дуг и найти способ по¬ строения допустимого решения исходной задачи с помощью реше¬ ния агрегированной задачи. Поскольку каждый из двух агрегированных узлов представляет собой совокупность источников в исходной задаче, то величины предложения этих двух узлов аІ определяют как *1== 1,2 * где aki — предложение &-го продукта из î-ro узла исходной задачи. 158
Пусть уу — поток /г-го продукта из узла I в узел / в агрегиро¬ ванной сети. Поскольку дуга (/, у) получена в результате агреги¬ рования дуг, ведущих из узлов îœSz в сток /, то ieS^ где Хц — поток k-vo продукта из узла і в узел j в исходной задаче. Для определения стоимостей воспользуемся понятием взвешен¬ ного агрегирования. Стоимости взвешивают пропорционально ве¬ личинам предложения источников, представленных агрегирован¬ ными узлами: dj- = У cq (ai/aï) . ieS[ Чтобы определить пропускные способности агрегированных дуг найдем величины Ô, = min [af/at] для іеЗ;. . k Тогда. uij = min [ôz uq] . iesl Если принять uif как сумму пропускных способностей исходных дуг Uij ИЗ ИСТОЧНИКОВ ZœISz в сток /, то могут возникнуть трудности при построении допустимого решения исходной задачи. Сформулируем агрегированную задачу в виде следующей за¬ дачи линейного программирования: г 2 п _ минимизировать У У V сцукц при условии, что ^Уц — Ь/ для всех /, k; I У t/ц = а? для всех I, k; і 2? У у < Uij для всех Z, /; k . Уу 0 для всех I, j, k. Теперь необходимо построить решение исходной задачи, использо¬ вав оптимальное решение агрегированной задачи. Определим ве¬ личины ху ~ Уц tâ/aï) для і е 5Z. 159
Откуда следует, что У х?і = Уіі( 2 а^1 аЧ = 1 а*) = îgS[ Ve^/ J Эту процедуру называют дезагрегированием с фиксированными весами. Кроме того, 222^ = 222« ■ /г і j k i j Иными словами, значение целевой функции в результате дезагре¬ гирования с фиксированными весами не изменяется. Однако сле¬ та б л и ц а 5.8 Параметры агрегированной задачи Предложения Город Апельсины Лимоны Лаймы Санта-Барбара 800 700 700 ( Бейкерсфилд 1 Сакраменто 1500 1800 1000 Стоимости в Из Денвер Сиэтл . Канзас-Сити Санта-Барбара Апельсины 3,200 2,500 5,600 Лимоны 2,400 1,900 4,300 Лаймы 2,300 1,700 4,000 < Бейкерсфилд 1 Сакраменто Апельсины 3,033 2,067 5,567 Лимоны 2,244 1,644 4,622 Лаймы 2,000 1,450 4,300 Пропускные способности Из В Денвер Сиэтл Канзас-Сити Сата-Барбара 1200 900 1000 J Бейкерсфилд 1 Сакраменто 1500 1000 1000 160
дует помнить, что в силу определения величин иц в агрегирован¬ ной задаче может не существовать допустимого решения, даже если в исходной задаче оно существует. В этом случае можно по¬ пытаться воспользоваться другими методами агрегирования. Продемонстрируем процедуру агрегирования на конкретном примере. Перейдем к решению задачи о транспортировке фруктов, 'сформулированной в § 5.3. Агрегируем источники 2 и 3. Величины предложения, стоимости и пропускные способности для агрегиро¬ ванной задачи содержатся в табл. 5.8. Стоимость в оптимальном решении исходной задачи равна 18 570 долл. Стоимость в оптимальном решении агрегированной задачи равна 18 799,10 долл, и на 0,26% превосходит стоимость действительного оптимального решения. 5.6. Приложения задач о многопродуктовом потоке Задачи о многопродуктовом потоке находят широкое примене¬ ние при проектировании коммуникационных систем, осуществлении железнодорожных перевозок, планировании производства и распре¬ деления, в военном деле, а также в других областях. В настоящем разделе мы остановимся на нескольких приложениях многопродук¬ товых сетевых моделей и дадим новые формулировки некоторых задач о многопродуктовом потоке. Составление расписания движения судов. Одной из наиболее часто возникающих задач в области планирования перевозок яв¬ ляется задача составления оптимального расписания движения транспортных средств. Предположим, что известно число разно¬ типных судов, которые отличаются друг от друга скоростью пере¬ движения, грузоподъемностью и эксплуатационными расходами. Функция полезности определяется размерами поставки груза от¬ дельным судном к заданному сроку и затратами на осуществление соответствующей перевозки. Кроме того, существуют затраты (от¬ рицательная полезность), связанные с перегоном судна из порта, в котором оно было разгружено, в порт погрузки. Задача заклю¬ чается в максимизации полезности путем составления оптималь¬ ных маршрута и расписания движения судов. Данная задача может быть сформулирована в виде следующей сетевой задачи. Каждый узел / сети соответствует прибытию суд¬ на в порт назначения в один из допустимых сроков доставки. Каждый узел і соответствует исходному порту и моменту, равному разности срока доставки и времени транспортировки, которое по предположению является детерминированным. Дуга (Z, /) соот¬ ветствует перевозке груза, а дуга (/, і) — перегону судна из nopTà доставки в исходный порт. Суда À-го типа первоначально распо¬ лагают в источнике sk, и дуги (sk, ï)s таким образом, соответствуют началу их эксплуатации. Далее, вводят фиктивный сток t и дуги (/, /), соответствующие завершению эксплуатации судов. И нако¬ нец, суммарный поток перевозимого груза по всем дугам, соответ¬ ствующим различным датам перевозки и типам судов, не должен 6—1290 161
превосходить некоторой заданной величины. Математически эта задача формулируется следующим образом: максимизировать = ' <5Л0> k i j при условии, что 2W і < bv, (5.11)-- II « кЪ Л- ' dk i = sk ; 0 , i sk, /; —dk , i = t . (5.12) 0 < x-j < . k > Uij . (5.13). Здесь через сц обозначена полезность, соответствующая отдель¬ ному судну, перевозимому грузу и маршруту; Аѵ — это множество допустимых маршрутов для данного груза; гц —грузоподъемность судна k-ro типа на маршруте (і, j). Суммарный перевозимый груз не может превышать спроса на него Ьѵ. Ограничения (5.12) описы¬ вают условие сохранения потока по числу судов dk, а величина Xij равна 0 или оо в зависимости от того, может ли быть исполь¬ зовано на дуге (і, /) судно k-ro типа или гіет. В качестве примера рассмотрим задачу, описанную в табл. 5.9. Число судов каждого типа равно 2. Соответствующая сеть изображена на рис. 5.5. От¬ метим, что в рассмотренном классе задач узлы служат для обозна¬ чения места и времени. Таблица 5.9 Груз Минимально допустимый момент начала перевозки (через п дней) Допустимые сроки доставки 1 0 4, 5 2 2 6, 7, 8 3 3 7, 8 Проектирование городской транспортной сети. Многопродукто¬ вые сетевые модели используют и при проектировании городских транспортных сетей. В этих моделях узлы соответствуют участкам или районам города, а дуги — улицам или дорогам других видов. Требования к транспортной сети задаются матрицей поездок D, элементы di/ которой равны числу транспортных средств, движу¬ щихся из участка і к участку j в течение фиксированного интерва¬ ла времени. Каждая дуга имеет заданную пропускную способ- 162
Рис. 5.5. Сеть в задаче составления расписания движе¬ ния судов ность иц, которая может быть увеличена (например, в результа¬ те улучшения дорог). Плата за увеличение пропускной способности дуги (i, j) на единицу равна сц. Общая сумма денежных средств, предназначенных на улучшение дорог, равна В. «Продуктами» в данной модели являются потоки из каждого источника во все пункты назначения. Пусть хц —число транспортных средств, движущихся по дуге (і, /) и начавших свой пусть в узле yij— увеличение пропускной способности дуги (і, /). Предположим, что ■время проезда по дуге (і, /) является некоторой функцией потока: \ k I Задача проектирования сети заключается в определении дуг, про¬ пускную способность которых следует увеличить, и вычислении потоков по каждой дуге, минимизирующих общее время поездки. Математически данная задача формулируется следующим об¬ разом: минимизировать І І \ k ) при условии, что 2 Х'ІІ 2 Хі' = ^ki ’ 7 7 +У il, (5 в14) 2 2Сцуіі в ’ і 7 & гх xif > Уи 0 • В задаче (5.14) было сделано одно важное допущение, касающее* <ся поведения водителя. Оно основано на классическом принципе 163
распределения транспортных средств: водители выбирают маршру¬ ты таким образом, что суммарное время поездок для всей системы является минимальным. Как правило, целевая функция задачи (5.14) является нелинейной и выпуклой. Модели вычислительных систем. Очень похожи на только что рассмотренную нами модель городской транспортной сети многие модели вычислительных систем. В этих моделях дуги соответст¬ вуют каналам, а узлы — терминалам, системным и запоминаю¬ щим устройствам и т. п. Каждая дуга имеет фиксированную про¬ пускную способность иц, которая может быть увеличена на yq единиц вплоть до максимального значения Ьц. Стоимость увеличе¬ ния пропускной способности на единицу равна Cq. Роль продуктов вновь играют потоки (информация) из источника во все пункты назначения, а вместо матрицы поездок D вводят матрицу, элемен¬ ты dq которой соответствуют объему информации, передаваемой из узла і в узел /. Стоимость передачи единицы информации по дуге (і, /) равна eq. Математически эта задача может быть сфор¬ мулирована следующим образом: минимизировать 222^- k i j при условии, что dii¬ i i 2 ху ич + Уч > k Dq < bq , . Xq > yq 0 • Описанная модель может быть использована для определения про¬ пускной способности каналов, при которой заданные требования удовлетворяются с минимальными затратами. В этом случае зна¬ чения eq обычно полагают равными 0, «і/ = 0, а величины bq вы¬ бирают достаточно большими. Другим примером использования этой модели является задача минимизации стоимости передачи информации при фиксированных пропускных способностях дуг. В этом случае Ьі/=0. 5.7. Эвристический алгоритм решения задачи синтеза сети связи Как уже отмечалось, сетевые задачи большой размерности ре¬ шают в основном приближенными эвристическими методами. Рас¬ смотрим один из эвристических методов на примере задачи синте¬ за некоторой сети связи. Одна из основных задач при разработке схемы сети связи — 164
это определение наивыгоднейшей конфигурации и распределения каналов на сети. При этом могут решаться и другие задачи: 1) выбор типа линий связи (кабельные, радиорелейные, воз¬ душные и т. п.) с соответствующими системами передачи; 2) последующее распределение стандартных каналов на сети. Структура сети — ее топология — это совокупность пунктов (узлов, станций и т. п.) и соединяющих их линий связи или кана¬ лов в их взаимном расположении. Она показывает потенциальные возможности обеспечения связью отдельных пунктов этой сети. Экономически оптимальный выбор сетки линий, их емкостей и плана распределения каналов при заданном наборе пунктов сети называют задачей оптимального синтеза структуры сети. Ее реше¬ ние существенно зависит от того, насколько тщательно отобраны допустимые направления. В качестве основных критериев оптимальности построения сети обычно рассматривают объем капитальных затрат, расход кабель¬ ной продукции и т. д. Минимум расхода кабельной продукции обес¬ печивается при минимуме общей протяженности трасс кабельных и радиорелейных линий связи. Иногда в качестве критерия опти¬ мальности может рассматриваться и объем строительно-монтаж¬ ных работ. . Реальная сеть должна отвечать одновременно в той или иной мере всем критериям оптимальности, т. е. задача определения наивыгоднейшей конфигурации и распределения каналов сети яв¬ ляется многокритериальной. Но в связи со сложностью решения многокритериальных задач обычно в качестве оптимальной прини¬ мают сеть, отвечающую одному, какому-либо заранее заданному, критерию оптимальности. Очевидно, что сеть будет зависеть от выбранного критерия оптимальности. И в общем случае будет различной в зависимости от используемого критерия оптималь¬ ности. Рассмотрим задачу синтеза сети при следующих требованиях: 1. Каждый пункт сети должен иметь два независимых пути к центральному узлу (ЦУ) (прямой и обходной пути). Прямой путь должен обеспечивать передачу по 70—75% каналов от их расчет¬ ного числа, а обходной путь — соответственно по 25—30% кана¬ лов. Это соотношение может измениться, а поэтому должно зада¬ ваться на входе задачи. 2. Должен иметься путь, соединяющий каждый пункт сети с дополнительным узлом связи (ДУ), не совпадающим с ЦУ. На не¬ которых участках этот путь может совпадать с прямым и обход¬ ным путями.. В сетях связи накладывают дополнительные требования: 3. На линиях связи пункт —• ЦУ число транзитов по высокой частоте (ВЧ) должно быть, не более двух в случае применения аналоговых систем передачи. 4. Суммарная емкость (число каналов) на любом участке зо¬ новой сети должна быть кратна 12 для аналоговых систем переда¬ чи и 30 для цифровых систем. 165
5. Иногда требуется предусмотреть возможность того, чтобы через некоторые пункты проходило минимальное число путей. Эти пункты отмечают в исходных данных. ' • Задача синтеза структуры сети может быть наиболее адекват¬ но представлена (в силу нелинейного ступенчатого изменения це¬ левых функций, в частности функции стоимости линии связи) как задача целочисленного нелинейного программирования в различ¬ ных формах. Рассмотрим задачу выбора оптимального варианта построения сети с двумя независимыми путями к единственному узлу (цент¬ ральный узел), к которому передается информация со всех других узлов сети. В качестве целевой функции выступает функция стои¬ мости сети. Задан неориентированный граф (сеть) G с W+1 вершинами. Все вершины, кроме (М-НІ)-й, являются источниками информации. Вершина .2Ѵ+1 является стоком (центральным узлом). Путем ц* от вершины k к стоку 7V+1 будем называть последовательность вершин (k, і, /, ...,ЛМ-,1), через которые проходит данный путь. Для каждой вершины k(k='l,N) необходимо выбрать два пути к стоку, не имеющих общих вершин, кроме k и .7V+1. Заданы по¬ токи информации Рі и Рг, которые требуется передать от верши¬ ны k к стоку соответственно по первому и второму путям. Дугам графа G приписаны веса, равные их длинам. Для общности рас¬ смотрения заданный граф G дополним до полного дугами с доста¬ точно большим весом вместо отсутствующих. Цель задачи — выбор топологии сети и маршрутов передачи информации на ней, минимизирующих общую стоимость сети. Общая стоимость сети определяется как сумма стоимостей входя¬ щих в нее дуг. Стоимость дуги Сц является функцией от длины дуги (і, /) и суммарного потока информации на ней — суммы потоков от вершины і к вершине / и от вершины / к вершине і. Конкретный вид функции стоимости не имеет принципиального зна¬ чения и может быть произвольным. В дальнейшем предполагает¬ ся, что функция стоимости возрастает с ростом расстояния и не убывает с ростом суммарного потока. Известно, что оптимальная сеть при различных минимизируемых величинах может быть по¬ лучена по одному и тому же алгоритму при соответствующем вы¬ боре величины Сц. Введем следующие обозначения: Хі/ —булева переменная, равная 1, если вершина / непосред¬ ственно следует за вершиной і на первом пути ц? от вершины k к стоку, и равная 0 в противном случае (і=1,М, / = 1,7Ѵ+1, fc=ÎJŸ). хцк — булева переменная, равная 1, если вершина / непосредствен¬ но следует за вершиной і на втором пути цк от вершины k к сто¬ ку, и равная 0 в противном случае (i=l, N, j=l, N+l, k=l,N). 166
Qtl — суммарный поток информации на дуге (і, /), определив* мый по формуле N 2 = (5Л5) k=\ Z=1 і = 1 , N ; j = 1 , N + 1 ; i < / . Тогда рассматриваемую задачу можно сформулировать следую¬ щим образом. Необходимо найти значения булевых переменных минимизирующих общую стоимость сети: N W+1 s = 2 2 (5Л6) і=і /=і+і где Qij — вычисляют по формуле (5.15), при ограничениях: ЛЧ-1 N / = 1, j=£k 7=1, i^=k N 2^ftw+i = 1 , k= 1 ,N- 1= 1,2 ; (5.18) 7=1 TV W+l 2 4 = 2 Xr/< 1 > г = 1 ,W, &= 1 л , /= 1,2 .(5.19) 7 = 1, 7^ Г / = 1, 2 N 2 2 < i *r = i,N ’k = i ’N ■ (5-20) 1=1 7=1, i=f=r Ограничение (5.17) означает, что началом как первого, так и второго путей от вершины k к стоку должна быть вершина k. Ограничение (5.18) предопределяет, что все пути должны оканчи¬ ваться в вершине N+.1. Ограничение (5.19) указывает на условия сохранения потока (равенство) и на запрет на петли в путях от вершины к стоку (неравенство). Заметим, что если функция стои¬ мости монотонно возрастает с ростом суммарного потока, то огра¬ ничение (5.19) в виде неравенства можно опустить. Ограничения (5.20) реализуют условие непересечения первого и второго путей от каждой вершины к стоку по вершинам. Как видно, данная математическая постановка предполагает наличие 2N3 булевых переменных и 5N2+fiN ограничений, что в практически интересных случаях- (Af>20) не позволяет рассчиты¬ вать на точное решение. , • Исключение составляет случай, когда функция стоимости ли¬ нейна относительно суммарного потока. Поскольку целевая функ¬ ция (5.16) становится линейной по переменным х1ц , это позволяет 167
осуществить декомпозицию исходной задачи на N независимых задач булеѳого программирования с целевой функцией W 7Ѵ+1 sk = У У C^x‘f , (5.21) где Cij —стоимость единицы потока по дуге (і, /), и ограничения¬ ми (5.17) — (5.20) при фиксированных значениях k(k=\, N). Последняя задача (при фиксированном k) может быть сформу¬ лирована достаточно просто: найти два пути от вершины k к вер¬ шине М+.1, не имеющих общих вершин, кроме k и N+1, и обеспе¬ чивающих минимум суммарной стоимости путей. При этом стои¬ мость пути равна стоимости входящих в него дуг, а стоимость ду¬ ги (і, /) равна cij Рк для Z-го пути (/=1, 2). Математическую постановку задачи с двумя независимыми пу¬ тями к центральному узлу и одним путем к ДУ (дополнительному узлу) можно записать в следующем виде. Пусть вершина с номером N является ДУ. Через ц будем обозначать путь от k вершины к ДУ (k=\,N—1). При этом \fk=l,N—1 путь цз не должен содержать вершину М+1. Пусть х?/' —булева переменная, равная 1, если вершина / связана с вер¬ шиной і на пути цз от вершины k к ДУ, и равная 0 в противном случае. Через Р$ будем обозначать требуемые величины потоков информации от вершины k к ДУ (k=\,N—1). Тогда, придерживаясь прежних обозначений, суммарный поток на дуге (Z, /) определяем по формуле N 2 N— 1 Qii = 5 2 р‘^++ 2 ) • (5-22) k= 1 /=і k=i Для дуг (/, М+1) (Z='l, М) суммарный поток, как и раньше, вычисляют по формуле (5.1'5). Рассматриваемую задачу можно сформулировать следующим образом. Найти значения булевых переменных х1ц (/=1,3), мини¬ мизирующих общую стоимость сети, вычисляемую по формўле (5.16) при ограничениях (5.17) — (5.20) и ограничениях: 2 х^-=1; 2 х«=0’ * = ЬМ— 1 ; (5.23) /=1, j^k 2 Xw = 1 ; k = 1 ,M—1 ; (5.24) Z=1 N— 1 N—l 2 x?rfc= 1> r=l,M— 1; k=\, N— 1; r+k. (5.25) 168
Ограничения (5.23) — (5.25) аналогичны ограничениям (5.17) — (5.19). Аналог ограничения (5.20) отсутствует, поскольку к ДУ необходимо построить только один путь от каждой вершины. Как легко видеть, требование наличия путей к ДУ увеличивает число переменных на (N—I)2 и число ограничений на (Af—1) (N+ +2). Но, как и ранее, в случае, когда функция стоимости дуги ли¬ нейна от величины суммарного потока, задача распадается на две независимые задачи: .1) определение двух непересекающихся путей к центральному узлу; 2) определение путей к вершине N, имеющих минимальную суммарную стоимость. Математическая постановка первой из этих задач уже рассмат¬ ривалась, а вторая, как легко видеть, приводит к задаче построе¬ ния кратчайших путей от каждой вершины к ААй. В обеих постановках случайными величинами являются значе¬ ния Рі, так как они получаются в результате прогнозов и в край¬ нем случае должны задаваться в виде интервалов с соответствую¬ щими значениями вероятностей. Другой случайной величиной мо¬ жет быть доля информации, передаваемой по прямому (или об¬ ходному) пути. Полученная нелинейная целочисленная задача может быть ре¬ шена на современных ЭВМ лишь для сети малых размеров: чис¬ ло пунктов 10 при 20—30 допустимых трассах. Размеры реальных сетей, как правило, больше. Поэтому в некоторых работах прово¬ дят линеаризацию данной задачи. В результате задачу сводят к целочисленной линейной или просто к задаче линейного програм¬ мирования. Но в этом случае для получаемого решения не гаран¬ тируется определенная степень приближения критерия затрат к минимуму. Большая размерность описанных задач и стохастическая при¬ рода исходных данных приводит к необходимости разработки эвристических алгоритмов решения. Кроме того, сама специфика структуры сетевых задач позволяет находить более эффективные алгоритмы поиска решения, чем алгоритмы в точных методах ре¬ шения. В литературе описан ряд эвристических методов, учитывающих специфику поставленной, задачи. Но в этих алгоритмах для реше¬ ния задачи используют, хотя и в разной степени, дуги минималь¬ ной длины. Следовательно, они ориентированы в некоторой степе¬ ни на сеть минимальной длины,-что не всегда позволяет найти наилучший результат, тем более этот недостаток будет сказывать¬ ся при построении коротких сетей, в которых расстояния между узлами малы, так как в этом случае стоимость сети в основном определяется стоимостью аппаратуры и мало зависит от длины трасс. 169
Алгоритм синтеза сети без ДУ. Алгоритм для решения общей задачи (5.15)— (5.20) состоит из трех этапов: I этап —построение первых путей от всех вершин к стоку; II этап — построение вторых путей от всех вершин к стоку; III этап — улучшение сети, полученной на первых двух этапах. Этап I. Шаг 1. Строят начальную звездообразную сеть, в которой каждая вершина напрямую, без промежуточных узлов, соединена со стоком, и подсчитывают стоимость такой сети согласно задан* ной функции стоимости. Если для какой-то вершины связь со сто¬ ком отсутствует в исходном графе, то стоимость такой несущест¬ вующей дуги полагают -равной достаточно большому числу. Шаг 2. Для каждой вершины Æ, путь от которой является ра¬ диальным путем ЛГ+1), вычисляют экономию Tk, которая будет получена при замене пу¬ ти ри на путь Ц* (г) = (&, г, Ці) и равна разности их стоимостей. При этом промежуточная верши¬ на пробегает по всем вершинам, инцидентным вершине k (т. е. связанным с вершиной k разрешенными дугами), и по пути ці. Пути от вершины до стока не содержат несуществующих дуг. За¬ тем из всех экономий Т* выбирают максимальную. На рис. 5.6 приведен пример такой замены. Экономия дости¬ гается за счет ликвидации дуги (k, N+1), но при этом может уве¬ личиться стоимость дуг пути Ць Шаг 3. Выбирают максимальное значение Tk* из всех экономий Tk, £=1, N. Если Tk*^û, то этап I считают завершенным. Шаг 4. Для выбранного Tk* осуществляют замену пути цГ = = ,(&*, W-hl) на путь |4* = (k* , г, ) , на котором достигалась Рис. 5.6. Пример замены дуги [р^=(г, й, й, Л^+1); Лі+1); gf(r) = (6, г, й, І2, AM-1)1 максимальная экономия Tk*- Осуществляют замену путей для всех вершин V(k*), пу¬ ти от которых проходили по дуге (k*, N+1), т. е. вместо пути = (V(k*) k*,N+ + 1), формируют новый путь = цГ») . На рис. 5.6 такими верши¬ нами являются вершины /і и /2. Новый путь для верши¬ ны /і, например, будетр.,‘= (/і k, г, i\, i2, N + 1) вместо Ці’ = = (/!,£, N + 1).. 170
Шаг 5. Экономию Tk полагают равной 0 для всех &=1,N. Пе¬ реход к шагу 2. Шаги 2—5 выполняют до тех пор, пока может быть достигнута экономия при замене какого-либо радиального пути на путь через промежуточную вершину. • Пересчет экономий Tk осуществляется после каждой замены радиального пути. Поскольку каждый раз происходит уменьшение на единицу числа радиальных путей, то этап I конечен. На этапе II осуществляют построение вторых путей от каждой вершины к стоку. Идея алгоритма на этапе II та же — замена ра¬ диального второго пути на путь через промежуточную вершину. Шаг 1 аналогичен шагу 1 этапа II. Отличия: если первый путь от некоторой вершины после завершения этапа I оставался ра¬ диальным, то радиальный второй путь прокладывают по несуще¬ ствующей второй дуге к стоку и его стоимость полагают вдвое большей, чем стоимость просто несуществующей дуги. Смысл это¬ го в том, что такие пути выгоднее всего заменять, а значит, они будут заменены в первую очередь. Кроме того, при подсчете стои¬ мости сети учитывают первые пути от всех вершин к стоку. Шаг 2 аналогичен шагу 2 этапа I. Только теперь существует две возможности замены радиального второго пути от é-й верши¬ ны на путь через промежуточную вершину г, а именно: . H2J(0 = (k , Г , pî) , Ц2,2(г) = (k , Г , J12) , т. е. новый путь идет от вершины k к вершине г, а затем либо по первому, либо по второму пути от вершины г к стоку (конечно, при этом второй путь Ц2 должен быть «реальным»). Обозначим через V (k) множество вершин, вторые пути кото¬ рых проходят по дуге (k, Af+l), при этом беіф). Тогда путь ц можно заменить на путь цг’1 или рД’2 только в том случае, если Vj € V(k) plif] Ц2J E \k , N + 1 ) или p{ n p2,2Œ{é, 7V+1} соответствен¬ но. Схематично вышесказанное показано на рис. 5.7. Шаги 3—5 аналогичны шагам I этапа. Шаги 2—5 выполняются до тех пор, пока замена ка¬ кого-либо радиального пути на путь через промежуточ¬ ную вершину может дать положительную экономию. После выполнения I и II этапов мы получим сеть с размеченными на ней марш- • рутами первых и вторых путей от каждой вершины к стоку. Эта сеть с маршрута- 171
ми удовлетворяет всем условиям задачи, т. е. является допустимой. Кроме того, она обладает следующими особенностями. 1. Каждая вершина k=l,N имеет не менее двух инцидентных вершин сети, поскольку осуществляет два непересекающихся по вершинам, а следовательно, и по дугам пути. Инцидентными вер¬ шинами называют вершины, связанные разрешенными дугами. 2. По каждой дуге сети (і, /) согласно выбранным маршрутам обоих путей происходит передача информации либо только в одну сторону, например от вершины і к вершине /, либо в обе стороны. В первом случае дугу (t, /) ориентируем от і к /, а во втором слу¬ чае дуга (і, /) будет ориентирована в обе стороны. После ориента¬ ции сети описанным образом получим, что каждая вершина сети имеет ровно две выходящих из нее дуги (кроме, конечно, стока). Входящих же дуг может быть произвольное число. Это следует из алгоритма замены радиального пути на путь через промежуточную вершину. 3. Если же по дуге (t, /) от вершины і к вершине / идет поток информации Pij, то в дальнейшем он полностью проходит по пер¬ вому или второму пути от вершины / к стоку. Этот факт также следует из алгоритмов I и II этапов. Особенности сети, отмеченные в пп. 2 и 3, облегчают реали¬ зацию III этапа. Если после выполнения первых двух этапов каждая вершина сети имеет ровно две инцидентные вершины (кроме, разумеется, стока), то полученная сеть не будет обладать избыточностью. В этом случае возможность улучшения сети заключается только в попытке заменить какой-либо радиальный первый путь. Если же некоторые вершины имеют более двух инцидентных вершин, то по¬ лученная сеть обладает известной избыточностью. На III этапе осуществляют попытку улучшить сеть с точки зрения ее общей стоимости в обоих случаях. Шаг 1. Составляют множество дуг — претендентов на замену. В него включают все дуги (t, /), ориентированные лишь в одну сторону (7=1, N, i=i,N+1, Обозначим это можество че¬ рез D. Для каждой дуги (і, j)^D составляют множество вершин V(i, j), пути от которых проходят по дуге (і, /), и множество пу¬ тей L(i, j) [первые или вторые пути от вершин множества Ѵ(і, j), проходящие по дуге (і, /)]. Шаг 2. Для каждой дуги (k, т) ^.D (рис. 5.8) вычисляют экономию, которая может быть получена при замене дуги (k, т) на дугу (k, г) с соответствующим изменением маршрутов первых или вторых путей для всех вершин j^V (k, ni) на путь ц/?1 =(/,..., k, г, jxi) или путь ц?2 = (/,..., k, г, Ц2)(/=1,2), т. е. новый путь идет, как и раньше, до вершины k, а далее через вершину г и по первому или второму пути от вершины г к стоку. Такую замену можно осуществить лишь в том случае, когда: 1) для любой вершины jeV(k, т) другой путь не имеет общих вершин с р,/ , кроме (Л^+1)-й вершины; 172
2) сам путь |л< не содержит вершин из V (k, т), т. е. И/ f|V(k, iri) = 0. Экономии при этом достигают за счет ликвидации дуги (k, т), а также, за счет уменьшения потока на для остальных дуг пути р'і. Но при этом может произойти увеличение стоимости сети от включения в сеть дуги (k, г) или увеличения на Pk-,m потока на дуге (k, г) и на дугах путей pî или р.2 . Шаг 3. Выбирают дугу (k, т) и соответствующую вершину г, на ко¬ торых достигается максимальная эко¬ номия. Если максимальная экономия положительна, то выполняют шаг 4, в противном случае — завершение III этапа. ■ Шаг 4. Осуществляют модифика¬ цию сети, маршрутов путей, множеств D, V и L в соответствии с выбранны¬ ми на шаге 3 дугой {k, т), вершиной г и путем от вершины г к стоку. Пос¬ ле этого — переход к шагу 2. После завершения III этапа рабо¬ та эвристического алгоритма считает¬ ся законченной. Алгоритм синтеза сети с ДУ. Схе¬ ма эвристического алгоритма для ре¬ шения задачи (5.15)—(5.25) приведе¬ на на рис. 5.9. На каждой итерации осущест¬ вляют последовательное выполнение вышеописанных трех этапов эвристи¬ ческого алгоритма построения двух непересекающихся путей к централь¬ нет Рис. 5.9. Схема эвристическо¬ го алгоритма Рис. 5.8. Пример замены дуг с изменением маршрутов первых или вторых путей 173
ному узлу, после чего осуществляют построение путей к ДУ с по¬ мощью III этапа эвристического алгоритма и проводят попытку уменьшить стоимость сети путем замены некоторых маршрутов путей к центральному узлу с учетом новых путей к ДУ с помощью III этапа эвристического алгоритма. На каждой итерации (кроме первой) при построении первых и вторых путей к центральному узлу учитывают потоки информации, протекающие по сети соглас¬ но построенным на предыдущей итерации путям к ДУ. А при по¬ строении путей к ДУ учитывают потоки информации, протекаю¬ щие по сети согласно построенным ранее первым и вторым путям к центральному узлу. Для учета существующих на сети потоков информации в эвристическом алгоритме изменяют лишь подсчет экономии при замене одного пути на другой. Итерационный процесс продолжают до тех пор, пока осуществ¬ ление очередной итерации приводит к изменению сети и потоков на ней или пока не будет исчерпан заданный лимит итераций. В качестве решения задачи принимают тот вариант сети, при ко¬ тором достигается минимальное значение общей стоимости сети. Как показал опыт многих экспериментальных расчетов, требуе¬ мое для достижения минимума число итераций зависит от соотно¬ шения величин шіп[Рь^*] и PL Чем ближе эти значения, тем больше требуется итераций (но их число, например, не превосхо¬ дило 5 при .Лі=25)‘. Если же потребности путей к запасному узлу существенно меньше потребностей к центральному узлу, то луч¬ ший результат, как правило, достигается на первой итерации. Построение сети с учетом ограничений по транзитам. Доработ¬ ку изложенного алгоритма для построения сети и распределения каналов с учетом ограничения по транзитам осуществляют сле¬ дующим образом. Под транзитностью пути в настоящей работе понимают число дуг в этом пути. Ограничение на транзитность формулируют так: построить сеть, в которой число дуг в маршрутах прямых и об¬ ходных путей к ЦУ и путей к дополнительному узлу ДУ не будет превышать некоторого заданного числа (обозначим его. т). Для этого достаточно на шаге 2 этапов I—III описанного алгоритма рассматривать в качестве новых только пути, удовлетворяющие условию транзитное™. Для і-й вершины необходимо знать: 1) число дуг на участке пути между і-й вершиной и вершиной, наиболее удаленной от і-й по числу дуг, путь от которой проходит через прямой или обходной путь от і-й вершины к ЦУ и путь от і-й вершины к ДУ. Обозначим эти числа соответственно Лі(і), Д2(і), Дз(і); 2) число дуг в прямом, обходном пути к ЦУ и пути к ДУ от і-й вершины; обозначим эти числа соответственно Ві(і), В2(і), В процессе учета ограничения по транзитам при построении прямых путей к ЦУ при замене пути JV+1) на путь 174
|x* j(r) = (k, r, p,ri) в качестве г берем лишь те вершины, для кото¬ рых выполняется неравенство Ax(k)+Bx(r)<x. Если от. А-й вершины, которая соединена с центром фиктивной дугой, нет маршрута, удовлетворяющего ограничению по транзит- ности, то путь от А-й вершины строят без ограничения на транзит- ность после того, как построены все маршруты прямых путей, удовлетворяющие ограничению на транзитность. При построении нового маршрута обходного пути с учетом ограничения по транзитности для Л-й вершины в качестве вариан¬ тов замены рассматривают лишь такие вершины г, для которых выполняются требования: 1) если новый маршрут пройдет через прямой путь от г, то Аг (k) +В1 (г) <т; 2) если новый маршрут пройдет через обходной путь от г, то Аг (k) +Вг (г) <т. Если вершина k соединена с центром фиктивной дугой и нет марш¬ рута, удовлетворяющего требованию транзитности, то маршрут от k строят без ограничения на транзитность после построения всех маршрутов обходных путей, которые удовлетворяют ограни¬ чению на транзитность. Учет ограничения на транзитность на этапе оптимизации по¬ строения прямых и обходных путей показан на рис. 5.10. Здесь W— множество вершин, пути от которых проходят по дуге (i, k). Замена дуги (i, k) на дугу (i, /) на этом этапе происходит при следующих условиях: 1) транзитность пути от й-й вершины (старый путь) не мень¬ ше транзитности пути от J-й вершины (новый путь); замену про¬ изводят, если при этом есть выгода (если экономия положи¬ тельна); 2) транзитность пути от /-й вершины превышает транзитность пути от вершины k; 3) если ранее построенный путь от і-й вершины не удовлетво¬ рял ограничению на транзитность, то замена происходит в том случае, когда она выгодна; Рис. 5.10. Учет ограничения на транзитность 175
4) если путь от і-й вершины удовлетворял ограничению на транзитность, но путь хотя бы от одной вершины из множества W (рис. 5.10) многотранзитный, то замену производят тогда и толь¬ ко тогда, когда, во-первых, она выгодна и, во-вторых, если при этом не появляются новые недопустимые по транзитности маршру¬ ты (прежние могут оставаться многотранзитными); 5) если путь от вершины і и путь от любой другой вершины из множества W удовлетворяют ограничению на транзитность, то замену производят, когда она выгодна и не создает недопустимых по транзитности маршрутов. При построении путей к ДУ учет ограничения по транзитам проводится следующим образом. При замене цз= (&, N) на путь цз(г) = (k, г, цз) проверяют вы¬ полнение неравенства Аз (k) +Вз (г) <т. После каждого изменения маршрутов производят пересчет чисел А и В у тех вершин, в маршруты которых были внесены из¬ менения. Рассмотренный эвристический алгоритм не накладывает серьез: ных ограничений на функцию стоимости дуг и может быть исполь¬ зован для решения широкого круга задач: построение сети кратчайшей длины или минимальной стои¬ мости; построение сети минимальной по величине задействованных ка- нало-километров; распределение маршрутов на сети при наличии ограничений пропускных способностей дуг с целью достижения максимальной суммарной свободной емкости. Кроме того, алгоритм позволяет легко учесть дополнительные требования по качеству передачи информации, например ограниче¬ ние на транзитность. Примеры синтеза сети-с детерминированными исходными дан¬ ными. Для иллюстрации работы эвристического алгоритма рас¬ смотрим граф, который приведен на рис. 5.11, где изображены допустимые трассы прокладки кабеля с указанием протяженности каждой дуги графа в километрах. Центральным узлом (ЦУ) счи¬ тают узел 1, а дополнительным узлом (ДУ) — узел 2. Потреб¬ ности в каналах первого и второго путей к ЦУ и пути к ДУ для каждого узла сети приведены в табл. 5.10. Стоимость 1 км дуги за¬ висит от стоимости системы передачи, установленной на дуге, и составляет 2 тыс. руб. при емкости 120 каналов, 4 тыс. руб. при емкости 240 каналов и 5 тыс. руб. при емкости 600 каналов. Та¬ кой вид функции стоимости линий связи в общем виде соответст¬ вует реальной ситуации. Кроме того, в проектируемой сети между узлами 1 и 2 уже имеется система передачи емкостью 480 кана¬ лов, между узлами и 1 и 3 — 600 каналов, между узлами 2 и 8, Зи 15 — по 120 каналов. 176
мн g g
Таблица 5.10 Исходные данные для задачи синтеза сети / Потребности узлов (в каналах) Наименова¬ ние пути 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Первый путь к ЦУ 60 120 220 24 24 12 24 36 24 96 36 12 240 12 481 Второй путь к ЦУ 36 60 72 12 24 12 24 24 12 60 36 12 120 12 48 Путь к ДУ 0 24 24 12 12 12 12 12 12 24 12 12 36 12 48 В табл. 5.11 приведены результаты расчетов по описанному •алгоритму. Суммарное число свободных каналов на сети вычис¬ ляют как суммарную разность между емкостью установленной системы передач и потоком информации на каждой дуге. Дуги, включенные в оптимальную сеть, изображены на рис. 5.11 жир¬ ными линиями, в скобках указано число используемых каналов на дуге. Время счета примера составляет около 1 мин на ЭВМ ЕС 1033. Решение задачи синтеза сети Таблица 5.11 Параметр Эвристический алгоритм Стоимость сети, тыс. руб. Число дуг, штук Протяженность сети, км Суммарная свободная емкость каналбв 2280 22 1069 1260 На рис. 5.12 приведена сеть, полученная в результате работы эвристического алгоритма построения двух независимых путей к ЦУ без ДУ. Стоимость полученной сети составила 2124 тыс. руб. Маршруты первых и вторых путей сети существенно отличаются от маршрутов первых и вторых путей на рис. 5.11, т. е. при выпол¬ нении итерационного процесса маршруты первых и вторых путей претерпевают значительные изменения. Следует отметить, что требование наличия путей к ДУ увеличивает на 15,7% общую по¬ требность в линиях связи по первому и второму путям к ЦУ, а сум¬ марную стоимость сети увеличивает лишь на 7,3%. На тех же исходных данных с ЦУ и ДУ был проведен расчет в случае, когда стоимость дуги не зависит ют расстояния, а опреде¬ ляется только используемой системой передачи. Стоимости систе¬ мы передач были взяты следующие: емкостью 120 каналов — 178
Рис. 5.12. Синтез сети согласно эвристическому алгорит¬ му (сеть без ДУ — два независимых пути к ЦУ) Рис. 5.13. Синтез сети согласно эвристическому алгоритму, когда стоимость дуги не зависит от 1 расстояния 2 тыс. руб.; 240 каналов — 4 тыс. руб.; 600 каналов — 5 тыс. руб. Сеть, полученная в результате работы предложенного алгоритма, приведена на рис. 5.13. Число дуг сети 23. Протяженность сети 1132 км. Суммарная свободная емкость 2460 каналов. 5.8. Методы внутренней точки для задачи математического программирования Рассмотрим общую задачу математического программирова¬ ния, не содержащую ограничений в виде равенств, т. е. минимизировать f (х) . при ограничениях gi(x)^0; і=\,т. 179
Пусть вблизи локального минимума этой задачи х* существует окрестность, где есть такая точка х°, в которой 5<(х°)^0 (і=1, т) и выполняются условия строгой дополняющей нежесткости: иі(х*) >0, если gi(x*) =0, і= 1, т. Видоизменим достаточные условия локального минимума в точ¬ ке х*, сформулированные в § 1.5. Предположим, что при малом г>0 в точке Іх(г), и(г)] вблизи точки (х*, и*) выполняются ус¬ ловия ёі(.х) > 0 , і = 1, т ; Щёі(х) = г > 0, і = 1, т ; . «і > 0 , і = 1 , т ; V /(х) — 2 V gi(x) = 0 . (=і Из второго условия выразим иі и подставим это выражение в по¬ следнее равенство: V /[х(г)] — У V &[х(г)] = 0 . gzMOl Непосредственной проверкой легко установить, что левая часть этого выражения — градиент функции Цх , г) = /(х) — Г 2 1п , І=І обращающийся в нуль в точке х(г). Причем х(г) стремится к X* при г, стремящемся к нулю. Функцию L(x, г) в таком виде называют логарифмической штрафной функцией. Аналогично получаем другой вид штрафной функции Li(x, г), полагая щ = X/. Тогда X;gt(x) = г > 0 , і = 1, т , т г2 V /[х(г)] - 2 ~г— V ёЩг) 1 = 0, и функция Li (х, г), примет вид m Задавая последовательность значений {rÉ}, стремящуюся к нулю, получаем последовательность {x(r*j}, сходящуюся к х*. С помо¬ щью новых функций £(х, г) мы свели задачу на условный экстре¬ мум (задачу математического программирования) к задаче поиска безусловного экстремума функции L(x, г). Точнее, задачу матема¬ тического программирования заменили семейством функций, зави¬ сящих от параметра г и обладающих следующими свойствами: 1) в окрестности оптимальной точки они близки к заданной минимизируемой функции; 180
2) каждая функция из построенного семейства достаточно быстро возрастает при приближении к границе допустимой об¬ ласти из «внутренней» части допустимой области. , К минимизируемой функции исходной задачи мы добавили ряд слагаемых, называемых штрафными (барьерными) функциями, зависящими от параметра г и функции одного из ограничений. При фиксированном значении параметра г второе слагаемое стре¬ мится к бесконечности при стремлении к нулю его аргумента. Каждую функцию семейства подвергают безусловной минимиза¬ ции, и этот процесс не может вывести х* за пределы допустимой области. Подобные методы названы методами внутренней точки. В задаче математического программирования при наличии ограничений-равенств допустимой области (в виде области) нет, и «метод внутренней точки» не применим. Рассмотрим некоторые примеры перехода от задачи математи¬ ческого программирования к задаче безусловной минимизации «методом внутренней точки». Пример. Минимизировать f (х) =хі+х2 при ограничениях Êfi (х) =—х? +х22г0, gn(x) =Х1>0. Решение. Построим логарифмическую штрафную функцию L (X, Г) =Хі +х2—г In (—X 1+х2) —г In Хі. Определим точки минимума L(x, г) аналитически, так как L(x, г) дифференцируема в рассматриваемой области. Для нахождения jfi(r) и х2(г) получим систему уравнений ' dL j I r«2xj г q . дхі -х^ + х2 ’ Откуда найдем ’ ' Хі(г)=-1±ГТ + 87. здесь оставим только знак «+», так как Хі^О; Заметим, что значения *і(г) и х2(г) удовлетворяют условию по¬ ложительной определенности матрицы V2L. Дадим последователь¬ ность значений г : 1,0; 0,5; 0,25; 0,1. Соответственно получим после¬ довательности значений Хі(г)=0г5; 0,309; 0Д83; 0,085; х2(г) = 1,25; 0,595; 0,283; 0,107, 181
Рис. 5.14. Графическое решение за¬ дачи математического программиро¬ вания методом внутренней точки сходящиеся при г->0 к точке (0^ 0). Графическое решение данной задачи представлено на рис. 5.14. В общем случае в задачах со многими локальными минимума¬ ми (при слабых условиях регу¬ лярности) существует последова¬ тельность безусловных локальных минимумов, сходящихся к каж¬ дому из условных локальных ми¬ нимумов. Рассмотрим второй пример: решение задачи линейного про¬ граммирования методом внутрен¬ ней точки. Пример. Минимизировать хі при условии £і(х)=Хі>0. Решение. Построим логарифмическую штрафную функцию L(x, г) =хі—г Іпхь Необходимое условие существования минимума: dL dL j г Q dxr дх± хг Откуда Хі (г) =г. d2L Из условия — > 0 следует, что точка минимума будет при dx~t г<1. Для г=1 в любой точке будет минимум, для г>1 ми¬ нимум будет только при Хі = + оо. 5.9. Методы внешней точки для задачи математического программирования Попытаемся приблизиться к оптимальной точке из недопусти¬ мой области. Для чего преобразуем достаточные' условия локаль¬ ного минимума задачи математического программирования сле¬ дующим образом: ’ 1) рассмотрим ограничения в ослабленной форме: —r;i=l, m;r>0; . (5.26) 2) преобразуем условие дополняющей нежесткости ut ?і(х*)=0 так, чтобы оно имело смысл для отрицательных значений gi(x) и сводилось к исходному условию при г-+0 (это означает, что иг(х*)=0 при gi(x*) #=0; если gi(x*)=0, то иг(х*) принимает лю¬ бые значения), т. е. «і(г)=—minlO, gi(x)l. (5.27) Откуда если г>0 и мало, х(г) удовлетворяет (5.26) и gi[x(r)j 0 для некоторых і, то щ = 0 и lim и (г) = ut(x*) = 0 . Если ' г-Н) 182
Sil*(r)] < 0 , то lim [ — min(0, g’i[x(r)])J=O, так как из (5.26) следуёт, г->0 что точка X (г) при г—>0 находится в допустимой области. В силу (5.26) gt\.x(r)}~^—г, а из (5.27) вытекает, что 1ітмДг)-г = 0 , г->0 поэтому lim «,•(/•)• gf[x(r)l = 0 . г->0 Условие дополняющей нежесткости в данном случае выполняется в пределе (из (5.27) следует, что і=1, т). Аналогично преобразуют другие достаточные условия: иг(г) > 0 , і = 1 , т ; т V /ІХ(Г)] - 2 Ui(r) V gi[X(r)] = 0 (5.28) і=1 и для каждого вектора у, для которого yTVgilx[r)]=0 при всех ieD* = jil и* > 0), справедливо неравенство УТI V2 /[x(r)l — V щ(г) V2 gik(r)l ) У > 0 . Подставим (5.27) в (5.28) : ( т 1 V /[х(г)1 + min {0, g,[x(r)]} V g,k(r)l = о . і=1 Г Опять непосредственной проверкой убеждаемся, что функция, для которой выполняются названные условия, имеет вид т 1 Т(х) =/(х) + Vi I min [0,g,(x(r))]}2. 2г і=1 Это и есть функция, минимизируемая методом внешней точки. В нее могут входить ограничения и в виде неравенств, и в виде равенств. Можно доказать, что все необходимые условия миниму¬ ма этой функции выполняются, например Ѵ2Г есть положительно определенная матрица. Причем для ограничений-неравенств (min (0, gjx(r)]})2= [. Для ограничений-равенств h/[x(r)] можно записать g/i(*) = hj(x) > 0 ; ёа(х) = — Л/(х) > 0 . Откуда gfi=—gj2, или 1 (Г&і — I gji 112 , Г— g71 — I — gjt I ]2 г IL 2 J +L— 2 . , g/i _ {Mx(r-)1}2 r r ’ 183
Рис. 5.15. Графическое решение задачи ма¬ тематического программирования методом внешней точки Рис. 5.16. Графическое реше¬ ние задачи математического программирования с помощью комбинированного метода Рассмотрим пример применения метода внешней точки для ре¬ шения задачи математического программирования. Пример. Минимизировать f (х) =—ХіХ2 при ограничениях = — хх — Х2 + 1 > 0 ; g2(x) = xx + х2 > 0. Решение. Составим функцию штрафа для метода внешней точки: Т(х , г) = — ххх2 ( — Х± — Х^ + 1 1%! — + 1 | )2 Тг Н I (*1 + *2 — I *1 + *2 I )2 4г Из необходимого условия *1=0, ^ = 0 дх± дх2 определим последовательность значений хі и хг, сходящуюся к решению. Зададим последовательность значений г: 1,0; 0,5; 1/3; 0,1; по¬ лучим соответствующие последовательности значений Хі (г) : 0,'89; 0,77; 0,73; 0,67; х2(г) : 0,64; 0,62; 0,61; 0,58. Последовательность значений Хі сходится к 2/3, а последователь¬ ность значений х2 к V 3/3 (рис. 5.15). 184
5.10. Комбинированный метод внутренней и внешней точек . Введем новый параметр t — Xjr и рассмотрим комбинированную функцию V(x, г, t) =f(x) +s(r)L(x) +p(t)T(x), где s (г) — функция от г(г->0) для метода внутренней точки; £(х)—функция штрафа для метода внутренней точки; p(f) — функция от для метода внешней точки; Т(х) —функция штрафа для метода внешней точки. Покажем на примере, как применяется комбинированная функ¬ ция V(x, г, t) для решения задачи математического программи¬ рования. Пример. Минимизировать f (х) = In хі—Хг при ограничениях ^(х)=Х!—1>0; /г(х) == X? + Хг — 4 = 0; Хг = 4 — х? . Решение. Построим комбинированную функцию Ѵ(х , г, t = r~') = In Хі — x2 — r In (xx — 1) + r-1(xî 4- xi — 4)г. ' ffâ ïôôlw ' ' P(ÔT(5 ■С помощью комбинированной функции мы избежали использова¬ ния модулей |ёГ(х) ], которые появляются в методе внешней точки. Необходимые условия минимума функции Ѵ(х, г, г-1) дают = —- + 4г~’(х? + хі — 4) хх = 0 ; дх± хг х± — 1 ÉE =-і +4хг-і(х2 + х2_4) = 0. дх2 *1—1 Откуда 4г-*(х? + 4-4)= - = Х2 у 4 — Зададим последовательность значений г: 1,0; 1/4; 1/16; 1/64; 1/256 и получим соответствующие ей последовательности значений: хі (г): 1,553; 1,159; 1,040; 1,010; 1,002; х2 (г) : 1,334; 1,641; 1,711; 1,727; 1,731; V : —0,2648; —1,0285; —1,4693; —1,6447; —1,7048. Последовательности значений хі и Хг дают оптимальное решение 1, ]/3). Графическое решение задачи математического про¬ граммирования приведено на рис. 5.16. 185
СПИСОК ЛИТЕРАТУРЫ 1. Акулич И. Л. Математическое программирование в примерах и задачах. — М.: Высшая школа, 1986. — 317 с. 2. Веллман Р. Динамическое программирование: Пер. с англ./Под ред. H. Н. Воробьева. — М.: ИЛ, 1960. — 400 с. 3. Веллман Р., Дрейфус С. Прикладные задачи динамического программиро¬ вания: Пер. с англ./Под ред. А. А. Первозванского. — М.: Наука, 1965. — 458 с. 4. Вентцель Е. С. Исследование операций. — М.: Сов. радио, 1972. — 551 с. 5. Вильямс H. Н. Параметрическое программирование в экономике (методы оптимальных решений). — М.: Статистика, 1976. — 96 с. 6. Гольштейн Е. Г., Юдин Д. Б. Новые направления в линейном программи¬ ровании. — М.: Сов. радио, 1966. — 524 с. 7. Зангвилл У. И. Нелинейное программирование: Пер. с англ./Под ред. Е. Г. Гольштейна. — М.: Сов. радио, 1973. — 312 с. 8. Зуховицкий С. И., Авдеева Л. И. Линейное и выпуклое программирование (справочное руководство). — М.: Наука, 1964. — 348 с. 9. Исследование операций. Методологические основы и математические мето¬ ды: Пер. с англ./Под ред. И. М. Макарова, И. М. Бескровного, т. 1. — М.: Мир, 1981. — 712 с. 10. Исследование операций. Модели и применение: Пер. с англ./Под ред. И. М. Макарова, И. М. Бескровного, т. 2. — М.: Мир, 1981. — 677 с. 11. Калихман И. Л. Сборник задач по математическому программирова¬ нию. — М.: Высшая школа, 1975. — 270 с. 12. Карпелевич Ф. И., Садовский Л. Е. Элементы линейной алгебры и линей¬ ного программирования. — М.: Наука, 1965. — 275 с. 13. Лазарев В. Г., Лазарев Ю. В. Динамическое управление потоками ин¬ формации в сетях связи. — М.: Радио и связь, 1983. — 216 с. 14. Мартин Дж. Системный анализ передачи данных: Пер. с англ./Под ред. В. С. Лапина. — М.: Мйр, 1975, т. 2. — 431 с. 15. Монаков В. М., Беляева Э. С., Краснер Н. Я. Методы оптимизации. По¬ собие для учителя. — М.: Просвещение, 1978. — 175 с. 16. Муртаф Б. Современное линейное программирование: Теория и практика. Пер. с англ./Под ред. И. А. Станевичуса. — М.: Мир, 1984. — 224 с. 17. Рокафеллор Р. Выпуклый анализ: Пер. с англ./Под ред. А. Д. Иоффе, В. М. Тихомирова. — М.: Мир, 1973. — 469 с. 18. Сухарев А. Г., Тимохов А. В., Федоров В. В. Курс методов оптимиза¬ ции.— М.: Наука, Физматлит, 1986. — 326 с. 19. Ху Т. Целочисленное программирование и потоки в сетях: Пер. с англ./ Под ред. А. А. Фридмана. — М.: Мир, 1974. — 419 с. 20. Фиакко А., Мак-Кормик Г. Нелинейное программирование. Методы по¬ следовательной безусловной минимизации: Пер. с англ./Под ред. Е. Г. Голь¬ штейна. — М.: Мир, 1972. — 240 с. 21. Филлипс Д., Гарсиа-Диас А. Методы анализа сетей: Пер. с англ./Под ред. Б. Г. Сушкова. — М.: Мир, 1984. — 496 с. • 22. Юдин Д. Б., Гольштейн Е. Г. Линейное программирование. Теория и конечные методы. — М.: Физматгиз, 1963. — 775. 186
VAjVA'AUDip.pçSVl СПИСОК МАТЕМАТИЧЕСКИХ СИМВОЛОВ = равно s тождественно равно оо бесконечность не равно « приближенно равно •ос ( ги) пропорционально меньше больше подобно меньше или равно больше или равно знак больше или меньше знак содержания для множеств знак принадлежности знак непринадлежности объединение двух множеств пересечение двух множеств пустое множество = > эквивалентно следует V квантор общности 1 знак факториала: п\ = 1 2’ знак суммы: п 2 = аг -\-а2 + ... 4- ап . z=i 187
ОГЛАВЛЕНИЕ Введение .... 3 Глава 1. Введение в математическое программирование . 5 1.1. Общие положения математического программирования ... 5 1.2. Общая запись задачи математического программирования и ее виды 15’ 1.3. Некоторые сведения об экстремуме функции, частных производных, градиенте и производной по направлению 16 1.4. Особенности нахождения оптимальных решений в задачах мате¬ матического программирования 20 1.5. Необходимые и достаточные условия оптимума в задачах матема¬ тического программирования 23 1.6. Теория двойственности и недифференциальные условия оптималь¬ ности в задаче выпуклого программирования 27 1.7. Графическое решение задач математического программирования 29х 1.8. Простейшая оптимизационная задача . . 32: Глава 2. Линейное программирование 3$ 2.1. Математическая постановка задачи линейного программирования 33^ 2.2. Симплекс-метод — основной метод решения задач линейного про¬ граммирования 35 2.3. Метод полного исключения Жордана для решения систем линей¬ ных алгебраических уравнений 40 2.4. Как спланировать выпуск продукции пошивочному предприятию 42 2.5. Двойственность в задачах линейного программирования ... 48 2.6. Как оптимально организовать поставку грузов от поставщиков к потребителям 53 2.7. Задача о перевозках с перегрузкой 59 2.8. Целочисленное линейное программирование 61 2.9. Постановка задачи об оптимальном раскрое материалов (о мини¬ мизации отходов) 67 2.10. Задача о наилучшем использовании посевной площади ... 68 2.11. Задача о закреплении самолетов за воздушными линиями . . 69 2.12. Задача о назначениях (проблема выбора) 72 2.13. Задача об оптимальном распределении самолетов между войска¬ ми и учебными полигонами 75 2.14. Задача о рациональном соотношении между различными типами бронебойных снарядов 76 2.15. Задача о покрытии множества 78 Глава 3. Сетевые (потоковые) задачи . 81 3.1. Основные определения и приложения потоковых моделей , . 81 3.2. Задача о покупке автомобиля 87 3.3. Задача о многополюсной кратчайшей цепи 91 188 '
3.4. Анализ сложности алгоритмов поиска кратчайших путей . . 96 3.5. Задача о назначениях 3.6. Задача размещения производства Ю1 . 3.7. Задача о максимальном потоке ЮЗ < 3.8. Задача о многополюсном максимальном потоке 107 ■' 3.9. Задача коммивояжера о • • 3.10. Задача о многополюсной цепи с максимальной пропускной спо¬ собностью 120 Глава 4. Основы динамического программирования . . 124 4.1. Условия применимости динамического программирования . . 124 4.2. Задача об оптимальной загрузке транспортного средства недели¬ мыми предметами ... 127 4.3. Задача о вкладе средств в производство 131 4.4. Задача о распределении средств поражения 135 4.5. Вычислительные аспекты решения задач методом динамического программирования 140 Глава 5. О развитии методов решения задач математического програм¬ мирования 142 5.1. Основные направления развития методов решения задач матема¬ тического программирования 142 5.2. Понятие о параметрическом программировании 143 5.3. Многопродуктовые потоки в сетях 151 5.4. Специальный класс целочисленных задач о многопродуктовом потоке 156 5.5. Приближенное решение многопродуктовой транспортной задачи методом агрегирования 157 5.6. Приложения задач о многопродуктовом потоке 161 5.7. Эвристический алгоритм решения задачи синтеза сети связи . 164¬ 5.8. Методы внутренней точки для задачи математического програм¬ мирования . . 179 5.9. Методы внешней точки длй задачи математического программиро¬ вания 182 5.10. Комбинированный метод внутренней и внешней точек . . . 185 Список литературы 186 Список математических символов . 187
МГТУ им. Н. Э. БАУМАНА НАУЧНО-ИССЛЕДОВАТЕЛЬСКИЙ ИНСТИТУТ «РАДИОЭЛЕКТРОНИКА И ЛАЗЕРНАЯ ТЕХНИКА» предлагает «К А С КАД» — аппарат для электромагнитной терапии (разработчики В. И. Козинцев и С. И. Щукин) Области применения: — травматология и ортопедия; — спортивная медицина; — физиотерапия; — медицина катастроф; — микрохирургия и трансплантология. Результативность: — улучшение репаративных процессов в твердых и мягких тканях; — ремиссия отечных явлений; — улучшение регионарного кровотока; — улучшение реологических и биохимических свойств крови. В ходе фундаментальных и прикладных медико-технических исследований взаимосвязанных биоэлектрических и биомеханиче¬ ских процессов в твердых ц мягких тканях организма определены превалирующие физические механизмы, ответственные за био¬ электрогенез как при нормальном функционировании организма, так и при широком классе заболеваний, связанных с нарушением функций опорно-двигательного аппарата и сосудистой системы человека. Установлено, что восстановление с помощью внешнего электромагнитного воздействия утраченной электрической актив¬ ности биотканей приводит к стимуляции восстановительных про¬ цессов в пораженных тканях, системах и органах. В результате этих исследований был разработан и успешно апробирован в кли¬ никах аппарат «Каскад». «Каскад» создает в костной ткани верхних и нижних конеч¬ ностей такие же токи, которые в них возникают при выполнении ими своих функций (опорный период шага для нижних конечно¬ стей и движение типа сгибания-разгибания для верхних). Воздей¬ ствие осуществляется электромагнитным полем со специальной 190
амплитудно-временной характеристикой. Особенностью аппарата является функциональность параметров воздействия в зависи¬ мости от режимов. В комплект поставки аппарата «Каскад» входят: — программно-методическое пособие по НОУ-ХАУ технологии применения аппарата в вышеперечисленных областях; — обучающая программа работе на аппарате; — программа экспресс-оценки эффективности воздействия по дан¬ ным неинвазивного измерения кровотока и индивидуальной оптимизации его режимов. Программные средства реализованы на флоппи-дисках в среде MS-DOS. Пользователи, не располагающие ЭВМ типа IBM PC ХТ/АТ (или совместимыми с ними), могут получить твердые ко¬ пии указанных документов в виде справочных печатных мате¬ риалов. Эксплуатационные характеристики: — габариты — масса — потребляемая мощность . 360X160X400 мм; не более 12 кг; не более 300 ВА. В настоящее время освоен серийный выпуск аппарата. За справками обращаться по адресу: 107005, Москва, Б-5, 2-я Бауманская ул., д. 5, к. 389А.. Тел. 267-44-38 191
БИБЛИОТЕКА МГТУ им. Н. Э. БАУМАНА КОМПЬЮТЕРНАЯ ТЕХНОЛОГИЯ В ИНФОРМАЦИОННОМ ОБСЛУЖИВАНИИ ЧИТАТЕЛЕЙ * Библиотека МГТУ им. Н. Э. Баумана предлагает новую форму информационного обслуживания — информационные мате¬ риалы о новых поступлениях в библиотеку университета по совре¬ менным направлениям науки и техники в виде рефератов и (или) библиографических описаний. Их поставляют на дискетах, ознаком¬ ление с ними возможно на компьютерах заказчика. * Вместе с информацией передается программа, обеспечиваю¬ щая чтение, поиск и выдачу на принтер сведений о новых книгах или статьях в периодических изданиях. Программа имеет автома¬ тический перевод на русский или английский языки для управле¬ ния поиском информации. * Отобранная и выведенная на принтер информация может яв¬ ляться заказом на книгу или журнал, которые будут переданы за¬ казчику по системе межбиблиотечного абонемента. По желанию заказчика библиотека обеспечит оперативное копирование подоб¬ ранных материалов. * Компьютерная информационная технология предполагает ис¬ пользование 5-дюймовых дискет любого формата и компьютеров, программно-совместимых с IBM PC ХТ/АТ. * Тематика компьютерных информационных изданий может определяться заказчиком. . Справки по телефону: 261-95-86. 192
40 коп.