packages = ["numpy", "matplotlib"]

rayleigh_staffing

Product 1
Effort Schedule
target = "sim_output" def rayleigh_staffing(effort, schedule, start): import math dt = .1 threshold = .97 time = 0 cum_effort = 0 work_gap = effort buildup_parameter = -2.0*math.log(1.0-threshold) / (schedule*schedule) #print('Buildup Parameter = '+f'{buildup_parameter}') pyscript.write(target, 'Buildup Parameter = '+f'{buildup_parameter}', append=False) time_points = [] effort_rate_output = [] while time <= start + schedule: #time < end_time developed_software[time] < requirements[0] work_gap > .01 if time == 0: #auxiliaries learning = buildup_parameter * time work_gap = effort-cum_effort #rates effort_rate = learning * work_gap else: # level integration cum_effort = cum_effort + dt * effort_rate #auxiliaries learning = buildup_parameter * time work_gap = effort-cum_effort #rates effort_rate = learning * work_gap time_points += [time + start] effort_rate_output += [effort_rate] #print(time, effort_rate) time += dt return time_points, effort_rate_output def sim(): import math import matplotlib.pyplot as plot import matplotlib as mpl mpl.rcParams['axes.spines.top'] = False mpl.rcParams['axes.spines.right'] = False # initialize values dt = .25 people_added_pulse = 2. threshold_min = .95 threshold_max = .99 # constants buildup_parameter = .2 # level initializations # simulation inputs effort = int(Element('effort').element.value) schedule = int(Element('schedule').element.value) time_points1, effort_rate_output1 = rayleigh_staffing(effort, schedule, 0) time_points2, effort_rate_output2 = rayleigh_staffing(30, 20, 6) # staffing plot fig, axis = plot.subplots() axis.plot(time_points1, effort_rate_output1, label="") axis.plot(time_points2, effort_rate_output2, label="2") axis.set(xlabel="Month", ylabel="Staff") #axis.legend() #plot.show() pyscript.write(target, fig, append=True) sim() def on_click(event): sim()