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

Лекція № 6

Алгоритм симплекс – методу для невиродженої задачі.

Дана канонічна ЗЛП:

.

Відомий опорний розвязок х = (х1, х2, …, хn) і його базис Аi1, Аi2, …, Аim. Для розвязку задачі необхідно розкласти за початковим базисом вектора А1, А2, …, Аn.

Примітка: числа Хіо відомі.

Базисні вектори розкладаються за формулою:

, де

В = (Аі1, …, Аім).

Для кожного j обчислюються оцінки

.

Оцінки базисних векторів завжди дорівнюють 0. Якщо всі j0, то процес зупиняється. Відповідно до теореми 1, розвязок оптимальний при відємному j. Визначаємо присутність в такому стовпчику всіх відємних Xkj. Якщо така оцінка існує, то процес завершується.

В іншому випадку, обираємо одну з відємних j, як правило мінімальну, і називаємо її S. Розраховуємо відношення к, яке дорівнює

для  xks > 0.

Обираємо найменшу з них.

Здійснюємо перехід до нового опорного розвязку, базис якого утворюється заміною вектора Air вектором As. Для цього обчислюємо координати всіх векторів А1, А2, …, Аn за основними формулами

.

Блок – схема алгоритму.

  1. Обчислення xkj та j для початкового опорного розвязку.

  2. Чи є j<0? (ні– (3А), так – (3Б))

  3. А) Кінець: даний опорний розвязок – оптимальний.

Б) Чи є такі j<0, що всі xkj<0? (так – (4А), ні – (4Б))

  1. А) Кінець: задача не має розвязків.

Б) Вибір вводимого в базис і виводимого вектора, тобто s i r.

  1. Розрахунок нових значень xkj та j за основними формулами.

Примітка:

Теореми (2) і (3) підходять і для виродженого випадку, але там min=0. Через це, оцінки  розраховуються іншим способом: відповідні значенням нульові координати xrs роблять ненульовими.

Пошук початкового опорного розвязку.

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

  1. розвязок додаткової задачі;

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

Нехай маємо канонічну ЗЛП і нехай невідомий її опорний розвязок.

Змінимо її наступним чином:

де xj  0 , j=1,m;

x n+1, …, x n+m – штучні змінні, а вектори А n+1, …, А n+m утворюють штучний одиничний базис;

М – деяке додатнє досить велике число (вводиться для того, щоб штучні вектори вивести з базису за допомогою оцінок j).

Ця задача називається М – задачею. Вона має явнеий опорний розвязок з одиничним базисом і до неї можна застосувати симплес метод.

Припустимо, що ми розвязали М – задачу. Можливі випадки:

  1. М – задача має розвязок .

Нехай х*0 - її оптимальний розвязок

x*0 = (х10, х20, …, хn0, x n+10, …, x n+m0),

тоді розглянемо варіант

  1. x n+10 = …= x n+m0 =0, тобто всі штучні змінні рівні. Доведемо, що вектор х*0 – оптимальний розвязок рівняння початкової задачі.

Припустимо, що це не так і що вектор х = (х1, х2, …,хn) надає значення ЦФ більше, тобто (с,х1)> (с, х*0). Звісно, що х = (х1, х2, …,хn, 0, …, 0) припустимий розвязок М – задачі

(с,х) = (с, х) > (c, х*0) = (c, х*0),

так як x n+10, …, x n+m0=0.

Отримана нерівність протирвічить тому, що вектор x*0 буде оптимальним розвязком М – задачі. Звідси x*0 буде оптимальним розвязком початкової задачі.

б) Серед x n+10, …, x n+m0 є не нульові. Доведемо, що у цьому випадку початкова задача недопустима.

Нехай це не так і вектор х = (х1, х2, …,хn) – певне допустимий розвязок початкової задачі.

Розглянемо вектор х = (х1, х2, …,хn, 0, …, 0) – допустимий розвязок М – задачі і побудуємо для нього ланцюг

(с,х) = (с, х) > (c, х*0) = (c, х*0) - М x n+і0 > 0

М – як завгодно велике число, тобто маємо протиріччя, що вектор х*0 – оптимальний розвязок.

М – задача не має розвязку, тобто ЦФ не обмежене зверху.

У цьому випадку можна довести, що початкова задача, або недопустима, або має не обмежену ЦФ.

Розвязок М – задачі при невизначеному достатньо великому М.

В М – задачі на кожній іттерації від М залежить лише оцінки j (j' М + j").

Так як М достатньо велике, то знак j співпадає зі знаком при j'. Звідси, не знаючи конкретного значення М ми знаємо знаки всіх оцінок j і можемо (різними способами) будувати симплекс – процес.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]