Сайт о телевидении

Сайт о телевидении

» » Введение в динамическое программирование. Метод динамического программирования

Введение в динамическое программирование. Метод динамического программирования

Динамическое программирование (иначе «динамическое планирование») есть особый метод оптимизации решений, специально приспособленный к так называемым «многошаговым» (пли «многоэтапным») операциям.

Представим себе некоторую операцию Ơ, распадающуюся на ряд последовательных «шагов» или «этапов»,- например, деятельность отрасли промышленности в течение ряда хозяйственных лет; или же преодоление группой самолетов нескольких полос противовоздушной обороны; или же последовательность тестов, применяемых при контроле аппаратуры. Некоторые операции (подобно выше приведенным) расчленяются на шаги естественно; в некоторых членение приходится вводить искусственно - скажем, процесс наведения ракеты на цель можно условно разбить на этапы, каждый из которых занимает какое-то время .

Итак, рассмотрим операцию Ơ , состоящую из Т Шагов (этапов). Пусть эффективность операции характеризуется каким-то показателем W , который мы для краткости будем в этой главе называть «выигрышем». Предположим, что выигрыш W за всю операцию складывается из выигрышей на отдельных шагах:

Где Wi - выигрыш на I -м шаге.

Если W обладает таким свойством, то его называют «аддитивным критерием».

Операция О, о которой идет речь, представляет собой управляемый процесс, т. е. мы можем выбирать какие-то параметры, влияющие на его ход и исход, причем на каждом шаге выбирается какое-то решение, от которого зависит выигрыш на данном шаге и выигрыш за операцию в целом. Будем называть это решение «шаговым управлением». Совокупность всех шаговых управлений представляет собой управление операцией в целом. Обозначим его буквой Х, а шаговые управления - буквами Х1, х2, …, Xm :

X = (X 1 , X 2 , …, Xm ). (12.2)

Следует иметь в виду, что Х1, х2, …., Xm в общем случае - не числа, а, может быть, векторы, функции и т. д.

Требуется найти такое управление Х, при котором выигрыш W обращается в максимум:

То управление Х*, при котором этот максимум достигается, будем называть оптимальным управлением. Оно состоит из совокупности оптимальных шаговых управлений:

Х* = (). (12.4)

Тот максимальный выигрыш, который достигается при этом управлении, мы будем обозначать W* :

W* = {W (х) }. (12.5)

Формула (12.5) читается так: величина W * есть максимум из всех W { X } при разных управлениях Х (максимум берется по всем управлениям Х, возможным в данных условиях). Иногда это последнее оговаривается в формуле и пишут:

Рассмотрим несколько примеров многошаговых операций и для каждого из них поясним, что понимается под «управлением» и каков «выигрыш» (показатель эффективности) W.

1. Планируется деятельность группы промышленных предприятий П1, П2, …, ПK на период Т хозяйственных лет (M -летку). В начале периода на развитие группы выделены какие-то средства М, которые должны быть как-то распределены между предприятиями. В процессе работы предприятия, вложенные в него средства частично расходуются (амортизируются), а частично сохраняются и снова могут быть перераспределены. Каждое предприятие за год приносит доход, зависящий от того, сколько средств в него вложено. В начале каждого хозяйственного года имеющиеся в наличии средства перераспределяются между предприятиями. Ставится вопрос: какое количество средств в начале каждого года нужно выделять каждому предприятию, чтобы суммарный доход за Т лет был максимальным?

Выигрыш W (суммарный доход) представляет собой сумму доходов на отдельных шагах (годах):

И, значит, обладает свойством аддитивности.

Управление X I на I -м шаге состоит в том, что в начале I -го года предприятиям выделяются какие-то средства Х I 1 , х I 2 , …, х Ik (первый индекс - номер шага, второй - номер предприятия). Таким образом, шаговое управление есть вектор с K составляющими:

Xi = (Xi 1 , Xi 2 , …, Xik ). (12.7)

Разумеется, величины Wi в формуле (12.6) зависят от количества вложенных в предприятия средств.

Управление Х всей операцией состоит из совокупности всех шаговых управлений:

X = (X 1 , X 2 , …, Xm ). (12.8)

Требуется найти такое распределение средств по предприятиям и по годам (оптимальное управление X * ), при котором величина W обращается в максимум.

В этом примере шаговые управления были векторами; в последующих примерах они будут проще и выражаться просто числами.

2. Космическая ракета состоит из Т ступеней, а процесс ее вывода на орбиту - из M этапов, в конце каждого из которых очередная ступень сбрасывается. На все ступени (без учета «полезного» веса кабины) выделен какой-то общий вес:

G = G 1 + G 2 + … + Gm ,

Где Gi - вес I -й ступени.

В результате I -го этапа (сгорания и сбрасывания 1-й ступени) ракета получает приращение скорости , зависящее от веса данной ступени и суммарного веса всех оставшихся плюс вес кабины. Спрашивается, как нужно распределить вес G между ступенями, чтобы скорость ракеты V при ее выводе на орбиту была максимальна?

