无线传感充电小车数量仿真设计

2021-09-22 06:14欧晔
电子技术与软件工程 2021年15期
关键词:数组等待时间传感

欧晔

(闽江师范高等专科学校计算机系 福建省福州市 350108)

1 导言

由于小车的充电半径远大于簇的作用半径,所以小车在驶到簇节点位置时可以同时给簇内节点充电。由于小车给簇内节点同时开始充电,所以充电时间就是簇内能量最低的节点充满电量所花费的时间,因此在充电时只要找到这个能量最弱的节点就可以算出该簇的充电时间。之后小车按照基站所规划的充电路径驶到下一个簇节点,按照上面的方式重新开始充电,并把充电后的簇状态信息传回给基站,然后继续按步就搬地移到下一个簇节点,这样直到小车的电量耗费殆尽,至此这辆小车的工作任务就顺利完成,然后回到基站后再由基站根据接收回的传感数据信息处理后规划好下一辆小车的充电过程。

2 非均匀分簇的充电策略设计的研究方向

基于非均匀分簇的充电策略设计,主要从两方面进行研究:

(1)减少充电路径;

(2)缩短充电时间。

其中过分追求最短路径会忽视节点的剩余生存时间,导致小车还未到来,节点就已死亡。为了能兼顾到非均匀分簇的节点充电问题,笔者采用节点转发的技术把随机分布的传感器上采集回来的能量数据信息传送到基站,再由基站根据一定的算法设定出充电小车的行驶路径,让小车沿行驶路径对尽可能多的簇进行充电,以便让簇内节点能够在自身能量耗尽前及时得到充电,能够尽可能延长无线传感网络的维持时间,使得传感网络能够尽可能协调一致地运行下去。当然由于簇数量众多,一辆小车是完成不了充电任务的,因此基站就根据网络的实时运行状态不断地更新行驶路线,不断地派出小车去维持充电任务以使网络能有效地运行维持下去。

3 仿真求解充电小车数量

3.1 仿真实现过程设计

首先输入math库,因为要用到len,sqrt,和Pow函数,分别是求字符串长度,求平方根和求平方函数。

接着设置各个簇内节点的最短剩余生存时间数组的下标,由于python代码的数组下标是从0开始算起,又因为时间数组的第一个元素是代表基站,所以下标变量a的初始值从1开始算。k是反映小车数量的变量,并且充电小车至少从一辆开始算,所以k的初始值为1。

接着初始化时间数组,为了调试方便,仅输入4个元素,同时设置变量l为获取时间数组的长度。

然后设置一个while循环判断l值是否大于1,如果小于等于1表示时间数组已被处理完毕,多辆小车的充电任务已完成结束。如果l大于1表示小车正在为簇内节点充电。首先输入为当前簇充电所需的等待时间,为了调试方便,同时输出当前簇的最短剩余生存时间和等待时间。如果最短剩余生存时间大于等待时间且小于600+ (math.sqrt(math.pow(100, 2) + math.pow((200 + l), 2))) / 2这个变量值的话,那么就意味着小车为当前簇充完电还有剩余的电量,还可以为下一个簇继续充电,那么簇数组指针下标就移到下一个元素继续处理。否则意味着还没等到小车来充电,当前簇内最少剩余生存时间对应的节点就已经死亡了,那么这辆小车的充电使命就提前结束了,需要把从第一个簇到当前簇的前一个簇的这些簇元素从数组中删除掉,并把小车数量加一(等待下一辆小车的到来)。因为当前簇的下一个簇还要等待新一辆小车来为它充电,所以a值重新设为2,接着重新计算数组的长度l,如果l等于2就设置l等于1,意味着循环结束,该轮的充电小车数量已算出来了。因此充电任务正式结束。

3.2 求解小车数量伪代码

3.3 充电小车的工作原理

小车每次都是充满一定量的能量,且它的充电速度是一定的,这也意味着它的充电周期是一定的,即T值是固定的。在T值是固定的前提下,由于它的行驶路径和不同簇内的节点剩余生存时间不一样,导致它为之服务的簇的类别和数量也不一样,所以在一个T周期内一辆小车有可能为一个簇充电,也可能为多个簇充电,并且一辆小车还有可能不能完成[1]全部的充电任务,要多辆小车才可以。因此充电的前提条件是动态的,导致笔者要采取仿真的形式来求解充电小车的数量以满足不一样的前提条件下环境所需的充电小车的数量是不一样的这个先决条件。并且只有通过仿真的形式,笔者才可能得到逼近实际环境的充电效果,从而所求得的充电小车的数量才是比较准确的。

3.4 仿真代码中某些知识点设置的意义与作用

3.4.1 最少剩余生存时间数组的设置思路

由于小车的充电半径远大于簇内半径,因此可以认为小车可同时为簇内的所有节点充电,在同时充电的前提下,簇内的哪一个节点它的剩余生存时间最小,也就意味着它所需要的充电时间就越长,

S = [0, 270, 380, 490, 510]因为是同时充电,所以充电时间最长的簇内节点它的充电时间就等同于该簇的充电时间,因此让该节点的充电时间值出现在最少剩余生存时间数组当中就意味着该簇的充电时间信息已提供出来了,直接在程序中运用就可以了。

