Ütemezési feladatok. Az ütemezési feladatok vizsgálata az 50-es évek elején kezdődött, majd

Hasonló dokumentumok
Ütemezési modellek. Az ütemezési problémák osztályozása

Az optimális megoldást adó algoritmusok

Általános algoritmustervezési módszerek

Ütemezési problémák. Kis Tamás 1. ELTE Problémamegoldó Szeminárium, ősz 1 MTA SZTAKI. valamint ELTE, Operációkutatási Tanszék

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

Online migrációs ütemezési modellek

Approximációs algoritmusok

Korlátozás és szétválasztás elve. ADAGOLO adattípus

p j p l = m ( p j ) 1

Online algoritmusok. Algoritmusok és bonyolultságuk. Horváth Bálint március 30. Horváth Bálint Online algoritmusok március 30.

1. Bevezet példák, síbérlés

11. Előadás. 11. előadás Bevezetés a lineáris programozásba

Példa. Job shop ütemezés

LINEÁRIS PROGRAMOZÁSI FELADATOK MEGOLDÁSA SZIMPLEX MÓDSZERREL

Gauss-Jordan módszer Legkisebb négyzetek módszere, egyenes LNM, polinom LNM, függvény. Lineáris algebra numerikus módszerei

út hosszát. Ha a két várost nem köti össze út, akkor legyen c ij = W, ahol W már az előzőekben is alkalmazott megfelelően nagy szám.

1/ gyakorlat. Lineáris Programozási feladatok megoldása szimplex módszerrel. Pécsi Tudományegyetem PTI

1/ gyakorlat. Lineáris Programozási feladatok megoldása szimplex módszerrel. Pécsi Tudományegyetem PTI

álló algoritmusosztályok. Approximációs algoritmusoknak egy olyan algoritmust. Minden algoritmusnak polinomiális idejűnek kell

Gyakorlatok. P (n) = P (n 1) + 2P (n 2) + P (n 3) ha n 4, (utolsó lépésként l, hl, u, hu-t léphetünk).

minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének.

Programozási módszertan. Mohó algoritmusok

KOVÁCS BÉLA, MATEMATIKA I.

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

1. Online kiszolgálóelhelyezés

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Analízis előadás és gyakorlat vázlat

1. A k-szerver probléma

A szimplex algoritmus

10. Előadás. 1. Feltétel nélküli optimalizálás: Az eljárás alapjai

A lineáris programozás alapfeladata Standard alak Az LP feladat megoldása Az LP megoldása: a szimplex algoritmus 2018/

A lineáris programozás alapfeladata Standard alak Az LP feladat megoldása Az LP megoldása: a szimplex algoritmus 2017/

angolul: greedy algorithms, románul: algoritmi greedy

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

