Cel i zakres pracy dyplomowej

Cel projektu

Aby wyjaśnić cel pracy dyplomowej, trzeba najpierw wyjaśnić cel całego projektu.

Głównym celem projektu jest stworzenie oprogramowania do symulacji różnych procesów dyskretnych. Warto podkreślić, że nie należy procesów dyskretnych kojarzyć wyłącznie z procesami typowo produkcyjnymi (jak np. tłoczenie karoserii w fabryce samochodów czy montaż telewizorów na linii produkcyjnej). Procesami dyskretnymi są również np. procesy logistyczne (czyli wszelkie dostawy towarów), przyjmowanie pacjentów w szpitalach czy transport ludzi i materiałów w biurowcu za pomocą wind.

Motywacją do rozpoczęcia takiego projektu jest w zasadzie brak odpowiedniego oprogramowania, które spełniałoby następujące wymagania:

  • Łatwy dostęp dla użytkowników.

W tej kategorii mieszczą się dwa inne kryteria: cena i licencja oprogramowania oraz jego wieloplatformowość.

Oczywiste jest, że im większa jest cena oprogramowania i im bardziej restrykcyjna jest licencja, na jakiej to oprogramowanie jest udostępniane użytkownikom, tym mniej użytkowników ma dostęp do tego oprogramowania. Osobiście nigdy nie zetknąłem się z darmowym oprogramowaniem do symulacji procesów dyskretnych. (Pierwsze zadanie dla studentów: poszukać zarówno darmowych, jak i komercyjnych pakietów takiego oprogramowania.) Na tej podstawie stwierdzam, że warto jest rozpocząć pracę nad tym projektem w celu stworzenia takiego oprogramowania. Docelowo powinno być one udostępnione na licencji BSD.

Kolejnym problemem związanym z dostępnością oprogramowania jest wieloplatformowość. Współczesny rynek desktopów jest w ok. 90% opanowany przez różne wersje systemu Windows, w ok. 9% przez różne wersje systemu Mac OS, zaś pozostały 1% stanowią głównie różne wersje systemu Linux (udział innych systemów operacyjnych jest pomijalnie mały). Zdecydowana większość oprogramowania komercyjnego dostępna jest wyłącznie dla systemów Windows. Jednak w dziedzinie oprogramowania specjalistycznego (głównie naukowego i inżynierskiego) firmy komercyjne równie poważnie traktują systemy Mac OS czy Linux (przykładem może być np. Matlab, który jest dostępny pod wszystkimi wspomnianymi systemami). Udział systemów operacyjnych innych niż Windows w środowisku naukowo-inżynierskim jest większy, niż wśród pozostałych grup użytkowników. Dlatego warto jest pomyśleć o wieloplatformowości tworzonego oprogramowania, czyli o dostępności oprogramowania na różnych systemach operacyjnych.

W tym miejscu ponownie musiałbym stwierdzić, że nie jest mi znane żadne oprogramowanie do symulacji procesów dyskretnych, które byłoby dostępne na systemy operacyjne inne, niż Windows. (Kolejne zadanie dla studentów: poszukać takiego oprogramowania. Choćby tylko po to, żeby stwierdzić, że takiego oprogramowania naprawdę nie ma.)

  • Możliwość programowania symulacji w różnych językach programowania.

Programy do symulacji, z którymi się zetknąłem (np. Taylor ED 2000), oferowały możliwość programowania (pisania prostych skryptów wpływających na sposób działania elementów używanych w symulacji) wyłącznie w specjalnym języku skryptowym. Był to zazwyczaj język wykorzystywany wyłącznie w danym programie. Od siebie dodam, że moja opinia o tych językach nie była i nadal nie jest zbyt pochlebna.

Wolałbym mieć możliwość zaprogramowania działania danego elementu symulacji w języku, który jest wykorzystywany do tworzenia normalnego oprogramowania (np. w Javie, w Pythonie, w Scheme czy w Prologu).

Podstawowym celem projektu byłoby więc stworzenie oprogramowania, dostępnego na licencji BSD, działającego pod wieloma różnymi systemami operacyjnymi. Oprogramowanie to powinno umożliwiać użytkownikowi:

  • tworzenie modeli różnych procesów biznesowych
  • symulację stworzonych modeli
  • tworzenie bibliotek elementów symulowanych
  • oprogramowywanie elementów symulowanych w różnych językach programowania

Cel pierwszych prac dyplomowych

Realizacja postawionych powyżej celów zapewne potrwa lata. Z całą pewnością nie jest to zadanie, które można zrealizować w ramach jednej pracy dyplomowej. Dlatego też cele pierwszych prac dyplomowych będą inne, znacznie mniej ambitne.

