Aloha算法(二)时隙Aloha算法

时隙Aloha算法通过将时间划分为等间隔的时隙,由阅读器统一校准控制,确保标签在时隙开始时发送标识符,减少了纯Aloha算法中的部分冲突,从而提高了吞吐量。此算法的实施能有效降低碰撞概率,提升通信效率。
摘要由CSDN通过智能技术生成

时隙(Slotted)-Aloha 算法将纯 ALOHA 算法的时间分为若干大小相等的时间间隙,时隙的设定和时隙开始命令由阅读器统一校准控制,每个时隙 ≥ 标签等待接收确认信息的时间长度,而 标签只能在时隙开始时发送标识符,标签要么成功发送,要么完全碰撞,避免了纯 ALOHA 算法中的部分冲突,碰撞周期减半,阅读器的吞吐量翻倍。时隙 Aloha 算法的代码实现 如下

# encoding=utf-8
import random
from CommonAlgrithom import *
from CommonClass import *


def randomTag(tagNums, totalTime, slot):
    """
    :param tagNums: 总标签数量
    :param slot: 时隙长度
    :param totalTime: 规定的总时间
    :return: 生成的标签列表
    """
    tags = []
    for i in range(tagNums):
        tags.append(Tag(i + 1, random.randrange(0, totalTime, slot)))
    tags.sort(key=lambda x: x.sendTime)
    return tags


def slotAloah(tagNums, totalTime, slot, ackTime=1):
    """
    :param tagNums: 总标签数量
    :param totalTime: 规定的总时间
    :param ackTime: 标签发送数据包后,所等待的确认时间
    :param slot: 时隙长度
    :return result: 包含两个数据的数组,分别为成功识别的标签数、碰撞次数
    """
    tags = randomTag(tagNums, totalTime, slot)

    result = [0] * 2  # 成功识别的标签数、碰撞次数
    while len(tags) > 0 and tags[0].sendTime <= totalTime:
        encounterIndex = []
        for j in range(len(tags)):
            if tags[j].sendTime == tags[0].sendTime:  # 发生碰撞
                encounterIndex.append(j)
        if len(encounterIndex) > 1:
            result[1] += 1
            for index in encounterIndex:
                tags[index].sendTime += random.randint(1, totalTime) * slot
            tags.sort(key=lambda x: x.sendTime)
        else:
            print(f"成功识别标签id:{tags[0].id}")
            result[0] += 1
            tags.remove(tags[0])
        encounterIndex.clear()
    return result


tagNums = 1000  # 总标签数量
totalTime = 1000  # 规定的总时间
ack = 1  # 标签发送数据包后,等待确认的时间
slot = 2  # 时隙长度,每个标签都只能在时隙开始时发送数据包
result = slotAloah(tagNums, totalTime, slot, ack)
print(f"标签总数为:{tagNums}  总限时为:{totalTime}  时隙长度为:{slot}")
print(f"成功识别的标签个数为:{result[0]}  碰撞次数为:{result[1]}")

image

(设一个时隙Aloha系统的时隙长度为1,所有节点的数据包均等长且等于时隙长度。网络中节点数为m,各节点数据包以泊松过程到达。1.(1) 假设每个节点的数据包到达强度均为,在不同的下,使用计算机仿真时隙Aloha系统数据包传送的成功概率,绘制呼入强度和成功概率的曲线,与理论结果进行对照。注意:节点数要足够多。2.(1) 假设每个节点的数据包达到强度为,以及节点数,采用延时下届。选取合理的等待重传的节点在每一个时隙重传的概率。仿真时隙Aloha系统数据传输过程,统计在不同积压节点数的情况下,到达率及离开率,统计达到率和离开率随的分布情况,和理论值进行对照。调整大小,考察曲线的变化,和理论值进行对照。3.(1) 假设每个节点的数据包到达强度均为。以及节点数m,采用延时下界。选取合理的等待重传节点在每一个时隙重传的概率。仿真时隙CSMA协议,其中空闲时隙长度。绘制到达率和离开率随n的分布情况,和理论值进行对照,调整大小,考察曲线的变化,和理论值进行对照。4.(1) 在(3)的基础上,进一步引入碰撞检测机制,仿真CSMA/CD协议,其中空闲时隙和碰撞时隙长度均为。绘制到达率和离开率随n分布情况,和理论值进行对照,调整大小,考察曲线的变化,和理论值进行对照。 类似与第三问中的解决方法,分别对取0.06 0.1 0.2 0.6观察对比离开率和到达率随n变化的关系。) 和上个上传资源一样,这个是该实验的第部分,都是自己从网上搜集很多资料整理之后最终呈现的结果。根据课程的更新问题也有所更新,如果有需要参考的就下载这一个就可以啦!有问题随时和我沟通,wink!
设一个时隙 Aloha 系统的时隙长度为 1,所有节点的数据包均等长且等于时隙长度。网络中的节点数为 m,各节点数据包以泊松过程到达。 假设每个节点的数据包到达强度均为λ/m,在不同的λ下,使用计算机仿真时隙 Aloha 系统数据包传送的成功概率,绘制呼入强度和成功概率的曲线,与理论结果进行对照。注意:节点个数 m 要足够多。 假设每个节点的数据包到达强度均为λ/m。以及节点数 m,采用延时的下界。选取合理的等待重传的节点在每一个时隙重传的概率qr 。仿真时隙 Aloha 系统数据传输过程,统计在不同积压节点数 n 的情况下,到达率及离开率P s (n),绘制到达率和离开率随 n 的分布情况,和理论值进行对照。调整qr 大小,考察曲线的变化,和理论值进行对照。 假设每个节点的数据包到达强度均为λ/m。以及节点数 m,采用延时的下界。选取合理的等待重传的节点在每一个时隙重传的概率qr 。仿真时隙 CSMA 协议,其中空闲时隙长度β<1。绘制到达率和离开率随 n 的分布情况,和理论值进行对照。调整β大小,考察曲线的变化,和理论值进行对照。 在(3)基础上,进一步引入碰撞检测机制,仿真 CSMA/CD 协议,其中空闲时隙和碰撞时隙长度均为β<1。绘制到达率和离开率随 n 的分布情况,和理论值进行对照。调整β大小,考察曲线的变化,和理论值进行对照。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值