Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Звіт Мухи Б.М - ММДО4_good.docx
Скачиваний:
1
Добавлен:
14.08.2019
Размер:
325 Кб
Скачать

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

Розв’язати задачу лінійного програмування симплекс методом (номер завдання відповідає двом останнім цифрам залікової книжки студента, крім цифр 00 – які відповідають завданню під номером100)

Варіант 48

F(x1,x2) = 3x1 + 6x2 max ;

x1 + x2 8,

3x1 + 7x2 21,

x1 + 2x2 6,

0 x1 7, 0 x2 7.

2.1 Розв’язання без використання пакетів програм.

Графічне вирішення задачі

Знайдемо геометрично найбільше значення лінійної функції

F(x1,x2) = 3x1 + 6x2 max в області, заданої системою нерівностей .

x1 + x2 8,

3x1 + 7x2 21,

x1 + 2x2 6,

0 x1 7, 0 x2 7.

Малюємо графік враховуючи нерівності за рівності і відповідно визначаємо область допустимих значень.

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

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

ОДЗ

Grad N

x1 + x2 = 8

3x 1 + 7x2 =21

Всі цілочисельні рішення, що належать області G, виділені жирними крапками. Найбільше значення L(x1,x2) в області G дорівнює (0, 8) .

При цьому L(0,8)=48 - найбільше значення цільової функції в області G.

Метод Гоморі .

Вирішимо пряму задачу лінійного програмування симплексним методом, з використанням симплексної таблиці.

Визначимо максимальне значення цільової функції F(x1,x2) = 3x1 + 6x2 max за таких умов-обмежень.

x1 + x2 ≤ 8

3x1 + 7x2 ≥ 21

x1 + 2x2 ≥ 6

Для побудови першого опорного плану систему нерівностей приведемо до системи рівнянь шляхом введення додаткових змінних (перехід до канонічної форми).

В 1-й нерівності (≤) вводимо базисну змінну x3. В 2-й нерівності (≥) вводимо базисну змінну x4 зі знаком мінус. В 3-й нерівності (≥) вводимо базисну змінну x5 зі знаком мінус.

1x1 + 1x2 + 1x3 + 0x4 + 0x5 = 8

3x1 + 7x2 + 0x3-1x4 + 0x5 = 21

1x1 + 2x2 + 0x3 + 0x4-1x5 = 6

Введемо штучні змінні x: в 2-у рівність вводимо змінну x6; в 3-у рівність вводимо змінну x7;

1x1 + 1x2 + 1x3 + 0x4 + 0x5 + 0x6 + 0x7 = 8

3x1 + 7x2 + 0x3-1x4 + 0x5 + 1x6 + 0x7 = 21

1x1 + 2x2 + 0x3 + 0x4-1x5 + 0x6 + 1x7 = 6

Для постановки завдання на максимум цільову функцію запишемо так:

F(X) = 3x1+6x2 - Mx6 - Mx7 => max

За використання штучних змінних, що вводяться в цільову функцію, накладається так званий штраф величиною М, дуже велике позитивне число, яке зазвичай не задається.

Отриманий базис називається штучним, а метод рішення називається методом штучного базису.

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

З рівнянь знаходимо значення штучних змінних:

x6 = 21-3x1-7x2+x4

x7 = 6-x1-2x2+x5

які підставимо в цільову функцію:

F(X) = 3x1 + 6x2 - M(21-3x1-7x2+x4) - M(6-x1-2x2+x5) => max

або

F(X) = (3+4M)x1+(6+9M)x2+(-1M)x4+(-1M)x5+(-27M) => max

Матриця коефіцієнтів A = a(ij) цієї системи рівнянь має вигляд:

1

1

1

0

0

0

0

3

7

0

-1

0

1

0

1

2

0

0

-1

0

1

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

Вирішимо систему рівнянь відносно базисних змінних:

x3, x6, x7,

Вважаючи, що вільні змінні рівні 0, отримаємо перші опорний план: X1 = (0,0,8,0,0,21,6)

Базисне рішення називається допустимим, якщо воно невід'ємне.

Базис

B

x1

x2

x3

x4

x5

x6

x7

x3

8

1

1

1

0

0

0

0

x6

21

3

7

0

-1

0

1

0

x7

6

1

2

0

0

-1

0

1

F(X0)

-27M

-3-4M

-6-9M

0

1M

1M

0

0

Переходимо до основного алгоритму симплекс-методу.

Ітерація №1.

1. Перевірка критерію оптимальності.

Поточний опорний план неоптимальний, тому що в індексному рядку знаходяться негативні коефіцієнти.

