2

3 つのリスト (コンテナ*) があり、一度に 1 つの (最初の) 要素をポップする必要があります。どのリストが要素をポップするかは、値 (tF*) によって異なります。最小値が最初に送信されますが、値が等しい場合は、リストの名前のアルファベット順になります (container1 が最初に送信されます)。送信は、要素が含まれているものです。また、tF* は要素ごとに計算されるため、2 つの要素 "1" がある場合、最初に 1 つがポップされ、次のラウンド ("2" が到着したとき) でもう 1 つがポップされます。
実際、ルーターがより多くのフローを受信したときに使用する公平なキューイングのシミュレーションです...私はそのポッピング(送信)部分を理解できません。助けていただければ幸いです。
ここに私がこれまでに得たコードがあります(python)

flow1 = [1,2,4,6]
flow2 = [2,6]
flow3 = [1,2,3,5,6]

container1 = []
container2 = []
container3 = []

t = 1
tA=1
tF1 = 0
tF2 = 0
tF3 = 0
counter_tA = 0

while flow1[0] or flow2[0] or flow3[0] or container1[0] or container2[0] or container3[0]:
#from flow to the container                                                                                                                                                            
    if flow1[0] == t:
        container1.append(flow1.pop(0))
        tF1 = max(tF1, tA)+1
        counter_tA += 1
    if flow2[0] == t:
        container2.append(flow2.pop(0))
        tF2 = max(tF2, tA)+1
        counter_tA += 1
    if flow3[0] == t:
        container3.append(flow3.pop(0))
        tF3 = max(tF3, tA)+1
        counter_tA += 1

#sending                                                                                                                                                                  
    send = min(tF1, min(tF2, tF3))

    if tF1 == tF2 == tF3:
        container1.pop()
    if tF1 == (tF2 or tF3):


    tA = tA + 1/counter_tA
    counter_tA =0
   t+=1
4

0 に答える 0