python模拟 截断二进制指数避退

本文介绍了截断二进制指数退避(TBEB)算法的工作原理,通过实验模拟了在不同拥挤程度下数据传输的过程,包括随机等待时间、冲突处理和传输次数限制。代码展示了如何实现该算法并观察其效果。
摘要由CSDN通过智能技术生成

        截断二进制指数退避(Truncated Binary Exponential Back—off,TBEB)算法,原理是让发生碰撞的站点在停止发送后,不是立即再发送数据,而是退避一个随机的时间,降低重传时发生冲突的概率。 

1.实验思路:

        1.退避时间wait_time

从[1,2……,(2^k-1)]随机选择,其中k=min(重传次数,10)。重传推迟所需要的平均时间随重传次数增大(不超过争用期的10倍)也称为动态避让。

        backoff = min(2**attempts,max_backoff)
        wait_time = random.randint(0,backoff)

        2.连续冲突时停止传输

当重传次数达到16次仍不能成功时(打算同时发送的站太多,以至于连续冲突时)停止传输。

         max_attempts = 16

         while attempts < max_attempts:

        3.拥挤程度

        success_rate (bool): 通道拥挤状态,True代表一般拥堵,False代表非常拥堵

        random.choice([True,False,False,False,success_rate,success_rate])

        4.主函数

                1.选择拥挤程度

                2. 执行截断二进制指数退避函数

2.实验代码:

"""
模拟截断二进制指数避让算法的传输过程
success_rate (bool): 通道拥挤状态,True代表一般拥堵,False代表非常拥堵
"""

import random


def truncated_binary_exponential_backoff(success_rate,can_success):
    print("传输开始…")

    attempts = 0
    max_attempts = 16
    max_backoff = 10

    while attempts < max_attempts:
        backoff = min(2**attempts,max_backoff)
        wait_time = random.randint(0,backoff)
        print(f"第{attempts+1}次重传:已等待{wait_time}倍基本争用期")
        transmit_successs = random.choice([can_success,False,False,False,success_rate,success_rate])
        if transmit_successs == True:
            print("传输成功!虽然道路拥堵,但使命必达。")
            break
        else:
            print("发生碰撞,等待下一次传输…")
            attempts += 1

    if attempts >= 16:
        print("传输失败已达到16次,停止传输,正在向上级发送报告…")
        print("上级:这么拥堵你怎么发报告的?")

if __name__ == "__main__":

    print("欢迎来到 —— 截断二进制指数避让模拟")
    choice = input("请选择通道拥堵状态:\n1,一般拥堵\n2,非常拥堵\n3,无法传输\n输入选项编号:")

    success_rate = False
    can_success = True

    if choice == '1':
        success_rate = True
    elif choice == '2':
        success_rate = False
    else:
        can_success = False

    input("(输入任意键开始传输)")
    truncated_binary_exponential_backoff(success_rate,can_success)

3.实验结果:

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值