Dinamikus programozás - Szerelőszalag ütemezése

Hasonló dokumentumok
Programozási módszertan. Dinamikus programozás: szerelőszalag ütemezése Mátrixok véges sorozatainak szorzása

Integrált gyártórendszerek

Programozási módszertan. Dinamikus programozás: A leghosszabb közös részsorozat

Programozási módszertan. Mohó algoritmusok

Fibonacci számok. Dinamikus programozással

Partíció probléma rekurzíómemorizálással

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.

Általános algoritmustervezési módszerek

A félév során előkerülő témakörök

Programozási módszertan. Függvények rekurzív megadása "Oszd meg és uralkodj" elv, helyettesítő módszer, rekurziós fa módszer, mester módszer

angolul: greedy algorithms, románul: algoritmi greedy

Programozási segédlet

A szemantikus elemzés elmélete. Szemantikus elemzés (attribútum fordítási grammatikák) A szemantikus elemzés elmélete. A szemantikus elemzés elmélete

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Az optimális megoldást adó algoritmusok

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

Dinamikus programozás II.

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.

8. Mohó algoritmusok Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete

Zárthelyi dolgozat feladatainak megoldása õsz

Dinamikus programozás vagy Oszd meg, és uralkodj!

Programozási módszertan. Dinamikus programozás: Nyomtatási feladat A leghosszabb közös részsorozat

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

Algoritmusok bonyolultsága

bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott

5. Előadás. (5. előadás) Mátrixegyenlet, Mátrix inverze március 6. 1 / 39

Permutáció n = 3 esetében: Eredmény: permutációk száma: P n = n! romámul: permutări, angolul: permutation

A szimplex tábla. p. 1

SZÁMÍTÁSOK A TÁBLÁZATBAN

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.

Algoritmusok bonyolultsága

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

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).

Példa. Job shop ütemezés

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Osztott algoritmusok

Algoritmizálás, adatmodellezés tanítása 8. előadás

Eljárások, függvények

Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy

A szimplex algoritmus

Konjugált gradiens módszer

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Számláló rendezés. Példa

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

S Z Á L L Í T Á S I F E L A D A T

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus. 3. Előadás: A mohó algoritmus

4. Lecke. Körök és szabályos sokszögek rajzolása. 4.Lecke / 1.

Ütemezés gyakorlat. Termelésszervezés

Optimalizációs stratégiák 1.

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

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

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

Táblázatok fontosabb műveletei 1

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

Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK

Számítógépes döntéstámogatás. Genetikus algoritmusok

Játék a szavakkal. Ismétléses nélküli kombináció: n különböző elem közül választunk ki k darabot úgy, hogy egy elemet csak egyszer

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

3. Előadás. Megyesi László: Lineáris algebra, oldal. 3. előadás Lineáris egyenletrendszerek

1. Determinánsok. Oldjuk meg az alábbi kétismeretlenes, két egyenletet tartalmaz lineáris egyenletrendszert:

GLOBÁLIZÁLT BESZERZÉS ÉS ELOSZTÁS A LOGISZTIKÁBAN

Algoritmuselmélet 2. előadás

Hálózati Folyamok Alkalmazásai. Mályusz Levente BME Építéskivitelezési és Szervezési Tanszék

14. Mediánok és rendezett minták

Ü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

Gráfelméleti feladatok. c f

A mérési eredmény megadása

ú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.

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

9. gyakorlat Lineáris egyenletrendszerek megoldási módszerei folyt. Néhány kiegészítés a Gauss- és a Gauss Jordan-eliminációhoz

A 2013/2014 tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

A 2010/2011 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

Mohó algoritmusok. Példa:

Számjegyes vagy radix rendezés

Mesterséges Intelligencia I. (I602, IB602)

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

Hálózati Folyamok Alkalmazásai. Mályusz Levente BME Építéskivitelezési és Szervezési Tanszék

Minden egész szám osztója önmagának, azaz a a minden egész a-ra.

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

Gauss-Seidel iteráció

Struktúra nélküli adatszerkezetek

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

