Классический метод поиска максимума функции Ф переменных состоит, как известно, в следующем. Определяются и приравниваются нулю частные производные функции по всем независимым переменным; в результате получается Ф уравнений, совместное решение которых дает искомое положение максимума. Этот метод чрезвычайно громоздок при большом Ф, а, кроме того, часто неосуществим по той причине, что аналитический вывод уравнений, определяющих точку оптимума, невозможен. Другой причиной непригодности классического метода является наличие технологических пределов варьирования независимых переменных. Может оказаться, что критерий оптимальности вовсе не имеет максимума в аналитическом смысле, а его наивысшее значение достигается на одной из границ разрешенной области, т, е. когда одна или несколько независимых переменных фиксированы на предельных значениях.
Наиболее общим, но и самым трудоемким методом расчетного поиска оптимума является "эксперимент" на математической модели. Задавшись некоторой совокупностью значений независимых переменных, всегда можно путем решения системы расчетных уравнений вычислить соответствующее значение критерия оптимальности. Чтобы найти оптимум, не обязательно испытывать все возможные сочетания значений варьируемых переменных (для этого понадобился бы фантастический объем вычислительной работы); как и при экспериментальном поиске, здесь должен быть применен' один из методов направленного движения к оптимуму типа метода крутого восхождения. Поисковые методы редко бывают эффективны. Кроме того, немаловажно, что ни один поисковый метод не может дать информации об общей структуре оптимального решения для ряда сходных задач.
Единый подход к решению широкого класса задач на разыскание экстремума функции большого конечного числа переменных дает теория динамического программирования Беллмана. Сущность этой теории покажем на примере типичной задачи оптимизации, возникающей в химической технологии. Требуется найти оптимальный режим для последовательности N реакторов (или N-стадийного аппарата), причем на каждой стадии варьируется М независимых переменных. Пронумеруем реакторы в обратном порядке, так что первый номер присваивается последнему, а N-й - первому по ходу потока реактору. Состояние потока на выходе n-го реактора обозначим индексом n; в соответствии с этим исходное состояние потока обозначается индексом N + 1 (рис.5). Состояние реагирующего потока в общем случае описывается некоторым вектором X . Вектор Xчасто совпадает с вектором состава С; в более сложных случаях, однако, компонентами вектора Смогут быть, помимо концентраций ключевых веществ, также и температура потока, давление и пр. Если осуществить оптимальный выбор значений всех МN варьируемых переменных, получаем максимальное значение критерия оптимальности, - зависящее только от исходного состояния потока:
max P N=φ N (X N+1) (64)
Выделим из N-стадийной последовательности первый по ходу потока реактор и в соответствии с этим разобьем критерий для N-стадийного процесса P Nна два слагаемых: критерий для первого по ходу потока реактора p Nи критерий для оставшейся ( N - 1) - стадийной последовательности РN -1.
P N= P N+ P N-1 (65)
Очевидно, что режим N-стадийной последовательности в целом может быть оптимальным только в том случае, если ( N - 1) - стадийная последовательность работает в режиме, оптимальном относительно состояния потока, выходящего из N-го реактора. Действительно, сумма (65) не может стать максимальной, пока ее слагаемое Р N-1не достигнет максимального значения, зависящего только от состояния потока X Nна выходе из N-го реактора. Подставляя (65) в (64) и заменяя, согласно сказанному, P N-1 на φ N -1 ( X N), приходим к основному функциональному уравнению
Φ N ( X N+1) = max [ p N+ φ N-1 ( X N)] (66)
которое представляет собой математическое выражение принципа оптимальности, лежащего в основе теории динамического программирования и сформулированного Беллманом: "Оптимальная стратегия обладает тем свойством, что, каковы бы ни были исходное состояние и решение в начальный момент, последующие решения должны составлять оптимальную стратегию относительно состояния, получающегося в результате первого решения".
Рис 5 Цепочка последовательно соединенных реакторов
В уравнении (66) максимум достигается варьированием только параметров, управляющих процессом на первой по ходу потока стадии. Принцип оптимальности позволяет, таким образом, заменить задачу одновременного выбора оптимальных значений MN независимых переменных гораздо более простой задачей N-стадийного выбора, на каждой стадии которого оптимум достигается варьированием М переменных. Другой отличительной чертой поиска оптимума методом динамического программирования является то, что задача решается не для единственного процесса с какими-то определенными параметрами исходного состояния, как это делается при использовании метода крутого восхождения, а для совокупности процессов с различными исходными состояниями. Действительно, как результат решения получаем зависимость максимального значения критерия оптимальности от параметров исходного состояния φ N ( X N+1).
Уравнение (66) представляет собой соотношение, позволяющее найти максимальное значение критерия оптимальности для N-стадийной последовательности φ N, если максимальное значение критерия для ( N - 1) - стадийной последовательности φ N -1 уже известно. Этот факт и определяет процедуру поиска оптимума методом динамического программирования.
Так как выбор оптимальных условий для реакторов, стоящих в начале последовательности, должен осуществляться с учетом влияния работы этих реакторов на процесс в последующих аппаратах, а обратное влияние отсутствует, расчет N-стадийной последовательности следует начинать с расчета реактора, последнего походу потока, и вести, оптимизируя цепочки реакторов со все большим числом членов, подключая к этой цепочке реакторы, все более удаленные от конца последовательности. Начинаем с "последовательности", содержащей ноль реакторов. В такой "последовательности", разумеется, никаких превращений не происходит и максимальное значение критерия оптимальности φ 0 ( X 1) тождественно равно нулю. Далее рассматриваем последовательность, состоящую из одного реактора. Подставляя в (66) N = 1 и φ 0 = 0, получаем:
φ 1 ( X 2) = max p1 (67)
Вектор Х 2 описывает состояние потока, выходящего из реактора 2, и потому пока неизвестен; поэтому приходится определять оптимальные значения варьируемых параметров и соответствующие им максимальные значения критерия оптимальности φ 1 ( X2) для некоторой более или менее широкой совокупности исходных составов и табулировать полученные результаты. После этого можно перейти к расчету двухстадийной последовательности. Пользуясь принципом оптимальности (66), находим оптимальные значения параметров, управляющих процессом в реакторе 2. Варьируя эти параметры, меняем состояние потока Х 2на выходе из реактора 2; при этом изменяются как величина р 2 (критерий для реактора 2), так и уже вычисленное максимальное значение критерия оптимальности φ 1 (Х 2) для реактора 1. Максимизируется сумма этих величин; для реактора 2 оптимальный режим определяется, таким образом, с учетом не только "локальной пользы", но и влияния работы этого реактора на дальнейший ход процесса. После того как вычислена функция φ 2 ( X 3) (в определенной области значений исходных состояний X 3), можно приступать к расчету трехстадийной последовательности и т.д., вплоть до любого N.
Описанная общая схема метода динамического программирования, впервые примененная к расчету химических реакторов Арисом, является универсальной, но содержит два неприятных момента. Первый из них - разыскание максимума в уравнении (66), выполняемое на каждой стадии. Здесь можно воспользоваться поисковым методом крутого восхождения, что не вызовет больших затруднений, так как поиск ведется только по малому числу М варьируемых переменных. Второй, еще более неприятный момент - необходимость вычислять на каждой стадии: максимальные значения критерия оптимальности как функции параметров исходного состояния и табулировать вычисленные величины. Эта чрезвычайно трудоемкая задача сильно ограничивает возможности практического применения общей схемы метода динамического программирования и делает ее подчас менее эффективной, чем поисковый метод крутого восхождения. Оба метода являются но своему характеру типично машинными, так как связаны с многократным использованием одних и тех же расчетных формул и уравнений, т.е. многократным повторением относительно простой программы. Вопрос о том, какой из методов рационально применить при расчете, должен решаться в зависимости от конкретных условий задачи. Заранее можно сказать лишь то, что преимущества метода динамического программирования будут сказываться при увеличении числа стадий и при большей неопределенности исходного состояния потока. Рост числа компонентов вектора состояния X , затрудняя задачу табулирования, делает предпочтительным применением метода крутого восхождения.
От недостатков общей схемы метода динамического программирования можно, однако, в значительной мере избавиться, используя аналитический метод поиска оптимума на каждой стадии. Именно этот способ будет применен к решению задач оптимизации цепочек реакторов, рассматриваемых ниже. Отметим, что основные расчетные формулы, которые получим, могут быть выведены не только с помощью метода динамического программирования, но и на основе дискретного варианта принципа максимума Понтрягина или классических вариационных методов.
1. Иоффе И.И., Письмен Л.М. Инженерная химия гетерогенного катализа. Изд-во "Химия", Л., 1972, стр.464, табл.8, рис 102.