Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
ТЕМА 5. цілочислове програмування
План теми
5.1. Задача цілочислового програмування та її особливості.
5.2. Геометрична інтерпретація задачі цілочислового програмування.
5.3. Методи розвязання цілочислових задач лінійного програмування.
5.3.1. Загальна характеристика методів розвязання цілочислових задач лінійного програмування.
5.3.2. Методи відтинання. Метод Гоморі.
5.3.3. Комбінаторні методи. Метод гілок та меж.
5.4. Розвязання задач цілочислового програмування на ПЕОМ.
5.1. задача цілочислового програмування та її особливості
Існує доволі широке коло задач математичного програмування, в економіко-математичних моделях яких одна або кілька змінних за своїм економічним змістом мають набувати тільки цілих значень. До таких задач відносяться, наприклад, задачі, у яких змінні означають кількість одиниць неподільної продукції (плити, шафи, столи і т.і.), кількість станків при оптимальному завантаженні обладнання для виконання деяких видів робіт, кількість тролейбусів при оптимальному розподілі їх за різними маршрутами, кількість стандартних листів фанери, яку потрібно розпиляти на деякі стандартні заготовки і багато інших подібних задач.
Задача математичного програмування, змінні якої мають набувати тільки цілих значень, називається задачею цілочислового програмування. У тому разі, коли цілочислових значень мають набувати не всі, а одна чи кілька змінних, задача називається частково цілочисловою.
До цілочислового програмування належать також ті задачі математичного програмування, в яких змінні набувають лише двох значень: 0 або 1 це так звані задачі цілочислового програмування з бінарними (або альтернативними) змінними.
Слід зазначити, що умова цілочисельності є по суті нелінійною і може зустрічатися в задачах, що містять як лінійні, так і нелінійні функції стосовно змінних задачі. В подальшому будемо розглядати тільки такі задачі математичного програмування, в яких крім умови цілочисельності всі обмеження та цільова функція є лінійними. Такі задачі мають назву цілочислових задач лінійного програмування.
Загальна цілочислова задача лінійного програмування записується наступним чином:
, ( 5.1 )
, ( 5.2 )
, , ( 5.3 )
цілі числа, . ( 5.4 )
Слід зазначити, що у розглянутій у попередній темі класичній транспортній задачі та інших задачах транспортного типу з цілочисловими параметрами початкових умов забезпечується цілочисловий розвязок без застосування спеціальних методів, однак у загальному випадку вимога цілочисельності змінних значно ускладнює розвязування задач математичного програмування і вимагає застосування спеціальних методів для їх розвязання.
5.2. геометрична інтерпретація задачі цілочислового програмування
Нехай маємо деяку цілочислову задачу лінійного програмування на максимум з двома змінними: x1 та x2..
Розглянемо спочатку геометричну інтерпретацію цієї задачі без врахування умови цілочисельності цих змінних. Тоді область допустимих розвязків такої задачі буде представляти собою, як відомо, деякий опуклий багатокутник, наприклад, багатокутник ABCO (рис. 5.1). Цільова функція, як і раніше, буде представляти собою множину ліній рівня, кожна з яких відповідає деякому числовому значенню цільової функції. Тоді переміщуючи деяку початкову лінію рівня у напрямку зростання значення цільовою функції, тобто у напрямку вектору , отримаємо максимальне значення цільової функції у кутовій точці B. Координати цієї точки і є оптимальним планом задачі лінійного програмування без врахування умови цілочисельності. Нехай, при цьому, , тобто оптимальним планом задачі є вектор .
Тепер врахуємо додаткові умови цілочисельності, що накладаються на змінні задачі. Умова цілочисельності, призводить до того, що геометрично область допустимих розвязків лінійної цілочислової задачі тепер буде представляти собою множину (систему) точок з цілочисловими координатами, що знаходяться всередині опуклого багатокутника допустимих розвязків відповідної не цілочислової задачі. Тобто, для розглянутого на рис. 5.1 випадку множина допустимих планів складається тільки з девяти точок (рис. 5.2), які утворені перетинами сімї прямих, що паралельні осям Ох1 та Oх2 і проходять через точки з цілими координатами 0, 1, 2. Для знаходження цілочислового оптимального розвязку лінію рівня, що відповідає цільовій функції, пересуваємо у напрямку вектора нормалі до перетину з кутовою точкою утвореної цілочислової сітки. Координати цієї точки і є оптимальним цілочисловим розвязком задачі. У нашому прикладі оптимальний цілочисловий розвязок відповідає точці М з координатами, тобто і оптимальний план цілочислової задачі лінійного програмування не співпадає з оптимальним планом задачі лінійного програмування.
Таким чином особливість геометричної інтерпретації цілочислової задачі у зіставленні зі звичайною задачею лінійного програмування полягає лише у визначенні множини допустимих розвязків. Областю допустимих розвязків загальної задачі лінійного програмування є опуклий багатогранник, а вимога цілочисельності розвязку приводить до такої множини допустимих розвязків, яка є дискретною і утворюється тільки з окремих точок.
Якщо у разі двох змінних розвязок задачі можна відшукати графічним методом, тобто, використовуючи цілочислову сітку, можна досить просто знайти оптимальний план, то в іншому разі необхідно застосовувати спеціальні методи.
5.3. Загальна характеристика методів розвязування цілочислових задач лінійного програмування
Для знаходження оптимального розвязку цілочислових задач застосовують різні методи. Найпростішим з них є знаходження оптимального розвязку задачі лінійного програмування як такої, що має лише неперервні (а не цілочислові змінні), з подальшим їх заокругленням. Такий підхід є виправданим тоді, коли змінні в оптимальному плані набувають досить великих значень у зіставленні їх з одиницями вимірювання. Нехай, наприклад, у результаті розвязування задачі про поєднання галузей у сільськогосподарському підприємстві отримали оптимальне поголівя корів 1235,6. Заокругливши це значення до 1236, ми не зробимо значної похибки. Проте за інших умов такі спрощення призводять до істотних неточностей. Так, повертаючись до попереднього прикладу (рис. 5.1), бачимо, що максимальне значення функціонала для даної задачі знаходиться в точці В(). Заокруглення дасть таке значення оптимального плану (точка D на рис. 5.1). Очевидно, що точка D не може бути розвязком задачі, оскільки вона навіть не належить множині допустимих розвязків (чотирикутник ОАВС), тобто відповідні значення змінних не задовольнятимуть систему обмежень задачі.
Для знаходження оптимальних планів задач цілочислового програмування застосовують такі групи спеціальних методів:
1) точні методи:
2) наближені методи.
Основою методів відтинання є ідея поступового «звуження» області допустимих розвязків розглядуваної задачі. Пошук цілочислового оптимуму починається з розвязування задачі з так званими послабленими обмеженнями, тобто без урахування вимог цілочисельності змінних. Далі введенням у модель спеціальних додаткових обмежень, що враховують цілочисельність змінних, багатогранник допустимих розвязків послабленої задачі поступово зменшують доти, доки змінні оптимального розвязку не набудуть цілочислових значень.
До цієї групи належать:
а) методи розвязування повністю цілочислових задач (дробовий алгоритм Гоморі);
б) методи розвязування частково цілочислових задач (другий алгоритм Гоморі, або змішаний алгоритм цілочислового програмування).
Комбінаторні методи цілочислової оптимізації базуються на ідеї перебору всіх допустимих цілочислових розвязків, однак, згідно з їх процедурою здійснюється цілеспрямований перебір лише досить невеликої частини розвязків. Найпоширенішим у цій групі методів є метод гілок і меж.
Починаючи з розвязування послабленої задачі, він передбачає поділ початкової задачі на дві підзадачі через виключення областей, що не мають цілочислових розвязків, і дослідження кожної окремої частини багатогранника допустимих розвязків.
Для розвязування задач із бінарними змінними застосовують комбінаторні методи, причому, оскільки змінні є бінарними, то методи пошуку оптимуму значно спрощуються.
Досить поширеними є також наближені методи розвязування цілочислових задач лінійного програмування. Оскільки для практичних задач великої розмірності за допомогою точних методів не завжди можна знайти строго оптимальний розвязок за прийнятний час або для розвязування задачі використовуються наближено визначені, неточні початкові дані, то часто в реальних задачах досить обмежитися наближеним розвязком, пошук якого є спрощеним.
Значна частина наближених алгоритмів базується на використанні обчислювальних схем відомих точних методів, таких, наприклад, як метод гілок і меж.
До наближених методів належать: метод локальної оптимізації (метод вектора спаду); модифікації точних методів; методи випадкового пошуку та ін.
Головними показниками для зіставлення ефективності застосування конкретних наближених алгоритмів на практиці є такі: абсолютна та відносна похибки отриманих наближених розвязків.
, ,
де F цільова функція (в даному разі для визначеності допускаємо вимогу відшукання максимального її значення); Х1 наближений розвязок, знайдений деяким наближеним методом; Х* оптимальний план задачі.
5.4. Методи відтинання. Метод Гоморі
В основу методів відтинання покладено ідею Данціга. Сутність цієї ідеї полягає у тому, що спочатку задача розвязується без врахування умови цілочисельності, тобто як звичайна задача лінійного програмування. Якщо у результаті розвязання такої задачі ми отримаємо цілочисловий оптимальний план, задача розвязана. Якщо ж оптимальний план не є цілочисловим, до обмежень задачі додається нове обмеження, що має наступні властивості:
Таке додаткове обмеження, якому притаманні ці властивості, називається правильним відтинанням.
Далі задача розвязується з врахуванням нового обмеження. Якщо її розвязок знову не задовольняє умови цілочисельності, то будується нове додаткове обмеження, що відтинає отриманий розвязок, не зачіпаючи цілочислових планів. Процес приєднання додаткових обмежень повторюють доти, доки не буде знайдено цілочислового оптимального плану, або доведено, що його не існує.
Геометрично введення додаткового лінійного обмеження означає проведення гіперплощини (прямої), що відтинає від багатогранника (багатокутника) допустимих розвязків задачі ту його частину, яка містить точки з нецілочисловими координатами, однак не зачіпає жодної цілочислової точки даної множини. Отриманий новий багатогранник розвязків містить всі цілі точки, які були в початковому, і розвязок, що буде отримано на ньому, буде цілочисловим (рис. 5.3).
Слід відмітити, що визначення правила для реалізації ідеї Данціга стосовно формування додаткового обмеження виявилось досить складним завданням і першим, кому вдалось успішно реалізувати цю ідею, був Гоморі.
Розглянемо алгоритм, запропонований Гоморі, для розвязування повністю цілочислової задачі лінійного програмування, що ґрунтується на використанні симплексного методу і передбачає застосування досить простого способу побудови правильного відтинання.
Нехай маємо задачу цілочислового програмування:
( 5.5 )
за умов:
, ( 5.6 )
, ( 5.7 )
цілі числа . ( 5.8 )
Допустимо, що параметри цілі числа.
Не враховуючи умови цілочисельності, знаходимо розвязок задачі (5.5)(5.7) симплексним методом. Нехай розвязок існує і міститься в такій симплексній таблиці:
Базис |
Сбаз |
План |
c1 |
c2 |
... |
cm |
cm + 1 |
... |
cn |
х1 |
х2 |
... |
хm |
хm + 1 |
... |
хn |
|||
х1 |
c1 |
1 |
1 |
0 |
... |
0 |
1m + 1 |
... |
1n |
х2 |
c2 |
2 |
0 |
1 |
... |
0 |
2m + 1 |
... |
2n |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
хm |
cm |
m |
0 |
0 |
... |
1 |
mm + 1 |
... |
mn |
Змінні базисні, а вільні. Оптимальний план задачі: . Якщо цілі числа, то отриманий розвязок є цілочисловим оптимальним планом задачі (5.5)(5.8). Інакше існує хоча б одне з чисел, наприклад, дробове. Отже, необхідно побудувати правильне обмеження, що відтинає нецілу частину значення .
Розглянемо довільний оптимальний план задачі (5.5) (5.7). Виразимо в цьому плані базисну змінну через вільні змінні:
. (5.9)
Виразимо коефіцієнти при змінних даного рівняння у вигляді суми їх цілої та дробової частин. Введемо позначення: ціла частина числа , дробова частина числа 1. Отримаємо:
, (5.10)
або
. (5.11)
Отже, рівняння (6.11) виконується для будь-якого допустимого плану задачі (5.5)(5.7). Допустимо тепер, що розглянутий план є цілочисловим оптимальним планом задачі. Тоді ліва частина рівняння (5.11) складається лише з цілих чисел і є цілочисловим виразом. Отже, права його частина також є цілим числом і справджується рівність:
, (5.12)
де N деяке ціле число.
Величина N не може бути відємною. Якщо б , то з рівняння (5.12) приходимо до нерівності:
.
Звідки . Тобто це означало б, що дробова частина перевищує одиницю, що неможливо. У такий спосіб доведено, що число N є невідємним.
Якщо від лівої частини рівняння (6.12) відняти деяке невідємне число, то приходимо до нерівності:
, (5.13)
яка виконується за допущенням для будь-якого цілочислового плану задачі (5.5)(5.7). У такий спосіб виявилося, що нерівність (5.13) є шуканим правильним відтинанням.
Отже, для розвязування цілочислових задач лінійного програмування (5.1)(5.4) методом Гоморі застосовують такий алгоритм:
1. Симплексним методом розвязується задача без вимог цілочисельності змінних (5.1)(5.3).
Якщо серед елементів умовно-оптимального плану немає дробових чисел, то цей план є розвязком задачі цілочислового програмування (5.1)(5.4).
Якщо задача (5.1)(5.3) не має розвязку (цільова функція необмежена, або система обмежень несумісна), то задача (5.1) (5.4) також не має розвязку.
2. Коли в умовно-оптимальному плані є дробові значення, то вибирається змінна, яка має найбільшу дробову частину. На базі цієї змінної (елементів відповідного рядка останньої симплексної таблиці, в якому вона міститься) будується додаткове обмеження Гоморі:
.
3. Додаткове обмеження після зведення його до канонічного вигляду і введення базисного елемента приєднується до останньої симплексної таблиці, яка містить умовно-оптимальний план. Отриману розширену задачу розвязують і перевіряють її розвязок на цілочисельність. Якщо він не цілочисловий, то процедуру повторюють, повертаючись до п. 2. Так діють доти, доки не буде знайдено цілочислового розвязку або доведено, що задача не має допустимих розвязків на множині цілих чисел.
У літературі доведено, що за певних умов алгоритм Гоморі є скінченим, але процес розвязування задач великої розмірності методом Гоморі повільно збіжний. Слід також мати на увазі, що і кількість ітерацій суттєво залежить від сформованого правильного відтинання. Наведене правило (5.13) щодо формування правильного відтинання не єдине. Існують ефективніші відтинання, які використовуються у другому та третьому алгоритмах Гоморі, однак наявний практичний досвід ще не дає змоги виділити з них найкращий.
Загалом, алгоритм Гоморі в обчислювальному аспекті є мало вивченим. Якщо в лінійному програмуванні спостерігається відносно жорстка залежність між кількістю обмежень задачі та кількістю ітерацій, що необхідна для її розвязування, то для цілочислових задач такої залежності не існує. Кількість змінних також мало впливає на трудомісткість обчислень. Очевидно, процес розвязання цілочислової задачі визначається не лише її розмірністю, а також особливостями багатогранника допустимих розвязків, що являє собою набір ізольованих точок.
Як правило, розвязування задач цілочислового програмування потребує великого обсягу обчислень. Тому при створенні програм для ЕОМ особливу увагу слід приділяти засобам, що дають змогу зменшити помилки округлення, які можуть призвести до того, що отриманий цілочисловий план не буде оптимальним.
5.5. Комбінаторні методи.
Метод гілок та меж
В основу комбінаторних методів покладено перебір можливих варіантів розвязків поставленої задачі. Кожен з них характеризується певною послідовністю перебору варіантів та правилами виключення, що дають змогу ще в процесі розвязування задачі виявити неоптимальні варіанти без попередньої їх перевірки. Відносна ефективність різних методів залежить від того, наскільки кожен з них уможливлює скорочення необхідного процесу перебору варіантів у результаті застосування правила виключення.
Розглянемо один із комбінаторних методів - метод гілок і меж, який є більш ефективним за метод Гоморі. Спочатку, як і в разі методу Гоморі, симплексним методом розвязується послаблена (без умов цілочисельності) задача. Потім вводиться правило перебору.
Нехай потрібно знайти хj цілочислову змінну, значення якої хj= в оптимальному плані послабленої задачі є дробовим. Очевидно, що в деякому околі даної точки також не існує цілочислових значень, тому відповідний проміжок можна виключити з множини допустимих планів задачі в подальшому розгляді. Таким проміжком є інтервал між найближчими до цілочисловими значеннями. Можна стверджувати, що на інтервалі цілих значень немає.
Наприклад, якщо =2,7 дістаємо інтервал , де, очевидно, немає хj, яке набуває цілого значення і оптимальний розвязок буде знаходитися або в інтервалі , або . Виключення проміжку з множини допустимих планів здійснюється введенням до системи обмежень початкової задачі додаткових нерівностей. Тобто допустиме ціле значення xj має задовольняти одну з нерівностей виду:
або .
Дописавши кожну з цих умов до задачі з послабленими обмеженнями, дістанемо дві, не повязані між собою, задачі. Тобто, початкову задачу цілочислового програмування (5.1)(5.4) поділимо на дві задачі з урахуванням умов цілочисельності змінних, значення яких в оптимальному плані послабленої задачі є дробовими. Це означає, що симплекс-методом розвязуватимемо дві такі задачі:
перша задача: (5.14)
, , (5.15)
,, (5.16)
цілі числа, , (5.17)
, (5.18)
друга задача
(5.19)
, , (5.20)
,, (5.21)
цілі числа , (5.22)
, (5.23)
де не цілочислова компонента розвязку задачі (5.1)(5.4).
Наведені задачі (5.14)(5.18) і (5.19)(5.23) спочатку послаблюємо, тобто розвязуємо з відкиданням обмежень (5.17) і (5.22). Якщо знайдені оптимальні плани задовольняють умови цілочисельності, то ці плани є розвязками задачі (5.1)(5.4). Інакше пошук розвязку задачі триває. Для дальшого розгалуження вибираємо розвязок задачі з більшим значенням цільової функції, якщо йдеться про максимізацію, і навпаки з меншим значенням цільової функції в разі її мінімізації. Подальше розгалуження виконується доти, доки не буде встановлено неможливість поліпшення розвязку. Здобутий останній план оптимальний.
Розвязування цілочислових задач методом гілок і меж можна значно прискорити. Очевидно, що кожна наступна задача, яку отримують в процесі розвязування відрізняється від попередньої лише одним обмеженням. Тому за послідовного розвязування задач немає сенсу розвязувати їх симплексним методом спочатку. Досить буде почергово приєднати нові обмеження виду (5.18) і (5.23) до останньої симплекс-таблиці попередньої задачі та вилучити (в разі необхідності) непотрібні «старі» обмеження.
Геометрично введення додаткових лінійних обмежень виду (5.18) та (5.23) в систему обмежень початкової задачі означає проведення гіперплощин (прямих), що розтинають багатогранник (багатокутник) допустимих планів відповідної задачі лінійного програмування у такий спосіб, що уможливлюється включення в план найближчої цілої точки цього багатокутника (рис. 5.4). Допустимо, що А точка максимуму, тоді за методом гілок та меж багатокутник допустимих планів задачі ABCOD поділяється на дві частини прямими та +1, що виключає з розгляду точку А, координата якої є не цілим числом.
Опишемо алгоритм методу гілок та меж:
Якщо серед елементів умовно-оптимального плану немає дробових чисел, то цей розвязок є оптимальним планом задачі цілочислового програмування (5.1)(5.4).
Якщо задача (5.1)(5.3) не має розвязку (цільова функція необмежена, або система обмежень несумісна), то задача (5.1)(5.4) також не має розвязку.
,
.
5.4. розвязання задач цілочислового програмування на ПЕОМ
Особливість задач цілочислового програмування потрібно враховувати на етапі заповнення полів діалогового вікна Поиск решения інструменту Поиск решения табличного процесора MS Excel. Так, формуючи систему обмежень задачі у полі Ограничения, для блоку клітинок, відведених для шуканих невідомих задачі потрібно обовязково задати статус цел (цілочислові значення змінних моделі) або двоич (бінарні значення змінних моделі). В усьому іншому розвязання задач цілочислового програмування у середовищі табличного процесора MS Excel з використанням інструменту Поиск решения нічим не відрізняється від розвязання задач лінійного програмування, розглянутих раніше.
Окремо слід зазначити також, що використання інструменту Поиск решения для пошуку оптимального розвязку задач цілочислового програмування не дає можливість отримання таких звітів, як звіт Устойчивость і Пределы.
1 Цілою частиною числа а називається найбільше ціле число , що не перевищує а. Дробовою частиною є число , яке дорівнює різниці між самим числом а та його цілою частиною, тобто .
Наприклад, для ,;
для , .
13