WSN覆盖率问题优化仿真实现_第1页
WSN覆盖率问题优化仿真实现_第2页
WSN覆盖率问题优化仿真实现_第3页
WSN覆盖率问题优化仿真实现_第4页
WSN覆盖率问题优化仿真实现_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章绪论1.1课题背景无线传感器网络(WirelessSensorNetworks,WSNs)是一种新型的测量和控制网络,自21世纪初随着各个学科如微电子系统、计算机网络和无线通信等技术的快速发展应运而生[1]。无线传感器节点成本低、功耗小,因而可进行大规模的部署,用于大范围的数据收集。具有自动组网、自适应性高、容错能力强和可扩展性好等优点的无线传感器网络在近年来也受到广泛的关注,在灾害预警、环境保护、智慧城市、军事国防等领域均有广阔的前景[2-3]。1.2课题目的和意义无线传感器网络的覆盖质量关系着所有无线传感器网络应用的服务质量和性能。网络覆盖控制是无线传感器网络应用的一个基本问题,直接决定了传感器网络对覆盖区域的监测质量,主要研究的是在保证一定的网络服质量的前提下,通过对技术或协议的使用尽可能实现覆盖范围的最大化,以提供可靠的监测数据和目标跟踪服务[4]。合理的无线传感器网络节点的分布方案或策略,能够有效的提高对目标区域的覆盖效果,充分利用各节点的能量,延长网络的生存时间,提升资源的利用效率。在实际的应用中,由于在传统的网络覆盖算法中,大量随机的静态节点部署难以克服较恶劣环境下的监测且存在网络通信冲突和“覆盖冗余”的问题,可能导致能量浪费,降低数据可靠性,不利于资源的有效利用[5]。因此目前多采用的随机动态节点部署,而为了保证目标区域的覆盖质量,易于实现、计算速度快、并行性好的粒子群算法在各个领域得到了广泛应用。1.3国内外研究现状综述早在二十世纪九十年代初,就有了由卡耐基-美隆大学主持的对分部式传感器网络的研究,这之中还联合了美国国防部高级研究计划署和美国自然基金委员会[6]。本世纪初,无线传感器网络在面向未来科技发展报告中被列为21世纪四大高科技产业之一[1]。在美国的移动计算和网络国际会议上,无线传感器网络也被称为是下一个世纪面临的发展机遇[7]。随着研究的进行,无线传感器网络相关应用不断发展,其应用领域也逐渐扩展到了民用方面。美国的CrossBow公司率先研发的Mote智能传感器节点就受到了广泛的市场好评。欧洲、意大利、韩国、日本和英国等也相继展现了对无线传感器网络的关注,并投入资金进行该领域的相关研究[8]。而国内对无线传感器网络的研究起步略微晚于国外。中国科学院首次将无线传感器网络方面的研究列在《知识创新工程试点领域方向研究》的“信息与自动化领域”中是在二十世纪末期[9]。2004年,无线传感器网络相关技术产业被中国科学院列为了重点发展项目。而到了2011年,在“十二五”规划中,国家把无线传感器网络的研究重点提出,并列为重点发展项目[10]。而近年来,我国对无线传感器网络方面的研究也给予了重视,并投入了大量的人力物力和资金,极大的推动了国内无线传感网络方面研究的发展,使之成为了我国信息领域位居世界前列的少数方向之一。1.4结构安排本文对无线传感器网络覆盖问题优化进行讨论,使用粒子群算法和Python实现无线传感器网络覆盖问题优化的仿真模拟,并进行相关测试,以验证算法的正确性和合理性。本文主要分6章,具体安排如下:绪论。简述了本课题的研究背景、目的和意义、国内外研究现状以及结构安排。WSN覆盖问题。对无线传感器网络覆盖问题进行介绍,了解优化该问题的一些算法。相关技术和开发工具介绍。介绍项目中用到的一些技术和模块工具。无线传感器网络覆盖问题优化仿真的设计与实现。介绍了粒子群算法的一些基本原理以及算法流程。并根据无线传感器网络这一实际对象,设计问题模型,进一步分析无线传感器网络覆盖问题优化仿真的实现方案。最后介绍具体的设计实现,即各个模块的设计。测试及分析。展示各窗口的设计,对各窗口以及组件功能进行测试,并展示总体的运行结果。总结及展望。对本课题工程进行的分析和总结。

