Зміст
Введення
1. Основні поняття
1.1. Модель динамічного програмування
1.2. Принцип оптимальності. Рівняння Беллмана
2. Оптимальний розподіл ресурсів
2.1 Постановка завдання
2.2 Двовимірна модель розподілу ресурсів
2.3 Дискретна динамічна модель оптимального розподілу ресурсів
2.4 Облік післядії в задачах оптимального розподілу ресурсів
Висновок
Список використаних джерел
Додаток 1. Лістинг програми для вирішення задачі оптимального розподілу ресурсів із заданими параметрами. Результати роботи програми
Введення
Протягом всієї своєї історії люди при необхідності приймати рішення вдавалися до складних ритуалів. Вони влаштовували урочисті церемонії, приносили в жертву тварин, ворожили за зірками і стежили за польотом птахів. Вони покладалися на народні прикмети і намагалися дотримуватися примітивним правилами, що полегшує їм важке завдання прийняття рішень. В даний час для прийняття рішення використовують новий і, мабуть, більш науковий «ритуал», заснований на застосуванні електронно-обчислювальної машини. Без сучасних технічних засобів людський розум, ймовірно, не може врахувати численні і різноманітні фактори, з якими стикаються при управлінні підприємством, конструюванні ракети чи регулюванні руху транспорту. Існуючі в даний час численні математичні методи оптимізації вже досить розвинені, що дозволяє ефективно використовувати можливості цифрових і гібридних обчислювальних машин. Одним з цих методів є математичне програмування, що включає в себе як окремий випадок динамічне програмування.
Більшість практичних завдань має кілька (а деякі, можливо, навіть нескінченне число) рішень. Метою оптимізації є знаходження найкращого рішення серед багатьох потенційно можливих відповідно з деяким критерієм ефективності або якості. Завдання, що допускає лише одне рішення, не потребує оптимізації. Оптимізація може бути здійснена за допомогою багатьох стратегій, починаючи з дуже складних аналітичних та чисельних математичних процедур і закінчуючи розумним застосуванням простої арифметики.
Динамічне програмування - метод оптимізації, пристосований до операцій, в яких процес прийняття рішень може бути розбитий на окремі етапи (кроки). Такі операції називаються багатокрокових.
Як розділ математичного програмування, динамічне програмування (ДП) почало розвиватися в 50-х роках XX ст. завдяки роботам Р. Беллмана і його співробітників. Вперше цим методом вирішувалися задачі оптимального управління запасами, потім клас завдань значно розширився. Як практичний метод оптимізації, метод динамічного програмування став можливий лише при використанні сучасної обчислювальної техніки.
В основі методу динамічного програмування лежить принцип оптимальності, сформульований Беллманом. Цей принцип і ідея включення конкретної задачі оптимізації в сімейство аналогічних багатокрокових завдань призводять до рекурентних співвідношень - функціональним рівнянням - щодо оптимального значення цільової функції. Їх рішення дозволяє послідовно отримати оптимальне керування для вихідної задачі оптимізації.
1. Основні поняття
1.1 Модель динамічного програмування
Дамо загальний опис моделі динамічного програмування.
Розглядається керована система, яка під впливом управління переходить з початкового стану в кінцевий стан . Припустимо, що процес управління системою можна розбити на п кроків. Нехай , , ..., - Стану системи після першого, другого, ..., п-го кроку. Схематично це показано на рис. 1.
Малюнок 3
Стан системи після k-го кроку (k = 1,2 ..., n) характеризується параметрами , , ..., які називаються фазовими координатами. Стан можна зобразити точкою s-мірного простору званого фазовим простором. Послідовне перетворення системи (по кроках) досягається за допомогою деяких заходів , , ..., , Які складають управління системою , Де - Управління на k-му кроці, що переводить систему зі стану в стан (Рис. 1). Управління на k-му кроці полягає у виборі значень певних керуючих змінних * .
Припускаємо надалі, що стан системи в кінці k-го кроку залежить тільки від попереднього стану системи та управління на даному кроці (рис. 1). Така властивість отримало назву відсутності післядії. Позначимо цю залежність у вигляді
, (1.1)
Рівності (1.1) отримали назву рівнянь станів. Опції вважаємо заданими.
Варіюючи управління U, отримаємо різну «ефективність» процесу * *, яку будемо оцінювати кількісно цільової функцією Z, яка залежить від початкового стану системи і від вибраного управління U:
. (1.2)
Показник ефективності k-го кроку процесу управління, який залежить від стану на початку цього кроку та управління , Обраного на цьому кроці, позначимо через розглянутій задачі покрокової оптимізації цільова функція (1.2) повинна бути адитивною, тобто
. (1.3)
Якщо властивість адитивності цільової функції Z не виконується, то цього іноді можна домогтися деякими перетвореннями функції. Наприклад, якщо Z-мультиплікативна функція, задана у вигляді , То можна розглянути функцію , Яка є адитивною.
Зазвичай умовами процесу на управління на кожному кроці накладаються деякі обмеження. Управління, що відповідають цим обмеженням називаються припустимими.
Задачу покрокової оптимізації можна сформулювати так: визначити сукупність допустимих управлінні , , ..., , Переводять систему з початкового стану в кінцевий стан і максимізує чи мінімізують показник ефективності (1.3).
Для однаковості формулювань (але не обчислювальних процедур!) Надалі ми будемо говорити тільки про завдання максимізації, маючи на увазі, що якщо необхідно мінімізувати Z, то, замінивши Z на Z '= - Z перейдемо до максимізації Z'.
Початковий стан і кінцевий стан можуть бути задані однозначно або можуть бути вказані безліч початкових станів безліч кінцевих станів так, що , . В останньому випадку в задачі покрокової оптимізації потрібно визначити сукупність допустимих управлінь, переводять систему з початкового стану в кінцевий стан і максимізує цільову функцію (1.3). Управління, при якому досягається максимум цільової функції (1.3), називається оптимальним керуванням і позначається через .
Якщо змінні управління приймають дискретні значення, то модель ДП називається дискретною. Якщо ж зазначені змінні змінюються безперервно, то модель ДП називається неперервною. Залежно від числа параметрів станів (s) і числа керуючих змінних на кожному кроці (r) розрізняють одновимірні і багатовимірні моделі ДП. Число кроків в задачі може бути або кінцевим, або нескінченним .
Динамічне програмування застосовується при оптимізації як детермінованих, так і стохастичних процесів.
У деяких завданнях, розв'язуваних методом ДП, процес управління природно розбивається на кроки. Наприклад, при розподілі на кілька років ресурсів діяльності підприємства кроком природно вважати часовий період; при розподілі коштів між n підприємствами номером кроку природно вважати номер чергового підприємства. В інших завданнях розбиття на кроки вводиться штучно. Наприклад, безперервний керований процес можна розглядати як дискретний, умовно розбивши його на деякі часові відрізки - кроки. Виходячи з умов кожної конкретної задачі, довжину кроку вибирають таким чином, щоб на кожному кроці отримати просту задачу оптимізації та забезпечити необхідну точність обчислень.
1.2 Принцип оптимальності. Рівняння Беллмана
Метод динамічного програмування полягає в тому, що оптимальне управління будується поступово, крок за кроком. На кожному кроці оптимізується управління тільки цього кроку. Разом з тим на кожному кроці управління вибирається з урахуванням наслідків, так як управління, яке оптимізує цільову функцію тільки для даного кроку, може призвести до неоптимальної ефекту всього процесу. Управління на кожному кроці має бути оптимальним з точки зору процесу в цілому.
Ілюстрацією до сказаного вище може служити задача про вибір найкоротшого шляху для переходу з точки A в точку B, якщо маршрут повинен пройти через деякі пункти. На рис. 2 ці пункти позначені кружками, а що з'єднують їх дороги - відрізками, поруч з якими проставлені відповідні відстані.
Малюнок 3
З точки зору інтересів оптимізації тільки кожного найближчого кроку - вибору найкоротшого шляху з даної точки в сусідню - слід рухатися по маршруту, що проходить через точки . Довжина цього маршруту дорівнює 34. Такий шлях з A в B не є найкоротшим. Наприклад, маршрут, що проходить через точки , Має меншу довжину, яка дорівнює 25. Вирішивши це завдання, можна переконатися, що другий шлях також не є оптимальним.
Наведений приклад багатокрокової операції показує, що управління на кожному кроці треба вибирати з урахуванням його наслідків на наступні кроки. Це основне правило ДП, сформульоване Р. Беллманом, називається принципом оптимальності.
Оптимальне управління має таку властивість, що яке б не було початковий стан на будь-якому кроці і керування, вибраного на цьому кроці, наступні управління повинні вибиратися оптимальними щодо стану, до якого прийде система в кінці даного кроку.
Використання цього принципу гарантує, що управління, вибраного на будь-якому кроці, є не локально кращим, а кращим з точки зору процесу в цілому.
Так, якщо система на початку k-го кроку знаходиться в стані , І ми вибираємо довільне керування , То система прийде в новий стан , І подальші управління повинні вибиратися оптимальними щодо стану . Останнє означає, що при цих управліннях максимізується показник ефективності на наступних до кінця процесу кроках k +1, ..., n, тобто величина . Показник, що характеризує сумарну ефективність від даного k-го до останнього п-го кроку, будемо позначати через , Тобто . Завдання оптимізації процесу, починаючи з k-го до останнього n-го кроку (рис. 3), схожа на вихідну при початковому стані системи , Управлінні і показнику ефективності [Аналогічно (1.2)]. Вибравши оптимальне управління на що залишилися п - k + l кроки, отримаємо величину , Яка залежить тільки від , Т. е.
. (1.4)
Назвемо величину умовним максимумом. Якщо тепер ми виберемо на k-му кроці деякий довільне керування , То система прийде в стан . Згідно з принципом оптимальності, яке б ми не вибрали, на подальших кроках управління повинен вибиратися так, щоб показник ефективності досягав максимального значення, рівного . Залишається вибрати управління . Його не можна вибирати з умови локальної максимізації показника ефективності на даному k-му кроці, аби отримати . Такий підхід був би недалекоглядним, оскільки від вибору залежить новий стан , А від останнього - максимально можлива ефективність, яка може бути досягнута в подальшому, тобто величина . Тому необхідно вибирати управління так, щоб воно в сукупності з оптимальним керуванням на наступних кроках (починаючи з (k +1) - го) призводило би до спільного максимуму показника ефективності на п-k + l кроках, починаючи з k-го до кінця. Це положення в аналітичній формі можна записати у вигляді наступного співвідношення:
, (1.5)
що отримав назву основного функціонального рівняння ДП, або рівняння Белмана. Схематично співвідношення (1.5) ілюструється на рис. 3.
Малюнок 3
З рівняння (1.5) може бути отримана функція , Якщо відома функція ; Аналогічно можна отримати , Якщо знайдена і т. д., поки не буде визначена величина , Що представляє за визначенням максимальне значення показника ефективності процесу в цілому: .
Співвідношення (1.5) для визначення послідовності функцій через отримали назву основних рекурентних рівнянь Беллмана.
Вирішуючи рівняння (1.5) для визначення умовного максимуму показника ефективності за n-k + l кроків, починаючи з k-го, ми визначаємо відповідне оптимальне управління , При якому цей максимум досягається. Це управління також залежить від . Будемо позначати таке управління через і називати умовним оптимальним керуванням на k-му кроці.
Основне значення рівняння (1.5), в якому реалізована ідея динамічного програмування, полягає в тому, що рішення вихідної задачі визначення - максимуму функції (1.2) n змінних , , ..., зводиться до вирішення послідовності n завдань, що задаються співвідношеннями (1.5), кожне з яких є завданням максимізації функції однієї змінної . Ці завдання виявляються взаємопов'язаними, так як в співвідношенні (1.5) при визначенні враховується знайдена при вирішенні попереднього завдання функція .
2. Оптимальний розподіл ресурсів
2.1 Постановка завдання
Клас задач, що розглядається в даному розділі, має численні практичні додатки.
У загальному вигляді ці завдання можуть бути описані в такий спосіб. Є деяка кількість ресурсів, під якими можна розуміти грошові кошти, матеріальні ресурси (наприклад, сировину, напівфабрикати, трудові ресурси, різні види устаткування і т. п.). Ці ресурси необхідно розподілити між різними об'єктами їх використання по окремих проміжків планового періоду або за різними проміжками по різних об'єктах так, щоб отримати максимальну сумарну ефективність від обраного способу розподілу. Показником ефективності може служити, наприклад, прибуток, товарна продукція, фондовіддача (завдання максимізації) або сумарні витрати, собівартість, час виконання даного обсягу робіт тощо (завдання мінімізації).
Взагалі кажучи, переважна кількість задач математичного програмування вписується в загальну постановку задачі оптимального розподілу ресурсів. Природно, що при розгляді моделей і обчислювальних схем вирішення подібних завдань методом ДП необхідно конкретизувати загальну форму задачі розподілу ресурсів.
Надалі будемо припускати, що умови, необхідні для побудови моделі ДП, в задачі виконуються. Опишемо типову задачу розподілу ресурсів у загальному вигляді.
Завдання 1. Є початкова кількість коштів , Яке необхідно розподілити протягом n років між s підприємствами. Засоби , Виділені у k-му році i-му підприємству, приносять дохід у розмірі і до кінця року мають бути повернені у кількості . У подальшому розподілі дохід може або брати участь (частково або повністю), або не брати участь.
Потрібно визначити такий спосіб розподілу ресурсів (кількість коштів, що виділяються кожному підприємству в кожному плановому році), щоб сумарний дохід від s підприємств за n років був максимальним.
Отже, в якості показника ефективності процесу розподілу ресурсів за n років приймається сумарний дохід, отриманий від s підприємств:
. (2.1)
Кількість ресурсів на початку k-го року будемо характеризувати величиною (Параметр стану). Управління на k-му кроці полягає у виборі змінних , Що позначають ресурси, що виділяються в k-му році i-му підприємству.
Якщо припустити, що дохід у подальшому розподілі не бере участь, то рівняння стану процесу має вигляд
(2.2)
Якщо ж деяка частина доходу бере участь в подальшому розподілі в якому-небудь році, то до правої частини рівності (2.2) додається відповідна величина.
Потрібно визначити ns невід'ємних змінних , Які відповідають умовам (2.2) і максимізує функцію (2.1).
Обчислювальна процедура ДП починається з введення функції , Що означає дохід, отриманий за п-k +1 років, починаючи з k-го року до кінця аналізованого періоду, при оптимальному розподілі коштів між s підприємствами, якщо у k-му році розподілялося коштів. Функції для задовольняють функціональним рівнянням (1.5), які запишуться у вигляді
(2.3)
При згідно (1.5) отримуємо
. (2.4)
Далі необхідно послідовно вирішити рівняння (2.4) та (2.3) для всіх можливих . Кожне з цих рівнянь являє собою завдання на оптимізацію функції, що залежить від s змінних. Таким чином, завдання з ns змінними зведена до послідовності n завдань, кожна з яких містить s змінних. У цій загальній постановці завдання, як і раніше складна (через багатовимірності) і спростити її, розглядаючи як ns-крокову завдання, в даному випадку не можна. Справді, спробуємо це зробити. Пронумеруємо кроки за номерами підприємств спочатку в 1-му році, потім в 2-м і т. д.:
і будемо користуватися одним параметром для характеристики залишку коштів.
Протягом k-го року стан до початку будь-якого кроку (I = l, 2, .... s) визначиться за попереднім станом за допомогою простого рівняння . Однак після закінчення року, тобто до початку наступного року, до готівкових коштів необхідно буде додати коштів і, отже, стан на початку -Го кроку буде залежати не тільки від попереднього ks-го стану, але і від усіх s станів і управлінь за минулий рік. У результаті ми отримаємо процес з післядією. Щоб виключити післядія, доводиться вводити декілька параметрів стані; завдання на кожному кроці залишається як і раніше складною через багатомірності.
2.2 Двовимірна модель розподілу ресурсів
Завдання 2. Планується діяльність двох підприємств (s = 2) протягом n років. Початкові кошти складають . Засоби x, вкладені в підприємство I, приносять до кінця року дохід і повертаються в розмірі ; Аналогічно, кошти x, вкладені в підприємство II, дають дохід і повертаються в розмірі . Після закінчення року всі кошти, що залишилися заново перерозподіляються між підприємствами I і II, нових засобів не надходить і дохід у виробництво не вкладається.
Потрібно знайти оптимальний спосіб розподілу наявних коштів.
Будемо розглядати процес розподілу коштів як n-кроковий, в якому номер кроку відповідає номеру року. Керована система - два підприємства з вкладеними в них засобами. Система характеризується одним параметром стану - Кількістю коштів, які слід перерозподілити на початку k-го року. Змінних управління на кожному кроці дві: і - Кількість коштів, виділених відповідно підприємству I і II. Оскільки кошти щорічно перерозподіляються повністю, то . Для кожного кроку завдання стає одновимірної. Позначимо через , Тоді .
Показник ефективності k-го кроку дорівнює . Це - дохід, отриманий від двох підприємств протягом k-го року.
Показник ефективності завдання - дохід, отриманий від двох підприємств протягом n років - становить
. (2.5)
Рівняння стану висловлює залишок коштів після k-го кроку і має вигляд
. (2.6)
Нехай - Умовний оптимальний дохід, отриманий від розподілу коштів між двома підприємствами за п - k +1 років, починаючи з k-го року до кінця аналізованого періоду. Запишемо рекурентні співвідношення для цих функцій:
; (2.7)
,
де - Визначається з рівняння стану (2.6).
Завдання 3. Вирішити завдання 2 при наступних умовах: ; ; ; ; ; .
Якщо і - Кошти, виділені відповідно підприємствам I і II в k-му році, то сумарний дохід, отриманий від обох підприємств, дорівнює
,
а рівняння стану (2.6) приймає вигляд
.
Основні функціональні рівняння (2.7) запишуться так:
;
.
Проведемо етап умовної оптимізації.
4-й крок. Умовний оптимальний дохід дорівнює
,
так як лінійна відносно функція досягає максимуму в кінці інтервалу, тобто при .
3-й крок:
.
Коефіцієнт при негативний, тому максимум в цій лінійної щодо функції досягається на початку інтервалу, тобто
; .
2-й крок:
, Звідки ; .
1-й крок:
при .
Результат умовної оптимізації:
; ; ; ;
; ; ;
Перейдемо до безумовної оптимізації. Вважаємо ; Тоді , . Знаючи , Знаходимо ; Використовуючи , Отримуємо і . Аналогічно , . Нарешті, . Отже, кошти по роках потрібно розподілити так:
Рік | ||||
Підприємство | 1 | 2 | 3 | 4 |
I | 0 | 0 | 0 | 5120 |
II | 10000 | 8000 | 6400 | 0 |
При такому розподілі коштів (10000 крб.) За чотири роки буде отриманий дохід, рівний .
Безперервні моделі, прикладом яких служить завдання 3, не є типовими у практиці розподілу ресурсів. Надалі більшість завдань буде носити дискретний характер.
2.3 Дискретна динамічна модель оптимального розподілу ресурсів
При дискретному вкладенні ресурсів може виникнути питання про вибір кроку у зміні змінних управління. Цей крок може бути заданий або визначається виходячи з необхідної точності обчислень і точності вихідних даних. У загальному випадку ця задача складна, вимагає інтерполювання за таблицями на попередніх кроках обчислення. Іноді попередній аналіз рівняння стану дозволяє вибрати відповідний крок , А також встановити граничні значення , Для яких на кожному кроці потрібно виконати табулювання.
Розглянемо двовимірну задачу, аналогічну попередньої, в якій будується дискретна модель ДП процесу розподілу ресурсів.
Завдання 3. Скласти оптимальний план щорічного розподілу коштів між двома підприємствами протягом трирічного планового періоду при наступних умовах: 1) початкова сума становить 400, 2) вкладені кошти в розмірі x приносять на підприємстві I дохід і повертаються у розмірі 60% від x, а на підприємстві II-відповідно і 20%; 3) щорічно розподіляються всі готівкові кошти, одержувані з повернутих коштів: 4) функції і задано в табл. 1:
Таблиця 9
x
| 50 | 100 | 150 | 200 | 250 | 300 | 350 | 400 |
| 6 | 10 | 15 | 26 | 28 | 38 | 45 | 49 |