Обратный метод динамического программирования

20 Динамическое программирование. Рекуррентные алгоритмы прямой и обратной прогонки.

ДП находит оптим решение n-мерной задачи путем декомпозиции на n этапов, каждый из котор сосотав задачу от 1 переменной. Эти задачи долж быть связаны между собой общим условием. Вычисления выполняются рекурентно. Решени первой подзадачи явл иходными данными для 2-й. Решив последнюю получим оптим решение.

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

2. Определить на каждом этапе вариантов решения (альтернатив).

3. Определить состояния на каждом этапе.

Два метода: прямой и обрат прогонки.

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

Как привило в задачах ДП используется алгоритм обратной погонки.Постановка задачи динамического программирования

21 Здача о загрузке.

Максимизиров z=sum(i)r(i)m(i), sum(i)w(i)m(i)=0 и целые

1. Этап — предмет i наименования

2. Варианты решения описываются количеством mi в диапазоне [0,W/wi]

3. Состояние — суммарный вес.

22 Задача планирования рабочей силы

n недель, b рабочих на каждой неделе, c1(x-b) — затраты на содержание c2(x(i)-x(i-1)) — затраты найма

3. Сотояние — x работающих на недели

23 Задача замены оборудования

n лет, r(t) прибыль, c(t) затраты на обслуж, s(t) стоимость аппарата t летнего, I стоимость нового.

2.Варианты — заменить, оставить

3.Состояние — t(возраст) механизма

n лет, P1. Pn — инвестирования, r1, r2 — проуент 2 банков, При вложения выдаются премиальные q1i, q2i

si- сумма накопленная к концу i года

2. Варианты — суммы I1 I2 вкладыв в 1 и 2 банк.

3. Состояние — xi сумма дене которые можно вложить.(I1=xi-I2)

24. Обобщённая модель управления запасами.

Природа задчи управ запас определяется неоднократным размещением и получением завасов заданного объема продукции, которая при поступлении носит название хранимый запас. И размещение заказов проход в определенный момент времени.

С этой точки зрения стратегия упраления запасами сводится к вопросам:

1. Какое количество заказывать

Экономический размер заказа явл ответом путм минимиз функции затрат:

-затраты на приобретение (цена может ыть простой и со скидкой)

-затраты на оформление заказа(не завистя от объема заказа — постоянные расходы)

-потери от дефецита(потенциальные потери, субьектив факторы)

25 Классическая задача управления запасами.

-мгновенное пополнение заказа

t0 — продолжительность цикла заказа

Заказ объема у единиц размещается и по-полняется мгновенно, когда уровень запаса равен нулю. Затем запас равномерно расходу-ется с постоянной интенсивностью спроса D. Продолжительность цикла заказа для этого примера равна t0=y/D

Средний уровень запаса определяется соотношением y/2

Оптимальная стратегия: Заказывать y*=Sqrt(2KD/h) через каждые t*=y*/D

Пополнение может быть не мгновенно.Срок выполнения заказа — L.

Пополение, когда уровень опускается до LD единиц.

Если L>t0, то вычисл Le=frac(L/t*)

После п циклов ситуация становится такой же, как если бы интервал между размещением одного заказа и получением другого был равен Le.

Источник

Метод обратной прогонки

Решение:
Задачи динамического программирования решаются методом прямой прогонки и методом обратной прогонки.
Процесс нахождения решения разбивается да две стадии:
условная оптимизация;
безусловная оптимизация.

На стадии условной оптимизации определяются условные оптимальные выигрыши и условные оптимальные управления.
Прямая прогонка: от первого шага к последнему.
Обратная прогонка: от последнего шага к первому.
На стадии безусловной оптимизации строится оптимальное решение исходной задачи и определяется max (min).
Прямая прогонка: от последнего шага к первому.
Обратная прогонка: от первого шага к последнему.

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

Этап II. Безусловная оптимизация.
Из таблицы 1-го шага имеем F*3(e 0 = 120) = 76. То есть максимальный доход всей системы при количестве средств e 0 = 120 равен 76
Из этой же таблицы получаем, что 1-му предприятию следует выделить u*1(e 0 = 120) = 40
При этом остаток средств составит:
e 1 = e 0 — u 1
e 1 = 120 — 40 = 80
Из таблицы 2-го шага имеем F*2(e 1 = 80) = 51. То есть максимальный доход всей системы при количестве средств e 1 = 80 равен 51
Из этой же таблицы получаем, что 2-му предприятию следует выделить u*2(e 1 = 80) = 40
При этом остаток средств составит:
e 2 = e 1 — u 2
e 2 = 80 — 40 = 40
Последнему предприятию достается 40
Итак, инвестиции в размере 120 необходимо распределить следующим образом:
1-му предприятию выделить 40
2-му предприятию выделить 40
3-му предприятию выделить 40
Что обеспечит максимальный доход, равный 76.

Источник

Как реализовать обратный ход динамического программирования

Имеется задача такого содержания: есть n приборов, каждый прибор имеет m реализаций, каждая реализация имеет показатель вероятности отказа и вес. Необходимо найти такое сочетание реализаций приборов для некоторого заданного максимального веса D, при котором вероятность отказа будет минимальной.
Решить надо динамическим программированием.

На картинках показан ход решения. То есть мы складываем имеющиеся реализации, выбираем оптимальный план при каждом сложении, и записываем в некоторую переменную. Это будет прямой ход динамического программирования.
С обратным ходом сложнее. Я знаю, как его реализовать в теории, но на практике не имею представления, как это сделать
Может помочь, кто-нибудь? Желательно примером кода, где реализован обратных ход динамического программирования.

Как реализовать ход шашки
Помогите с кодом, есть такая задача: Есть массив 8х8, вот такой: 02020202 20202020 02020202.

Алгоритм динамического программирования
Подскажите пожалуйста какой алгоритм применяется в динамическом программировании.

Задача методом динамического программирования
Добрый день. Передо мной стоит решение задачи методом динамического программирования (табличный.

Обратный ход в матрице
Дана треугольная матрица. Ax=B. Заполнил матрицу, обнулил элементы под главной диагональю, но как.

Эксперт .NET

Monika94, выглядит интересно, но совсем для меня непонятно. Может у вас есть теория — формулы, алгоритмы в виде текста и т.д.?

Эксперт по электронике

так мысли вслух
если создать двумерный массив, заполнить его значениями
и натравить на него волновой алгоритм?

Теория конечно есть, но это 20 листов текста и формул. Вряд ли кто-то будет разбираться. Да и про обратный ход там ничего нет. Это можно сказать самое основное.
По рисункам: x — номер реализации i-го прибора
q — вероятность отказа
d — вес прибора

Волновой алгоритм подойдет скорее для прямого хода, нежели для обратного, мне кажется.

Торможение двигателя и обратный ход по току
Здравствуйте. Имею коллекторный двигатель постоянного тока. Задача такая: управлять двигателем по.

выполнить «обратный ход» в решении системы уравнений методом Гаусса
Помогите пожалуйста. Нужно выполнить «обратный ход» в решении системы линейных алгебраических.

Источник

Читайте также:  Вероятностное программирование на практике
Оцените статью