Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Розділ 1.doc
Скачиваний:
12
Добавлен:
01.12.2018
Размер:
5.21 Mб
Скачать

§ 1.2. Загальна задача лінійного програмування. Основні означення. Стандартна задача. Канонічна задача

Загальна задача лінійного програмування (в подальшому – ЗЛП) формально може бути описана так.

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

, (1.2.1)

і при цьому задовольняє умови:

, , (1.2.2)

, . (1.2.3)

Тут , , – дійсні числа, знак означає, в залежності від , один зі знаків “=”, “” чи “”.

Лінійна функція називається цільовою функцією задачі.

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

Ті з відношень (1.2.3), в яких означає знак “”, можна помножити на , добившись у такий спосіб того, що у (1.2.3) фігуруватимуть лише рівності і нерівності вигляду “”.

Виписуючи спочатку рівності, а потім нерівності, сформульовану задачу лінійного програмування (1.2.1) – (1.2.3) можна записати у еквівалентному вигляді:

визначити вектор , який надає найменшого значення функції

(1.2.4)

і при цьому задовольняє умови:

, , (1.2.5)

(1.2.6)

Звертаємо увагу на те, що, згідно з (1.2.2) чи (1.2.5), не обов’язково всі координати вектора невід’ємні. Ми сформували цей вектор так, що перших координат невід’ємні, а можуть бути і від’ємними. Цього завжди можна досягнути, ввівши необхідний порядок нумерації змінних.

Як відомо, всяке дійсне число можна подати у вигляді різниці двох невід’ємних чисел. Тому у випадку змінну , , можна подати у вигляді

, (1.2.7)

де та .

Замінивши в (1.2.4) та (1.2.6) всі згідно з (1.2.7), отримаємо задачу лінійного програмування, в якій усі змінні невід’ємні. Нерівності типу “”, які входять до (1.2.6), можна перетворити в рівності, додавши до їх лівих частин так звані збалансовуючі невід’ємні змінні . Зразу ж зауважимо, що ці змінні не увійдуть у цільову функцію задачі.

Отримана нова задача лінійного програмування характерна тим, що всі змінні, які беруть у ній участь, задовольняють умову невід’ємності, а обмеження вигляду (1.2.6) складаються лише з обмежень-рівностей. Задачу лінійного програмування такого типу в подальшому називатимемо стандартною задачею лінійного програмування (СЗЛП).

Зазначимо, що в ЗЗЛП (1.2.1) – (1.2.3) і, відповідно, в (1.2.4)-(1.2.6) беруть участь змінних , а у відповідній отриманій СЗЛП, згідно з описаними вище правилами її побудови, задіяні змінних . Число може бути набагато більшим від . Наприклад, якщо , , , , то . Це збільшення розмірності задачі є платою за стандартизацію. Стандартизація ж дасть можливість порівняно просто досліджувати властивості задачі, формулювати і доводити необхідні твердження, спільні для різних задач.

Якщо знайдено розв’язок відповідної СЗЛП, то розв’язок початкової ЗЗЛП легко знаходять, відкинувши і обчисливши за формулами (1.2.7).

Для ілюстрації описаних вище правил переходу від ЗЗЛП до відповідної СЗЛП розглянемо приклад.

Нехай необхідно визначити вектор , який надає найбільшого значення цільовій функції

(1.2.8)

і задовольняє умови

, (1.2.9)

та умови

(1.2.10)

У цій ЗЗЛП , , умова невід’ємності не накладається на і на . Визначення найбільшого значення функції замінимо задачею визначення найменшого значення функції

.

Нерівність замінимо на рівносильну їй нерівність , а змінні та замінимо за правилом (1.2.7)

, ,

де – невід’ємні.

Отримуємо нову задачу, яка полягає в знаходженні точки мінімуму функції

за умов

, , , , ,

і

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

У результаті маємо відповідну СЗЛП:

визначити точку мінімуму функції

при виконанні умов

, , , , , , ,

і умов-рівностей

Беручи до уваги викладені правила зведення ЗЗЛП до СЗЛП, ми можемо вважати, що ЗЛП записана уже у вигляді стандартної:

знайти точку мінімуму функції

, (1.2.11)

за умов

, , (1.2.12)

і

, . (1.2.13)

Особливо підкреслимо: як правило, , бо у випадку і відсутності серед рівнянь (1.2.13) лінійно залежних розв’язку системи (1.2.13) може не існувати або він може виявитися єдиним і задача вибору вектора зникає.

Якщо ввести в розгляд -вимірні вектори-стовці , , -вимірні вектори-стовці і нуль-вектор та -матрицю

,

скалярний добуток векторів та , то СЗЛП можна записати у вигляді.

Визначити вектор , який надає найменшого (мінімального) значення функції

(1.2.14)

і який задовольняє умови

, (1.2.15)

. (1.2.16)

У цьому випадку кажуть, що СЗЛП задана в матрично-векторній формі.

Іноді формально СЗЛП записують так

, (1.2.17)

. (1.2.18)

Тут – множина векторів , які задовольняють виписані у фігурних дужках умови (1.2.15) і (1.2.16).

У подальшому ми будемо використовувати в основному таку форму запису СЗЛП:

, (1.2.19)

, (1.2.20)

. (1.2.21)

У задачі, як зрозуміло із форми запису, мова буде йти про визначення точки мінімуму цільової функції (1.2.19) при виконанні прямих обмежень (1.2.20) та непрямих обмежень (1.2.21), записаних у матрично-векторній формі.

Усякий -вимірний вектор називається планом задачі (1.2.19) – (1.2.21). Допустимим планом цієї задачі називається такий -вимірний вектор , який справджує (задовольняє) умови (1.2.20) – (1.2.21).

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

називається оптимальним планом задачі (1.2.19) – (1.2.21). Пара називається розв’язком задачі (1.2.19) – (1.2.21).

Якщо ввести в розгляд стовпці матриці

, , ..., ,

то обмеження (1.2.21) можна записати у вигляді

. (1.2.22)

Отже, кожній із компонент плану ставиться у відповідність стовпчик матриці з тим же номером, що і у компоненти.

Згідно із прямими умовами (1.2.20), серед компонент допустимого плану можуть бути і такі, що дорівнюють нулеві.

Допустимий план СЗЛП (1.2.19 – 1.2.21) називають базисним планом цієї задачі (часто – опорним планом задачі), якщо вектори , які мають такі ж номери, що й відмінні від нуля компоненти плану , є лінійно незалежними.

З курсу лінійної алгебри відомо, що серед -вимірних векторів лінійно незалежних є не більше ніж . Це означає, що базисний (опорний) план задачі (1.2.19) – (1.2.21) містить не більше ніж компонент, які не дорівнюють нулю (більших від нуля, згідно з (1.2.20)).

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

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

При цьому матриця

,

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

Змінні , які відповідають стовпцям базисної матриці, називаються базисними змінними. Всі інші змінні називаються небазисними. Набір векторів-стовпців базисної матриці називається базисом або базою СЗЛП.

Проілюструємо сказане вище на простому прикладі СЗЛП.

Нехай задана задача

,

, ,

Тут , .

Вектор є невиродженим базисним планом. Базисною матрицею є матриця , (), а базисними змінними – та . Невиродженим базисним планом є також вектор . У цьому випадку , (), та – базисні змінні, а – небазисні змінні.

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

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

Отже, канонічною задачею лінійного програмування (КЗЛП) назвемо задачу

, (1.2.23)

, ; (1.2.24)

(1.2.25)

, . (1.2.26)

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

, (1.2.27)

, (1.2.28)

, (1.2.29)

. (1.2.30)

Тут

, .

Якщо відомо деякий базисний (опорний) план, СЗЛП (1.2.19) – (1.2.21) з базисною матрицею , то відповідну КЗЛП легко отримати, визначивши матрицю та вектор за формулами

, . (1.2.31)

Тут – обернена матриця до матриці .

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

,

.

.

Отже, відповідна КЗЛП має вигляд

,

, ,

Якщо використати базисний план , то отримаємо іншу форму КЗЛП. Обмеження-рівності матимуть вигляд

Якщо не існує базисного (опорного) плану СЗЛП, то не існує і відповідної КЗЛП.

Якщо задана КЗЛП (1.2.23) – (1.2.26), то, як легко зрозуміти, базисним (опорним) планом задачі є план .

Роль канонічної форми ЗЛП при визначенні розв’язку дуже важлива, що ми з’ясуємо при вивченні відповідного алгоритму.

Із матриці стандартної задачі можна виділити

матриць розміром .

При і це число рівне 252.

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

Пізніше ми познайомимося з деякими регулярними методами визначення хоча б одного базисного плану (якщо такі плани існують) та побудови відповідної КЗЛП.