- •«Задачі цілочисельного програмування. Задача про рюкзак»
- •Завдання з неподільними
- •Комбінаторні задачі
- •Завдання з перервними цільовими функціями
- •Приклад Розв’язання цзлп методом Гомори
- •Інтерація 2
- •Метод гілок і меж
- •Розв’язання цзлп методом гілок і меж
- •Задача про рюкзак
- •Висновки
- •Список літератури
Приклад Розв’язання цзлп методом Гомори
Розглянемо особливості застосування методу Гоморі на конкретному прикладі. Нехай дана задача з наступними умовами:
Ітерація 1
Використовуючи звичайний симплекс-алгоритм, вирішуємо безперервний аналог вихідної завдання, в якому ігноруються умови цілочисельності 25. В якості вихідного базису можна взяти перший і другий стовпці. На його основі заповнюється таблиця T (1,1) (перший індекс у позначенні таблиці відповідає "великий" ітерації, а другий - "малої").
Як видно з рядка оцінок, даний базис є оптимальним, однак відповідний йому план х = {11/5, 17/5, 0) не є цілочисловим, тому вибираємо з таблиці T (1,1) рядок, що містить перший нецілі елемент, і згідно з формулою 22 будуємо відтинає обмеження:
після чого переходимо до наступної "великої" ітерації.
Інтерація 2
З урахуванням сформованого відсікаючого обмеження заповнюємо симплекс-таблицю T (2,1).
Відповідно до алгоритму двоїстого симплекс-методу переходимо до наступного базису N (β (2,2)) = {1, 2, 3}.
План, досягнутий в таблиці T (2,2), є не тільки оптимальним (b (β (2,2))> 0), але і повністю складається з цілочисельних компонент, тобто Розв’язання задачі знайдено: х * = (1, 2, 1) і f (x) = 7.
Метод гілок і меж
Іншим широко застосовуваним для розв’язання задач дискретного програмування методом є метод гілок і меж. Вперше даний метод для розв’язання ЦЗЛП запропонували в 1960 р. Ленг і Дойг, а його "друге народження" відбулося в 1963 р. у зв'язку з виходом роботи Літтла, Мурті, Суїні і Керел, присвяченій рішенню задачі про комівояжера [33].
Взагалі кажучи, термін "метод гілок і меж" є збірним і включає в собі ціле сімейство методів, застосовуваних для розв’язання як лінійних, так і нелінійних дискретних завдань, об'єднуються загальними принципами. Коротко викладемо їх.
Нехай стоїть завдання: (*)
де D - кінцеве безліч.
Алгоритм є ітеративним, і на кожній ітерації відбувається робота з деяким підмножиною множини D. Назвемо це підмножина поточним і будемо позначати його як D (q), де q - індекс ітерації. Перед початком першої ітерації в якості поточного безлічі вибирається всі безліч D (D (1) = D), і для нього деяким способом обчислюється значення верхньої оцінки для цільової функції max f (x) ≤ ξ (D (1)). Стандартна ітерація алгоритму складається з наступних етапів:
1) якщо можна вказати план x (q) <D (q), для якого f (x (q)) ≤ ξ (D (q)), то x (q) = х * - Розв’язання задачі (*).
2) якщо такий план не знайдений, то область визначення D (q) деяким чином розбивається на підмножини D1 (q), D2 (q), ..., Dlq (q), що задовольняють умовам:
Для кожної підмножини знаходяться оцінки зверху (верхні межі) для цільової функції ξD1 (q), ξD2 (q), ..., ξDl1 (q), уточнюючі раніше отриману оцінку ξD (q), тобто ξDi (q) ≤ ξD ( q), i <1: lq. Можливо одне з двох:
2.1) якщо існує такий план х (q), що то цей план оптимальний.
2.2) якщо такий план не знайдений, то вибирається одне з множин Di (q), i> 1: lq (як правило, має найбільшу оцінку.
Усі наявні до поточного моменту кінцеві підмножини, тобто ті підмножини, які ще не зазнали процесу дроблення, означуються як D1 (q +1), D2 (q +1), ..., Dl (q +1) (q +1), після чого процес повторюється.
Схема дроблення безлічі D представлена на рис.3 у вигляді графа. Існують і більш складні системи індексації підмножин, при яких не потрібно їх переозначення на кожному кроці.
Конкретні реалізації методу гілок і меж пов'язані з правилами розбиття на підмножини (правилами розгалуження) і побудови оцінок значень цільових функцій на даних підмножинах (кордонів).
