(Symulacyjny program komputerowy wyznaczania wielkości składo)
Transkrypt
(Symulacyjny program komputerowy wyznaczania wielkości składo)
Mgr inż. Michał Krzemiński Politechnika Warszawska SYMULACYJNY PROGRAM KOMPUTEROWY WYZNACZANIA WIELKOŚCI SKŁADOWISK 1. Wprowadzenie Budownictwo, podobnie jak inne dziedziny gospodarki podlega w ostatnich latach bardzo istotnym zmianom. Wynikają one z wprowadzania nowych technologii, materiałów, narzędzi, ale także z coraz większego wpływu ekonomii na proces budowlany. Coraz częściej mamy do czynienia z prowadzeniem skomplikowanych budów w terenach miejskich o zwartej zabudowie, gdzie występuje znaczne ograniczenie możliwości stworzenia zaplecza budowy czy zajęcia okolicznych dróg. Szeroka dostępność materiałów budowlanych nie wymaga obecnie od realizatora budowy gromadzenia ich zapasów w celu uniknięcia przestojów, ale z drugiej strony produkcja wielu spośród tych materiałów realizowana jest dopiero pod konkretne zamówienie. Obecny sposób finansowania procesu inwestycyjnego wymusza maksymalne skracanie cykli budowlanych. Wszystkie te czynniki powodują, że współczesna budowa stanowi poważne wyzwanie dla osób zajmujących się jej organizacją. Jednym z najistotniejszych elementów organizacji budowy jest jej zaopatrzenie w materiały, które ma znaczący wpływ na terminową, zgodną z przyjętym harmonogramem realizację prac. Podstawowym problemem występującym podczas realizacji zadań przez pracowników odpowiedzialnych za zaopatrzenie jest optymalne zaplanowanie zapasów materiałów budowlanych. Oszacowanie zapasu materiałów w zbyt małej ilości może być powodem zakłóceń w terminowości wykonania obiektów. Natomiast zbyt duża ilość zapasów może prowadzić do nadmiernych kosztów zagwarantowania i utrzymania powierzchni magazynowej. Coraz częściej spotyka się budowy, które dysponują placem budowy, a więc także powierzchnią magazynową o bardzo ograniczonych rozmiarach. Dlatego też coraz większą wagę przywiązuje się do planowania częstotliwości i wielkości do dostaw. W tym artykule zaprezentowano program komputerowy stanowiący uniwersalne narzędzie wspomagające planowanie gospodarki zaopatrzeniowo magazynowej poszczególnych 1 procesów budowlanych. Program został napisany w języku Delhi 7.0 [3,4,5] i dostosowany do współpracy ze środowiskiem Windows. Bazy danych do programu tworzone są w plikach typu „*.txt”, co umożliwia łatwą modyfikację istniejących baz danych przy użyciu dowolnego edytora tekstu. Algorytm programu zbudowany został z wykorzystaniem symulacyjnego modelu wyznaczenia zapasu materiałów budowlanych z uwzględnieniem losowego charakteru terminów dostaw i zużycia materiałów budowlanych [1]. 2 3 Rys. 1. Schemat blokowy algorytmu programu komputerowego 4 2. Algorytm programu komputerowego „SWWS” W tym punkcie przedstawiono opis poszczególnych elementów algorytmu programu komputerowego „Symulacyjnego Wyznaczania Składowisk” - SWWS, którego schemat przedstawiono na rys. 1. 1. Na ekranie pokazuje się strona tytułowa. Aby przejść do dalszej części programu należy nacisnąć przycisk „Dalej”. Naciśnięcie tego przycisku spowoduje przejście do właściwej części programu. Aby rozpocząć obliczenia należy wybrać przycisk „Obliczenia”, chcąc dowiedzieć się czegoś więcej na temat samego programu można przejść do opcji „O programie”. 2. Wybieranie ma charakter dwustopniowy. Pierwszy wybór jakiego dokonuje użytkownik, to wybór miejsca składowania materiału. Są trzy możliwe opcje: na otwartym placu składowym, pod zadaszeniem, w magazynie zamkniętym. Następnie dokonuje się - z listy zamieszczonej w programie - wyboru materiału. 3. Program nie uwzględnia układu kalendarzowego, nie ma więc w nim podziału na dni tygodnia. Program przyjmuje tylko liczby dodatnie i całkowite. 4. Wprowadzane liczby to liczby dodatnie i zero. Zero wprowadza się w celu zasymulowania dnia wolnego (np. sobota, niedziela), w którym zużycie danego materiału jest zerowe. Liczby wprowadza się w tabeli, której wielkość jest generowana automatycznie na podstawie danych uzyskanych w poprzednim punkcie. 5. Jednostką czasową jest w tym przypadku, tak samo jak w przypadku harmonogramu zużycia, dzień. Np. chcąc wprowadzić dostawę co 4 dni użytkownik wprowadza liczbę 4. Częstotliwość może być wprowadzana jedynie jako liczby całkowite dodatnie. 6. W celu wyznaczenia ilości dostaw całkowity czas dzielony jest przez zakładaną częstotliwość. W celu wyznaczenia wielkości dostaw dzielone jest całkowite zużycie przez ilość dostaw. Podział następuje automatycznie i równomiernie, jednakże użytkownik ma prawo ingerencji w wielkości poszczególnych dostaw. Pierwsza dostawa, w późniejszej części programu, automatycznie stanie się zapasem początkowym. 7. Funkcją generującą liczby jest funkcja wewnętrzna programu Delphi 7.0. Dane statystyczne określane są dla dwóch odrębnych zjawisk, pierwsze to terminowość dostaw, drugie to wielkość dziennego zużycia danego materiału. Każda z danych określana jest w tabelach. Dane podawane są w formie procentowej i pochodzą najczęściej z własnych obserwacji osoby zajmującej się danymi zagadnieniami w firmie. 5 8. Dystrybuanta dostaw, wiersz pierwszy zawiera liczbę zero oznaczającą, że dostawa jest o czasie, na lewo od niej liczby dodatnie mówiące nam o tym, że dostawa nastąpi wcześniej i na prawo liczby ujemne mówiące, że dostawa będzie opóźniona. W wierszu drugim przypisujemy odpowiednio kolumnami prawdopodobieństwo wystąpienia poszczególnych zjawisk. Wiersz trzeci tworzy się automatycznie. Wiersz czwarty natomiast powstaje poprzez odjęcie od wartości częstotliwości wartości z wiersza pierwszego. Dystrybuantę wahań wielkości zużycia wprowadza się w nieco uproszczony sposób, gdyż jest ona bardziej zautomatyzowana. Użytkownik ma jedynie za zadanie prawidłowe wypełnienie wierszy pierwszego i drugiego. 9. Polega ono na automatycznym przyjęciu jako zapasu początkowego wielkości pierwszej dostawy. Chcąc więc uzyskać większy zapas początkowy należy to uczynić modyfikując wielkości poszczególnych dostaw. 10. Liczbę wprowadza się w specjalnym oknie. Liczba musi być z zakresu od 1 do 1000. Po wprowadzeniu liczby powtórzeń możemy przejść do uruchomienia właściwego algorytmu symulacyjnego i do wprowadzenia pierwszej liczby losowej. 11. Po wprowadzeniu wszystkich danych można przejść do algorytmu symulacyjnego mającego na celu znalezienie maksymalnej ilości materiału, jaką w okresie całego zużycia trzeba będzie składować. 12. Losowanie liczby dotyczącej terminu dostawy odbywa się automatycznie przy użyciu wewnętrznej funkcji programu Delphi 7.0. Liczba losowana jest z zakresu od 1 do 99. 13. Mając wylosowaną liczbę z zakresu od 1 do 99 należy odczytać przy użyciu tej liczby z dystrybuanty wahań terminów dostaw za ile dni dostarczony zostanie materiał. 14. Wiedząc z poprzedniego punktu, za ile dni nastąpi dostawa, należy przy użyciu programowego generatora liczb losowych wylosować odpowiednią ilość liczb losowych. 15. Mając wylosowane liczby kolejnego zużycia w dniach przed następną dostawą należy przy ich użyciu odczytać zużycie jednostkowe z tabeli dystrybuanty wahań zużycia jednostkowego dziennego. 16. Rzeczywiste zużycie dzienne uzyskujemy poprzez przemnożenie kolejnych zużyć jednostkowych przez odpowiadające im kolejne wartości z harmonogramu zużycia. 17. Zapas oblicza się w następujący sposób. Należy odejmować kolejno rzeczywiste dzienne zużycie od stanu dnia poprzedniego. Początkowy stan to stan po dostawie. Następnie należy odjąć od niego wartości zużyć aż do momentu nadejścia kolejnej dostawy, którą należy dodać do stanu po dniach, w których następowało zużycie. 6 18. Uzupełnienie zapasu materiałów nową dostawą, polega na dopisaniu do tabeli wartość kolejnej dostawy. Jest to powodowane tym, że minął już czas zużycia materiału, po jakim miała nadejść kolejna dostawa. Wartość dostawy, jaka zostanie dopisana zależy od tego, jaka została zaplanowana w punkcie 6. 19. Ustalenie licznika dostaw k := k + 1, polega na prowadzeniu zliczenia ilości dostaw, jakie już zostały dostarczone na budowę. Ma to na celu określenie czy można już przejść do następnej części programu czy należy powtórnie powrócić i przeprowadzić kolejne losowanie terminu następnej dostawy. 20. k < d. Sprawdzenie to ma na celu określenie, czy została już osiągnięta zakładana liczba dostaw. Jeżeli ilość została osiągnięta można przejść do przeprowadzenia korekty zwiększającej bądź zmniejszającej wielkość zapasu początkowego materiału. 21. ∨Z j j < 0 . Sprawdzenie to ma na celu określenie, czy w ciągu całej symulacji nie nastąpił ujemny zapas materiału. Polega ono na przebadaniu kolumny, w której występują rzeczywiste zapasy materiałów na okoliczność występowania liczb ujemnych. 22. W tym punkcie następuje wyrównanie ujemnego stanu materiału. Znajdowany jest największy ujemny stan materiału i o jego wartość zwiększane są wszystkie stany materiałów. Powstaje w ten sposób skorygowany stan zapasu materiału. Korektę prowadzi się rozpoczynając od stanu początkowego a kończąc na stanie zapasu po ostatniej dostawie. 23. Wielkość tą wyznacza się poprzez znalezienie maksymalnej wartości zapasu materiału w kolumnie skorygowanego zapasu materiału. Wielkość ta selekcjonowana jest przy użyciu matematycznej funkcji maksymalizacji. 24. ∨Z j j > 0 . Sprawdzenie to ma na celu określenie, czy istnieje wielkość większa od wielkości zero. Jeżeli występuje taka wielkość, należy przejść do korekty zmniejszającej stan zapasu materiału i w ten sposób zostanie stworzona kolumna skorygowanego zapasu materiału. Korektę tę prowadzi się przez odjęcie od wszystkich wartości, poczynając od wartości początkowej a kończąc na wartości po ostatniej dostawie, wartości wyselekcjonowanej jako najmniejszą dodatnią. 25. Znajdowany jest najmniejszy dodatni stan materiału i o jego wartość zmniejszane są wszystkie stany materiałów. Powstaje w ten sposób skorygowany stan zapasu materiału. Korektę prowadzi się rozpoczynając od stanu początkowego a kończąc na stanie zapasu po ostatniej dostawie. 7 26. Wielkość tą wyznacza się poprzez znalezienie maksymalnej wartości zapasu materiału w kolumnie skorygowanego zapasu materiału. Wielkość ta selekcjonowana jest przy użyciu matematycznej funkcji maksymalizacji. 27. Jeżeli wyniki ułożą się tak, że nie występuje ani zapas ujemny ani mocno dodatni, to od razu można przejść do wyznaczenia maksymalnego zapasu materiału. Wielkość tą wyznacza się poprzez znalezienie maksymalnej wartości zapasu materiału w kolumnie skorygowanego zapasu materiału. Wielkość ta selekcjonowana jest przy użyciu matematycznej funkcji maksymalizacji. 28. Jest to punkt w którym następuje zakończenie pojedynczego cyklu symulacyjnego. Następnie można przejść do powtórnego cyklu bądź do wyliczenia maksymalnej wartości zapasu materiału, który trzeba będzie zmagazynować. 29. Po każdym kolejnym cyklu symulacyjnym należy zapamiętać wynik maksymalnego zapasu skorygowanego. Jest to ważne z tego względu, że aby znaleźć wynik niezbędny do wyliczenia powierzchni magazynowej, trzeba będzie porównać wyniki wszystkich cykli symulacyjnych. 30. Przed rozpoczęciem pierwszego cyklu symulacyjnego przyjęta została liczba cykli, jakie zostaną wykonane. Aby więc móc przystąpić do wyznaczenia maksymalnej ilości zapasu materiału, należy przeprowadzić wszystkie założone cykle symulacyjne. 31. Po przeprowadzeniu wszystkich cykli symulacyjnych należy przystąpić do wyznaczenia maksymalnej wartości zapasu jaka została znaleziona podczas wszystkich eksperymentów. Wartość ta niezbędna jest do wyznaczenia wielkości powierzchni potrzebnej na zmagazynowanie materiału. 32. Wyznacza się ją poprzez przemnożenie wyniku symulacji przez normatyw składowania ilości materiału na jeden metr kwadratowy oraz przez odwrotność współczynnika alfa[2], odpowiedzialnego za wygodny i racjonalny dostęp do składowanego materiału. 33. Wyniki zapamiętywane są w plikach tekstowych typu „*.txt”. Takie zarchiwizowanie wyniku wraz z danymi pozwala na stworzenie własnych baz danych. Dodatkowo zapis w plikach typu „*.txt” pozwala na łatwy dostęp do informacji przy użyciu dowolnego edytora takich plików. 34. Zakończenie programu. Jest ostatni punkt algorytmu. Punkt ten kończy działanie programu. 8 3. Wprowadzenie danych wejściowych Użytkownik programu wprowadza następujące dane: - sposób składowania materiału, - rodzaj składowanego materiału, - ilość dni zużycia danego materiału, - zapotrzebowanie na dany materiału dla każdego dnia, - częstotliwość dostaw, - dane statystyczne dotyczące wahań terminów dostaw oraz wielkości zużycia materiału budowlanego, - dystrybuanty, - liczbę powtórzeń algorytmu symulacyjnego, Dane dotyczące sposobu składowania materiału oraz rodzaju składowanego materiału wybierane są z listy zamieszczonej w programie[2]. Użytkownik może w prosty sposób modyfikować listy, o których mowa powyżej. Pozostałe informacje użytkownik wprowadza przy użyciu klawiatury numerycznej. Program posiada zabezpieczenia przed wprowadzeniem przez użytkownika nieprawidłowych danych liczbowych (na przykład: zużycie materiału określone liczbą ujemną). W przypadku wprowadzenia takiej danej program sygnalizuje błąd użytkownika wyświetlając komunikat błędu. Po wprowadzeniu przez użytkownika harmonogramu zapotrzebowania i częstotliwości dostaw, program automatycznie wylicza ilość i wielkości kolejnych dostaw. Dostawa pierwsza traktowana jest jako zapas początkowy. Użytkownik ma możliwość modyfikacji wielkości wszystkich dostaw. Suma zmodyfikowanych wielkości dostaw musi być równa całkowitemu zużyciu danego materiału, w przeciwnym przypadku program zasygnalizuje błąd we wprowadzonych danych. Wyznaczenie dystrybuant wymaga od użytkownika doświadczenia w zakresie planowania dostaw materiałów i ich zużycia z uwzględnieniem lokalnych warunków prowadzenia prac budowlanych. Program korzysta z generatora liczb losowych programu Delphi oraz z algorytmu symulacyjnego uwzględniającego losowy charakter terminów dostaw oraz zużycia materiałów budowlanych[1]. 4. Forma wyprowadzanych wyników W wyniku przetworzenia danych wejściowych program oblicza następujące wielkości: 9 - niezbędny zapas materiału, - powierzchnie magazynową. Dla celów poglądowych i kontrolnych program został wyposażony w generator wykresu harmonogramu zapotrzebowania dziennego materiałów budowlanych. Możliwy jest także przegląd przebiegu poszczególnych eksperymentów symulacyjnych. Program ma możliwość archiwizacji wyników wraz z danymi w postaci plików tekstowych. Wydruk danych wejściowych i wyjściowych następuje z pliku tekstowego. Program nie posiada szczególnych wymagań sprzętowych, jednak z uwagi na dużą liczbę wykonywanych w nim obliczeń przy założonej dużej liczbie interacji (powyżej 500) zaleca się stosowanie komputerów o procesorze taktowanym powyżej jednego GigaHertza (1 GHz). Przykład liczbowy Poniżej przedstawiono rysunki, na których znajdują się zdjęcia z ekranu, które powstały podczas prowadzenia pracy w programie. Rys. 2. Forma wprowadzenia danych dotyczących zużycia materiału 10 Rys. 2 obrazuje pierwszy etap korzystania z programu. Można kolejno odczytać że składowanym materiałem będą bloczki ścienne z betonów lekkich, są to materiały składowane pod podcieniami (wiatami). Znajdują się tam również informacje na temat harmonogramu zużycia, jest on podany w formie tabelarycznej. Na rys. 3 można obejrzeć ten harmonogram w formie graficznej. Z rys. 2 można również odczytać dane dotyczące całkowitego zużycia, częstotliwości, wielkości oraz ilości dostaw. Aby obejrzeć graficzną postać harmonogramu zużycia należy nacisnąć przycisk „Pokaż harmonogram zużycia”. Aby przyjść do następnej części programu należy nacisnąć przycisk „Wykonaj obliczenia” Rys. 3. Harmonogram zapotrzebowania na materiał budowlany Rys. 3 obrazuje harmonogram zapotrzebowania na materiał budowlany w formie graficznej. Na osi poziomej znajdują się dane czasu, na osi pionowej dane dotyczące wielkości zużycia. Miejsca w których zużycie jest zerowe oznaczają dni wolne od pracy. 11 Rys. 4.Forma wprowadzenia danych statystycznych oraz wyniki obliczeń Na rys. 4 widać jaki materiał został wybrany do składowania, jaka będzie ilość częstotliwość dostaw. Pokazane są wypełnione dwie dystrybuanty dostaw i zużycia. Na dole ekranu znajduje się białe okno w którym można oglądać wyniki poszczególnych interacji. Poniżej białego okna można odczytać, jaki będzie niezbędny maksymalny zapas oraz jaka będzie niezbędna powierzchnia magazynowa. Zakończyć pracę można na dwa sposoby. Jeden to wyjście bez zapisu, drugi to wyjście z zapisem wyników. 12 5. Podsumowanie Opracowany program komputerowy „SWWS” jest narzędziem przeznaczonym dla osób zajmujących się organizacją zaopatrzenia w procesach budowlanych. Może być także wykorzystany w procesie dydaktycznym w przedmiotach z zakresu organizacji i planowania budowy. Program wymaga od użytkownika posiadania znajomości podstawowych zasad zarządzania zapasami. Istotna jest także w tym przypadku wiedza na temat lokalnego rynku materiałów budowlanych oraz czynników mających wpływ na terminowość dostaw. Dzięki szybkiemu uzyskiwaniu wyników program umożliwia przeprowadzenie symulacji polegającej na dostosowaniu harmonogramów dostaw, na przykład do wielkości powierzchni magazynowej. Program nie ma charakteru zamkniętego, ponieważ baza jego danych wejściowych może być uzupełniana o nowe rodzaje materiałów, a także aktualizowana w przypadku zmiany sposobu składowania. Archiwizowanie danych umożliwia użytkownikowi praktyczną weryfikację przyjmowanych danych statystycznych, wraz ze zmianami następującymi w zaopatrzeniu i zużyciu materiałów. 6. Literatura 1. Jaworski K. M. : Metodologia projektowania realizacji budowy. Wydawnictwo Naukowe PWN, Warszawa 1999. 2. Jaworski K. M. : Zagospodarowanie placu budowy domu jednorodzinnego i małego osiedla. Arkady, Warszawa 1989. 3. Boduch A.: Delphi 7. Kompendium programisty, Helion 2003. 4. Grażyński A., Zarzycki Z.: Delphi 7 dla każdego, Helion 2003. 5. Daniluk A.: ABC Delphi 7, Helion 2003. 13