如何在 OMNeT++ 中创建随机连接图?

2024-02-06

我正在尝试创建一个具有随机连接节点的图。 节点应该随机连接,如果一个节点已经连接到另一个节点,则不应使用不同的连接再次连接到同一节点inout port.

在文档中 https://doc.omnetpp.org/omnetpp/manual/#sec:ned-lang:random-graph-example有一个创建随机图的示例:

module RandomGraph {
    parameters:
        int count;
        double connectedness; // 0.0<x<1.0
    submodules:
        node[count]: Node {
            gates:
                in[count];
                out[count];
        }
    connections allowunconnected:
        for i=0..count-1, for j=0..count-1 {
            node[i].out[j] --> node[j].in[i]
                if i!=j && uniform(0,1)<connectedness;
        }
}

但这种方法可能会使用不同的端口多次连接相同的两个节点,这不是我想要的。

从上面的截图可以看出node1连接到node6通过两个不同的端口。

我不希望出现这种行为,因为在我的代码中,我使用 for 循环向所有输出端口发送消息,然后将相同的消息发送到同一节点两次。

我可以尝试消除到同一节点的多个连接initialize()我想,我只是在创建这篇文章时想到了它。我还没有尝试过,但我会并且会分享结果。 我也想听听您的解决方案。


您使用的示例应该在手册中进行更正。内部 for 循环必须从外部循环中索引的当前值开始。此外,运营商++应该用于门,因为根据 OMNeT++ 手册:

gatewayname++ 表示法导致使用第一个未连接的门索引。

谢谢++无需维护要连接的门的索引。
最后的改变:当条件满足时,输入门和输出门都应该连接。
您的 NED 的更正代码可能如下所示:

module RandomGraph
{
    parameters:
        int count;
        double connectedness; // 0.0<x<1.0
    submodules:
        node[count]: Node {
            gates:
                in[count];
                out[count];
        }
    connections allowunconnected:
        for i=0..count-1, for j=i..count-1, if i!=j && uniform(0,1)<connectedness {
            node[i].out++ --> node[j].in++;
            node[i].in++ <-- node[j].out++;
        }
}

EDIT
有关@Rudi建议的简化代码:

module RandomGraph
{
    parameters:
        int count;
        double connectedness; // 0.0<x<1.0
    submodules:
        node[count]: Node {
            gates:
                in[];  // removed the size of gate
                out[];
        }
    connections allowunconnected:
       for i=0..count-2, for j=i+1..count-1, if uniform(0,1)<connectedness {
            node[i].out++ --> node[j].in++;
            node[i].in++ <-- node[j].out++;
        }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 OMNeT++ 中创建随机连接图? 的相关文章

  • tictoc例子理解 16-18

    tictoc16 18 tictoc 16 全局信号signal tictoc 17 在仿真界面幕布上显示总条数信息 tictoc 18 tictoc 16 全局信号signal 前一步的主要问题是 如果我们想要更改所收集的统计信息 就必须
  • 静脉中的行人模拟 (omnet++/sumo)

    我正在尝试在 omnet 中运行相扑行人模拟 为了保持简单 我是初学者 我决定使用Erlangen示例提供了静脉并用几个行人扩展它 我添加了相扑中的行人并运行它 它工作得很好 你可以看到这张照片中的行人和汽车 接下来我尝试在 omnet 中
  • 将静脉坐标转换为 GPS

    我正在使用从以下位置导入的真实街道网络打开街道地图用于静脉模拟 例如卢森堡情景来自拉拉 科德卡 现在 为了准备可视化 使用 Google Earth 我想将模拟中的车辆位置从 SUMO 或 OmNET 坐标导出到 GPS 坐标 作为材料 我
  • OMNET++:如何获取无线信号功率?

    我正在使用新发布的 OMNET 的 INET 4 0 框架 我想获取无线主机 AdhocHost 类型 中接收到的信号强度值 我该怎么做呢 In INET4 0 0 模块收到的数据包包含几个tags 其他人之间有SignalPowerInd
  • 如何从 Veins Car2X 模拟器中的 TraCIDemoRSU11p 访问 TraCI 命令界面?

    我想从 Veins Source for OMNet 中 RSU 模型的应用层访问 TraCI 的命令接口 但我找不到这样的 谁能帮我这样做吗 请注意 对于 RSU 节点 我没有将 TraciMobility 作为父模块 它只有 BaseM
  • omn​​et++/veins:连接inet和veins:TraCIScenarioManagerLaunchd中的TraCIMobility错误

    我正在尝试连接 inet 3 4 0 和静脉 4 4 以获得 Tcp Ip 支持 我已按照这些说明进行操作 静脉 INET 兼容性 甚至更多 但我在尝试运行模拟时遇到此错误 我不确定是否理解 TraCIMobility 函数 Error i
  • 在运行时更改一组特定车辆的传输信号强度

    我开始 大约一周以来 在 omnet 5 0 下使用静脉 4 4 我目前的任务是让车辆根据具体情况调整其传输范围 我确实阅读了很多像这样的问题 以及在其他主题 论坛中 ieee802 11p模块中的动态传输范围 车辆接收 RSU 范围外的信
  • 如何将标准容器作为字段添加到 OMNet++ 消息中?

    我正在尝试创建一个简单的消息定义包含一个使用实现的字段std vector 根据OMNet 5 5 手册第 1 章6秒 8 1 这看起来很简单 However I m using OMNet 6 0pre6 I can t figure o
  • 允许 RSU 在 Veins 中接收消息

    我正在尝试在 Veins OMNeT SUMO 上实现一个非常简单的场景 只需三辆车和一个独特的固定 RSU 但我是 Veins 的新手 尽管有大量文档 但我无法很好地移动 常见问题解答和教程我已经读过 我的起点是默认的 TraCI 场景演
  • 静脉中的端到端延迟

    我想计算静脉示例场景中的端到端延迟 我已经阅读了与此主题相关的旧邮件 但它们没有提供问题的真正解决方案 I used getCreationTime and simTime 功能 由此产生的延迟约为1 70 10 4 这种延迟对我来说没有意
  • 是否可以在 omnet++/Veins 项目中使用 RInside 来受益于丰富的 R 功能

    我正在学习 R 并通过这个名为RInside https cran r project org web packages RInside index html它提供了 C 类来调用嵌入式 R 解释器 我可以按照配置后运行一些示例这篇博文 h
  • 如何在 OMNeT++ 仿真过程中更改网络配置?

    我想修改element的一些参数 iniOMNeT 中的文件 例如模拟运行期间节点的传输速率 例如当节点收到一些控制消息时 我发现信息表明可以以某种方式循环配置 如下所示 一些变量 几个值 但是里面没有条件子句 ini文件 并且无法将来自
  • 如何在 OMNeT++ 中创建随机连接图?

    我正在尝试创建一个具有随机连接节点的图 节点应该随机连接 如果一个节点已经连接到另一个节点 则不应使用不同的连接再次连接到同一节点inout port 在文档中 https doc omnetpp org omnetpp manual se
  • 在 omnetpp 中找不到类“simpleModule”

    我正在 omnet 中编写自己的简单模块 在 omnet IDE 中 我创建了三个简单的模块 之后我使用这些模块创建了一个 网络 它正在成功构建 但是每当我尝试模拟它时它都会显示 网络期间模块 cModule NetworkTopology
  • 使用 SUMO 场景的子集进行 OMNeT++ 网络模拟(使用 VEINS)

    我正在尝试使用 OMNeT Veins 和 SUMO 评估在车载网络上运行的应用程序 因为该应用程序依赖于现实的流量行为 所以我决定使用LuST场景 https github com lcodeca LuSTScenario 这似乎是此类数
  • OMNET++:在命令行中运行模拟

    在我的 omnetpp ini 文件中 有以下几行描述 cmdenv General cmdenv express mode false cmdenv output file log txt cmdenv autoflush true cm
  • 尝试使用 INET 引用创建新项目,在 .msg 文件中得到:“unexpected NAME, waiting $end”

    我创建了一个项目 其中包含我的链路层和模拟源代码 该项目以 INET 作为项目参考 在构建时 我收到此错误 错误 语法错误 意外的名称 期望 end 它来自消息文件 包含消息类型 import inet common INETDefs 我的
  • 如何在omnet++ Veins中实现RSU到RSU通信?

    我正在尝试在 Veins 中实现 RSU 到 RSU 的通信 为此 我在 RSU 模块 RSU ned 文件 中添加了一个输入输出门 module RSU parameters string applType type of the app
  • 有没有办法将多个 TraCI 模块连接到 OMNet++/veins 模拟?

    要启动任何静脉模拟 需要使用 Veins launchd 守护进程 它基本上采用 sumo 配置文件 找到未使用的端口 启动 sumo 并桥接 sumo 和 OMNet 之间的连接 现在 由于这是基于套接字的通信 我想连接一个单独的 Tra
  • 关于 VEINS 中的车辆编号

    我使用 duarouter 修改了 erlagen rou xml 来获取车辆的随机路线 它看起来像这样

随机推荐