В данном случае показатель эффективности (выигрыш) будет

V = (12.9)

Где - выигрыш (приращение скорости) на I -м шаге. Управление Х представляет собой совокупность весов всех ступеней Gi :

Х = (Gi , Gi , …, Gm ).

Оптимальным управлением Х* будет то распределение весов по ступеням, при котором скорость V максимальна. В этом примере шаговое управление - одно число, а именно, вес данной ступени.

3. Владелец автомашины эксплуатирует ее в течение Т лет. В начале каждого года он может принять одно из трех решений:

1) продать машину и заменить ее новой;

2) ремонтировать ее и продолжать эксплуатацию;

3) продолжать эксплуатацию без ремонта.

Шаговое управление - выбор одного из этих трех решений. Непосредственно числами они не выражаются, но можно приписать первому численное значение 1, второму 2, третьему 3. Какие нужно принять решения по годам (т. е. как чередовать управления 1, 2, 3), чтобы суммарные расходы на эксплуатацию, ремонт и приобретение новых машин были минимальны?

Показатель эффективности (в данном случае это не «выигрыш», а «проигрыш», но это неважно) равен

W = (12.10)

Где Wi - расходы в I -м году. Величину W требуется обратить в минимум.

X = (3, 3, 2, 2, 2, 1, 3, …),

Что означает: первые два года эксплуатировать машину без ремонта, последующие три года ее ремонтировать, в начале шестого года продать, купить новую, затем снова эксплуатировать без ремонта и т. д. Любое управление представляет собой вектор (совокупность чисел):

Х = (J 1 , J 2 , …; Jm ), (12.11)

Где каждое из чисел J 1 , J 2 , …, Jm имеет одно из трех значений: 1, 2 или 3. Нужно выбрать совокупность чисел (12.11), при которой величина (12.10) минимальна.

4. Прокладывается участок железнодорожного пути между пунктами А и В (рис. 12.1). Местность пересеченная, включает лесистые зоны, холмы, болота, реку, через которую надо строить мост. Требуется так провести дорогу из А и В, чтобы суммарные затраты на сооружение участка были минимальны.

В этой задаче, в отлично от трех предыдущих, нет естественного членения на шаги: его приходится вводить искусственно, для чего, например, можно отрезок АВ разделить на Т частей, провести через точки деления прямые, перпендикулярные АВ, и считать за «шаг» переход с одной такой прямой на другую. Если провести их достаточно близко друг от друга, то можно считать на каждом шаге участок пути прямолинейным. Шаговое управление на г-м шаге представляет собой угол , который составляет участок пути с прямой АВ. Управление всей операцией состоит из совокупности шаговых управлений:

Х = ().

Требуется выбрать такое (оптимальное) управление Х *, при котором суммарные затраты па сооружение всех участков минимальны:

W = => Min. (12.12)

Итак, мы рассмотрели несколько примеров многошаговых задач исследования операций. А теперь поговорим о том, как можно решать подобного рода задачи?

Любую многошаговую задачу можно решать по-разному: либо искать сразу все элементы решения на всех M шагах, либо же строить оптимальное управление шаг за шагом, па каждом этапе расчета оптимизируя только один шаг. Обычно второй способ оптимизации оказывается проще, чем первый, особенно при большом числе шагов.

Такая идея постепенной, пошаговой оптимизации и лежит в основе метода динамического программирования. Оптимизация одного шага, как правило, проще оптимизации всего процесса: лучше, оказывается, много раз решить сравнительно простую задачу, чем один раз - сложную.

С первого взгляда идея может показаться довольно тривиальной. В самом деле, чего казалось бы, проще:

Если трудно оптимизировать операцию в целом, разбить ее на ряд шагов. Каждый такой шаг будет отдельной, маленькой операцией, оптимизировать которую уже нетрудно. Надо выбрать на этом шаге такое управление, чтобы эффективность этого шага была максимальна. Не так ли?

Нет, вовсе не так! Принцип динамического программирования отнюдь не предполагает, что каждый шаг оптимизируется отдельно, независимо от других. Напротив, шаговое управление должно выбираться дальновидно, с учетом всех его последствий в будущем. Что толку, если мы выберем на данном шаге управление, при котором эффективность этого шага максимальна, если этот шаг лишит нас возможности хорошо выиграть на последующих шагах?

Пусть, например, планируется работа группы промышленных предприятий, из которых часть занята выпуском предметов потребления, а остальные производят для них машины. Задача операции - получить за Т лет максимальный объем выпуска предметов потребления. Допустим, планируются капиталовложения на первый год. Исходя из узких интересов этого шага (года), мы должны были бы все наличные средства вложить в производство предметов потребления. Но правильно ли будет такое решение с точки зрения эффективности операции в целом? Очевидно, нет. Это решение - расточительное, недальновидное. Имея в виду будущее, надо выделить какую-то долю средств и на производство машин. От этого объем продукции за первый год, конечно, снизится, зато будут созданы условия для его увеличения в последующие годы.

