调试分析:[跳数度量]更改为[距离度量]后的 routing_bellmanford 算法

回顾复习2023年8月的《★修改Exata6.2源码:〔修改Bellmanford最短路径路由的衡量标准从【路由跳数】改为【“路由器节点间的物理距离”】,并动画演示〕》,VS2015调试Exata,跟踪调试修改后的[ routing_bellmanford.cpp ]源码,确认修改版的[ routing_bellmanford.cpp ]源码,能够将”跳数度量”更改为”路由器节点之间的物理距离度量”,并根据[发送节点]与[目的节点]之间的距离进行路由:

★[跳数度量]更改为[距离度量]后的 routing_bellmanford 算法←Exata调试分析

修改的距离度量版[routing_bellmanford.cpp]中添加如下源码,用于计算两个路由器节点之间的物理距离(除以1000,得到㎞量纲)

计算两个路由器节点之间的物理距离(除以1000,得到㎞量纲)←修改的距离度量版[routing_bellmanford.cpp]源码 

// C:\Scalable\Exata6.2Source__DEBUG_1\libraries\developer\src\routing_bellmanford.cpp #pragma region // JSLS添加:【步骤③】计算【[发送节点]与[接收节点]之间的物理距离】,用于 更新路由表中的路由距离// 需要用到《 C:\Scalable\Exata6.2Source__DEBUG_1\include\coordinates.h 》的 //          第493行:/*BOOL COORD_CalcDistance(int coordinateSystemType,const Coordinates* position1,const Coordinates* position2,CoordinateType* distance);*/double distanceBetweenTwoNodes;  // 单位:米。后续需要转化为 ㎞ 千米。Coordinates sendNodePosition; // 发送节点 的 坐标位置Coordinates recvNodePosition; // 接收节点 的 坐标位置MOBILITY_ReturnCoordinates(sendNode, &sendNodePosition);MOBILITY_ReturnCoordinates(node, &recvNodePosition);printf("JSLS: sendNodePosition and recvNodePosition have been got! \n");COORD_CalcDistance(NODE_GetTerrainPtr(node)->getCoordinateSystem(),&sendNodePosition,&recvNodePosition,&distanceBetweenTwoNodes);printf("JSLS: The distance from [sendNodePosition] to [recvNodePosition] is %f \n", distanceBetweenTwoNodes);std::cout.flush();  // "stdio.h"// JSLS备注: [COORD_CalcDistance]计算出来的距离单位是 米 。后续作为【路由距离度量】时需要用 千米(㎞)int distance_in_km = 0;distance_in_km = (int)(distanceBetweenTwoNodes / 1000);if (0 == distance_in_km) //假如 两个节点之间距离【不够】 1㎞,设置为 1㎞。{distance_in_km = 1;}if (32767 < distance_in_km) //假如 两个节点之间距离【大于】 32767㎞,★这是 short 类型的 最大正数值★,设置为 -1㎞,表示越界。{distance_in_km = -1;  // JSLS@2023年8月11日:暂且假设 两颗卫星路由器之间距离 小于3.2767万㎞ 。否则,设置为 -1 表示越界。}///// JSLS特别备注:★复用 Node->numAtmInterfaces 字段 ★ →→→ 用于存储[distance_in_km],即【路由距离度量(㎞)】//                  表示 node接收节点 与 【(发送路由公告)的发送节点】之间的【路由距离度量(㎞)】///node->numAtmInterfaces = distance_in_km; // ★复用 Node->numAtmInterfaces 字段 ★ 表示【路由距离度量(㎞)】#pragma endregion // JSLS添加:【步骤③】计算【[发送节点]与[接收节点]之间的物理距离】,用于 更新路由表中的路由距离

调试跟踪修改的距离度量版[routing_bellmanford.cpp]源码,非常容易得到〔trace-bellmanfordExata仿真工程】〕网络拓扑中各路由器节点之间的物理距离,从Exata输出日志另存为打包的《Exata仿真输出日志.txt.zip》文件中,可以提取到【Exata仿真日志:提取节点间距离(除以1000,得到【㎞】单位)】:

Exata仿真日志:提取节点间距离(除以1000,得到【㎞】单位)

