Динамічне програмування онлайн калькулятор з покроковим розв'язком

Підприємство 1
Cδ
00
Підприємство 2
Cδ
00
Підприємство 3
Cδ
00
Підприємство 4
Cδ
00
Коментарі рішення
Без опису (тільки відповідь)

a

b

c

d

x

y

z

AC

i

ab
x2
xn

Randomize

Формат чисел
313131313135151515151552188552198585858586
Округлити до
Знаків після коми
10
=Розв'язати

  Про калькулятор динамічного програмування

Розв'яжіть задачі розподілу інвестицій методом динамічного програмування онлайн з таблицею F*/K* та детальним покроковим розв'язком. з повним, детальним, покроковим описом розв'язань, що розв'язує задачі лінійного програмування розміром до 20×20 з коефіцієнтами таких типів: десяткові числа та дроби.

Щоб почати обчислення, спочатку необхідно ввести розміри задачі у поля вводу у верхній частині екрана, а також вибрати потрібну операцію з бічного меню.

Нижче знаходиться вікно вводу, де за допомогою клавіатури потрібно ввести коефіцієнти, обмеження та значення правих частин. Тут також розташована панель керування вводом, яка спрощує роботу із задачами ЛП і містить такі елементи керування:

  • Перший елемент дозволяє розгорнути вікно вводу. Це може бути особливо корисно, коли таблиця не вміщається повністю на екрані. Якщо таблиця все ще не повністю видна після розгортання вікна, можна змінити масштаб за допомогою кнопок + / -;
  • Другий елемент копіює поточні вхідні дані задачі до буфера пам'яті. Це може бути корисно, коли ви часто розв'язуєте ту саму задачу ЛП або потрібно переносити дані між операціями;
  • Останній елемент вставляє раніше скопійовані вхідні дані, що дозволяє відновити дані задачі лише кількома кліками замість повторного введення вручну;

Далі внизу знаходиться панель інструментів, яка дозволяє налаштувати калькулятор та спростити роботу з ним. Вона візуально розділена на три частини, кожна з яких відповідає за таку функціональність:

  • Перша частина дозволяє вибрати формат чисел при відображенні результату розв'язання. Також можна вимкнути покрокові коментарі, якщо ви вже розумієте метод і потребуєте лише перевірки власних обчислень, або приховати покрокове розв'язання повністю, якщо потрібна лише кінцева відповідь;
  • Друга частина містить кнопки для зміни розмірів таблиці вводу, очищення окремих коефіцієнтів або всього вводу, а також головну кнопку зі знаком рівності, що переводить на екран розв'язання. Всі ці кнопки продубльовані клавіатурними скороченнями. Наведіть курсор на кнопку, щоб побачити відповідну клавішу у підказці. Також можна використовувати клавіші зі стрілками для переміщення курсора між полями вводу;
  • Остання частина дозволяє вибрати кількість знаків після коми для округлення нецілих результатів. Попередній перегляд показує, як виглядатимуть округлені значення;

  Що таке динамічне програмування?

Динамічне програмування — це метод оптимізації, що розв'язує складні задачі шляхом розбиття їх на простіші перекриваючі підзадачі та збереження проміжних результатів для уникнення надлишкових обчислень. У задачі розподілу інвестицій мета полягає в тому, щоб розподілити фіксований бюджет між кількома підприємствами для максимізації загального прибутку, використовуючи принцип оптимальної підструктури: оптимальний розподіл для етапів 1–k можна побудувати на основі оптимального розподілу для етапів 1–(k-1).

  Як розв'язати задачу розподілу інвестицій методом динамічного програмування?

Складіть поетапну таблицю F*/K*, де кожна клітинка F*(q, x) містить максимальний прибуток, досяжний при інвестуванні x одиниць у перші q підприємств. Починайте з останнього підприємства і рухайтеся в зворотному напрямку: для кожного етапу q і кожного можливого рівня загальних інвестицій x переберіть усі допустимі розподіли між підприємством q і рештою етапів та запишіть найкращий. Оптимальний загальний прибуток зчитується з F*(n, total_budget), а оптимальний розподіл відновлюється шляхом відстеження рішень K* назад по таблиці.

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

1
Ітерація: 1 (Підприємство: 3)
x3x3 = 0x3 = 1x3 = 2x3 = 3x3 = 4F*3K*3F*4
00000
103310
2034420
30347730
40347111140
2
Ітерація: 2 (Підприємство: 2)
x2x2 = 0x2 = 1x2 = 2x2 = 3x2 = 4F*2K*2F*3
00000
136613
2499914
371012111227
4111313141314311
3
Ітерація: 3 (Підприємство: 1)
x1x1 = 0x1 = 1x1 = 2x1 = 3x1 = 4F*1K*1F*2
414201917122010
16
29
312
414
Answer
F → max
k1 = 18
k2 = 29
k3 = 13
20
Підприємства3Рівні інвестицій4Макс. прибуток20

  Часті запитання

Яку задачу розв'язує цей калькулятор динамічного програмування?

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

Як динамічне програмування знаходить оптимум?

Воно розбиває розподіл на етапи, по одному підприємству за раз, і застосовує принцип оптимальності Беллмана: обчислює найкращий прибуток для кожного рівня залишкового бюджету та поєднує результати етапів у глобальний оптимум.

Чому перший рядок відповідає нульовій інвестиції?

Рядок 0 — це базовий варіант, коли не виділяється нічого, що завжди дає нульовий прибуток. Збереження його в явному вигляді дає змогу рекурентному співвідношенню порівнювати «інвестувати тут» з «не інвестувати тут» на кожному етапі.

Як читати оптимальний розподіл?

Підсумкова таблиця показує для повного бюджету, скільки виділити кожному підприємству та який отримується загальний прибуток — розподіл, який не може перевершити жоден інший варіант.

  Джерела