NS2采用Monte-Carlo法计算10位精度PI仿真报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

NS2采用Monte-Carlo法计算10位精度PI仿真报告一、实验平台和环境本实验是在WindowsXP操作系统平台下安装了Cygwin软件以模仿Linux下的编程环境,然后在Cygwin模仿的环境中安装了ns-allinone-2.34软件包,该软件包包含nam、otcl、tcl、tclcl、tk以及xgraph等软件包和辅助分析工具。二、实验步骤2.1安装与配置1.安装cygwinNS-2是OpenSource的,最早的版本是在linux/unix下运行的,后来有了windows下用vc编译运行的版本,但从2.26以后就放弃了对vc的支持,所以现在装NS2只有两条路,要么装个linux,要么在windows下装个cygwin,然后再在cygwin上装ns2.我决定用cygwin。先去下载setup.exe,运行,得到这个界面:点下一步,得到这个界面在这里CYGWIN提供了两种安装方法,一种是InstallfromInternet,即从网上下载相应的包安装;另一种是InstallfromLocalDirectory,提供了从本地导入相应的包的方法。我选用了从网上下载相应的包安装。点下一步,进入到这个界面点下一步,进入到这个界面点下一步,进入到这个界面选择镜像站点。cygwin有很多镜像站点,可以选择其中一个下载package。也可以自己指定一个站点。下一步:点右上角的view,使它旁边的状态显示为Full,你就能看到按字母顺序排序的package列表,在这些包前点鼠标,使它们处于非“Skip”的状态。需要用到的包:XFree86-base,XFree86-bin,XFree86-prog,XFree86-lib,XFree86-etc,make,patch,perl,gcc,gcc-g++,gawk,gnuplot,tar和gzip。Diffstat,diffutils,libXmu,libXmu-devel,libXmu6,libXmuu1,X-startup-scriptsxorg-x11-basexorg-x11-binxorg-x11-develxorg-x11-bin-dllsxorg-x11-bin-lndirxorg-x11-etcxorg-x11-fencxorg-x11-fntsxorg-x11-libs-dataxorg-x11-xwin选好相应的包以后,点下一步开始下载安装2.安装NS2接下来就是安装ns2了,先去下载ns-allinone安装包。下载完后,用winrar解压到cygwin安装目录下的home目录的子目录下。启动cygwin,cd/home/hct/ns-allinone-2.28./install安装过程就开始了。安装完后会出现这个提示:这时还需要修改路径信息,把可执行文件的路径加到PATH环境变量中,打开c:\cygwin\home\hct\.bashrc,在文件末尾加入这些信息:exportNS_HOME=/home/hct/ns-allinone-2.28exportPATH=$NS_HOME/nam-1.11:$NS_HOME/tcl8.4.5/unix:$NS_HOME/tk8.4.5/unix:$NS_HOME/bin:$PATHexportLD_LIBRARY_PATH=$NS_HOME/tcl8.4.5/unix:$NS_HOME/tk8.4.5/unix:$NS_HOME/otcl-1.9:$NS_HOME/lib:$LD_LIBRARY_PATHexportTCL_LIBRARY=$NS_HOME/tcl8.4.5/library.bashrc文件可以用记事本打开,不过最好用UE,因为它是unix格式的文本加入后的文件像这样:现在我们的工作就基本完成了。保存.bashrc,打开cygwin,运行startxwin.bat这时应该出现这样的窗口:运行cd/home/hct/ns-allinone-2.28/ns-2.28/ns-tutorial/examplesnsexample2.tcl应该会出现这样的窗口:这就表示ns2安装圆满完成了。三、实验分析:通过蒙特卡罗算法(Monte-Carlo)计算圆周率的主导思想是:统计学(概率)。一个正方形有一个内切圆,向这个正方形内随机的画点,则点落在圆内的概率为P=圆面积/正方形面积。1.在一个平面直角坐标系下,在点(a,a)处画一个半径为R=a的圆,以这个圆画一个外接正方形,其边长为R。2.随机取一点(X,Y)使得0=X=2R并且0=Y=2R,即随机点在正方形内。3.判断点是否在圆内,通过公式(X-R)(X-R)+(Y-R)(Y-R)R*R计算。4.设所有点的个数为N,落在圆内的点的个数为M,则P=M/N=Pi*R*R/4*R*R=Pi/4Pi=4*M/N当实验次数越多(N越大),所计算出的Pi也越准确。而这些点的产生则需用到随机数生成器。随机数产生器在NS2中是非常重要的,举凡网络节点在NAM中的位置或者是应用程序在何时开始传送或结束数据传输,都会用到随机数产生器。随机数产生器所产生的数值是由种子和分布所控制的,不同的种子或者是分布就会产生出不同的随机数。我们可以这样思考,当一个种子和分布决定之后,随机数产生器会产生出一个表格,表格内是由一长串不同数字所组成,当我们需要一个随机数,随机数产生器就会去选取这个表格中第一个数字,当再需要另一个随机数,随机数产生器就会去选取这个表格中第二个数字,以此类推,所以当使用种子和分布相同时,得到的随机数会相同,若不同时,得到的随机数会不同。而在NS2中,若是种子的值为0的话,则表示每次执行程序的时候,随机数产生器都会在产生出不同的表格,也就是说每次得到的随机数都不相同。设置种子:若是我们要在NS2中产生一个随机数产生器,并把种子设定为2,则可以把下面的程序代码放入tclcode中。setrng[newRNG]$rngseed2设置分布:当randomvariable产生之后,接下来要决定分布,我们可以使用的分布有Pareto、Constant、Uniform、Exponential、或HyperExponentail等等分布。1.ParetoDistribution:要提供expectation和shaperparameterβ。setr1[newRandomVariable/Pareto]$r1use-rng$rng$r1setavg_10.0$r1setshape_1.22.Constant:setr2[newRandomVariable/Constant]$r2use-rng$rng$r2setavg_5.03.Uniformdistribution:要提供最小值和最大值setr3[newRandomVariable/Uniform]$r3use-rng$rng$r3setmin_0.0$r3setmax_10.04.Exponentialdistribution:要提供平均值setr4[newRandomVariable/Exponential]$r4use-rng$rng$r4setavg_55.Hyperexponentialdistribution:setr5[newRandomVariable/HyperExponential]$r5use-rng$rng$r5setavg_1.0$r5setcov_4.0四、实验总结:由于学习不到位,所以没能写出完整的程序代码,对此我很惭愧。但是通过NS2网络仿真环境的学习,我知道了NS2是一个功能强大的且方便的仿真工具,我们能在其上面完成很多平时在学习网络课程中的一些自己的想法,通过对C++代码的修改,可以自由的实现自己想要的协议或者算法,实验结果也是十分的清晰明白,通过观察实验结果来验证自己的想法是否可行,是否更好。通过这样的模拟实验后会更加深入的理解课程上学习到的知识,并融会贯通,收获很大。

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功