Еще пример. Допустим, что в задаче 4 (прокладка железнодорожного пути из А в В ) мы прельстимся идеей сразу же устремиться по самому легкому (дешевому) направлению. Что толку от экономии на первом шаге, если в дальнейшем он заведет нас (буквально или фигурально) в «болото»?

Значит, Планируя многошаговую операцию, надо выбирать управление на каждом шаге с учетом всех его будущих последствий на еще предстоящих шагах. Управление на I -м шаге выбирается не так, чтобы выигрыш именно на данном шаге был максимален, а так, чтобы была максимальна сумма выигрышей на всех оставшихся до конца шагах плюс данный.

Однако из этого правила есть исключение. Среди всех шагов есть один, который может планироваться попросту, без оглядки на будущее. Какой это шаг? Очевидно, последний! Этот шаг, единственный из всех, можно планировать так, чтобы он сам, как таковой, принес наибольшую выгоду.

Поэтому процесс динамического программирования обычно разворачивается от конца к началу: прежде всего, планируется последний, M -й шаг. А как его спланировать, если мы не знаем, чем кончился предпоследний? Т. е. не знаем условий, в которых мы приступаем к последнему шагу?

Вот тут-то и начинается самое главное. Планируя последний шаг, нужно сделать разные предположения о том, чем кончился предпоследний, (т — 1)-й шаг, и для каждого из этих предположений найти условное оптимальное управление на M -м шаге («условное» потому, что оно выбирается исходя из условия, что предпоследний шаг кончился так-то и так-то).

Предположим, что мы это сделали, и для каждого из возможных исходов предпоследнего шага знаем условное оптимальное управление и соответствующий ему условный оптимальный выигрыш на M -м шаге. Отлично! Теперь мы можем оптимизировать управление на предпоследнем, (т- 1)-м шаге. Снова сделаем все возможные предположения о том, чем кончился предыдущий, (M — 2)-й шаг, и для каждого из этих предположений найдем такое управление на (M 1)-м шаге, при котором выигрыш за последние два шага (из которых M -й уже оптимизирован!) максимален. Так мы найдем для каждого исхода (M — 2)- шага условное оптимальное управление на (т — 1)-м шаге и условный оптимальный выигрыш на двух последних шагах. Далее, «пятясь назад», оптимизируем управление на (M — 2)-м шаге и т. д., пока не дойдем до первого.

Предположим, что все условные оптимальные управления и условные оптимальные выигрыши за весь «хвост» процесса (на всех шагах, начиная от данного и до конца) нам известны. Это значит: мы знаем, что надо делать, как управлять на данном шаге и что мы за это получим на «хвосте», в каком бы состоянии ни был процесс к началу шага. Теперь мы можем построить уже не условно оптимальное, а просто оптимальное управление Х* и найти не условно оптимальный, а просто оптимальный выигрыш W *.

В самом деле, пусть мы знаем, в каком состоянии S 0 была управляемая система (объект управления S ) в начале первого шага. Тогда мы можем выбрать оптимальное управление на первом шаге. Применив его, мы изменим, состояние системы на некоторое новое ; в этом состоянии мы подошли ко второму шагу. Тогда нам тоже известно условное оптимальное управление , которое к концу второго шага переводит систему в состояние , и т. д. Что касается оптимального выигрыша W* за всю операцию, то он нам уже известен: ведь именно на основе его максимальности мы выбирали управленце на первом шаге.

Таким образом, в процессе оптимизации управления методом динамического программирования многошаговый процесс «проходится» дважды: первый раз - от конца к началу, в результате чего находятся условные оптимальные управления и условные оптимальные выигрыши за оставшийся «хвост» процесса; второй раз - от начала к концу, когда нам остается только «прочитать» уже готовые рекомендации и найти безусловное оптимальное управление Х*, состоящее из оптимальных шаговых управлений

Первый этап - условной оптимизации - несравненно сложнее и длительнее второго. Второй этап почти не требует дополнительных вычислений.

Автор не льстит себя надеждой, что из такого описания метода динамического программирования читатель, не встречавшийся с ним до сих пор, поймет по-настоящему его идею. Истинное понимание возникает при рассмотрении конкретных примеров, к которым мы и перейдем.

Достаточно общая теория управления СССР Внутренний Предиктор

14. Метод динамического программирования как алгоритмическое выражение достаточно общей теории управления

В изложении существа метода динамического программирования мы опираемся на книгу “Курс теории автоматического управления” (автор Палю де Ла Барьер: французское издание 1966 г., русское издание - “Машиностроение”, 1973 г.), хотя и не повторяем его изложения. Отдельные положения взяты из курса “Исследование операций” Ю.П.Зайченко (Киев, “Вища школа”, 1979 г.).

