Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Глава 1. Предмет и задачи исследования операций.Стр 1 из 21Следующая ⇒
Глава 1. Предмет и задачи исследования операций. § 1. Что такое исследование операций и чем оно занимается. § 2. Основные понятия и принципы исследования операции. § 3. Математические модели операций. Глава 2. Разновидности задач исследования операций и подходов к их решению. § 4. Прямые и обратные задачи исследования операций. Детерминированные задачи. § 5. Проблема выбора решения в условиях неопределенности. § 6. Многокритериальные задачи исследования операций. «Системный подход». Глава 3. Линейное программирование. § 7. Задачи линейного программирования. § 8. Основная задача линейного программирования. § 9. Существование решения 03ЛП и способы его нахождения. § 10. Транспортная задача линейного программирования. § 11. Задачи целочисленного программирования. Понятие о нелинейном программировании. Глава 4. Динамическое программирование. § 12. Метод динамического программирования. § 13. Примеры решения задач динамического программирования. § 14. Задача динамического программирования в общем виде. Принцип оптимальности. Глава 5. Марковские случайные процессы. § 15. Понятие о марковском процессе. § 16. Потоки событий. § 17. Уравнения Колмогорова для вероятностей состояний. Финальные вероятности состояний. Глава 6. Теория массового обслуживания. § 18. Задачи теории массового обслуживания. Классификация систем массового обслуживания. § 19. Схема гибели и размножения. Формула Литтла. § 20. Простейшие системы массового обслуживания и их характеристики. § 21. Более сложные задачи теории массового обслуживания. Глава 7. Статистическое моделирование случайных процессов (метод Монте-Карло). § 22. Идея, назначение и область применимости метода. § 23. Единичный жребий и формы его организации. § 24. Определение характеристик стационарного случайного процесса по одной реализации. Глава 8. Игровые методы обоснования решении. § 25. Предмет и задачи теории игр. § 26. Антагонистические матричные игры. § 27. Методы решения конечных игр. § 28. Задачи теории статистических решении. ГЛАВА 1 ПРЕДМЕТ И ЗАДАЧИ ИССЛЕДОВАНИЯ ОПЕРАЦИЙ Основные понятия и принципы исследования операций В этом параграфе мы познакомимся с терминологией, основными понятиями и принципами науки «исследование операций». Операцией называется всякое мероприятие (система действий), объединенное единым замыслом и направленное к достижению какой-то цели (все мероприятия, рассмотренные в пунктах 1 — 8 предыдущего параграфа, являются «операциями»). Операция есть всегда управляемое мероприятие, т. е. от нас зависит, каким способом выбрать некоторые параметры, характеризующие её организацию. «Организация» здесь понимается в широком смысле слова, включая набор технических средств, применяемых в операции. Всякий определенный выбор зависящих от нас параметров называется решением. Решения могут быть удачными и неудачными, разумными и неразумными. Оптимальными называются решения, по тем или другим признакам предпочтительные перед другими. Цель исследования операций — предварительное количественное обоснование оптимальных решений. Иногда (относительно редко) в результате исследования удается указать одно-единственное строго оптимальное решение, гораздо чаще — выделить область практически равноценных оптимальных (разумных) решений, в пределах которой может быть сделан окончательный выбор. Заметим, что само принятие решения выходит за рамки исследования операции и относится к компетенции ответственного лица, чаще — группы лиц, которым предоставлено право окончательного выбора и на которых возложена ответственность за этот выбор. Делая выбор, они могут учитывать, наряду с рекомендациями, вытекающими из математического расчета, еще ряд соображений (количественного и качественного характера), которые этим расчетом не были учтены. Непременное присутствие человека (как окончательной инстанции, принимающей решение) не отменяется даже при наличии полностью автоматизированной системы управления, которая, казалось бы, принимает решение без участия человека. Нельзя забывать о том, что само создание управляющего алгоритма, выбор одного из возможных его вариантов, есть тоже решение, и весьма ответственное. По мере развития управляющих автоматов функции человека не отменяются, а просто перемещаются с одного, элементарного, уровня на другой, высший. Кроме того, ряд автоматизированных систем управления предусматривает в ходе управляемого процесса активное вмешательство человека. Те параметры, совокупность которых образует решение, называются элементами решения. В качестве элементов решения могут фигурировать различные числа, векторы, функции, физические признаки и т. д. Например, если составляется план перевозок однородных грузов из пунктов отправления А1, А2, …, Аm в пункты назначения В1, В2, ..., Вn, то элементами решения будут числа xij, показывающие, какое количество груза будет отправлено из 1-го пункта отправления Аi в j-й пункт назначения Вj. Совокупность чисел x11, x12, …, x1n, …, xm1, xm2, …, xmn образует решение. В простейших задачах исследования операций количество элементов решения может быть сравнительно невелико. Но в большинстве задач, имеющих практическое значение, число элементов решения очень велико, в чем читатель может убедиться, попытавшись самостоятельно выделить и «назвать по имени» элементы решения в примерах 1 — 8 предыдущего параграфа. Для упрощения мы будем всю совокупность элементов решения обозначать одной буквой x и говорить «решение х». Кроме элементов решения, которыми мы, в каких-то пределах, можем распоряжаться, в любой задаче исследования операций имеются еще и заданные, «дисциплинирующие» условия, которые фиксированы с самого начала и нарушены быть не могут (например, грузоподъемность машины; размер планового задания; весовые характеристики оборудования и т. п.). В частности, к таким условиям относятся средства (материальные, технические, людские), которыми мы вправо распоряжаться, и иные ограничения, налагаемые на решение. В своей совокупности они формируют так называемое «множество возможных решений». Обозначим это множество опять-таки одной буквой X, а тот факт, что решение х принадлежит этому множеству, будем записывать в виде формулы: х X (читается: элемент х входит в множество X). Речь идет о том, чтобы в множестве возможных решений Х выделить те решения х (иногда — одно, а чаще — целую область решений), которые с той или другой точки зрения эффективнее (удачнее, предпочтительнее) других. Чтобы сравнивать между собой по эффективности разные решения, нужно иметь какой-то количественный критерий, так называемый показатель эффективности (его часто называют «целевой функцией»). Этот показатель выбирается так, чтобы он отражал целевую направленность операции. «Лучшим» будет считаться то решение, которое в максимальной степени способствует достижению поставленной цели. Чтобы выбрать, «назвать по имени» показатель эффективности W, нужно, прежде всего, спросить себя: чего мы хотим, к чему стремимся, предпринимая операцию? Выбирая решение, мы, естественно, предпочтем такое, которое обращает показатель эффективности W в максимум (или же в минимум). Например, доход от операции хотелось бы обратить в максимум; если же показателем эффективности являются затраты, их желательно обратить в минимум. Если показатель эффективности желательно максимизировать, мы это будем записывать в виде W => mах, а если минимизировать — W => min. Очень часто выполнение операции сопровождается действием случайных факторов («капризы» погоды, колебания спроса и предложения, отказы технических устройств и т. д.). В таких случаях обычно в качестве показателя эффективности берется не сама величина, которую хотелось бы максимизировать (минимизировать), а ее среднее значение (математическое ожидание). В некоторых случаях бывает, что операция, сопровождаемая случайными факторами, преследует какую-то вполне определенную цель А, которая может быть только достигнута полностью или совсем не достигнута (схема «да—нет»), и никакие промежуточные результаты нас не интересуют. Тогда в качестве показателя эффективности выбирается вероятность достижения этой цели Р(А). Например, если ведется стрельба по какому-то объекту с непременным условием уничтожить его, то показателем эффективности будет вероятность уничтожения объекта. Неправильный выбор показателя эффективности очень опасен. Операции, организованные под углом зрения неудачно выбранного критерия, могут привести к неоправданным затратам и потерям (вспомним хотя бы пресловутый «вал» в качестве основного критерия оценки хозяйственной деятельности предприятий). Для иллюстрации принципов выбора показателя эффективности вернемся опять к примерам 1 — 8 § 1, выберем для каждого из них естественный показатель эффективности и укажем, требуется его максимизировать или минимизировать. Разбирая примеры, нужно иметь в виду, что не во всех из них выбор показателя эффективности однозначно диктуется словесным описанием задачи, так что по этому вопросу возможны расхождения между читателем и автором. 1. План снабжения предприятий. Задача операции — обеспечить снабжение сырьем при минимальных расходах на перевозки. Показатель эффективности R — суммарные расходы на перевозки сырья за единицу времени, например, месяц (R => min). 2. Постройка участка магистрали. Требуется так спланировать строительство, чтобы закончить его как можно скорее. Естественным показателем эффективности было бы время завершения стройки, если бы оно не было связано со случайными факторами (отказы техники, задержки в выполнении отдельных работ). Поэтому в качестве показателя эффективности можно выбрать среднее ожидаемое время Т окончания стройки (Т => min). 3. Продажа сезонных товаров. В качестве показателя эффективности можно взять среднюю ожидаемую прибыль П от реализации товаров за сезон (П => mах). 4. Снегозащита дорог. Речь идет о наиболее выгодном экономически плане снегозащиты, поэтому в качестве показателя эффективности можно выбрать средние за единицу времени (например, за год) расходы R на содержание и эксплуатацию дорог, включая расходы, связанные как с сооружением защитных устройств, так и с расчисткой дорог и задержками транспорта (R => min). 5. Противолодочный рейд. Так как рейд имеет вполне определенную цель А — уничтожение лодки, то в качестве показателя эффективности следует выбрать вероятность Р(A) того, что лодка будет уничтожена. 6. Выборочный контроль продукции. Естественный показатель эффективности, подсказанный формулировкой задачи, это средние ожидаемые расходы R на контроль за единицу времени, при условии, что система контроля обеспечивает заданный уровень качества, например, средний процент брака не выше заданного (R => min). 7. Медицинское обследование. В качестве показателя эффективности можно выбрать средний процент (долю) Q больных и носителей инфекции, которых удалось выявить (Q => шах). 8. Библиотечное обслуживание. В формулировке задачи сознательно допущена некоторая нечеткость: неясно, что значит «наилучшее обслуживание абонентов» или «удовлетворение их запросов в максимальной мере». Если о качестве обслуживания судить по времени, которое запросивший книгу абонент ждет ее получения, то в качестве показателя эффективности можно взять среднее время Т ожидания книги читателем, подавшим на нее заявку (Т => min). Можно подойти к вопросу и с несколько иных позиций, выбрав в качестве показателя эффективности среднее число М книг, выданных за единицу времени (М => mах). Рассмотренные примеры специально подобраны настолько простыми, чтобы выбор показателя эффективности был сравнительно нетруден и прямо диктовался словесной формулировкой задачи, ее (почти всегда) однозначной целевой направленностью. Однако на практике это далеко не всегда бывает так. В этом читатель может убедиться, попытавшись, например, выбрать показатель эффективности работы городского транспорта. Что взять в качестве такого показателя? Среднюю скорость передвижения пассажиров по городу? Или среднее число перевезенных пассажиров? Или среднее количество километров, которое придется пройти пешком человеку, которого транспорт не может доставить к нужному месту? Тут есть над чем поразмыслить! К сожалению, в большинстве задач, имеющих практическое значение, выбор показателя эффективности не прост и решается неоднозначно. Для сколько-нибудь сложной задачи типично положение, когда эффективность операции не может быть исчерпывающим образом охарактеризована одним единственным числом — на помощь ему приходится привлекать другие. С такими «многокритериальными» задачами мы познакомимся в § 6. Примеры решения задач динамического программирования В этом параграфе мы рассмотрим (и даже решим до конца) несколько простых (до крайности упрощенных) примеров задач динамического программирования 1. Прокладка наивыгоднейшего пути между двумя пунктами. Вспомним задачу 4 предыдущего параграфа и решим ее до конца в крайне (и намеренно) упрощенных условиях. Нам нужно соорудить путь, соединяющий Рис. 13.1. два пункта А и В, из которых второй лежит к северо-востоку от первого. Для простоты допустим,. что прокладка пути состоит из ряда шагов, и на каждом шаге мы можем двигаться либо строго на восток, либо строго на север; любой путь из А в В представляет собой ступенчатую ломаную линию, отрезки которой параллельны одной из координатных осей (рис. 13.1). Затраты на сооружение каждого из таких отрезков известны. Требуется проложить такой путь из А в В, при котором суммарные затраты минимальны. Как это сделать? Можно поступить одним из двух способов: либо перебрать все возможные варианты пути, и выбрать тот, на котором затраты минимальны (а при большом числе отрезков это очень и очень трудно! ); либо разделить процесс перехода из А в В на отдельные шаги (один шаг — один отрезок) и оптимизировать управление по шагам. Оказывается, второй способ несравненно удобнее! Тут, как и везде в исследовании операций, сказываются преимущества целенаправленного, организованного поиска решения перед наивным «слепым» перебором. Продемонстрируем, как это делается, на конкретном примере. Разделим расстояние от А до В в восточном направлении, скажем, на 7 частей, а в северном — на 5 частей (в принципе дробление может быть сколь угодно мелким). Тогда любой путь из А в В состоит из т = 7 + 5 == 12 отрезков, направленных на восток или на север (рис. 13.2). Проставим на каждом из отрезков число, выражающее (в каких-то условных единицах) стоимость прокладки пути по этому отрезку. Требуется выбрать такой путь из А в В, для которого сумма чисел, стоящих на отрезках, минимальна. Будем рассматривать сооружаемый путь как управляемую систему S, перемещающуюся под влиянием управления из начального состояния А в конечное В. Состояние этой системы перед началом каждого шага будет характеризоваться двумя координатами: восточной (х) и северной (у), обе — целочисленные (0 х 5 7, 0 у 5). Для каждого из состояний системы (узловой точки прямоугольной сетки на рис. 13.2) мы должны найти условное оптимальное управление: идти нам из этой точки на север (управление «с») или на восток (управление «в»). Выбирается это управление так, чтобы стоимость всех оставшихся до конца шагов (включая данный) была минимальна. Эту стоимость мы по-прежнему будем называть «условным оптимальным выигрышем» (хотя в данном случае это не «выигрыш», а «проигрыш») для данного состояния системы S перед началом очередного шага. Процедуру условной оптимизации будем разворачивать в обратном направлении — от конца к началу. Прежде всего произведем условную оптимизацию последнего, 12-го шага. Рассмотрим отдельно правый верхний угол нашей прямоугольной сетки (рис. 13.3). Где мы можем находиться после 11-го шага? Только
С1 11 10 В 13 14 С2 14 8 С3 там, откуда за один (последний) шаг можно попасть в В, т. е. в одной из точек В1 или В2. Если мы находимся в точке В1, у нас нет выбора (управление вынужденное): надо идти на восток, и это обойдется нам в 10 единиц. Запишем это число 10 в кружке у точки В1, а оптимальное управление покажем короткой стрелкой, исходящей из В1 и направленной на восток. Для точки В2 управление тоже вынужденное (север), расход до конца равен 14, мы его запишем в кружке у точки В2. Таким образом, условная оптимизация последнего шага сделана, и условный оптимальный выигрыш для каждой из точек В1, В2 найден и записан в соответствующем кружке. Теперь давайте оптимизировать предпоследний (11-й) шаг. После предпредпоследнего (10-го) шага мы могли оказаться в одной из точек С1, С2, С3 (рис. 13.4). Найдем для каждой из них условное оптимальное управление и условный оптимальный выигрыш. Для точки С1 управление вынужденное: идти на восток; обойдется это нам до конца в 21 единицу (11 на данном шаге, плюс 10, записанных в кружке при В1). Число 21 записываем в кружке при точке С1. Для точки С2 управление уже не вынужденное: мы можем идти как на восток, так и на север. В первом случае мы затратим на данном шаге 14 единиц и от В2 до конца — еще 14, всего 28 единиц. Если пойдем на север, затратим 13 + 10, всего 23 единицы. Значит, условное оптимальное управление в точке С2 — идти на север (отмечаем это стрелкой, а число 23 записываем в кружке у С2), Для точки С3 управление снова вынужденное («с»), обойдется это до конца в 22 единицы (ставим стрелку на север, число 22 записываем в кружке при С3). • Рис. 13.5. Аналогично, «пятясь» от предпоследнего шага назад, найдем для каждой точки с целочисленными координатами условное оптимальное управление («с» или «в»), которое обозначим стрелкой, и условный оптимальный выигрыш (расход до конца пути), который запишем в кружке. Вычисляется он так: расход на данном шаге складывается с уже оптимизированным расходом, записанным в кружке, куда ведет стрелка. Таким образом, на каждом шаге мы оптимизируем только этот шаг, а следующие за ним — уже оптимизированы. Конечный результат процедуры оптимизации показан на рис. 13.5. Таким образом, условная оптимизация уже выполнена: в какой бы из узловых точек мы ни находились, мы уже знаем, куда идти (стрелка) и во что нам обойдется путь до конца (число в кружке). В кружке при точке А записан оптимальный выигрыш на все сооружение пути из А в В: W* = 118.
Теперь остается построить безусловное оптимальное управление — траекторию, ведущую из А и В самым дешевым способом. Для этого нужно только «слушаться стрелок», т. е. прочитать, что они предписывают делать на каждом шаге. Такая оптимальная траектория отмечена на рис. 13.5 дважды обведенными кружками. Соответствующее безусловное оптимальное управление будет:
х* = (с, с, с, с, в, в, с, в, в, в, в, в),
т. е. первые четыре шага мы должны делать на север, следующие два — на восток, затем опять один на север и остальные пять — на восток. Задача решена. Заметим, что в ходе условной оптимизации мы можем столкнуться со случаем, когда оба управления для какой-то точки на плоскости являются оптимальными, т. е. приводят к одинаковому расходу средств от этой точки до конца, Например, в точке с координатами (5; 1) оба управления «с» и «в» являются оптимальными и дают расход до конца равным 62. Из них мы произвольно выбираем любое (в нашем случае мы выбрали «с»; с тем же успехом мы могли бы выбрать «в»). Такие случаи неоднозначного выбора оптимального управления постоянно встречаются в динамическом программировании; в дальнейшем мы специально отмечать их не будем, а попросту выберем произвольно любой из равноценных вариантов. От этого произвола, разумеется, может зависеть оптимальное управление всем процессом, но не оптимальный выигрыш. Вообще, в задачах динамического программирования (как и в задачах линейного) решение далеко не всегда единственное. А теперь вернемся к началу и попробуем решить задачу «наивным» способом, выбирая на каждом шаге, начиная с первого, самое выгодное (для этого шага) направление (если таких два, выбираем любое). Таким способом мы получим управление
х = (с, с, в, в, в, в, с, в, в, в, с, с).
Подсчитаем расходы для этой траектории. Они будут равны W =10 +12 +8+10 +11 +13 +15+8 + +10+9+8+14=128, что безусловно больше, чем W* = 118. В данном случае разница не очень велика, но в других она может быть существенной. В решенной выше задаче условия были намеренно до крайности упрощены. Разумеется, никто не будет вести железнодорожный путь «по ступенькам», перемещаясь только строго на север или строго на восток. Такое упрощение мы сделали для того, чтобы в каждой точке выбирать только из двух управлений: «с» или «в». Можно было бы вместо двух возможных направлений ввести их несколько и, кроме того, взять шаги помельче; принципиального значения это не имеет, но, разумеется, усложняет и удлиняет расчеты. Заметим, что задачи, сходные с рассмотренной выше, очень часто встречаются на практике: например, при выборе наискорейшего пути между двумя точками или наиболее экономного (в смысле расхода горючего) набора скорости и высоты летательным аппаратом. Сделаем одно попутное замечание. Внимательный читатель, вероятно, заметил, что в нашей задаче точки А и В (начало и конец) в принципе ничем друг от друга не отличаются: можно было бы строить условные оптимальные управления не с конца к началу, а с начала к концу, а безусловные — в обратном направлении. Действительно, это так: в любой задаче динамического программирования «начало» и «конец» можно поменять местами. Это совершенно равносильно описанной ранее методике в расчетном отношении, но несколько менее удобно при словесном объяснении идеи метода: легче аргументировать, ссылаясь на «уже сложившиеся» условия к началу данного шага, чем на те, которые еще «предстоят» после этого шага. По существу же оба подхода совершенно равносильны. 2. Задача о распределении ресурсов. Метод динамического программирования позволяет с успехом решать многие экономические задачи (см., например, [6, 10]). Рассмотрим одну из простейших таких задач. В нашем распоряжении имеется какой-то запас средств (ресурсов) К, который должен быть распределен между т предприятиями П1, П2, ..., Пm. Каждое из предприятий Пi при вложении в него каких-то средств х приносит доход, зависящий от x, т. е. представляющий собой какую-то функцию (x). Все функции (x) (i = 1, 2, ..., т) заданы (разумеется, эти функции — неубывающие). Спрашивается, как нужно распределить средства К. между предприятиями, чтобы в сумме они дали максимальный доход? Эта задача легко решается методом динамического программирования.. Хотя в своей постановке она не содержит упоминания о времени, можно все же операцию распределения средств мысленно развернуть в какой-то последовательности, считая за первый шаг вложение средств в предприятие П1, за второй — в П2 и т. д. Управляемая система S в данном случае — средства или ресурсы, которые распределяются. Состояние системы S перед каждым шагом характеризуется одним числом S — наличным запасом еще не вложенных средств. В этой задаче «шаговыми управлениями» являются средства х1, х2, ..., х3, выделяемые предприятиям. Требуется найти оптимальное управление, т. е. такую совокупность чисел х1, х2, ..., хm, при которой суммарный доход максимален:
(13.1)
Решим эту задачу сначала в общем, формульном виде, а потом — для конкретных числовых данных. Найдем для каждого i-го шага условный оптимальный выигрыш (от этого шага и до конца), если мы подошли к данному шагу с запасом средств S. Обозначим условный оптимальный выигрыш Wi(S), а соответствующее ему условное оптимальное управление — средства, вкладываемые в i-е предприятие, — xi(S). Начнем оптимизацию с последнего, т - го шага. Пусть мы подошли к этому шагу с остатком средств S. Что нам делать? Очевидно, вложить всю сумму S целиком в предприятие Пm. Поэтому условное оптимальное управление на m-м шаге: отдать последнему предприятию все имеющиеся средства S, т. е.
xm(S)=S,
а условный оптимальный выигрыш
Wm (S)= (S).
Задаваясь целой гаммой значений S (располагая их достаточно тесно), мы для каждого значения S будем знать xm(S) и Wm(S). Последний шаг оптимизирован. Перейдем к предпоследнему, (т— 1)-му шагу. Пусть мы подошли к нему с запасом средств S. Обозначим Wm-1(S) условный оптимальный выигрыш на двух последних шагах: (m - 1)-м и m-м (который уже оптимизирован). Если мы выделим на (m - 1)-м шаге (m - 1)-му предприятию средства х, то на последний шаг останется S — х. Наш выигрыш на двух последних шагах будет равен
,
и нужно найти такое х, при котором этот выигрыш максимален:
(13.2)
Знак означает, что берется максимальное значение по всем х, какие только возможны (вложить больше, чем S, мы не можем), от выражения, стоящего в фигурных скобках. Этот максимум и есть условный оптимальный выигрыш за два последних шага, а то значение х, при котором этот максимум достигается, — условное оптимальное управление на (т—1)-м шаге. Далее оптимизируем (т—2)-й, (т—3)-й и т. д. шаги. Вообще, для любого i-го шага будем находить условный оптимальный выигрыш за все шаги с этого и до конца по формуле
(13.3)
и соответствующее ему условное оптимальное управление xi(S) — то значение х, при котором этот максимум достигается. Продолжая таким образом, дойдем, наконец, до 1-го предприятия П1. Здесь нам не нужно будет варьировать значения S; мы точно знаем, что запас средств перед первым шагом равен К:
. (13.4)
Итак, максимальный выигрыш (доход) от всех предприятий найден. Теперь остается только «прочесть рекомендации». То значение х, при котором достигается максимум (13.4), и есть оптимальное управление на 1-м шаге. После того как мы вложим эти средства в 1-е предприятие, у пас их останется К— . «Читая» рекомендацию для этого значения S, выделяем второму предприятию оптимальное количество средств:
, и т. д. до конца. А теперь решим численный пример. Исходный запас средств К = 10 (условных единиц), и требуется его оптимальным образом распределить между пятью предприятиями (т = 5). Для простоты предположим, что вкладываются только целые количества средств. Функции дохода (х) заданы в таблице 13.1. Таблица 13.1
В каждом столбце, начиная с какой-то суммы вложений, доходы перестают возрастать (реально это соответствует тому, что каждое предприятие способно «освоить» лишь ограниченное количество средств). Произведем условную оптимизацию так, как это было описано выше, начиная с последнего, 5-го шага. Каждый раз, когда мы подходим к очередному шагу, имея запас средств S, мы пробуем выделить па этот шаг то или другое количество средств, берем выигрыш па данном шаге по таблице 13.1, складываем с уже оптимизированным выигрышем на всех последующих шагах до конца (учитывая, что средств у нас осталось уже меньше, как раз на такое количество средств, которое мы выделили) и находим то вложение, на котором эта сумма достигает максимума. Это вложение и есть условное оптимальное управление на данном шаге, а сам максимум — условный оптимальный выигрыш. В таблице 13.2 даны результаты условной оптимизации по всем шагам. Таблица построена так: в первом столбце даются значения запаса средств S, с которым мы подходим к данному шагу. Далее таблица разделена на пять пар столбцов, соответственно номеру шага. В первом столбце каждой пары приводится значение Таблица 13.2
условного оптимального управления, во втором — условного оптимального выигрыша. Таблица заполняется слева направо, сверху вниз. Решение на пятом — последнем — шаге вынужденное: выделяются все средства; па всех остальных шагах решение приходится оптимизировать. В результате последовательной оптимизации 5-го, 4-го, 3-го, 2-го и 1-го шагов мы получим полный список всех рекомендаций по оптимальному управлению и безусловный оптимальный выигрыш W* за всю операцию — в данном случае он равен 5, 6. В последних двух столбцах таблицы 13.2 заполнена только одна строка, так, как состояние системы перед началом первого шага нам в точности известно: S0 = К = 10. Оптимальные управления на всех шагах выделены рамкой. Таким образом, мы получили окончательный вывод: надо выделить первому предприятию две единицы из десяти, второму — пять единиц, третьему — две, четвертому — ни одной, пятому — одну единицу. При этом распределении доход будет максимален и равен 5, 6. Чтобы читателю было понятно, как заполняется таблица 13.2, продемонстрируем это на одном образце расчета. Пусть, например, нам нужно оптимизировать решение х3(7)—как поступать на третьем шаге, если мы подошли к нему с запасом средств S = 7, и сколько максимум мы можем выиграть на всех оставшихся Таблица 13.3
шагах, включая третий? Предположим, что все шаги после третьего (4-й и 5-й) уже оптимизированы, т. е. заполнены две первые пары столбцов таблицы 13.2. Найдем x3(7) и W3(7). Для этого составим вспомогательную табличку (см. таблицу 13.3). В первом ее столбце перечислены все возможные вложения х на третьем шаге, не превосходящие S = 7. Во втором столбце — то, что останется после такого вложения от запаса средств S = 7. В третьем столбце — выигрыш на третьем шаге от вложения средств х в третье предприятие заполняется по столбцу ( таблицы 13.1). В четвертом столбце — оптимальный выигрыш на всех оставшихся шагах (четвертом и пятом) при условии, что мы подошли к четвертому шагу с оставшимися средствами (заполняется по столбцу i •= 4 таблицы 13.2). В пятом столбце — сумма двух выигрышей: шагового и оптимизированного дальнейшего при данном вложении х в третий шаг. Из всех выигрышей последнего столбца выбирается максимальный (в таблице 13.3 он равен W3(7) = 3, 6, а соответствующее управление х(7) = 2). Возникает вопрос: а что если во вспомогательной таблице типа 13.3 максимум достигается не при одном x, а при двух или больше? Отвечаем: совершенно все равно, какое из них выбрать; от этого выигрыш не зависит. Вообще, в задачах динамического программирования решение вовсе не должно быть единственным (мы об этом уже упоминали). 3. Задача о загрузке машины. Пользуясь методом динамического программирования, можно с успехом решать ряд задач оптимизации, описанных в главе 3, в частности, некоторые задачи целочисленного программирования. Заметим, что целочисленность решений, так затрудняющая задачи линейного программирования, в данном случае не усложняет, а наоборот, упрощает процедуру (как нам ее упростила целочисленность вложений в предыдущей задаче). В качестве примера рассмотрим задачу о загрузке машины (мы уже упоминали о пей в предыдущей главе): имеется определенный набор предметов П1, П2,..., Пn (каждый в единственном экземпляре); известны их веса q1, q2, ..., qn и стоимости с1, с2, ..., сn. Грузоподъемность машины равна Q. Спрашивается, какие из предметов нужно взять в машину, чтобы их суммарная стоимость (при суммарном весе Q) была максимальна? Популярное:
|
Последнее изменение этой страницы: 2017-03-09; Просмотров: 1050; Нарушение авторского права страницы