Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ек.-математ. моделювання.docx
Скачиваний:
9
Добавлен:
07.12.2018
Размер:
1.75 Mб
Скачать

Варіанти завдань:

Варіанти

1

2

3

4

5

6

7

8

C1

20,8

19,6

21,0

22,0

22,3

22,6

25,0

24,1

C2

2635

2365

2011

2500

2236

2295

2601

2460

Варіанти

9

10

11

12

13

14

15

16

C1

20,3

19,8

16,5

17,9

20,1

20,5

20,6

19,8

C2

2013

2156

2103

2231

2314

2010

2310

2130

Теоретичні відомості

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

У розглянутих вище прикладах оптимальний розв’язок отриманий шляхом послідовного переходу від первинного допустимого базисного розв’язку до наступного, "кращого", і так – до досягнення критерію оптимальності. Однак не завжди на першому ж кроці виходить допустимий базисний розв’язок. У наступному прикладі розглянемо один з можливих алгоритмів одержання допустимого базисного розв’язку.

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

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

Якщо в умові задачі присутні обмеження-нерівності, то перетворення їх на рівняння виконується за допомогою введення додаткових змінних, які

26

вводяться до лівої частини обмежень:

1. Якщо обмеження має тип «≤», то додаткова змінна вводиться з коефіцієнтом «+1», економічно вона позначає залишок або резерв відповідного ресурсу.

2. Якщо обмеження має тип «>», то додаткова змінна вводиться з коефіцієнтом «-1»,економічно вона позначає надлишок відповідного ресурсу або вміст речовини понад мінімальну потребу (отримання продукції понад план).

У цільовій функції задачі додаткові змінні мають коефіцієнт нуль.

Після зведення задачі до канонічного вигляду її записують у векторній формі. За означенням опорного плану задачі лінійного програмування його утворюють т одиничних лінійно незалежних векторів, які становлять базис m- вимірного простору (де т -кількість обмежень у задачі лінійного програмування).

На цьому етапі розв'язування задачі можливі такі випадки:

• після запису задачі у векторній формі в системі обмежень є необхідна кількість одиничних векторів. Тоді початковий опорний план визначається безпосередньо без додаткових дій;

• у системі обмежень немає необхідної кількості одиничних незалежних векторів. Тоді для побудови першого опорного плану застосовують метод штучного базису. Ідея його полягає в тому, що відсутні одиничні вектори можна дістати, увівши до відповідних обмежень деякі змінні з коефіцієнтом +1, які називаються штучними. У цільовій функції задачі лінійного програмування штучні змінні мають коефіцієнт +М (для задачі на min) або -M (для задачі на mах), де М досить велике додатне число.

Штучні змінні економічного змісту не мають.

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

27

лінійного програмування.

Приклад 1. Продукція чотирьох видів А, В, С і Д проходить послідовну обробку на двох верстатах. Тривалість обробки одиниці продукції кожного виду

задано таблицею.

Верстат

Тривалість обробки, год, одиниці продукції

А

В

С

Д

1

2

3

4

2

2

3

2

1

2

Витрати на виробництво одиниці продукції кожного виду визначають як величини, прямо пропорційні до часу використання верстатів (у машино-годинах). Вартість однієї машино-год становить 10 дол. для верстата 1 і 15 дол. – для верстата

2. Можливий час використання верстатів обмежений: для верстата 1 він становить

450 машино-год, а для верстата 2 – 380 машино-год.

Ціна одиниці продукції кожного виду дорівнює відповідно 73, 70, 55 та 45

дол.

Визначити оптимальний план виробництва продукції всіх чотирьох видів,

який максимізує загальний чистий прибуток.

Побудова математичної моделі. Нехай xj – план виробництва продукції j-го виду, де j може набувати значень від 1 до 4.

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

для верстата 1 2x1 + 3х2 + 4x3 + 2х4 < 450 (машино-год);

для верстата 2 3х1 + 2х2 + х3 + 2х4 < 380 (машино-год).

Цільова функція задачі визначається як загальний чистий прибуток від реалізації готової продукції і складається з різниці між ціною та собівартістю виготовлення продукції кожного виду:

Z = (73-(2· 10 + 3· 15))x1+(70-(3· 10 + 2· 15))x2 +

