Симплекс-метод онлайн калькулятор з покроковим розв'язком

F =

x1

 +

x2

 +

x3

 +

x4

x1

 +

x2

 +

x3

 +

x4

x1

 +

x2

 +

x3

 +

x4

x1

 +

x2

 +

x3

 +

x4

x1

 +

x2

 +

x3

 +

x4

Коментарі рішення
Без опису (тільки відповідь)

a

b

c

d

x

y

z

AC

i

ab
x2
xn

Randomize

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

  Про калькулятор симплекс-методу

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

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

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

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

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

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

  Що таке симплекс-метод?

Симплекс-метод — це алгоритм розв'язання задач лінійного програмування, що прагнуть максимізувати або мінімізувати лінійну цільову функцію при лінійних обмеженнях-нерівностях та рівностях, де всі змінні рішення невід'ємні. Він рухається по ребрах допустимого многогранника від одного базисного допустимого розв'язку (вершини) до сусіднього з кращим значенням цільової функції. Обмеження типу ≥ або = обробляються шляхом введення штучних змінних з великим штрафом M.

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

Спочатку перетворіть ЗЛП до стандартної (табличної) форми, додавши балансові, надлишкові та штучні змінні, щоб перетворити всі обмеження на рівності та встановити початковий базис. На кожній ітерації застосовуйте правило вибору: оберіть найбільш від'ємний скорочений коефіцієнт вартості в рядку цільової функції як вхідну змінну, потім використайте тест мінімального відношення для вибору вихідної змінної. Виконайте операцію повороту для оновлення таблиці, вводячи вхідну змінну до базису. Повторюйте, доки всі скорочені витрати в рядку цільової функції не стануть невід'ємними — тоді поточний базисний допустимий розв'язок є оптимальним.

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

F(x) = 3x1+4x2 → max
F(x) = 3x1+4x2+0x3+0x4+0x5+0x6+0x7-Mx8-Mx9 → max
2x1+x2600
2x1+x2+x3 = 600
225
+x4 = 225
5x1+4x21000
5x1+4x2+x5 = 1000
2x2150
2x2-x6+x8 = 150
0
-x7+x9 = 0

Попередній етап починається з необхідності позбутися від'ємних значень у правій частині обмежень. Для цього відповідні обмеження множаться на -1. Після цієї маніпуляції знак нерівності змінюється на протилежний.

Далі необхідно позбутися нерівностей, для чого вводимо компенсуючі змінні в ліву частину нерівностей. Якщо нерівність виду ≤, то компенсуюча змінна має знак +, якщо нерівність виду ≥, то компенсуюча змінна має знак -. Компенсуючі змінні входять до цільової функції задачі з нульовим коефіцієнтом.

Тепер у системі обмежень необхідно знайти достатню кількість базисних змінних. Кожне обмеження повинно мати одну базисну змінну. Базисна — це змінна, яка має коефіцієнт 1 при ній та зустрічається лише в одному обмеженні. Якщо в деякому обмеженні базисних змінних немає, то ми додаємо їх штучно, і штучні змінні входять до цільової функції з коефіцієнтом -M, якщо цільова функція прямує до max, і M, якщо цільова функція прямує до min.

Опис
2
Ітерація 1
BCbPx1x2x3x4x5x6x7x8x9Q
3400000-M-M
x30600211000000600
x40225000100000
x501000540010000250
x8-M15002000-101075
x9-M0000000-101
max-150M-3-2M-4000MM00

Елементи стовпця базису (B)

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

B1 = x3;

B2 = x4;

B3 = x5;

B4 = x8;

B5 = x9;

Елементи стовпця Cb

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

Cb1 = 0;

Cb2 = 0;

Cb3 = 0;

Cb4 = -M;

Cb5 = -M;

Значення вільних змінних і стовпця P

На цьому етапі обчислень не потрібно, просто переносимо значення з попереднього етапу до відповідних клітинок таблиці:

P1 = 600;

P2 = 225;

P3 = 1000;

P4 = 150;

P5 = 0;

x1,1 = 2;

x1,2 = 1;

x1,3 = 1;

x1,4 = 0;

x1,5 = 0;

x1,6 = 0;

x1,7 = 0;

x1,8 = 0;

x1,9 = 0;

x2,1 = 0;

x2,2 = 0;

x2,3 = 0;

x2,4 = 1;

x2,5 = 0;

x2,6 = 0;

x2,7 = 0;

x2,8 = 0;

x2,9 = 0;

x3,1 = 5;

x3,2 = 4;

x3,3 = 0;

x3,4 = 0;

x3,5 = 1;

x3,6 = 0;

x3,7 = 0;

x3,8 = 0;

x3,9 = 0;

x4,1 = 0;

x4,2 = 2;

x4,3 = 0;

x4,4 = 0;

x4,5 = 0;

x4,6 = -1;

x4,7 = 0;

x4,8 = 1;

x4,9 = 0;

x5,1 = 0;

x5,2 = 0;

x5,3 = 0;

x5,4 = 0;

x5,5 = 0;

x5,6 = 0;

x5,7 = -1;

x5,8 = 0;

x5,9 = 1;

Значення цільової функції

Обчислюємо значення цільової функції шляхом поелементного множення стовпця Cb на стовпець P та підсумовування результатів добутків.

MaxP = (Cb1 * P1) + (Cb2 * P2) + (Cb3 * P3) + (Cb4 * P4) + (Cb5 * P5) = (0 * 600) + (0 * 225) + (0 * 1000) + (-M * 150) + (-M * 0) = -150M;