Метод динамического программирования работоспособен, если формальная интерпретация реальной задачи позволяет выполнить следующие условия:

1. Рассматриваемая задача может быть представлена как N -шаговый процесс, описываемый соотношением:

X = f(X U , n) , где n - номер одного из множества возможных состояний системы, в которое она переходит по завершении n -ного шага; X - вектор состояния системы, принадлежащий упомянутому n -ному множеству; U - управление, выработанное на шаге n (шаговое управление), переводящее систему из возможного её состояния в n -ном множестве в одно из состояний (n + 1 )-го множества. Чтобы это представить наглядно, следует обратиться к рис. 4, о котором речь пойдет далее.

2. Структура задачи не должна изменяться при изменении расчетного количества шагов N.

3. Размерность пространства параметров, которыми описывается состояние системы, не должна изменяться в зависимости от количества шагов N.

4. Выбор управления на любом из шагов не должен отрицать выбора управления на предыдущих шагах. Иными словами, оптимальный выбор управления в любом из возможных состояний должен определяться параметрами рассматриваемого состояния, а не параметрами процесса, в ходе которого система пришла в рассматриваемое состояние.

Чисто формально, если одному состоянию соответствуют разные предыстории его возникновения, влияющие на последующий выбор оптимального управления, то метод позволяет включить описания предысторий в вектор состояния, что ведёт к увеличению размерности вектора состояния системы. После этой операции то, что до неё описывалось как одно состояние, становится множеством состояний, отличающихся одно от других компонентами вектора состояния, описывающими предысторию процесса.

5. Критерий оптимального выбора последовательности шаговых управлений U и соответствующей траектории в пространстве формальных параметров имеет вид:

V = V (X , U) + V (X , U) + + V (X , U) + V (X).

Критерий V принято называть полным выигрышем, а входящие в него слагаемые - шаговыми выигрышами . В задаче требуется найти последовательность шаговых управлений U и траекторию, которым соответствует максимальный из возможных полных выигрышей . По своему существу полный “выигрыш” V - мера качества управления процессом в целом . Шаговые выигрыши, хотя и входят в меру качества управления процессом в целом, но в общем случае не являются мерами качества управления на соответствующих им шагах, поскольку метод предназначен для оптимизации управления процессом в целом, а эффектные шаговые управления с большим шаговым выигрышем, но лежащие вне оптимальной траектории, интереса не представляют. Структура метода не запрещает при необходимости на каждом шаге употреблять критерий определения шагового выигрыша V , отличный от критериев, принятых на других шагах.

С индексом n - указателем-определителем множеств возможных векторов состояния - в реальных задачах может быть связан некий изменяющийся параметр, например: время, пройденный путь, уровень мощности, мера расходования некоего ресурса и т.п. То есть метод применим не только для оптимизации управления процессами, длящимися во времени, но и к задачам оптимизации многовариантного одномоментного или нечувствительного ко времени решения, если такого рода “безвременные”, “непроцессные” задачи допускают их многошаговую интерпретацию.

Теперь обратимся к рис. 4 - рис. 6, повторяющим взаимно связанные рис. 40, 41, 42 из курса теории автоматического управления П. де Ла Барьера.

Рис. 4. К существу метода динамического программирования. Матрица возможностей.

На рис. 4 показаны начальное состояние системы - «0» и множества её возможных последующих состояний - «1», «2», «3», а также возможные переходы из каждого возможного состояния в другие возможные состояния. Всё это вместе похоже на карту настольной детской игры, по которой перемещаются фишки: каждому переходу-шагу соответствует свой шаговый выигрыш, а в завершающем процесс третьем множестве - каждому из состояний системы придана его оценка, помещенная в прямоугольнике. Принципиальное отличие от игры в том, что гадание о выборе пути, употребляемое в детской игре, на основе бросания костей или вращения волчка и т.п., в реальном управлении недопустимо, поскольку это - передача целесообразного управления тем силам, которые способны управлять выпадением костей, вращением волчка и т.п., т.е. тем, для кого избранный в игре «генератор случайностей» - достаточно (по отношению к их целям) управляемое устройство.

Если выбирать оптимальное управление на первом шаге, то необходимо предвидеть все его последствия на последующих шагах. Поэтому описание алгоритма метода динамического программирования часто начинают с описания выбора управления на последнем шаге, ведущем в одно из завершающих процесс состояний. При этом ссылаются на «педагогическую практику», которая свидетельствует, что аргументация при описании алгоритма от завершающего состояния к начальному состоянию легче воспринимается, поскольку опирается на как бы уже сложившиеся к началу рассматриваемого шага условия, в то время как возможные завершения процесса также определены.

Рис. 5. К существу метода динамического программирования. Анализ переходов.