+ (55-(4· 10 + 1· 15))x3+(45-(2· 10 + 2· 15))x4; Z = 8x1+10x2+0xз-5x4.

Отже, математична модель поставленої задачі має такий вигляд:

mах (8x1 + 10x2-5x4);

2x 3x

4x 2x

28

450,

;

1 2 3 4

3x1

2x2

x3 2 x4

380,

x j 0, j

1,4.

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

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

частини обмежень додаткові змінні х5 та х6:

2x1

3x1

3x2

2x2

4 x3

x3

2x4 x5

2x4 x6

450,

380,

x j 0, j

1,6.

Ці додаткові змінні за економічним змістом означають можливий, але не використаний для виробництва продукції час роботи верстатів 1 та 2. У цільовій функції Z додаткові змінні мають коефіцієнти, які дорівнюють нулю:

Max (8x1+10x2+0x3-5x4+0· x5+0· x6).

Канонічну систему обмежень задачі запишемо у векторній формі:

x1 A1

де

x2 A2

x3 A3

x4 A4

x5 A5

x6 A6

A0 ,

r 2 r

3 r

4 r

2 r

1 r

0 r

450

A1

, A2

, A3

, A4

, A5

, A6

, A0 .

3

2

1

r

2

0

1

380

Оскільки вектори

А5 та

А6 одиничні та лінійно незалежні, саме з них

складається початковий базис у зазначеній системі векторів. Змінні задачі x5 та х6, що відповідають одиничним базисним векторам, називають базисними, а решту – вільними змінними задачі лінійного програмування. Прирівнюючи вільні змінні до нуля, з кожного обмеження задачі дістаємо значення базисних змінних:

x1=х2=х3=х4=0, х5= 450, х6 =380.

Згідно з визначеними

задач матиме вигляд

x j ( j

1,6)

векторна форма запису системи обмежень

0 A1

0 A2

0 A3

0 A4

450 A5

380 A6

A0 .

29

Оскільки додатні коефіцієнти х5 та х6 відповідають лінійно незалежним векторам, то за означенням

х0 = (0; 0; 0; 0; 450; 380)

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

Z0= 8 · 0 + 10· 0-5· 0 + 0· 450 + 0· 380 = 0.

Приклад 2. Розв'язати задачу 1 із додатковою умовою:

продукція С має виготовлятися в кількості не менш як 9 одиниць.

Розв'язування. Математичну модель сформульованої задачі запишемо так:

Z 8 x1

10 x2

5 x4

max;

2 x1

3 x1

x3

x j

3 x2

2 x2

9,

0, j

4 x3

x3

1,4.

2 x4

2 x4

450 ,

380 ,

Застосовуючи для розв'язування поставленої задачі симплекс-метод,

спочатку записуємо систему обмежень у канонічній формі, а далі — у векторній:

Z 3 x1

10 x2

5 x4

0 x5

0 x6

0 x7

max;

2 x1

3 x1

x3

x j

3 x2

2 x2

x7

0, j

4 x3

x3

9,

1,7.

2 x4 x5

2 x4 x6

450 ,

380 ,

Зауважимо, що нерівність типу «>» у рівняння перетворюємо введенням у ліву частину обмеження додаткової змінної зі знаком «-».

Векторна форма запису:

x1 A1

де

x2 A2

2

x3 A3

3

x4 A4

4

x5 A5

x6 A6

2

x7 A7

1

A0 ,

0

r r

r

r

r

r

A1 3 , A2

0

2 , A3

0

1 , A4

1

2 , A5

0

0 , A6

0

1 ,

0

     

     

0

450

r r

A7 0 , A0

380 .

1

9

30

r r

Серед записаних векторів є лише два одиничні А5 та

А6 , а базис у

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

0

r

штучну змінну я», якій відповідатиме одиничний вектор А8

0 .

1

 

Тепер можемо розглянути розширену задачу лінійного програмування:

max (8 x1

10 x2

5 x4

0 x5

0 x6

0 x7

Mx 8 )

2 x1

3 x1

x3

x j

3 x2

2 x2

x7

0, j

4 x3

x3

x8 9,

1,8.

2 x4 x5

2 x4 x6