2. Визначення нової базисної змінної.

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

3. Визначення нової вільної змінної.

Обчислимо значення Di по рядках як частка від ділення: bi / ai1

і з них виберемо найменше:

min (8 : 1 , 21 : 3 , 6 : 1 ) = 6

Отже, 3-ий рядок є провідним.

Розв’язуючий елемент дорівнює (1) і стоїть на перетині ведучого стовпця і вивідного рядка.

Базис

B

x1

x2

x3

x4

x5

x6

x7

min

x3

8

1

1

1

0

0

0

0

8

x6

21

3

7

0

-1

0

1

0

7

x7

6

1

2

0

0

-1

0

1

6

F(X1)

-27M

-3-4M

-6-9M

0

1M

1M

0

0

0

4. Перерахунок симплекс-таблиці.

Формуємо наступну частину симплексного таблиці.

Замість змінної x в план 1 увійде змінна x1 .

Рядок, який відповідає змінній x1 в плані T1, отриманий в результаті поділу всіх елементів рядка x7 плану 0 на розв’язуючий елемент РЕ=1. На місці розв’язуючий елемента в плані Т1 отримуємо 1. В інших клітинах стовпця x1 плану Т1 записуємо нулі.

Таким чином, у новому плані Т1 вже маємо заповнені рядок x1 і стовпець x1.

Всі інші елементи нового плану Т1, включаючи елементи індексного рядка, визначаються за правилом прямокутника.

Для цього вибираємо зі старого плану чотири числа, які розташовані в вершинах прямокутника і завжди включають розв’язуючий елемент РЕ.

НЕ = СЕ - (А * В) / РЕ

СТЕ - елемент старого плану, РЕ - розв’язуючий елемент (1), А і В - елементи старого плану, що утворюють прямокутник з елементами СТЕ і РЕ.

Уявімо розрахунок кожного елемента у вигляді таблиці:

B

x 1

x 2

x 3

x 4

x 5

x 6

x 7

8-(6 • 1):1

1-(1 • 1):1

1-(2 • 1):1

1-(0 • 1):1

0-(0 • 1):1

0-(-1 • 1):1

0-(0 • 1):1

0-(1 • 1):1

21-(6 • 3):1

3-(1 • 3):1

7-(2 • 3):1

0-(0 • 3):1

-1-(0 • 3):1

0-(-1 • 3):1

1-(0 • 3):1

0-(1 • 3):1

6 : 1

1 : 1

2 : 1

0 : 1

0 : 1

-1 : 1

0 : 1

1 : 1

(0)-(6 • (-3-4M)):1

(-3-4M)-(1 • (-3-4M)):1

(-6-9M)-(2 • (-3-4M)):1

(0)-(0 • (-3-4M)):1

(1M)-(0 • (-3-4M)):1

(1M)-(-1 • (-3-4M)):1

(0)-(0 • (-3-4M)):1

(0)-(1 • (-3-4M)):1

Отримуємо нову симплекс-таблицю:

Базис

B

x1

x2

x3

x4

x5

x6

x7

x3

2

0

-1

1

0

1

0

-1

x6

3

0

1

0

-1

3

1

-3

x1

6

1

2

0

0

-1

0

1

F(X1)

18-3M

0

-1M

0

1M

-3-3M

0

3+4M

Ітерація №2.

1. Перевірка критерію оптимальності.

Поточний опорний план неоптимальним, тому що в індексному рядку знаходяться негативні коефіцієнти.

2. Визначення нової базисної змінної.

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

3. Визначення нової вільної змінної.

Обчислимо значення Di по рядках як частка від ділення: bi / ai2

і з них виберемо найменше: min (- , 3 : 1 , 6 : 2 ) = 3

Отже, 2-ий рядок є провідним.

Розвязуючий елемент дорівнює (1) і стоїть на ведучого стовпця і вивідного рядка.

Базис

B

x1

x2

x3

x4

x5

x6

x7

min

x3

2

0

-1

1

0

1

0

-1

-

x6

3

0

1

0

-1

3

1

-3

3

x1

6

1

2

0

0

-1

0

1

3

F(X2)

18-3M

0

-1M

0

1M

-3-3M

0

3+4M

0

4. Перерахунок симплекс-таблиці.

Формуємо наступну частину симплексного таблиці. Замість змінної x в план Т2 увійде змінна x2 . Рядок, який відповідає змінній x2 в плані Т2, отриманий в результаті поділу всіх елементів рядка x6 плану 1 на розв’язувальний елемент РЕ=1.

На місці розв’язувального елементу в плані Т2 отримуємо 1. В інших клітинках стовпця x2 плануТ 2 записуємо нулі.