Оцінки керованих змінних

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

Maxx1 = ((Cb1 * x1,1) + (Cb2 * x2,1) + (Cb3 * x3,1) + (Cb4 * x4,1) + (Cb5 * x5,1)) - kx1 = ((0 * 2) + (0 * 0) + (0 * 5) + (-M * 0) + (-M * 0)) - 3 = -3;

Maxx2 = ((Cb1 * x1,2) + (Cb2 * x2,2) + (Cb3 * x3,2) + (Cb4 * x4,2) + (Cb5 * x5,2)) - kx2 = ((0 * 1) + (0 * 0) + (0 * 4) + (-M * 2) + (-M * 0)) - 4 = -2M-4;

Maxx3 = ((Cb1 * x1,3) + (Cb2 * x2,3) + (Cb3 * x3,3) + (Cb4 * x4,3) + (Cb5 * x5,3)) - kx3 = ((0 * 1) + (0 * 0) + (0 * 0) + (-M * 0) + (-M * 0)) - 0 = 0;

Maxx4 = ((Cb1 * x1,4) + (Cb2 * x2,4) + (Cb3 * x3,4) + (Cb4 * x4,4) + (Cb5 * x5,4)) - kx4 = ((0 * 0) + (0 * 1) + (0 * 0) + (-M * 0) + (-M * 0)) - 0 = 0;

Maxx5 = ((Cb1 * x1,5) + (Cb2 * x2,5) + (Cb3 * x3,5) + (Cb4 * x4,5) + (Cb5 * x5,5)) - kx5 = ((0 * 0) + (0 * 0) + (0 * 1) + (-M * 0) + (-M * 0)) - 0 = 0;

Maxx6 = ((Cb1 * x1,6) + (Cb2 * x2,6) + (Cb3 * x3,6) + (Cb4 * x4,6) + (Cb5 * x5,6)) - kx6 = ((0 * 0) + (0 * 0) + (0 * 0) + (-M * -1) + (-M * 0)) - 0 = M;

Maxx7 = ((Cb1 * x1,7) + (Cb2 * x2,7) + (Cb3 * x3,7) + (Cb4 * x4,7) + (Cb5 * x5,7)) - kx7 = ((0 * 0) + (0 * 0) + (0 * 0) + (-M * 0) + (-M * -1)) - 0 = M;

Maxx8 = ((Cb1 * x1,8) + (Cb2 * x2,8) + (Cb3 * x3,8) + (Cb4 * x4,8) + (Cb5 * x5,8)) - kx8 = ((0 * 0) + (0 * 0) + (0 * 0) + (-M * 1) + (-M * 0)) - -M = 0;

Maxx9 = ((Cb1 * x1,9) + (Cb2 * x2,9) + (Cb3 * x3,9) + (Cb4 * x4,9) + (Cb5 * x5,9)) - kx9 = ((0 * 0) + (0 * 0) + (0 * 0) + (-M * 0) + (-M * 1)) - -M = 0;

Елементи стовпця Q

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

Кількість змінних у базисі завжди стала, тому необхідно вибрати, яку змінну виводити з базису, для чого обчислюємо Q.

Елементи стовпця Q обчислюються шляхом ділення значень зі стовпця P на значення зі стовпця, що відповідає змінній, яка вводиться до базису:

Q1 = P1x1,2 = 6001 = 600;

Q2 = P2x2,2 = 2250 = ;

Q3 = P3x3,2 = 10004 = 250;

Q4 = P4x4,2 = 1502 = 75;

Q5 = P5x5,2 = 00 = ;

Виводимо з базису змінну з найменшим додатним значенням Q.

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

Цей елемент дозволить нам обчислити елементи таблиці наступної ітерації.

Опис
3
Ітерація 2
BCbPx1x2x3x4x5x6x7x8x9Q
3400000-M-M
x3052520100120-12026212
x40225000100000
x507005000120-20140
x247501000-120120
x9-M0000000-101
max300-30000-2MM+20

Елементи стовпця базису (B)

За результатами обчислень попередньої ітерації виводимо змінну з базису x8 та ставимо на її місце x2. Всі інші клітинки залишаються незмінними.

Елементи стовпця Cb

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

Cb1 = 0;

Cb2 = 0;

Cb3 = 0;

Cb4 = 4;

Cb5 = -M;

Значення вільних змінних і стовпця P

(Дані з попередньої ітерації беруться як вхідні дані)

Заповнюємо нулями всі клітинки, що відповідають змінній, яка щойно введена до базису:

(Розв'язуючий елемент залишається незмінним)

x1,2 = 0;

x2,2 = 0;

x3,2 = 0;

x5,2 = 0;

Переносимо рядок з розв'язуючим елементом із попередньої таблиці до поточної, поелементно поділивши його значення на розв'язуючий елемент:

x4,1 = x4,1x4,2 = 02 = 0;

x4,2 = x4,2x4,2 = 22 = 1;

x4,3 = x4,3x4,2 = 02 = 0;

x4,4 = x4,4x4,2 = 02 = 0;

x4,5 = x4,5x4,2 = 02 = 0;

x4,6 = x4,6x4,2 = -12 = -12;

x4,7 = x4,7x4,2 = 02 = 0;

x4,8 = x4,8x4,2 = 12 = 12;

x4,9 = x4,9x4,2 = 02 = 0;

P4 = P4x4,2 = 1502 = 75;

Решта порожніх клітинок, крім рядка оцінок та стовпця Q, обчислюються методом прямокутника відносно розв'язуючого елемента:

x1,1 = (x1,1 * x4,2) - (x1,2 * x4,1)x4,2 = (2 * 2) - (1 * 0)2 = 2;

x1,3 = (x1,3 * x4,2) - (x1,2 * x4,3)x4,2 = (1 * 2) - (1 * 0)2 = 1;

x1,4 = (x1,4 * x4,2) - (x1,2 * x4,4)x4,2 = (0 * 2) - (1 * 0)2 = 0;

x1,5 = (x1,5 * x4,2) - (x1,2 * x4,5)x4,2 = (0 * 2) - (1 * 0)2 = 0;

x1,6 = (x1,6 * x4,2) - (x1,2 * x4,6)x4,2 = (0 * 2) - (1 * -1)2 = 12;

x1,7 = (x1,7 * x4,2) - (x1,2 * x4,7)x4,2 = (0 * 2) - (1 * 0)2 = 0;

x1,8 = (x1,8 * x4,2) - (x1,2 * x4,8)x4,2 = (0 * 2) - (1 * 1)2 = -12;

x1,9 = (x1,9 * x4,2) - (x1,2 * x4,9)x4,2 = (0 * 2) - (1 * 0)2 = 0;

P1 = (P1 * x4,2) - (x1,2 * P4)x4,2 = (600 * 2) - (1 * 150)2 = 525;

x2,1 = (x2,1 * x4,2) - (x2,2 * x4,1)x4,2 = (0 * 2) - (0 * 0)2 = 0;

x2,3 = (x2,3 * x4,2) - (x2,2 * x4,3)x4,2 = (0 * 2) - (0 * 0)2 = 0;

x2,4 = (x2,4 * x4,2) - (x2,2 * x4,4)x4,2 = (1 * 2) - (0 * 0)2 = 1;

x2,5 = (x2,5 * x4,2) - (x2,2 * x4,5)x4,2 = (0 * 2) - (0 * 0)2 = 0;

x2,6 = (x2,6 * x4,2) - (x2,2 * x4,6)x4,2 = (0 * 2) - (0 * -1)2 = 0;

x2,7 = (x2,7 * x4,2) - (x2,2 * x4,7)x4,2 = (0 * 2) - (0 * 0)2 = 0;

x2,8 = (x2,8 * x4,2) - (x2,2 * x4,8)x4,2 = (0 * 2) - (0 * 1)2 = 0;

x2,9 = (x2,9 * x4,2) - (x2,2 * x4,9)x4,2 = (0 * 2) - (0 * 0)2 = 0;

P2 = (P2 * x4,2) - (x2,2 * P4)x4,2 = (225 * 2) - (0 * 150)2 = 225;

x3,1 = (x3,1 * x4,2) - (x3,2 * x4,1)x4,2 = (5 * 2) - (4 * 0)2 = 5;

x3,3 = (x3,3 * x4,2) - (x3,2 * x4,3)x4,2 = (0 * 2) - (4 * 0)2 = 0;

x3,4 = (x3,4 * x4,2) - (x3,2 * x4,4)x4,2 = (0 * 2) - (4 * 0)2 = 0;

x3,5 = (x3,5 * x4,2) - (x3,2 * x4,5)x4,2 = (1 * 2) - (4 * 0)2 = 1;

x3,6 = (x3,6 * x4,2) - (x3,2 * x4,6)x4,2 = (0 * 2) - (4 * -1)2 = 2;

x3,7 = (x3,7 * x4,2) - (x3,2 * x4,7)x4,2 = (0 * 2) - (4 * 0)2 = 0;

x3,8 = (x3,8 * x4,2) - (x3,2 * x4,8)x4,2 = (0 * 2) - (4 * 1)2 = -2;

x3,9 = (x3,9 * x4,2) - (x3,2 * x4,9)x4,2 = (0 * 2) - (4 * 0)2 = 0;

P3 = (P3 * x4,2) - (x3,2 * P4)x4,2 = (1000 * 2) - (4 * 150)2 = 700;

x5,1 = (x5,1 * x4,2) - (x5,2 * x4,1)x4,2 = (0 * 2) - (0 * 0)2 = 0;

x5,3 = (x5,3 * x4,2) - (x5,2 * x4,3)x4,2 = (0 * 2) - (0 * 0)2 = 0;

x5,4 = (x5,4 * x4,2) - (x5,2 * x4,4)x4,2 = (0 * 2) - (0 * 0)2 = 0;

x5,5 = (x5,5 * x4,2) - (x5,2 * x4,5)x4,2 = (0 * 2) - (0 * 0)2 = 0;

x5,6 = (x5,6 * x4,2) - (x5,2 * x4,6)x4,2 = (0 * 2) - (0 * -1)2 = 0;

x5,7 = (x5,7 * x4,2) - (x5,2 * x4,7)x4,2 = (-1 * 2) - (0 * 0)2 = -1;

x5,8 = (x5,8 * x4,2) - (x5,2 * x4,8)x4,2 = (0 * 2) - (0 * 1)2 = 0;

x5,9 = (x5,9 * x4,2) - (x5,2 * x4,9)x4,2 = (1 * 2) - (0 * 0)2 = 1;

P5 = (P5 * x4,2) - (x5,2 * P4)x4,2 = (0 * 2) - (0 * 150)2 = 0;

Значення цільової функції

Обчислюємо значення цільової функції шляхом поелементного множення стовпця Cb на стовпець P та підсумовування результатів добутків.

MaxP = (Cb1 * P1) + (Cb2 * P2) + (Cb3 * P3) + (Cb4 * P4) + (Cb5 * P5) = (0 * 525) + (0 * 225) + (0 * 700) + (4 * 75) + (-M * 0) = 300;

Оцінки керованих змінних

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

Maxx1 = ((Cb1 * x1,1) + (Cb2 * x2,1) + (Cb3 * x3,1) + (Cb4 * x4,1) + (Cb5 * x5,1)) - kx1 = ((0 * 2) + (0 * 0) + (0 * 5) + (4 * 0) + (-M * 0)) - 3 = -3;

Maxx2 = ((Cb1 * x1,2) + (Cb2 * x2,2) + (Cb3 * x3,2) + (Cb4 * x4,2) + (Cb5 * x5,2)) - kx2 = ((0 * 0) + (0 * 0) + (0 * 0) + (4 * 1) + (-M * 0)) - 4 = 0;

Maxx3 = ((Cb1 * x1,3) + (Cb2 * x2,3) + (Cb3 * x3,3) + (Cb4 * x4,3) + (Cb5 * x5,3)) - kx3 = ((0 * 1) + (0 * 0) + (0 * 0) + (4 * 0) + (-M * 0)) - 0 = 0;

Maxx4 = ((Cb1 * x1,4) + (Cb2 * x2,4) + (Cb3 * x3,4) + (Cb4 * x4,4) + (Cb5 * x5,4)) - kx4 = ((0 * 0) + (0 * 1) + (0 * 0) + (4 * 0) + (-M * 0)) - 0 = 0;

Maxx5 = ((Cb1 * x1,5) + (Cb2 * x2,5) + (Cb3 * x3,5) + (Cb4 * x4,5) + (Cb5 * x5,5)) - kx5 = ((0 * 0) + (0 * 0) + (0 * 1) + (4 * 0) + (-M * 0)) - 0 = 0;

Maxx6 = ((Cb1 * x1,6) + (Cb2 * x2,6) + (Cb3 * x3,6) + (Cb4 * x4,6) + (Cb5 * x5,6)) - kx6 = ((0 * 12) + (0 * 0) + (0 * 2) + (4 * -12) + (-M * 0)) - 0 = -2;

Maxx7 = ((Cb1 * x1,7) + (Cb2 * x2,7) + (Cb3 * x3,7) + (Cb4 * x4,7) + (Cb5 * x5,7)) - kx7 = ((0 * 0) + (0 * 0) + (0 * 0) + (4 * 0) + (-M * -1)) - 0 = M;

Maxx8 = ((Cb1 * x1,8) + (Cb2 * x2,8) + (Cb3 * x3,8) + (Cb4 * x4,8) + (Cb5 * x5,8)) - kx8 = ((0 * -12) + (0 * 0) + (0 * -2) + (4 * 12) + (-M * 0)) - -M = M+2;

Maxx9 = ((Cb1 * x1,9) + (Cb2 * x2,9) + (Cb3 * x3,9) + (Cb4 * x4,9) + (Cb5 * x5,9)) - kx9 = ((0 * 0) + (0 * 0) + (0 * 0) + (4 * 0) + (-M * 1)) - -M = 0;

Елементи стовпця Q

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

Кількість змінних у базисі завжди стала, тому необхідно вибрати, яку змінну виводити з базису, для чого обчислюємо Q.

Елементи стовпця Q обчислюються шляхом ділення значень зі стовпця P на значення зі стовпця, що відповідає змінній, яка вводиться до базису:

Q1 = P1x1,1 = 5252 = 26212;

Q2 = P2x2,1 = 2250 = ;

Q3 = P3x3,1 = 7005 = 140;

Q4 = P4x4,1 = 750 = ;

Q5 = P5x5,1 = 00 = ;

Виводимо з базису змінну з найменшим додатним значенням Q.

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

Цей елемент дозволить нам обчислити елементи таблиці наступної ітерації.

Опис
4
Ітерація 3
BCbPx1x2x3x4x5x6x7x8x9Q
3400000-M-M
x302450010-25-31003100
x40225000100000
x13140100015250-250350
x247501000-120120
x9-M0000000-101
max720000035-45MM+450

Елементи стовпця базису (B)

За результатами обчислень попередньої ітерації виводимо змінну з базису x5 та ставимо на її місце x1. Всі інші клітинки залишаються незмінними.

Елементи стовпця Cb

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

Cb1 = 0;

Cb2 = 0;

Cb3 = 3;

Cb4 = 4;

Cb5 = -M;

Значення вільних змінних і стовпця P

(Дані з попередньої ітерації беруться як вхідні дані)

Заповнюємо нулями всі клітинки, що відповідають змінній, яка щойно введена до базису:

(Розв'язуючий елемент залишається незмінним)

x1,1 = 0;

x2,1 = 0;

x4,1 = 0;

x5,1 = 0;

Переносимо рядок з розв'язуючим елементом із попередньої таблиці до поточної, поелементно поділивши його значення на розв'язуючий елемент:

x3,1 = x3,1x3,1 = 55 = 1;

x3,2 = x3,2x3,1 = 05 = 0;

x3,3 = x3,3x3,1 = 05 = 0;

x3,4 = x3,4x3,1 = 05 = 0;

x3,5 = x3,5x3,1 = 15 = 15;

x3,6 = x3,6x3,1 = 25 = 25;

x3,7 = x3,7x3,1 = 05 = 0;

x3,8 = x3,8x3,1 = -25 = -25;

x3,9 = x3,9x3,1 = 05 = 0;

P3 = P3x3,1 = 7005 = 140;

Решта порожніх клітинок, крім рядка оцінок та стовпця Q, обчислюються методом прямокутника відносно розв'язуючого елемента:

x1,2 = (x1,2 * x3,1) - (x1,1 * x3,2)x3,1 = (0 * 5) - (2 * 0)5 = 0;

x1,3 = (x1,3 * x3,1) - (x1,1 * x3,3)x3,1 = (1 * 5) - (2 * 0)5 = 1;

x1,4 = (x1,4 * x3,1) - (x1,1 * x3,4)x3,1 = (0 * 5) - (2 * 0)5 = 0;

x1,5 = (x1,5 * x3,1) - (x1,1 * x3,5)x3,1 = (0 * 5) - (2 * 1)5 = -25;

x1,6 = (x1,6 * x3,1) - (x1,1 * x3,6)x3,1 = (12 * 5) - (2 * 2)5 = -310;

x1,7 = (x1,7 * x3,1) - (x1,1 * x3,7)x3,1 = (0 * 5) - (2 * 0)5 = 0;

x1,8 = (x1,8 * x3,1) - (x1,1 * x3,8)x3,1 = (-12 * 5) - (2 * -2)5 = 310;

x1,9 = (x1,9 * x3,1) - (x1,1 * x3,9)x3,1 = (0 * 5) - (2 * 0)5 = 0;

P1 = (P1 * x3,1) - (x1,1 * P3)x3,1 = (525 * 5) - (2 * 700)5 = 245;

x2,2 = (x2,2 * x3,1) - (x2,1 * x3,2)x3,1 = (0 * 5) - (0 * 0)5 = 0;

x2,3 = (x2,3 * x3,1) - (x2,1 * x3,3)x3,1 = (0 * 5) - (0 * 0)5 = 0;

x2,4 = (x2,4 * x3,1) - (x2,1 * x3,4)x3,1 = (1 * 5) - (0 * 0)5 = 1;

x2,5 = (x2,5 * x3,1) - (x2,1 * x3,5)x3,1 = (0 * 5) - (0 * 1)5 = 0;

x2,6 = (x2,6 * x3,1) - (x2,1 * x3,6)x3,1 = (0 * 5) - (0 * 2)5 = 0;

x2,7 = (x2,7 * x3,1) - (x2,1 * x3,7)x3,1 = (0 * 5) - (0 * 0)5 = 0;

x2,8 = (x2,8 * x3,1) - (x2,1 * x3,8)x3,1 = (0 * 5) - (0 * -2)5 = 0;

x2,9 = (x2,9 * x3,1) - (x2,1 * x3,9)x3,1 = (0 * 5) - (0 * 0)5 = 0;

P2 = (P2 * x3,1) - (x2,1 * P3)x3,1 = (225 * 5) - (0 * 700)5 = 225;

x4,2 = (x4,2 * x3,1) - (x4,1 * x3,2)x3,1 = (1 * 5) - (0 * 0)5 = 1;

x4,3 = (x4,3 * x3,1) - (x4,1 * x3,3)x3,1 = (0 * 5) - (0 * 0)5 = 0;

x4,4 = (x4,4 * x3,1) - (x4,1 * x3,4)x3,1 = (0 * 5) - (0 * 0)5 = 0;

x4,5 = (x4,5 * x3,1) - (x4,1 * x3,5)x3,1 = (0 * 5) - (0 * 1)5 = 0;

x4,6 = (x4,6 * x3,1) - (x4,1 * x3,6)x3,1 = (-12 * 5) - (0 * 2)5 = -12;

x4,7 = (x4,7 * x3,1) - (x4,1 * x3,7)x3,1 = (0 * 5) - (0 * 0)5 = 0;

x4,8 = (x4,8 * x3,1) - (x4,1 * x3,8)x3,1 = (12 * 5) - (0 * -2)5 = 12;

x4,9 = (x4,9 * x3,1) - (x4,1 * x3,9)x3,1 = (0 * 5) - (0 * 0)5 = 0;

P4 = (P4 * x3,1) - (x4,1 * P3)x3,1 = (75 * 5) - (0 * 700)5 = 75;

x5,2 = (x5,2 * x3,1) - (x5,1 * x3,2)x3,1 = (0 * 5) - (0 * 0)5 = 0;

x5,3 = (x5,3 * x3,1) - (x5,1 * x3,3)x3,1 = (0 * 5) - (0 * 0)5 = 0;

x5,4 = (x5,4 * x3,1) - (x5,1 * x3,4)x3,1 = (0 * 5) - (0 * 0)5 = 0;

x5,5 = (x5,5 * x3,1) - (x5,1 * x3,5)x3,1 = (0 * 5) - (0 * 1)5 = 0;

x5,6 = (x5,6 * x3,1) - (x5,1 * x3,6)x3,1 = (0 * 5) - (0 * 2)5 = 0;

x5,7 = (x5,7 * x3,1) - (x5,1 * x3,7)x3,1 = (-1 * 5) - (0 * 0)5 = -1;

x5,8 = (x5,8 * x3,1) - (x5,1 * x3,8)x3,1 = (0 * 5) - (0 * -2)5 = 0;

x5,9 = (x5,9 * x3,1) - (x5,1 * x3,9)x3,1 = (1 * 5) - (0 * 0)5 = 1;

P5 = (P5 * x3,1) - (x5,1 * P3)x3,1 = (0 * 5) - (0 * 700)5 = 0;

Значення цільової функції

Обчислюємо значення цільової функції шляхом поелементного множення стовпця Cb на стовпець P та підсумовування результатів добутків.

MaxP = (Cb1 * P1) + (Cb2 * P2) + (Cb3 * P3) + (Cb4 * P4) + (Cb5 * P5) = (0 * 245) + (0 * 225) + (3 * 140) + (4 * 75) + (-M * 0) = 720;

Оцінки керованих змінних

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

Maxx1 = ((Cb1 * x1,1) + (Cb2 * x2,1) + (Cb3 * x3,1) + (Cb4 * x4,1) + (Cb5 * x5,1)) - kx1 = ((0 * 0) + (0 * 0) + (3 * 1) + (4 * 0) + (-M * 0)) - 3 = 0;

Maxx2 = ((Cb1 * x1,2) + (Cb2 * x2,2) + (Cb3 * x3,2) + (Cb4 * x4,2) + (Cb5 * x5,2)) - kx2 = ((0 * 0) + (0 * 0) + (3 * 0) + (4 * 1) + (-M * 0)) - 4 = 0;

Maxx3 = ((Cb1 * x1,3) + (Cb2 * x2,3) + (Cb3 * x3,3) + (Cb4 * x4,3) + (Cb5 * x5,3)) - kx3 = ((0 * 1) + (0 * 0) + (3 * 0) + (4 * 0) + (-M * 0)) - 0 = 0;

Maxx4 = ((Cb1 * x1,4) + (Cb2 * x2,4) + (Cb3 * x3,4) + (Cb4 * x4,4) + (Cb5 * x5,4)) - kx4 = ((0 * 0) + (0 * 1) + (3 * 0) + (4 * 0) + (-M * 0)) - 0 = 0;

Maxx5 = ((Cb1 * x1,5) + (Cb2 * x2,5) + (Cb3 * x3,5) + (Cb4 * x4,5) + (Cb5 * x5,5)) - kx5 = ((0 * -25) + (0 * 0) + (3 * 15) + (4 * 0) + (-M * 0)) - 0 = 35;

Maxx6 = ((Cb1 * x1,6) + (Cb2 * x2,6) + (Cb3 * x3,6) + (Cb4 * x4,6) + (Cb5 * x5,6)) - kx6 = ((0 * -310) + (0 * 0) + (3 * 25) + (4 * -12) + (-M * 0)) - 0 = -45;

Maxx7 = ((Cb1 * x1,7) + (Cb2 * x2,7) + (Cb3 * x3,7) + (Cb4 * x4,7) + (Cb5 * x5,7)) - kx7 = ((0 * 0) + (0 * 0) + (3 * 0) + (4 * 0) + (-M * -1)) - 0 = M;

Maxx8 = ((Cb1 * x1,8) + (Cb2 * x2,8) + (Cb3 * x3,8) + (Cb4 * x4,8) + (Cb5 * x5,8)) - kx8 = ((0 * 310) + (0 * 0) + (3 * -25) + (4 * 12) + (-M * 0)) - -M = M+45;

Maxx9 = ((Cb1 * x1,9) + (Cb2 * x2,9) + (Cb3 * x3,9) + (Cb4 * x4,9) + (Cb5 * x5,9)) - kx9 = ((0 * 0) + (0 * 0) + (3 * 0) + (4 * 0) + (-M * 1)) - -M = 0;

Елементи стовпця Q

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

Кількість змінних у базисі завжди стала, тому необхідно вибрати, яку змінну виводити з базису, для чого обчислюємо Q.

Елементи стовпця Q обчислюються шляхом ділення значень зі стовпця P на значення зі стовпця, що відповідає змінній, яка вводиться до базису:

Q1 = P1x1,6 = 245-310 = ;

Q2 = P2x2,6 = 2250 = ;

Q3 = P3x3,6 = 14025 = 350;

Q4 = P4x4,6 = 75-12 = ;

Q5 = P5x5,6 = 00 = ;

Виводимо з базису змінну з найменшим додатним значенням Q.

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

Цей елемент дозволить нам обчислити елементи таблиці наступної ітерації.

Опис
5
Ітерація 4
BCbPx1x2x3x4x5x6x7x8x9Q
3400000-M-M
x3035034010-140000
x40225000100000
x603502120001210-10
x24250114100140000
x9-M0000000-101
max1000200010MM0

Елементи стовпця базису (B)

За результатами обчислень попередньої ітерації виводимо змінну з базису x1 та ставимо на її місце x6. Всі інші клітинки залишаються незмінними.

Елементи стовпця Cb

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

Cb1 = 0;

Cb2 = 0;

Cb3 = 0;

Cb4 = 4;

Cb5 = -M;

Значення вільних змінних і стовпця P

(Дані з попередньої ітерації беруться як вхідні дані)

Заповнюємо нулями всі клітинки, що відповідають змінній, яка щойно введена до базису:

(Розв'язуючий елемент залишається незмінним)

x1,6 = 0;

x2,6 = 0;

x4,6 = 0;

x5,6 = 0;

Переносимо рядок з розв'язуючим елементом із попередньої таблиці до поточної, поелементно поділивши його значення на розв'язуючий елемент:

x3,1 = x3,1x3,6 = 125 = 212;

x3,2 = x3,2x3,6 = 025 = 0;

x3,3 = x3,3x3,6 = 025 = 0;

x3,4 = x3,4x3,6 = 025 = 0;

x3,5 = x3,5x3,6 = 1525 = 12;

x3,6 = x3,6x3,6 = 2525 = 1;

x3,7 = x3,7x3,6 = 025 = 0;

x3,8 = x3,8x3,6 = -2525 = -1;

x3,9 = x3,9x3,6 = 025 = 0;

P3 = P3x3,6 = 14025 = 350;

Решта порожніх клітинок, крім рядка оцінок та стовпця Q, обчислюються методом прямокутника відносно розв'язуючого елемента:

x1,1 = (x1,1 * x3,6) - (x1,6 * x3,1)x3,6 = (0 * 25) - (-310 * 1)25 = 34;

x1,2 = (x1,2 * x3,6) - (x1,6 * x3,2)x3,6 = (0 * 25) - (-310 * 0)25 = 0;

x1,3 = (x1,3 * x3,6) - (x1,6 * x3,3)x3,6 = (1 * 25) - (-310 * 0)25 = 1;

x1,4 = (x1,4 * x3,6) - (x1,6 * x3,4)x3,6 = (0 * 25) - (-310 * 0)25 = 0;

x1,5 = (x1,5 * x3,6) - (x1,6 * x3,5)x3,6 = (-25 * 25) - (-310 * 15)25 = -14;

x1,7 = (x1,7 * x3,6) - (x1,6 * x3,7)x3,6 = (0 * 25) - (-310 * 0)25 = 0;

x1,8 = (x1,8 * x3,6) - (x1,6 * x3,8)x3,6 = (310 * 25) - (-310 * -25)25 = 0;

x1,9 = (x1,9 * x3,6) - (x1,6 * x3,9)x3,6 = (0 * 25) - (-310 * 0)25 = 0;

P1 = (P1 * x3,6) - (x1,6 * P3)x3,6 = (245 * 25) - (-310 * 140)25 = 350;

x2,1 = (x2,1 * x3,6) - (x2,6 * x3,1)x3,6 = (0 * 25) - (0 * 1)25 = 0;

x2,2 = (x2,2 * x3,6) - (x2,6 * x3,2)x3,6 = (0 * 25) - (0 * 0)25 = 0;

x2,3 = (x2,3 * x3,6) - (x2,6 * x3,3)x3,6 = (0 * 25) - (0 * 0)25 = 0;

x2,4 = (x2,4 * x3,6) - (x2,6 * x3,4)x3,6 = (1 * 25) - (0 * 0)25 = 1;

x2,5 = (x2,5 * x3,6) - (x2,6 * x3,5)x3,6 = (0 * 25) - (0 * 15)25 = 0;

x2,7 = (x2,7 * x3,6) - (x2,6 * x3,7)x3,6 = (0 * 25) - (0 * 0)25 = 0;

x2,8 = (x2,8 * x3,6) - (x2,6 * x3,8)x3,6 = (0 * 25) - (0 * -25)25 = 0;

x2,9 = (x2,9 * x3,6) - (x2,6 * x3,9)x3,6 = (0 * 25) - (0 * 0)25 = 0;

P2 = (P2 * x3,6) - (x2,6 * P3)x3,6 = (225 * 25) - (0 * 140)25 = 225;

x4,1 = (x4,1 * x3,6) - (x4,6 * x3,1)x3,6 = (0 * 25) - (-12 * 1)25 = 114;

x4,2 = (x4,2 * x3,6) - (x4,6 * x3,2)x3,6 = (1 * 25) - (-12 * 0)25 = 1;

x4,3 = (x4,3 * x3,6) - (x4,6 * x3,3)x3,6 = (0 * 25) - (-12 * 0)25 = 0;

x4,4 = (x4,4 * x3,6) - (x4,6 * x3,4)x3,6 = (0 * 25) - (-12 * 0)25 = 0;

x4,5 = (x4,5 * x3,6) - (x4,6 * x3,5)x3,6 = (0 * 25) - (-12 * 15)25 = 14;

x4,7 = (x4,7 * x3,6) - (x4,6 * x3,7)x3,6 = (0 * 25) - (-12 * 0)25 = 0;

x4,8 = (x4,8 * x3,6) - (x4,6 * x3,8)x3,6 = (12 * 25) - (-12 * -25)25 = 0;

x4,9 = (x4,9 * x3,6) - (x4,6 * x3,9)x3,6 = (0 * 25) - (-12 * 0)25 = 0;

P4 = (P4 * x3,6) - (x4,6 * P3)x3,6 = (75 * 25) - (-12 * 140)25 = 250;

x5,1 = (x5,1 * x3,6) - (x5,6 * x3,1)x3,6 = (0 * 25) - (0 * 1)25 = 0;

x5,2 = (x5,2 * x3,6) - (x5,6 * x3,2)x3,6 = (0 * 25) - (0 * 0)25 = 0;

x5,3 = (x5,3 * x3,6) - (x5,6 * x3,3)x3,6 = (0 * 25) - (0 * 0)25 = 0;

x5,4 = (x5,4 * x3,6) - (x5,6 * x3,4)x3,6 = (0 * 25) - (0 * 0)25 = 0;

x5,5 = (x5,5 * x3,6) - (x5,6 * x3,5)x3,6 = (0 * 25) - (0 * 15)25 = 0;

x5,7 = (x5,7 * x3,6) - (x5,6 * x3,7)x3,6 = (-1 * 25) - (0 * 0)25 = -1;

x5,8 = (x5,8 * x3,6) - (x5,6 * x3,8)x3,6 = (0 * 25) - (0 * -25)25 = 0;

x5,9 = (x5,9 * x3,6) - (x5,6 * x3,9)x3,6 = (1 * 25) - (0 * 0)25 = 1;

P5 = (P5 * x3,6) - (x5,6 * P3)x3,6 = (0 * 25) - (0 * 140)25 = 0;

Значення цільової функції

Обчислюємо значення цільової функції шляхом поелементного множення стовпця Cb на стовпець P та підсумовування результатів добутків.

MaxP = (Cb1 * P1) + (Cb2 * P2) + (Cb3 * P3) + (Cb4 * P4) + (Cb5 * P5) = (0 * 350) + (0 * 225) + (0 * 350) + (4 * 250) + (-M * 0) = 1000;

Оцінки керованих змінних

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

Maxx1 = ((Cb1 * x1,1) + (Cb2 * x2,1) + (Cb3 * x3,1) + (Cb4 * x4,1) + (Cb5 * x5,1)) - kx1 = ((0 * 34) + (0 * 0) + (0 * 212) + (4 * 114) + (-M * 0)) - 3 = 2;

Maxx2 = ((Cb1 * x1,2) + (Cb2 * x2,2) + (Cb3 * x3,2) + (Cb4 * x4,2) + (Cb5 * x5,2)) - kx2 = ((0 * 0) + (0 * 0) + (0 * 0) + (4 * 1) + (-M * 0)) - 4 = 0;

Maxx3 = ((Cb1 * x1,3) + (Cb2 * x2,3) + (Cb3 * x3,3) + (Cb4 * x4,3) + (Cb5 * x5,3)) - kx3 = ((0 * 1) + (0 * 0) + (0 * 0) + (4 * 0) + (-M * 0)) - 0 = 0;

Maxx4 = ((Cb1 * x1,4) + (Cb2 * x2,4) + (Cb3 * x3,4) + (Cb4 * x4,4) + (Cb5 * x5,4)) - kx4 = ((0 * 0) + (0 * 1) + (0 * 0) + (4 * 0) + (-M * 0)) - 0 = 0;

Maxx5 = ((Cb1 * x1,5) + (Cb2 * x2,5) + (Cb3 * x3,5) + (Cb4 * x4,5) + (Cb5 * x5,5)) - kx5 = ((0 * -14) + (0 * 0) + (0 * 12) + (4 * 14) + (-M * 0)) - 0 = 1;

Maxx6 = ((Cb1 * x1,6) + (Cb2 * x2,6) + (Cb3 * x3,6) + (Cb4 * x4,6) + (Cb5 * x5,6)) - kx6 = ((0 * 0) + (0 * 0) + (0 * 1) + (4 * 0) + (-M * 0)) - 0 = 0;

Maxx7 = ((Cb1 * x1,7) + (Cb2 * x2,7) + (Cb3 * x3,7) + (Cb4 * x4,7) + (Cb5 * x5,7)) - kx7 = ((0 * 0) + (0 * 0) + (0 * 0) + (4 * 0) + (-M * -1)) - 0 = M;

Maxx8 = ((Cb1 * x1,8) + (Cb2 * x2,8) + (Cb3 * x3,8) + (Cb4 * x4,8) + (Cb5 * x5,8)) - kx8 = ((0 * 0) + (0 * 0) + (0 * -1) + (4 * 0) + (-M * 0)) - -M = M;

Maxx9 = ((Cb1 * x1,9) + (Cb2 * x2,9) + (Cb3 * x3,9) + (Cb4 * x4,9) + (Cb5 * x5,9)) - kx9 = ((0 * 0) + (0 * 0) + (0 * 0) + (4 * 0) + (-M * 1)) - -M = 0;

Відповідь

Оскільки серед оцінок керованих змінних немає від'ємних значень, поточна таблиця має оптимальний розв'язок.

Значення цільової функції:

F* = 1000;

Змінні, що присутні в базисі, дорівнюють відповідним клітинкам стовпця P, всі інші змінні дорівнюють нулю:

x1 = 0;

x2 = 250;

Опис
Answer
F → max
F* = 1000
X* = (0250)
Змінні2Обмеження5Цільова функціяmaxF*1000

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

Для чого використовується симплекс-метод?

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

Як цей калькулятор обробляє максимізацію та мінімізацію?

Виберіть «max» або «min» над рядком цільової функції. Мінімізація розв'язується внутрішньо шляхом заперечення цільової функції та її максимізації, тож зазначений оптимум завжди відповідає обраному вами напрямку.

Що означають результати «несумісна» та «необмежена»?

«Несумісна» означає, що жодна точка не задовольняє всі обмеження одночасно, тож розв'язку немає. «Необмежена» означає, що цільова функція може необмежено зростати всередині області допустимих розв'язків, тож скінченного оптимуму не існує. Калькулятор повідомляє про це замість числового оптимуму.

Навіщо використовуються штучні змінні та велике M?

Обмеження типу ≥ або = не мають очевидного початкового опорного допустимого розв'язку, тож метод додає штучні змінні та штрафує їх великою сталою M у цільовій функції. Цей штраф великого M зводить штучні змінні до нуля, відновлюючи коректний розв'язок початкової задачі.

  Джерела