1. Ábrázolja az f(x)= x-4 függvényt a [ 2;10 ] intervallumon! (2 pont) 2. Írja fel az alábbi lineáris függvény grafikonjának egyenletét!

Ütemezés tervezése A leghátrányosabb helyzet kistérségek fejlesztési és együttm ködési kapacitásainak meger

Egy negyedikes felvételi feladattól az egyetemi matematikáig

A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny döntő fordulójának feladatai. INFORMATIKA II. (programozás) kategória

Scherlein Márta Dr. Hajdu Sándor Köves Gabriella Novák Lászlóné MATEMATIKA 1. A FELMÉRŐ FELADATSOROK ÉRTÉKELÉSE

Érdekes informatika feladatok

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

A programozás alapjai 1 Rekurzió

O k t a t á si Hivatal

Bevezetés. Párhuzamos vetítés és tulajdonságai

Algoritmuselmélet 1. előadás

A brachistochron probléma megoldása

Algoritmusok és adatszerkezetek I. 10. előadás

BABEŞ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR BBTE Matek-Infó verseny 1. tételsor INFORMATIKA írásbeli. A versenyzők figyelmébe:

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

Függvények növekedési korlátainak jellemzése

Átírás:

Dinamikus programozás - Szerelőszalag ütemezése A dinamikus programozás minden egyes részfeladatot és annak minden részfeladatát pontosan egyszer oldja meg, az eredményt egy táblázatban tárolja, és ezáltal elkerüli az ismételt számítást, ha a részfeladat megint felmerül. A dinamikus programozást optimalizálási feladatok megoldására használjuk. Ilyen feladatoknak sok megengedett megoldása lehet. Egy dinamikus programozási algoritmus kifejlesztése lépésre bontható fel:. Jellemezzük az optimális megoldás szerkezetét.. Rekurzív módon definiáljuk az optimális megoldás értékét.. Kiszámítjuk az optimális megoldás értékét alulról felfelé történő módon.. A kiszámított információk alapján megszerkesztünk egy optimális megoldást. A -. lépések jelentik az alapját annak, ahogy a dinamikus programozás meg tud oldani egy feladatot. Egy autógyár autókat állít elő az egyik gyárában, amelynek két szerelőszalagja van. Mindkét szerelőszalag elején egy alváz jelenik meg, melyhez adott számú állomáson hozzászerelik az alkatrészeket, majd a szalag végén távozik a kész autó. Mindegyik szalagnak n állomása van, melyek indexei j=,,, n. S ij jelöli az i-edik (i= vagy ) szalag j-edik állomását. Az első szalag j-edik állomása (S j ) ugyanazt a funkciót látja el, mint a második szalag j-edik állomása (S j ). A szalagokat különböző időpontokban különböző technológiával építették, ezért előfordulhat, hogy a két szalag azonos állomásán a terméknek különböző időt kell eltöltenie. Az S ij állomáson a műveleti időt a ij jelöli.. szerelőszalag S állomás a S állomás a S,n- állomás a,n- S n állomás a n e t t,n- x az alváz belép t t,n- a kész autó kilép e x. szerelőszalag a a a,n- a n S állomás S állomás S,n- állomás S n állomás Ahhoz is kell egy bizonyos idő, hogy az alváz a szalagra kerüljön, és ahhoz is, hogy az elkészült autó elhagyja a szalagot. Ezeket az i-edik szalag esetén e i, illetve x i jelöli. Ha szeretnénk a megrendeléseket minél gyorsabban teljesíteni, a két szalag munkáját össze kell hangolni. Az i-edik szalag S ij állomása után az alváznak a másik szalagra való átrakása t ij időbe kerül j=,,, n- (mivel n állomás után a kocsi már kész). A feladat az, hogy meghatározzuk, mely állomásokat érintse az egyik és melyeket a másik szalagon, hogy az átfutási idő minimális legyen.