Таким чином, у новому плані Т2 заповнені стають рядок x2 і стовпець x2.

Всі інші елементи нового плану Т2, включаючи елементи індексного рядка, визначаються за правилом прямокутника.

Уявімо розрахунок кожного елемента у вигляді таблиці:

B

x 1

x 2

x 3

x 4

x 5

x 6

x 7

2-(3 • -1):1

0-(0 • -1):1

-1-(1 • -1):1

1-(0 • -1):1

0-(-1 • -1):1

1-(3 • -1):1

0-(1 • -1):1

-1-(-3 • -1):1

3 : 1

0 : 1

1 : 1

0 : 1

-1 : 1

3 : 1

1 : 1

-3 : 1

6-(3 • 2):1

1-(0 • 2):1

2-(1 • 2):1

0-(0 • 2):1

0-(-1 • 2):1

-1-(3 • 2):1

0-(1 • 2):1

1-(-3 • 2):1

(3+4M)-(3 • (-1M)):1

(0)-(0 • (-1M)):1

(-1M)-(1 • (-1M)):1

(0)-(0 • (-1M)):1

(1M)-(-1 • (-1M)):1

(-3-3M)-(3 • (-1M)):1

(0)-(1 • (-1M)):1

(3+4M)-(-3 • (-1M)):1

Отримуємо нову симплекс-таблицю:

Базис

B

x1

x2

x3

x4

x5

x6

x7

x3

5

0

0

1

-1

4

1

-4

x2

3

0

1

0

-1

3

1

-3

x1

0

1

0

0

2

-7

-2

7

F(X2)

18

0

0

0

0

-3

1M

3+1M

Ітерація №3.

1. Перевірка критерію оптимальності.

Поточний опорний план неоптимальний, тому що в індексному рядку знаходяться негативні коефіцієнти.

2. Визначення нової базисної змінної.

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

3. Визначення нової вільної змінної.

Обчислимо значення Di по рядках як частка від ділення: bi / ai5 і з них виберемо найменше:

min (5 : 4 , 3 : 3 , - ) = 1

Отже, 2-ий рядок є провідним.

Розв’язувальний елемент дорівнює (3) і стоїть на ведучого стовпця і вивідного рядка.

Базис

B

x1

x2

x3

x4

x5

x6

x7

min

x3

5

0

0

1

-1

4

1

-4

11/4

x2

3

0

1

0

-1

3

1

-3

1

x1

0

1

0

0

2

-7

-2

7

-

F(X3)

18

0

0

0

0

-3

1M

3+1M

0

4. Перерахунок симплекс-таблиці.

Формуємо наступну частину симплексного таблиці. Замість змінної x в план Т3 увійде змінна x5 . Рядок, відповідний змінній x5 в плані Т3, отриманий в результаті поділу всіх елементів рядка x2 плані Т2 на розв’язувальний елемент РЕ=3.На місці розв’язувального елемента в плані Т3 отримуємо 1.В інших клітинках стовпця x5 плану 3 записуємо нулі.

Таким чином, у новому плані 3 заповнені рядок x5 і стовпець x5.

Всі інші елементи нового плану 3, включаючи елементи індексного рядка, визначаються за правилом прямокутника.

Уявімо розрахунок кожного елемента у вигляді таблиці:

B

x 1

x 2

x 3

x 4

x 5

x 6

x 7

5-(3 • 4):3

0-(0 • 4):3

0-(1 • 4):3

1-(0 • 4):3

-1-(-1 • 4):3

4-(3 • 4):3

1-(1 • 4):3

-4-(-3 • 4):3

3 : 3

0 : 3

1 : 3

0 : 3

-1 : 3

3 : 3

1 : 3

-3 : 3

0-(3 • -7):3

1-(0 • -7):3

0-(1 • -7):3

0-(0 • -7):3

2-(-1 • -7):3

-7-(3 • -7):3

-2-(1 • -7):3

7-(-3 • -7):3

(3+1M)-(3 • (-3)):3

(0)-(0 • (-3)):3

(0)-(1 • (-3)):3

(0)-(0 • (-3)):3

(0)-(-1 • (-3)):3

(-3)-(3 • (-3)):3

(1M)-(1 • (-3)):3

(3+1M)-(-3 • (-3)):3

Отримуємо нову симплекс-таблицю:

Базис

B

x1

x2

x3

x4

x5

x6

x7

x3

1

0

-11/3

1

1/3

0

-1/3

0

x5

1

0

1/3

0

-1/3

1

1/3

-1

x1

7

1

21/3

