Projekt zakłada stworzenie systemu do automatycznego zarządzania procesami w fabryce, który został zaimplementowany w języku C++. System automatycznie przydziela unikalne identyfikatory (ID) paczkom i pracownikom, a następnie zarządza przydzielaniem zadań (tasków) poszczególnym pracownikom na podstawie ich dostępności oraz priorytetów. Projekt ma na celu usprawnienie zarządzania przepływem pracy w fabryce, zwiększenie wydajności i minimalizację błędów w przypisywaniu obowiązków.
1. Założenia projektu
System zarządzania miał na celu spełnienie następujących wymagań:
- Automatyczne nadawanie ID paczkom i pracownikom: Każda paczka i każdy pracownik otrzymują unikalny identyfikator, który umożliwia łatwą identyfikację i śledzenie.
- Zarządzanie zadaniami: System automatycznie przydziela zadania pracownikom w oparciu o:
- Ich dostępność (np. wolny/zajęty status).
- Priorytet zadań (np. zadania pilne są wykonywane w pierwszej kolejności).
- Specjalizacje pracowników (np. przypisywanie odpowiednich zadań pracownikom z określonymi kwalifikacjami).
- Elastyczność: System pozwala na dynamiczne dodawanie nowych paczek, pracowników oraz zadań.
- Monitorowanie postępów: Każde zadanie ma swój status (np. „w trakcie”, „zakończone”), co umożliwia śledzenie procesów produkcyjnych.
2. Funkcjonalności systemu
- Generowanie ID
- Każda paczka i każdy pracownik otrzymują unikalny identyfikator generowany automatycznie w momencie ich dodania do systemu.
- Numery ID są zapisywane w strukturze danych (np. w wektorach lub mapach), co pozwala na łatwe wyszukiwanie i zarządzanie.
- Przypisywanie zadań
- Zadania są priorytetyzowane na podstawie ich ważności, terminu realizacji oraz dostępnych zasobów.
- System przypisuje zadania pracownikom na podstawie ich statusu (
wolny
/zajęty
) oraz ich specjalizacji (np. pakowanie, kontrola jakości).
- Obsługa paczek
- Paczki są rejestrowane w systemie z informacjami o ich typie, priorytecie oraz wymaganym procesie przetwarzania.
- Paczki są automatycznie przypisywane do zadań, które muszą zostać wykonane (np. sortowanie, pakowanie, wysyłka).
- Monitorowanie postępów
- Każde zadanie posiada status: „oczekujące”, „w trakcie”, „zakończone”.
- System umożliwia przegląd bieżących zadań i ich statusów w czasie rzeczywistym.
- Elastyczne zarządzanie pracownikami
- Możliwość dodawania nowych pracowników do systemu oraz aktualizowanie ich statusu lub kwalifikacji.
- Pracownicy mogą być przypisywani do wielu zadań jednocześnie, jeśli ich status to umożliwia.
3. Technologie i struktury danych
- Język programowania: C++
- Wykorzystano obiektowe podejście do zarządzania paczkami, pracownikami i zadaniami.
- Klasy reprezentują takie obiekty jak Paczka, Pracownik i Zadanie.
- Struktury danych:
- Wektory (std::vector): Do przechowywania listy pracowników, paczek i zadań.
- Mapy (std::map): Do powiązania ID z odpowiednimi obiektami (np.
map<int, Pracownik>
). - Kolejki priorytetowe (std::priority_queue): Do obsługi zadań z różnymi poziomami priorytetów.
- Multithreading:
- W celu zwiększenia wydajności, zadania mogły być obsługiwane równolegle, co pozwalało na jednoczesną realizację zadań przez różnych pracowników.
- Synchronizację między wątkami zapewniono za pomocą mutexów.
- Pliki:
- Dane dotyczące pracowników, paczek i zadań mogły być zapisywane i odczytywane z plików, co pozwalało na łatwe przechowywanie stanu systemu między uruchomieniami.
4. Przykładowy przepływ działania systemu
- Rejestracja paczek i pracowników:
- System automatycznie dodaje paczki do listy z unikalnym ID oraz parametrami, takimi jak typ paczki i priorytet.
- Nowi pracownicy są dodawani do systemu, a ich specjalizacje oraz dostępność są odpowiednio rejestrowane.
- Przydzielanie zadań:
- Zadania są tworzone na podstawie procesów fabrycznych (np. sortowanie, kontrola jakości).
- Algorytm wybiera wolnego pracownika z odpowiednią specjalizacją i przypisuje mu zadanie.
- Monitorowanie:
- Status każdego zadania jest aktualizowany w czasie rzeczywistym.
- Po zakończeniu zadania pracownik staje się ponownie dostępny do wykonania kolejnego zadania.
- Raportowanie:
- System generuje raporty o wykonanych zadaniach, paczkach, które zostały obsłużone, oraz wydajności pracowników.
5. Wyniki projektu
- Efektywność: System automatycznie zarządzał przydziałem zadań, eliminując konflikty i przestoje.
- Skalowalność: System był w stanie obsłużyć duże ilości paczek, pracowników i zadań dzięki zastosowaniu efektywnych struktur danych.
- Modularność: Projekt był łatwy w rozbudowie, np. dodanie nowych typów zadań czy kryteriów przydzielania pracowników.
6. Możliwości rozwoju
- Interfejs graficzny (GUI): Dodanie wizualnego interfejsu do przeglądania stanu fabryki w czasie rzeczywistym.
- Analiza danych: Wykorzystanie analizy danych do przewidywania wydajności oraz optymalizacji przydzielania zadań.
- Integracja IoT: Połączenie systemu z fizycznymi urządzeniami w fabryce, takimi jak skanery kodów kreskowych czy taśmociągi, w celu pełnej automatyzacji procesów.
- Zastosowanie algorytmów sztucznej inteligencji: Udoskonalenie algorytmu przydzielania zadań poprzez wprowadzenie systemu uczenia maszynowego.
Projekt jest przykładem efektywnego zastosowania programowania obiektowego i algorytmów zarządzania w praktycznym scenariuszu, takim jak automatyzacja zarządzania fabryką. Dzięki zastosowaniu języka C++ system jest szybki, elastyczny i gotowy do wdrożenia w środowisku przemysłowym.