Transcript
Page 1: Opis działania algorytmu INSA

Działanie INSY

Najpierw należy wyznaczyć kolejność topologiczną oraz uzupełnić tabelę.

Dane:zad1 czas Ptime =10;

maszyna 1, Lp 1Ptime=15; maszyna 2; Lp 2

Ptime=7; maszyna 1; Lp 3

zad2 Ptime =20; maszyna 2; Lp 4

Ptime =17; maszyna 1; Lp 5

Ptime=8; maszyna 3; Lp 6

zad3 Ptime=9; maszyna 1; Lp 7

Ptime=10; maszyna 2; Lp 8

Ptime=14; maszyna 3; Lp 9

Tabela do zadania:Przepisujemy dane,Zadania zostały odzielone pogrubioną linią. Każde zadanie to trzy operacjie (patrz dane)Następnicy technologiczni wynikają z danych tzn po zadaniu 1.1 powino byz zad1.2 (czyli aby móc pomalować – np. kolumna trzecia w danych to trzeba najpierw zeszlifować – kolumna 2 w danych)Tzn Lp1 jest przed lp2 potem jest lp3 ale Lp4 to nowe zadanie tak więc przed nim nic nie ma (np. Lp4 to już obróbka innej części, nie drzwi ale skrzyni biegów.)

W pierwszym kroku w Poprzednikach i Następnikach KOLEJNOŚCOWYCh wpisujem wszędzie 0.Dane te odczytuje się z diagramu gantta czyli po dodaniu zadania do kolejnośći wykonania. Tzn w każdym kroku jak dodasz jakieś zadanie w „najbardziej optymalne” miejsce to zmieniasz dla tego zadania (i tych co z nim sąsiadują na giagramie gantta) poprzedników i nast. Kolejnościowych.

Lp Maszyna Ptime NastTechnologiczny

Poprzed.Tech

Nast.Kolejnościowy

PoprzKolej

R Q

1 1 10 2 0 0 02 2 15 3 1 0 03 1 7 0 2 0 0

4 2 20 5 0 0 05 1 17 6 4 0 06 3 8 0 5 0 0

7 1 9 8 0 0 08 2 10 9 7 0 09 3 14 0 8 0 0

Trzeba wyznaczyć kolejność topologiczną tzn to w tym grafie jest za czym.Dodajemy kolumnę z liczbą poprzeedników i wpisujemy tam +1 z każdego poprzednika Kolejnościowego i +1 za każdego techologicznego.

Page 2: Opis działania algorytmu INSA

Lp Maszyna

Ptime NastTechnologiczny

Poprzed.Tech

Nast.Kolejnościowy

PoprzKolej

Lpoprzedników

R Q

1 1 10 2 0 0 0 02 2 15 3 1 0 0 13 1 7 0 2 0 0 1

4 2 20 5 0 0 0 05 1 17 6 4 0 0 16 3 8 0 5 0 0 1

7 1 9 8 0 0 0 08 2 10 9 7 0 0 19 3 14 0 8 0 0 1

Teraz lecimu od góry o jak tylko pojawi się 0 w kolumnie Lpoprzedników to dajem do topologicznej.Tzn dla LP1 jest zero więc mam1Dla LP2 nie ma zera więc omijamyDla Lp3 nie ma zera więc omijamyDla Lp4 jest zero wieć mamy:1, 4, Dla lp 5 pomijamy......Dla LP7 jest zero więc:1, 4, 7Teraz ponieważ przelecieliśmy wszystkie to wykreślamy 1 4 i 7 jak poprzedników (tak jakby rekurencyjnie wchodzimy w podgraf w którym 1 4 i 7 już nie są podpiete – analogicznie analizujemy połączenia nie od początku tylko od drugich w koilejce):

Lp Maszyna

Ptime NastTechnologiczny

Poprzed.Tech

Nast.Kolejnościowy

PoprzKolej

Lpoprzedników

R Q

1 1 10 2 0 0 0 02 2 15 3 było 0 0 teraz 03 1 7 0 2 0 0 1

4 2 20 5 0 0 0 05 1 17 6 4 0 0 16 3 8 0 5 0 0 1

7 1 9 8 0 0 0 08 2 10 9 7 0 0 19 3 14 0 8 0 0 1

Jak tylko pojawi się zero to wpisujemy do topologiczniej:

Page 3: Opis działania algorytmu INSA

1,4,7, 2i teraz przechodzimy do 4 i „wykreślamy” ją z aktualnych poprzedników

Lp Maszyna

Ptime NastTechnologiczny

Poprzed.Tech

Nast.Kolejnościowy

PoprzKolej

Lpoprzedników

R Q

1 1 10 2 0 0 0 02 2 15 3 1 0 0 teraz 03 1 7 0 2 0 0 1

4 2 20 5 0 0 0 05 1 17 6 było 0 0 Teraz 06 3 8 0 5 0 0 1

7 1 9 8 0 0 0 08 2 10 9 7 0 0 19 3 14 0 8 0 0 1Więc dodajemy piątkę:1,4,7,2,5

I ponieważ jedynka i czwórka zostały „wykreślone” z aktualnych poprzedników to reraz 7 (czyli idziemy kolejnośćią topologiczną):

Lp Maszyna

Ptime NastTechnologiczny

Poprzed.Tech

Nast.Kolejnościowy

PoprzKolej

Lpoprzedników

R Q

1 1 10 2 0 0 0 02 2 15 3 1 0 0 teraz 03 1 7 0 2 0 0 1

4 2 20 5 0 0 0 05 1 17 6 4 0 0 Teraz 06 3 8 0 5 0 0 1

7 1 9 8 0 0 0 08 2 10 9 było 0 0 Teraz 09 3 14 0 8 0 0 1I wpisujemy 81,4,7,2,5,8

i tak dalej aż wszędzie będą zera.Dostajemy:1,4,7,2,5,8,3,6,9.

to jest kolejność topologiczna.

Page 4: Opis działania algorytmu INSA

Na jej podstawie można wyznacząć R i Q

R- najdłuższa droga gochodząca do wierzchołka + jego ptime.Q najdłuższa dorga wychodząca z wierzchołka + jego ptime

Lp Maszyna

Ptime NastTechnologiczny

Poprzed.Tech

Nast.Kolejnościowy

PoprzKolej

Lpoprzedników

R Q

1 1 10 2 0 0 0 --2 2 15 3 1 0 0 --3 1 7 0 2 0 0 --

4 2 20 5 0 0 0 --5 1 17 6 4 0 0 --6 3 8 0 5 0 0 --

7 1 9 8 0 0 0 --8 2 10 9 7 0 0 --9 3 14 0 8 0 0 --Idziemy po kolejności topologicznej. Patrzymy jaka jest droga dochodząca do 1 (nie ma żadnej długości bo 1 nie ma poprzedników) i dodajemy do niej Ptime dla 1. czyli 10. R_1=10.

Tak samo z 4, 7 – też nie mają oprzedników więc wich R=(drogaR=0)+Ptime.

Lp Maszyna

Ptime NastTechnologiczny

Poprzed.Tech

Nast.Kolejnościowy

PoprzKolej

Lpoprzedników

R Q

1 1 10 2 0 0 0 -- 102 2 15 3 1 0 0 --3 1 7 0 2 0 0 --

4 2 20 5 0 0 0 -- 205 1 17 6 4 0 0 --6 3 8 0 5 0 0 --

7 1 9 8 0 0 0 -- 98 2 10 9 7 0 0 --9 3 14 0 8 0 0 --Teraz 2 (po kolejności topologicznej) – poprzednika 2 to 1 więc R_2=R_1+Ptime_2=10+15=25.Jeśli 2 miało by kilku poprzedników to było by to max z(R) + Pitem.Potem analizujemy 5. Poprzednik_5=4. R_5=R_4+Ptime_5=20+17=37.

Page 5: Opis działania algorytmu INSA

I tak dajel aż będzie całe R wypełnione.

Lp Maszyna

Ptime NastTechnologiczny

Poprzed.Tech

Nast.Kolejnościowy

PoprzKolej

Lpoprzedników

R Q

1 1 10 2 0 0 0 -- 102 2 15 3 1 0 0 -- 253 1 7 0 2 0 0 -- 32

4 2 20 5 0 0 0 -- 205 1 17 6 4 0 0 -- 376 3 8 0 5 0 0 -- 45

7 1 9 8 0 0 0 -- 98 2 10 9 7 0 0 -- 199 3 14 0 8 0 0 -- 33

Dla Q robimy tak samo tylko licząc od końca kolejności topologicznej.

Tzna jak mamy 1,4,7,2,5,8,3,6,9 to analizujemy:najpierw 9. Q_9=max(Q_następników)+Ptime_9.9 nie ma następników bo jest „końcem” grafu więc Q_9=0+P_9=14;

Teraz 6 (wegłóg kolejności topologicznej ale od tyłu)6 też nie ma nstępników więc Q_6=P_6=8;

3 ma taka samo wieć Q_3=P_3=7;

Teraz 8. Następnik 8 to 9 Q_9=14; Q_8=Q_9+Ptime_8=14+10=24;

I tak dajlej aż uzupełnimy wszystko.

Lp Maszyna

Ptime NastTechnologiczny

Poprzed.Tech

Nast.Kolejnościowy

PoprzKolej

Lpoprzedników

R Q

1 1 10 2 0 0 0 -- 10 322 2 15 3 1 0 0 -- 25 223 1 7 0 2 0 0 -- 32 7

4 2 20 5 0 0 0 -- 20 455 1 17 6 4 0 0 -- 37 256 3 8 0 5 0 0 -- 45 8

7 1 9 8 0 0 0 -- 9 338 2 10 9 7 0 0 -- 19 249 3 14 0 8 0 0 -- 33 14

Page 6: Opis działania algorytmu INSA

Sortujemy procesy po maksymalnym czasie:4 (Ptime=20)5 (17)2 (15)\9 (14)1 (10)8 (10)7 (9)6 (8)3 (7)

I według tej kolejności wstawiamy procesy do uszeregowania sprawdzając INSĄ czy jest lepiej czy gożej.

Czyli pierwsze idzie 4. Wykonuje się na maszynie 2. Można je poprstu wsadzić bo nic na tej maszynie jeszcze nie ma.

masz1 - - -masz2 4 - -masz3 - - -To powyżej to diagram a nie tabela:)

Teraz wybieramy następny proces z listy posortowanej po Ptime więc jest to 5.5 jest na maszynie 1 więc wstawiamy

masz1 5 - -masz2 4 - -masz3 - - -

Teraz z posortowan ej koljeki dajemy 2. jest na pierwszej maszynie więc trzeba sprawdzić wszystkie kolejności.

2,4 oraz 4,2

Dla 2,4 liczymy:

p. techn=1, R_1=10 Ptime_2=15 n. kolejność=4 (BO ZADANIE 4 BYŁO BY LO BY ZA NIM NA MASZYNIE 2)

p. kolejności=0 (bo było by pierwsze na maszynie 2)

n. tech=3

Wybieramy max z R z pierwszej kolumny + Ptime + max z Q z ostatniej kolumny;R_1+P_2+Q_4=10+15+47=70. Tą daną zapamientujemy dla tej koleności.

Page 7: Opis działania algorytmu INSA

Sprawdzamy ile wyjdzie dla koleności 4,2

p. techn=1, R_1=10 Ptime_2=15 n. kolejność=0 (bo było by ostanie na maszynie 2)

p. kolejności=4 (bo zadanie 4 było by pierwsze na maszynie 2)

n. tech=3

Znowy liczmymax(Rpoprzedników)+Ptime+max(Qnastępników)

R_4+P_2+Q_3=20+15+7=42

Teraz wybieramy tą kolejność dla której wyliczona wartość jest MNIEJSZA. Czyli kolejność 4->2 bo 42<70

masz1 5 - -masz2 4 2 -masz3 - - -

Teraz uaktualniamy tabelę z następnikami! Zmieniło się w kolejnościowych bo zawsze przed 2 jest 4 czyli dwa ma poprzdnika 4 a 4 ma następnika 2.

Lp Maszyna

Ptime NastTechnologiczny

Poprzed.Tech

Nast.Kolejnościowy

PoprzKolej

Lpoprzedników

R Q

1 1 10 2 0 0 0 02 2 15 3 1 0 4 23 1 7 0 2 0 0 1

4 2 20 5 0 2 0 05 1 17 6 4 0 0 16 3 8 0 5 0 0 1

7 1 9 8 0 0 0 08 2 10 9 7 0 0 19 3 14 0 8 0 0 1Liczymy nową kolejność topologiczną.Tak samo jak ostatnio. Widać, że najprawdopodobniej 2 się przesunie trochę dalej bo doszedł jej poprzednik a reszcie się nic nie zmieniło.

Nowa kolejność to:1,4,7,5,2,8,6,3,9(liczymy jak poprzednio: wypisujemy te co mają 0 w Lpoprzed czyli 1,4,7 a potem „wykreślamy” 1

Page 8: Opis działania algorytmu INSA

z poprzedzników i dopsujem te u których pokazują się zera. W tym wypadku nic się nie dosze bo dla dwójki się zmieni z 2 na 1 w Lpoprzedników)

Lp Maszyna

Ptime NastTechnologiczny

Poprzed.Tech

Nast.Kolejnościowy

PoprzKolej

Lpoprzedników

R Q

1 1 10 2 0 0 0 02 2 15 3 bylo 0 4 teraz 13 1 7 0 2 0 0 1

4 2 20 5 0 2 0 05 1 17 6 4 0 0 16 3 8 0 5 0 0 1

7 1 9 8 0 0 0 08 2 10 9 7 0 0 19 3 14 0 8 0 0 1

1,4,7,

Potem „wykreślamy” 4 i aktlalizujemy Lpoprzedników i wpisujemy te co mają 0.

1,4,7,5,2,

być może mażna wpisać dwa przed pięć.

Itd.

jak już mamy nową kolejność to liczymy nowe R i nowe Q. Tak jak poprzednio. Jedziemy po kolejnośći i wpisuemyR_x=max(R_poprzedników)+P_x

Dla Q jedziemy po topologiczniej od tyłuQ_x=max(Q_następników)+P_x

mamy:

Page 9: Opis działania algorytmu INSA

Lp Maszyna

Ptime NastTechnologiczny

Poprzed.Tech

Nast.Kolejnościowy

PoprzKolej

Lpoprzedników

R Q

1 1 10 2 0 0 0 -- 10 322 2 15 3 1 0 4 --- 35 223 1 7 0 2 0 0 -- 42 7

4 2 20 5 0 2 0 -- 20 455 1 17 6 4 0 0 -- 37 256 3 8 0 5 0 0 -- 45 8

7 1 9 8 0 0 0 -- 9 338 2 10 9 7 0 0 -- 19 249 3 14 0 8 0 0 -- 33 14

Jak już mamy aktualną tabelę i uszeregowanie:

masz1 5 - -masz2 4 2 -masz3 - - -

Oraz kolejność sortowania:9 (Ptime=14)1 (10)8 (10)7 (9)6 (8)3 (7)

To dodajemy 9 do diagramu. Jest ono na 3 maszynie więc wstawiwamy po prostu.masz1 5 - -masz2 4 2 -masz3 9 - -

Nic się nie zmienia w technologicznych na razie.

Teraz wstawimy 1.1 jest na 1 maszynie więc może być kolejność 1,5 albo 5,1

Trzeba sprawdzić obie i wybrać to dla której wyjdzie mniejszy wynik. Tak jak poprzednio:

Page 10: Opis działania algorytmu INSA

Dla 1,5

p. techn=0 (z danych) Ptime_1=10 n. kolejność=5 (bo zad 5 będzie po 1 na maszynie 1)

p. kolejności=0 (bo będzie pierwsze na maszynie 1)

n. tech=2 (z danych)

max(R_poprzedników)+P_1+max(Q_następników)=0+10+25=35;

Teraz dla kolejność 5,1

p. techn=0 (z danych) Ptime_1=10 n. kolejność=0 (bo będzie ostanie na maszynie 1))

p. kolejności=5 (bo będzie za zadaniem 5 w kolejności 5,1)

n. tech=2 (z danych)

max(R_poprzedników)+P_1+max(Q_następników)=R_5+P_1+Q_2=37+10+22=69

Wybieramy tą kolejność dla której wartość jest MNIEJSZA tak wieć będzie 1,5 bo 35<69;

Mamy:

masz1 1 5 -masz2 4 2 -masz3 9 - -

Teraz trzeba zmienić nastepnika kolejnościowego dla 1 i poprzenika kolejnościowego dla 5.

Lp Maszyna

Ptime NastTechnologiczny

Poprzed.Tech

Nast.Kolejnościowy

PoprzKolej

Lpoprzedników

R Q

1 1 10 2 0 5 0 02 2 15 3 1 0 4 23 1 7 0 2 0 0 1

4 2 20 5 0 2 0 05 1 17 6 4 0 1 26 3 8 0 5 0 0 1

7 1 9 8 0 0 0 08 2 10 9 7 0 0 19 3 14 0 8 0 0 1

Page 11: Opis działania algorytmu INSA

Wyliczamy nową kolejność topologiczną oraz nowe R i Q.

I dla nowych danych wstawiamy kolejne zadania z sortowania na maszynę.Będzie to zadanie 8 na maszynę 3 czyli ablo przed 9 albo po 9. Wychodzi chyba po 9.czyli

masz1 1 5 -masz2 4 2 -masz3 9 8 -

Dla tego też aktualizujemy poprzednika kolejnościowego i nast. Kolejnościowego i liczymy nową topologiczną i nowe R i Q i wstawiamy następne zadania. Taraz będą już trzy możliwości:przed, pomiędzy, za.Wybieramy zawszę tą dal której wyliczonemax(R_poprzedników)+P_x+max(Q_następników) jest najmniejsze/

I tak w kółko.

Mam nadzieje że jest to dobrze i że Ci pomoże.


Recommended