Brief
There was a mistake in the previous spec in which we modified duration calculations. The effective time cunsuption term was not well defined.
The current algorithms that calculates effective time consuption should only by used now for internal calculations of operations start and stop dates.
We remove this value from the GUI and reports of calculations and replace it with other better defined values.
We should also review and correct out algorithms.
Mockup - in order
Mockup - standalone calculator
Algorithms
Operations labor and machine work time
Abstract operations work time = Cycle time * Numer of cycles needed in order + if
- if include setup time then
- + Setup time * Number of workstations
- if include additional time them:
- + Additional time * Number of workstations
Operations machine work time = Abstract operations work time * Machine utilization
Operations labor work time = Abstract operations work time * Labor utilization
Order machine work time = SUM(Operations machine work time)
Order labor work time = SUM(Operations labor work time)
Same algorithm should be used in:
- cost calculations
- planned values in production balance
The Abstract operations work time is a very abstract value and should not be show to the user in any scenario. Only the machine work time and labor work time make perfect sense for the user.
Operation dates - calculated from orders start dane
Operations start date = if
- has no children operations then
- Operations start date = Order start date
- else
- Operations start date = MAX(Next operation blocked to date calculated for children operations)
Operations duration time without nonworking time = Setup time + Additional time + if
- not Divisible cycle time then
- + Cycle time * roundUp(Numer of cycles needed in order / Number of workstations)
- else
- + Cycle time * (Numer of cycles needed in order / Number of workstations)
Operations duration time = Operations duration time without nonworking time distributed across working time of shifts
Operations end date = Operations start date + Operations duration time
Next operations after block date = if
- Next operation after type == Produced all, then
- = Operations end date
- = Operations end date
- Next operation after type == Produced specified quantity, then
- = Operations start date + Next operations block duration
Next operation after cycles = if
- Next operation after produced quantity <= quantity of the operations main output product required in order
- = required number of cycles to produce Next operation after produced quantity
- else
- = required number of cycles to produce quantity of the operations main output product required in order
Next operation block duration without nonworking time = Operations start date + Setup time + if
- not Divisible cycle time then
- + Cycle time * roundUp(Next operation after cycles / Number of workstations)
- else then
- + Cycle time * (Next operation after cycles / Number of workstations)
Next operation block duration = Next operation block duration without nonworking time distributed across working time of shifts
Order calculated end date = Operations end date of root operation
Operations duration distribution - from a given start date
Any type of duration time without nonworking time is independent from the time axis and does not take into account the the company is forking or not.
Only the duration time that takes this information into account is dependant from the operations starting date and the time axis context which indicated when the company is working or not.
Input data:
- Operations start date
- Operations duration time - or the Next operation block duration
- Operations end date - or the Next operations after block date