One thing that is immediately noticeable in the above simulations is that even after the project is over there are lots of people still assigned to it. While some amount of wind-down and cleanup makes sense, it is likely to occur quite quickly. This suggests that it is appropriate to have different time constants for the acquisition and dismissal of personnel.
The second thing that warrants consideration is the preparedness of people to do work on the project. We have assumed that every person brought on is immediately productive. While the people being brought on to the project are assumed skilled, they will require some time to be briefed and brought up to speed on their responsibilities.
The workforce is now broken out into two components. People who are hired come into the New Workforce pool and after sufficient briefing become veterans. Only veterans are actually contributing to workflow, so there is a significant burden to having too many new people. In computing requirement, on the other hand, it is total workforce against which a comparison to requirements is being made.
While hires flow only into New Workforce, dismissals are drawn proportionally from both New Workforce and Veteran Workforce. dismissal time is also set to be significantly shorter than time to increase workforce.
The new and changed equations are:
briefing completions = New Workforce/briefing time
Units: Person/Month
briefing time = 2
Units: Month
dismissal time = 0.5
Units: Month
dismissals = IF THEN ELSE(required workforce < total workforce,
(total workforce - required workforce)/dismissal time,0)
Units: Person/Month
hires = IF THEN ELSE(required workforce > total workforce,
(required workforce-total workforce)/time to increase workforce,0)
Units: Person/Month
New Workforce = INTEG(
hires-briefing completions-dismissals * ZIDZ(New Workforce,total workforce),
0)
Units: Person
Note the use of ZIDZ to prevent from dividing by zero when total workforce is zero.
time to increase workforce = 2
Units: Month
total workforce = New Workforce + Veteran Workforce
Units: Person
Veteran Workforce = INTEG(
briefing completions - dismissals * ZIDZ(Veteran Workforce,total workforce),
0)
Units: Person
And this results in the behavior:
The big things to notice here are the divergence of work flow from total work force, and the larger number of people eventually needed.