JSLS: sendNodeID = 1 recvNodeID = 2 
JSLS: sendNode = 0x577f5a60 
JSLS: sendNodePosition and recvNodePosition have been got! 
JSLS: The distance from [sendNodePosition] to [recvNodePosition] is 58069.056091 JSLS: sendNodeID = 2 recvNodeID = 3 
JSLS: sendNode = 0x5791b850 
JSLS: sendNodePosition and recvNodePosition have been got! 
JSLS: The distance from [sendNodePosition] to [recvNodePosition] is 23872.837327 JSLS: sendNodeID = 2 recvNodeID = 5 
JSLS: sendNode = 0x5791b850 
JSLS: sendNodePosition and recvNodePosition have been got! 
JSLS: The distance from [sendNodePosition] to [recvNodePosition] is 61903.603888 JSLS: sendNodeID = 1 recvNodeID = 5 
JSLS: sendNode = 0x577f5a60 
JSLS: sendNodePosition and recvNodePosition have been got! 
JSLS: The distance from [sendNodePosition] to [recvNodePosition] is 35712.226169 JSLS: sendNodeID = 5 recvNodeID = 2 
JSLS: sendNode = 0x575f3590 
JSLS: sendNodePosition and recvNodePosition have been got! 
JSLS: The distance from [sendNodePosition] to [recvNodePosition] is 61903.603888 JSLS: sendNodeID = 5 recvNodeID = 6 
JSLS: sendNode = 0x575f3590 
JSLS: sendNodePosition and recvNodePosition have been got! 
JSLS: The distance from [sendNodePosition] to [recvNodePosition] is 43494.595698 JSLS: sendNodeID = 5 recvNodeID = 7 
JSLS: sendNode = 0x575f3590 
JSLS: sendNodePosition and recvNodePosition have been got! 
JSLS: The distance from [sendNodePosition] to [recvNodePosition] is 117848.625204 JSLS: sendNodeID = 1 recvNodeID = 7 
JSLS: sendNode = 0x577f5a60 
JSLS: sendNodePosition and recvNodePosition have been got! 
JSLS: The distance from [sendNodePosition] to [recvNodePosition] is 97778.188297 JSLS: sendNodeID = 7 recvNodeID = 6 
JSLS: sendNode = 0x59b4c010 
JSLS: sendNodePosition and recvNodePosition have been got! 
JSLS: The distance from [sendNodePosition] to [recvNodePosition] is 94036.093233 JSLS: sendNodeID = 7 recvNodeID = 4 
JSLS: sendNode = 0x59b4c010 
JSLS: sendNodePosition and recvNodePosition have been got! 
JSLS: The distance from [sendNodePosition] to [recvNodePosition] is 82296.332509 JSLS: sendNodeID = 3 recvNodeID = 4 
JSLS: sendNode = 0x594e7830 
JSLS: sendNodePosition and recvNodePosition have been got! 
JSLS: The distance from [sendNodePosition] to [recvNodePosition] is 38820.558196 JSLS: sendNodeID = 3 recvNodeID = 6 
JSLS: sendNode = 0x594e7830 
JSLS: sendNodePosition and recvNodePosition have been got! 
JSLS: The distance from [sendNodePosition] to [recvNodePosition] is 49675.286692 JSLS: sendNodeID = 6 recvNodeID = 4 
JSLS: sendNode = 0x575f3ac0 
JSLS: sendNodePosition and recvNodePosition have been got! 
JSLS: The distance from [sendNodePosition] to [recvNodePosition] is 60472.108764

将各路由器节点之间的距离值,标注在Exata仿真工程的视图上,如下图所示:

一种确认上述距离值是否正确的一个非常简易的方法,是根据“Exata中的【顶部】和【左边】类似Word中标尺的X-Y坐标系、以及Exata菜单栏中实时显示当前光标所在的X-Y坐标值”进行手动计算。

例如下图中节点[5]和节点[1]之间距离的‘所见即所得’的粗略计算过程为:

得到节点[5]和节点[1]之间距离distance为 35757 米,即35㎞,结果正确!

禁用Exata源码调试断点,让Exata GUI界面显示CBR应用数据的网络路由方向和网络路由路径,可以得到如下的GIF动画图片:

