Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект по ММТС.doc
Скачиваний:
6
Добавлен:
01.03.2025
Размер:
3.59 Mб
Скачать

3.7. Одномерная задача динамического программирования

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

Необходимо оптимальным образом распределить ресурс в объеме xo по n вариантам (объектам, схемам, этапам) при целевой функции

и ограничениях

,

где xi – объем ресурса, назначаемый по i-му варианту (0 xi xо);

f(x)– нелинейная функция, определяющая эффект (затраты) в зависимости от значений x;

n – общее число вариантов; xобщ – общий объем распределяемого ресурса.

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

Обозначим через xci – количество ресурса, назначаемого суммарно по i-му варианту и всем предыдущим вариантам. При этом объем ресурса по предыдущим вариантам распределен оптимально исходя из минимума затрат или максимума эффекта.

Тогда целевая функция Zi при рассмотрении i-го этапа решения определяется по выражению

Zi(xci, xi )= fi(xi) + f* i-1 (xci - xi ),

где 0 xсi xобщ при i  n-1 и xсi= xобщ при i = n;

f*i-1 – функция, определяющая эффект (затраты) оптимальным образом по предыдущим вариантам в зависимости от объема ресурса xci-1;

Значение f*i определяется по Zi :

для i =1 (xc1=x1);

, .

Определение и соответствующих им при данном xсi производятся поэтапно от i=2 до i=n.

По окончательному результату поэтапных расчетов формируется оптимальное решение {xоi}:

xоi= (для i = n);

xоi = при (для );

(для i=1).

Вариант алгоритма решения однопродуктовой задачи динамического программирования приведен на рисунке 3.24. Решение предусмотрено для целевой функции, подлежащей оптимизации на максимум. Для решения задачи на минимум необходимо ввести исходные значения sвji с отрицательным знаком или внести изменения в блоках 12 (заменить 1E+12 на -1E+12) и 15 (условие < на >).

Выводимые j, kjidx , snm представляют соответственно номер варианта, объем ресурса по варианту и значение целевой функции для оптимального решения.

Пример. Банковский кредит может быть использован по 4-м вариантам (n=4). Общий объем кредита xобщ = 800 тыс.ед. Дискретность распределения кредита по вариантам использования dx = 200 тыс.ед. Зависимость эффекта по вариантам использования кредита нелинейна и задана таблично (таблица 3.11).

Таблица 3.11 – Значения эффектов в зависимости от номера варианта i и объема ресурса x

Номер

варианта i

Эффект fi (x ) при объемах использования кредита x

x=0

x=200

x=400

x=600

x=800

1

0

12

21

31

37

2

0

11

22

32

40

3

0

9

20

31

38

4

0

11

21

30

39

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

1

Пуск

2

Ввод n, xoбщ, dx n – число вариантов распределения ресурса

xoбщ – общий объем ресурса

dx – дискретность распределения ресурса

3

m = xoбщ/ dx m – число разбиений ресурса

4

sвji, ; sвji – эффект (затраты) по j-му варианту

при объеме использования ресурса xi

5 6

s1i = sв1i

k1i = i

7

8 Да 9 10

Нет

r = m j = n r = 1

11

17

r = m

12 18

p = 1E+12

13

16 19

sji =cl : kji =l; p = cl Вывод j, kjrdx

Да

Нет 15 14 20

cl < p cl =sвjl + sj-1, i-l r = r - kjr

21

Вывод snm

Рисунок 3.24 – Алгоритм решения однопродуктовой задачи

динамического программирования 22

Останов

РЕШЕНИЕ.

Имеем целевую функцию = max;

ограничения xобщ = x1 + x2+ x3 + x4 = 800; 0 xi xобщ,

а также – для одного первого варианта.

На втором этапе (i=2) рассматриваем одновременно распределение ресурса для первого и второго варианта. Результаты расчетов сводим в таблицу 3.12. Значком (*) отмечен столбец, соответствующий оптимальному значению при данном xci.

Таблица 3.12 – Расчет при i=2

xci

200

400

600

800

xi

0

200

0

200

400

0

200

400

600

0

200

400

600

800

xci - xi

200

0

400

200

0

600

400

200

0

800

600

400

200

0

0

11

0

11

22

0

11

22

32

0

11

22

32

40

12

0

21

12

0

31

21

12

0

37

31

21

12

0

+

12*

11

21

23*

22

31

32

34*

32

37

44*

43

44*

40

12

23

34

44

На третьем этапе (таблица 3.13) решения рассматриваются одновременно оптимальный вариант по 1-му и 2-му вариантам совместно с третьим вариантом ( i=3).

Таблица 3.13 – Расчет при i=3

xci

200

400

600

800

xi

0

200

0

200

400

0

200

400

600

0

200

400

600

800

xci - xi

200

0

400

200

0

600

400

200

0

800

600

400

200

0

0

9

0

9

20

0

9

20

31

0

9

20

31

38

12

0

23

12

0

34

23

12

0

44

34

23

12

0

+

12*

9

23*

21

20

34*

32

32

31

44*

43

43

43

38

12

23

34

44

Переходим к последнему этапу ( i=4). При этом xсi = xо (таблица 3.14).

Исходя из результатов выполнения последнего этапа расчетов следует, что кредит можно использовать с максимальным эффектом, равных 45 тыс.ед., при этом, хо4 = 200 тыс.ед.

Тогда на 3-й и все предыдущие варианты остается 600 тыс.ед. Оптимальный объем использования кредита по 3-му варианту, как следует из этапа 3 решения, при xс i = 600 равен xо3 = 0;

на 2-й и все предыдущие остается по прежнему 800-200-0=600. Оптимальный объем использования кредита по 2-му варианту, как следует из этапа 2 решения, при xс i = 600 равен xо2 = 400.

Таблица 3.14 – Расчет при i=4

xci

800

xi

0

200

400

600

800

xci - xi

800

600

400

200

0

0

11

21

30

39

44

34

23

12

0

+

44

45*

44

42

39

45



Оптимальный объем кредита к использованию по первому варианту определяется как остаток xо1 =800-200-0-400 = 200.

Ответ: Оптимальное распределение кредита по вариантам использования следующее:

1-й – 200 тыс.ед; 2-й – 400 тыс.ед., 3-й – 0 тыс.ед; 4-й – 200 тыс.ед.