Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

__2014_DvojstvennSM+Gomory_ukr_rus_new

.pdf
Скачиваний:
7
Добавлен:
12.05.2015
Размер:
1.62 Mб
Скачать

x2

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

0

1

2

3

4

5

6

7

8

9

x1

процедурою побудови і розв’язків допоміжної задачі

Рис. 7. Множина допустимих розв’язків нової ЗЛП

Назвемо послабленою задачу ЛП, одержану з ЗЦЛП шляхом відкидання

умови цілочисельності. Послаблені задачі мають наступні властивості:

1)в усіх випадках, коли послабленна задача не має допустимих розв’язків, їх немає і у вхідній задачі;

2)оптимальне значення цільової функції послабленої задачі визначає нижня (верхня) границя оптимального значення цільової функції вхідної задачі на мінімум (максимум);

3)якщо оптимальний розв’язок послабленої задачі є допустимим для вхідної задачі, то він є оптимальним і для вхідної ЗЦЛП.

У методі відсікання процес розв’язкання є ітераційним і визначається

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

21

2.2. Метод відсікання Гоморі

Нехай повністю цілочиселова задача має вигляд:

 

n

 

 

 

 

 

 

max

c

j

x

j

;

 

 

 

j=1

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

b

 

 

a

ij

x

j

;

 

j=1

 

 

i

 

 

 

 

 

 

 

 

 

усі

x j 0 та цілі.

(17)

(18)

(19)

Оскільки ми говоримо про повністю цілочислову задачу, то перед її

зведенням до канонічної форми ми повинні перетворити задачу таким чином,

щоб усі її коефіцієнти aij, bi, cj були цілими.

Нехай множина допустимих розв’язків задачі є непорожньою і зліченою. Розглянемо, як побудувати додаткові лінійні обмеження, які задовольняє кожний розв’язок, допустимий за умовами (18) - (19).

Розглянемо довільне лінійне обмеження, яке можна отримати за допомогою елементарних перетворень над лінійними обмеженнями (18). Тоді, якщо деякий розв’язок задовольняє (18) - (19), то він повинен також задовольнити і це рівняння. Нехай вираз

n

 

ij x j i

(20)

j 1

 

визначає саме таке обмеження.

Позначимо символом [ ] цілу частину дійсного числа - найбільше ціле,

що менше або дорівює . За визначенням [ ] . Наприклад:

12/5 ] = 2;

-12/5 ]= –3;

2/15 ] = 0;

-2/15 ]= –1;

5,6 ] = 5;

–5,6 ]= –6.

Оскільки величини x j невід’ємні ((19)),

і вони задовольняють обмеження

(20), то вони також задовольнять і більш слабке обмеження, ніж (20):

n

 

 

ij x j i

(21)

j 1

 

 

 

22

 

Далі, оскільки сума в лівій частині (21) повинна бути цілочисельною, (21) можна посилити таким чином:

n

 

ij x j i

(22)

j 1

 

Рівняння (22) зветься рівнянням в цілих частинах. Його можна перетворити

на рівність, додавши вільну змінну:

 

n

 

ij x j s i

(23)

j 1

 

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

Визначимо fij та fi - дробові частини чисел ij і i - тотожностями:

[

ij

]

f ij

 

ij

;

[

]

f i

 

 

 

 

 

i

 

i

За визначенням дробові частини є не від’ємним. Наприклад:

дробова частина числа 12/5 дорівнює 2/5;

дробова частина числа –12/5 складає 3/5;

дробова частина числа 1/3 дорівнює 1/3;

дробова частина числа –1/3 дорівнює 2/3;

дробова частина числа 3 дорівнює 0;

дробова частина числа -3 дорівнює 0.

Віднімаючи почленно з рівняння (23) рівняння (20), отримаємо обмеження, що складається лише з дробових частин:

n

 

 

 

s f .

 

( f

ij

)

x j

(24)

j 1

 

i

 

 

 

 

 

 

Це перетворення є елементарним, а це означає, що множина допустимих розв’язків системи (18), (19), (23) збігається з множиною допустимих розв’язків системи (18), (19), (24).

Рівняння (24) називається рівнянням відсікання, а рівняння (20), за яким побудували рівняння відсікання, зветься породжуючим рівнянням. Задача (17) – (19), (24) з додатковим обмеженням-відсіканням називається розширеною.

2.3. Схема алгоритму Гоморі

23

Крок 1. Знайти оптимальний розв’язок послабленої задачі.

Крок 2. Припинити обчислення, якщо поточний розв’язок ЗЛП є цілочисловим. В

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

xk aij x j

i

(породжуюче рівняння)

j

 

 

(підсумовування ведеться за небазисними

змінними j; i - дробове значення

змінної xk ), то додаткове обмеження має вигляд:

 

 

( f

ij

) x j s f

i

(рівняння-відсікання),

 

 

j

 

 

 

 

 

 

 

 

 

 

 

де f

ij

- дробова частина ij ; f

i

- дробова частина i .

 

 

 

 

 

 

 

Крок 3. Додати до вхідної задачі це рівняння-відсікання; знайти за допомогою двоїстого симплекс-методу3 оптимальний розв’язок розширеної задачі та повернутися на крок 2.

