7.2.2022
V posledních měsících dosti intenzivně pracujeme na software pro trasování výroby. Ke každému výrobku se evidují všechny komponenty, ze kterých byl výrobek poskládaný, komu prošel výrobek rukama, na které výrobní lince, kdy to bylo, kam byly zabudované komponenty ze stejné výrobní šarže a jak dlouho který výrobní krok trval.
Právě informace o délce trvání jednotlivých výrobních kroků se využívá i v dalších navázaných systémech. Informace „kdo—co—jak rychle“ vypadá nechutně, ale v reálu by neměla sloužit k buzerování zaměstanců. Lidé jsou různí a každému jde něco jiného. Důležitá je však tato informace pro plánovací software. Díky podrobným informacím z historie lze alokovat výrobní zdroje co nejefektivněji a poskytnout zákazníkům poměrně přesnou informaci o dokončení zakázky.
Z praxe je vypozorováno, že doba pro dokončení jednoho pracovního kroku se v čase mění. Při zahájení výroby bývají časy delší, ale postupem doby se zkracují. Ze začátku více, později méně. Velmi hrubě můžeme takový průběh vyjádřit exponenciální rovnicí:
Rovnice není v tento okamžik až tak důležitá, i když by ji bylo možné využít později i k předpovědím (jak rychle dokáže pracovat operátor příští měsíc?) Použitá byla pro vygenerování ukázkových dat. Data sahají půl roku dozadu, jejich obecný průběh se řídí výše uvedenou rovnicí a data jsou kolem funkčního průběhu rozložena normálně. Data jsme vyrobili v tabulkovém kalkulátoru LibreOffice.
Ve skutečnosti nebývají data tak krásná. Občas se někdo zapomene a ukončí výrobní operaci až po několika hodinách. Uměle jsme proto v datech vyrobili několik takových údajů na začátku. Pozor! Porouchaná data jsou od hlavního průběhu mnohem dál, než by se z grafu zdálo. Osa Y je totiž logaritmická:
No a tady začíná problém, protože první myšlenka „do plánovacího software pošleme průměr“ se setká s neúspěchem. Aritmetický průměr je totiž velmi citlivý na hodnoty, které se od obvyklých hodnot silně odlišují. Kumulovaný časový průběh aritmetického průměru pak vypadá jako na obrázku níže. Pro reálné plánování jsou takové údaje nepoužitelné:
Ideálním řešením v takovém případě může být medián nebo nejčastější hodnota (mode). Stejně tak je možné hodnoty pro výpočet průměru přefiltrovat, vyloučit z výpočtu extrémní hodnoty. Ty lze detekovat všelijak. Zde je použitá metoda 1,5 IQR – zahazujeme vše, co je mimo rozmezí 1,5 IQR.
Odkazy
V rozsahu označeném světlou modrou plochou se vyskytuje polovina všech hodnot. Většina hodnot by se měla pohybovat právě v okolí modré plochy, největší hustota je v modré ploše samotné.
Použití metody 1,5 IQR může být drobným problémem při filtraci přímo v databázi. Pro hledání kvartilů v databázi PostgreSQL používáme fukci percentile_cont(). V prvním kroku určíme pomocí této funkce statistické rozložení dat a teprve v druhém kroku data filtrujeme. Data se tak prochází dvakrát, což trochu zdržuje. Stejnou či podobnou službu přitom poskytne i medián nebo mode (nejčastější hodnota), jejich výpočet je však rychlejší.
Odkazy