a
b
c
d
x
y
z
AC
i
Randomize
Про калькулятор теорії ігор
Розв'яжіть матричні ігри за теорією ігор онлайн — мінімакс, максимін, змішані стратегії через лінійне програмування, з детальним покроковим розв'язком. з повним, детальним, покроковим описом розв'язань, що розв'язує задачі лінійного програмування розміром до 20×20 з коефіцієнтами таких типів: десяткові числа та дроби.
Щоб почати обчислення, спочатку необхідно ввести розміри задачі у поля вводу у верхній частині екрана, а також вибрати потрібну операцію з бічного меню.
Нижче знаходиться вікно вводу, де за допомогою клавіатури потрібно ввести коефіцієнти, обмеження та значення правих частин. Тут також розташована панель керування вводом, яка спрощує роботу із задачами ЛП і містить такі елементи керування:
- Перший елемент дозволяє розгорнути вікно вводу. Це може бути особливо корисно, коли таблиця не вміщається повністю на екрані. Якщо таблиця все ще не повністю видна після розгортання вікна, можна змінити масштаб за допомогою кнопок + / -;
- Другий елемент копіює поточні вхідні дані задачі до буфера пам'яті. Це може бути корисно, коли ви часто розв'язуєте ту саму задачу ЛП або потрібно переносити дані між операціями;
- Останній елемент вставляє раніше скопійовані вхідні дані, що дозволяє відновити дані задачі лише кількома кліками замість повторного введення вручну;
Далі внизу знаходиться панель інструментів, яка дозволяє налаштувати калькулятор та спростити роботу з ним. Вона візуально розділена на три частини, кожна з яких відповідає за таку функціональність:
- Перша частина дозволяє вибрати формат чисел при відображенні результату розв'язання. Також можна вимкнути покрокові коментарі, якщо ви вже розумієте метод і потребуєте лише перевірки власних обчислень, або приховати покрокове розв'язання повністю, якщо потрібна лише кінцева відповідь;
- Друга частина містить кнопки для зміни розмірів таблиці вводу, очищення окремих коефіцієнтів або всього вводу, а також головну кнопку зі знаком рівності, що переводить на екран розв'язання. Всі ці кнопки продубльовані клавіатурними скороченнями. Наведіть курсор на кнопку, щоб побачити відповідну клавішу у підказці. Також можна використовувати клавіші зі стрілками для переміщення курсора між полями вводу;
- Остання частина дозволяє вибрати кількість знаків після коми для округлення нецілих результатів. Попередній перегляд показує, як виглядатимуть округлені значення;
Що таке матрична гра (теорія ігор)?
Матрична гра — це скінченна двогравцева гра з нульовою сумою, де гравець 1 обирає рядок, а гравець 2 одночасно обирає стовпець платіжної матриці; гравець 1 отримує відповідний елемент, а гравець 2 його виплачує. Теорема мінімаксу гарантує, що кожна скінченна гра з нульовою сумою має ціну — суму, яку гравець 1 може гарантувати незалежно від стратегії гравця 2, — досягнуту або в чистих стратегіях (сідлова точка), або в змішаних стратегіях (розподіли ймовірностей по рядках і стовпцях).
Як знайти розв'язок у чистих стратегіях (сідлова точка)?
Для кожного рядка знайдіть мінімум рядка (найгірша виплата, яку гравець 1 може гарантувати, обравши цей рядок). Для кожного стовпця знайдіть максимум стовпця (найгірше, що може гарантувати гравець 2, обравши цей стовпець). Якщо максимум мінімумів рядків дорівнює мінімуму максимумів стовпців, то в цьому елементі існує сідлова точка; ціна гри дорівнює цьому спільному числу, і обидва гравці повинні використовувати відповідну чисту стратегію.
Як знайти розв'язок у змішаних стратегіях?
Якщо сідлової точки немає, обидва гравці повинні рандомізувати. Задача зводиться до задачі лінійного програмування: зсунути платіжну матрицю на константу, щоб усі елементи стали додатними, після чого оптимальна змішана стратегія гравця 1 розв'язує стандартну ЗЛП, змінними якої є (нормалізовані) ймовірності стратегій. Наш калькулятор розв'язує внутрішню ЗЛП симплекс-методом на транспонованій платіжній матриці (міняючи ролі гравців) і відновлює змішані стратегії обох гравців з прямого та двоїстого розв'язків відповідно.
Приклад розв'язання матричної гри
| B | Cb | P | x1↓ | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | Q |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 0 | 0 | 0 | M | M | M | ||||
| x7 | M | 1 | 2 | 3 | 4 | -1 | 0 | 0 | 1 | 0 | 0 | 12 |
| x8← | M | 1 | 4 | 1 | 3 | 0 | -1 | 0 | 0 | 1 | 0 | 14 |
| x9 | M | 1 | 3 | 4 | 2 | 0 | 0 | -1 | 0 | 0 | 1 | 13 |
| min | 3M | 9M-1 | 8M-1 | 9M-1 | -M | -M | -M | 0 | 0 | 0 | ||
Елементи стовпця базису (B)
Переносимо до таблиці базисні елементи, які були визначені на попередньому етапі:
B1 = x7;
B2 = x8;
B3 = x9;
Елементи стовпця Cb
Кожна клітинка цього стовпця дорівнює коефіцієнту, який відповідає базисній змінній у відповідному рядку.
Cb1 = M;
Cb2 = M;
Cb3 = M;
Значення вільних змінних і стовпця P
На цьому етапі обчислень не потрібно, просто переносимо значення з попереднього етапу до відповідних клітинок таблиці:
P1 = 1;
P2 = 1;
P3 = 1;
x1,1 = 2;
x1,2 = 3;
x1,3 = 4;
x1,4 = -1;
x1,5 = 0;
x1,6 = 0;
x1,7 = 1;
x1,8 = 0;
x1,9 = 0;
x2,1 = 4;
x2,2 = 1;
x2,3 = 3;
x2,4 = 0;
x2,5 = -1;
x2,6 = 0;
x2,7 = 0;
x2,8 = 1;
x2,9 = 0;
x3,1 = 3;
x3,2 = 4;
x3,3 = 2;
x3,4 = 0;
x3,5 = 0;
x3,6 = -1;
x3,7 = 0;
x3,8 = 0;
x3,9 = 1;
Значення цільової функції
Обчислюємо значення цільової функції шляхом поелементного множення стовпця Cb на стовпець P та підсумовування результатів добутків.
MinP = (Cb1 * P1) + (Cb2 * P2) + (Cb3 * P3) = (M * 1) + (M * 1) + (M * 1) = 3M;
Оцінки керованих змінних
Обчислюємо оцінки для кожної керованої змінної шляхом поелементного множення значень зі стовпця змінної на значення зі стовпця Cb, підсумовування результатів добутків та віднімання коефіцієнта цільової функції з їх суми для цієї змінної.
Minx1 = ((Cb1 * x1,1) + (Cb2 * x2,1) + (Cb3 * x3,1)) - kx1 = ((M * 2) + (M * 4) + (M * 3)) - 1 = 9M-1;
Minx2 = ((Cb1 * x1,2) + (Cb2 * x2,2) + (Cb3 * x3,2)) - kx2 = ((M * 3) + (M * 1) + (M * 4)) - 1 = 8M-1;
Minx3 = ((Cb1 * x1,3) + (Cb2 * x2,3) + (Cb3 * x3,3)) - kx3 = ((M * 4) + (M * 3) + (M * 2)) - 1 = 9M-1;
Minx4 = ((Cb1 * x1,4) + (Cb2 * x2,4) + (Cb3 * x3,4)) - kx4 = ((M * -1) + (M * 0) + (M * 0)) - 0 = -M;
Minx5 = ((Cb1 * x1,5) + (Cb2 * x2,5) + (Cb3 * x3,5)) - kx5 = ((M * 0) + (M * -1) + (M * 0)) - 0 = -M;
Minx6 = ((Cb1 * x1,6) + (Cb2 * x2,6) + (Cb3 * x3,6)) - kx6 = ((M * 0) + (M * 0) + (M * -1)) - 0 = -M;
Minx7 = ((Cb1 * x1,7) + (Cb2 * x2,7) + (Cb3 * x3,7)) - kx7 = ((M * 1) + (M * 0) + (M * 0)) - M = 0;
Minx8 = ((Cb1 * x1,8) + (Cb2 * x2,8) + (Cb3 * x3,8)) - kx8 = ((M * 0) + (M * 1) + (M * 0)) - M = 0;
Minx9 = ((Cb1 * x1,9) + (Cb2 * x2,9) + (Cb3 * x3,9)) - kx9 = ((M * 0) + (M * 0) + (M * 1)) - M = 0;
Елементи стовпця Q
Оскільки серед оцінок керованих змінних є додатні значення, поточна таблиця ще не має оптимального розв'язку. Тому до базису вводимо змінну з найбільшою додатною оцінкою.
Кількість змінних у базисі завжди стала, тому необхідно вибрати, яку змінну виводити з базису, для чого обчислюємо Q.
Елементи стовпця Q обчислюються шляхом ділення значень зі стовпця P на значення зі стовпця, що відповідає змінній, яка вводиться до базису:
Q1 = P1x1,1 = 12 = 12;
Q2 = P2x2,1 = 14 = 14;
Q3 = P3x3,1 = 13 = 13;
Виводимо з базису змінну з найменшим додатним значенням Q.
На перетині рядка, що відповідає змінній, яка виводиться з базису, і стовпця, що відповідає змінній, яка вводиться до базису, знаходиться розв'язуючий елемент.
Цей елемент дозволить нам обчислити елементи таблиці наступної ітерації.
| B | Cb | P | x1 | x2↓ | x3 | x4 | x5 | x6 | x7 | x8 | x9 | Q |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 0 | 0 | 0 | M | M | M | ||||
| x7 | M | 12 | 0 | 212 | 212 | -1 | 12 | 0 | 1 | -12 | 0 | 15 |
| x1 | 1 | 14 | 1 | 14 | 34 | 0 | -14 | 0 | 0 | 14 | 0 | 1 |
| x9← | M | 14 | 0 | 314 | -14 | 0 | 34 | -1 | 0 | -34 | 1 | 113 |
| min | 34M+14 | 0 | 534M-34 | 214M-14 | -M | 114M-14 | -M | 0 | -214M+14 | 0 | ||
Елементи стовпця базису (B)
За результатами обчислень попередньої ітерації виводимо змінну з базису x8 та ставимо на її місце x1. Всі інші клітинки залишаються незмінними.
Елементи стовпця Cb
Кожна клітинка цього стовпця дорівнює коефіцієнту, який відповідає базисній змінній у відповідному рядку.
Cb1 = M;
Cb2 = 1;
Cb3 = M;
Значення вільних змінних і стовпця P
(Дані з попередньої ітерації беруться як вхідні дані)
Заповнюємо нулями всі клітинки, що відповідають змінній, яка щойно введена до базису:
(Розв'язуючий елемент залишається незмінним)
x1,1 = 0;
x3,1 = 0;
Переносимо рядок з розв'язуючим елементом із попередньої таблиці до поточної, поелементно поділивши його значення на розв'язуючий елемент:
x2,1 = x2,1x2,1 = 44 = 1;
x2,2 = x2,2x2,1 = 14 = 14;
x2,3 = x2,3x2,1 = 34 = 34;
x2,4 = x2,4x2,1 = 04 = 0;
x2,5 = x2,5x2,1 = -14 = -14;
x2,6 = x2,6x2,1 = 04 = 0;
x2,7 = x2,7x2,1 = 04 = 0;
x2,8 = x2,8x2,1 = 14 = 14;
x2,9 = x2,9x2,1 = 04 = 0;
P2 = P2x2,1 = 14 = 14;
Решта порожніх клітинок, крім рядка оцінок та стовпця Q, обчислюються методом прямокутника відносно розв'язуючого елемента:
x1,2 = (x1,2 * x2,1) - (x1,1 * x2,2)x2,1 = (3 * 4) - (2 * 1)4 = 212;
x1,3 = (x1,3 * x2,1) - (x1,1 * x2,3)x2,1 = (4 * 4) - (2 * 3)4 = 212;
x1,4 = (x1,4 * x2,1) - (x1,1 * x2,4)x2,1 = (-1 * 4) - (2 * 0)4 = -1;
x1,5 = (x1,5 * x2,1) - (x1,1 * x2,5)x2,1 = (0 * 4) - (2 * -1)4 = 12;
x1,6 = (x1,6 * x2,1) - (x1,1 * x2,6)x2,1 = (0 * 4) - (2 * 0)4 = 0;
x1,7 = (x1,7 * x2,1) - (x1,1 * x2,7)x2,1 = (1 * 4) - (2 * 0)4 = 1;
x1,8 = (x1,8 * x2,1) - (x1,1 * x2,8)x2,1 = (0 * 4) - (2 * 1)4 = -12;
x1,9 = (x1,9 * x2,1) - (x1,1 * x2,9)x2,1 = (0 * 4) - (2 * 0)4 = 0;
P1 = (P1 * x2,1) - (x1,1 * P2)x2,1 = (1 * 4) - (2 * 1)4 = 12;
x3,2 = (x3,2 * x2,1) - (x3,1 * x2,2)x2,1 = (4 * 4) - (3 * 1)4 = 314;
x3,3 = (x3,3 * x2,1) - (x3,1 * x2,3)x2,1 = (2 * 4) - (3 * 3)4 = -14;
x3,4 = (x3,4 * x2,1) - (x3,1 * x2,4)x2,1 = (0 * 4) - (3 * 0)4 = 0;
x3,5 = (x3,5 * x2,1) - (x3,1 * x2,5)x2,1 = (0 * 4) - (3 * -1)4 = 34;
x3,6 = (x3,6 * x2,1) - (x3,1 * x2,6)x2,1 = (-1 * 4) - (3 * 0)4 = -1;
x3,7 = (x3,7 * x2,1) - (x3,1 * x2,7)x2,1 = (0 * 4) - (3 * 0)4 = 0;
x3,8 = (x3,8 * x2,1) - (x3,1 * x2,8)x2,1 = (0 * 4) - (3 * 1)4 = -34;
x3,9 = (x3,9 * x2,1) - (x3,1 * x2,9)x2,1 = (1 * 4) - (3 * 0)4 = 1;
P3 = (P3 * x2,1) - (x3,1 * P2)x2,1 = (1 * 4) - (3 * 1)4 = 14;
Значення цільової функції
Обчислюємо значення цільової функції шляхом поелементного множення стовпця Cb на стовпець P та підсумовування результатів добутків.
MinP = (Cb1 * P1) + (Cb2 * P2) + (Cb3 * P3) = (M * 12) + (1 * 14) + (M * 14) = 34M+14;
Оцінки керованих змінних
Обчислюємо оцінки для кожної керованої змінної шляхом поелементного множення значень зі стовпця змінної на значення зі стовпця Cb, підсумовування результатів добутків та віднімання коефіцієнта цільової функції з їх суми для цієї змінної.
Minx1 = ((Cb1 * x1,1) + (Cb2 * x2,1) + (Cb3 * x3,1)) - kx1 = ((M * 0) + (1 * 1) + (M * 0)) - 1 = 0;
Minx2 = ((Cb1 * x1,2) + (Cb2 * x2,2) + (Cb3 * x3,2)) - kx2 = ((M * 212) + (1 * 14) + (M * 314)) - 1 = 534M-34;
Minx3 = ((Cb1 * x1,3) + (Cb2 * x2,3) + (Cb3 * x3,3)) - kx3 = ((M * 212) + (1 * 34) + (M * -14)) - 1 = 214M-14;
Minx4 = ((Cb1 * x1,4) + (Cb2 * x2,4) + (Cb3 * x3,4)) - kx4 = ((M * -1) + (1 * 0) + (M * 0)) - 0 = -M;
Minx5 = ((Cb1 * x1,5) + (Cb2 * x2,5) + (Cb3 * x3,5)) - kx5 = ((M * 12) + (1 * -14) + (M * 34)) - 0 = 114M-14;
Minx6 = ((Cb1 * x1,6) + (Cb2 * x2,6) + (Cb3 * x3,6)) - kx6 = ((M * 0) + (1 * 0) + (M * -1)) - 0 = -M;
Minx7 = ((Cb1 * x1,7) + (Cb2 * x2,7) + (Cb3 * x3,7)) - kx7 = ((M * 1) + (1 * 0) + (M * 0)) - M = 0;
Minx8 = ((Cb1 * x1,8) + (Cb2 * x2,8) + (Cb3 * x3,8)) - kx8 = ((M * -12) + (1 * 14) + (M * -34)) - M = -214M+14;
Minx9 = ((Cb1 * x1,9) + (Cb2 * x2,9) + (Cb3 * x3,9)) - kx9 = ((M * 0) + (1 * 0) + (M * 1)) - M = 0;
Елементи стовпця Q
Оскільки серед оцінок керованих змінних є додатні значення, поточна таблиця ще не має оптимального розв'язку. Тому до базису вводимо змінну з найбільшою додатною оцінкою.
Кількість змінних у базисі завжди стала, тому необхідно вибрати, яку змінну виводити з базису, для чого обчислюємо Q.
Елементи стовпця Q обчислюються шляхом ділення значень зі стовпця P на значення зі стовпця, що відповідає змінній, яка вводиться до базису:
Q1 = P1x1,2 = 12212 = 15;
Q2 = P2x2,2 = 1414 = 1;
Q3 = P3x3,2 = 14314 = 113;
Виводимо з базису змінну з найменшим додатним значенням Q.
На перетині рядка, що відповідає змінній, яка виводиться з базису, і стовпця, що відповідає змінній, яка вводиться до базису, знаходиться розв'язуючий елемент.
Цей елемент дозволить нам обчислити елементи таблиці наступної ітерації.
| B | Cb | P | x1 | x2 | x3↓ | x4 | x5 | x6 | x7 | x8 | x9 | Q |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 0 | 0 | 0 | M | M | M | ||||
| x7← | M | 413 | 0 | 0 | 2913 | -1 | -113 | 1013 | 1 | 113 | -1013 | 435 |
| x1 | 1 | 313 | 1 | 0 | 1013 | 0 | -413 | 113 | 0 | 413 | -113 | 310 |
| x2 | 1 | 113 | 0 | 1 | -113 | 0 | 313 | -413 | 0 | -313 | 413 | ∞ |
| min | 413M+413 | 0 | 0 | 2913M-413 | -M | -113M-113 | 1013M-313 | 0 | -1213M+113 | -11013M+313 | ||
Елементи стовпця базису (B)
За результатами обчислень попередньої ітерації виводимо змінну з базису x9 та ставимо на її місце x2. Всі інші клітинки залишаються незмінними.
Елементи стовпця Cb
Кожна клітинка цього стовпця дорівнює коефіцієнту, який відповідає базисній змінній у відповідному рядку.
Cb1 = M;
Cb2 = 1;
Cb3 = 1;
Значення вільних змінних і стовпця P
(Дані з попередньої ітерації беруться як вхідні дані)
Заповнюємо нулями всі клітинки, що відповідають змінній, яка щойно введена до базису:
(Розв'язуючий елемент залишається незмінним)
x1,2 = 0;
x2,2 = 0;
Переносимо рядок з розв'язуючим елементом із попередньої таблиці до поточної, поелементно поділивши його значення на розв'язуючий елемент:
x3,1 = x3,1x3,2 = 0314 = 0;
x3,2 = x3,2x3,2 = 314314 = 1;
x3,3 = x3,3x3,2 = -14314 = -113;
x3,4 = x3,4x3,2 = 0314 = 0;
x3,5 = x3,5x3,2 = 34314 = 313;
x3,6 = x3,6x3,2 = -1314 = -413;
x3,7 = x3,7x3,2 = 0314 = 0;
x3,8 = x3,8x3,2 = -34314 = -313;
x3,9 = x3,9x3,2 = 1314 = 413;
P3 = P3x3,2 = 14314 = 113;
Решта порожніх клітинок, крім рядка оцінок та стовпця Q, обчислюються методом прямокутника відносно розв'язуючого елемента:
x1,1 = (x1,1 * x3,2) - (x1,2 * x3,1)x3,2 = (0 * 314) - (212 * 0)314 = 0;
x1,3 = (x1,3 * x3,2) - (x1,2 * x3,3)x3,2 = (212 * 314) - (212 * -14)314 = 2913;
x1,4 = (x1,4 * x3,2) - (x1,2 * x3,4)x3,2 = (-1 * 314) - (212 * 0)314 = -1;
x1,5 = (x1,5 * x3,2) - (x1,2 * x3,5)x3,2 = (12 * 314) - (212 * 34)314 = -113;
x1,6 = (x1,6 * x3,2) - (x1,2 * x3,6)x3,2 = (0 * 314) - (212 * -1)314 = 1013;
x1,7 = (x1,7 * x3,2) - (x1,2 * x3,7)x3,2 = (1 * 314) - (212 * 0)314 = 1;
x1,8 = (x1,8 * x3,2) - (x1,2 * x3,8)x3,2 = (-12 * 314) - (212 * -34)314 = 113;
x1,9 = (x1,9 * x3,2) - (x1,2 * x3,9)x3,2 = (0 * 314) - (212 * 1)314 = -1013;
P1 = (P1 * x3,2) - (x1,2 * P3)x3,2 = (12 * 314) - (212 * 14)314 = 413;
x2,1 = (x2,1 * x3,2) - (x2,2 * x3,1)x3,2 = (1 * 314) - (14 * 0)314 = 1;
x2,3 = (x2,3 * x3,2) - (x2,2 * x3,3)x3,2 = (34 * 314) - (14 * -14)314 = 1013;
x2,4 = (x2,4 * x3,2) - (x2,2 * x3,4)x3,2 = (0 * 314) - (14 * 0)314 = 0;
x2,5 = (x2,5 * x3,2) - (x2,2 * x3,5)x3,2 = (-14 * 314) - (14 * 34)314 = -413;
x2,6 = (x2,6 * x3,2) - (x2,2 * x3,6)x3,2 = (0 * 314) - (14 * -1)314 = 113;
x2,7 = (x2,7 * x3,2) - (x2,2 * x3,7)x3,2 = (0 * 314) - (14 * 0)314 = 0;
x2,8 = (x2,8 * x3,2) - (x2,2 * x3,8)x3,2 = (14 * 314) - (14 * -34)314 = 413;
x2,9 = (x2,9 * x3,2) - (x2,2 * x3,9)x3,2 = (0 * 314) - (14 * 1)314 = -113;
P2 = (P2 * x3,2) - (x2,2 * P3)x3,2 = (14 * 314) - (14 * 14)314 = 313;
Значення цільової функції
Обчислюємо значення цільової функції шляхом поелементного множення стовпця Cb на стовпець P та підсумовування результатів добутків.
MinP = (Cb1 * P1) + (Cb2 * P2) + (Cb3 * P3) = (M * 413) + (1 * 313) + (1 * 113) = 413M+413;
Оцінки керованих змінних
Обчислюємо оцінки для кожної керованої змінної шляхом поелементного множення значень зі стовпця змінної на значення зі стовпця Cb, підсумовування результатів добутків та віднімання коефіцієнта цільової функції з їх суми для цієї змінної.
Minx1 = ((Cb1 * x1,1) + (Cb2 * x2,1) + (Cb3 * x3,1)) - kx1 = ((M * 0) + (1 * 1) + (1 * 0)) - 1 = 0;
Minx2 = ((Cb1 * x1,2) + (Cb2 * x2,2) + (Cb3 * x3,2)) - kx2 = ((M * 0) + (1 * 0) + (1 * 1)) - 1 = 0;
Minx3 = ((Cb1 * x1,3) + (Cb2 * x2,3) + (Cb3 * x3,3)) - kx3 = ((M * 2913) + (1 * 1013) + (1 * -113)) - 1 = 2913M-413;
Minx4 = ((Cb1 * x1,4) + (Cb2 * x2,4) + (Cb3 * x3,4)) - kx4 = ((M * -1) + (1 * 0) + (1 * 0)) - 0 = -M;
Minx5 = ((Cb1 * x1,5) + (Cb2 * x2,5) + (Cb3 * x3,5)) - kx5 = ((M * -113) + (1 * -413) + (1 * 313)) - 0 = -113M-113;
Minx6 = ((Cb1 * x1,6) + (Cb2 * x2,6) + (Cb3 * x3,6)) - kx6 = ((M * 1013) + (1 * 113) + (1 * -413)) - 0 = 1013M-313;
Minx7 = ((Cb1 * x1,7) + (Cb2 * x2,7) + (Cb3 * x3,7)) - kx7 = ((M * 1) + (1 * 0) + (1 * 0)) - M = 0;
Minx8 = ((Cb1 * x1,8) + (Cb2 * x2,8) + (Cb3 * x3,8)) - kx8 = ((M * 113) + (1 * 413) + (1 * -313)) - M = -1213M+113;
Minx9 = ((Cb1 * x1,9) + (Cb2 * x2,9) + (Cb3 * x3,9)) - kx9 = ((M * -1013) + (1 * -113) + (1 * 413)) - M = -11013M+313;
Елементи стовпця Q
Оскільки серед оцінок керованих змінних є додатні значення, поточна таблиця ще не має оптимального розв'язку. Тому до базису вводимо змінну з найбільшою додатною оцінкою.
Кількість змінних у базисі завжди стала, тому необхідно вибрати, яку змінну виводити з базису, для чого обчислюємо Q.
Елементи стовпця Q обчислюються шляхом ділення значень зі стовпця P на значення зі стовпця, що відповідає змінній, яка вводиться до базису:
Q1 = P1x1,3 = 4132913 = 435;
Q2 = P2x2,3 = 3131013 = 310;
Q3 = P3x3,3 = 113-113 = ∞;
Виводимо з базису змінну з найменшим додатним значенням Q.
На перетині рядка, що відповідає змінній, яка виводиться з базису, і стовпця, що відповідає змінній, яка вводиться до базису, знаходиться розв'язуючий елемент.
Цей елемент дозволить нам обчислити елементи таблиці наступної ітерації.
| B | Cb | P | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | Q |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 0 | 0 | 0 | M | M | M | ||||
| x3 | 1 | 435 | 0 | 0 | 1 | -1335 | -135 | 27 | 1335 | 135 | -27 | |
| x1 | 1 | 17 | 1 | 0 | 0 | 27 | -27 | -17 | -27 | 27 | 17 | |
| x2 | 1 | 335 | 0 | 1 | 0 | -135 | 835 | -27 | 135 | -835 | 27 | |
| min | 1235 | 0 | 0 | 0 | -435 | -335 | -17 | -M+435 | -M+335 | -M+17 | ||
Елементи стовпця базису (B)
За результатами обчислень попередньої ітерації виводимо змінну з базису x7 та ставимо на її місце x3. Всі інші клітинки залишаються незмінними.
Елементи стовпця Cb
Кожна клітинка цього стовпця дорівнює коефіцієнту, який відповідає базисній змінній у відповідному рядку.
Cb1 = 1;
Cb2 = 1;
Cb3 = 1;
Значення вільних змінних і стовпця P
(Дані з попередньої ітерації беруться як вхідні дані)
Заповнюємо нулями всі клітинки, що відповідають змінній, яка щойно введена до базису:
(Розв'язуючий елемент залишається незмінним)
x2,3 = 0;
x3,3 = 0;
Переносимо рядок з розв'язуючим елементом із попередньої таблиці до поточної, поелементно поділивши його значення на розв'язуючий елемент:
x1,1 = x1,1x1,3 = 02913 = 0;
x1,2 = x1,2x1,3 = 02913 = 0;
x1,3 = x1,3x1,3 = 29132913 = 1;
x1,4 = x1,4x1,3 = -12913 = -1335;
x1,5 = x1,5x1,3 = -1132913 = -135;
x1,6 = x1,6x1,3 = 10132913 = 27;
x1,7 = x1,7x1,3 = 12913 = 1335;
x1,8 = x1,8x1,3 = 1132913 = 135;
x1,9 = x1,9x1,3 = -10132913 = -27;
P1 = P1x1,3 = 4132913 = 435;
Решта порожніх клітинок, крім рядка оцінок та стовпця Q, обчислюються методом прямокутника відносно розв'язуючого елемента:
x2,1 = (x2,1 * x1,3) - (x2,3 * x1,1)x1,3 = (1 * 2913) - (1013 * 0)2913 = 1;
x2,2 = (x2,2 * x1,3) - (x2,3 * x1,2)x1,3 = (0 * 2913) - (1013 * 0)2913 = 0;
x2,4 = (x2,4 * x1,3) - (x2,3 * x1,4)x1,3 = (0 * 2913) - (1013 * -1)2913 = 27;
x2,5 = (x2,5 * x1,3) - (x2,3 * x1,5)x1,3 = (-413 * 2913) - (1013 * -113)2913 = -27;
x2,6 = (x2,6 * x1,3) - (x2,3 * x1,6)x1,3 = (113 * 2913) - (1013 * 1013)2913 = -17;
x2,7 = (x2,7 * x1,3) - (x2,3 * x1,7)x1,3 = (0 * 2913) - (1013 * 1)2913 = -27;
x2,8 = (x2,8 * x1,3) - (x2,3 * x1,8)x1,3 = (413 * 2913) - (1013 * 113)2913 = 27;
x2,9 = (x2,9 * x1,3) - (x2,3 * x1,9)x1,3 = (-113 * 2913) - (1013 * -1013)2913 = 17;
P2 = (P2 * x1,3) - (x2,3 * P1)x1,3 = (313 * 2913) - (1013 * 413)2913 = 17;
x3,1 = (x3,1 * x1,3) - (x3,3 * x1,1)x1,3 = (0 * 2913) - (-113 * 0)2913 = 0;
x3,2 = (x3,2 * x1,3) - (x3,3 * x1,2)x1,3 = (1 * 2913) - (-113 * 0)2913 = 1;
x3,4 = (x3,4 * x1,3) - (x3,3 * x1,4)x1,3 = (0 * 2913) - (-113 * -1)2913 = -135;
x3,5 = (x3,5 * x1,3) - (x3,3 * x1,5)x1,3 = (313 * 2913) - (-113 * -113)2913 = 835;
x3,6 = (x3,6 * x1,3) - (x3,3 * x1,6)x1,3 = (-413 * 2913) - (-113 * 1013)2913 = -27;
x3,7 = (x3,7 * x1,3) - (x3,3 * x1,7)x1,3 = (0 * 2913) - (-113 * 1)2913 = 135;
x3,8 = (x3,8 * x1,3) - (x3,3 * x1,8)x1,3 = (-313 * 2913) - (-113 * 113)2913 = -835;
x3,9 = (x3,9 * x1,3) - (x3,3 * x1,9)x1,3 = (413 * 2913) - (-113 * -1013)2913 = 27;
P3 = (P3 * x1,3) - (x3,3 * P1)x1,3 = (113 * 2913) - (-113 * 413)2913 = 335;
Значення цільової функції
Обчислюємо значення цільової функції шляхом поелементного множення стовпця Cb на стовпець P та підсумовування результатів добутків.
MinP = (Cb1 * P1) + (Cb2 * P2) + (Cb3 * P3) = (1 * 435) + (1 * 17) + (1 * 335) = 1235;
Оцінки керованих змінних
Обчислюємо оцінки для кожної керованої змінної шляхом поелементного множення значень зі стовпця змінної на значення зі стовпця Cb, підсумовування результатів добутків та віднімання коефіцієнта цільової функції з їх суми для цієї змінної.
Minx1 = ((Cb1 * x1,1) + (Cb2 * x2,1) + (Cb3 * x3,1)) - kx1 = ((1 * 0) + (1 * 1) + (1 * 0)) - 1 = 0;
Minx2 = ((Cb1 * x1,2) + (Cb2 * x2,2) + (Cb3 * x3,2)) - kx2 = ((1 * 0) + (1 * 0) + (1 * 1)) - 1 = 0;
Minx3 = ((Cb1 * x1,3) + (Cb2 * x2,3) + (Cb3 * x3,3)) - kx3 = ((1 * 1) + (1 * 0) + (1 * 0)) - 1 = 0;
Minx4 = ((Cb1 * x1,4) + (Cb2 * x2,4) + (Cb3 * x3,4)) - kx4 = ((1 * -1335) + (1 * 27) + (1 * -135)) - 0 = -435;
Minx5 = ((Cb1 * x1,5) + (Cb2 * x2,5) + (Cb3 * x3,5)) - kx5 = ((1 * -135) + (1 * -27) + (1 * 835)) - 0 = -335;
Minx6 = ((Cb1 * x1,6) + (Cb2 * x2,6) + (Cb3 * x3,6)) - kx6 = ((1 * 27) + (1 * -17) + (1 * -27)) - 0 = -17;
Minx7 = ((Cb1 * x1,7) + (Cb2 * x2,7) + (Cb3 * x3,7)) - kx7 = ((1 * 1335) + (1 * -27) + (1 * 135)) - M = -M+435;
Minx8 = ((Cb1 * x1,8) + (Cb2 * x2,8) + (Cb3 * x3,8)) - kx8 = ((1 * 135) + (1 * 27) + (1 * -835)) - M = -M+335;
Minx9 = ((Cb1 * x1,9) + (Cb2 * x2,9) + (Cb3 * x3,9)) - kx9 = ((1 * -27) + (1 * 17) + (1 * 27)) - M = -M+17;
Відповідь
Оскільки серед оцінок керованих змінних немає додатних значень, поточна таблиця має оптимальний розв'язок.
Значення цільової функції:
F* = 1235;
Змінні, що присутні в базисі, дорівнюють відповідним клітинкам стовпця P, всі інші змінні дорівнюють нулю:
x1 = 17;
x2 = 335;
x3 = 435;
Часті запитання
Що розв'язує цей калькулятор теорії ігор?
Він розв'язує антагоністичні ігри двох гравців за платіжною матрицею, знаходячи ціну гри та оптимальну стратегію кожного гравця — чисту стратегію в сідловій точці або мішану стратегію, коли сідлової точки не існує.
Що таке сідлова точка?
Сідлова точка — це елемент, який є мінімумом свого рядка та максимумом свого стовпця. Якщо вона існує, гра має розв'язок у чистих стратегіях, а значення сідлової точки є ціною гри.
Як обчислюються мішані стратегії?
Коли сідлової точки немає, гру перетворюють на пару задач лінійного програмування та розв'язують симплекс-методом. Отримані ймовірності вказують кожному гравцеві, як часто грати кожен варіант, щоб у середньому гарантувати ціну гри.
Що означає «ціна гри»?
Це середній виграш, який перший гравець може забезпечити собі — а другий гравець може обмежити його до цього значення — за оптимальної гри. Додатне значення вигідне гравцеві за рядками, від'ємне — гравцеві за стовпцями.