Общая характеристика методов динамического программирования
Динамическое программирование — один из разделов оптимального программирования. Для него характерны специфические методы и приемы, обусловливающие возможность применения динамического программирования для решения определенного круга задач. Например, использование принципа оптимальности, который выражает оптимальное поведение, т. е. обладает тем свойством, что, каково бы ни было оптимальное первоначальное решение, последующие решения должны быть по отношению к нему также оптимальными. Принцип оптимальности позволяет установить соотношение между экстремальными значениями целевой функции в задачах, характеризующихся различной продолжительностью процесса и различными начальными состояниями. При этом необходимо учитывать последствия реализации найденного оптимального решения и для последующих решений. Такой подход обусловливает выработку оптимальной стратегии. Процесс принятия решения в этом случае является многошаговым. Получаемые на каждом этапе соотношения последовательно связаны между собой: полученные на &-м шаге результаты вводятся в уравнения (k—1)-го или (&+1)-го шагов. Таким образом, при решении вариантных оптимизационных задач методами динамического программирования последние разбиваются на отдельные этапы, каждый из которых решается самостоятельно. Тем самым сложная задача со многими переменными сводится ко многим задачам с малым числом или даже одной переменной. Это значительно сокращает объем вычислений и ускоряет процесс получения управленческого решения.
Методами динамического программирования решаются вариантные оптимизационные задачи с заданным критерием оптимальности, с определенными связями между переменными и целевой функцией, выраженными системой уравнений. При этом как и в задачах, решаемых методами линейного программирования, ограничения могут быть даны в виде равенств или неравенств. Однако если в задачах линейного программирования зависимости между критериальной функцией и переменными обязательно линейны, то в задачах динамического программирования эти зависимости могут иметь и нелинейный характер. Динамическое программирование можно использовать как для решения задач, связанных с динамикой процесса или системы, так и для статических задач, связанных, например, с распределением ресурсов. Это значительно расширяет область применения динамического программирования для решения задач управления. А возможность упрощения процесса решения, которая достигается за счет ограничения области и количества исследуемых при переходе к очередному этапу вариантов, еще увеличивает достоинства этого комплекса методов.
Вместе с тем динамическому программированию свойственны и недостатки. Прежде всего в нем нет единого универсального метода решения. Практически каждая задача, решаемая этим методом, характеризуется своими особенностями и трудностями и требует поиска наиболее приемлемой для ее решения методики. Это серьезно сужает границы использования динамического программирования. Кроме того, большие объемы и трудоемкость решения многошаговых задач также ограничивают его применение. При этом даже современные ЭВМ в ряде случаев не могут спасти положения. Этим обусловливается необходимость отбора для решения динамическим программированием только таких задач, которые характеризуются малой размерностью.
При поиске решения — выборе оптимальных управляющих воздействий — может оказаться, что процесс, рассматриваемый как многошаговый, имеет очень много состояний. В таком случае необходимо использовать другие методы. Можно реализовать процесс вычислений, сохраняя только такую сжатую информацию, по которой возможно восстановить требующиеся для расчетов значения функций. Это достигается использованием методов последовательного анализа вариантов или переработки списка состояний.
Для процессов с непрерывным временем динамическое программирование рассматривается как предельный вариант дискретной схемы. Получаемые при этом результаты практически совпадают с теми, которые получаются методами, построенными на теории Л. С. Понтрягина [18].
Методом рекуррентных соотношений решаются также задачи размещения производства какой-либо продукции на предприятиях, причем такое размещение должно обеспечивать минимум суммарных затрат; определение кратчайшего пути достижения цели в графической модели (найти наилучший вариант раскроя металла, идущего на различные заготовки и т. д.).
Методами последовательного анализа вариантов или переработки списка состояний можно решать задачи управления запасами (пополнение склада инструментом или деталями и заготовками широкого применения). При решении этой задачи минимизируются суммарные потери, которые могут иметь место при нехватке продукции на складе в результате интенсификации спроса на нее или при хранении в условиях падения спроса. Такие колебания спроса вызываются изменением номенклатуры выпускаемой продукции в различные периоды времени, а также программ выпуска отдельных изделий в условиях мелкосерийного или неустойчивого серийного производства. Колебания в спросе по отношению к среднегодовой величине могут быть весьма существенными.
Эффективно также применение марковских и полумарковских процессов решения при определении оптимальной стратегии случайного процесса. Случайный процесс — это стохастический, вероятностный процесс. Его протекание может быть различным в зависимости от случая, но вероятность каждого течения определена. Случайный процесс может быть непрерывным или дискретным. В рассматриваемом процессе независимой переменной является время, функция от независимой переменной — случайна. Случайный" процесс характеризуется множеством значений его состояний. В зависимости от того, непрерывны или дискретны эти значения, случайный процесс будет непрерывным или дискретным. Методы, основанные на применении марковских или полумарковских процессов решения, применяются в задачах поиска неисправностей в оборудовании, построения графика ремонта, обслуживания и замены оборудования.
Динамическое программирование применяется в основном для решения задач двух классов: планирование деятельности экономической системы (предприятия, объединения) с учетом изменения выпускаемой продукции во времени в соответствии с изменяющейся потребностью и распределение ресурсов по различным направлениям во времени.
Наиболее целесообразно динамическое программирование применять для решения таких задач, в которых поиск оптимального решения требует поэтапного подхода; например определение времени замены оборудования с учетом затрат на эксплуатацию оборудования, на приобретение нового, первоначальной стоимости данного оборудования, стоимости получаемой на нем продукции; поиск неисправностей; планирование пополнения склада деталями широкого применения, поиск кратчайшего пути в графе и т. д.
При использовании динамического программирования необходимо прежде всего четко поставить задачу, сформулировать критериальную функцию и ограничительные условия, подготовить исходную информацию, определить альтернативы, выбрать метод решения, произвести вычисления, дать анализ и оценку полученному результату.
Постановка задачи предусматривает формулировку цели решения задачи, а также фиксацию состояния объекта управления на момент расчета. Эти данные послужат базой для получения в процессе расчетов новых характеристик, т. е. для моделирования системы.