RSA algoritmus. P(M) = M e mod n. S(C) = C d mod n. A helyesség igazoláshoz szükséges számelméleti háttér. a φ(n) = 1 mod n, a (a 1,a 2,...

Algoritmusok bonyolultsága

A szimplex tábla. p. 1

Algoritmuselmélet 18. előadás

Leképezések. Leképezések tulajdonságai. Számosságok.

Sorozatok, sorok, függvények határértéke és folytonossága Leindler Schipp - Analízis I. könyve + jegyzetek, kidolgozások alapján

i=1 i+3n = n(2n+1). j=1 2 j < 4 2 i+2 16 k, azaz az algoritmus valóban konstans versenyképes.

Az online algoritmusok k-szerver probléma

1. előadás: Halmazelmélet, számfogalom, teljes

Programozási segédlet

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex

Gauss-Seidel iteráció

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk

Hadamard-mátrixok Előadó: Hajnal Péter február 23.

Egész számok. pozitív egész számok: 1; 2; 3; 4;... negatív egész számok: 1; 2; 3; 4;...

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

Diszkrét matematika 2.C szakirány

Bevezetés az informatikába

Diszkrét matematika 2.C szakirány

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA

Algoritmusok bonyolultsága

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva

V. DISZKRÉT OPTIMALIZÁCIÓ

Korlátozás és szétválasztás módszere Holló Csaba 2

Halmaz: alapfogalom, bizonyos elemek (matematikai objektumok) Egy halmaz akkor adott, ha minden objektumról eldönthető, hogy

Nagy Gábor compalg.inf.elte.hu/ nagy

1000 forintos adósságunkat, de csak 600 forintunk van. Egyetlen lehetőségünk, hogy a

További forgalomirányítási és szervezési játékok. 1. Nematomi forgalomirányítási játék

Függvények július 13. f(x) = 1 x+x 2 f() = 1 ()+() 2 f(f(x)) = 1 (1 x+x 2 )+(1 x+x 2 ) 2 Rendezés után kapjuk, hogy:

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Az online algoritmusok k-szerver probléma

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus.

Online ládapakolás. 1. Ládapakolási modellek

Diszkrét matematika 2.C szakirány

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit.

Egyenletek, egyenlőtlenségek, egyenletrendszerek I.

6. Függvények. Legyen függvény és nem üreshalmaz. A függvényt az f K-ra való kiterjesztésének

Dualitás Dualitási tételek Általános LP feladat Komplementáris lazaság 2017/ Szegedi Tudományegyetem Informatikai Intézet

Diszkrét matematika 1. estis képzés. Komputeralgebra Tanszék ősz

A valós számok halmaza

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

Analízis I. Vizsgatételsor

Operációkutatás. Vaik Zsuzsanna. ajánlott jegyzet: Szilágyi Péter: Operációkutatás

Érdemes egy n*n-es táblázatban (sorok-lányok, oszlopok-fiúk) ábrázolni a két színnel, mely éleket húztuk be (pirossal, kékkel)

II. Két speciális Fibonacci sorozat, szinguláris elemek, természetes indexelés

1. feladat Az egyensúly algoritmus viselkedése: Tekintsük a kétdimenziós Euklideszi teret, mint metrikus teret. A pontok

Diszkrét matematika 2.

Keresés képi jellemzők alapján. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék

Operációkutatás. 4. konzultáció: Szállítási feladat. A feladat LP modellje

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

15. LINEÁRIS EGYENLETRENDSZEREK

A következő feladat célja az, hogy egyszerű módon konstruáljunk Poisson folyamatokat.

22. GRÁFOK ÁBRÁZOLÁSA

Fraktálok. Hausdorff távolság. Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék március 14.

MBNK12: Permutációk (el adásvázlat, április 11.) Maróti Miklós

Kétfázisú szimplex algoritmus és speciális esetei

1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba

Branch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11.

1/ gyakorlat. Hiperbolikus programozási feladat megoldása. Pécsi Tudományegyetem PTI

Programozás II. előadás

Formális nyelvek - 9.

Átírás:

1 Ütemezési feladatok Az ütemezési feladatok vizsgálata az 50-es évek elején kezdődött, majd tekintettel a feladat gyakorlati fontosságára sok különböző modell tanulmányozására került sor, és a témakör nagyon gyors és nagy fejlődésen ment át. A modellek nagy számára jellemző, hogy 1977-ben A. H. G. Rinnooy Kan egy konferencia szekciójának összefoglalójában 9000-re becsülte a katalogizálható különböző determinisztikus ütemezési problémák számát. Azóta ez a szám még számottevően növekedett. Tekintettel a témakör nagyságára és bonyolultságára a jelen fejezetben csak vázoljuk az ütemezési problémákat és csak néhány egyszerű modellt vizsgálunk részletesebben. Ütemezési modellek Az ütemezési problémákban adottak bizonyos páronként különböző gépek és m számú munka, amelyeket az 1,..., m számokkal fogunk sorszámozni. A feladat az, hogy ütemezzük az egyes munkák végrehajtását a gépeken, úgy, hogy valamely cél szerint optimális ütemezést kapjunk. A munkák végrehajtásának ütemezésén vagy egyszerűbben a munkák ütemezésén azt értjük, hogy a j-edik munkát hozzárendeljük valamely géphez egy S j kezdési és C j befejezési idővel minden j-re. A munkákhoz minden modellben tartozik egy végrehajtási idő, amit p j -vel szokás jelölni. Ez azt adja meg, hogy mennyi ideig tart a munkát elvégezni. Ennek megfelelően a munkához rendelt kezdési és befejezési időkre a C j S j = p j feltételnek kell teljesülni. A különböző modelleket többféle szempontból is osztályozhatjuk. A továbbiakban a legismertebb változatokat igyekszünk összegyűjteni. A munkák meghatározó paraméterei Mint már említettük minden munkához tartozik egy végrehajtási idő, de más modellekben egyéb paraméterei is vannak az egyes munkáknak. A munkákhoz rendelhető érkezési idő is, ezt a paramétert a j-edik munkára általában r j jelöli. Ez az idő azt az időpontot adja meg, amelytől kezdve a munka végrehajtása elkezdhető, tehát a munkára az S j r j feltételnek kell teljesülni. A j-edik munkához tartozhat egy d j határidő. Itt két különböző típusú modellt vizsgálhatunk. Az első esetben csak olyan ütemezéseket fogadunk el, amelyekre C j d j, azaz amelyek betartják a határidőt, a

2 másodikban megszeghetjük a határidőt, de ekkor a célfüggvényben a határidő is szerepel. A j-edik munkához hozzárendelhetünk egy w j súlyt vagy egy f j (t) súlyfüggvényt, amely azt adja meg mennyire fontos a munka, illetve azt, hogy mennyire fontos a munka t időpontra történő befejezése. Egy másik fontos osztályozási szempont az, hogy mi az a függvény, aminek az optimumát keressük. Eszerint a szempont szerint is igen sok lehetséges modell került bevezetésre, a továbbiakban a legfontosabbakat vázoljuk. A célfüggvények két alapvető osztályra bonthatók: a maximum célfüggvényekre és az összeg célfüggvényekre. Talán a legismertebb modellek azok, amelyekben az utolsónak befejezett munka befejezési idejét akarjuk minimalizálni, azaz ahol a célfüggvény min{max{c j : 1 j m}}, amelyet a lehetséges ütemezésekre minimalizálunk. Szintén gyakran használt célfüggvény a befejezési idők összegfüggvénye. Általánosabb esetben, mikor a munkáknak van súlya vagy súlyfüggvénye, akkor a m j=1 w j C j illetve m j=1 f j (C j ) függvényeket minimalizáljuk. Amennyiben a munkákhoz határidő is tartozik, akkor a célfüggvény általában a késések minimalizálása. Itt két értéket szokás vizsgálni. Az első a késési idő (lateness), amely az L j = C j d j érték, a másik pedig a csúszási idő (tardiness), amely az T j = max{0, L j } érték. A két maximum célfüggvény a késési időknek illetve a csúszási időknek a maximuma. Egyéb modellekben ezen értékek összegét illetve súlyozott összegét igyekszünk minimalizálni. Itt érdemes azt a modellt említenünk, ahol a cél az elkésett (T j > 0) munkák számának minimalizálása. Amennyiben érkezési idők is vannak szokás a befejezési idő helyett a folyási időt (flow time) vizsgálni, amely az F j = C j r j érték. Ezekben a modellekben a célfüggvény ezen F j értékek maximuma vagy súlyozott összege. A fenti alapvető osztályozáson kivüli egyéb változatokat, általánosításokat kaphatunk néhány extra feltétellel. Az alábbiakban ezekből gyűjtöttünk össze néhányat.

3 Feltehetjük, hogy bizonyos munkákat csak más munkák után lehet elvégezni. Igen sok gyakorlati problémánál előfordulnak ilyen feltételek. Ekkor az egyes munkákhoz tartozik az a feltétel is, hogy mely munkák előzetes végrehajtását követelik meg. Ezen extra feltételek mellett az összes, a fentiekben említett modell vizsgálható. Megemlítjük, hogy ilyen extra feltétellel kezelhető a tekintett példában, hogy a fiúk egy adott sorrendben olvassák az újságokat. Az eddigiek során végig azzal a feltétellel éltünk, hogy minden egyes munkához pontosan egy végrehajtási idő tartozik és ez független attól, hogy melyik gépen kerül a munka végrehajtásra. Ez általában gyakorlati problémáknál nem így van. Egy általánosabb modellben minden munkához egy végrehajtási vektor tartozik, amely i-edik komponense megadja, hogy az M i gépen mennyi ideig tart a munkát végrehajtani. Itt érdemes két speciálisabb esetre kitérni. Az egyik esetben a j-edik munka végrehajtási vektorának i-edik komponense p j /v i, ahol v i az M i gép sebességének felel meg. A második esetben a korlátozott hozzárendelési esetben a végrehajtási vektor néhány komponense végtelen a többi megegyezik, ez azt jelenti, hogy a gépek azonosak csak a munka néhány gépen nem hajtható végre. Egy másik általánosítás, amelyben megengedjük, hogy a munkák végrehajtása megszakítható legyen. Ekkor a j-edik munkához nem egy darab legalább p j hosszú intervallumot kell hozzárendelnünk valamely gépen, hanem több, egymást nem átfedő intervallumot (akár különböző gépeken), amelyek összhossza legalább p j. Heurisztikus algoritmusok az alapproblémára Ebben a részben az egyik legegyszerűbb változatot vizsgáljuk. A modellben n darab azonos M 1,..., M n gépünk van, a J 1,..., J m munkákhoz pedig csak egyetlen paraméter tartozik, a p j, j = 1,..., m végrehajtási idők. Cél egy olyan ütemezés megkonstruálása, amelyre a befejezési idők maximuma minimális. A probléma egy gép esetén triviális bármely olyan ütemezésre, amelyben a gép folyamatosan dolgozik, (nem várunk a munkák elvégzése közben) a max{c j : 1 j m} érték megegyezik a végrehajtási idők összegével. Továbbá az is nyilvánvaló, hogy amennyiben minden munkát elvégzünk, akkor nem fejezhetjük be a munkákat ezen időpont előtt. Ha a gépek száma több, mint 1, akkor a feladat lényegesen nehezebb. Igazolást nyert,

4 hogy n 2 esetén a probléma NP-nehéz. Másrészt ebben az esetben egy lehetséges ütemezést meghatározhatunk azáltal, hogy az egyes munkákat mely gépekhez rendeljük hozzá. Amennyiben minden gépre megkapjuk, hogy mi a géphez rendelt munkáknak a halmaza, akkor minden egyes gépre, az ott levő munkákat optimálisan úgy ütemezhetjük, hogy a a gép folyamatosan dolgozzon, és minden ilyen ütemezésre ugyanannyi lesz a gépen a maximális befejezési idő, a munkáknak a végrehajtási idejeinek az összege. Ezt az értéket a gép töltésének nevezzük. A fogalmat használjuk általánosabb értelemben is, gépek egy halmazának a töltésén a gépekhez rendelt munkák végrehajtási idejeinek az összegének és a gépek számának a hányadosát értjük. Mivel a feladat NP-nehéz ezért erre a feladatosztályra is fontos heurisztikus algoritmusok kidolgozása. Az alábbiakban két egyszerű heurisztikus algoritmussal ismerkedünk meg. Az első R. L. Graham-től származó algoritmus, amelyet Lista algoritmusnak nevezünk a következőképpen működik. Lista algoritmus Előkészítő rész. A J 1 munkát rendeljük az M 1 géphez, továbbá legyen r := 1. Iterációs rész (r-edik iteráció). Ha r = m, akkor vége az eljárásnak. Ellenkező esetben a J r+1 munkát rendeljük ahhoz a géphez, amely gépen minimális a töltés. Ha több ilyen gép is van válasszuk a legkisebb indexűt. Az algoritmus az optimálishoz közeli eredményt eredményez, amint azt az alábbi tétel mutatja. 11.1 tétel. A lista algoritmus approximációs hányadosa 2 1/n, ahol n a gépek száma. Bizonyítás. Elsőként igazoljuk, hogy az algoritmus 2 1/n-approximációs. Legyen σ = {J 1,..., J m } tetszőleges munkasorozat rendre p 1,..., p m végrehajtási időkkel. Tekintsük a lista algoritmus által kapott ütemezést. Legyen J l az a munka, amely legkésőbb fejeződik be. Vizsgáljuk ezen munka S l kezdési idejét. Mivel egyetlen gép sem kezdte el a munkát ütemezni S l előtt, ezért minden gép szünet nélkül dolgozott az S l időpontig. Ebből azt kapjuk, hogy

5 Következésképp S l 1 n m p j = 1 m n ( p j p l ) = 1 n ( m p j ) 1 n p l. j=1 j=1 j=1 j l Lista(σ) = S l + p l 1 n ( m j=1 p j ) + n 1 n p l. Másrészt az optimális ütemezésben is végre kell hajtani az összes munkát, így OP T (σ) 1 n ( m j=1 p j ). Továbbá a p l munkát is végre kell hajtani valamely gépen, így OP T (σ) p l. Ezen becslések alapján egyből adódik, hogy Lista(σ) (1 + n 1 )OP T (σ), n amivel bizonyítottuk, hogy az algoritmus 2 1/n-approximációs. Most igazoljuk, hogy a tekintett korlát éles. Vegyünk n(n 1) darab munkát 1/n végrehajtási idővel, majd egy munkát 1 végrehajtási idővel. Ekkor a lista algoritmus az első n(n 1) munkát egyenletesen elosztja a gépek között, majd az utolsó munkát az M 1 gépen ütemezi. Tehát a maximális befejezési idő 1+(n 1)/n lesz. Egy optimális ütemezés pedig a rövid munkákat egyenletesen osztja szét az első n 1 gép között, majd az utolsó munkát az n-edik géphez rendeli, és a maximális befejezési ideje 1 lesz. Tehát ebben az esetben az algoritmus által kapott megoldás és az optimális megoldás célfüggvényértékeinek hányadosa 2 1/n, amivel igazoltuk az állításunkat. Amint azt láthattuk a korlát élességének igazolásánál, a lista algoritmus legnagyobb hibája akkor jön elő, amikor sok rövid munka után egy hosszú munkát kell végrehajtani. Ezt a problémát jobban kezeli a következő szintén R. L. Graham-től származó eljárás. LPT Algoritmus 1. lépés. Rendezzük sorba a munkákat csökkenő végrehajtási idő szerint. 2. lépés. A munkák kapott listáján hajtsuk végre a lista algoritmust.

6 Az első rendezési fázis valóban javítja az eljárás hatékonyságát, amint azt a következő állítás mutatja. 11.2. tétel. Az LPT algoritmus approximációs hányadosa 4/3 1/(3n). Shop ütemezés Shop ütemezésről beszélünk abban az esetben, ha a gépeken minden végrehajtandó munka több műveletből áll. Minden egyes művelet egy, a művelethez rendelt gépen hajtható végre, és adott a művelet végrehajtási ideje. Ezen osztályon belül két fő csoportot különböztetünk meg. Amennyiben bármely munkára a hozzátartozó műveletek tetszőleges sorrendben végrehajthatók, akkor open shop ütemezésről beszélünk. Ezt a modellt itt nem tárgyaljuk. A másik esetben ismét megkülönböztetünk két modellt. Ha a munkák műveleteihez tartozó gépek sorrendje nem azonos akkor job shop ütemezésről beszélünk. (A fiúk újságolvasási problémája így egy job shop ütemezési feladat.) Ha a gépek sorrendje azonos minden munkára, akkor flow shop ütemezésről szokásos beszélni. A továbbiakban ezt a problémaosztályt vizsgáljuk. Speciálisabban olyan problémákat tekintünk, amelyekben a gépek száma n és minden J i munka n számú műveletből, az O i1,..., O in műveletekből áll, amelyek közül a k-adik műveletetet a k-adik gépen kell végrehajtanunk. Észrevehetjük, hogy a fenti flow shop ütemezési példa esetén a gépeken a munkák végrehajtása nem azonos sorrendben történik. Amennyiben még az azonos sorrendet is kikötjük, akkor permutációs flow shop problémáról beszélünk. Amint az elnevezés is mutatja ebben az esetben a munkáknak kell azt a sorrendjét meghatározni, amely sorrendre az ütemezés optimális. A probléma általában még ennyi kikötés mellett is NP-nehéz marad, de ebben az esetben két gépre már ismert hatékony eljárás. A továbbiakban bemutatjuk ezt az eljárást és igazoljuk annak helyességét. Jelölje a gépeket M 1 és M 2 a munkákat pedig rendre J 1,..., J m. A J i i = 1,..., m munka két műveletből áll, először az O i1 műveletet kell az M 1 gépen végrehajtani, ami τ i1 ideig tart, majd az O i2 műveletet az M 2 gépen ami τ i2 ideig tart. Johnson algoritmusa 1. lépés. Legyen k := 1 és l := m, és tekintsük a nem ütemezett munkák J = {J 1,..., J m } halmazát.

7 2. lépés. Keressük meg a {τ i1, τ i2 J i J} halmaz egy minimális elemét. Jelölje a hozzátartozó indexet i. Ha i nem egyértelműen meghatározott, akkor a lehetséges indexek közül válasszuk a legkisebbet. 3. lépés. Ha a 2. lépésben választott elem τ i1 akkor helyezzük a J i munkát a listánk k-adik helyére, töröljük a J halmazból, és növeljük k értékét 1-gyel. Majd lépjünk az 5. lépésre. 4. lépés. Ha a 2. lépésben választott elem τ i2 akkor helyezzük a J i munkát a listánk l-adik helyére, töröljük a J halmazból, és csökkentsük l értékét 1-gyel. Majd lépjünk az 5. lépésre. 5. lépés. Amennyiben J üres, akkor vége az eljárásnak. Az optimális ütemezést kapjuk meg, ha az eljárás során meghatározott lista sorrendje szerint hajtjuk végre a munkákat késlekedés nélkül. Ellenkező esetben lépjünk a 2. lépésre. Az eljárás helyessége egyből következik a következő tételből. 11.3. tétel. Ha egy permutációs flow shop probléma egy késleltetést nem tartalmazó S ütemezésében egy J i munkára és az ütemezésben utána közvetlenül következő J l munkára min{τ i1, τ i2, τ l1, τ l2 } = min{τ l1, τ i2 } teljesül, akkor arra az S ütemezésre, amelyet úgy kapunk S -ből, hogy felcseréljük az J i és J l munkákat a maximális befejezési idő legfeljebb akkora lesz, mint az S ütemezésben. A fenti eljárást fejlesztette tovább J. R. Jackson egy speciális job shop ütemezési modell megoldására. A továbbiakban olyan job shop ütemezési problémát tekintünk, amelyben két gép van M 1 és M 2, minden munka legfeljebb két műveletből áll, és amennyiben egy munka két műveletből áll akkor azt a két műveletet különböző gépeken kell végrehajtani, amelyek hozzá vannak rendelve a műveletekhez. Ezt a feladatot oldja meg a következő eljárás.

8 Jackson algoritmus 1. lépés. Képezzük a következő halmazokat: K 12 = { azon két műveletből álló munkák, amelyek műveleteiből az elsőt az M 1 a másodikat az M 2 gépen kell végrehajtani }, K 21 = { azon két műveletből álló munkák, amelyek műveleteiből az elsőt az M 2 a másodikat az M 1 gépen kell végrehajtani }, K 1 = { azon munkák, amelyek egy, az M 1 -en végrehajtandó műveletből állnak }, K 2 = { azon munkák, amelyek egy, az M 2 -en végrehajtandó műveletből állnak }. 2. lépés. Rendezzük a K 12 és a K 21 halmazokat a Johnson eljárás szerint. 3. lépés. Rendezzük a K 12 K 1 K 21 halmaz elemeit úgy, hogy K 1 -ben tetszőleges legyen a rendezés, és K 12 legnagyobb eleme kisebb legyen mint K 1 legkisebb eleme, továbbá K 1 legnagyobb eleme kisebb legyen, mint K 21 legkisebb eleme. Jelölje ezt a rendezést (K 1, ). 4. lépés. Rendezzük a K 21 K 2 K 12 halmaz elemeit úgy, hogy K 2 -ben tetszőleges legyen a rendezés, és K 21 legnagyobb eleme kisebb legyen mint K 2 legkisebb eleme, továbbá K 2 legnagyobb eleme kisebb legyen, mint K 12 legkisebb eleme. Jelölje ezt a rendezést (K 2, ). 5. lépés. Az M 1 gépen ütemezzük a munkákat (K 1, ) szerint, az M 2 -n pedig (K 2, ) szerint. 11.4. tétel Az algoritmus valóban egy optimális megoldását adja meg a job shop problémának két gép esetén.