В соответствии с этим на рис. 5 анализируются возможные переходы в завершающее множество состояний «3» из каждого возможного состояния в ему предшествующем множестве состояний «2», будто бы весь предшествующий путь уже пройден и осталось последним выбором оптимального шагового управления завершить весь процесс. При этом для каждого из состояний во множестве «2» определяются все полные выигрыши как сумма = «оценка перехода» + «оценка завершающего состояния». Во множестве «2» из полученных для каждого из состояний, в нём возможных полных выигрышей, определяется и запоминается максимальный полный выигрыш и соответствующий ему переход (фрагмент траектории). Максимальный полный выигрыш для каждого из состояний во множестве «2» взят в прямоугольную рамку, а соответствующий ему переход отмечен стрелкой. Таких оптимальных переходов из одного состояния в другие, которым соответствует одно и то же значение полного выигрыша, в принципе может оказаться и несколько. В этом случае все они в методе неразличимы и эквивалентны один другому в смысле построенного критерия оптимальности выбора траектории в пространстве параметров, которыми описывается система.

После этого множество «2», предшествовавшее завершающему процесс множеству «3», можно рассматривать в качестве завершающего, поскольку известны оценки каждого из его возможных состояний (максимальные полные выигрыши) и дальнейшая оптимизация последовательности шаговых управлений и выбор оптимальной траектории могут быть проведены только на ещё не рассмотренных множествах, предшествующих множеству «2» в оптимизируемом процессе (т.е. на множествах «0» и «1»).

Таким образом, процедура, иллюстрируемая рис. 5, работоспособна на каждом алгоритмическом шаге метода при переходах из n -го в (n - 1) -е множество, начиная с завершающего N -ного множества до начального состояния системы.

В результате последовательного попарного перебора множеств, при прохождении всего их набора, определяется оптимальная последовательность преемственных шаговых управлений, максимально возможный полный выигрыш и соответствующая им траектория. На рис. 6 утолщённой линией показана оптимальная траектория для рассматривавшегося примера.

Рис. 6. К существу метода динамического программирования. Оптимальная траектория.

В рассмотренном примере критерий оптимальности - сумма шаговых выигрышей. Но критерий оптимальности может быть построен и как произведение обязательно неотрицательных сомножителей.

Поскольку результат (сумма или произведение) не изменяется при изменении порядка операций со слагаемыми или сомножителями, то алгоритм работоспособен и при переборе множеств возможных состояний в порядке, обратном рассмотренному: т.е. от исходного к завершающему множеству возможных состояний.

Если множества возможных состояний упорядочены в хронологической последовательности, то это означает, что расчетная схема может быть построена как из реального настоящего в прогнозируемое определённое будущее, так и из прогнозируемого определённого будущего в реальное настоящее. Это обстоятельство говорит о двух неформальных соотношениях реальной жизни, лежащих вне алгоритма:

1. Метод динамического программирования формально алгоритмически нечувствителен к характеру причинно-следственных обусловленностей (в частности, он не различает причин и следствий). По этой причине каждая конкретная интерпретация метода в прикладных задачах должна строиться с неформальным учетом реальных обусловленностей следствий причинами.

2. Если прогностика в согласии с иерархически высшим объемлющим управлением, а частное вложенное в объемлющее управление осуществляется квалифицировано, в силу чего процесс частного управления протекает в ладу с иерархически высшим объемлющим управлением, то НЕ СУЩЕСТВУЕТ УПРАВЛЕНЧЕСКИ ЗНАЧИМОЙ РАЗНИЦЫ МЕЖДУ .

Процесс целостен, по какой причине ещё не свершившееся, но уже нравственно избранное и объективно не запрещённое Свыше будущее, в свершившемся настоящем защищает тех, кто его творит на всех уровнях: начиная от защиты психики от наваждений до защиты от целенаправленной “физической” агрессии. То есть, если матрица возможных состояний (она же матрица возможных переходов) избрана в ладу с иерархически высшим объемлющим управлением, то она сама - защита и оружие, средство управления, на которое замкнуты все шесть приоритетов средств обобщённого оружия и управления.

Объективное существование матриц возможных состояний и переходов проявляется в том, что в слепоте можно “забрести” в некие матрицы перехода и прочувствовать на себе их объективные свойства. Последнее оценивается субъективно, в зависимости от отношения к этим свойствам, как полоса редкостного везения либо как нудное “возвращение на круги своя” или полоса жестокого невезения.

Но для пользования методом динамического программирования и сопутствующими его освоению неформализованными в алгоритме жизненными проявлениями матриц перехода , необходимо СОБЛЮДЕНИЕ ГЛАВНОГО из условий:

В задачах оптимизации процессов управления метод динамического программирования «реального будущего: - по умолчанию» работоспособен только, если определён вектор целей управления, т.е. должно быть избрано завершающее процесс .