第2章WSN覆盖问题2.1WSN覆盖问题描述无线传感器网络是一组节点的集合网络,通过网络内部相互通信来探测和感知周围环境。随着物联网的发展,无线传感器网络作为物联网技术的重要部分,近年来也取得了大量的研究成果。无线传感器网络覆盖问题是无线传感器应用领域的一个基本问题。无线传感器具有功耗低的优点,加之无线传感器通常用于恶劣环境下的信息采集,这意味着其感知能力和数据传输能力都将受到一定程度的限制,因此在应用无线传感器网络时需要部署大量传感器节点。而无线传感器网络覆盖问题就是如何使网络内的节点尽可能以较大的覆盖率分布在目标区域内,以便于表现出更优秀的网络性能、提供更全面的区域信息采集数据和更优质的服务质量,也即在保证的网络性能和服务质量的前提下,实现最大化的网络覆盖面积。2.2WSN覆盖问题问题特点覆盖水平直接关联无线传感器网络对目标区域的监测水平和服务质量,合理的传感器节点部署方式,可以有效的提高无线传感器网络性能,提供更高效更准确的数据服务[11]。为了使无线传感器网络顺利的完成对于目标区域的监测和信息收集工作,无线传感器网络节点对目标区域的有效覆盖是必须要保证的。但传统的方式是大规模的空中随机抛洒静态节点,因为其较大的随机性,难以避免节点出现重叠覆盖和网络通信冲突的现象,因此这种部署方式无法保证目标区域的覆盖质量。而采用合理算法对节点分布进行调整的动态节点部署方式则能够在一定程度上减少这些现象的发生,保证无线传感器网络的高效运行。2.3WSN覆盖问题优化方法优化问题广泛存在于科学研究、工程技术甚至日常生活中。采用动态节点部署方式,就需要讨论适合无线传感器网络节点的优化算法。优化问题根据有无约束条件可分为两类,即无约束优化和约束优化。传统的优化方法有线性规划法、牛顿法和梯度下降法等。但以梯度为基础的传统优化方法在无线传感器网络节点这类非线性、多目标的对象上存在很大局限性[12]。随着实际工程中问题规模增加,系统复杂性提高,建立数学模型困难往往成为限制传统优化算法的主要问题。因此为了解决无线传感器网络等大规模复杂优化问题,智能算法随之出现。上世纪50年代,对仿生学的深入研究衍生了启发式进化算法如遗传算法、模拟退火算法,这类算法主要是根据生物协作进化现象提出的。而随着对生物群体行为的研究,群体智能算法逐渐出现在研究人员的视野之中。基于蚁群、鱼群、灰狼、鸟群等的群体智能算法结合了进化思想以及生物群体的智能性和自组织的社会性,对优化问题进行启发式搜索,最后在可行解空间找到最优解,为解决大规模高复杂度的优化问题提供了新的思路。本文主要是采用基于鸟群觅食的粒子群算法对无线传感器网络覆盖问题优化进行仿真模拟。第3章绪论相关技术和开发工具介绍3.1Python语言介绍Python是由GuidovanRossum在1989年期间开发的计算机编程语言。其本身是由包括ABC、C、C++、Unixshell等和其他的脚本语言发展而来的Python源代码同Perl语言相同,兼容GPL(GNUGeneralPublicLicense)协议,即开放源代码许可协议。因此Python是一种不受局限、跨平台的开源编程语言,也是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python由于其数据处理速度快、功能强大且易于学习的优点,在数据分析和处理中得以被广泛应用。Python具有简单清晰、纯面向对象、支持面向过程和面向对象编程、标准库丰富广泛、具有良好的可移植和可扩展性以及可嵌入性等特点。Python采用的解释运行的方式,编写后直接通过解释器运行,没有编译这一步骤,具有典型的动态语言特点,有很高的编程效率,同时也支持如继承、多重继承、重载等常见的类概念。3.2sys和os模块介绍3.2.1sys模块sys模块是Python解释器交互的接口,提供对解释器使用或维护一些变量的访问,以及和解释器交互频繁的一些函数,用于操控Python运行时的环境。3.2.2os模块os模块是Python标准库中用于访问操作系统功能的模块,提供了多数操作系停放的功能接口函数,通过这些接口可实现跨平台访问。os模块被导入后能够自适应不同的操作系统平台,并根据平台进行操作,实现对文件、目录等的新建、删除和查看以及对路径的相关操作。3.3PyQt5模块介绍PyQt是Qt为Python专门提供的GUI(GraphicalUserInterface)扩展,PyQt5是其中最新的一个版本。PyQt5是一个用于创建GUI应用程序的跨平台工具包,其中融合了目前最强大的GUI库QT库。PyQt5是通过一系列的Python模块形式来实现功能,其中包含了超过620个类,600个方法和函数。同样的,PyQt5支持多平台,能够运行在包括Windows、MacOS和Unix等在内的所有主流平台上。特别的是,PyQt5提供GPL和社区授权两种许可模式供使用者选择。在本文设计中,主要使用了PyQt5中的QtCore、QtGui、QtWidgets的这三个模块。其中,QtCore模块包含了非GUI的功能,该模块用来对时间、文件、目录、各种数据类型、流、URL、mime类型,线程和进程;QtGui模块包括多种图形化窗口组件以及基本图形功能的类,包括窗口集、事件处理、2D图形、基本的图像和界面字体文本等;QtWidgets模块则提供一整套UI元素用于创建经典的用户界面。3.4matplotlib模块介绍matplotlib是Python提供给用户绘制二维图形的模块,包含37个不同的模块,结合Python的数值计算模块numeric和numarray的使用,可轻松实现高质量的二维图形绘制。matplotlib可绘制多种形式的图形,包括但不限于曲线图、散点图、折线图、直方图、柱状图、饼图等统计图;也可以便捷的获取图形的各种属性,如图形的颜色,线条粗细、字体大小等,可以很方便的更改其属性值以绘制想要的画面;同时matplotlib还支持一部分Tex排版命令,能够以一定美感显示图形中的数学公式。本文设计中主要使用matplotlib模块下的patches和animation类绘制仿真模拟的结果。3.5信号和槽机制介绍信号(Signal)和槽(Slot)是一种高级接口,是PyQt编程对象间进行通信的机制。每个QObject对象,包括QObject的子对象——PyQt中所有继承自QWidget的控件都支持信号和槽机制,而所有的PyQt小部件都有一组预定义的信号。当对象的状态发生改变时,信号就会被这个对象发送出去,其关联的槽函数就会被立即执行。槽只是普通的对象成员函数,只用于接收信号,且并不知道是否有信号与自己关联。特别的,发送信号的对象并不关心是哪个对象接收信号,只负责发送信号,槽函数只在信号被发送时被调用,这就形成了在信号和槽机机制中,同一个信号可以关联多个槽函数,多个信号可以关联同一个槽,一个信号可以关联另一个信号的特点。而若是信号与多个槽函数绑定,则信号发送时,槽函数的执行并不是顺序的,而是随机的。

