👷 Smart Factory

Vytvořte aplikaci pro virtuální simulaci inteligentní továrny, kde simulujeme chod výroby - na výrobních linkách s pomocí strojů a lidí vyrábíme produkty. Používáme jednotlivé stroje a vyhodnocujeme jejich využití, spotřebu a kvalitu výsledných výrobků. Součástí výrobního procesu jsou nejen stroje a lidé, ale i kolaborativní roboty. Základní časová jednotka je jeden takt (trvá jednu hodinu). Stavy továrny se mění (a vyhodnocují) po těchto taktech.

Součástí aplikace je i předpřipravená konfigurace továrny, na které jsou ukázány implementované požadavky.

⚙️ Funkční požadavky

Povinné

  1. Hlavní entity: továrna, výrobní linka (s prioritou), stroj, člověk, výrobek, materiál a další. Stroje, lidé i výrobky mohou být různých druhů.
  2. Výrobní linka je tvořena posloupností strojů a lidí. Přetváří vstupní materiál(y) na výstupní (jiný materiál nebo hotový produkt).
  3. Stroje a roboti mají spotřebu; lidé, roboti, stroje i materiál představují náklady.
  4. Komunikace mezi stroji, roboty a lidmi probíhá pomocí událostí (eventů). Událost může obdržet 1 až N entit (člověk, stroj, robot), které jsou na daný typ události zaregistrované. Události je potřeba odbavit.
  5. Zařízení mají API pro sběr dat: spotřeba elektřiny, oleje, materiálu a funkčnost (opotřebení roste s časem).
  6. Stroje a roboty se po určité době porouchají. Po poruše vygenerují událost (alert) s prioritou podle důležitosti linky, kterou odbaví opravář.
  7. Opravářů je omezený počet. Oprava trvá několik taktů. Při zahájení a ukončení opravy je generována událost. Pokud nejsou opraváři dostupní, čeká se. Po uvolnění opravář nastupuje na nejprioritnější nebo nejstarší defekt.
  8. Návštěva ředitele a inspektora: ředitel prochází továrnou podle stromové hierarchie entit, inspektor podle míry opotřebení. Oba mají definované akce, které provedou s daným typem entity. Sekvenci a názvy provedených akcí zapisujte do logu.
  9. Reporty za libovolné časové období:
    • FactoryConfigurationReport obsahuje veškerá konfigurační data továrny v hierarchii.
    • EventReport obsahuje události podle typu, zdroje a odbavení.
    • ConsumptionReport udává spotřeba zařízení a robotů, včetně finančního vyčíslení, sumární spotřeby za linku/továrnu.
    • OutagesReport vypíše nejdelší, nejkratší a průměrnou doba výpadku, průměrnou dobu čekání na opraváře.
  10. Pro prezentaci aplikace je předpřipravena jedna vzorová konfigurace továrny, která obsahuje minimálně:
    • 2 výrobní linky; každá obsahuje alespoň čtyři stroje/lidi
    • 6 materiálů, se kterými továrna pracuje
    • 2 finální produkty (výstupy výrobních linek)
    • jednoho opraváře, ředitele a inspektora

Bonusové

  1. Vraťte stavy strojů v zadaném taktu (jiném než posledním). Stav zrekonstruujte z počátečního stavu a sekvence událostí, které byly na stroji provedeny.
  2. Produkty se vyrábějí v sériích po několika stech kusech. Při změně série nekompatibilních výrobků je nutné výrobní linky přeskládat. Každý výrobek má definovanou sekvenci zařízení, robotů a lidí, které je potřeba uspořádat na linku.
  3. Výsledná aplikace pracuje i se ziskovostí produkce:
    • Materiály mají fixní cenu, stroje spotřebovávají el. energii a lidé dostávají za práci zaplaceno.
    • Stroje vyžadují počáteční investici (nákup), ale dlouhodobě jsou efektivnější než lidé.
    • Výsledné produkty se prodávají za fixní cenu.

📐 Nefunkční požadavky

  1. Není požadována autentizace ani autorizace.
  2. Aplikace může běžet pouze v jedné JVM.
  3. Metody a proměnné, které nemají být dostupné ostatním třídám, mají být dobře skryté. Vygenerovaný Javadoc by měl obsahovat co nejméně public metod a proměnných.
  4. Reporty jsou generovány do textového souboru.
  5. Konfigurace továrny může být nahrávána přímo z třídy nebo externího souboru (preferován je JSON).

🧩 Vhodné design patterny

  • State machine
  • Iterator
  • Factory / Factory method
  • Decorator
  • Singleton
  • Visitor
  • Observer
  • Chain of Responsibility
  • Partially persistent data structure
  • Object Pool
  • Lazy Initialization
  • Monáda (2 body místo jednoho za implementaci vlastní monády)
  • Streamy

📚 Doporučená literatura

  • Design ve formě use case diagramů, class diagramů a stručného popisu realizace úlohy.
  • Veřejné API – Javadoc pro funkce, kterými uživatel pracuje se softwarem.
  • Dvě různé konfigurace továrny, alespoň 30 entit.
courses/b6b36omo/sem/smart_factory.txt · Last modified: 2025/09/20 21:01 by jarymiro