В реальности это завершающее определённое состояние должно быть заведомо устойчивым и приемлемым процессом, объемлющим и несущим оптимизируемый методом частный процесс. Но выбор и определение определённых характеристик процесса, в который должна войти управляемая система по завершении алгоритма метода лежит вне этого метода - в области “мистики” или в области методов, развитых в нематематических по своему существу науках и ремёслах.

«Каково бы ни было состояние системы перед очередным шагом, надо выбирать управление на этом шаге так, чтобы выигрыш на данном шаге плюс оптимальный выигрыш на всех последующих шагах был максимальным», - Е.С.Вентцель, “Исследование операций. Задачи, принципы, методология.” (М., “Наука”, 1988 г., стр. 109).

Неспособность определить вектор целей управления (достижением которого должен завершиться оптимизируемый в методе процесс) и (или) неспособность выявить исходное состояние объекта управления не позволяет последовать этой рекомендации, что объективно закрывает возможности к использованию метода динамического программирования, поскольку начало и конец процесса должны быть определены в пространстве параметров, на которых построена математическая (или иная) модель метода, которая должна быть метрологически состоятельной, что является основой её соотнесения с реальностью. Причём определённость завершения оптимизируемого процесса имеет управленчески большее значение, чем ошибки и некоторые неопределённости в идентификации (выявлении) начального состояния объекта управления.

Это тем более справедливо для последовательных многовариантных шаговых переходов, если матрица возможных состояний вписывается в пословицу «Все дороги ведут в “Рим”», . Для такого рода процессов, если избрана устойчивая во времени цель и к ней ведут множество траекторий, то при устойчивом пошаговом управлении “расстояние” между оптимальными траекториями, идущими к одной и той же цели из различных исходных состояний, от шага к шагу сокращается, вплоть до полного совпадения оптимальных траекторий, начиная с некоторого шага. Это утверждение тем более справедливо, чем более определённо положение завершающего процесс вектора целей в пространстве параметров. По аналогии с математикой это можно назвать : асимптотичность множества траекторий выражается в том, что «все дороги ведут в “Рим”…»

И в более общем случае, рекомендации Нового Завета и Корана утверждают возможность обретения благодати, милости Вседержителя вне зависимости от начального состояния (греховности человека) в тот момент, когда он очнулся и увидел свои дела такими, каковы они есть.

Другое замечание относится уже к практике - к вхождению в матрицу перехода. Если начальное состояние системы определено с погрешностью, большей чем допустимая для вхождения в матрицу перехода из реального начального состояния в избранное конечное, то управление на основе самого по себе безошибочного алгоритма метода динамического программирования приведет к совсем иным результатам, а не расчетному оптимальному состоянию системы. Грубо говоря, не следует принимать за выход из помещения на высоком этаже открытое в нём окно.

То есть метод динамического программирования, необходимостью как определённости в выборе конечного состояния-процесса, так и выявления истинного начального состояния, сам собой защищён от применения его для наукообразной имитации оптимизации управления при отсутствии такового. Это отличает метод динамического программирования, в частности от аппарата линейного программирования , в который можно сгрузить экспромтные оценки “экспертами” весовых коэффициентов в критериях оптимизации Min (Z) либо Max (Z) .

Эта сама собой защищённость от недобросовестного использования косвенно отражена и в литературе современной экономической науки: поскольку она не определилась с тем, что является вектором целей управления по отношению к экономике государства, то не встречаются и публикации об использовании аппарата динамического программирования для оптимизации управления макроэкономическими системами регионов и государств в целом на исторически длительных интервалах времени.

Примерами тому “Математическая экономика на персональном компьютере” под ред. М.Кубонива , в которой глава об управлении в экономике содержит исключительно макроэкономические интерпретации аппарата линейного программирования (прямо так и названа “Управление в экономике. Линейное программирование и его применение”), но ничего не говорит о векторе целей управления и средствах управления; в ранее цитированном учебнике Ю.П.Зайченко описание метода динамического программирования также построено на задачах иного характера.

Однако при мотивации отказа от макроэкономических интерпретаций метода динамического программирования авторы обычно ссылаются на так называемое в вычислительной математике «проклятие размерности», которое выражается в том, что рост размерности пространства параметров задачи N вызывает рост объема вычислений, пропорциональный N , где показатель степени k» 1. Такой нелинейный сверхпропорциональный рост объема вычислений действительно делает многие вычислительные работоспособные процедуры никчемными в решении практических задач как из-за больших затрат машинного времени компьютеров, так и из-за накопления ошибок в приближённых вычислениях. Но это «проклятие размерности» относится не только к методу динамического программирования, но и к другим методам, которые, однако, встречаются и в их макроэкономических интерпретациях.

Из книги Прозрение автора Ефимов Виктор Алексеевич

4. Достаточно общая теория управления (ДОТУ). Реальное управление страной возможно только по полной функции. Применяемые в стране принципы управления (хотели как лучше, а получилось как всегда) свидетельствуют об отсутствии элементарных представлений о схемах

