8

我有许多可以通过广播媒体(在本例中为 IR)进行通信的微控制器。每个节点都希望定期向所有其他节点宣布它的存在,但由于它是一种广播媒体,因此同时传输的两个节点会产生冲突,并且两个消息都不会正确传输。

更复杂的是,当节点接收到无效消息时,可靠地确定这是由于碰撞还是由于背景噪声或弱信号似乎并不实际。此外,虽然节点可见性通常是自反的(A 看到 B 意味着 B 可以看到 A),但通常情况下并非所有节点都可以看到所有其他节点。

暂时不考虑外部干扰,似乎一种合理的方法是创建时隙,每个节点在每个时隙中以小的(理想情况下在节点之间相似)概率进行传输。如果有 n 个节点以概率 p 进行传输,则在 (1 - p) n次中不会传输任何消息;在 n * p * (1 - p) n-1次中,只有一条消息将被传输,其余时间将发生冲突。当 n 个节点中的每一个节点传输 1/n 的时间时,成功冲突的发生率最高,这导致相当稳定的 38% 成功传输和 24% 冲突;该值仅随着节点数量的增加而略有变化。

鉴于此,我们似乎可以观察成功传输和/或冲突的速率,并调整我们自己的传输速率以尝试迫使它们接近预期值。我不确定实现这一目标的最佳反馈机制是什么,这样每个人最终都会得到相似的概率。这也没有考虑到外部干扰,这将导致我们不断降低传输速率,以避免不存在的冲突。

什么是最佳算法(上述的改进或完全不同的方法)以最大化每个节点可以在没有冲突的情况下接收的公告消息的比例?

4

1 回答 1

1

你想要的实际上是一个无线网状网络,它本身就是一个完整的研究领域。除此之外,确认消息是一个好主意。如果数据包开销是一个问题,您可以使用公告本身搭载它们。它们允许通过观察有多少邻居应答来区分冲突和背景噪声,并通过等待(大多数)邻居确认每个传输(停止和继续)来允许基本速率限制。如果控制器非常灵活,这当然会变得更加复杂。

在整个网络上保持相同的更新速率将是非常困难的(并且可能是不可取的),因为传输质量在不同的区域和时间点可能会有很大差异。

于 2012-11-21T19:18:39.407 回答