Файл: Индивидуальная практическая работа Динамическое программирование.docx

ВУЗ: Не указан

Категория: Решение задач

Дисциплина: Не указана

Добавлен: 05.12.2023

Просмотров: 87

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.




Рис. 2.1
Уравнения состояний в данной задаче имеют вид k = k–1 xk, k=1, 2, 3, 4, где k – параметр состояния – количество средств, оставшихся после k–го шага, т.е. средства, которые остается распределить между оставшимися 4k предприятиями.

Zk*(k–1) – условная оптимальная прибыть, полученная от k–го, (k+1)–го, …, 4 предприятий, если между ними оптимальным образом распределялись средства k–1. Допустимые управления на k–м шаге удовлетворяют условию 0 хkk–1.

Уравнения Беллмана имеют вид:

к = 4, 4=0 Z4*(3)=max f4(x4), 0 x43;

Z3*(2)=max {f3(x3) + Z4*(3)}, 0 x32;

Z2*(1)=max {f2(x2) + Z3*(2)}, 0 x21;

Z1*(5)=max {f1(x1) + Z2*(1)}, 0 x3 5.

4 шаг (k = 4). В табл. 2.1 f4(x) прибыли монотонно возрастают, поэтому все средства, оставшиеся к IV шагу, следует вложить в 4–е предприятие. Для возможных значений 3 = 0, 1, 2, 3, 4, 5 получим Z4*(3)=f4(3) и x4*(3)=3.
Таблица 2.2


k–1

xk

k

k=3

k=2

k=1










f3(x3)+

Z4*(3)

Z3*(2)

x3*(2)

f2(x2)+

Z3*(2)

Z2*(1)

x2*(1)

f1(x1)+

Z2*(1)

Z1*(0)

x1*(0)

1

2

3

4

5

6

7

8

9

10

11

12

0

0

0

0

0

0

0

0

0

0

0

0

1

0

1

1

0

0+4=4

3+0=3

4

0

0+4=4

6+0=6


6


1

0+6=6

8+0=8


8


1

2

0

1

2

2

1

0

0+6=6

3+4=7

4+0=4


7


1

0+7=7

6+4=10

9+0=9


10


1

0+10=10

8+6=14

10+0=10


14



1

3

0

1

2

3

3

2

1

0

0+8=8

3+6=9

4+4=8

7+0=7


9


1

0+9=9

6+7=13

9+4=13

11+0=11


13


1

2

0+13=13

8+10=18

10+6=16

11+0=11


18


1

4

0

1

2

3

4

4

3

2

1

0

0+13=13

3+8=12

4+6=10

7+4=11

11+0=11

13

0

0+13=13

6+9=15

9+7=16

11+4=15

13+0=13



16



2

0+16=16

8+13=21

10+10=20

11+6=17

12+0=12


21


1

5

0

1

2

3

4

5

5

4

3

2

1

0

0+16=16

3+13=16

4+8=12

7+6=13

11+4=16

18+0=18


18


5

0+18=18

6+13=19

9+9=18

11+7=18

13+4=17

15+0=15


19


1

0+19=19

8+16=24

10+13=23

11+10=21

12+6=18

18+0=18


24



1



3 шаг (k = 3). Делаем все предположения относительно остатка средств 2 к 3 шагу, т.е. после выбора x1 и x2. 2 = 0, 1, 2, 3, 4, 5 (0 – все средства отданы 1 и 2–му предприятиям, 5 – 1–е и 2–е предприятия ничего не получили и т.д.) В зависимости от этого выбираем 0 x32, находим 3=2 x3и сравниваем для разных x3при фиксированном 2 значения суммы f3(x3)+Z4*(3). Для каждого 2наибольшее из этих значений есть Z3*(2) – условная оптимальная прибыль, полученная при оптимальном распределении 2 между 3–м и 4–м предприятиями. Оптимизация приведена в табл. 6.2 при k = 3.

2 шаг. Условный оптимум приведен в той же таблице и для k = 2. Для всех возможных значений 2значения Z2*(1) и Х2*(1) находятся в столбцах 8 и 9 соответственно; первые слагаемые в столбце 7 – значения f2(x2) взяты из табл. 6.2, а вторые слагаемые взяты из столбца 5 табл. 6.2 при 2=1x2.

1 шаг. Условный оптимум приведен и для k = 1 при 0 = 5.

Итак, максимум суммарной прибыли Zmax=Z1*(5)=24 у. е. при

x1*=x1*(5)=1

 1*=51=4 x2*=x2*(4)=2

 2*=42=2 x3*=x3*(2)=1

 3*=21=1 x4*=x4*(1)=3*=1.