Podstawowym celem tych prac będzie wykonanie pierwszego kroku do zrealizowania celu nadrzędnego. Najważniejsza w chwili obecnej wydaje się być kwestia wyboru odpowiedniej technologii, która zostanie wykorzystana do zrealizowania całego projektu. Koszt zmiany technologii po zrealizowaniu części prac dyplomowych byłby ogromny, więc należy się dobrze zastanowić przed dokonaniem wyboru. Lista możliwości jest opisana na innej stronie.

Prace dyplomowe wykonywane w ramach projektu mogą mieć szerszy lub węższy zakes. Dzięki temu mogą to być bardziej lub mniej ambitne prace. Dlatego w dalszej części określone zostaną minimalne cele pierwszych prac, ze wskazaniem na ewentualne dalsze kierunki ich rozwoju.

Symulacja procesów biznesowych

Na początku powinno zostać stworzone oprogramowanie, którego zadaniem będzie symulacja prostych procesów biznesowych. Symulowane będą procesy odbywające w ramach realizacji zleceń produkcyjnych w komórkach roboczych, przy czym każda z komórek będzie mogła się składać z wielu połączonych szeregowo stanowisk roboczych. Wszystkie komórki robocze będą tworzyć tzw. system gniazdowy (Job-Shop), podczas gdy maszyny w komórkach będą tworzyć tzw. system przepływowy (Flow-Shop). Zlecenia będą mogły być generowane na bieżąco.

Do sterowania takim systemem roboczym trzeba będzie zaproponować odpowiedni algorytm. Może to być jeden z algorytmów, jakie studenci kierunku "Automatyka i robotyka" poznają w ramach przedmiotu "Zautomatyzowane systemy wytwarzania", choć może to być równie dobrze jakikolwiek inny algorytm. Algorytm będzie jednak niezbędny do przeprowadzenia symulacji i powinien być sprecyzowany w pracy.

Oprogramowanie powinno umożliwiać zaprojektowanie dowolnego systemu produkcyjnego o opisanej strukturze (tzn. składającego się z dowolnej liczby komórek roboczych oraz dowolnej liczby maszyn w każdej z tych komórek).

Powyżej opisany został system produkcyjny. W systemie tym będą wykonywane pewne procesy produkcyjne (biznesowe). Procesy te będą realizowane w formie zleceń (każde zlecenie będzie realizacją danego procesu), składających się z kolei z operacji wykonywanych w danych komórkach roboczych. Proces można więc opisać poprzez określenie operacji, które składają się na proces, przy czym każdej operacji trzeba przypisać określoną komórkę roboczą. Każda operacja natomiast będzie się składała z czynności wykonywanych na poszczególnych maszynach w danej komórce roboczej. Aby w pełni opisać proces, należy podać czas wykonywania każdej z takich czynności. (Sumy czasów tych czynności w danej komórce roboczej będą zarazem czasem wykonywania całej operacji.)

Podczas symulacji takiego systemu użytkownik powinien mieć wgląd w stan każdej komórki roboczej, każdej maszyny, każdego procesu, każdego zlecenia oraz każdej operacji. Symulacja powinna dać się zatrzymać i wznowić ponownie. Powinna być również możliwość wykonywania symulacji krok po kroku.

Użytkownik powinien mieć więc dostęp do dwóch rodzajów "widoków": widoku systemu produkcyjnego oraz widoku procesów produkcyjnych.

Podczas symulacji powinny być prowadzone statystyki dla wszystkich maszyn oraz komórek roboczych. Statystyki te powinny dotyczyć:

  • obciążenia maszyny/komórki w czasie
  • procentowego obciążenia maszyny/komórki w całym czasie trwania symulacji
  • czasu oczekiwania dla poszczególnych czynności procesu produkcyjnego w czasie
  • czasu oczekiwania dla poszczególnych operacji procesu produkcyjnego w czasie
  • procentowego czasu oczekiwania dla poszczególnych operacji w całym czasie trwania symulacji

Statystyki te powinny być dostępne zarówno w formie tabelarycznej, jak i w formie wykresów.

Jako ułatwienie dla użytkownika, procesy oraz zlecenia powinno się dać generować losowo. Podobnie systemy produkcyjne.

Dodatkowe zadania

Pierwszym urozmaiceniem powinno być wprowadzenie rodzajów komórek roboczych oraz związanych z nimi rodzajów operacji. Dla każdej komórki roboczej byłby określony jej typ, z którym byłby związany pewien zbiór typów operacji. W ramach realizacji zlecenia, każda operacja miałaby określony typ i mogłaby być wykonana w dowolnej komórce roboczej potrafiącej wykonywać tego typu operacje. Dzięki temu byłoby łatwiej projektować systemy produkcyjne z tzw. wąskimi gardłami.

Kolejnym urozmaiceniem byłaby możliwość wyboru zastosowanych algorytmów sterowania.