3.4.2 运算符的意义与作用

if (S[a] > tj) and (S[a] < 600 + (math.sqrt(math.pow(100, 2) + math.pow((200 + l), 2))) / 2)要使用’and’逻辑运算符表示必须同时满足下面两个条件:条件(1).每一个簇中最容易失效的节点都比等待小车过来充电的时间长,可保证数组S中每一个相应子队列中的各个簇都在各自规定的tj时间内完成充电,从而不需要新增充电车辆并根据子队列的数量算出小车的数量;条件(2).右侧的运算符’<‘表示每个子队列都有相应的充电周期T,且在充电周期内各自[2]完成充电,不需要新增车辆。如果不同时满足上述两个条件就需要新增车辆,这样可把所有可能的充电情况都考虑在内,有利于更加完整准确地计算所需充电小车的数量。通过这样设置运算符,充电任务能满足所有可能情况的发生。

由于小车给簇充电的随机性很大,等待时间tj的给予不通过固定的公式计算得到,而是通过手动输入得到,这样更可把控各个情况的发生,准确性更高。等待时间的手动输入代码如下:

tj=float(input("请输入对当前簇充电所需要的等待时间:"))

3.5 仿真的效果以及意义

3.5.1 仿真的效果

仿真既不失准确性又简化了项目运营流程,容易让更多的人理解其中的原理和项目运行规律,并能拓展应用领域范围,做到举一反三,闻一知十。而且采用仿真手段能够简化操作流程,能够让新手尽快熟悉上手。因此仿真的意义重大。再回到无线传感充电小车这个项目,通过仿真手段基本能反映出所需的充电小车的实际数量并让仿真的效果能贴近实际。图1是代码仿真的结果图。

图1

上面S数组有4个簇节点序列,当第一个簇的最少剩余生存时间大于等待充电时间时,那么第一辆小车就可以顺利地完成对其充电任务而无需新增一辆小车;接下来剩余的三个簇节点如果其各自的最少剩余生存时间也是大于等待小车充电时间的话,那么也就意味着完成一轮充电只需要一辆小车就够了,如果某个簇节点最少剩余生存时间小于等待时间的话,那么就需要新增一辆小车来为接下来的簇节点进行充电,图2反映该代码逻辑思路的运行结果。

图2

如果对充电小车充电再提出优先度算法,加入对节点剩余工作时间的考虑,便能够更加准确的反映节点充电的紧急度,以便使充电小车能够及时为节点进行能量补充,避免了盲目的充电,同时减少了节点充电次数。

3.5.2 仿真在实际应用当中的意义

根据实际项目在应用当中的变量和参数众多的情况,可以化繁为简,减少参数和动态变量的配置,降低应用门槛,只给出必要的信息,从简单入手,先弄懂项目的运用流程和工作原理,然后再逐步展开,贴近实际,这样就有一个学习和掌握的过程,并且这是自然而然形成的,最终把整个项目消化吸收并能应用自如。在项目学习中是这样,学习其他知识也是这样。仿真帮助降低笔者的学习难度,增强应用拓展的自信心。

3.6 仿真求解无线充电小车数量的局限性以及需要改进的地方

仿真是模拟实际环境但还不是实际环境,要想真正掌握实际环境运行规律,必须建立仿真模型并不断改进这个模型,唯一的出路是不断调配设置模型参数,不断运行这个模型以得出更加精准的实际成果。这就应验了那句话“从实践中得到,又应用与实践”,就是说先从实际中摸索出模型构造,再尝试更新这个模型构造,再应用与实践,再从实践中获取经验值,再丰富完善模型最终得到理想的结果。放到笔者这个项目构造的无线充电小车数量求解仿真的应用中,笔者先要设置简单的充电簇节点剩余生存时间子序列数组,然后根据原理及思路构造出小车充电模型(即小车的充电路径和小车的充电数量),并用公式模拟这个模型进而推导出结果,最后验证这个结果看与实际结果有什么差错出路,有的话继续调配参数以及修改模型,没有的话就根据这个模型做进一步深入拓展直至得到最终的正确结果。因此说仿真是手段,是过程,结果是目的,而一切都是为目的服务。

4 结语

仿真设计是求解无线传感充电小车数量的一种方式和手段,虽然这并不是什么新鲜事物,但旧貌换新颜,旧瓶换新酒,还是在解决新生问题之时给大家耳目一新的感觉。因此笔者懂得利用仿真手段为自己开辟一条解决传感网络无线充电非均匀分簇问题的一条新路。当然笔者也不能过分夸大仿真设计的作用,因为这毕竟离实际求解问题答案还有一段距离,因此应该理性看待仿真设计,合理利用,让它为笔者披荆斩棘,一往无前为求解项目课题而开辟一条又新又活的新路。

猜你喜欢
数组等待时间传感
给学生适宜的等待时间
——国外课堂互动等待时间研究的现状与启示
《传感技术学报》期刊征订
新型无酶便携式传感平台 两秒内测出果蔬农药残留
JAVA稀疏矩阵算法
JAVA玩转数学之二维数组排序
IPv6与ZigBee无线传感网互联网关的研究
Excel数组公式在林业多条件求和中的应用
意大利:反腐败没有等待时间
顾客等待心理的十条原则
寻找勾股数组的历程