Выделение средств различным предприятиям:

1–му выделена 1 у. е.

2–му выделены 2 у. е.

3–му выделена 1 у. е.

4–му выделена 1 у. е.

Замечания.

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

Из разобранной задачи видно, что метод ДП безразличен к виду и способу задания функции: fk(x) были заданы таблично, поэтому Zk*() и Хk*() принимали дискретные значения, представленные в таблице.

Достоинством метода является возможность анализа решения на чувствительность к изменению 0

и n. Проведенные расчеты можно использовать для изменившихся начального состояния 0 и числа шагов n. Например, пусть в задаче произошло уменьшение начальных средств на 1 у.е. Для 0 = 4 достаточно в таблицу добавить расчеты при k= 1. Получаем в этом случае Zmax = 21 у.е. при распределении:

x1*=11*=41=3 x2*=1, или x2*=2

2*=31=2, или 2*=32=1 x3*=1, или x3*=0

3*=2–1=1, или3*=1–0=1, x4*=1.

В результате найдены два оптимальных решения: (1,1,1,1) и (1,2,0,1). Если начальные средства увеличились, например, на 1 у.е., 0 = 6, а функции прибыли fk(x) остались прежними, то в таблицу достаточно добавить раздел для 0 = 6 при k= 3, 2, 1; этот фрагмент расчетов помещен в табл. 2.3.

Таблица 2.3




6

0

1

2

3

4

5

6

5

4

3

2

1

0+0=0

3+16=19

4+13=17

7+8=15

11+6=17

18+4=22



22



5

0+22=22

6+18=24

9+13=22

11+9=20

13+7=20

15+4=19



24



1

0+24=24

8+19=27

10+16=26

11+13=24

12+10=22

18+6=24



27




1


Получаем Zmax=27 у.е. при распределении:

x1*=11*=6–1=5 x2*=12*=5–1=4 x3*=0 3*=4–0=4 x4*=4.

Оптимальное решение (1,1,0,4).

Если принято решение распределить средства 0 = 5 между 2–, 3– и 4–м предприятиями, то задача уже решена. В разделе k= 2 табл. 6.2 находим Zmax=Z2*(5)=19 при условии, что x2*=1, x3*=0, x4*=4.

Наконец, если увеличилось количество предприятий (число шагов), то схему можно дополнить, присоединяя шаги с номерами k= 0,–1,… и т.д. Например, пусть средства в размере 6 у.е. распределяются между пятью предприятиями. Функция прибыли для пятого предприятия задана формулой f(x) = 3x+1, если х   и f(0) = 0. Присвоим 5–му предприятию номер
k= 0, тогда х0 = 0 – средства, выделенные этому предприятию. Обозначим через Z0*(6) оптимальную прибыль, полученную от пяти предприятий:

Z0*(6)= Z3*(2)=max {f0(x0) + Z1*(1)}, 0 x0 6,

а 1= 6 – х0. Условная оптимизация 0–го шага дана в табл. 2.4.

Таблица 2.4


x0

0

1

2

3

4

5

6

1= 6 – х0

6

5

4

3

2

1

0

f(0) = 0

0

4

7

10

13

16

19

Z1*(1)(приk=1)

27

24

21

18

14

8

0

f(x0) + Z1(1)

27

28

28

28

27

24

19


Следовательно, Zmax=28, а оптимальных решений четыре: (1,1,2,1,1), (2,1,1,1,1), (2,1,2,0,1), (3,1,1,0,1). ▼


    1. 2.2. Задача об оптимальном распределении ресурсов между отраслями

на n лет
Планируется деятельность двух отраслей производства на n лет. Начальные ресурсы 0. Средства х, вложенные в 1–ю отрасль в начале года, дают в конце года прибыль f1(x) и возвращаются в размере q1(x) аналогично для 2–й отрасли функция прибыли равна f2(x), а возврата — q2(x) (q2(x) В конце года все возвращенные средства заново перераспределяются между 1 и 2 отраслями, новые средства не поступают, прибыль в производство не вкладывается.

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

Необходимо:

  1. построить модель ДП для задачи и вычислительную схему;

  2. решить задачу при условии, что 0 = 10000 у.е., n = 4, f1(x) = 0,6x, q1(x) = 0,7x, f2(x) = 0,5x, q2(x) = 0,8x.



Решение. Процесс распределения средств между двумя отраслями производства разворачивается во времени, решения принимаются в начале каждого года, следовательно, осуществляется деление на шаги: номер шага – номер года. Управляемая система – две отрасли производства, а управление состоит в выделении средств каждой отрасли в очередном году. Параметры состояния к началу k–го года — k–1 (k = 1,…,n) – количество средств, подлежащих распределению. Переменных управления на каждом шаге две: хk — количество средств, выделенных 1 отрасли, и yk — 2 отрасли. Но так как все средства k–1 распределяются, то уk = k–1 – xk, и поэтому управление на k–м шаге зависит от одной переменной xn, т.е. Хk k, k–1 – xk).

