Динамическое программирование

Автор: Пользователь скрыл имя, 25 Января 2012 в 15:10, курсовая работа

Описание работы

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

Содержание

Введение 3
1. Динамическое программирование 5
1.1 Задача динамического программирования 5
1.2 Общая структура динамического программирования 8
2. Задача о загрузке. Общие сведения 10
3. Практическая часть. Задача 12
Заключение 19
Список литературы 21

Работа содержит 1 файл

Мат.методы.doc

— 159.50 Кб (Скачать)

    Максимизировать z=r1m1+r2m2+…+rnmn.

    при условии, что

    w1m1+w2m2+…+wnmn

W,

    m1,m2,…,mn

0 и целые.

    Три элемента модели динамического программирования определяются следующим образом:

  1. Этап і ставится в соответствии предмету і-го наименования, і=1,2,…n.
  2. Варианты решения на этапе і описываются количеством mi предметов і-го наименования, подлежащих загрузке. Соответствующая прибыль равна rimi. Значение mi заключено в пределах от 0 до [W/wi], где [W/wi] – целая часть числа W/wi.
  3. Состояние xi на этапе і выражает суммарный вес предметов, решения о погрузке которых приняты на этапах і,і+1,...n. Это определение отражает тот факт, что ограничения по весу является единственным, которое связывает n этапов вместе.

    Пусть fi(xi)-максимальная суммарная прибыль от этапов і,і+1,...,n при заданном состоянии xi. Проще всего рекуррентное уравнение определяется с помощью следующей двухшаговой процедуры.

    Шаг 1. Выразим fi(xi) как функцию fi+1(xi+1) в виде

    

    где fn+1(xn+1)=0.

    Шаг 2. Выразим xi+1 как функцию xi для гарантии того, что левая часть последнего уравнения является функцией лишь xi. По определению xi-xi+1 представляет собой вес, загруженный на этапе і, т.е. xi-xi+1=wimi или xi+1=xi-wimi. Следовательно, рекуррентное уравнение приобретает следующий вид:

    

 

3. Практическая часть. Задача 

      Депутат некоторого округа баллотируется на следующий срок. Денежные средства на предвыборную кампанию составляют примерно 100000 руб. Хотя комитет по переизбранию хотел бы провести кампанию во всех пяти избирательных участках округа, ограниченность денежных средств, предписывает по-другому. Приведенная ниже таблица содержит данные о числе избирателей и денежных средств, необходимых для проведения успешной кампании по каждому избирательному участку. Каждый участок может либо использовать все предназначенные деньги, либо вовсе их не использовать. Как следует распределить денежные средства? 

Участок Число

избирателей, w

Необходимые

средства (руб.), m

1 3100 35000
2 2600 25000
3 3500 40000
4 2800 30000
5 2400 20000
 

      По  условию задачи максимальная сумма  денежных средств на предвыборную кампанию не должна превышать 100000 руб., т.е. M = 100000 руб. Тогда m – необходимые средства по каждому участку, а w – число избирателей.

      Построение экономико-математической модели:

  • число шагов N в данной задаче следует принять равным количеству избирательных участков T, т.е. 5;
  • фазовой переменной x является суммарная масса денежных средств на предвыборную кампанию после каждого шага управления. Ограничение: xi ≤ M;
  • управляющая переменная r может быть равна либо 0 (т.е. участок вовсе не использует предназначенные денежные средства), либо 1 (участок использует все предназначенные деньги);
  • функция процесса xi=fi(xi-1,ri), определяющая закон изменения состояния системы, для данной задачи представляется формулой xi = xi-1 + ri∙mi. Она имеет следующий смысл: суммарная масса денежных средств на предвыборную кампанию xi после шага с номером i равна суммарной массе денежных средств на предвыборную кампанию на предшествующем шаге xi-1 плюс сумма денежных средств на текущем шаге, равная ri∙mi;
  • частный экономический эффект представлен формулой zi=ri∙wi, а целевая функция Z=z1+z2+z3+z4+z5.

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

      В данном курсовом проекте все получаемые при решении задачи таблицы приведены  сразу окончательно заполненными.

      Предварительный этап. Данный этап проводится в естественном порядке для i=1,2,3,4,5, причем заполняются только первая строка вспомогательной таблицы и четыре левых столбца основной таблицы. Заполнение второй строки вспомогательной таблицы и оставшихся столбцов основной таблицы производится на этапе условной оптимизации. B0(x0) выражает максимальное значение сумм частных целевых функций на шагах от 1 до 5. Эта функция вычисляется с учетом функции B1(x1), которая является максимальным значением сумм частных целевых функций на шагах от 2 до 5 и т.д.

      i = 1. 
 

      Вспомогательная таблица соответствует начальному условию x0=0 и имеет вид: 

      Таблица 3.1

Вспомогательная таблица на шаге 1 

x0 0
B0(x0) 9200
 

      Заполнение  основной таблицы проводится обычным образом. Для заданного единственного допустимого значения x0=0 выбираются все возможные значения управления r1 и заносятся во второй столбец таблицы. При этом r1 может принимать только значения 1 или 0. По формулам, приведенным выше, проводится расчет соответствующих значений переменных x1 и z1. Они заносятся в третий и четвертый столбцы. Получается основная таблица. 

      Таблица 3.2

Основная  таблица на шаге 1

x0 r1 x1 z1 B1(x1) z1+B1 B0(x0)
0 0

1

0

35000

0

3100

8900

6100

8900

9200

9200
 

      i = 2.

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

      Таблица 3.3

Вспомогательная таблица на шаге 2

x1 0 35000
B1(x1) 8900 6100
 

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

      Таблица 3.4

Основная  таблица на шаге 2

x1 r2 x2 z2 B2(x2) z2+B2 B1(x1)
0 0

1

0

25000

0

2600

8700

6300

8700

8900

8900
35000 0

1

35000

60000

0

2600

5900

3500

5900

6100

6100
 

      Аналогичные расчеты производятся на остальных  этапах решения.

      i = 3. 
 
 

      Таблица 3.5

Вспомогательная таблица на шаге 3

x2 0 25000 35000 60000
B2(x2) 8700 6300 5900 3500
 
 
 

      Таблица 3.6

Основная  таблица на шаге 3

x2 r3 x3 z3 B3(x3) z3+B3 B2(x2)
0 0

1

0

40000

0

3500

5200

5200

5200

8700

8700
25000 0

1

25000

65000

0

35000

5200

2800

5200

6300

6300
35000 0

1

35000

75000

0

3500

5200

2400

5200

5900

5900
60000 0

1

60000

100000

0

3500

2800

0

2800

3500

3500

Информация о работе Динамическое программирование