Читайте также:
|
|
Введем некоторые обозначения.
S'i - состояние системы в начале i-го шага;
W'i (S) - условный оптимальный выигрыш, получаемый на всех последующих шагах, начиная с i-го и до конца;
U'i (S) - условное оптимальное управление на i-м шаге, которое, совместно с оптимальными управлениями на всех последующих шагах, обращает выигрыш на всех оставшихся шагах, начиная с данного, в максимум;
S'i = Фi (S, U'i) - новое состояние системы, в которое она перейдет из состояния S (в котором она была перед этим шагом) под влиянием управления U'i на i-м шаге.
Поставим задачу: определить функции W'i (S) и U'i (S) (i = 1, k), то есть, условный оптимальный выигрыш и условное оптимальное управление для всех шагов.
Запишем выигрыш, который мы получим на всех шагах, начиная с i-го, если на i-м шаге будет применено любое (вообще говоря, не оптимальное) управление Ui, а на всех последующих (от (i+1)-го до m-го) - оптимальное управление. Этот выигрыш будет равен выигрышу Wi на данном, i-м шаге, плюс условный оптимальный выигрыш на всех последующих шагах, начиная с (i+1)-го, определяемый для нового состояния системы S'; обозначим такой "полуоптимальный" выигрыш через W" (S, Ui):
W"i (S,Ui) = Wi (S,Ui) + W'i+1 (S'),
или W"i (S,Ui) = Wi (S,Ui) + W'i+1 (Фi (S,Ui)) (5.3)
Теперь, в соответствии с принципом оптимальности, мы должны выбрать такое управление Ui = U'i, при котором величина (5.3) максимальна и достигает значения:
(5.4)
Управление Ui = U'i (S), при котором этот максимум достигается, и есть условное оптимальное управление на i-м шаге, а сама величина W'i (S) - условный оптимальный выигрыш (на всех шагах, начиная с i-го и до конца).
В уравнении (5.4) функции Wi (S, Ui ) и Фi (S, Ui ) известны. Неизвестными остаются функции W'i (S) и W'i+1 (S).
Формула (5.4) представляет собой так называемое основное функциональное уравнение динамического программирования или рекуррентное соотношение*) Беллмана; она позволяет определить функцию W'i(S), если известна следующая за ней по порядку функция W'i+1 (S), что предопределяет порядок действия в динамическом программировании - от последнего шага к первому.
-------------------------------------------------------------------------------------------------------------
*) - рекуррентное соотношение (формула) – это соотношение(формула), позволяющее вычислить все члены последовательности некоторых величин, если известны первые члены этой последовательности.
-------------------------------------------------------------------------------------------------------------
В каждом многошаговом процессе имеется последний k-ый шаг, принятие решения на котором не зависит от будущего. Поэтому условный оптимальный выигрыш на последнем шаге W'k(Sk) может быть определен очень просто. Действительно, за последним шагом нет никакого другого, и нужно попросту обратить в максимум выигрыш на последнем шаге:
(5.5)
То есть, на последнем шаге выбирают управление, позволяющее получить наибольший эффект только на одном шаге. Спланировав этот шаг, к нему можно присоединить предпоследний (k-1)–ый шаг, решение на котором принимают уже с учетом принятого на k-ом шаге решения. К этим шагам можно присоединить (k-2)–ой шаг, решение на котором принимают уже с учетом принятых на k-ом и (k-1)–ом шагах решений. И так далее, до первого шага. То есть, процесс как бы «разворачивается» от конца к началу.
При этом на каждом шаге, то есть для каждой точки траектории системы на плоскости Р1OР2 точка S может перемещаться под любым углом в пределах некоторого сектора, называемого "розой направлений" (рис.5.1), причем каждому направлению соответствует своя величина выигрыша.
Схема решения такой задачи методом динамического программирования может быть представлена в виде, приведенном на рис. 5.2.
Однако, для того, чтобы спланировать k-ый шаг, нужно знать состояние, в котором система окажется после (k-1)–ого шага. Если состояние системы после (k-1)–ого шага неизвестно, то, исходя из характера процесса, делают предположения о возможных состояниях системы после этого (k-1)–ого шага, то есть, в начале k–ого шага. Для каждого предположения выбирают оптимальное решение (или управление), обеспечивающее получение наибольшего эффекта на последнем k-ом шаге. Однако, мы заранее не знаем окажется ли система в каждом конкретном из предполагаемых состояний. Поэтому принятое оптимальное управление называется условно оптимальным. Таким образом, на всех шагах, двигаясь от последнего шага к первому, находим условно оптимальные управления на этих шагах. В итоге приходим к состоянию Sо Î системы.
Для первого шага, в отличие от остальных, предположений о возможном состоянии системы не делаем, так как состояние Sо известно, а находим оптимальное управление, учитывая условно оптимальные управления, найденные на 2–ом шаге. Далее, проходя от Sо к Sk, получим искомые оптимальные (уже безусловные) управления на всех шагах и для исследуемого процесса в целом.
То есть, зная W'k(S) для последнего шага, по формуле (5.4) найдем функцию W'k-1(S) и U'k-1(S) для предпоследнего шага, затем W'k-2(S) и U'k-2(S) и так далее, вплоть до первого шага, для которого найдем функции W'1(S) и U'1(S).
Далее, зная исходное состояние So и оптимальное управление U*1 на первом шаге, можем найти состояние системы после первого шага: S*1 = Ф1(So, U*1)
Зная это состояние S*1, можно найти оптимальное управление на втором шаге U*2 = U'2 (S*1), затем состояние системы после второго шага S*2 = Ф2 (S*1, U'1) и т.д. Таким образом, идя по цепочке
So → U'1 (So) → S*1→ U'2 (S*1) → → S*m-1→ U'm (S*m-1) → S*m (5.7)
мы определим, одно за другим, все шаговые оптимальные управления и найдем состоящее из них оптимальное управление операцией в целом
U* = (U*1, U*2,..., U*k),
Таким образом, процедуру построения оптимального управления методом динамического программирования можно рассматривать состоящим из двух стадий - предварительную и окончательную:
- на предварительной стадии, которая осуществляется от последнего шага к первому, для каждого шага определяется условное оптимальное управление, зависящее от состояния S системы (достигнутого в результате предыдущих шагов), и условный оптимальный выигрыш на всех оставшихся шагах, начиная с данного, также зависящий от состояния S;
- на окончательной стадии, которая осуществляется от первого шага к последнему, определяется для каждого шага окончательное (безусловное) оптимальное управление и безусловный оптимальный выигрыш.
Из двух стадий оптимизации более важной и трудоемкой является первая, после окончания которой выполнение второй трудности не представляет, остается только "прочесть" рекомендации, уже заготовленные на первой стадии.
В принципе процесс динамического программирования может разворачиваться (хотя и не так естественно) и в направлении, обратном тому, которое мы приняли: условные оптимальные управления могут отыскиваться от первого шага к последнему, а безусловные - от последнего к первому.
Пример 5.3. Планируется деятельность двух отраслей производства I и II сроком на 5 лет (m = 5).
Заданы "функции дохода": f (х) = 1 – e –х; g (y) = 1 - e-2• y
и "функции траты": Ф (х) = 0,75 • х; P (y) = 0,3 • y.
Требуется распределить имеющиеся средства в размере Кo = 2 усл. единиц между отраслями I и II по годам, исходя из условия максимума дохода за m лет.
Пример 5.4. Планируется деятельность некоторой системы промышленных предприятий Р1, Р2,..., Рn на некоторый период времени Т, состоящий из k хозяйственных лет ti (i = 1, k), причем Т =
(ti).
Пусть заданы "функции доходов" и "функции трат" предприятий.
В начале каждого хозяйственного года производится финансирование всей системы предприятий, то есть, выделяется доля основных средств. Известны первоначальное состояние системы So, характеризуемое количеством средств Do, вложенных в предприятия к началу исследуемого периода, и конечное состояние Sk, характеризуемое всей дополнительно вложенной суммой Dk.
Следует распределить по предприятиям и по годам основные средства Dk таким образом, чтобы к концу периода Т суммарный доход W от всей системы предприятий был максимальным.
Дата добавления: 2014-12-15; просмотров: 141 | Поможем написать вашу работу | Нарушение авторских прав |