450 ,

380 ,

На відміну від додаткових змінних штучна змінна x8 має в цільовій функції Z коефіцієнт +М (для задачі на min) або (для задачі на mах), де М – досить велике додатне число.

У розширеній задачі базисними змінними є х5, х6, х8, а решта змінних вільні.

Початковий опорний план задачі:

хо = (0; 0; 0; 0; 450; 380; 0; 9),

Z0= 8 · 0 + 10· 0 + 0· 0-5· 0+ 0· 450+ 0· 380 + 0· 0-М· 9 = -.

Реалізація симплекс-методу в симплексних-таблицях

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

методом складається з п'яти етапів:

1. Визначення початкового опорного плану задачі лінійного програмування.

2. Побудова симплексної таблиці.

3. Перевірка опорного плану на оптимальність за допомогою оцінок Zj – Cj. Якщо всі оцінки задовольняють умову оптимальності, то визначений опорний план є оптимальним планом задачі. Якщо хоча б одна з оцінок Zj – Cj,- не задовольняє умову оптимальності, то переходять до нового опорного плану або встановлюють, що оптимального плану задачі не існує.

31

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

5. Повторення дій починаючи з п. 3.

Розглянемо докладніше кожний з етапів алгоритму, починаючи з другого.

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

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

Наступний стовпчик симплексної таблиці – «Сбаз» – коефіцієнти при базисних змінних у цільовій функції задачі.

У третьому стовпчику – «План» – записують значення базисних змінних і відшукувані у процесі розв'язування задачі компоненти оптимального плану.

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

3. Перевіряють опорний план на оптимальність згідно з наведеною далі теоремою.

Теорема (ознака оптимальності опорного плану). Опорний план

Х * ( х* , х* ,..., х* ) задачі лінійного програмування є оптимальним, якщо для всіх

1 2 п

j( j

1, n)

виконується умова

Zj – Cj > 0 (для задачі на mах)

або

Zj – Cj < 0 (для задачі на mіn)

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

нулю.

Значення оцінок Zj – Cj визначають за формулою

32

j Z j C j

m

ci aij c j

i 1

( j 1, n)

або безпосередньо із симплексної таблиці як скалярний добуток векторів- стовпчиків «Сбаз» та «xj» мінус відповідний коефіцієнт Cj. Розраховані оцінки записують в окремий рядок симплексної таблиці, який називають оціночним.

У процесі перевірки умови оптимальності можливі такі випадки:

а) усі

j ( j

1, n) задовольняють умову оптимальності, і тоді визначений

опорний план є оптимальним;

б) не всі j задовольняють умову оптимальності, і тоді потрібно виконати перехід до наступного, нового опорного плану задачі.

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

тобто виключенням з нього деякої змінної та введенням замість неї нової з числа вільних змінних задачі.

Змінна, яка включається до нового базису, відповідає тій оцінці Zj – Cj, що не задовольняє умову оптимальності. Якщо таких оцінок кілька, серед них вибирають найбільшу за абсолютною величиною і відповідну їй змінну вводять до базису. Припустимо, що індекс зазначеної змінної k Відповідний k-й стовпчик симплексної таблиці називають напрямним.

Для визначення змінної, що має бути виключена з базису, знаходять для всіх додатних аjk напрямного стовпчика величину = bj/ajk. Вибирають найменше значення , яке вказує на змінну, що виводиться з базису. Припустимо, що це виконується для і = r. Відповідний рядок симплексної таблиці називатиметься напрямним..

Перетином напрямного стовпчика та напрямного рядка визначається число

симплексної таблиці аrk, яке називають розв'язувальним елементом. За допомогою елемента аrk і методу Йордана–Гаусса розраховують нову симплексну таблицю.

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

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

33

1. Якщо в оціночному рядку останньої симплексної таблиці оцінка Zj – Cj =

0 відповідає вільній (небазисній) змінній, то це означає, що задача лінійного програмування має альтернативний оптимальний план. Отримати його можна, вибравши розв язувальний елемент у зазначеному стовпчику таблиці та здійснивши один крок симплекс-методом.

2. Якщо при переході у симплекс-методі від одного опорного плану задачі

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