Из книги Об искоренении глобальной угрозы «международного терроризма» автора СССР Внутренний Предиктор

Отступление от темы 5: Кибернетика и история теории управления На протяжении всей второй половины ХХ века кибернетику представляют обществу в качестве науки об управлении вообще, хотя она - в том виде, в котором её представил публике Н.Винер, - в действительности не

автора СССР Внутренний Предиктор

1. Достаточно общая теория управления: зачем это надо? Всякий разум - индивидуальный или соборный - в иерархии взаимной вложенности структур Мироздания решает прежде всего задачи управления по отношению к иерархически низшим системам и задачи самоуправления в

Из книги 12 тем. Маркетинг 21 века автора Грант Дж

2. Категории достаточно общей теории управления В теории управления возможна постановка всего двух задач.· Первая задача: мы хотим управлять объектом в процессе его функционирования сами непосредственно. Это.· Вторая задача: мы не хотим управлять объектом в процессе

Из книги «О текущем моменте» № 7(79), 2008 г. автора СССР Внутренний Предиктор

Из книги Геннадий Шичко и его метод автора Дроздов Иван

Часть 1. Полная функция управления в толпо-“элитаризме” и в реальном народовластии 1.1. Полная функция управления и первобытная практика её реализации в жизни общества В достаточно общей теории управления (ДОТУ) есть понятие «полная функция управления». Полная функция

Из книги Что нас ждет, когда закончится нефть, изменится климат, и разразятся другие катастрофы автора Кунстлер Джеймс Говард

Из книги Новая опричнина, или Модернизация по-русски автора Калашников Максим

Из книги Что нас ждет, когда закончится нефть, изменится климат и разразятся другие катастрофы XXI века автора Кунстлер Джеймс Говард

Сжатие инновационных циклов – вопрос национального выживания: меморандум Института динамического консерватизма 10 июня 2009 года в Институте динамического консерватизма состоялась экспертная встреча практиков-инноваторов и ученых на тему: «Реальные инновации и их

Из книги Антисемитизм: концептуальная ненависть автора Альтман Илья

Из книги Достаточно общая теория управления автора СССР Внутренний Предиктор

Выражение признательности МАРК ВЕЙЦМАНЭта книга готовилась в честь Симона Визенталя. Поскольку обычно такого рода сборники издаются в честь выдающихся ученых, идея посвятить книгу Симону была чрезвычайно уместна. Не занимая должности научного сотрудника или

Из книги Неужели я гений? автора Венгар Вин

1. Достаточно общая теория управления: зачем это надо? Всякий разум – индивидуальный или соборный – в иерархии взаимной вложенности структур Мироздания решает прежде всего задачи управления по отношению к иерархически низшим системам и задачи самоуправления в

Из книги Куда Кейнс зовет Россию? автора Дзарасов Солтан

2. Категории достаточно общей теории управления В теории управления возможна постановка всего двух задач.· Первая задача: мы хотим управлять объектом в процессе его функционирования сами непосредственно. Это.· Вторая задача: мы не хотим управлять объектом в процессе его

Из книги автора

