![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Р. Гоморі для отримання цілочисельних розв'язків розробив алгоритм, який використовує процедуру симплекс-методу. Він запропонував достатньо простий спосіб побудови правильної відтинаючої гіперплощини.
Суть цього методу полягає в тому, що спочатку задача лінійного програмування розв'язується без умови цілочисельності. Якщо отриманий розв'язок є цілочисельним, то задача розв'язана. В протилежному випадку до обмежень задачі додається ще одне, яке має такі властивості:
1) повинно бути лінійним;
2) повинно відтинати знайдений оптимальний нецілочисельний розв'язок;
3) не повинно відтинати жодного цілочисельного розв'язку.
Додаткове обмеження, яке має вказані властивості, називається правильною відтинаючою гіперплощиною.
Після цього отримана задача лінійного програмування розв'язується з врахуванням нового обмеження. Потім, якщо потрібно, додається ще одне відтинаюче обмеження і т.д. до отримання повністю цілочисельного розв'язку задачі.
Геометричне додавання додаткового лінійного обмеження відповідає проведенню гіперплощини, яка відтинає від многогранника планів деяку його частину разом з оптимальною точкою з нецілими координатами, але не зачіпає жодної із цілочисельних точок цього многогранника.
Припустимо, що в результаті розв'язування симплекс-методом канонічної задачі лінійного програмування (2.22)-(2.23) одержано оптимальний план (b 10;… bk 0;… bm o;0;...;0), в якому, наприклад, bk 0 – неціла компонента. Нерівність
{ bk,m +1} xm +l+...+ { bk,n } xn ³ { bk 0} (2.25)
сформована за k -им рядком, володіє всіма властивостями правильного відтинання.
Зауважимо, що в (2.25) присутній символ {...}, який означає дробову частину числа. А дробовою частиною { а } числа а, як відомо, називають різницю між цим числом і його цілою частиною [ а ] (найменшим цілим, яке не перевищує а).
Наприклад, якщо , то
; якщо а =–2,3, то {–2,3}=–2,3–[–2,3]=–2,3–(–3)=0,7.
Для розв'язування задачі цілочисельного лінійного програмування (2.22)–(2.24) використовують наступний алгоритм.
1. Симплекс-методом розв'язуємо задачу лінійного програмування (2.22)–(2.23). Якщо всі компоненти оптимального розв’язку цілі, то він є оптимальним і для задачі (2.22)–(2.24). Якщо задача (2.22)–(2.24) не має розв'язку, то і задача цілочисельного лінійного програмування також не має розв'язку. Якщо ж серед компонент оптимального розв’язку задачі (2.22)–(2.23) є нецілі компоненти, то переходимо до п.2.
2. Серед нецілих компонент вибираємо з найбільшою дробовою частиною та за відповідним рядком симплекс-таблиці, яка містить нецілочисельний оптимальний розв’язок, формуємо правильне відтинання (2.25).
3. Нерівність (2.25) введенням додаткової невід'ємної цілочисельної змінної перетворюємо в еквівалентне рівняння і включаємо його в симплекс-таблицю з нецілочисельним оптимальним розв’язком.
4. Одержану розширену задачу лінійного програмування розв'язуємо симплекс-методом. Якщо одержаний оптимальний розв’язок буде цілочисельним, то задача цілочисельного лінійного програмування (2.22)–(2.24) розв'язана. В іншому випадку повертаємося до п.2.
Якщо задача має розв'язок в цілих числах, то після скінченого числа повторів оптимальний цілочисельний розв’язок буде знайдений. Якщо ж в процесі розв'язування з'явиться рядок з нецілим вільним членом і рештою цілих коефіцієнтів, то відповідне рівняння не має розв'язку в цілих числах. В цьому випадку і дана задача не має цілочисельного оптимального розв’язку.
Приклад. Знайти максимум функції f =2 х 1+3 х 2 при обмеженнях
Розв'язок. Розв'язуючи задачу симплекс-методом, одержимо оптимальний розв’язок (Рис. 2.31).
За рядком змінної х 1, яка набула нецілочисельне значення в оптимальному розв’язку, складаємо обмеження (2.25):
.
-1 | -1 | |||
![]() | ![]() | ![]() | ||
![]() | ![]() | ![]() |
Рис. 2.31.
Ввівши додаткову цілочисельну змінну x 6³0, одержимо її вираз через базисні змінні:
.
Доповнимо симплекс-таблицю ще одним рядком і одержимо наступну таблицю (Рис. 2.32):
–1 | –1 | |||
![]() | ![]() | ![]() | ||
![]() | ![]() | ![]() | ||
![]() | ![]() | ![]() |
Рис. 2.32.
Повторивши процес розв'язування симплекс-методом стосовно розширеної задачі, одержимо оптимальний цілочисельний розв’язок Х =(2;7;19;0;1;0), f max=25 (Рис. 2.33).
– ![]() | – ![]() | |||
-2 | ||||
– ![]() | ![]() | |||
![]() | – ![]() | |||
![]() | ![]() | –25 |
Рис. 2.33.
? Контрольні запитання
Дата публикования: 2015-10-09; Прочитано: 272 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!