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

4.4. Задачі цілочисельного лінійного проґрамування з булевими змінними. Методи приведення цілочисельних задач до булевих

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

Розглянемо застосування методу гілок та границь до розширеної задачі про наплечник (тобто задачі, для якої ).

Приклад 3. Знайти оптимальний розв’язок наступної задачі:

3x1+2x2+4x3+ x4+5x5 Max

x1+ x2+5x3+2x4+4x5<=9

2x1+3x2+3x3+5x4+3x5<=9, значення кожного x — нуль або одиниця.

Для розв’язання цієї задачі насамперед впорядкуємо змінні в порядку спадання значень коефіцієнтів функції мети при них: x5x3x1x2x4. В цьому порядку реалізуватимемо розгалуження з метою якнайшвидшого відтинання підмножин неперспективних розв’язків якомога раніше. В якості стратегії розгалуження використовуватимемо стратегію вглиб дерева. Окрім того, для цієї задачі існує декілька можливостей для обчислення верхньої границі.

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

3x1+2x2+4x3+ x4+5x5 Max

x1+ x2+5x3+2x4+4x5<=9

2x1+3x2+3x3+5x4+3x5<=9

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

Будь-яку задачу цілочисельного програмування можна привести до лінійної задачі булевого програмування. Для цього задача спочатку приводиться до поліноміальної булевої, а потім до лінійної булевої.

Приведення до поліноміальної задачі можна здійснити двома способами:

  • замінити кожну з цілочисельних змінних сумою бінарних ; недоліком такого представлення є значна кількість булевих змінних;

  • замінити двійковим представленням , де — найбільше ціле, для якого за умови .

В свою чергу булева поліноміальна задача завжди може бути приведена до лінійної:

  • здійснюємо заміну ;

  • якщо наявні добутки двох різних змінних, то заміняємо їх додатковою змінною та парою обмежень — ;

xj

xk

xjk

0

0

0

0

1

0

1

0

0

1

1

1

правильність такої заміни перевіряється безпосередньо за допомогою складання таблички та підстановки результатів в обмеження;
  • в загальному випадку спочатку добуток багатьох змінних замінюється однією змінною, потім з добутком виконується перша заміна та додаються два обмеження

; , .

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