Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Obliczenie czasu pracy przy kilku projektach jednocześnie.
grzecho83
post 5.06.2020, 12:32:07
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 31.10.2011

Ostrzeżenie: (0%)
-----


Witam, nie wiem czy dobry dział ale nie znalazłem niczego stricte pod algorytmy.
Zrobiłem system do zarządzania produkcją który między innymi oblicza czas pracy poszczególnych podzespołów produktu. Kiedy operator maszyny pobiera konkretne zlecenie w bazie danych zapisuję czas start, kiedy kończy zapisuje czas stop. I w bazie na tej podstawie jest zapisywany czas pracy, który jest sumowany z wszystkich procesów każdego podzespołu produktu.
Przy laserze zaczynają się schody. Na tym stanowisku operator pobiera często po kilka, kilkanaście zleceń, układa wszystko na arkuszu i wycina. Gdyby wszystkie pobierał razem, i kończył razem to dało by się łatwo policzyć. Niestety praca wygląda mniej więcej tak:
Pobieram zlecenie A -1000 szt - 8:00
Pobieram zlecenie B -120 szt - 8:00
Pobieram zlecenie C -500 szt - 10:00
Kończę zlecenie B - 11:00
Pobieram zlecenie D - 10 szt - 12:00
Kończę zlecenie A,C,D - 14:00
(w dużym uproszczeniu)
Czy są macie pomysł na algorytmy, które policzyły by mniej więcej ile czasu zostało poświęcone na konkretne zlecenie? Dokładnie się nie da, ale chodzi tu o oszacowanie obciążenia maszyny przy przyjmowaniu kolejnych zleceń.
Go to the top of the page
+Quote Post
Pyton_000
post 5.06.2020, 15:20:13
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Skoro pobiera A to zapisujesz dane dla A, Jeśli w tym samym czasie weźmie kolejne to znowu wpisujesz coś dla B. Jeśli kończy B to znowu coś wpisujesz do B.

Jakie ma znaczenie czy weźmie 1 czy 10? Żadne. Bierzesz każde zadanie i liczysz ile czasu zajęło.
Go to the top of the page
+Quote Post
grzecho83
post 5.06.2020, 15:34:47
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 31.10.2011

Ostrzeżenie: (0%)
-----


w powyższym przykładzie czas pracy wygląda tak:
zadanie A - 6 godzin
zadanie B - 3 godziny
zadanie C - 4 godziny
zadanie D - 2 godziny

w sumie 15 godzin, biorąc pod uwagę że operator lasera pracował od 8 do 14 to zwykłe sumowanie nie jest rzetelne. Jeśli handlowiec zleci ponownie zadanie podobne do zadania A to chciałbym wiedzieć ile czasu zarezerwować na maszynę.
Go to the top of the page
+Quote Post
Pyton_000
post 5.06.2020, 15:39:38
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Per zadanie to przecież nie problem. Bo patrzysz ile zadanie A trwało i tyle.
Jeśli chodzi o całość to bierzesz najdłuższe zadanie i masz obłożenie maszyny. Kwestia co aktualnie potrzebujesz.

Chyba że dalej nie rozumiem czego potrezbujesz smile.gif
Go to the top of the page
+Quote Post
trueblue
post 5.06.2020, 15:45:49
Post #5





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Nie wiadomo jak realnie pracę wykonuje pracownik.
Bo gdyby w przypadku kiedy pojawia się inne zlecenie, poprzednie odkładał na bok, to z tego wynika, że zlecenia A w ogóle nie miał czasu wykonać, bo kiedy zabrał się za nie, to wpadło B, nad B pracował od 8:00 do 10:00, bo o 10:00 wpadło C, które wykonywał do 14:00. Niby są podane czasy zakończeń, ale trochę tak to wygląda.

Możesz podejść, tak, że czasookres, który przypada na zlecenie, dzielić przez tyle i ile zleceń jest w danym momencie. Czyli założenie takie, że jeśli od 10:00 do 11:00 wykonywał 2 zlecenia, to na każde poświęcił 30 minut, a jeśli trzy, to 20 minut. Wtedy średnie czasy możesz sumować.


--------------------
Go to the top of the page
+Quote Post
grzecho83
post 5.06.2020, 16:22:05
Post #6





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 31.10.2011

Ostrzeżenie: (0%)
-----


Cytat(trueblue @ 5.06.2020, 16:45:49 ) *
Możesz podejść, tak, że czasookres, który przypada na zlecenie, dzielić przez tyle i ile zleceń jest w danym momencie. Czyli założenie takie, że jeśli od 10:00 do 11:00 wykonywał 2 zlecenia, to na każde poświęcił 30 minut, a jeśli trzy, to 20 minut. Wtedy średnie czasy możesz sumować.

Tak właśnie myślałem żeby to zrobić. Na wszystkich pozostałych stanowiskach jest tak jak pisałeś, przychodzi zlecenie C wtedy operator odkłada zlecenie A, czas jest zapisywany w bazie podczas odłożenia a potem może znowu je pobrać i licznik pracuje na nowo. To się sprawdza gdy pracownik nie pracuje jednocześnie przy kilku zleceniach. Tu przy laserze jest inaczej. Bo pracownik przygotowuje program pod wszystkie zlecenia jednocześnie. Kiedy puści laser wszystkie są cięte jednocześnie. Jeśli w między czasie dojdzie coś pilnego to nie zawsze przerywa pracę. Podczas pracy lasera przygotowuje program na zadanie D ale licznik z poprzednimi dalej leci.

Myślałem żeby wszystkie pola czas_start i czas_stop z danego dnia wrzucić do jednej tabeli.
[czas][stop/start][id_procesu] - z grubsza taki format
posortować według kolumny [czas] a potem za pomocą pętli przelecieć po całej tabeli. Jeśli mamy czas start to licznik zleceń zwiększamy o 1, jeśli stop to zmniejszamy. W każdej iteracji do aktualnych zleceń dodajemy okres między czasami podzielony przez ilość zleceń.

@Pyton_000 - chyba nie do końca rozumiesz mój problem, może piszę nieprecyzyjnie, ale serio, do zwykłego dodawania nie potrzebuję pomocy.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.04.2024 - 03:17