Відмінності між версіями «Комбінаторні методи. Метод гілок та меж»
Рядок 10: | Рядок 10: | ||
перша задача: | перша задача: | ||
− | <center><math> \max \,(\min )\,\,F=\sum\limits_{j=1}^n {c_{j} x_{j} }</math></center> | + | <center><math> \max \,(\min )\,\,F=\sum\limits_{j=1}^n {c_{j} x_{j} }</math> '''(1)'''</center> |
за умов: | за умов: | ||
<center><math>\sum\limits_{j=1}^n {a_{ij} x_{j} } \left\{ {\begin{array}{l} | <center><math>\sum\limits_{j=1}^n {a_{ij} x_{j} } \left\{ {\begin{array}{l} | ||
Рядок 18: | Рядок 18: | ||
\end{array}} \right\}b_{i} | \end{array}} \right\}b_{i} | ||
\quad | \quad | ||
− | \left( {i=\overline {1,m} } \right);</math></center> | + | \left( {i=\overline {1,m} } \right);</math> '''(2)'''</center> |
Рядок 24: | Рядок 24: | ||
x_{j} \ge 0 | x_{j} \ge 0 | ||
\quad | \quad | ||
− | \left( {j=\overline {1,n} } \right);</math></center> | + | \left( {j=\overline {1,n} } \right);</math> '''(3)'''</center> |
− | <center> <math>\ \quad x_{j}</math> - цілі числа <math>\left( {j=\overline {1,n} } \right);</math></center> | + | <center> <math>\ \quad x_{j}</math> - цілі числа <math>\left( {j=\overline {1,n} } \right);</math> '''(4)'''</center> |
− | <center> <math>x_j \le \left [ x'_j \right ] </math> </center> | + | <center> <math>x_j \le \left [ x'_j \right ] </math> '''(5)'''</center> |
друга задача: | друга задача: | ||
− | <center><math> \max \,(\min )\,\,F=\sum\limits_{j=1}^n {c_{j} x_{j} }</math></center> | + | <center><math> \max \,(\min )\,\,F=\sum\limits_{j=1}^n {c_{j} x_{j} }</math> '''(6)'''</center> |
за умов: | за умов: | ||
<center><math>\sum\limits_{j=1}^n {a_{ij} x_{j} } \left\{ {\begin{array}{l} | <center><math>\sum\limits_{j=1}^n {a_{ij} x_{j} } \left\{ {\begin{array}{l} | ||
Рядок 40: | Рядок 40: | ||
\end{array}} \right\}b_{i} | \end{array}} \right\}b_{i} | ||
\quad | \quad | ||
− | \left( {i=\overline {1,m} } \right);</math></center> | + | \left( {i=\overline {1,m} } \right);</math> '''(7)'''</center> |
Рядок 46: | Рядок 46: | ||
x_{j} \ge 0 | x_{j} \ge 0 | ||
\quad | \quad | ||
− | \left( {j=\overline {1,n} } \right);</math></center> | + | \left( {j=\overline {1,n} } \right);</math> '''(8)'''</center> |
− | <center> <math>\ \quad x_{j}</math> - цілі числа <math>\left( {j=\overline {1,n} } \right);</math></center> | + | <center> <math>\ \quad x_{j}</math> - цілі числа <math>\left( {j=\overline {1,n} } \right);</math> '''(9)'''</center> |
− | <center> <math>x_j \ge \left [ x'_j \right ] </math> </center> | + | <center> <math>x_j \ge \left [ x'_j \right ] </math> '''(10)'''</center> |
+ | |||
+ | де <math>x'_j</math> — дробова компонента розв’язку початкової задачі цілочислового програмування. Наведені задачі (1)—(5) і (6)—(10) спочатку посла-б¬люємо, тобто розв’язуємо з відкиданням обмежень (4) і (9). Якщо знайдені оптимальні плани задовольняють умови цілочисловості, то ці плани є розв’язками початкової задачі цілочислового програмування. Інакше пошук розв’язку задачі триває. Для дальшого розгалуження вибираємо розв’язок задачі з більшим значенням цільової функції, якщо йдеться про максимізацію, і навпаки — з меншим значенням цільової функції в разі її мінімізації. Подальше розгалуження виконується доти, доки не буде встановлено неможливість поліпшення розв’язку. Здобутий останній план — оптимальний. | ||
+ | |||
+ | Розв’язування цілочислових задач методом гілок і меж можна значно прискорити. Очевидно, що кожна наступна задача, яку отримують в процесі розв’язування відрізняється від попере-дньої лише одним обмеженням. Досить буде почергово приєд-нати нові обмеження виду (5) і (10) до останньої симплекс-таблиці попередньої задачі та вилучити (в разі необхідності) не-потрібні «старі» обмеження. | ||
+ | |||
+ | Геометрично введення додаткових лінійних обмежень виду (5) та (10) в систему обмежень початкової задачі означає проведення гіперплощин (прямих), що розтинають багатогранник (багатокутник) допустимих планів відповідної задачі лінійно-го програмування у такий спосіб, що уможливлюється включення в план найближчої цілої точки цього багатокутника. Допустимо, що А — точка максимуму, тоді за методом гілок та меж багатокутник допустимих планів задачі ABCOD поділяється на дві частини прямими <math>x'_1 = \left [ x'_1 \right ]</math> та <math>x'_1 = \left [ x'_1 \right ]+1</math>, що виключає з розгляду точку А, координата якої є не цілим числом. |
Версія за 07:55, 14 травня 2012
В основі комбінаторних методів є перебір можливих варіантів розв’язків поставленої задачі. Для розв’язування задач цілочис-лового програмування ефективнішим за метод Гоморі є метод гілок і меж. Спочатку, як і в разі методу Гоморі, симплексним методом розв’язується послаблена (без умов цілочисловості) за-дача. Потім вводиться правило перебору.
Нехай потрібно знайти Неможливо розібрати вираз (невідома помилка): x_j
— цілочислову змінну, значення якої Неможливо розібрати вираз (невідома помилка): x_j= x'_j в оптимальному плані послабленої задачі є дробовим. Очевидно, що в деякому околі даної точки також не існує цілочислових значень, тому відповідний проміжок можна виключити з множини допустимих планів задачі в подальшому розгляді. Та-ким проміжком є інтервал між найближчими до Неможливо розібрати вираз (невідома помилка): x'_j цілочисловими значеннями. Можна стверджувати, що на інтервалі Неможливо розібрати вираз (невідома помилка): \left [ \left [ x'_j \right ] ; \left [ x'_j \right ] + 1 \right ]
цілих значень немає.
Наприклад, якщо Неможливо розібрати вираз (невідома помилка): x'_j = 2,7
дістаємо інтервал \left [ 2;3 \right ] , де, очевидно, немає Неможливо розібрати вираз (невідома помилка): x_j , яке набуває цілого значення і оптимальний розв’язок буде знаходитися або в інтервалі Неможливо розібрати вираз (невідома помилка): x_j \le 2
, або Неможливо розібрати вираз (невідома помилка): x_j \ge 3
Виключення проміжку \left [ 2;3 \right ] з множини допустимих планів здійснюється введенням до системи обмежень початкової задачі додаткових нерів¬ностей. Тобто допустиме ціле значення Неможливо розібрати вираз (невідома помилка): x_j має задовольняти одну з нерівностей виду:
Неможливо розібрати вираз (невідома помилка): x_j \le \left [ x'_j \right ]
або Неможливо розібрати вираз (невідома помилка): x_j \ge \left [ x'_j \right ] +1
Дописавши кожну з цих умов до задачі з послабленими обме-женнями, дістанемо дві, не пов’язані між собою, задачі. Тобто, початкову задачу цілочислового програмування поділимо на дві задачі з урахуванням умов цілочисловості змінних, значення яких в оптимальному плані послабленої задачі є дробовими.
Це означає, що симплекс-методом розв’язуватимемо дві такі задачі:
перша задача:
за умов:
- цілі числа Неможливо розібрати вираз (невідома помилка): \left( {j=\overline {1,n} } \right);(4)
друга задача:
за умов:
- цілі числа Неможливо розібрати вираз (невідома помилка): \left( {j=\overline {1,n} } \right);(9)
де Неможливо розібрати вираз (невідома помилка): x'_j
— дробова компонента розв’язку початкової задачі цілочислового програмування. Наведені задачі (1)—(5) і (6)—(10) спочатку посла-б¬люємо, тобто розв’язуємо з відкиданням обмежень (4) і (9). Якщо знайдені оптимальні плани задовольняють умови цілочисловості, то ці плани є розв’язками початкової задачі цілочислового програмування. Інакше пошук розв’язку задачі триває. Для дальшого розгалуження вибираємо розв’язок задачі з більшим значенням цільової функції, якщо йдеться про максимізацію, і навпаки — з меншим значенням цільової функції в разі її мінімізації. Подальше розгалуження виконується доти, доки не буде встановлено неможливість поліпшення розв’язку. Здобутий останній план — оптимальний.
Розв’язування цілочислових задач методом гілок і меж можна значно прискорити. Очевидно, що кожна наступна задача, яку отримують в процесі розв’язування відрізняється від попере-дньої лише одним обмеженням. Досить буде почергово приєд-нати нові обмеження виду (5) і (10) до останньої симплекс-таблиці попередньої задачі та вилучити (в разі необхідності) не-потрібні «старі» обмеження.
Геометрично введення додаткових лінійних обмежень виду (5) та (10) в систему обмежень початкової задачі означає проведення гіперплощин (прямих), що розтинають багатогранник (багатокутник) допустимих планів відповідної задачі лінійно-го програмування у такий спосіб, що уможливлюється включення в план найближчої цілої точки цього багатокутника. Допустимо, що А — точка максимуму, тоді за методом гілок та меж багатокутник допустимих планів задачі ABCOD поділяється на дві частини прямими Неможливо розібрати вираз (невідома помилка): x'_1 = \left [ x'_1 \right ]
та Неможливо розібрати вираз (невідома помилка): x'_1 = \left [ x'_1 \right ]+1
, що виключає з розгляду точку А, координата якої є не цілим числом.