Алгоритм Гоморі має наступні особливості:

1. Загальна кількість обмежень розширеної задачі не може перевищувати кількість n змінних вхідної задачі у канонічній формі. Якщо розширена задача містить більш ніж n обмежень, то одна або декілька вільних змінних s, зазначених відсіканням Гоморі, повинні стати базисними. У цьому разі відповідні рівності стають надлишковими і можуть бути виключені з таблиці (приклад 5).

Отже, якщо остаточна змінна s рівняння-відсікання на кроці 3 деякої ітераціі знову увійшла у базис, то перед кроком 2 (до того, як виконується оптимізація) потрібно викреслити рядок і стовпець, що містять цю змінну.

2. Якщо у стовпці β вільних членів (стовпці "Розв’язок") є від’ємний коефіцієнт, і при цьому всі коефіцієнти відповідного рядка є невід’ємними, то ЗЦЛП буде нерозв’язною (не має допустимих розв’язків) (приклад 6).

2.4. Эффективность отсечения Гомори

[4] Вид неравенства, определяющего некоторое отсечение, зависит от

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

24

выбора производящей строки. Одна и та же таблица порождает различные отсечения. Возникает естественный вопрос: какое из них является наиболее эффективным? Эффективность отсечения характеризуется размерами области, отсекаемой от многогранника допустимых решений (рис. 8). Математически это выражается следующим образом.

(*)

(**)

Рис. 8.

Пусть по некоторой строке построено такое ограничение-отсечение:

( fij )x j s fi

j

 

 

fij x j s fi

 

j

 

 

fij x j fi

(*)

j

 

 

Пусть по другой производящей построено такое отсечение:

 

fkj x j fk

(**)

j

 

 

Правило 1. Отсечение (*) более эффективно, чем отсечение (**), если

fi fk ,

 

fij fkj ,

j,

 

причем, по крайней мере, в одном случае выполняется строгое неравенство.

Например,

– отсечение

1

 

 

 

3

 

 

 

1

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4 x1 4 x4

4 x5 4

 

 

 

 

 

 

 

эффективнее отсечения

 

2

x

 

 

3

x

 

 

 

1

x

 

 

1

.

 

 

 

 

 

 

 

 

 

3

 

3

4

 

4

 

 

 

4

5

 

 

4

 

25

среди отсечений

 

1

 

 

5

 

 

1

и

 

3

 

 

2

 

 

 

2

нельзя однозначно

12 x3

12 x4

12

12 x3

12 x4

 

12

 

 

 

 

выбрать более эффективное. Графическая иллюстрация этой ситуации дана на рис. 9.

Рис. 9 Использование данного определения эффективности отсечения связано с

существенными трудностями вычислительного характера. Поэтому были разработаны следующие правила, отражающие смысл этого определения.

Правило 2. В качестве производящей выбирается та строка, которой соответствует

max

fi

;

n

i

fij

 

 

 

 

j 1

 

Правило 2. В качестве производящей выбирается та строка, которой соответствует

max fi .

i

Второе правило теснее связано с определением эффективности. Использование этих двух правил не всегда обеспечивает введение наиболее эффективного отсечения.

 

2.5. Приклади застосування алгоритму Гоморі

 

Приклад 5.

max z x2 ;

(25)

 

3x1 2x2 6 ;

(26)

26

3x1 2x2 0 ;

 

(27)

x1 , x2 0 ;

 

 

(28)

x1 , x2 - цілі.

 

 

(29)

Зведемо задачу до канонічної форми:

 

 

 

max z x2 ;

 

 

(25а)

3x1 2x2 x3

6 ;

(26а)

3x1 2x2 x4

0 ;

(27а)

x1 ,x2 ,x3 ,x4 0

;

(28а)

x1 ,x2 ,x3 ,x4

- цілі.

(29а)

Розглянемо початкову симплекс-таблицю послабленної задачі (25а) - (28а) :

 

 

 

 

 

Таблиця 11

Базисні змінні

x1

x2

x3

x4

Розв’язок

 

 

 

 

 

 

Z

0

-1

0

0

0

 

 

 

 

 

 

x3

3

2

1

0

6

 

 

 

 

 

 

x4

-3

2

0

1

0

 

 

 

 

 

 

Після двох ітерацій симплекс-методу отримаємо оптимальну симплекс-таблицю послабленої задачі :

 

 

 

 

 

 

 

 

 

 

 

Таблиця 12

Базисні змінні

x1

x2

x3

x4

Розв’язок

Z

0

0

1

 

1

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

4

 

4

 

 

2

 

 

 

 

 

 

 

 

x1

1

0

 

1

 

 

1

 

1

6

 

 

 

 

 

 

 

6

 

 

 

 

x2

0

1

1

 

1

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

4

 

4

 

 

2

 

 

 

 

 

 

 

 

Через те, що отриманий розв’язок не є цілочисловим, слід поширити дану задачу шляхом введення відсікання. У даному випадку z -рядкок співпадає з x2 -

рядком, значить, відсікання, побудуване за x2 -рядком співпаде з відсіканням за z -