0

-1/3

0

1/3

0

F(X3)

21

0

1

0

-1

0

1+1M

1M

Ітерація №4.

Виконую наступні кроки по відомому алгоритму

Базис

B

x1

x2

x3

x4

x5

x6

x7

min

x3

1

0

-11/3

1

1/3

0

-1/3

0

3

x5

1

0

1/3

0

-1/3

1

1/3

-1

-

x1

7

1

21/3

0

-1/3

0

1/3

0

-

F(X4)

21

0

1

0

-1

0

1+1M

1M

0

Перерахунок симплекс-таблиці.

B

x 1

x 2

x 3

x 4

x 5

x 6

x 7

1 : 1/3

0 : 1/3

-11/3 : 1/3

1 : 1/3

1/3 : 1/3

0 : 1/3

-1/3 : 1/3

0 : 1/3

1-(1 • -1/3):1/3

0-(0 • -1/3):1/3

1/3-(-11/3-1/3):1/3

0-(1 • -1/3):1/3

-1/3-(1/3-1/3):1/3

1-(0 • -1/3):1/3

1/3-(-1/3-1/3):1/3

-1-(0 • -1/3):1/3

7-(1 • -1/3):1/3

1-(0 • -1/3):1/3

21/3-(-11/3-1/3):1/3

0-(1 • -1/3):1/3

-1/3-(1/3-1/3):1/3

0-(0 • -1/3):1/3

1/3-(-1/3-1/3):1/3

0-(0 • -1/3):1/3

(1M)-(1 • (-1)):1/3

(0)-(0 • (-1)):1/3

(1)-(-11/3 • (-1)):1/3

(0)-(1 • (-1)):1/3

(-1)-(1/3 • (-1)):1/3

(0)-(0 • (-1)):1/3

(1+1M)-(-1/3 • (-1)):1/3

(1M)-(0 • (-1)):1/3

Отримуємо нову симплекс-таблицю:

Базис

B

x1

x2

x3

x4

x5

x6

x7

x4

3

0

-4

3

1

0

-1

0

x5

2

0

-1

1

0

1

0

-1

x1

8

1

1

1

0

0

0

0

F(X4)

24

0

-3

3

0

0

1M

1M

Ітерація №5.

Базис

B

x1

x2

x3

x4

x5

x6

x7

min

x4

3

0

-4

3

1

0

-1

0

-

x5

2

0

-1

1

0

1

0

-1

-

x1

8

1

1

1

0

0

0

0

8

F(X5)

24

0

-3

3

0

0

1M

1M

0

Перерахунок симплекс-таблиці.

B

x 1

x 2

x 3

x 4

x 5

x 6

x 7

3-(8 • -4):1

0-(1 • -4):1

-4-(1 • -4):1

3-(1 • -4):1

1-(0 • -4):1

0-(0 • -4):1

-1-(0 • -4):1

0-(0 • -4):1

2-(8 • -1):1

0-(1 • -1):1

-1-(1 • -1):1

1-(1 • -1):1

0-(0 • -1):1

1-(0 • -1):1

0-(0 • -1):1

-1-(0 • -1):1

8 : 1

1 : 1

1 : 1

1 : 1

0 : 1

0 : 1

0 : 1

0 : 1

(1M)-(8 • (-3)):1

(0)-(1 • (-3)):1

(-3)-(1 • (-3)):1

(3)-(1 • (-3)):1

(0)-(0 • (-3)):1

(0)-(0 • (-3)):1

(1M)-(0 • (-3)):1

(1M)-(0 • (-3)):1

Отримуємо нову симплекс-таблицю:

Базис

B

x1

x2

x3

x4

x5

x6

x7

x4

35

4

0

7

1

0

-1

0

x5

10

1

0

2

0

1

0

-1

x2

8

1

1

1

0

0

0

0

F(X5)

48

3

0

6

0

0

1M

1M

Ітерація №6.

1. Перевірка критерію оптимальності.

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

Остаточний варіант симплекс-таблиці:

Базис

B

x1

x2

x3

x4

x5

x6

x7

x4

35

4

0

7

1

0

-1

0

x5

10

1

0

2

0

1

0

-1

x2

8

1

1

1

0

0

0

0

F(X6)

48

3

0

6

0

0

1M

1M

Оптимальний план можна записати так:

x4 = 35

x5 = 10

x2 = 8

F(X) = 6•8 = 48

Рішення вийшло цілочисловим. Немає необхідності застосовувати метод Гоморі.

Оптимальний цілочисельний план можна записати так:

x4 = 35

x5 = 10

x2 = 8

F(X) = 48