14. Метод динамического программирования как алгоритмическое выражение достаточно общей теории управления В изложении существа метода динамического программирования мы опираемся на книгу “Курс теории автоматического управления” (автор Палю де Ла Барьер: французское

Из книги автора

Выражение признательности Программа ускоренного обучения «Проект возрождения» главная тема этой книги - начала реализовываться 25 лет назад благодаря усилиям огромного количества людей, пионеров в области изучения человеческого сознания, тех, кто принимал участие в

Из книги автора

3. На пути к Общей теории В то же время русская революция была воспринята им как серьезное предупреждение. При всем своем негативном отношении к ней Кейнс с повышенным интересом отнесся к выдвинутым ею проблемам, и это не могло не обострить его внимание к более широкому

Для выбора оптимального решения при выполнении задач программирования иногда требуется перебирать большое количество комбинаций данных, что нагружает память персонального компьютера. К таким методам относится, например, метод программирования «разделяй и властвуй». В данном случае алгоритмом предусмотрено разделение задачи на отдельные мелкие подзадачи. Такой метод применяется только в тех случаях, когда мелкие подзадачи независимы между собой. Для того чтобы избежать выполнения лишней работы в том случае, если подзадачи взаимозависимы, используется метод динамического программирования, предложенный американцем Р.Беллманом в 50-х годах.

Суть метода

Динамическое программирование заключается в определении оптимального решения n-мерной задачи, разделяя ее n отдельных этапов. Каждый из них является подзадачей по отношению к одной переменной.

Основным преимуществом такого подхода можно считать то, что разработчики занимаются одномерными оптимизационными задачами подзадач вместо n-мерной задачи, а решение главной задачи собирается «снизу вверх».

Целесообразно применять динамическое программирование в тех случаях, когда подзадачи взаимосвязаны, т.е. имеют общие модули. Алгоритмом предусмотрено решение каждой из подзадач один раз, и сохранение ответов выполняется в специальной таблице. Это дает возможность не вычислять ответ заново при встрече с аналогичной подзадачей.

Задача динамического программирования оптимизации. Автором этого метода Р. Беллманом был сформулирован принцип оптимальности: каким бы ни являлось начальное состояние на каждом из шагов и решение, определенное на этом шаге, все следующие выбираются оптимальными по отношению к тому состоянию, которое принимает система в конце шага.

Метод усовершенствует выполнение задач, решаемых с помощью перебора вариантов или рекурсий.

Построение алгоритма задачи

Динамическое программирование предполагает построение такого алгоритма задач, при котором задача так разбивается на две или больше подзадач, чтобы ее решение складывалось из оптимального решения всех подзадач, входящих в нее. Далее возникает необходимость в написании рекуррентного соотношения и вычислении оптимального значения параметра для задачи в целом.

Иногда на 3-м шаге нужно дополнительно запоминать некоторую вспомогательную информацию о ходе выполнения каждой подзадачи. Это называется обратным ходом.

Применение метода

Динамическое программирование применяется при наличии двух характерных признаков:

  • оптимальность для подзадач;
  • наличие в задаче перекрывающихся подзадач.

Решая методом динамического программирования, сначала необходимо описать структуру решения. Задача обладает оптимальностью, если решение задачи складывается из оптимальных решений ее подзадач. В этом случае целесообразно использовать динамическое программирование.

Второе свойство задачи, существенное при данном методе, - небольшое число подзадач. Рекурсивное решение задачи использует одни и те же перекрывающиеся подзадачи, количество которых зависит от размера исходной информации. Ответ хранится в специальной таблице, программа экономит время, пользуясь этими данными.

Особенно эффективно применение динамического программирования тогда, когда по существу задачи нужно принимать решения поэтапно. Например, рассмотрим простой пример задачи замены и ремонта оборудования. Допустим, на литейной машине завода по изготовлению шин делают одновременно шины в двух разных формах. В том случае, если одна из форм выходит из строя, приходится машину разбирать. Понятно, что иногда выгоднее заменить и вторую форму для того, чтобы не разбирать машину на случай, если и эта форма окажется неработоспособной на следующем этапе. Тем более, бывает проще заменить обе работающие формы до того, как они начнут выходить из строя. Метод динамического программирования определяет наилучшую стратегию в вопросе о замене таких форм, учитывая все факторы: выгоду от продолжения эксплуатации форм, потери от простоя машины, стоимость забракованных шин и другое.

Для развития трех торговых предприятий выделено 4 млн. руб. Известна эффективность капитальных вложений в каждое предприятие, заданное значением нелинейной функции? k (x k). Требуется составить оптимальный план распределения капитальных вложений между предприятиями. Предполагается, что распределение денежных средств проводится в целых числах x k , x k = 0, 1, 2, 3, 4.

Исходные данные.

Используя метод динамического программирования, решаем задачу с помощью сервиса распределение денежных средств .

I этап. Условная оптимизация.

1-ый шаг. k = 3.

2-ый шаг. k = 2.

3-ый шаг. k = 1.

Поясним построение таблиц и последовательность проведения расчетов.

Столбцы 1, 2 и 3 для всех трех таблиц одинаковы, поэтому их можно было бы сделать общими. Столбец 4 заполняется на основе исходных данных о функциях дохода, значения в столбце 5 берутся из столбца 7 предыдущей таблицы, столбец 6 заполняется суммой значений столбцов 4 и 5 (в таблице 3-го шага столбцы 5 и 6 отсутствуют).

В столбце 7 записывается максимальное значение предыдущего столбца для фиксированного начального состояния, и в 8 столбце записывается управление из 2 столбца, на котором достигается максимум в 7.

Этап II. Безусловная оптимизация.

Из таблицы 3-го шага имеем F* 3 (e 0 = 4) = 7.6. То есть максимальный доход всей системы при количестве средств e 0 = 4 равен 7.6 млн. руб.

Из этой же таблицы получаем, что первому торговому предприятию следует выделить u* 1 (e 0 = 4) = 1

Из таблицы 2-го шага имеем F* 2 (e 1 = 3) = 4.5. То есть максимальный доход всей системы при количестве средств e 1 = 3 равен 4.5 млн. руб.

Из этой же таблицы получаем, что второму торговому предприятию следует выделить u* 2 (e 1 = 3) = 2

При этом остаток средств составит:

Последнему торговому предприятию достается 1 млн. руб..

Таким образом, применив метод динамического программирования, мы нашли, что капитальные вложения в размере 4 млн. руб. необходимо распределить следующим образом:

1-му торговому предприятию выделить 1;

2-му торговому предприятию выделить 2;

3-му торговому предприятию выделить 1;

Что обеспечит максимальный доход, равный 7.6 млн. руб.