Példa a szerelőszalag feladatára. Feltüntettük a különböző költségeket. A vastagon rajzolt út a legrövidebb.. szerelőszalag S állomás S állomás S állomás S állomás S 5 állomás 7 9 8 az alváz belép a kész autó kilép. szerelőszalag 8 5 6 7 S állomás S állomás S állomás S állomás S 5 állomás A teljes leszámlálás számítási ideje Ω( n ). Ez nagy n mellett elfogadhatatlan.. lépés: a legrövidebb gyártási út szerkezete Tekintsük a lehetséges legrövidebb utat, ahogy egy alváz a kiindulási helyzetből túljut az S j állomáson. Ha j=, akkor csak egy lehetőség van, és így könnyű meghatározni a szükséges időt. j=,,,n esetén két lehetőség van: az alváz érkezhet közvetlenül az S,j- állomásról, amikor ugyanannak a szalagnak a (j-)-edik állomásáról a j-edik állomására való átszállítás ideje elhanyagolható. Az alváz S,j- felől érkezik, az átszállítás ideje t,j-. Tegyük fel, hogy az S j állomáson való túljutás leggyorsabb módja az, hogy oda az S,j- felől érkezünk. Az alváznak a legrövidebb módon kell túljutnia az S,j- állomáson, mert ha volna egy gyorsabb mód, hogy az alváz túljusson a S,j- állomáson, akkor ezt használva magán S,j - n is hamarabb jutna túl, ami ellentmondás. Hasonlóképpen tegyük fel, hogy a leggyorsabb út az, amikor az alváz S,j- felől érkezik. Ekkor a kiindulási ponttól indulva a legrövidebb módon kell túljutnia S,j- -en. Ha volna egy gyorsabb mód, hogy az alváz túljusson az állomáson, akkor ezt használva magán S,j- -n is hamarabb jutna túl, ami ismét ellentmondás. Általánosabban fogalmazva azt mondhatjuk, hogy a szerelőszalag ütemezésének (hogy megtaláljuk a legrövidebb módot az S ij állomáson való túljutásra) optimális megoldása tartalmazza egy részfeladat (vagy az S,j- vagy az S,j- állomáson való leggyorsabb áthaladás) optimális megoldását. Erre a tulajdonságra optimális részstruktúraként fogunk hivatkozni. Azaz részfeladatok optimális megoldásaiból megszerkeszthető a feladat optimális megoldása. Ha a leggyorsabb módon túljutunk az S j állomáson, akkor túl kell jutnunk a (j-)-edik állomáson vagy az első vagy a második szalagon. Ezért a leggyorsabb út az S j állomáson keresztül vagy

a leggyorsabb út az S,j- állomáson keresztül és onnan közvetlenül megyünk az S j állomásra, vagy a leggyorsabb út az S,j- állomáson keresztül, ahonnan az alvázat át kell szállítani az első szalag S j állomására. Mindkét esetben el kell végezni a munkát az S j állomáson. Hasonlóképpen a leggyorsabb út az S j állomáson keresztül vagy a leggyorsabb út az S,j- állomáson keresztül és onnan közvetlenül megyünk az S j állomásra, vagy a leggyorsabb út az S,j- állomáson keresztül, ahonnan az alvázat át kell szállítani a második szalag S j állomására. Ahhoz, hogy bármelyik szalag j-edik állomásán keresztülvezető legrövidebb utat megtaláljuk, mindkét szalag (j-)-edik állomásán keresztüli legrövidebb út megkeresésére van szükség.. lépés: a rekurzív megoldás Az optimális megoldás értékét a részfeladatok optimális értékeiből rekurzívan fejezzük ki. A részfeladatok legyenek mindkét szalag j-edik állomásán való leggyorsabb áthaladás megkeresésének a feladatai j=,,, n mellett. Jelölje f i [j] azt a legrövidebb időt, ami alatt az alváz túl tud jutni az S ij állomáson. Célunk annak a legrövidebb időnek a meghatározása, ami alatt az alváz az egész üzemen keresztül tud haladni. Ezt az időt f* jelöli. Az alváznak át kell haladnia az első vagy a második szalag n-edik állomásán, és utána el kell hagynia a gyárat. Mivel a két lehetőség közül a gyorsabbik az egész üzemen átvezető leggyorsabb lehetőség, azt kapjuk, hogy f* = min{ f [n] +x, f [n] +x } Mindkét szalag esetében az első állomáson való keresztülhaladás azt jelenti, hogy az alváz egyenesen erre az állomásra kerül, azaz f [] = e +a f [] = e +a Hogyan kell kiszámolni az f i [j]-t j=,,,n és i=, esetén? ha j=,,,n. Ehhez hasonlóan ha j=,,,n. A következő rekurzív egyenletet kapjuk: f [j] = min{f [j-]+a j, f [j-]+ t,j- +a j }, f [j] = min{ f [j-]+a j, f [j-]+ t,j- +a j }, f [j] = e +a, ha j=, min{ f [j-]+a j, f [j-]+ t,j- +a j }, ha j