рядком і тому немає сенсу говорити про більш ефективне рівняння-відсікання. Отже, породжуюче рівняння має такий вигляд:

27

x2 14 x3 14 x4 32 .

Виділимо цілі і дробові частини коефіцієнтів:

 

 

 

1

 

 

 

1

 

 

 

1

 

x2

0

 

 

x3

0

 

 

x4

1

 

 

.

4

4

2

 

 

 

 

 

 

 

 

 

 

Сформуємо за цим обмеженням рівняння-відсікання Гоморі:

 

1

x

 

1

x

s

 

1

(30)

 

 

 

 

4

3

 

4

4

1

 

2

 

І введемо його в оптимальну симплекс-таблицю послабленої задачі (табл. 13). Таблиця 13

Базисні

x1

x2

x3

 

x4

 

s1

Розв’язок

змінні

 

 

 

 

 

 

 

 

 

Z

0

0

1

 

 

1

 

 

0

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

4

 

2

 

 

 

 

 

 

 

 

 

 

 

 

x1

1

0

 

1

 

 

 

1

 

0

1

 

 

6

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

x2

0

1

1

 

 

1

 

 

0

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

4

 

2

 

 

 

 

 

 

 

 

 

 

 

 

s1

0

0

 

1

 

 

1

 

1

 

1

 

 

 

 

 

 

 

 

 

 

4

 

4

 

 

2

 

Застосувавши двоїстий симплекс-метод, отримуємо оптимальне розв’язок задачі

(25а) - (28а), (30) (табл. 14)

 

 

 

 

 

 

 

 

 

 

Таблиця 14

 

 

 

 

 

 

 

 

 

 

 

 

 

Базисні змінні

x1

x2

x3

x4

 

s1

Розв’язок

Z

0

0

0

0

 

1

 

1

 

 

 

 

 

 

 

 

 

 

 

x1

1

0

0

 

1

 

 

2

 

 

2

 

 

 

3

 

3

 

 

 

 

 

3

 

 

 

x2

0

1

0

0

 

1

 

1

x3

0

0

1

1

 

-4

2

Розв’язок знову не задовольняє обмеження цілочисельності (29). Тому продовжимо процес побудови відсікань за допомогою алгоритму Гоморі. У

поточному розв’язку тільки змінна x1 не ціла. За таблицею 14 x1 - рядок має вигляд:

28

x1 13 x4 23 s1 23 .

Виділимо цілі і дробові частини коефіцієнтів:

 

 

 

2

 

 

 

2

 

 

 

2

 

x1

 

1

 

x4

0

 

 

s1

0

 

 

.

3

3

3

 

 

 

 

 

 

 

 

 

 

Відсікання, побудоване за цим обмеженням, має вигляд:

23 x4 23 s1 s2 23 .

Додамо його до останньої симплекс-таблиці та знову застосуємо двоїстий симплексметод (табл. 15).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблиця 15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Базисні змінні

x1

x2

x3

x4

s1

 

s2

 

 

Розв’язок

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Z

0

 

0

 

0

 

0

 

 

1

 

 

0

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

1

 

0

 

0

 

 

1

 

 

 

2

 

 

0

 

 

 

 

 

2

 

 

 

 

 

3

 

 

 

3

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2

0

 

1

 

0

 

0

 

 

1

 

 

0

 

 

 

 

1

 

 

 

x3

0

 

0

 

1

 

1

 

 

-4

 

0

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s2

0

 

0

 

0

 

 

2

 

 

2

 

1

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

3

 

 

 

 

 

 

 

 

 

 

3

 

 

Z

0

 

0

 

0

 

0

 

 

1

 

 

 

0

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

1

 

0

 

0

 

0

 

 

1

 

 

 

 

1

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

x2

0

 

1

 

0

 

0

 

 

1

 

 

0

 

 

 

 

1

 

 

 

x3

0

 

0

 

1

 

0

 

 

-5

 

3

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x4

0

 

0

 

0

 

1

 

 

1

 

 

 

 

3

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

Отримали оптимальний розв’язок початкової задачі: z=1, x1=1, x2=1.

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

29

1.Перше рівняння-відсікання має вигляд: 14 x3 14 x4 s1 12 .

З рівнянь (26а) и (27а) виразимо залишкові змінні x3 і x4 через x1 та x2 :

x3 6 3x1 2x2 ,

 

 

x2

 

 

4

 

 

(27)

 

 

max x 2

 

 

Друге відсікання

 

 

 

x1

3

4

5

(26)

 

 

x4 3x1 2x2 ,

 

 

та підставимо їх у перше рівняння-відсікання.

 

 

14 (6 3x1 2x2 ) 14 (3x1 2x2 ) s1 12 .

Після зведення подібних отримаємо:

x2 s1 1 або

x2 1(рис. 10).

Рис.10. Графічна ілюстрація процесу розв’язання ЗЦЛП з прикладу 5

2.Друге рівняння-відсікання має вигляд:

23 x4 23 s1 s2 23 .

Зпершого рівняння-відсікання виразимо змінну s1 через x3 та x4 :

30

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