Двухпараметрические задачи

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

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

В значительной мере эти трудности можно преодолеть, применяя метод динамического программирования с использованием множеств Парето.

Рассмотрим две двухпараметрические задачи и покажем как их можно решить с помощью этого метода.

Эти задачи рассматривались различными авторами [4,29], которые предлагали использовать для их решения классический алгоритм динамического программирования.

Задача о загрузке транспортных средств

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

Найти

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

Cj - стоимость i-ro предмета,

V,- - объем i-ro предмета,

Wj- вес i-ro предмета,

kj - количество взятых предметов i-ro типа,

V,W - максимально возможная вместительность и грузоподъемность соответственно. Неизвестными являются kt.

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

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

Состояние i на шаге t можно представить как пару: (Vti. Wti), где Vti - накопленный объем за t шагов,

Wt i- накопленный вес за t шагов.

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

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

В общем случае на шаге t имеем следующий алгоритм. Рассматриваем все состояния на шаге t-1 и решаем вопрос о взятии предмета nt. Если оказывается, что несколько состояний на t-1-ом шаге приводят в одно и то же состояние на шаге t, то необходимо оставить тот путь, который приводит в данное состояние с максимальным значением целевой функции, а все остальные исключить. Перед тем как запомнить состояние его необходимо проверить. Пусть на t шаге имеется два состояния A(Vti, Wti) и B(Vt2,Wt2). «А» - рассматриваемое состояние, «В» - состояние из множества допустимых состояний на шаге t. Согласно новому принципу отбраковки состояний возможны следующие ситуации (значения целевой функции для текущего состояния обозначены Ft,):

Предполагается, что в каждом случае хотя бы одно из неравенств выполняется строго. Состояния A(Vti, Wti) и B(Vt2, Wt2) входят в множество Парето. Нельзя удалить ни одно состояние.

Состояние A(Vti, Wti) не эффективно по Парето и должно быть отбраковано.

Состояние B(Vt2, Wt2) не эффективно по Парето и должно быть отбраковано.

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

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

Таблица 4.3. Исходные данные для решения задачи

Предметы

Транспортное средство

Предмет

Вес

Объем

Стоимость

Г рузоподъемность

Вместительность

1

п,

31

83

11

600

500

2

п2

45

18

96

3

Пз

86

49

27

4

П4

97

59

72

5

п5

22

9

61

6

Пб

89

22

38

7

П7

54

20

60

8

п8

91

86

87

9

П9

10

49

72

10

Ию

80

85

20

11

Пи

50

96

94

12

П12

35

11

80

13

П|з

96

62

9

14

Пн

12

13

35

15

П|5

37

9

38

16

Пн

67

65

62

17

П|7

52

74

1

18

П,8

96

89

9

19

П19

35

48

59

20

П20

75

70

90

21

П21

84

35

42

22

П22

91

23

66

23

П23

80

91

68

24

П24

48

72

16

25

П25

79

34

38

26

П26

65

33

41

27

П27

43

37

61

28

П28

59

43

34

29

П29

16

17

83

30

Изо

57

22

93

Эффективность нового алгоритма решения двухпараметрических задач распределения ресурса оценивалась в сравнении с классическим алгоритмом Веллмана. Последовательно увеличивалось число предметов, при фиксированной грузоподъемности и вместительности. Исходные данные представлены в таблице 4.3, а результаты в таблице 4.4.

Таблица 4.4. Результаты расчётов

Количество

предметов

(шт.)

Динамическое программирование (метод Беллмана)

Динамическое программирование на множествах Парето (новый алгоритм)

Число состояний

Время счета (сек.)

Число состояний

Время счета (сек.)

3

303

0,02

61

0,05

4

865

0,03

88

0,06

5

1316

0,14

116

0,14

6

5264

0,59

144

0,20

7

15689

3,04

172

0,23

8

18961

6,63

201

0,25

9

21454

8,67

423

0,27

10

23514

11,02

646

0,30

11

28621

14,03

869

0,33

12

32013

17,81

1967

0,53

13

58214

22,64

3065

0,84

14

86213

28,78

6216

3,65

15

107501

36,59

8270

7,91

16

160640

46,52

10040

8,86

17

212562

59,14

11809

9,72

18

283504

75,18

13578

10,28

19

352981

95,58

15347

11,56

20

479248

121,51

17116

12,23

21

547665

154,47

18885

13,12

22

618956

196,37

20654

14,02

23

717536

249,63

22423

14,79

24

774144

317,34

24192

15,52

25

856713

403,43

25961

16,44

26

970552

512,85

27730

17,57

27

1115954

651,97

29499

19,01

28

1250720

828,82

31268

20,05

29

1622112

1053,63

33794

23,53

30

1816000

1339,43

36320

25,30

Вычисления производились на персональном компьютере с процессором Intel Core 2 DUO 2400 МГц и оперативной памятью 2048 МБ.

По данным таблицы 4.4 видно, что новый алгоритм эффективнее классического алгоритма Веллмана. С ростом количества предметов растет и число состояний системы. Рост числа состояний присущ обоим алгоритмам, однако для алгоритма динамического программирования с использованием множеств Парето этот рост более медленный, и уже при числе предметов N= 30 количества состояний отличаются в 50 раз. Соответственно и время решения задачи различное, в зависимости от выбранного алгоритма решения. Так при использовании динамического программирования с использованием множеств Парето для числа предметов N=30 время решения составляет 25,3 секунды, что почти в 54 раза меньше, чем при решении той же задачи классическим алгоритмом.

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

При большем числе предметов были получены следующие результаты (таблица 4.5):

Таблица 4.5. Результаты расчётов. Продолжение

Количество пред- мстов (шт.)

Динамическое программирование (метод Веллмана)

Динамическое программирование на множествах Парето (новый алгоритм)

Число состояний

Время счета (сек.)

Число состояний

Время счета (сек.)

50

7409484

7314,21

145284

138,97

75

10589540

8580,46

203645

156,80

100

13871196

10773,10

256874

189,52

150

21588545

13108,23

392519

226,65

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >