КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Лекція 23
СИМПЛЕКС МЕТОД ВИРІШЕННЯ ЗАДАЧІ ЛІНІЙНОГО ПРОГРАМУВАННЯ Геометрична інтерпретація, якою ми користувалися для вирішення задач ЛП перестає бути придатною при числі вільних змінних (nm) > 3. Для знаходження рішення задачі в загальному вигляді застосовуються обчислювальні методи. З них найбільш універсальним є так званий симплекс - метод. Ідея симплекс-методу відносно проста. Нехай у задачі ЛП є n - змінних і m - незалежних лінійних обмежень, заданих у формі рівнянь. Ми знаємо, що оптимальне рішення досягається в одній з опорних точок (вершин ОДР), де принаймні k = n - m з змінних дорівнюють нулю. Виберемо якісь k змінних в якості вільних і висловимо через них інші m базисних змінних: (23.1)
Подивимося, що буде, якщо покласти всі вільні змінні x1, x2,..., xK рівними нулю: х1 = 0, х2 = 0,..., хК = 0. При цьому ми отримаємо: XK+1=bK+1, XK+2=bK+2, …, Xn=bn.Це рішення може бути допустимим і недопустимим. Воно допустимо, якщо всі вільні члени bК+1, bК+2, …, bК+1 ненегативні. Припустимо, що ця умова виконана. Тоді ми отримали опорне рішення. Але чи є воно оптимальним? Щоб перевірити це, висловимо цільову функцію L через вільні змінні x1, x2,..., xK
(23.2)
Очевидно, що при x1 = x2 = … = xK = 0, L=g0. Подивимося, чи не можемо ми поліпшити рішення, тобто зменшити функцію L, збільшуючи які-небудь із змінних x1, x2,..., xK (зменшити їх ми не можемо, тому що вони рівні нулю, а негативні значення змінних неприпустимі). Якщо всі коефіцієнти c1, g2, …, gK у формулі (23.1) є позитивними, то, збільшуючи якісь з змінних x1, x2,..., xK понад нуля, ми не можемо зменшити L. Отже, знайдене нами рішення є оптимальним. Якщо ж серед коефіцієнтів gК До є негативні, то збільшуючи деякі з змінних x1, x2,..., xK, а саме - ті, коефіцієнти при яких негативні, ми можемо покращити рішення. Нехай, наприклад g1 у формулі (23.1) від'ємний. Значить, є сенс збільшити х1, тобто перейти від даного опорного рішення до іншого, де мінлива х1¹0, а замість неї дорівнює нулю якась інша. Збільшення х1 «корисно» для цільової функції, робить її менше. Однак збільшувати х1 треба обережно, так, щоб не стали негативними інші змінні xк +1, xк +2,..., xn, виражені через вільні змінні, зокрема через х1 формулами (23.1). Подивимося, чи небезпечно для змінних xк +1, xк +2,..., xn, збільшення х1, тобто чи може воно зробити їх негативними? Так, небезпечно, якщо коефіцієнт при х1 у відповідному рівнянні від'ємний. Якщо серед рівнянь (23.1) немає рівняння з негативним коефіцієнтом, при х1, то величину х1 можна збільшувати безмежно, а значить функція L не обмежена знизу і оптимального рішення не існує. Припустимо, що це не так і що серед рівнянь (23.1) є такі, в яких коефіцієнт при х1 від'ємний. Для змінних, що стоять в лівих частинах цих рівнянь, збільшення х1 небезпечно - воно може зробити їх негативними. Візьмемо одну з цих змінних ХL і подивимося, до якої міри можна все ж збільшити х1, поки мінлива ХL не стане негативною? Випишемо l - ше рівняння з системи (23.1).
, при (23.3)
Тут вільний член bl ³ 0, а коефіцієнт al1 - негативний (припустимо). Легко зрозуміти, що якщо ми залишимо х2 =... = хК = 0, то х1 ми можемо збільшувати тільки да значення, рівного х1 = bl/al1, а при подальшому збільшенні х1 мінлива ХL стане негативною. Виберемо ту з змінних хК +1 ... хn, яка раніше за всіх звернутися в нуль при збільшенні х1, тобто ту, для якої величина = х1 = bl/al1 найменше. Нехай така найбільш загрозлива змінна буде хr. Тоді має сенс «перевирішити» систему рівнянь щодо інших базисних змінних, вивівши з числа вільних змінних х1 і перевівши замість неї в групу вільних змінних хr. Дійсно, ми хочемо перейти від опорного рішення, що задається рівностями до опорного рішенням х1 = х2 =... = хк = 0, в якому вже х1¹0, а х2 =... = хк = хr = 0. Перше опорне рішення ми отримали, поклавши рівним нулю всі колишні вільні змінні х1, х2,..., хк, друге ми отримаємо, якщо звернемо в нуль все нові вільні змінні х2, хк, хr. Базисними змінними при цьому будуть х1, хк +1,..., хr-1, хr +1,..., хn. Припустимо, що рівняння для нового набору базисних і вільних змінних складені. Тоді можна висловити через нові вільні змінні і лінійну функцію L. Якщо всі коефіцієнти при змінних в цій формулі позитивні, то ми знайшли оптимальне рішення (воно вийде якщо всі вільні змінні = 0).
Якщо серед коефіцієнтів при змінних є негативні, то процедура поліпшення рішення триває: система знову перерішується щодо інших базисних змінних, і так далі, поки не буде знайдено оптимальне рішення. Процедура «перевирішення» системи рівнянь - обмежень ОЗЛП щодо нових базисних змінних може бути істотно спрощена, якщо її формалізувати і звести до заповнення стандартних таблиць по певній системі правил (коротше алгоритму). Цей алгоритм продемонструємо на конкретному прикладі. Розглянемо систему п'яти рівнянь обмежень:
y1=a11x1+a12x2+a13x3+a14x4+b1 y2=a21x1+a22x2+a23x3+a24x4+b2 y3=a31x1+a32x2+a33x3+a34x4+b3 y4=a41x1+a42x2+a43x3+a44x4+b4 (23.4) y5=a51x1+a52x2+a53x3+a54x4+b5
З чотирма вільними змінними х1, х2, х3, х4. Нехай нам потрібно вивести з числа вільних змінних якусь змінну, наприклад х2 і перевести її в базисні, а натомість її ввести в число вільних якусь базисну змінну, скажімо у3, коротше кажучи, ми хочемо обміняти місцями змінні х2 і у3. Цю заміну символічно позначають х2 Û у3. Для полегшення цього завдання скористаємося табличним алгоритмом. Попередньо, доцільно кілька перетворити систему рівнянь (23.4), представивши їх праві частини як різниці між вільними членами та сумою інших: y1= b1 – (–a11x1 – a12x2 – a13x3 – a14x4) y2= b2 – (–a21x1 – a22x2 – a23x3 – a24x4) y3= b3 – (–a31x1 – a32x2 – a33x3 – a34x4) y4= b4 – (–a41x1 – a42x2 – a43x3 – a44x4) y5= b5 – (–a51x1 – a52x2 – a53x3 – a54x4) (23.5)
Позначаючи –a11 = a11, –a12 = a12…–a54 = a54 одержимо: y1= b1 – (a11x1 + a12x2 + a13x3 + a14x4) y2= b2 – (a21x1 + a22x2 + a23x3 + a24x4) y3= b3 – (a31x1 + a32x2 + a33x3 + a34x4) (23.6) y4= b4 – (a41x1 + a42x2 + a43x3 + a44x4) y5= b5 – (a51x1 + a52x2 + a53x3 + a54x4)
Форму запису рівнянь (23.6) будемо називати стандартної. Очевидно, замість того, щоб повністю записувати рівняння (23.6) можна обмежитися заповненням стандартної таблиці, де вказані тільки вільні члени і коефіцієнти. Перший стовпець таблиці ми відведемо під вільні члени, другий, третій, четвертий і п'ятий - під коефіцієнти при змінних х1, х2, х3, х4. Стандартна таблиця для системи (23.6) має вигляд:
Тепер уявімо собі, що ми хочемо зробити заміну х2 Û у3, тобто перевести х2 в число базисних, а у3 - в число вільних. Виділимо в стандартній таблиці дозволяючий коефіцієнт a32. Виділимо, також, рядок і стовпець, в якому стоїть дозволяючий елемент. Цей рядок і стовпець назвемо вирішуючим рядком і стовпцем. Виконуючи операцію х2 Û у3 ми хочемо в роздільною рядку помістити змінну у3, а в дозвільному стовпці - х2. Знайдемо коефіцієнти, які потрібно буде поставити в таблиці після обміну х2 Û у3. Почнемо з перетворення роздільного рядка. Вирішуючи третє рівняння (23.6) щодо х2 (23.7)
Таким образом, преобразованные элементы разрешающей строки найдены. Составим правило преобразования остальных строк. Для этого подставим в уравнение (23.6)(например в первое) вместо х2 его выражение (23.7). после приведения подобных членов, получим:
(23.8)
Неважко переконатися, що абсолютно аналогічно перетворюються і інші рядки. В результаті ми отримаємо перетворену таблицю, в якій операція х2 Û у3 вже здійснена.
Розглянувши цю таблицю, ми можемо сформулювати алгоритм перетворення коефіцієнт стандартної таблиці. 1. Дозволяючий елемент замінюється на зворотню йому величину. 2. Всі інші елементи роздільного рядка діляться на вирішуючий елемент. 3. Всі елементи дозволяючого стовпця (крім самого дозволяючого елемента) змінюють знак і ділять на дозволяючий елемент. 4. Кожен з решти елементів піддається наступного перетворення: до нього додається твір елемента, що стояв в колишній роздільного рядку на тому ж місці по порядку (тобто в тому ж стовпці), на елемент, що стоїть в новому дозволяючому стовпці на відповідному місці (тобто в тому ж рядку, що й наш елемент). Неважко переконатися, що сформульовані правила перетворення стандартної таблиці справедливі для будь-якого числа рівнянь і вільних змінних. Перетворення стандартної таблиці при заміні хj Û уi зручно робити, виконуючи всі допоміжні розрахунки тут же, у таблиці, для чого виділяється нижня частина кожної клітинки. Алгоритм перетворення хj Û уi зводиться при цьому до наступних операцій: 1. Виділити в таблиці дозволяючий елемент aij. Обчислити його зворотню величину l = 1/aij і записати в нижній частині тієї ж комірки (у правому нижньому куті) 2. Всі елементи роздільного рядка (крім самого aij) помножити на +l, результат записати в нижній частині тієї ж осередки. 3. Всі елементи дозволяючого стовпця (крім самого aij) помножити на -l, результат записати в нижній частині тієї ж осередки. 4. Підкреслити (або виділити іншим способом) у роздільному рядку всі верхні числа (колишні елементи, за винятком самого дозволяючого елемента), а в дозвільному стовпці - все нижні числа (нові елементи, за винятком самого дозволяючого елемента). 5. Для кожного з елементів, які не належать ні до роздільного рядку, ні до дозволяючому стовпцю, записати в нижню частину осередку добуток виділених чисел, що стоять в тому ж стовпці і в тому ж рядку, що й цей елемент. 6. Переписати таблицю, замінивши: xj на yi і назад, елементи дозволяючого стовпця і рядка - числами, що стоять в нижніх частинах тих же осередків, кожен з окремих елементів - сумою чисел, що стоять у верхній і нижній частині тієї ж осередки. Таким чином, за допомогою табличного алгоритму ми можемо здійснювати будь-яку заміну хj Û уi. Згадаймо, що в задачі лінійного програмування, крім рівнянь - обмежень існує ще й цільова функція:
(23.9)
яку потрібно мінімізувати. Якщо ця функція виражена через колишні вільні змінні х1, х2,..., хn, то, очевидно, після заміни хj Û уi її потрібно висловити через нові вільні змінні х1, х2,..., хj +1, yi, xi +... + xn. Неважко переконатися, що для цього може бути застосований той же алгоритм, що і для перетворення будь-якого рядка стандартної таблиці. Наводячи L до стандартної форми, ми отримаємо ще один рядок, яка відрізняється від інших лише тим, що в ній ніколи не вибирається дозволяючий елемент. За допомогою табличного алгоритму обміну змінних в рівняннях ОЗЛП можна вирішити будь-яке завдання лінійного програмування або ж переконатися, що вона не має рішення. Знаходження рішення ОЗЛП розпадається на два етапи: 1. Пошук опорного рішення. 2. Пошук оптимального рішення. Обидва етапи зручно виконувати за допомогою розглянутого алгоритму перетворення стандартних таблиць. Розглянемо відшукання опорного рішення ОЗЛП за допомогою розглянутого алгоритму. Нехай є ОЗЛП з обмеженнями - рівностями, записаними в стандартній формі, дозволеними щодо базисних змінних х1, х2,..., хn, які виражені через вільні змінні х1, х2,..., хn. У кожній вершині ОДР (опорному рішенні) принаймні n змінних повинні бути звернені в нуль. Отже, якщо х1 = х2 =... = хn = 0, то y1 = b1, y2 = b2,..., ym = bm. Якщо всі вільні члени b1, b2,..., bm в рівняннях ненегативні, це означає, що опорне рішення уже отримано. Розглянемо випадок, коли серед вільних членів є негативні. Належить знайти опорне рішення. Для цього ми крок за кроком будемо обмінювати місцями базисні та вільні змінні, до тих пір, поки не прийдемо до опорного рішенням або не переконаємося, що його не існує. Останнє буває, коли система несумісна з нерівностями xj> 0, yi> 0, тобто у неї немає невід'ємних рішень. Очевидно, потрібно так обмінювати місцями базисні та вільні змінні, щоб ця процедура наближала нас до кордону ОДР, а не видаляла від неї, тобто щоб число негативних вільних членів з кожним кроком зменшувалося, або принаймні, убували їх абсолютні величини. Існує ряд способів вибору дозволяючого елемента для наближення до опорного рішення. Зупинимося на одному з них. Нехай є одне з рівнянь, з негативним вільним членом. Шукаємо в цьому рядку негативний елемент aij. Якщо такого елемента немає, то це ознака того, що система рівнянь несумісна з нерівностями xj> 0, yi> 0. Припустимо, що негативний елемент є. Тоді вибираємо стовпець, в якому він перебуває в якості дозволяючого. Тепер треба вибрати в цьому стовпці сам дозволяючий елемент. Розглянемо всі елементи даного стовпця, що мають однаковий знак з вільним членом. З них виберемо в якості дозволяючого той, для якого відношення до нього вільного члена мінімально. Таким чином, ми бачимо, що немає необхідності спеціально досліджувати систему умов ОЗЛП на сумісність в області невід'ємних рішень: це питання з'ясовується автоматично в процесі знаходження опорного рішення. Далі сформулюємо правила перебування оптимального рішення ОЗЛП симплекс-методом. 1. Якщо всі вільні члени (не рахуючи рядки L) в симплекс-таблиці ненегативні, а в рядку L (не рахуючи вільного члена) немає жодного позитивного елементу, то оптимальне рішення досягнуто. 2. Якщо в рядку L є позитивний елемент, а в стовпці відповідному йому немає жодного позитивного елементу, то лінійна функція L не обмежена знизу і оптимального рішення не існує. 3. Якщо в цьому стовпці є позитивні елементи, то слід зробити заміну однієї з вільних змінних на одну з базисних, причому в якості дозволяючого треба взяти той елемент цього стовпця, для якого відношення до нього відповідного вільного члена мінімально. Розглянутий алгоритм найбільш доцільно реалізовувати на ЕОМ (особливо при великому числі змінних).
Дата добавления: 2014-01-07; Просмотров: 341; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |