Wątek przeniesiony 2016-10-24 23:34 z Edukacja przez somekind.

Algorytm winda budynek 10 piętrowy 3 windy.

0

Chciałbym się dowiedzieć czym inspirował się twórca algorytmu dla windy w tym budynku, albo jakie są najprostsze rozwiązania, bo sytuacja wygląda tak, że w tym budynku 10 piętrowym są 3 windy, i przycisk góra/dół.

Na parterze gdy wcisnąłem góra (bo oczywiście na parterze tylko można do góry jechać) -> zaistniała taka sytuacja winda jedna nie działała, druga była na 10'tym piętrze, trzecia na pierwszym.

Gdy wcisnąłem ta z 1'go pojechała na 9 po kogoś, a ta z 10 piętra po mnie, gdzie tu logika i ekonomia?

Jest dla wind jakiś najbardziej optymalny algorytm?

0

Może gość na dziewiątym wcisnął przycisk o 0,5 sekundy wcześniej niż Ty?

0
bogdans napisał(a):

Może gość na dziewiątym wcisnął przycisk o 0,5 sekundy wcześniej niż Ty?

No i co z tego nawet jeśli to dlaczego nie zjechała do niego 10?

0

Racja, nieuważnie przeczytałem.

0

a ile masz przyciskow? Jeden czy kazdy osobny dla windy? Moze zamiast przycisku na dol naciskal przycisk na gore (na tym 9 pietrze). Wiec skoro chce jechac w gore to winda z dolu musi byc "aktywowana". Jedyna wolna winda ktora jest ponizej niego znajduje sie na 1 pietrze

Gdy Ty nacisnales to byla tylko dostepna jedna winda ta z 10 pietra.

Sytuacji moze byc wiecej

0
fasadin napisał(a):

a ile masz przyciskow? Jeden czy kazdy osobny dla windy? Moze zamiast przycisku na dol naciskal przycisk na gore (na tym 9 pietrze). Wiec skoro chce jechac w gore to winda z dolu musi byc "aktywowana". Jedyna wolna winda ktora jest ponizej niego znajduje sie na 1 pietrze

Gdy Ty nacisnales to byla tylko dostepna jedna winda ta z 10 pietra.

Sytuacji moze byc wiecej

Zanim ta z 10'tki do mnie zjechała to widziałem jak ta z 9'tki zjeżdża w dół, więc nacisnął raczej w dół. Ponadto są dwa przyciski na każdym piętrze (poza parterem), ale nie, że 2 osobno dla każdej windy, tylko 2 (góra/dół) dla wszystkich jednocześnie.

0

Moze zamiast przycisku na dol naciskal przycisk na gore

I to jest problem - wielu ludzi naciska oba przyciski myśląc że w ten sposób szybciej winda przyjedzie - rozwalając tym samym algorytm niezależnie jak wymyślny by nie był.

1

Dlatego w nowszych windach w niektórych biurowcach jest tak, że wpisuje się, na które piętro chce się jechać i nie ma przycisków góra/dół.

Natomiast potwierdzam, że w windach klasycznych z przyciskami góra/dół są jakieś dziwne algorytmy. Miałem raz lepszą sytuację. Chciałem jechać z parteru na 11. piętro, wcisnąłem przycisk "w górę". Winda była wtedy chyba na 8. i jechała w dół. Zjechała na parter, otworzyły się drzwi. W windzie ktoś był, ale nie wysiadał. Wszedłem, wcisnąłem 11. W momencie jak wcisnąłem, zorientowałem się, że było już wciśnięte "-1" (Zdziwiłem się, że się zatrzymała, skoro jedzie w dół, ale myślę sobie "trudno, nic nie szkodzi, zjadę na dół, a później wjadę na 11."). Ku mojemu zaskoczeniu winda ruszyła od razu na 11.

  • Jedzie Pan z 8. na -1?
  • Tak.
  • Przepraszam.

:D

0

W przypadku jednej windy algorytm wydaje się prosty: unikać zmiany kierunku, tak żeby nikt (kto wciśnie prawidłowy przycisk) nie jechał w górę i w dół podczas tej samej przejażdżki. Winda jadąca w dół zalicza wszystkie wybrane przystanki w dół, a po ich wyczerpaniu dopiero jedzie w górę.

Kiedy wind jest kilka, trzeba by jeszcze wybierać, która winda najbardziej pasuje.
Hmm, może ktoś się pokusi o napisanie symulatora do testowania różnych algorytmów? ;)

0
Azarien napisał(a):

W przypadku jednej windy algorytm wydaje się prosty: unikać zmiany kierunku, tak żeby nikt (kto wciśnie prawidłowy przycisk) nie jechał w górę i w dół podczas tej samej przejażdżki. Winda jadąca w dół zalicza wszystkie wybrane przystanki w dół, a po ich wyczerpaniu dopiero jedzie w górę.

Kiedy wind jest kilka, trzeba by jeszcze wybierać, która winda najbardziej pasuje.
Hmm, może ktoś się pokusi o napisanie symulatora do testowania różnych algorytmów? ;)

Ja bym ustawił żeby 3 windy zawsze stacjonowały na piętrze 0, 5 i 10. I np. gdy ktoś by jechał z 4 na 7, winda z 5 by po niego zjeżdżała, wysadzała na 7 i jechała na 10, a w tym samym czasie ta z 10 na 5. Bo w większości raczej nikt nie jeździ pomiędzy piętrami tylko albo z danego piętra na parter, albo z parteru na dane piętro.

Ktoś mógłby zrobić symulator i uwzględnić, różne czasy dla jazdy w górę windy i w dół, oraz różne zużycie energii, i uwzględnić czas na otwarcie drzwi.

0

Nie pamiętam gdzie to wyczytałem, ale w przypadku wielu wind to działa chyba tak, że każda winda ma swój osobny prywatny kontroler oraz jest dodatkowy główny kontroler, który przechwytuje żądania dla każdej windy i następnie wydaje polecenia do kontrolerów każdej windy na zasadzie tak jakby symulowania naciśnięcia guzików.

Czyli w chwili naciśnięcia guzika na zewnątrz windy, informację o tym dostaje kontroler główny, który wysyła to żądanie do którejś z wind. Natomiast każda winda planuje sobie już "trasę" we własnym zakresie na podstawie zleceń z kabiny oraz głównego kontrolera. To mogłoby tłumaczyć dziwne zachowania i brak optymalności niektórych decyzji, choć nadal nie tłumaczy mojego przypadku.

BTW: W windach jeszcze jedna rzecz mnie okropnie denerwuje - dlaczego nie ma możliwości "odciśnięcia" raz wciśniętego guzika? Np. wcisnąłem "0", ale w trakcie jazdy przypomniało mi się, że chcę wziąć coś z samochodu, więc chciałbym zmienić z "0" na "-1". Niestety jedyne co mogę zrobić to dołożyć "-1" i stracić czas na czekanie na poziomie 0 aż otworzy i zamknie drzwi.

0

Jakiś soft do symulowania jazdy windą mógłby być spoko.
@Azarien W jaki sposób miałby on testować algorytmy do windy? W jaki sposób byłby one podawane na wejściu? Są jakieś koncepcje w stylu serializacji procedur?
PS. Tak tylko pytam na razie. Raczej nie spodziewajcie się, że jutro pojawi się tu symulator do zabawy :D

0

@Azarien
Czyli miałoby to polegać bardziej na wystawieniu wspólnego API/zestawu interfejsów i prostego IoC, dla późniejszych modułów odpowiedzialnych za zarządzanie windami? Każdy moduł reprezentowałby konkretny "algorytm windowy", nie tylko jako zestaw kroków, ale także jako konkretną ich implementację? A Lua jako propozycja ze względu na skryptową naturę, która się tutaj nadaje. O takie coś chodziło?

1 użytkowników online, w tym zalogowanych: 0, gości: 1