① 实际延迟环节是10s,仿真时应该设置多少
晕,这个是proteus本身的问题,而且复位也没用的,这主要仿真数字逻辑的,你要改变时钟得在属性框里改的,51单片机默认是12MHZ的
② opnet网络仿真局域网那一块主要看哪些参数
拓补结构,节点的相关参数,比如串并口,通讯类型,
连接线路类型,参数,传输速率,背景流量,误码率等,可以看opnet里面的帮助文件的,很详细
③ 求高手详解下面一段NS仿真脚本代码
NS是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块已经非常丰富,几乎涉及到了网络技术的所有方面。所以,NS成了目前学术界广泛使用的一种网络模拟软件。在每年国内外发表的有关网络技术的学术论文中,利用NS给出模拟结果的文章最多,通过这种方法得出的研究结果也是被学术界所普遍认可的,此外,NS也可作为一种辅助教学的工具,已被广泛应用在了网络技术的教学方面。因此,目前在学术界和教育界,有大量的人正在使用或试图使用NS。
然而,对初学者来说,NS是非常难于掌握的,一般人从学习NS到上手至少需要半年多时间。原因是多方面的:一方面,NS内容庞杂,随软件所提供的手册更新不够快,初学者阅读起来非常困难;另一方面,使用NS还要掌握其它很多必备的相关知识以及相关工具,这会使初学者感到无从入手;有的使用者可能还不了解网络模拟的过程或是对NS软件的机制缺乏理解,这也影响了对NS的掌握。另外,不论在国外还是国内,还没有一本书能集中回答和解决这些问题,这也是NS难于被掌握的一个重要原因。
1、NS2简介
NS2(Network Simulator, version 2)是一种面向对象的网络仿真器,本质上是一个离散事件模拟器。由UC Berkeley开发而成。它本身有一个虚拟时钟,所有的仿真都由离散事件驱动的。目前NS2可以用于仿真各种不同的IP网,已经实现的一些仿真有:网络传输协议,比如TCP和UDP;业务源流量产生器,比如FTP, Telnet, Web CBR和VBR;路由队列管理机制,比如Droptail , RED和CBQ;路由算法,比如Dijkstra等。NS2也为进行局域网的仿真而实现了多播以及一些MAC 子层协议。
NS2使用C++和Otcl作为开发语言。NS可以说是Otcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。事件调度器计算仿真时间,并且激活事件队列中的当前事件,执行一些相关的事件,网络组件通过传递分组来相互通信,但这并不耗费仿真时间。所有需要花费仿真时间来处理分组的网络组件都必须要使用事件调度器。它先为这个分组发出一个事件,然后等待这个事件被调度回来之后,才能做下一步的处理工作。事件调度器的另一个用处就是计时。NS是用Otcl和C++编写的。由于效率的原因,NS将数据通道和控制通道的实现相分离。为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++写出并编译的,这些对象通过映射对Otcl解释器可见。
当仿真完成以后,NS将会产生一个或多个基于文本的跟踪文件。只要在Tcl脚本中加入一些简单的语句,这些文件中就会包含详细的跟踪信息。这些数据可以用于下一步的分析处理,也可以使用NAM将整个仿真过程展示出来。
2、使用NS进行网络仿真的方法和一般过程。
进行网络仿真前,首先分析仿真涉及哪个层次,NS仿真分两个层次:一个是基于OTcl编程的层次。利用NS已有的网络元素实现仿真,无需修改NS本身,只需编写OTcl脚本。另一个是基于C++和OTcl编程的层次。如果NS中没有所需的网络元素,则需要对NS进行扩展,添加所需网络元素,即添加新的C++和OTcl类,编写新的OTcl脚本。
假设用户已经完成了对NS的扩展,或者NS所包含的构件已经满足了要求,那么进行一次仿真的步骤大致如下:
(1)开始编写OTcl脚本。首先配置模拟网络拓扑结构,此时可以确定链路的基本特性,如延迟、带宽和丢失策略等。
(2)建立协议代理,包括端设备的协议绑定和通信业务量模型的建立。
(3)配置业务量模型的参数,从而确定网络上的业务量分布。
(4)设置Trace对象。NS通过Trace文件来保存整个模拟过程。仿真完后,用户可以对Trace文件进行分析研究。
(5)编写其他的辅助过程,设定模拟结束时间,至此OTcl脚本编写完成。
(6)用NS解释执行刚才编写的OTcl脚本。
(7)对Trace文件进行分析,得出有用的数据。
(8)调整配置拓扑结构和业务量模型,重新进行上述模拟过程。
NS2采用两级体系结构,为了提高代码的执行效率,NS2 将数据操作与控制部分的实现相分离,事件调度器和大部分基本的网络组件对象后台使用C++实现和编译,称为编译层,主要功能是实现对数据包的处理;NS2的前端是一个OTcl 解释器,称为解释层,主要功能是对模拟环境的配置、建立。从用户角度看,NS2 是一个具有仿真事件驱动、网络构件对象库和网络配置模块库的OTcl脚本解释器。NS2中编译类对象通过OTcl连接建立了与之对应的解释类对象,这样用户间能够方便地对C++对象的函数进行修改与配置,充分体现了仿真器的一致性和灵活性。
3、NS2的功能模块
NS2仿真器封装了许多功能模块,最基本的是节点、链路、代理、数据包格式等等,下面分别来介绍一下各个模块。
(1)事件调度器:目前NS2提供了四种具有不同数据结构的调度器,分别是链表、堆、日历表和实时调度器。
(2)节点(node):是由TclObject对象组成的复合组件,在NS2中可以表示端节点和路由器。
(3)链路(link):由多个组件复合而成,用来连接网络节点。所有的链路都是以队列的形式来管理分组的到达、离开和丢弃。
(4)代理(agent):负责网络层分组的产生和接收,也可以用在各个层次的协议实现中。每个agent连接到一个网络节点上,由该节点给它分配一个端口号。
(5)包(packet):由头部和数据两部分组成。一般情况下,packet只有头部、没有数据部分。
4、NS2的软件构成
NS2包含Tcl/Tk, OTcl, NS,Tclcl。其中Tcl是一个开放脚本语言,用来对NS2进行编程;Tk是Tcl的图形界面开发工具,可帮助用户在图形环境下开发图形界面;OTcl是基于Tcl/Tk的面向对象扩展,有自己的类层次结构;NS2为本软件包的核心,是面向对象的仿真器,用C++编写,以OTcl解释器作为前端;Tclcl则提供NS2和OTcl的接口,使对象和变量出现在两种语言中。为了直观的观察和分析仿真结果,NS2 提供了可选的Xgraphy、可选件Nam。
5、NS现有的仿真元素
从网络拓扑仿真、协议仿真和通信量仿真等方面介绍NS的相应元素:
(1)网络拓扑主要包括节点、链路。NS的节点由一系列的分类器(Classifier,如地址分类器等)组成,而链路由一系列的连接器(Connector)组成。
(2)在节点上,配置不同的代理可以实现相应的协议或其它模型仿真。如NS的TCP代理,发送代理有:TCP,TCP/Reno,TCP/Vegas,TCP/Sack1,TCP/FACK,TCP/FULLTCP等,接收代理有:TCPSINK,TCPSINK/DELACK。TCPSINK/SACK1,TCPSINK/SACK1/DELACK等。此外,还提供有UDP代理及接收代理Null(负责通信量接收)、Loss Monitor(通信量接收并维护一些接收数据的统计)。
(3)网络的路由配置通过对节点附加路由协议而实现。NS中有三种单播路由策略:静态、会话、动态。
(4)在链路上,可以配置带宽、时延和丢弃模型。NS支持:Drop-tail(FIFO)队列、RED缓冲管、CBO(包括优先权和Round-robin 调度)。各种公平队列包括:FQ,SFQ,DRR等。
(5)通信量仿真方面,NS提供了许多通信应用,如FTP,它产生较大的峰值数据传输;Telnet则根据相应文件随机选取传输数据的大小。此外,NS提供了四种类型的通信量产生器:EXPOO,根据指数分布(On/Off)产生通信量,在On阶段分组以固定速率发送,Off阶段不发送分组,On/Off的分布符合指数分布,分组尺寸固定;POO,根据Pareto分布(On/Off)产生通信量,它能用来产生长范围相关的急剧通信量;CBR,以确定的速率产生通信量,分组尺寸固定,可在分组间隔之间产生随机抖动;Traffic Trace,根据追踪文件产生通信量。
④ 神经网络都需要设置节点数嘛
输入向量维数=输入层节点数输出向量维数=输出层节点数看来你是做三层网络,只有一个隐藏层。隐藏层节点数,传递函数选择都是开放课题。看你要解决什么问题。如果简单做demo,就自己尝试就可以了。
⑤ OPNET双工ALOHA模型中节点模型应该如何设置
在网络层放置几个节点,然后运行就可以了。
把GEN模块的发送速率提升到网络层,这样仿真的时候可以设置不同的发送速率,组后对比结果
⑥ 急 急 急 求一篇关于《通信网络仿真研究》的论文
帮您下了两篇,希望对您有所帮助哦!祝您愉快!
1
题目:基于无线传感器网络仿真平台的研究
一、引言
传感器网络(WSN)日新月异,各种网络方案和协议日趋复杂,网络规模日趋庞大,对网络研究人员而言,掌握网络仿真的重要性是不言而喻的。WSN仿真能够在一个可控制的环境里研究WSN应用,包括操作系统和网络协议栈,能够仿真数量众多的节点,能够观察由不可预测的干扰和噪声引起的难以琢磨的节点间的相互作用,获取节点间详细的细节,从而提高节点投放后的网络成功率,减少投放后的网络维护工作。目前无线传感器网络使用的仿真工具主要有NS2、TinyOS、OPNET、OMNET++等等。其中TinyOS是专门针对无线传感器网络的特点而研究开发的。
二、无线传感器网络仿真简介
在传感器网络中,单个传感器节点有两个很突出的特点。一个特点是它的并发性很密集;另一个特点是传感器节点模块化程度很高.上述这些特点使得无线传感器网络仿真需要解决可扩展性与仿真效率、分布与异步特性、动态性、综合仿真平台等等问题。
三、无线传感器网络常用仿真工具
无线传感器网络常用仿真工具有NS2、OPNET、OMNET++、TinyOS,下面我们简要介绍它们各自的性能和特点。
3.1 NS2
NS是一种可扩展、以配置和可编程的时间驱动的仿真工具,它是由REAL仿真器发展而来.在NS的设计中,使用C++和OTCL两种程序设计语言, C++是一种相对运行速度较快但是转换比较慢的语言,所以C++语言被用来实现网络协议, 编写NS底层的仿真引擎; OTCL是运行速度较慢,但可以快速转换的脚本语言,正好和C++互补,所以OTCL语言被用来配置仿真中各种参数,建立仿真的整体结构, OTCL的脚本通过调用引擎中各类属性、方法,定义网络的拓扑,配置源节点、目的节点建立链接,产生所有事件的时间表,运行并跟踪仿真结果,还可以对结果进行相应的统计处理或制图.NS可以提供有线网络、无线网络中链路层及其上层精确到数据包的一系列行为仿真。NS中的许多协议都和真实代码十分接近,其真实性和可靠性是非常高的。
3.2 OPNET
OPNET是在MIT研究成果的基础上由MIL3公司开发的网络仿真软件产品。 OPNET的主要特点包括以下几个方面:(1)采用面向对象的技术,对象的属性可以任意配置,每一对象属于相应行为和功能的类,可以通过定义新的类来满足不同的系统要求; (2)OPNET提供了各种通信网络和信息系统的处理构件和模块;(3) OPNET采用图形化界面建模,为使用者提供三层(网络层、节点层、进程层)建模机制来描述现实的系统;(4) OPNET在过程层次中使用有限状态机来对其它协议和过程进行建模,用户模型及OPNET内置模型将会自动生成C语言实现可执行的高效、高离散事件的模拟流程;(5) OPNET内建了很多性能分析器,它会自动采集模拟过程的结果数据;(6)OPNET几乎预定义了所有常用的业务模型,如均匀分布、泊松分布、欧兰分等。
3.3 OMNET++
OMNET++是面向对象的离散事件模拟工具,为基于进程式和事件驱动两种方式的仿真提供了支持。 OMNET++采用混合式的建模方式,同时使用了OMNET++特有的ned(Network Discription,网络描述)语言和C++进行建模。OMNET++主要由六个部分组成:仿真内核库、网络描述语言的编译器、图形化的网络编译器、仿真程序的图形化用户接口、仿真程序的命令行用户接口和图形化的向量输出工具。OMNET++的主要模型拓扑描述语言NED,采用它可以完成一个网络模型的描述。 网络描述包括下列组件:输入申明、信道定义、系统模块定义、简单模块和复合模块定义。使用NED描述网络,产生.NED文件,该文件不能直接被C++编译器使用,需要首先采用OMNET++提供的编译工具NEDC将.NED文件编译成.cpp文件。最后,使用C++编译器将这些文件与用户和自己设计的简单模块程序连接成可执行程序。
3.4 TinyOS
TinyOS是专门针对传感器研发出的操作系统。在TinyOS上编程序使用的语言为nesC(C language for network embedded systems) 语言。
nesC语言是由C语言扩展而来的,意在把组件化/模块化思想和TinyOS基于事件驱动的执行模型结合起来。 nesC 组件有Mole(模块)和Configuration(连接配置文件)两种。在模块中主要实现代码的编制,在连接配置文件中主要是将各个组件和模块连接起来成为一个整体。
TinyOS程序采用的是模块化设计,所以它的程序核心往往都很小,能够突破传感器存储资源少的限制,这能够让TinyOS很有效的运行在无线传感器网络上并去执行相应的管理工作等。TinyOS的特点主要体现在以下几个方面:
(1)组件化编程(Componented-Based Architecture)。TinyOS的组件通常可以分为以下三类:硬件抽象组件、合成组件、高层次的软件组件;硬件抽象组件将物理硬件映射到TinyOS组件模型.合成硬件组件模拟高级硬件的行为.高层次软件模块完成控制、路由以及数据传输等。}
(2)事件驱动模式(Event-Driven Architecture)。事件驱动分为硬件驱动和软件事件驱动。硬件事件驱动也就是由一个硬件发出中断,然后进入中断处理函数。而软件驱动则是通过singal关键字发出一个事件。
(3)任务和事件并发模式(Tasks And Events Concurrency Model)。任务用在对于时间要求不是很高的应用中,任务之间是平等的,即在执行时是按顺序先后来的,而不能相互抢占,TinyOS对任务是按简单的FIFO队列进行处理的。事件用在对于时间的要求很严格的应用中,而且它可以占先优于任务和其他事件执行。
(4)分段执行(Split-Phase Operations)。在TinyOS中由于tasks 之间不能互相占先执行,所以TinyOS没有提供任何阻塞操作,为了让一个耗时较长的操作尽快完成,一般来说都是将对这个操作的需求和这个操作的完成分开来实现,以便获得较高的执行效率。
(5) 轻量级线程(lightweight thread)。轻量级线程(task, 即TinyOS中的任务)按FIFO方式进行调度,轻量级线程之间不允许抢占;而硬件处理线程(在TinyOS中,称为硬件处理器),即中断处理线程可以打断用户的轻量级线程和低优先级的中断处理线程,对硬件中断进行快速处理响应。
(6) 主动通信消息(active message)。每一个消息都维护一个应用层和处理器。当目标节点收到这个消息后,就会把消息中的数据作为参数,并传递给应用层的处理器进行处理。应用层的处理器一般完成消息数据的解包操作、计算处理或发送响应消息等工作。
TinyOS操作系统中常用的仿真平台主要是TOSSIM和Avrora
(1)TOSSIM(TinyOS simulation)是一个支持基于TinyOS的应用在PC机上运行的模拟器.TOSSIM运行和传感器硬件相同的代码,仿真编译器能直接从TinyOS应用的组件表中编译生成仿真程序。
(2)Avrora是一种专门为Atmel和Mica2节点上以AVR单片机语言编写的程序提供仿真分析的工具。它的主要特点如下:1) 为AVR单片机提供了cycle accurate级的仿真,使静态程序可以准确的运行。它可以仿真片上(chip-on)设备驱动程序,并为片外(off-chip)程序提供了有规则的接口;2)可以添加监测代码来报告仿真程序运行的性能,或者可以在仿真结束后收集统计数据,并产生报告;3)提供了一套基本的监控器来剖析程序,这有助于分析程序的执行模式和资源使用等等;4)Avrora可以用gdb调试程序;5) Avrora可以为程序提供一个程序流图,通过这个流程图可以清楚的表示机器代码程序的结构和组织;6) Avrora中提供了分析能量消耗的工具,并且可以设置设备的带电大小;7) Avrora可以用来限制程序的最大堆栈空间,它会提供一些关于目前程序中的最大的堆栈结构,和一些关于空间和时间消耗的信息报告。
3.5性能比较
TinyOS 用行为建模,可以仿真跨层协议;仿真程序移植到节点上,不需要二次编码。
通过对上述几种仿真软件的分析比较,我们可以清楚的看到各个仿真软件的特点、适用范围,我们可以根据研究需要选择适合的仿真软件,使得我们的学习研究可以事半功倍。
结束语
网络仿真技术为通信网络规划和优化提供了一种科学高效的方法。网络仿真在国内是近几年才发展起来的,但在国外网络仿真技术已经相当成熟,我们应该大胆地借鉴国外先进技术,促进国内网络仿真技术迅速发展。
参考文献
【1】于海斌,曾鹏等.智能无线传感器网络.科学出版社,2006,p283~p303,
【2】石怀伟,李明生,王少华,网络仿真技术与OPNET应用实践,计算机系统应用2006.第3期
【3】李玥,吴辰文,基于OMNeT++地TCP/IP协议仿真,兰州交通大学学报(自然科学版),2005年8月
【4】袁红林,徐晨,章国安,TOSSIM:无线传感器网络仿真环境,传感器与仪表仪器 ,2006年第22卷第7-1期
2
集群虚拟服务器的仿真建模研究
来源:电子技术应用 作者:杨建华 金笛 李烨 宁宇
摘要:阐述了集群虚拟服务器的工作原理和三种负载均衡方式,通过实例讨论了虚拟服务器的仿真和建模方法,创建了测试和仿真系统性能的输入和系统模型,并依据Q—Q图和累积分布函数校验了其概率分布。
关键词:集群虚拟服务器负载均衡仿真建模概率分布
随着互联网访问量和数据流量的快速增长,新的应用层出不穷。尽管Intemel服务器处理能力和计算强度相应增大,但业务量的发展超出了先前的估计,以至过去按最优配置建设的服务器系统也无法承担。在此情况下,如果放弃现有设备单纯将硬件升级,会造成现有资源的浪费。因此,当前和未来的网络服务不仅要提供更丰富的内容、更好的交互性、更高的安全性,还要能承受更高的访问量,这就需要网络服务具有更高性能、更大可用性、良好可扩展性和卓越的性价比。于是,集群虚拟服务器技术和负载均衡机制应运而生。
集群虚拟服务器可以将一些真实服务器集中在一起,组成一个可扩展、高可用性和高可靠性的统一体。负载均衡建立在现有网络结构之上,提供了一种廉价、有效和透明的方法建立服务器集群系统,扩展网络设备和服务器的带宽,增加吞吐量,加强网络数据处理能力。提高网络的灵活性和可用性。使用负载均衡机制.大量的并发访问或数据流量就可以分配到多台节点设备上分别处理。系统处理能力得到大幅度提高,大大减少用户等待应答的时间。
实际应用中,虚拟服务器包含的真实服务器越多,整体服务器的性能指标(如应答延迟、吞吐率等)越高,但价格也越高。在集群中通道或其他部分也可能会进入饱和状态。因此,有必要根据实际应用设计虚拟服务器的仿真模型,依据实际系统的测量数据确定随机变量的概率分布类型和参数,通过分位点一分位点图即Q-Q图(Quaantile-Quantile Plot)和累积分布函数(Cumulative Distribution Functions)等方法校验应答或传播延迟等性能指标的概率分布,通过仿真软件和工具(如Automod)事先分析服务器的运行状态和性能特点,使得集群系统的整体性能稳定,提高虚拟服务器设计的客观性和设计的可靠性,降低服务器建设的投资风险。
1 集群虚拟服务器的体系结构
一般而言,首先需要在集群虚拟服务器上建立互联网协议伪装(Internet Protocol Masquerading)机制,即IP伪装,接下来创立IP端口转发机制,然后给出在真实服务器上的相关设置。图1为集群虚拟服务器的通用体系结构。集群虚拟服务器通常包括:真实服务器(RealServers)和负载均衡器(Load Balmlcer)。
由于虚拟服务器的网络地址转换方式是基于IP伪装的,因此对后台真实服务器的操作系统没有特别要求,可以是windows操作系统,也可以是Lmux或其他操作系统。
负载均衡器是服务器集群系统的惟一入口点。当客户请求到达时,均衡器会根据真实服务器负载情况和设定的调度算法从真实服务器中选出一个服务器,再将该请求转发到选出的服务器,并记录该调度。当这个请求的其他报文到达后,该报文也会被转发到前面已经选出的服务器。因为所有的操作都在操作系统核心空间中完成,调度开销很小,所以负载均衡器具有很高的吞吐率。整个服务器集群的结构对客户是透明的,客户看到的是单一的虚拟服务器。
负载均衡集群的实现方案有多种,其中一种是Linux虚拟服务器LVS(Linux Virtual Server)方案。LVS实现负载均衡的技术有三种:网络地址转换(Network Address Translation)、直接路由(Direct Routing)和IP隧道(IP Yunneling)。
网络地址转换按照IETF标准,允许一个整体机构以一个公用IP地址出现在Inlemet上。通过网络地址转换,负载均衡器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的应答报文通过均衡器时,报文的源地址被重写,把内部私有网络地址翻译成合法网络IP地址,再返回给客户,完成整个负载调度过程。
直接路由的应答连接调度和管理与网络地址转换的调度和管理相同,但它的报文是直接转发给真实服务器。在直接路由应答中,均衡器不修改、也不封装IP报文.而是将数据帧的媒体接入控制MAC(Medium Aceess Control)地址改为选出服务器的MAC地址,再将修改后的数据帧在局域网上发送。因为数据帧的MAC地址是选出的服务器,所以服务器肯定可以收到该数据帧,从中获得该IP报文。当服务器发现报文的目标地址在本地的网络设备时,服务器处理该报文,然后根据路由表应答报文,直接返回给客户。
IP隧道是将一个IP报文封装在另一个IP报文中的技术。该技术可以使目标为某个口地址的数据报文被封装和转发到另一个IP地址。用户利用IP隧道技术将请求报文封装转发给后端服务器,应答报文能从后端服务器直接返回给客户。这样做,负载均衡器只负责调度请求,而应答直接返回给客户,不需要再处理应答包,将极大地提高整个集群系统的吞吐量并有效降低负载均衡器的负载。IP隧道技术要求所有的服务器必须支持IP Yunnehng或lP.封装(Encapsulation)协议。
2 集群虚拟服务器报文延迟的确定
通过一个装有5台真实服务器并使用网络地址转换技术实现Linux虚拟服务器的实际系统,可以得到有关请求和应答报文的时戳(Time Stamp)文件n根据这些文件.能够计算出集群虚拟服务器的仿真和建模所需数据。
为了确定随机变量分布类型和参数,应该统计下列延迟:(1)从客户到负载均衡器的传播延迟(Transport Delay);(2)负载均衡器的应答延迟(Response Delay);(3)从负载均衡器到真实服务器的传播延迟;(4)真实服务器的应答延迟;(5)从真实服务器到负载均衡器的传播延迟;f61负载均衡器对真实服务器的应答延迟;(7)从负载均衡器到客户的传播延迟。
在实际系统产生的时戳文件中,问接地描述了上述各延迟时间。文件包含的内容如下:
当一个服务请求到达集群虚拟服务器系统时,即产生带有惟一序列号的同步请求报文(Synchronized Request Package),将该报文转发到某一真实服务器,同时建立该服务器与客户端的连接,每个这样的连接都带有惟一的端口号;该服务器处理通过该连接的确认请求报文(Acknowledgement Request Package),直到服务器收到结束请求报文(Finished Request Package)。对每一种类型的请求报文,系统都给予一个相应的应答报文。因此,在不同的报文时戳文件中,如果两条记录具有相同的端口号、报文类型和序列号,则它们是同一个请求或应答报文,对相关的时戳相减即可得到集群虚拟服务器系统的仿真和建模所需的延迟数据。通过所编写的C++程序即可计算这些延迟。
3 系统仿真模型
上述的集群虚拟服务器实际系统的仿真模型如图2所示,在负载均衡器、各通道、5台真实服务器中通过或处理的均为请求或应答报文。
4 随机变量模型的确定
对具有随机变量的集群虚拟服务器进行仿真,必须确定其随机变量的概率分布,以便在仿真模型中对这些分布进行取样,得到所需的随机变量。
4.1 实际虚拟服务器的延迟数据概况
在实际虚拟服务器的负载均衡器、各通道和5台真实服务器中,对请求和应答报文都有一定的延迟。部分报文延迟的统计数据如表1所示。
由表l中的数据可见,报文延迟的中位数与均值差异较大,所以其概率分布不对称;变异系数不等于l,导致概率分布不会是指数分布,而可能是γ分布或其他分布。
4.2 随机变量的概率分布
图3为第一台真实服务器到负载均衡器之间的通道报文传播延迟直方图,其中t为报文延迟时间,h(t)为报文延迟区间数。由图3可知,通道内的报文传播延迟数据近似服从γ分布或对数正态分布。
描述γ分布需要两个参数:形状(Shape)参数α和比例(Scahj)参数口,这两个参数与均值M、方差V之间的关系是非线性的:
描述对数正态分布也需要形状参数σ和比例参数μ,这两个参数与均值M、方差V之问的关系也是非线性的:
式(1)~(4)都可以通过最大似然估计MLE(Maximum Likelihood Estimator)方法或最速下降法(Steepest Descent Method)求出。表2给出了甩这两种方法求出的从第一台真实服务器到负载均衡器之间通道内的报文延迟概率分布参数。
使用累积分布函数和Q-Q图可以校验并进一步确定上述通道内报文传播延迟的概率分布。取用表2中的参数,可以得到γ分布的累积分布函数,如图4所示,其中t为报文延迟时间,F(t)为报文延迟的累积分布函数。为作比较,实验分布也画在该图中。γ分布和对数正态分布的Q-Q图如图5所示。
由图4和图5可以看出,γ分布较好地拟合了该通道内的报文传播延迟数据分布。其他通道报文延迟直方图也有类似形状。经计算和分析,这些通道的报文传播延迟概率分布也近似服从γ分布。
根据表1中的数据以及相关的直方图都难以确定在负载均衡器和真实服务器中报文延迟的理论分布。因此,采用实验分布作为其模型。
5 模型仿真
在建立了图1所示的集群虚拟服务器的系统仿真模型并确定了其随机变量的分布特性后,可以采用由美国布鲁克斯自动化公司(Brooks Automation)开发的仿真软件Automod输入该模型,并通过在Automod环境中编程进行集群虚拟服务器的仿真和分析。
在Automod的仿真过程中,可以直接利用软件提供的资源(Resource)作为各种报文数据处理的单元;系统各部分的报文排队活动可以直接通过排队(Queue)实现;建立一个负载产生器,等效为在Inlemtet上使用虚拟服务器的客户。
通过采用Automod的属性变量(Attribute Variable)可以解决负载均衡器的双方向报文处理功能的问题。负载均衡器使用轮转调度算法(Round Robin Scheling),即假设所有真实服务器的处理性能均相同,依次将请求调度到不同的服务器。
验证仿真模型可以分别在实际虚拟服务器系统和Automod的仿真模型中从以下两方面进行对比:(1)在负载均衡器、各个真实服务器和通道中排队的应答或传播报文数量;(2)真实服务器及负载均衡器的cPU利用率。例如,当使用实际的应答或传播报文延迟数据时,在Automod的仿真模型中,如果设置一个较低的资源量,则在仿真过程中就会发现大部分的负载都被堵在真实服务器的排队中,即真实服务器处理报文的能力过低,无法与实际系统的状况相比;如果设置一个较高的资源量,则意味着服务器的并行处理能力增加,真实服务器的利用率提高,负载就很少或不会滞留在真实服务器的排队中。因此,在Automod中可以根据实际情况调整仿真模型的资源量大小。
如果在Automod中增加负载产生器的负载产生率,就等效为用户访问量增加,通过观察排队中的负载滞留比例,就可以发现系统的最大处理报文的能力以及系统各部分应答报文可能出现瓶颈之处。例如,将负载产生率增加一倍,虽然系统仍然可以处理所有的报文,但各台真实服务器的平均利用率将达80%左右。显然,这时系统应答报文的“瓶颈”为真实服务器,有必要在系统中增添一台新的真实服务器。
通过一个包括5台真实服务器的实际虚拟服务器系统。收集并计算了仿真和建模的样板数据。依据系统报文延迟的中位数、均值、变异系数和直方图等,确定了系统随机变量的概率分布;采用最大似然估计方法和最速下降法,得到了通道概率分布的具体参数;根据Q-Q图和累积分布函数进一步校验并最终确定通道的概率分布形式。使用Automod软件进行了仿真建模和编程,借助仿真结果可以发现虚拟服务器的最大处理能力和可能的“瓶颈”之处。通过及时定位系统“瓶颈”,可以有的放矢地进一步研究和改进系统,有效提高系统性能。所采用的仿真方法也可以用于其他领域的仿真建模或分析中。
在仿真模型中,负载均衡方式和调度算法还需要进一步增加,以便于比较不同的虚拟服务器系统。样本数据也需要进一步扩充,以避免报文延迟的自相关性。
⑦ opnet 中如何动态设置节点发射功率大小
有2种方法:
最简单的方法就是直接在标签中写onclick="",但是这样写其实是有点low的,
第二种方式是通过给类名绑定一个事件。
<pid="pLabel">新加一条</p>
<ulid="ulLabel">
<liclass="liLabel">aaa1</li>
<liclass="liLabel">aaa2</li>
<liclass="liLabel">aaa3</li>
</ul>
<scripttype="text/javascript">
$("#pLabel").click(function(){
$("#ulLabel").append('<liclass="liLabel">aaaQ</li>');//动态像ul的末尾追加一个新元素
});
</script>
方法一:使用live
live()函数会给被选的元素绑定上一个或者多个事件处理程序,并且规定当这些事件发生时运行的函数。通过live()函数适用于匹配选择器的当前及未来的元素。比如,通过脚本动态创建的元素。
$('.liLabel').live('click',function(){
alert('OK');
});
方法二:使用on
可以通过on方法绑定事件,可以绑定到它的父级或者body中,实现如下:
$("#ulLabel").on('click','.liLabel',function(){
alert('OK')
});
或者:
$("body").on('click','.liLabel',function(){
alert('OK')
});
注意绑定的事件,需要绑定在父元素。
⑧ 请问OPNET做仿真时如何设置业务参数谢谢!
你是想问设置参数类型吗?在节点模型下的进程中 Interfaces->Model Attributes 中设置 Defult Vaule
⑨ simulink仿真的步长一般设置为多少才合适
我做电力系统和电力电子方面的一般都设为5e-5,其他领域的不太了解
⑩ 配电网中的节点数一般有多少,最好举个实际例子
以一个简单的11节点树状网为例,其节点和支路编号采用与网络结构无关的自然编号(即从1开始的自然数顺序编号),其具体网络结构如图1所示: 在这个网络中,支路1、2、5属于同一层次,当计算支路功率损耗和电压损耗时,彼此不相关,可以并行计算。同样,支路3、4、6、7、8、10也属同一层,其功率损耗和电压损耗也可以并行计算。这样,根据图1网络的拓扑结构,可以直观地看到网络支路共分为3层,且可以知道每一层的支路情况以及每一支路的送端节点和受端节点情况。显然,只要了解了这些信息,就能够分层实现功率前推和电压回代的并行计算,而且无需对节点和支路重新编号。 为了描述以上的网络层次信息,定义如下: (1)网络层次矩阵L: 设网络分为Li层,每层包含的支路数最多为M,则网络层次矩阵L是1个(Li´M)矩阵,第i行的非零元素就是网络第i层包含的支路编号,非零元素的个数就是该层包含的支路数。从L1层到Li层代表了功率流动的方向,前推时从Li层到L1层,回代时从L1层到Li层。 (2)支路送端节点矩阵f和受端节点矩阵t:由于原始数据中支路的首节点到末节点的方向不一定就是功率流向,因此必须根据功率方向来确定支路的送端节点和受端节点。每条支路上的功率都由该支路的送端流向受端,支路送端节点矩阵和受端节点矩阵都是一维矩阵,元素个数等于支路数,第i个元素就是支路i的送端(受端)节点编号。 (3)支路层次关联矩阵C: 设网络支路数为N,支路层次关联矩阵为1个(N´N)的矩阵。矩阵第i行j列元素为1,表示支路i与支路j为上下层关系,它们直接相连,且支路i的上层支路是支路j,支路j的下层支路是支路i。当支路间没有这种直接的上下层次关系时,对应的元素为0。 在上述几个矩阵中,以网络层次矩阵描述整个网络的支路分层情况。支路送端节点矩阵和受端节点矩阵反映每条支路与送端、受端节点的关联关系。支路层次关联矩阵反映的是支路之间的直接上下层次关系。 下面介绍一下如何分析网络结构,以形成这几个矩阵: (1)形成网络层次矩阵L、支路送端节点矩阵f和受端节点矩阵t。 进行网络层次分析时,首先形成节点-支路关联矩阵。若节点数为N,则辐射型网络的支路数必定为N-1,节点-支路关联矩阵是1个N´N-1矩阵。当节点i与支路j相连时,则关联矩阵的i行j列元素为1,不相连时,则该元素为0。由此形成的节点-支路关联矩阵,每一列有两个非零元素,其对应的行号就是该列支路的两端节点编号;每一行的非零元素对应的列号就是与该行节点相连的支路编号。图1网络的节点-支路关联矩阵A为式中 行表示节点1~11;列表示支路1~10。 从根节点7,即矩阵A的第7行出发,仅找到第9列的元素为1,即节点7仅与支路9相连。与根节点相连的所有支路都属于第1层支路,且根节点为送端节点,所以第1层支路为支路9,支路9的送端节点为7,受端节点为支路9的另一端节点,即矩阵第9列上另一个非零元素对应的节点1,这就是网络的第1层分析。 从网络第1层支路的所有受端节点出发,与它们相连的其他所有支路属于第2层支路,第2层支路的送端节点为第1层支路的受端节点。从节点1出发,查找矩阵A第1行的元素,找到第1、2、5列元素为1,故第2层支路为支路1、2、5,它们的送端节点为节点1,受端节点分别为相应列上另一个非零元素对应的节点。依次查找下去,沿着矩阵A中的轨迹可以整理出整个网络的层次结构和每条支路的送端、受端节点,其中实线表示第1层分析轨迹,虚线表示第2层分析轨迹,点划线表示第三层分析轨迹。 网络层次分析以后,形成的网络层次矩阵L(行表示L1~L3层)、支路送端节点矩阵f和受端节点矩阵t(列表示支路1~10)为 (2)形成支路层次关联矩阵C。 除了第1层支路没有上层支路外,任意1条支路只有1条直接相连的上层支路,而且始终遵循这样的原则:该支路的送端节点就是与其直接相连的上层支路的受端节点。通过支路送端节点和受端节点矩阵,可以很容易地找到任意一条支路的直接上层支路,比如由支路送端节点矩阵f找到任意支路i的送端节点bi,然后由支路受端节点矩阵t找到受端节点为bi的支路j,这就意味着支路i的上一层支路为支路j,即矩阵的i行j列元素为1。 查找每条支路的直接上层支路,可形成支路层次关联矩阵,图1网络的支路层次关联矩阵C为式中 行表示节点1~10;列表示支路1~10。 从支路层次关联矩阵可以查找任意支路的上层支路和下层支路。如果需要查找支路j的上一层支路,只需要知道矩阵C的第j行为1的元素所在的列就可以了;同样,如果需要查找支路j的下一层支路,只需要知道矩阵C的第j列为1的元素所在的行就可以了。例如,从矩阵C的第1行可知支路1的上一层支路为支路9,从矩阵第2列可知支路2的下一层支路为支路6、7,等等。3 变压器模型 当网络中存在变压器时,通常采用图2(b)所示的P型等值电路来等效图2(a)的变压器支路。但是,通过多次计算分析发现,当网络中存在三绕组降压变压器时,由于中压侧等效绕组的阻抗普遍很小(常常是很小的负阻抗),所以当中压侧变比时,将会产生很大的对地导纳,导致前推回代法不收敛。 下面以一简单的例子分析之,该例只有一个三绕组变压器的树状网络,高压端为根节点,中压和低压端接负荷,变压器型号为SFPZ9-180000/220(220±8´1.25%/121/10.5,180/180/90),变压器参数为SB=100MVA;基准电压为220kV/110kV/10kV;Y0=0.000748-j0.000799pu;VH=1.05pu;SM=0.09+j0.03pu;SL=0.04-j0.04pu;网络等值电路如图3所示,等值参数见表1。 当三侧等效双绕组支路采用P型等值电路时,前推回代法不收敛。如果把中压侧的变比改为1,而阻抗不变,或把中压侧的阻抗增大为低压侧或高压侧的阻抗,而变比不变,前推回代法都可以收敛。对同样的网络,我们又测试了其它型号的三绕组变压器,而且还改变了功率和电压,都得到同样的结论。所以可以确定不收敛的原因是中压侧的非标准变比和小阻抗联合作用产生的较大的对地导纳。 为了解决∏型等效模型产生的不收敛问题,本文根据理想变压器只改变电压、不改变传送功率的原理,提出了一种新的电压变换模型来处理变压器支路,并推导了在前推和回代时的公式,具体如下: 对于变压器支路,根据功率的流向,存在升压和降压两种方式,图4(a)为降压方式,图4(b)为升压方式,它们的处理方法略有不同; 对于图4(a)的降压方式有 对于图4(b)的升压方式有 4 分层前推回代法的主要步骤 同时考虑对地支路、线路支路、升压变压器和降压变压器支路的分层前推回代算法如下: (1)功率前推 设支路受端计算电压V为式中 φ为与该支路相连的下层支路集合。 支路送端功率为 根据网络层次矩阵,从网络的第L层前推到第1层,逐层更新支路送端功率,由支路层次矩阵得到各支路的φ集合。 (2)电压回代 设支路送端计算电压V为支路电压损耗为 根据网络层次矩阵,从网络的第1层回代到第L层,逐层更新支路受端节点的电压,也即更新了下一层支路的送端节点电压。 式(5)~(10)中,Vf为支路送端节点电压;Vt为支路受端节点电压;由支路送端节点矩阵和受端节点矩阵可以容易得到;Y为支路受端节点对地导纳;S0为支路受端节点负荷;Z为支路阻抗;S¢是支路受端功率;S为支路送端功率;k为变压器支路变比;*表示共轭。 在MATLAB环境下,以上的功率前推和电压回代计算,都可以直接利用其快速的复数矩阵运算功能来实现。此时,式(5)~(10)中的变量都是复数的矩阵变量,它们可以直接进行相关的代数运算,其中,乘、除和乘方运算都使用点乘、点除和点乘方的方式,而取复数的共轭采用函数conj(·)。这样,只需简单的6句代码就可以实现式(5)~(10)相应的潮流计算,代码量非常少,且相对单条支路功率前推和电压回代计算的循环实现方式,速度将会大幅度提高,且规模越大,速度提高的幅度越大。5 算例 为了对比本文的分层前推回代法与文[3]的前推回代法,在MATLAB环境下进行了相应算法的程序编制,并分别以IEEE40节点树状网和一个实际的1338节点城市配电网络作为算例进行了计算,两种算法的计算结果完全一样,但分层前推回代法计算时间分别为0.03s和0.75s,文[3]的前推回代法计算时间分别为0.12s和91s。这显示出分层前推回代法在计算速度上的明显优势,并且网络规模越大,优势越显着。这是由于随着网络规模的增大,在供电半径的限制下网络层次不可能增大很多,因此相比较而言分层的效果更显着,例如IEEE40节点网络的39条支路分为10层,平均每层只有4条支路,而1338节点网络的1337条支路共分为38层,平均每层35条支路,最多的一层上有113条支路。6 结论 利用辐射型网络同一层次之间的支路功率前推和电压回代相互独立的特点,本文提出了一种新颖的分层前推回代算法。该算法将网络支路按层次进行分类,并分层并行计算各层次的支路功率损耗和电压损耗,因而可大幅度提高配网潮流的计算速度。本文在MATLAB环境下,利用其快速的复数矩阵运算功能,实现了文中的分层前推回代算法,也取得了非常明显的速度效益。另外,本文还发现并讨论了当变压器支路阻抗过小时,利用∏型模型会产生数值巨大的对地导纳,由此会导致潮流不收敛。为此,本文根据理想变压器对功率和电压的变换原理,提出了一种有效的电压变换模型来处理变压器支路,从而改善了潮流算法的收敛特性。算例结果表明:该算法计算速度快、收敛性好,对于大规模辐射型网络,效果尤其明显。参考文献[1] GoswamiSK,BasuSK,PHD,[J].IEEProc.Gener.Trans.Distrib.1991.138(1):78-88.[2] 蔡中勤,郭志忠(CaiZhongqin,GuoZhizhong).基于逆流编号法的辐射型配电网牛顿法潮流(ique)[J].中国电机工程学报(ProceedingsoftheCSEE),2000,20(6):13-16.[3] 张尧,王琴(ZhangYao,WangQin).树状网的潮流算法()[J].中国电机工程学报(ProceedingsoftheCSEE),1998,18(3):217-220.[4] GhoshS,DasD.Methodforload-[J].IEEProc.Gener.Trans.Distrib.1999,146(6):.[5] 孙宏斌,张伯明,相年德(SunHongbin,ZhangBoming,XiangNiande).配电潮流前推回推法的收敛性研究(Studyonconvergenceofback/)[J].中国电机工程学报(ProceedingsoftheCSEE).1999.19(7):26-29.[6] 谢开贵,周家启(XieKaigui,ZhouJiaqi).树状网络潮流计算的新算法()[J].中国电机工程学报(ProceedingsoftheCSEE).2001,21(9):116-120.[7] 于继来,王江,柳焯(YuJilai,WangJiang,LiuZhuo).电力系统潮流算法的几点改进()[J].中国电机工程学报(ProceedingsoftheCSEE).2001,21(9):88没有此对应没有此对应