def get_S_qavg_lists(Vs, policy, S): qavg = 0 qlist = [0, 0, 0] # a list for values of the average queue length # in the order of q11, q12, q21 for t in range(1, ITER + 1): lambdaRv_list = ht.arrivalRate(Vs[0], Vs[1], Vs[2], S) # a list for random variables of the arrival rate, normal distr # in the order of lambda11_norm, lambda12_norm, lambda21_norm qlist = ht.updateQ( qlist[0], qlist[1], qlist[2], lambdaRv_list[0], lambdaRv_list[1], lambdaRv_list[2]) # Update arrivals on queue lengths in qlist if policy == "MaxWt": qlist = ht.MaxWt(qlist[0], qlist[1], qlist[2]) elif policy == "PriE": qlist = ht.PriE(qlist[0], qlist[1], qlist[2]) elif policy == "Algo_2": qlist = ht.Algo_2(qlist[0], qlist[1], qlist[2]) elif policy == "Algo_3": qlist = ht.Algo_3(qlist[0], qlist[1], qlist[2]) # Update qlist if t > ITER / 10: tau = t - ITER / 10 qavg = ht.updateQavg(qlist, qavg, tau) # Update the total average queue length return [S, qavg] # Return S and its corresponding average queue length
def get_Plot_lists(Vs, policy, S): plotlistx = [] plotlisty = [] plotlistz = [] qlist = [0, 0, 0, 0] # a list for values of the average queue length # in the order of q11, q12, q21 for t in range(1, ITER + 1): lambdaRv_list = ht.arrivalRate(Vs[0], Vs[1], Vs[2], Vs[3], S) # a list for random variables of the arrival rate, normal distr # in the order of lambda11_norm, lambda12_norm, lambda21_norm if policy == "MaxWt": qlist = ht.MaxWt(qlist[0], qlist[1], qlist[2], qlist[3], lambdaRv_list[0], lambdaRv_list[1], lambdaRv_list[2], lambdaRv_list[3]) elif policy == "Pri_E": qlist = ht.Pri_E(qlist[0], qlist[1], qlist[2], qlist[3], lambdaRv_list[0], lambdaRv_list[1], lambdaRv_list[2], lambdaRv_list[3]) elif policy == "MaxSize_PriMaxWt": qlist = ht.MaxSize_PriMaxWt(qlist[0], qlist[1], qlist[2], qlist[3], lambdaRv_list[0], lambdaRv_list[1], lambdaRv_list[2], lambdaRv_list[3]) elif policy == "MaxSize_PriMaxWtLog": qlist = ht.MaxSize_PriMaxWtLog(qlist[0], qlist[1], qlist[2], qlist[3], lambdaRv_list[0], lambdaRv_list[1], lambdaRv_list[2], lambdaRv_list[3]) elif policy == "Algo_2": qlist = ht.Algo_2(qlist[0], qlist[1], qlist[2], qlist[3], lambdaRv_list[0], lambdaRv_list[1], lambdaRv_list[2], lambdaRv_list[3]) elif policy == "Algo_3": qlist = ht.Algo_3(qlist[0], qlist[1], qlist[2], qlist[3], lambdaRv_list[0], lambdaRv_list[1], lambdaRv_list[2], lambdaRv_list[3]) # Update qlist if t > ITER*6/10: #Throwing away the first 60% #tau = t-ITER*6/10 #qavg = ht.updateQavg(qlist, qavg, tau) # Update the total average queue length #epsilon_times_qavg = (1 - S) * qavg # epsilon = (1 - S) plotlistx.append(qlist[0]) plotlisty.append(qlist[2]) plotlistz.append(qlist[3]) return [policy, plotlistx, plotlisty, plotlistz] # Return S and its corresponding average queue length