Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод ЕІ м з 2013.doc
Скачиваний:
91
Добавлен:
20.02.2016
Размер:
4.13 Mб
Скачать

Зм 4. Цілочислове програмування

Завдання 6. Методи розвзання цілочислових задач лінійного

програмування

Теоретична частина. Значне місце в задачах математичного програмування займають задачі, на невідомі яких в оптимальному розв’язку накладена умова цілочисловості, а звичайне округлення приводить до грубих помилок (наприклад, кількість ферм у господарстві, кількість одиниць сільськогосподарської техніки тощо). Якщо умова цілочисловості накладається лише на частину невідомих, то такі задачі називають частково цілочисловими. Задачі, в яких крім умови цілочисловості оптимального розв'язку цільова функція і обмеження лінійні, називаються цілочисловими задачами лінійного програмування. Для знаходження оптимальних розв'язків цих задач застосовують точні (відтинання Гоморі) та комбінаторні (гілок і меж) методи.

6.1. Метод відтинання Гоморі

При застосуванні методу відтинання Гоморі використовують такий алгоритм:

1. Задача розв’язується симплексним методом без врахування вимог цілочисловості змінних.

2. Якщо в умовно-оптимальному плані є дробові значення, то вибирається змінна, яка має найбільшу дробову частину*). На базі цієї змінної (елементів

відповідного рядка кінцевої симплексної таблиці, в якому вона міститься) будується додаткове обмеження-відтинання Гоморі за формулою

n

{aijxj } ≥ {bi}

j=m+1

де {bi} – дробова частина базисної змінної в умовно-оптимальному плані,

яка вибрана для побудови обмеження-відтинання;

{aij} – дробові частини коефіцієнтів при невідомих лівої частини додатко-

вого обмеження-відтинання.

3. Формулюється рядок-відтинання Ui за формулою

Ui = - f {bi},

який приєднується до кінцевої симплексної таблиці умовно-оптимального плану. При цьому сформульований рядок–відтинання приймається за розв’язуючий рядок, а розв’язуюча колонка вибирається за максимальним значення (модулем) серед коефіцієнтів розв’язуючого рядка. Після розв’язання розширеної задачі за алгоритмом симплексного методу її перевіряють на цілочисловість. Якщо розв’язок не цілочисловий, то розрахунки повторюють, починаючи з п.2 до отримання цілочислового розв’язку.

Примітка*) Цілою частиною числа а називається найбільше ціле число а, що не перевищує а. Дробовою частиною є число {a}, яке дорівнює різниці між самим числом а та його цілою частиною, тобто {a} = а - а. Наприклад, для а = 3 ¾ ціле число а = 3, а дробове число {a}= 3 ¾ - 3 = ¾ ; для

а = - 3 ¾ ціле число а = - 3, а дробове число {a}= - 3 ¾ - ( - 4) = 1/3 .

6.2. Метод гілок і меж

Алгоритм розв’язання цілочислових задач за методом гілок і меж такий:

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

2. Коли в умовно-оптимальному плані є дробові значення, то вибирають одну з нечислових змінних xjі визначають її цілу частину.

3. Записують два обмеження, які відтинають не цілочислові розв’язки:

xj ≤ [xj *] та xj ≥ [xj *] + 1

де [xj *]– ціла частина дробової змінноїxj в умовно оптимальному розв’язку.

Наприклад, якщо xj=3 ¾, то отримуємо інтервал3;4, де, очевидно, немає цілочислових значеньxjі оптимальний розв’язок цілочислової задачі буде знаходитися або в інтерваліxj <= 3 або в інтерваліxj >= 4.

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

5. В будь-якій послідовності розв’язуються обидві задачі. Якщо отримано оптимальний цілочисловий розв’язок однієї задачі, а друга задача немає розв’язку, то процес розв’язування цілочислової задачі закінчено. У разі, коли оптимальний цілочисловий розв’язок одержано в обох задачах, то вибирається той розв’язок, який дає краще значення цільової функції. Якщо ж в обох задачах одержано не цілочислові значення, то для дальшого гілкування вибирають ту задачу, для якої знайдено краще значення цільової функції і здійснюють перехід до кроку 2. Розрахунки повторюються до отримання оптимального цілочислового розв"язку.

Контрольні питання

1. В яких випадках застосовуються методи цілочислового програмування ?

2. Як визначається ціла частина дробового числа ?

3. Як визначається дробова частина дробового числа ?

4. Як визначається базисна невідома, для якої формулюється рядок-відтинання ?

5. Як формулюється рядок-відтинання ?

6. Суть алгоритму методу гілок і меж ?.

7. Умови оптимальності цілочислових задач лінійного прорграмування ?

Приклад 6.1. Для виконання весняних польових робіт на площі 60 га фермер має можливість орендувати агрегати:

Марка агрегату

Змінний

виробіток, га

Затрати палива за 1 машино-зміну, кг

Орендна плата за 1 машино-зміну, грн.

А

12

40

70

В

16

60

80

Добові затрати палива не повинні перевищувати 230 кг.

Визначити кількість орендованих машино-змін при мінімумі орендної плати.

Розв'язання. Для побудови економіко-математичної моделі позначимо:

х1 - кількість машино-змін агрегату марки А, шт.;

х2 - кількість машино-змін агрегату марки В, шт.;

W – орендна плата, грн.

Тоді, умова задачі в математичній формі буде записана так:

1. Умова виконання механізованих робіт: 12х1 + 16х2 = 60

