Оптимальний розподіл капіталу

Постановка задачі

Ця сторінка призначена для навчання студентів розв’язанню однієї з задач динамічного програмування − задачі про оптимальний розподіл капіталу. Ви можете розв’язувати задачу безпосередньо на цій сторінці в інтерактивному режимі. Якщо у вас встановлений пакет MATLAB, можете перейти сюди.

Розглянемо постановку задачі. Нехай у нашому роспорядженні є капітал xmax, який треба розподілити між n підприємствами для досягнення максимального прибутку. Для кожного k-го підприємства відома функція прибутку gk(x), яка для заданого вкладення капіталу x обчислює отриманий прибуток. Маємо задачу математичного програмування:

Для деяких видів функцій прибутку gk(x) та з пририпущенням про неперервний розподіл капіталу розв’язок задачі (1) може бути отриманий аналітично, за допомогою методу невизначений множників Лагранжа.

Квадратичні функції прибутку

Нехай, наприклад, функції gk(x) − квадратичні:

Тоді функція Лагранжа буде мати вигляд:

Частинні похідні від неї за усіма аргументами xk та λ будуть такими:

Розв’язавши цю систему, знайдемо невизначений множник Лагранжа λ та значення аргументів xk, що надають максимум цільовій функції (1) при заданих обмеженнях:

Розв’яжемо цю задачу безпосередньо на цій сторінці. Введить нижче в областях введення загальний капітал xmax та коефіцієнти кривих прибутку ak та bk. Числа в рядках при введенні повинні розділятися пробілами, як у зразку нижче (можете поміняти числа). Потім натисніть кнопку "Рахувати".

xmax =
ak =
bk =

Функції прибутку у вигляді кривих насичення

Розглянемо інший приклад. Нехай функції прибутку gk(x) мають вигляд кривих насичення:

В цьому випадку задача розв’язується так само. Функція Лагранжа має вигляд:

а її частинні похідні за усіма аргументами утворюють систему рівнянь:

Розв’язок цієї системи дає результат:

Розв’яжемо цю задачу безпосередньо на цій сторінці. Введить нижче в областях введення загальний капітал xmax та коефіцієнти кривих прибутку ak та bk. Числа в рядках при введенні повинні розділятися пробілами, як у зразку нижче (можете поміняти числа). Потім натисніть кнопку "Рахувати".

xmax =
ak =
bk =

Функції прибутку у вигляді таблиць − динамічне програмування

Аналітичне розв’язання можливе, якщо загальний капітал xmax може розподілятися неперервно, а системи рівнянь типу (4) або (8) розв’язуються легко. Якщо ж капітал разподіляється дискретними порціями та (або) системи рівнянь розв’язуються складно (а вони можуть і взагалі не розв’язуватися аналітично), то застосовують методи динамічного програмування, описані у чисельній літературі. Див., наприклад, [1].

Розв’яжемо задачу оптимального розподілу капіталу безпосередньо на цій сторінці. Введіть нижче в областях введення вхідні дані. В перших двох областях введіть загальний капітал xmax>0 та крок Δ>0, з яким він буде розподілятися між підприєствами (мінімальна порція для вливання капіталу). Тим самим будуть визначені точки, в яких повинні бути задані функції прибутку gk(x): це 0, Δ, 2Δ, 3Δ, ..., xmax. Загальна кількість точок N = xmax/Δ+1. В наступній області введіть значення функцій прибутку gk(x) у цих точках (рядками). Усього у вас буде n рядків (це кількість підприємств), а у кожному рядку повинно бути N нвід’ємних чисел, розділиних пробілами − значення функцій прибутку gk(x) у точках 0, Δ, 2Δ, 3Δ, ..., xmax. Після заповнення даних натисніть кнопку "Рахувати".

xmax =
Δ =
Значення функцій прибутку gk(x) у точках 0, Δ, 2Δ, 3Δ, ..., xmax (рядками):