Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Посібник_ММУП_2012_спец_дф.doc
Скачиваний:
9
Добавлен:
13.11.2019
Размер:
4.46 Mб
Скачать

Практичні завдання для самостійного опрацювання

Завдання визначення шляху найменшої вартості

Приклад 2.6. Містер М. вирішив відправитися в подорож з пункту 1 у пункт 10 на диліжансі. У бюро подорожей йому показали карту з нанесеною на ній схемою маршрутів руху диліжансів (рис. 2.11).

Рис. 2.11.

Кожний квадрат на схемі зображує один з населених пунктів, які для зручності пронумеровані. Вартість переїзду з пункту і у пункт j позначимо через (значення цих величин для розглянутого прикладу відзначені на схемі).

Потрібно визначити такий шлях з пункту 1 у пункт 10, загальна вартість якого є мінімальною.

Зауважимо, що формально дане завдання може бути представлене у вигляді математичної моделі завдання комбінаторного програмування, однак її особливості дозволяють побудувати наступний алгоритм розв'язку.

Насамперед, відзначимо, що будь-який шлях руху з пункту 1 у пункт 10 включає чотири диліжансові маршрути (або чотири «кроки»).

Далі важливо сформувати наступний принцип для цього завдання.

Принцип оптимальності Беллмана

Яким би не був шлях досягнення деякого пункту, наступні розв'язки повинні належати оптимальній стратегії для частини шляху, що починається із цього пункту.

Таким чином, наприклад, оптимальний шлях з пункту 6 не залежить від того, яким образом мандрівник у нього прибув.

Для використання принципу оптимальності введемо наступні позначення:

– вартість, що відповідає стратегії мінімальних витрат для шляху від пункту i, якщо до кінцевого пункту залишається п кроків;

– розв'язок, що дозволяє дотягтися .

Тут індекс п не тільки дорівнює кількості кроків, що залишилися до кінцевого пункту, але й збігається з номером етапу в процесі розв'язку завдання. Таким чином, починаємо пошук оптимального маршруту від кінцевого пункту, поклавши п = 1.

, :

, :

, ;

, ;

, .

Визначені оптимальні маршрути з пунктів 5, 6, 7 (див. рис. 2.11), від кожного з яких до кінцевого пункту два кроки. На наступному етапі використовуємо ці результати.

, ;

, ;

, .

Тепер відомі оптимальні витрати й маршрути для пунктів 2, 3, 4. Залишилося розглянути останній етап.

, .

Таким чином, визначений оптимальний шлях: 1-3-7-9-10, витрати для якого становлять .

Узагальнюючи даний процес, одержуємо формулу:

, ,

де N – кількість етапів у розв'язку.

Означення. Дана формула називається рекурентним співвідношенням Беллмана. Алгоритм, заснований на застосуванні цієї формули, називається рекурентним алгоритмом. Подібні алгоритми є основним методом динамічного програмування.

Як приклад застосування методів динамічного програмування до планування роботи фірми, розглянемо завдання оптимізації штату підприємства.

Звільнення і найм робітників

Приклад 2.7. Виробництво майже ніколи не буває рівномірно завантаженим внаслідок або сезонності робіт (сільськогосподарські роботи; підприємство по переробці сільськогосподарської продукції), або нерівномірності замовлень продукції у часі і т. п. Задача полягає у визначенні (при найменших витратах) фактичної кількості робітників по місцях і мінімізація підсумкових витрат, пов’язаних з наймом та звільненням робітників і збитками підприємства за n місяців. Функція цілі має вигляд

,

де - додаткові витрати на j-му місяці по найму та звільненню робітників у залежності від їх кількості; - при наймі робітників, тобто якщо ; - при звільненні робітників, тобто якщо ; - додаткові витрати на j-му місяці для виробництва при відхиленні реальної кількості робітників xj від ідеальної кількості робітників тj у сторону збільшення або зменшення; b = 2 – кількість робітників більша за ідеальну кількість, тобто якщо ; b = 7 кількість робітників менша за ідеальну кількість, тобто якщо ; j = 0, 1, 2, ..., п – порядковий номер місяця. При j = 0 нам відома початкова кількість робітників х0 = 3 (табл. 2.8).