f [j] = e +a, ha j=, min{ f [j-]+a j, f [j-]+ t,j- +a j }, ha j Példánkban: f*= j 5 f [j] 9 8 0 8 f [j] 6 6 Az f i [j] mennyiségek a részfeladatok optimális érékei. Annak érdekében, hogy vissza tudjuk keresni a legrövidebb utat, definiáljuk l i [j]-t mint azt a szerelőszalagot, amelyiknek a j--edik állomását használtuk az S ij -n való leggyorsabb keresztülhaladáskor. Itt i=, és j=,,,n. (Nem definiáljuk l i []-et, mert S i -t egyik szalagon sem előzi meg másik állomás.) Az l* szalag definíció szerint az, amelyiknek az utolsó állomását használjuk az egész üzemen való áthaladáskor. Az l i [j] értékek segítségével lehet nyomon követni a legrövidebb utat. Példánkban: l* = j 5 l [j] l [j] Mivel l* =, ezért az S 5 állomást használjuk. Mivel l [5]=, ezért ide az S állomásról érkeztünk. Így folytatva az l []=az S, l []= az S, l []= az S állomás használatát jelenti.. lépés: a legrövidebb átfutási idő kiszámítása Sokkal jobban járunk, ha az f i [j] értékeket más sorrend szerint számoljuk, mint az a rekurzív módszerből adódik. Vegyük észre, hogy j esetén f i [j] csak f [j-] -től és f [j-] -től függ. Ha az f i [j] értékeket az állomások j indexének növekvő sorrendjében számoljuk, akkor a legrövidebb átfutási idő meghatározása Θ(n) ideig tart. Az eljárás bemenő paraméterei az a ij, t ij, e i és x i értékek, valamint mindkét szalag állomásainak n száma.

ALGORITMUS(a,t,e,x,n). f [] := e +a. f [] := e +a. for j:= to n. do if f [j-]+a j =< f [j-]+ t,j- +a j 5. then f [j]:= f [j-]+a j 6. l [j]:= 7. else f [j]:= f [j-]+ t,j- +a j 8. l [j]:= 9. if f [j-]+a j =< f [j-]+ t,j- +a j 0. then f [j]:= f [j-]+a j. l [j]:=. else f [j]:= f [j-]+ t,j- +a j. l [j]:=. if f [n] +x =< f [n] +x 5. then f*=f [n] +x 6. l*= 7. else f*=f [n] +x 8. l*= f i [j] és l i [j] kiszámítását úgy is tekinthetjük, hogy kitöltjük egy táblázat elemeit. Az f i [j]-t és l i [j]-t tartalmazó táblát balról jobbra és oszloponként felülről lefelé töltjük ki. f i [j] kiszámításához csak f [j-]-re és f [j-]-re van szükségünk. Ezeket már kiszámítottuk, az adott pillanatban a meghatározásuk mindössze abból áll, hogy kiolvassuk azokat a táblázatból.. lépés: a legrövidebb átfutási idejű út megszerkesztése f i [j], f*, l i [j] és l* kiszámítását követően meg kell szerkeszteni az üzemen való legrövidebb áthaladást biztosító utat. Az alábbi eljárás az út állomásait az indexek csökkenő sorrendjében nyomtatja ki. ALGORITMUS(l,n). i:= l*. print i -edik szalag n -edik állomás. for j:= n downto. do i:= l i [j] 5. print i -edik szalag ( j- )-edik állomás Eredmény a példánkban:. szalag 5. állomás. szalag. állomás. szalag. állomás. szalag. állomás. szalag. állomás 5