Уравнения состояний выражают остаток средств, возвращенных в конце k–го года k = q1(xk) + q2(k–1 – xk).

Показатель эффективности k–го шага — прибыль, полученная в конце k–го года от обеих отраслей: f1(xk) + f2(k–1 – xk).

Суммарный показатель эффективности — целевая функция задачи — прибыль за n лет: Z = + f2(k-1 - xk).

Пусть Z*k(k–1) — условная оптимальная прибыль за n – k + 1 лет, начиная с k–го года до n–го года включительно, при условии, что имеющиеся на начало k–го года средства k–1 в дальнейшем распределялись оптимально. Тогда оптимальная прибыль за n лет Zmax = Z*1(0).

Уравнения Беллмана имеют вид:

Z*n(n–1) = max {f1(xn) + f2(n–1 – хn)},0 хnn–1;

Z*k(k–1) = max {f1(xk) + f2(k–1 – хk) + Z*k+1(k)} , 0 хkk–1,

(k = n–1, n–2, …, 2).

Используем конкретные данные.

Уравнение состояний примет вид

k = 0,7xk + 0,8(k–1 – xk) или k = 0,8k–1 –0,1xk.

Целевая функция k–го шага 0,6xk + 0,5(k–1 – xk) = 0,1xk + 0,5k–1.

Целевая функция задачи Z = + 0,1xk..

Z*4(3) = max {0,53 + 0,1x4} 0 х43;

Z*k(k–1) = max {0,1xk + 0,5k–1 + Z*k+1(k)}, 0 хkk–1.



Проводим условную оптимизацию.




4 шаг. Используем уравнение Z*4(3) = max {0,53 + 0,1x4},0 х43. Обозначим Z4 = 0,1х4 + 0,53; Z4 линейная, возрастающая, так как угловой коэффициент 0,1 больше нуля. Поэтому максимум достигается на конце интервала [0;3]. Следовательно, Z*4(3)= 0,63 при х*4(3)= 3.

3 шаг. Уравнение Z*3(2) = max {0,1x3 + 0,52 + 0,63}, 0 х32.

Найдем 3 из уравнений состояний: 3 = 0,82 – 0,1x3 и, подставив его выражение в правую часть уравнения, получим

Z*3(2) = max {0,1x3 + 0,52 + 0,6(0,82 – 0,1x3)} = max {0,04x3 + 0,982}, 0 х32.

Как и в предыдущем случае, максимум достигается при х3=2; т.е. Z*3(2)= 1,022 при х*3(2)= 2.



2 шаг. Из уравнения состояния: 2 = 0,81 – 0,1x2. Уравнение при k=2 примет вид Z*2(1) = max {1,3161 – 0,002x2}, 0 х21. Линейная функция Z*2 = 1,3161 – 0,002x2 относительно х2 убывает на отрезке [0;1], и поэтому ее максимум достигается при х2=0: Z*2(1)= 1,3161 при х*2(1)= 0.


1 шаг. 1 = 0,81 – 0,1x1. Уравнение при k=1 имеет вид

Z*1(0) = max {1,55280 – 0,031x1}, 0 х10.

Как и в предыдущем случае, максимум достигается в начале отрезка, т.е. Z*1(0)= 1,55280 при х*1(0)= 0.

На этом условная оптимизация заканчивается. Используя ее результат и исходные данные, получим Zmax = Z*1(10000), Zmax = 15528.

х*1 = 0, у*1 = 0 = 10000

*1 = 0,8*10000 –0,1*0 = 8000 х*2 = 0, у*2 = 8000

*2 = 0,8*8000 –0,1*0 = 6400 х*3 = 6400, у*3 =0

*3 = 0,8*6400 –0,1*6400 = 4480 х*4 = 4480, у*4 =0.

Оптимальная прибыль за 4 года, полученная от двух отраслей производства при начальных средствах 10000 у.е., равна 15528 у.е. при условии, что 1 отрасль получает по годам (0;0;6400;4480), а 2 отрасль – соответственно (10000;8000;0;0).