УДК 519.12.176
ПРОГРАМНА РЕАЛІЗАЦІЯ ЗАДАЧ ОПТИМАЛЬНОГО ПРИЗНАЧЕННЯ І УПОРЯДКУВАННЯ РОБІТ
ПОДОЛЯКА О.М.____________________________
Наводиться нова модифікація пакета IplusMmashine, призначеного для розв’язання оптимізаційних задач теорії розкладів. Розглядається розв’язання для узагальнень задачі про призначення та задачі про редактора.
Кінцевою метою всіх зусиль щодо розробки алгоритмів і методів розв’язання прикладних та наукових задач є програмні продукти, подані залежно від масштабності розробок програмою, пакетом прикладних програм або експертною системою. Особливості об’єктів дослідження, що переважно виявляються в обраному методі обчислень, впливають на процес проектування програмних засобів, на способи організації та збереження оброблюваних даних і заслуговують, щоб бути розглянутими разом зі створюваним для їхнього вивчення програмним середовищем. Викладений у роботі [1] метод побудови множини оптимальних розв’язань для узагальнень задачі про призначення і задач упорядкування розкладів програмно реалі-зується в удосконаленій і розширеній версії проблемно орієнтованого пакета IplusMmashine, основні характеристики якого відбиті в [2].
У розширеній версії пакета IplusMmashine використовуються ті ж інструментальні засоби, що й у його ранньому варіанті. Вони подані стандартним набором математичних операцій і службових функцій пакета Mathematica, можливості якого можуть бути істотно розширені підключенням до нього числен -них програм візуалізації обчислень: від представлення вихідних даних і результатів обчислень у природному математичному вигляді до потужної багатобарвної графіки з високою спроможністю.
Про користь вибору пакета Mathematica як середовища програмування для розв’язання задач теорії розкладів свідчить його спроможність виконувати обчислення з будь-якою заданою точністю, робити аналітичні перетворення і створювати текстові файли, у яких формули є програмними об’єктами, що виконують відповідні числові й аналітичні операції.
Достоїнства середовища Mathematica домінують над його хибами, до яких варто віднести невисоку швидкість обчислень і значні ємнісні витрати в порівнянні з програмами, створюваними на алгоритмічній мові.
Ядром пакета 1plusMmashine є алгоритм побудови локальних оптимальних рішень, який складається з процедури побудови початкового допустимого рішення задачі та трьох процедур побудови локальних оптимальних рішень. Для розв’язання нових оптимізаційних задач необхідно перевантажити
відповідні процедури побудови початкових допустимих рішень, а також цільові функції цих задач. Далі слід модифікувати діалогове вікно вибору задачі, що розв’язується. Також необхідно створити процедури перевірки коректності вхідних даних задачі та ряд сервісних процедур побудови вхідних даних і представлення результатів.
Початкова версія пакета 1plusMmashine містила три програмних модулі: підпрограма побудови всіх оптимальних рішень задачі про призначення; підпрограма побудови всіх оптимальних рішень мінімаксної задачі про призначення; підпрограма побудови всіх оптимальних по швидкодії розкладів із m двохетапних робіт, виконуваних у дворівневій системі з 1 + m неідентичних машин, для випадку, коли перший етап кожної роботи має одиничну тривалість.
Головним фактором, що об’єднує перелічені задачі в пакет, є загальна обчислювальна схема побудови локальних оптимальних рішень. Ця схема на відміну від відомих алгоритмів знаходить за поліноміаль-ний час усі послідовності, що доставляють мінімум цільовому функціоналу будь-якої задачі зі списку.
Модель процесу послідовно-паралельного упорядкування та призначення робіт у системі з 1 + m неідентичних машин, в термінах якої сформульовано задачі, містить такі компоненти.
1) Ресурси складаються з 1 + m машин, де m неідентичних машин забезпечують паралельне виконання робіт. Таку систему машин будемо називати дворівневою у тому розумінні, що її входом є єдина машина, а виходом — m паралельних неідентичних машин.
2) Модель завдань описується множиною G з n двохетапних (двостадійних) незалежних робіт gj, j = 1, n, i = 1, n , які одночасно надходять на вхід системи. Перший етап роботи gj виконується машиною першого рівня за час у j , а другий етап — на машині і другого рівня за час р... Припускається, що Pij =ю, коли робота j не може бути виконана на машині і . Виключене одночасне виконання роботи більш, ніж на одній машині, і на будь-яку машину в кожний момент часу призначається не більше, ніж одна робота. Недопустиме переривання ні першого, а ні другого етапу кожної роботи gj . Всі n робіт готові до виконання у момент часу, умовно рівний 0.
Найбільш важливим з практичної точки зору показником ефективності є довжина розкладу або час функціонування системи.
Перелічені припущення стосовно класу допустимих розкладів утворюють модель послідовно-паралельного упорядкування. До цього класу віднесено всі задачі, які містять додаткові вимоги до процесу виконання двохетапних робіт, такі наприклад, як обмеження на моменти початку етапів робіт чи умови безперервності кожної роботи.
РИ, 2002, № 4
79
У вхідних даних задачі послідовно-паралельного упорядкування міститься матриця [Ру ]шт , в котрій елемент Ру дорівнює часу виконання другого етапу роботи j на машині і, й вектор у,—,yn], де
величина у у визначає тривалість першого етапу роботи j . Накладанням вектора \У\,---,Уj,—,Уп] на кожний рядок матриці [Ру ]nxm отримуємо у вхідних даних задачі таблицю [(уу,Ру )]mxn і пов’язані з нею комбінаторні конфігурації.
У найзагальнішому вигляді задачу послідовно-паралельного упорядкування двохетапних робіт в систмемі з 1 + т машин можна сформулювати так. Нехай в таблиці [(у у, Ру )]mxn значення у у першої компоненти пари (уу, Ру) дорівнює тривалості першого етапу роботи gу , а значення Ру дорівнює часу виконання її другого етапу на машині і. Необхідно вибрати в кожному стовпчику таблиці [(Уу,Ру )]mxn по одному елементу (д ,Ру) так, щоб при заданих вимогах до процесу виконання робіт g у = (у у, Ру) скласти розклад, оптимальний у розумінні вибраного показника ефективності.
Список задач пакета в новій версії доповнений задачею знаходження всіх рішень, що мінімізують функціонал
к
L(n) = max (^Уж(І) + Рж(к)s)
1< к < т і=і 1< s <т
на множині всіх перестановок ж рядків і матриці [Ру]т . Вихідні дані задачі, крім матриці [Ру]т , містять стовпчик [уі ]тхі, що задає yt тривалості виконання перших етапів робіт, і тим самим утворюють нову комбінаторну конфігурацію [(уу, Д°)]т . Ясно, що при у j = 1, і = 1, т маємо L( я) = L0 (я) або,
інакше кажучи, задача мінімізації L^) є узагальненням задачі, програмно реалізованої в ранній версії пакеау. До складу модифікованого пакета включено програмний модуль для розв’язання задачі мінімізації функціоналу Я(я) на множині всіх перестановок я = (я(1),...,я(к),...,я(т)) рядків таблиці [(уі , Ру, 77у )]т, отриманої об’єднанням стовпчика [уі ]тх1 , матриці [Ру ]т і рядка [Лу ]1хт .
Програмний модуль задачі, що являє собою нове узагальнення задачі про редактора [3], містить підпрограму формування з таблиці [(yt ,р° )]т
матриці Щ ]т , де Ру = у і +Ру , якщо у і <Лу , і Ру = Tj} + Ру , якщо г)у <уі. У свою чергу матриця
[Ру]т служить вхідними даними підпрограми побудови стартового допустимого рішення
я j = (я° (1),...,я° (к),..., я° (т)).
Несучою конструкцією всіх програм модифікованого пакета є процедура послідовної побудови
локальних оптимальних рішень, на таблицях вхідних даних розмірності І = 2, т кожної задачі.
Кожна задача представлена схемою рішення у вигляді послідовності етапів перетворення вхідних даних і результатів роботи процедури послідовної побудови локальних оптимальних рішень (ППЛОР). Процедура ППЛОР будує локальні послідовності й обчислює значення цільового функціоналу кожної задачі при зверненні до наступних підпрограм:
1) підпрограма знаходження перестановки, що
мінімізує функцію max (k + рлік\) (SORTO(tc));
1<к<т К ’
2) підпрограма знаходження перестановки, що мінімізує функцію
(к \
max
1<к <т
2 У 7г{і) Рж(к) VІ=1
)
(SORT(tc));
3) підпрограма знаходження мінімального значення Rj (^) в задачі про редактора.
У програмному модулі задачі мінімізації L(я) після завершення чергового вибору компонент елементів таблиці ця процедура повинна звертатися до підпрограми рішення задачі про редактора, що визначає оптимальну, в смислі зазначеного критерію, послідовність компонент.
У нову версію пакета lplusMmashine включений програмний модуль побудови всіх оптимальних призначень n двохетапних робіт на т неідентичних машин для випадку n < т . Формально кажучи, на множині всіх перестановок я = (я(1),...,я(к),...,я(п)) з n рядків матриці [Д0]пхт потрібно знайти всі перестановки, що доставляють мінімум функціоналу
к
F(я) = тах (^уя(і) +Рж(к)s)
1<к <т і—1 ,
1< s< п<т
де А,(к )s = Кякщ0 ^ = і &s =
[да - в противному разі.
Програма рішення задачі мінімізації функціоналу F(я) відрізняється від модуля побудови всіх послідовностей, що доставляють мінімум функціоналу L(я), тільки організацією вхідних і вихідних даних.
Для побудови вихідного допустимого рішення прямокутна матриця [Ру]тт перетворюється в квадратну матрицю порядку m додаванням до
[Ру]пхт знизу т - n рядків з нульовими елементами, а в масив [yt]пх1 додаються т - n нулів.
З отриманою матрицею виконуються всі дії основної процедури побудови оптимальних локальних рішень, що здійснюються для рішення задачі
80
РИ, 2002, № 4
мінімізації Ця). Процес обчислень завершується “стиском” отриманих послідовностей у результаті видалення з них m - n нулів, розташованих у
рядках, що додані до матриці [Д0 ]mm •
При обнулінні всіх елементів масиву [уі ]пхЛ модуль знаходить оптимальні рішення задачі мінімізації функції F0 (я), поданої у вигляді транспортної версії задачі про призначення, вихідні дані якої визначаються матрицею [pjj ]nxm .
Якщо покласти т = n і в отриманій матриці [Pij ]nxm , де n > т , елемент р^ представити як час виконання роботи j на машині і, то процедура побудови локальних оптимальних рішень дозволяє знайти всі оптимальні розклади відомої задачі RIIЕ с j [4]. У цьому випадку процедура застосо-
вується після побудови з матриці [/Е ]nxm таблиці B = CT = Ш]Т,[2ргі ]Т,...,[r рц]Т,...,[nPj]T], з еле-
ментами Pij , і = 1, n
j = 1, m', m' = nm •
Далі з отриманої таблиці B визначається вхідне допустиме рішення за допомогою підпрограми знаходження допустимого рішення задачі мінімізації функціоналу Fj (я), а потім виконуються дії стосовно побудови всіх її оптимальних рішень я .
Завершальним етапом процесу побудови розкладів задачі R II Е Сj є перетворення отриманого рішення я у відповідне йому представлення у вигляді блоків, кожний з яких визначає роботи і порядок їх виконання в оптимальному розкладі. Для такого
перетворення будуть потрібні матриця [Д0 ]nxm і таблиця B •
Очевидно, що для програмної реалізації узагальнення задачі R II Е Сj , умови якої доповнені моментами готовності Г. до виконання роботи і, необхідно виконати дії по формуванню вхідного масиву, що відповідає таблиці D + B, де D — матриця розмірами nxnm, подана у вигляді
D = [[Тг ]nxm [ті ]nxm Лті ]nxm] • Для таблиці D + B програмний модуль побудови всіх оптимальних розкладів задачі R IIЕ Cj визначить усі оптимальні рішення узагальнення цієї задачі.
Таким чином, розглянуті задачі вирішуються за допомогою підходу послідовної побудови локальних оптимальних рішень у пакеті lPlusMmashine і програмно відрізняються лише цільовою функцією та способом формування вхідної матриці, тобто вона може бути введена безпосередньо, або сформована в процесі роботи програми з розкладу руху транспорту, також вона може бути скоректована.
Роботу програми можна умовно розбити на такі етапи:
1. Завантаження спеціалізованого пакета lPlusMmashine, що містить функції, необхідні основній програмі.
2. Формування матриці [Д0]m з матриць розкладів руху автотранспорту.
3. Визначення першого допустимого рішення.
4. Визначення допустимих рішень для підматриць 1-го і 2-го порядків та обчислення довжин розкладів, відповідних цим рішенням.
5. Формування масиву оптимальних рішень із знайдених допустимих рішень, яким відповідають мінімальні довжини розкладів.
6. Визначення допустимих рішень для підматриць 3-го і вищих порядків та обчислення довжин розкладів, відповідних цим рішенням.
7. Формування масиву оптимальних рішень із знайдених допустимих рішень, яким відповідають мінімальні довжини розкладів. Оптимальні рішення, отримані на n-1 кроці циклу програми, є вхідними даними для n-го циклу програми.
8. Виведення масиву оптимальних рішень і графіків розпаралелення робіт в разі необхідності.
9. Отримання оптимального розкладу руху автотранспорту.
Література: 1. Подоляка О.О. Пакет прикладних програм для розв’язання задач теорії розкладів // Авіаційно-космічна техніка і технологія. 1999. Вип. 14. С. 181185. 2. Панишев А.В., Подоляка О.А. Скакалина Е.В. Эффективный алгоритм распараллеливания работ на неидентичных машинах // Авиационно-космическая техника и технология. 1999. Вып. 13. С. 136-146. 3. ПанішевА.В., Подоляка О.М., Подоляка О.О. Ефективна схема розв’язання узагальнення задачі про редактора // Вісник ЖІТІ. 2001. № 18. С. 126-134. 4. Скакалина Е.В. Эффективное построение множества расписаний с минимальным суммарным временем завершения работ // Радиоэлектроника и информатика. 2001. №3(16). С. 44-46.
Надійшла до редколегії 15.10.2002
Рецензент: д-р техн. наук Нагорний Є.В.
Подоляка Олексій Миколайович, асистент кафедри інформатики НАУ “ХАІ”. Наукові інтереси: математичне моделювання, теорія розкладів та її застосування. Адреса: Україна, 61070, Харків, вул. Чкалова, 17, тел. 44-23-62.
РИ, 2002, № 4
81