这里值得说明的是,如果是默认的未修改的原版本的“路由跳数度量”的[routing_bellmanford.cpp]源码,上述GIF动画图片中,节点[1]到节点[4]的网络路由路径将是[1]→[7]→[4],只有2跳;而不是基于‘路径度量’最短路由的[1]→[2]→[3]→[4]。

仿真工程下载地址:

https://download.csdn.net/download/hardwork617s/89817081

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1550475.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Redis-常见数据类型(修改ing)

1. 预备知识 redis按照键值对的方式存储数据 1.1 基本全局命令 KEYS 返回所有满⾜样式&#xff08;pattern&#xff09;的key,⽀持如下统配样式: h?llo 匹配hello,hallo,hxlloh*llo 匹配hllo,heeeelloh[ae]llo 只匹配hallo helloh[^e]llo 匹配除hello,heee..llo以外的h[a…

Java-数据结构-Map和Set-(二)-哈希表 |ू・ω・` )

文本目录&#xff1a; ❄️一、哈希表&#xff1a; ☑ 1、概念&#xff1a; ☑ 2、冲突-概念&#xff1a; ☑ 3、冲突-避免&#xff1a; ☞ 1&#xff09;、避免冲突-哈希函数的设计&#xff1a; ☞ 2&#xff09;、避免冲突-负载因子调节(重点)&#xff1a; ☑ 4、冲突-解决&…

宠物空气净化器该怎么选?希喂、美的、有哈这三款有推荐的吗?

终于要到国庆了&#xff0c;这可是打工人除春节外最长的假期&#xff01;在外上班后&#xff0c;回家的次数越来越少了&#xff0c;这次国庆肯定要回去陪陪父母。这票是真难买啊&#xff0c;候补了我一个多星期才买到。本来以为最困难的问题已经解决了&#xff0c;又想到我家猫…

有通话质量更好的蓝牙耳机推荐吗?高品质的平价开放式耳机推荐

个人认为开放式耳机在通话方面还是表现不错的&#xff0c;主要有以下几个原因&#xff1a; 首先&#xff0c;在麦克风设计与配置方面&#xff1a; 拥有高品质麦克风硬件。优质的开放式耳机往往会配备高性能的麦克风&#xff0c;这些麦克风灵敏度较高&#xff0c;能够精准地捕捉…

情感短视频素材下载推荐

在制作热门的情感短视频时&#xff0c;优质的素材是不可或缺的。作为一名资深视频剪辑师&#xff0c;今天我将为你推荐几个可以下载高清无水印情感视频素材的网站&#xff0c;助你轻松找到创作灵感。 蛙学网 蛙学网是国内领先的视频素材平台&#xff0c;专注于情感和治愈类视频…

TypeScript是基于LLM上层研发的受益者

TypeScript优在哪里 TypeScript是一种由微软开发的开源编程语言&#xff0c;它是JavaScript的一个超集&#xff0c;添加了类型系统和一些其他特性。TypeScript的优势在于&#xff1a; 静态类型检查&#xff1a;TypeScript的最大卖点是它的静态类型系统。这允许开发者在编写代码…

11.C++程序中的常用函数

我们将程序中反复执行的代码封装到一个代码块中&#xff0c;这个代码块就被称为函数&#xff0c;它类似于数学中的函数&#xff0c;在C程序中&#xff0c;有许多由编译器定义好的函数&#xff0c;供大家使用。下面就简单说一下&#xff0c;C中常用的函数。 1.sizeof sizeof函…

AI预测福彩3D采取888=3策略+和值012路或胆码测试9月28日新模型预测第101弹

经过100多期的测试&#xff0c;当然有很多彩友也一直在观察我每天发的预测结果&#xff0c;得到了一个非常有价值的信息&#xff0c;那就是9码定位的命中率非常高&#xff0c;100多期一共只错了12次&#xff0c;这给喜欢打私房菜的朋友提供了极高价值的预测结果~当然了&#xf…

Learn OpenGL In Qt之炫酷进度条

竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生~ 公众号&#xff1a; C学习与探索 | 个人主页&#xff1a; rainInSunny | 个人专栏&#xff1a; Learn OpenGL In Qt 文章目录 设计实现目录结构需要哪些类接口设计关键函数 实现效果Shader解析GLSL基本函数clampsmoothstep 实现分析效…

2.点位管理——帝可得后台管理系统

目录 前言点位管理菜单模块1.需求说明2.库表设计3.生成基础代码0 .使用若依代码生成器最终目标1.创建点位管理2.添加数据字典3.配置代码生成信息4.下载代码并导入项目 4.优化菜单——点位管理1.优化区域管理2.增加点位数3. 合作商 前言 提示&#xff1a;本篇介绍点位管理模块&…

[论文精读]AI-Guardian: Defeating Adversarial Attacks using Backdoors

会议名称&#xff1a;2023 IEEE Symposium on Security and Privacy (SP) 发布链接&#xff1a;AI-Guardian: Defeating Adversarial Attacks using Backdoors | IEEE Conference Publication | IEEE Xplore 中文译名&#xff1a;AI-Guardian:利用后门防御对抗攻击 阅读原因…

记一次教学版内网渗透流程

信息收集 如果觉得文章写的不错可以共同交流 http://aertyxqdp1.target.yijinglab.com/dirsearch dirsearch -u "http://aertyxqdp1.target.yijinglab.com/"发现 http://aertyxqdp1.target.yijinglab.com/joomla/http://aertyxqdp1.target.yijinglab.com/phpMyA…

IT基础监控范围和对象

监控易作为一款由美信时代独立自主研发的分布式一体化集中监控平台&#xff0c;其监控范围极为广泛&#xff0c;几乎涵盖了所有主流的IT基础设施以及相关的设备和系统。以下是对监控易监控范围的详细介绍&#xff1a; 一、IT基础资源监控 服务器硬件监控&#xff1a;监控易支…

fmql之Linux阻塞和非阻塞IO

继续学习正点原子吧。 概念简介 什么是阻塞、非阻塞IO 阻塞/非阻塞访问的代码示例 等待队列&#xff08;阻塞访问使用&#xff09; 轮询&#xff08;非阻塞访问使用&#xff09; poll操作函数的使用&#xff08;轮询的一种&#xff09; 阻塞IO的实验 blockio.c blockioAPP.c 运…

大模型能力扩展之——提示词(Prompt),知识库,思维链(CoT)和Agent(代理)

前言 “大模型的推理能力配合外部工具才能真正发挥大模型的作用” 在学习和使用大模型的过程中&#xff0c;我们会发现大模型只能用来进行一下简单的问答&#xff1b;一旦涉及到复杂的问题&#xff0c;大模型就无能为力了。 其原因就在于我们并不会使用大模型&#xff0c;或…

【韩顺平Java笔记】第3章:变量

只记录我觉得重点的&#xff0c;自用&#xff0c;如果有漏的请自己看视频 文章目录 33. 内容梳理34. 变量原理34.1 为什么需要变量35. 变量概念35.1 概念35.2 变量使用的基本步骤36. 变量入门36.1 变量使用入门案例 37. 变量细节37.1 变量使用注意事项 38. 加号使用38.1 程序中…

Node.js安装Express,Node.js支持Typescript以及Express支持Typescript的步骤

1. Node.js 安装Express 运行如下命令&#xff1a; $ mkdir express-demo $ cd express-demo$ npm install express $ npm install body-parser //(可选)中间件&#xff0c;用于处理 JSON, Raw, Text 和 URL 编码的数据 $ npm install cookie-parser //(可选)通过req.cookies…

如何使用ssm实现大学生校园招聘网的设计与实现

TOC ssm738大学生校园招聘网的设计与实现jsp 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域位置往往是人们思想上不可跨域…

网页WebRTC电话和软电话哪个好用?

关于WebRTC电话与软件电话哪个更好用&#xff0c;这实际上取决于多个因素&#xff0c;并没有一个绝对的答案。不过&#xff0c;我可以根据WebRTC技术的一些特点&#xff0c;以及与传统软件电话相比的优劣势&#xff0c;为你提供一个清晰的对比。 首先&#xff0c;让我们了解一下…

单细胞miloR分析(基于 KNN 图的细胞差异丰度分析方法)

通常情况下&#xff0c;对两组或多组样本进行了不同处理/干预之后&#xff0c;研究者首先会进行同种细胞亚群处理前后的细胞数量的比较&#xff0c;但在单细胞分辨率时代之后&#xff0c;即使是同一个亚群中的不同细胞也应当看成不同的样本。 那么问题就来了&#xff0c;既然应…