2. Умова витрат палива: 40 х1 + 60 х2 ≤ 230

3. Умова невід"ємності змінних :х1 ≥ 0; х2≥ 0

4. Змінні х1 та х2 - цілі числа.

Критерій оптимальності - мінімум орендної плати

Wmin = 70 х1 + 80 х2

Для запису задачі в канонічній формі введемо додаткову невідому S1 та штучну невідому А1, де S1- невикористана кількість палива, кг.

В результаті отримаємо: знайти Wmin = 0 - ( - 70 х1 - 80 х2)

при обмеженнях:

1) 12х1 + 16х2 + А1 = 60

2) 40х1 + 60х2 + S1 = 230

Розв’яжемо отриману М-задачу в симплексних таблицях.

Симплексна таблиця 6.1

Базисні невідомі

Значення базисних невідомих

х1

х2

S1

А1

α

А1

60

12

16

0

1

33/4

Ѕ1

230

40

60

1

0

35/6

Wmin

0

-70

-80

0

0

-

Fmin

60

12

16

0

1

-

Симплексна таблиця 6.2

Базисні невідомі

Значення базисних невідомих

х1

х2

S1

х2

3 3/4

3/4

1

0

Ѕ1

5

-5

0

1

Wmin

300

-10

0

0

Отримуємо оптимальний розв’язок задачі: Wmin = 300, х1 = 0 , х2 = 3 3/4,

Ѕ1 = 5. Розв’язок не цілочисловий, тому вводимо обмеження-відтинання. Визначаємо рядок, який містить max f{bi}, де bі – дробова частина базисної невідомої (х2). Для цього рядка запишемо рівняння, виділивши цілі і дробові частини коефіцієнтів:

(3 + 3/4) = (0 + 3/4)х1 +(1+0)* х2 + (0+0)* Ѕ1

Використовуючи формулу Ui = - f{bi}, запишемо рядок-відтинання U1

- 3/4= 3/4х1 + 0*х2 + 0*S1,

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

Симплексна таблиця 6.3

Базисні невідомі

Значення базисних невідомих

х1

х2

S1

х2

3 3/4

3/4

1

0

Ѕ1

5

-5

0

1

U1

-3/4

-3/4

0

0

Zmin

300

-10

0

0

Симплексна таблиця 6.4

Базисні невідомі

Значення базисних невідомих

х1

х2

S2

х2

3

0

1

0

Ѕ1

10

0

0

1

Х1

1

1

0

0

Zmin

310

0

0

0

Цілочисловий оптимальний розв’язок дорівнює: Wmin = 310 , х1 = 1, х2 = 3, S1 = 10.

Приклад 6.2. Розв"язати наведену в прикладі 6.1 задачу за методом гілок і меж.

Розв'язання. Для наведеної вище задачі без врахування умови цілочисловості отримано оптимальний розв’язок: Wmin = 300; Х1 = 0; Х2 = 3 ¾; Ѕ1 = 5;

(симплексна таблиця 6.2), де х2 = 3 ¾ - дробове число. Допустиме ціле значення х2 має задовольняти одну з нерівностей х2 ≤ 3, або х2 ≥ 4. Приєднуємо до початкової задачі кожне з обмежень і розв’язуємо по черзі обидві утворені задачі:

Задача 1 Задача 2

Wmin = 70 Х1 + 80 Х2 Wmin = 70 Х1 + 80 Х2

1) 12 Х1+ 16 Х2= 60 1) 12 Х1+ 16 Х2= 60

2) 40 Х1 + 60 Х2 ≤ 230 2) 40 Х1 + 60 Х2 ≤ 230

3) Х2 ≤ 3 3) Х2 4

Для задачі 1 оптимальним буде цілочисловий розв’язок : Wmin = 310;

Х1 = 1; Х2 = 3; Ѕ1 =10.

Задача 2 не має допустимого розв’язку.

Таким чином, оптимальний розв’язок цілочислової задачі такий:

Wmin = 310; Х1 = 1; Х2 = 3; Ѕ1 =10 (див. також оптимальний розв’язок за методом відтинання Гоморі, симплексна таблиця 6.4)

Висновки. Мінімальну орендну плату в розмірі 310 грн. (Wmin =310) фермер буде платити, якщо буде орендувати 1 машино-зміну агрегату марки А (х1=1) та 3 машино-зміни агрегату марки В (х2= 3). Залишок палива становить 10 кг (S1 =10).

Задачі для самостійного розв’язання

Задача 6. Для збирання зернових на площі 1200+250хК га господарство може орендувати комбайни марок А та В, техніко-економічні показники яких за сезон жнив наведені нижче:

Показник

Комбайни марок

А

В

1.Сезонний виробіток, га

200

250

2. Експлуатаційні затрати, тис. грн.

18

20

3.Орендна плата, тис. грн.

80+Р

90+К

Визначити кількість орендованих комбайнів марок А та В при обов’язковому виконанні запланованого обсягу робіт та мінімальній орендній платі. Експлуатаційні затрати не повинні перевищувати 300 тис. грн.

Зміст виконання завдання

1. Запис умов задачі за індивідуальним варіантом.

2. Формулювання економіко-математичної моделі задачі.

3. Розв’язання задачі за методом відтинання Гоморі в симплексних таблицях (додаток А), а за методом гілок і меж тільки за допомогою надбудови MS Excel ”Поиск решения” (додаток Б).

4. Висновки за результатами розв’язку задачі.