3. Якщо для опорного плану задачі лінійного програмування всі оцінки Zj

Cj ( j

1, n) задовольняють умову оптимальності, але при цьому хоча б одна

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

Приклад 3. Для прикладу 1. складемо симплексну таблицю для першого

опорного плану задачі.

Базис

Сбаз

План

8

10

0

-5

0

0

0

х1

х2

х3

х4

х5

х6

x5

x6

0

0

450

380

2

3

3

2

4

1

2

2

1

0

0

1

150

190

Zj – Cj>0

0

-8

-10

0

5

0

0

Елементи останнього рядка симплекс-таблиці є оцінками А/, за допомогою яких опорний план перевіряють на оптимальність. Їх визначають так:

Z1 – C1=(0· 2 + 0· 3)-8 = -8;

Z2 – C2 = (0· 3 + 0· 2)-10 = -10; Z3 – C3=(0· 4 + 0· І)-0 = 0;

Z4 – C4=(0· 2 + 0· 2)-(-5) = 5; Z5 – C5= (0· 1 + 0· 0)-0 = 0;

Z6 – C6= (0· 0 + 0· 1)-0 = 0.

У стовпчику «План» оціночного рядка записують значення цільової

34

функції Z, якого вона набуває для визначеного опорного плану: Z0 =0· 450 +

0· 380 = 0.

3. Після обчислення всіх оцінок опорний план перевіряють на оптимальність. Для цього продивляються елементи оцінкового рядка. Якщо всі

j 0 (для задачі на mах) або

j 0 (для задачі на mіn), визначений опорний план

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

на mіn), то опорний план є неоптимальним і його можна поліпшити.

У цій задачі в оцінковому рядку дві оцінки 1

8 та 2

10 суперечать

умові оптимальності, і тому перший визначений опорний план є неоптимальним. За алгоритмом симплекс-методу необхідно від нього перейти до іншого опорного плану задачі.

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

Для введення до нового базису беремо змінну х2, оскільки їй відповідає найбільша за абсолютною величиною оцінка серед тих, які не задовольняють умову оптимальності ( |-10 | > |-10 | ).

Щоб визначити змінну, яка підлягає виключенню з поточного базису, для всіх додатних елементів стовпчика «х2» знаходимо відношення = bi/ai2 і вибираємо найменше значення. Згідно з даними симплексної таблиці бачимо, що mіn = {450/3; 380/2} = 150, і тому з базису виключаємо змінну x5, а число а12 = 3 називатимемо розвзувальним елементом. Подальший перехід до нового опорного плану задачі полягає в побудові наступної симплексної таблиці, елементи якої розраховують за методом Йордана–Гаусса.

Друга симплексна таблиця має такий вигляд:

Базис

Сбаз

План

8

10

0

-5

0

0

0

х1

х2

x3

х4

х5

х6

x5

x6

10

0

150

80

2/3

5/3

1

0

4/5

-5/3

2/3

2/3

1/3

-2/3

0

1

225

48

Zj – Cj>0

1500

-4/3

0

40/3

35/3

10/3

0

35

У цій таблиці спочатку заповнюють два перших стовпчики «Базис» і

«Сбаз», а решту елементів нової таблиці розраховують за розглянутими далі правилами:

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

2. Розв'язувальний стовпчик у новій таблиці записують як диничний з одиницею замість розв'язувального елемента.

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

Усі інші елементи наступної симплексної таблиці розраховують за

правилом прямокутника.

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

1— розв'язувальний елемент;

2— число, що стоїть на місці елемента нової симплексної таблиці,

який ми маємо розрахувати;

3 та 4 — елементи, що розміщуються в двох інших протилежних вершинах умовного прямокутника.

Необхідний елемент нової симплекс-таблиці визначають так:

Число 1 Число 2 - Число 3 Число 4

Розв' язувальний елемент

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

36

Тоді а 24 =(3· 2-2· 2):3 = 2/3. Це значення записуємо в стовпчик «х4»

другого рядка другої симплексної таблиці.

Аналогічно розраховують усі елементи нової симплексної таблиці, у тому числі елементи стовпчика «План» та оцінкового рядка. Наявність двох способів визначення оцінок опорного плану (за правилом прямокутника та за відповідною формулою) дає змогу контролювати правильність арифметичних обчислень на кожному кроці симплекс-методу.

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

оптимальності Zj Cj > 0 для другого опорного плану. Цей план також

неоптимальний, оскільки 1

4 / 3.

Використовуючи процедуру симплекс-

методу, визначаємо третій опорний план задачі, який наведено у вигляді таблиці:

Базис

Сбаз

План

8

10

0

-5

0

0

х1

х2

x3

х4

х5

х6

x2

x1

10

8

118

48

0

1

1

0

2

-1

2/5

2/5

3/5

-2/5

-2/5

3/5

Zj – Cj>0

1564

0

0

12

61/5

14/5

4/5

В оціночному рядку третьої симплексної таблиці немає від'ємних чисел,

тобто всі

j 0 і задовольняють умову оптимальності. Це означає, що знайдено

оптимальний план задачі:

X* = (х1 = 48; х2 =118; х3 = 0; х4 = 0; Х5 = 0; х6 = 0),

або

Х* = (48; 118;0;0;0;0);

mахZ = 8· 48 + 10· 118 + 0· 0-5· 0 = 1564.

Отже, план виробництва продукції, що передбачає випуск 48 одиниць продукції А та 118 од. продукції В, оптимальний і дає найбільший прибуток 1564 дол. При цьому час роботи верстатів використовується повністю (x5 = x6 = 0).

Задачу можна розв'язати симилекс-методом, узявши не три симплексні

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

37

Метод штучного базису

Метод штучного базису розглянемо на наступній задачі.

Приклад 4. Для умови пркладу 2. складемо першу симплексну таблицю

задачі:

Базис

Сбаз

План

8

10

0

-5

0

0

0

-M

0

х1

х2

x3

х4

x5

х6

x7

х8

x5

x6

x8

0

0

-M

450

380

9

2

3

0

3

2

0

4

1

1

2

2

0

1

0

0

0

1

0

0

0

-1

0

0

1

112,5

380

9

Zj – Cj>0

0

-8

-10

0

5

0

0

0

0

-9M

0

0

-M

0

0

0

M

0

Розраховуючи оцінки першого опорного плану, дістаємо Zо = 0 - 9М,

Z1 – С1 = -8, Z2 - С2 = -10, Z2 – С2 = -10, Z3 – С3 = 0 - М і т. д. Як бачимо, значення оцінок складаються з двох частин, одна з яких містить М, а інша – просто число. Тому для зручності розбиваємо оціночний рядок на два. У перший оцінковий рядок записуємо просто число, а в другий – число з коефіцієнтом М.

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

Базис

Сбаз

План

8

10

0

-5

0

0

0

-M

0

х1

х2

x3

х4

x5

х6

x7

х8

x8

x6

x3

0

0

0

414

371

9

2

3

0

3

2

0

0

0

1

2

2

0

1

0

0

0

1

0

4

1

-1

-4

-1

1

138

185

5

-

Zj – Cj>0

0

-8

-10

0

5

0

0

0

0

0

0

0

0

0

0

0

0

M

x2

x6

x3

10

0

0

138

93

9

2/3

5/3

0

1

0

0

0

0

1

2/3

2/3

0

1/3

-2/3

0

0

1

0

4/3

-5/3

-1

-4/3

5/3

1

207

57

-

Zj – Cj>0

1380

-4/3

0

0

35/3

10/3

0

40/3

-40/3

0

0

0

0

0

0

0

0

M

x2 x1 x3

10

8

0

100

57

9

0

1

0

1

0

0

0

0

1

2/5

2/5

0

3/5

-2/5

0

-

2/5

3/5

0

2

-1

-1

-2

1

1

Zj – Cj>0

1456

0

0

0

61/5

14/5

4/5

12

-12

0

0

0

0

0

0

0

0

M

38

Оптимальним планом задачі є вектор

X* = (57; 100; 9; 0; 0; 0; 0),

mахZ = 8· 57+ 10· 100 + 0 · 9 -5· 0 = 1456.

Отже, оптимальним є виробництво 57 одиниць продукції А, 100 одиниць продукції В і 9 одиниць продукції С. Тоді прибуток буде найбільшим і становитиме 1456 дол.