Дані по кількості робітників наведені у табл. 2.4.

Таблиця 2.4.

Ідеальна та фактична кількість робітників

Найменування

Кількість робітників по місяцях

j =0

j = 1

j = 2

j = 3

mjідеальна кількість робітників

-

1

3

2

Xj - фактична кількість робітників

Х0 = 3

XI

Х2

X3

Згідно з методом динамічного програмування при відомій початковій кількості робітників (Х0 = 3, j = 0), рішення починається з кінця. Якщо відома кінцева кількість робітників, то розв'язання починається з початку. При двох відомих значеннях кількості робітників задачу можна розв'язувати як у прямому, так і у зворотному напрямках, і результат розрахунків буде однаковим.

Кількість етапів розрахунків дорівнює кількості місяців п = 3. На кожному j-му етапі (j-му місяці):

1. Задаються діапазоном можливої кількості робітників на попередньому (j – 1)-му етапі . Максимальна величина нам невідома, але початково вона приймається як найбільше значення ідеальної кількості робітників плюс 1, тобто для всіх етапів (при необхідності може бути збільшено).

2. Для кожного окремого значення попереднього етапу задаються зростаючою кількістю робітників даного j-го етапу xj = 0, 1, 2, 3, … і враховують підсумкові витрати

,

де fj – витрати даного етапу внаслідок найму або звільнення робітників та відхилення іх кількості від оптимального значення ; – найменші підсумкові витрати наступного (j+1)-го етапу (для кінцевого етапу = 0).

3. Визначають перший мінімум функції , бо ця функція є випуклою по відношенню до xj, після чого збільшення xj на даному етапі припиняємо.

Перейдемо до практичних розрахунків по етапах.

Етап Е3: ; .

1. ;

;

;

.

2. ;

;

;

.

3. ;

;

;

.

4. ;

;

;

.

5. ;

;

;

;

;

.

Як результат розрахунків етапу Е3 отримуємо табл. 2.5.

Таблиця 2.5.

Підсумкові дані E3

хг

x3

0

2

10

1

2

5

2

2

0

3

3

2

4

4

4

Етап Е2:

1. ;

;

;

;

.

2.

;

;

;

.

3.

;

;

;

.

4.

;

;

;

.

5. ;

;

;

;

.

Як результат розрахунків етапу Е2 отримуємо табл. 2.10.

Таблиця 2.6.

Підсумкові дані Е2

х1

x2

0

2; 3

17

1

2; 3

12

2

2; 3

7

3

3

2

4

3

5

Етап Е1:

1.

;

;

;

.

Як результат розрахунків етапу Е1 отримуємо табл. 2.7.

Таблиця 2.7.

Підсумкові дані Е1

x0

x1

3

3

6

Тепер для отримання оптимального рішення переміщуємось у зворотному до розрахунків напрямку з початку у кінець:

  1. Для першого етапу Е1 у табл. 2.5 ми отримали оптимальні (мінімальні) підсумкові витрати = 6 при фактичній кількості робітників .

  2. Для другого етапу Е2 у табл. 2.6 кількості робітників на першому етапі відповідає оптимальна кількість робітників другого етапу , тобто кількість робітників не змінюється.

3. Для третього етапу ЕЗ у табл. 2.7 кількості робітників на другому етапі відповідає оптимальна кількість робітників , тобто кількість робітників не змінюється.

Таким чином, кількість робітників на всіх трьох етапах не змінюється, а мінімальні витрати при цьому досягають = 6.

Перевіримо ці дані розрахунком:

{Витрати етапу Е1 при }

{Витрати етапу Е2 при }

{Витрати етапу ЕЗ при }

= 6. {Підсумкові витрати}

Питання для самоконтролю

  1. У чому полягає принцип динамічного програмування?

  2. Сформулюйте принцип оптимальності Беллмана?

Бібліографічний список до теми

[1], [2], [3], [4], [5], [6], [7].