Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MMIO Laboratornye_Raboty.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.54 Mб
Скачать

Алгоритм симплексного методу

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

Визначення 1. Прийнятним розв’язанням (планом) ЛП-задачі називають вектор X=(x1,x2,…,xn), який задовольняє усім її обмеженням (33), (34).

Визначення 2. План X=(x1,x2,…,xn) задачі (32) - (34) називається опорним (прийнятним базисним розв’язанням), якщо вектори обмежень Aj=(a1j,a2j,…,amj)T, які входять в розкладення вектора A0=(b1,b2,…,bm)T:

(35)

з додатними коефіцієнтами xj, є лінійно незалежними.

Визначення 3. Система m лінійно незалежних векторів обмежень {Asi}, , що включає всі ті Asi, для яких xsi>0, називається базисом опорного плану і позначається через Бх.

Перед розв’язанням ЛП-задачі симплексним методом її треба представити в канонічній формі. Розв’язок треба починати зі сформованого заздалегідь опорного плану, якому відповідає одиничний базис. Тому задача можна розв’язати симплексним методом, якщо в матриці основних обмежень (33) присутні принаймні m різних одиничних векторів, з яких можна скласти одиничну матрицю m-го порядку.

Таким чином, якщо

X0=(xs1,xs2,…,xs0,0,…,0)

початковий опорний план задачі з одиничним базисом As1,…,Asm, то модель задачі має вигляд:

(36)

З системи (36) випливає, що у початковому опорному плані X0 базисні змінні xsi=bi, . Алгоритм симплексного методу починається з перевірки на оптимальність такого опорного плану:

X0=(b1,b2,…,bm,0,…,0). (37)

Для дослідження X0 на оптимальність необхідно розкласти усі вектори Aj по векторах базису Asi:

(38)

і підрахувати різниці (оцінки векторів):

j=Zj–cj. (39)

У рівнянні (38) xij=aij, оскільки вектори Asi утворюють одиничний базис.

Представивши усю вихідну інформацію про задачу у вигляді таблиці (таблиця 16), одержимо початкову (нульову) симплексну таблицю.

Таблиця 16 - Нульова симплексна таблиця

i

Бх

Сб

А0

c1

csr

ck

cn

t

A1

Asr

Ak

An

1

As1

cs1

xs1

xs11

0

x1k

x1n

t0

2

As2

cs2

xs2

xs21

0

x2k

x2n

r

Asr

csr

xsr

xr1

1

xrk

xrn

m

Asm

csm

xsm

xm1

0

xmk

xmn

m+1

-

-

Z0

sr=0

k

n

Симплекс-таблиця (перші m рядків) заповнюється в такій послідовності: заповнюють стовпець i, рядок С, стовпець Бx, стовпець Сб, стовпець A0, стовпці Ai,…,An.

Останній рядок: в клітині на перетині стовпця А0 та (m+1)-го рядка записують значення лінійної форми для поточного опорного плану. Це значення обчислюється за формулою:

. (40)

У наступні клітини (m+1)-го рядку записуються значення оцінок векторів обмежень Aj (величини j), що обчислюються за формулою:

(41)

Для базисних векторів оцінки si=0.

Для перевірки опорного плану на оптимальність переглядаємо оцінки векторів в (m+1)-ому рядку. При цьому можуть зустрітися такі випадки:

1 Усі оцінки j0. Тоді опорний план X0 є оптимальним і Z min=Z0.

2 Для деякого фіксованого j j>0 і всі коефіцієнти xij0, . Тоді лінійна форма не обмежена множиною допустимих розв’язків задачі. В обох випадках процес обчислення на цьому закінчується.

3 Для деяких індексів j є j>0 і для кожного такого j, принаймні, одне з чисел xij>0. Це свідчить про те, що опорний план не є оптимальним і його можна поліпшити за рахунок введення в базис вектора, що відповідає однієї з таких оцінок. У базис необхідно ввести той вектор, якому відповідає maxj. Якщо таких різниць декілька, то беруть вектор з меншим номером.

Нехай . Тоді в базис треба вводити вектор Ak замість вектора, якому відповідає мінімальне значення виразу

. (42)

Необхідно вивести з базису вектор Asr; новий базис буде складатися з векторів: As1,As2,…,Asr-1,Asr+1,…,Asm,Ak... У цьому випадку xrk називають розв’язним елементом поточної симплексної таблиці. Стовпець k і рядок r називають також розв’язними.

Всі значення в клітинах при побудові нової симплексної таблиці зі стовпця A0 по сn-ий і з першого рядка по (m+1)-ий перераховуються при переході до нового опорного плану у відповідності до наведених нижче рекурентних формул:

(43)

На практиці нову симплексну таблицю отримують з попередньої, виконуючи певні дії з елементами усього рядка. Кожен елемент розв’язного рядка r ділять на розв’язний елемент xrk. У новій симплексній таблиці на місці розв’язного елемента отримуємо одиницю: x =1. Дії з іншими рядками направлені на те, щоб при переході до нової таблиці на місці розв’язного стовпця попередньої таблиці отримати одиничний вектор з нульовою оцінкою. Інші рядки перетворюються так: з того рядка попередньої таблиці, який необхідно перетворити, віднімаємо рядок r нової таблиці, помножений на той елемент перетворюваного рядка, на місці якого треба одержати нуль.

В результаті такого перетворення нульова симплекс-таблиці переходить в наступну (першу) таблицю, яка містить новий опорний план. Правильність побудови можна перевірити підрахувавши оцінки j за формулою (40). Знову переглядаємо (m+1)-ий рядок. Якщо всі j0, то опорний план оптимальний. В іншому випадку переходимо до нового опорного плану, будуючи другу симплексну таблицю. Процес продовжується поки не прийдемо або до оптимального плану, або переконаємося в необмеженості лінійної форми.

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