第4章WSN覆盖问题优化仿真模拟的设计与实现4.1粒子群算法4.1.1算法概述粒子群算法(ParticleSwarmOptimization,PSO)由Kennedy和Eberhart于1995年通过对鸟群觅食行为的研究提出,是一种典型的群体智能算法,也是常用于解决多目标优化问题的经典算法之一。[13-14]粒子群算法的基本思想是模拟鸟群的觅食行为,鸟群中的每一只鸟对应每一个粒子,每只鸟在森林中以自己的速度和方向飞行。在寻找食物的过程中,鸟群中的每只鸟根据一些信息,不断调整自己的速度和方向,最终向食物的方向聚集,到达食物所在的地方,此时就得到了粒子群算法的解。根据粒子群算法,在粒子群中的每个粒子既没有质量也没有体积,只有在n维空间下的位置和速度两个值,并且皆是解空间中的可行解。随机初始化粒子群的位置和速度之后,在每次迭代中,计算每个粒子的适应度值,并根据适应度值更新每个粒子的个体最优位置pbest和由所有粒子得到的全局最优位置gbest,每个粒子也根据pbest和gbest更新自己的位置和速度,并以此不断靠近全局最优解,最终得到整个算法的解。4.1.2算法实现流程初始化:搜索空间维度为N,随机生成M个粒子的位置和速度作为初始的粒子群P0,设置最大迭代次数T,第t次迭代时,粒子群中第i个粒子的位置为Xit计算适应度值:计算当前所有粒子的适应度值。根据适应度值,先更新所有粒子的位置Xit和速度Vit(i的取值为0⋯m-1),再更新粒子的个体历史最优位置pbest和粒子群全局最优位置gbest[判断是否达到最大迭代次数T或全局最优位置满足最小界限,若否,则返回步骤(2);若是,则结束。算法流程图如下所示:随机初始化粒子群的位置和速度计算每个粒子的适应度根据适应度更新pbest和gbest更新粒子的位置和速度更新达到最大迭代次数或全局最优位置满足最小界限开始结束否是图随机初始化粒子群的位置和速度计算每个粒子的适应度根据适应度更新pbest和gbest更新粒子的位置和速度更新达到最大迭代次数或全局最优位置满足最小界限开始结束否是4.2问题建模4.2.1网络模型假设目标区域为S,其中的传感器数量为N,传感器感知半径为R,粒子数量为M,在无线传感器网络的初始化阶段,假设以下条件:所有传感器随机散布在目标区域。传感器初始位置信息可知。粒子位于N维空间,每一个维度对应于无线传感器网络里的一个传感器。4.2.2节点感知模型节点感知模型是对节点感知能力的抽象化体现。在无线传感器网络中,常用的节点感知模型有0-1模型、概率模型这两个分类[16-17]。本文设计使用0-1模型作为节点感知模型。0-1模型实际上是特殊化的概率模型,主要内容为:若一个被监测目标被传感器覆盖,则覆盖率记为1,否则为0。同时定义传感器覆盖范围为以传感器节点为中心,在传感器感知半径R范围内的区域,在该区域内的样点都视为被该节点覆盖。则在目标区域内,任意的一个样点j能被节点i覆盖的概率为:P其中,假设点i(x0,y0),点j(x1,y1),则有点i和点j的距离d(i,j)为[18-19]:d4.2.3覆盖率计算针对无线传感器网络覆盖问题,选用无线传感器网络的覆盖率作为粒子群算法中每个粒子的适应度值。首先将目标区域S划分为p×q个样点集合,对于其中的任意一个样点s,若点s处于无线传感器网络中任意一个传感器k感知半径内,则表示点s被该无线传感器网络覆盖。覆盖率P=其中,P(k,s)表示样点s被无线传感器网络中任意一个传感器k覆盖的概率,也即样点s被无线传感器网络覆盖的概率。 4.3窗口设计实现4.3.1主窗口设计实现主窗口是通过Python的PyQt5模块实现的,主要使用了该模块下的QtCore,QtGui、QtWidgets模块创建窗口类及其相关组件,菜单栏包括节点参数设置、粒子群参数设置以及基本操作和关于四个选项,主要变量设置如下:表4-1主窗口类主要变量实例化的对象类型功能CentralwidgetQWidget中心窗口MenbarQMenuBar菜单栏SetParaQAction菜单栏“节点参数设置”选项,快捷键Alt+SSetParticleQAction菜单栏“粒子群参数设置”选项,快捷键Alt+PMenu_OQMenu菜单栏“基本操作”选项,快捷键Alt+OAboutQAction菜单栏“关于”选项,快捷键Alt+AStatusbarQStatusBar状态栏,用于显示一些提示信息actionStart_SQAction“基本操作”下的“开始运行”选项,点击后开始仿真模拟节点移动,快捷键SactionClear_CQAction“基本操作”下的“清除”选项,点击后用于清空画布,快捷键CactionRestart_RQAction“基本操作”下的“重新开始”选项,点击后重置参数值为0,重新开始计算,快捷键RactionExit_EQAction“基本操作”下的“退出程序”选项,点击后关闭窗口并退出,快捷键E4.3.2节点参数设置窗口设计实现节点参数设置窗口和主窗口使用的Python模块相同,区别只是在于窗口类型,Python中的窗口类型分为QMainWindow、QWidget和QDialog三大类,其中节点参数设置窗口使用的就是QWidget类,QWidget类是通用窗口类型,即所有用户界面的基类。该窗口用于设置有关于传感器节点的参数,且设置有按钮实现默认参数的加载。主要变量设置如下:表4-2节点参数设置窗口类主要变量实例化对象类型功能lineEditQLineEdit节点个数的文本输入行lineEdit_2QLineEdit感知半径的文本输入行PushButtonQPushButton“确认”按钮PushButton_2QPushButton“取消”按钮PushButton_3QPushButton“默认参数”按钮,点击加载默认参数4.3.3粒子群参数设置窗口设计实现粒子群参数设置窗口和节点设置窗口类型相同,用于设置粒子群算法的相关参数,同样设置有加载默认参数的按钮。粒子群参数设置窗口类下的主要变量设置如下:表4-3粒子群参数设置窗口类主要变量实例化的对象类型功能lineEditQLineEdit参数最大迭代次数的文本输入框lineEdit_2QLineEdit参数粒子个数的文本输入框lineEdit_3QLineEdit参数惯性因子W的文本输入框lineEdit_4QLineEdit参数学习因子C1的文本输入框lineEdit_5QLineEdit参数学习因子C2的文本输入框PushButtonQPushButton“确认”按钮PushButton_2QPushButton“取消”按钮PushButton_3QPushButton“默认参数”按钮,点击加载默认参数4.3.4画布类设计实现画布类是用来实现无线传感器网络覆盖问题优化仿真模拟时传感器节点分布位置的呈现。画布设置子主窗口的中心窗口位置,并可以根据窗口大小而放大缩小,同时初始化的画布绘制了一个不可见的含有坐标轴的子图,配合模拟模块的方法,就能实现节点在画布上的动态呈现。画布类代码细节如下:classMyCanvas(FigureCanvas):def__init__(self,parent=None,width=5,height=4,dpi=100):self.fig=Figure(figsize=(width,height),dpi=dpi)self.axes=self.fig.add_axes([0,0,1,1])#left=0,bottom=0,width和height等于1表示宽高等于fig的百分之百FigureCanvas.__init__(self,self.fig)#调用基类的初始化函数self.setParent(parent)#尺寸缩放策略FigureCanvas.setSizePolicy(self,QtWidgets.QSizePolicy.Expanding,QtWidgets.QSizePolicy.Expanding)defcompute_initial_figure(self):pass#继承一个自定义画布控件类classMyDynamicMplCanvas(MyCanvas):#动态画布类def__init__(self,*args,**kwargs):#MyCanvas.__init__(self,*args,**kwargs)super().__init__(*args,**kwargs)self.axes.set_xlim(-50,50)#设置横坐标轴范围self.axes.set_ylim(-50,50)#设置纵坐标轴范围#隐藏坐标轴self.axes.get_xaxis().set_visible(False)self.axes.get_yaxis().set_visible(False)#隐藏子图边框self.axes.spines['top'].set_visible(False)self.axes.spines['bottom'].set_visible(False)self.axes.spines['left'].set_visible(False)self.axes.spines['right'].set_visible(False)self.draw()4.4粒子群算法实现粒子群算法的实现是通过定义粒子类和粒子群算法类来实现。粒子类定义了每个粒子所包含的参数信息,粒子群算法类则用于实现粒子群的算法流程,最终得到最优的适应度值,即无线传感器网络的覆盖率,以及最优适应度值对应的粒子的位置信息。适应度函数的计算方法则独立于这两者之外,便于初始化以及迭代过程中的调用。主要的变量设置如下:表4-4算法模块主要变量变量名称类型功能vx和vyFloat粒子分别在横坐标和纵坐标上的速度x和yList粒子的横坐标和纵坐标位置,维度为传感器节点个数pxbest和pybestList粒子的个体历史最优位置xbest和ybestList粒子群的全局历史最优位置FitvalFloat每个粒子的适应度值,即无线传感器网络的覆盖率WFloat惯性因子,用于粒子速度的更新c1Float学习因子,用于粒子速度的更新c2Float学习因子,用于粒子速度的更新Partis_listList粒子群对象,存储有关粒子群的所有参数信息算法模块提供以下方法可供调用:表4-5粒子群算法主要方法方法名称参数返回值功能func()self,x_max,y_max,x,y,r,dimfit(覆盖率)计算适应度值update_v()self,par(粒子群中的粒子)None更新粒子的速度update_position()self,ParNone更新粒子的位置以及个体和全局的历史最优位置其中,适应度计算方法,覆盖率计算采用以下公式:P=代码实现细节如下:deffunc(x_max,y_max,x,y,r,dim):sum=0flag=[[0foriinrange(2*x_max)]foriinrange(2*y_max)]#生成标记矩阵foriinrange(dim):#传感器个数forjinrange(int(x[i]-r),int(x[i]+r+1)):#样点横坐标forkinrange(int(y[i]-r),int(y[i]+r+1)):#样点纵坐标if(-x_max<=j<x_maxand-y_max<=k<y_maxandflag[j+x_max][k+y_max]==0):if(x[i]-j)*(x[i]-j)+(y[i]-k)*(y[i]-k)<=r*r:flag[j+x_max][k+y_max]=1sum=sum+1fit=float(sum/(4*x_max*y_max))returnfit更新粒子的速度采用以下公式:Vit+1=V其中,Vit,Xit分别表示第i个粒子在第t次迭代的速度和位置,c1,c2为学习因子,代码实现细节如下:defupdate_v(self,par):foriinrange(self.dim):vx=par.w*par.vx[i]+par.c1*random.random()*(par.pxbest[i]-par.x[i])+par.c2*random.random()*(self.xbest[i]-par.x[i])vy=par.w*par.vy[i]+par.c1*random.random()*(par.pybest[i]-par.y[i])+par.c2*random.random()*(self.ybest[i]-par.y[i])ifvx>self.vx_max:vx=self.vx_maxelifvx<-self.vx_max:vx=-self.vx_maxifvy>self.vy_max:vy=self.vy_maxelifvy<-self.vy_max:vy=-self.vy_maxpar.vx[i]=vxpar.vy[i]=vy更新粒子位置使用以下公式:Xit+1=Xit+V其中,Xit表示第i个粒子在第代码实现细节如下:defupdate_position(self,par):foriinrange(self.dim):x=par.x[i]+par.vx[i]y=par.y[i]+par.vy[i]par.x[i]=xpar.y[i]=y#更新个体最优位置val=func(self.x_max,self.y_max,par.x,par.y,par.r,self.dim)ifval>par.fitval:par.fitval=valforiinrange(self.dim):par.pxbest[i]=par.x[i]par.pybest[i]=par.y[i]#更新群体最优位置ifval>self.best_fit:self.best_fit=valforiinrange(self.dim):self.xbest[i]=par.x[i]self.ybest[i]=par.y[i]4.5模拟模块实现通过模拟模块可以实现创建的窗口之间的通信以及组件功能的实现,点击主窗口相关组件弹出子窗口,在子窗口填写的参数通过主窗口传递算法模块,再将返回值传递回主窗口的画布,在画布上显示无线传感器的分布以及覆盖率值的变化。以下是模块间的参数传递图解:算法模块算法模块画布主窗口节点参数设置窗口粒子群参数设置窗口“关于”选项的信息提示框节点相关参数菜单栏选项点击事件粒子群相关参数所有参数返回值返回值传感器位置分布图图4-2参数传递图模拟模块中主要包含以下方法:表4-6算法模块主要方法所属的类方法名称参数返回值功能Setting_window(节点参数设置窗口)Set_onOk()SelfNone“确定”按钮点击事件,传递节点参数Set_ondefault()SelfNone“默认参数”按钮点击事件,加载默认参数Set_onQuit()SelfNone“取消”按钮点击事件,关闭节点参数设置窗口Setpar_window(粒子群参数设置窗口)SetPar_onOk()SelfNone“确定”按钮点击事件,传递粒子群参数SetPar_ondefault()SelfNone“默认参数”按钮点击事件,加载默认参数SetPar_onQuit()SelfNone“取消”按钮点击事件,关闭窗口Mainwindow(主窗口)SettingEvent()SelfNone菜单栏“节点参数设置”点击事件,打开节点设置窗口SetParEvent()SelfNone菜单栏“粒子群参数设置”点击事件,打开粒子群参数设置窗口AboutEvent()SelfNone菜单栏“关于”选项,打开关于窗口deal_parameters()self,parametersNone槽函数,接收节点参数,传递给算法模块deal_particles()self,particlesNone槽函数,接收粒子群参数,传递给算法模块start_pso()SelfNone初始化粒子群,并将无线传感器分布位置和覆盖率显示在画布上draw()self,x,y,rNone根据坐标和半径在画布上画带圆心的圆,模拟无线传感器及感知半径start_cal()SelfNone“基本操作”选项下的“开始运行”点击事件开始进行仿真模拟,并将传感器位置和覆盖率变动显示在画布上draw_gif()self,frame0显示当前传感器位置和覆盖率draw_clear()SelfNone“清除”清除画布restart()SelfNone清除画布,并重置参数

第5章测试及分析5.1窗口设计5.1.1主窗口主窗口设计如下:图5-SEQ图\*ARABIC\s11主窗口设计图5.1.2子窗口设计节点参数窗口设计如下:图5-2节点参数设置窗口设计图粒子群参数设置窗口如下:图5-3粒子群参数设置窗口设计图5.2基本功能测试5.2.1测试环境操作系统:Windows10处理器:IntelCorei5-6200U编辑器:VisualStudioCode运行环境:Python3.7.65.2.2主窗口组件功能测试主窗口组件功能测试如下表所示:表5-1主窗口组件功能测试测试项目测试操作预期结果实际结果节点参数设置点击菜单栏“节点参数设置”弹出节点参数设置窗口节点参数设置窗口正常弹出粒子群参数设置点击菜单栏“粒子群参数设置”弹出粒子群参数设置窗口粒子群参数设置窗口正常弹出基本操作点击菜单栏“基本操作”,再点击“开始运行”根据输入参数,主窗口下方状态栏显示粒子群算法运行得到的最优覆盖率,并在画布上显示最优覆盖率下模拟的传感器的分布情况能够得到粒子群算法运行过程中,每次迭代得到的最优覆盖并在主窗口下方状态栏显示,同时在画布上显示当前最优覆盖率下的传感器分布情况点击菜单栏“基本操作”,再点击“清除”清除当前画布内容画布内容被成功清除点击菜单栏“基本操作”,再点击“重新开始”重置参数为0参数重置为0点击菜单栏“基本操作”,再点击“退出程序”退出整个程序程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论