交通系统仿真实验报告 本文关键词:仿真,实验,交通,报告,系统
交通系统仿真实验报告 本文简介:第16页共16页实验报告课程名称道路交通系统仿真学生姓名学号专业班级指导教师院系名称交通运输工程学院2012年11月10日实验一随机数生成程序一.实验要求产生1~1000的随机数,个数大约256个。二.实验环境工具使用VisualC++6.0,程序类型Win32ConsoleApplication。
交通系统仿真实验报告 本文内容:
第
16
页
共
16
页
实验报告
课程名称
道路交通系统仿真
学生姓名
学
号
专业班级
指导教师
院系名称
交通运输工程学院
2012
年
11
月
10
日
实验一
随机数生成程序
一.
实验要求
产生1~1000的随机数,个数大约256个。
二.
实验环境
工具使用Visual
C++
6.0,程序类型
Win32
Console
Application。
三.
实验原理
根据公式x[i]=a*x[i-1]mod(m),可根据所需范围值确定a和m的值,本实验中需要1~1000的随机数,因此可以选择a=35,m=1024。其周期为(m/4)=256,产生256个1~1024之间随机数。根据需要,我们舍弃大于1000的随机数,原理是我们使用中间变量连接产生的数与我们需要的数组,通过对中间变量的不断循环,当产生大于1000的随机数时,我们继续使中间变量不断循环但不放入数组,从而舍弃这些数字,最终得到我们需要的1~1000的随机数的数组并输出数组中的数,并计数其个数,这样就完成了我们的产生随机数的目的。
四.
实验步骤
图一
随机数程序流程图
图二
随机数程序运行结果
程序开始先给定初始值(1~1000以内奇数),根据给定的公式计算中间值temp,再判断temp的值是否小于1000,把小于1000的temp值赋给数组x[i],循环执行该命令直至x[i]=x[0],结束程序并输出数组值和数组大小。数组值随初始值改编而改变,初始值决定数组值的变化。
五.
分析总结
由图二随机数程序运行结果可以看出,该程序运行结果与我们所给与的数学模型期望达到的效果一致。程序运行正确,伪随机数的周期为256个,由于去除了大于1000的随机数,故程序结果显示为249,与数学模型的周期一致。
附录
#include
void
main(void)
{
int
i=1,j=0,temp=0;
int
a=35,m=1024;
int
x[256];
int
k;
printf(“输入到达服务时间随机初始值:“);
scanf(“%d“,printf(“/n“);
while(i)
{temp=a*x[i-1]%m;
while(temp>1000)
{
temp=a*temp%m;
}
if(temp!=x[0])
{
x[i]=temp;
printf(“%5d“,x[i]);
i++;
}
else
{j=i-1,i=0;}
}
printf(“/n/nj=%d/n/n“,j);}
实验二
单服务台排队系统仿真
一.
实验要求
单服务台对到达顾客进行服务,顾客单路排队,随机分配顾客的到达时间间隔和服务时间,从而确定顾客的到达时刻和服务开始结束时刻,并计算服务台的空闲时间和顾客的排队等待时间。通过程序实现对单服务台排队系统的仿真,根据程序运行结果计算重要结果属性值。
二.
实验环境
工具使用Visual
C++
6.0,程序类型
Win32
Console
Application。
三.
实验原理
在程序设计中,顾客到达时间间隔time_interval和服务时间service_time由随机数确定。顾客到达时间间隔通过随机数分布并定义其分布区间,从而确定其到达间隔时间;服务时间也是先通过随机数程序产生一组随机数,然后通过对随机数区间的定义确定随机服务时间。这两个参数确定后可以通过数学方法确定其他参数,因此到达时间间隔和服务时间是程序中最重要的两个参数。
四.
实验步骤
图三
单服务台仿真流程图
图四
随机时间间隔
图五
随机服务时间
图六
单服务台排队系统顾客服务时刻表
程序先通过随机数方法分配排队顾客的随机到达时间间隔和随机服务时间。随机到达时间间隔是用1~1000之间的随机数进行等概率分配给1~8分钟的到达间隔;随机服务时间是将1~1000的随机数分配给1~6分钟的服务时间,其分配时段根据概率0.1,0.2,0.35,0.2,0.1,0.05分配,通过这种方法将1~1000以内的随机数分配给各个时间段,从而得到顾客的随机到达时间间隔和随机服务时间。
得到这两个基本参数后,通过数学方法联系其他参数,运用程序的循环过程最终可以输出单服务台顾客服务时刻表。
五.
分析总结
通过程序运行和结果校正,程序输出结果正确,程序运行正确。我们以10个顾客为例,运行程序,可以计算出在该程序设定条件下的属性值:
顾客平均等待时间=0.7
min
服务员平均服务时间=3.4
min
服务员平均空闲时间=1.2
min
六.
附录
#include
int
imax(int,int);
void
main(void)
{
int
time_interval[256];
int
reach_point[256];
int
service_time[256];
int
service_end_point[256];
int
wait_time[256];
int
free_time[256];
int
x[256];
int
y[256];
int
n,max;
int
i=1,temp=0;
int
a=35,m=1024;
/*输入顾客人数*/
printf(“输入顾客数n:
“);
scanf(“%d“,/*产生到达时间随机间隔*/
printf(“/n输入到达时间间隔随机初始值(1~1000):
“);
scanf(“%d“,printf(“/n“);
while(i>=1)
{
temp=a*x[i-1]%m;
while(temp>1000)
{
temp=a*temp%m;
}
if(temp!=x[0])
{
x[i]=temp;
i++;
}
else
{i=0;}
}
for(i=1;i=1
}
i=1;
printf(“第1位顾客到达时间间隔为:
0“);
for(i=2;i=1)
{temp=a*y[i-1]%m;
while(temp>1000)
{
temp=a*temp%m;
}
if(temp!=y[0])
{
y[i]=temp;
i++;
}
else
{i=0;}
}
for(i=1;i=1
}
for(i=1;iStretchBlt(pos_2,100,bmp.bmWidth/4,bmp.bmHeight/4,//以汽车走的距离为x轴起点
}
else
{//前车移动到下一行,后车行驶完width()-pos_2的距离,移动到下一行
KillTimer(1);
pos_2=0;
distance();
pos_1=inidis;//两车的初始距离
Velocity();//计算deltaX_1和deltaX_2的值,即两车的初始速度
Accelerated_Velocity_1();//前车的加速度,获得Av_1
changes+=1;
step=0;
Sleep(2000);
SetTimer(2,50,NULL);
//停车
}
}
if(changes==1)
{
if(pos_2StretchBlt(pos_1,200,bmp.bmWidth/4,bmp.bmHeight/4,pDC->StretchBlt(pos_2,200,bmp.bmWidth/4,bmp.bmHeight/4,//以汽车走的距离为x轴起点
}
else
{//前车移动到下一行,后车行驶完width()-pos_2的距离,移动到下一行
KillTimer(2);
pos_2=0;
distance();
pos_1=inidis;//两车的初始距离
//
Velocity();//计算deltaX_1和deltaX_2的值,即两车的初始速度
deltaX_1=30;deltaX_2=20;
Accelerated_Velocity_1();//前车的加速度,获得Av_1
changes+=1;
step=0;
Sleep(2000);
SetTimer(3,50,NULL);
//停车
}
}
if(changes==2)
{
if(pos_2=0))//后车位置
{
pDC->StretchBlt(pos_1,300,bmp.bmWidth/4,bmp.bmHeight/4,pDC->StretchBlt(pos_2,300,bmp.bmWidth/4,bmp.bmHeight/4,//以汽车走的距离为x轴起点
}
else
{
KillTimer(3);
pDC->StretchBlt(pos_1,300,bmp.bmWidth/4,bmp.bmHeight/4,pDC->StretchBlt(pos_2,300,bmp.bmWidth/4,bmp.bmHeight/4,bitmap_1.DeleteObject();
bitmap_2.DeleteObject();
dcCompatible_1.DeleteDC();
dcCompatible_2.DeleteDC();
}
}
void
CFollowingSimulationView::OnTimer(UINT_PTR
nIDEvent)
{
//
TODO:
Add
your
message
handler
code
here
and/or
call
default
step+=1;
//int
temp=0;//存储步长用
if(changes==0)//说明刚开始第一个时间段,两车均以匀速行驶,但deltaX_1>deltaX_2,因此需要后车加速以完成车距保持的目的
{
//Av_2=(30*(deltaX_1-deltaX_2)+realdis-200)/465;//只能计算一次
pos_1+=deltaX_1;
pos_2+=deltaX_2;
if(step>20)//可以通过if语句判断两车的实时距离有没有到200左右,到了的话就停止
{
if(abs(pos_1-pos_2)>200)
{
deltaX_2+=1;
pos_2+=deltaX_2;
}
else
{deltaX_2=deltaX_1;}
}
}
if(changes==1)
{
deltaX_1+=1;//前车加速度
pos_1+=deltaX_1;
if(step15)
{
if(abs(pos_1-pos_2)>200)
{
deltaX_2+=3;
pos_2+=deltaX_2;
}
else
{deltaX_2=deltaX_1;}
}
}
if(changes==2)
{
deltaX_1-=1;//前车加速度
pos_1+=deltaX_1;
if(step20)
{
if(abs(pos_1-pos_2)>200)
{
deltaX_2-=2;
pos_2+=deltaX_2;
}
else
{deltaX_2=deltaX_1;}
}
}
Invalidate(true);
CView::OnTimer(nIDEvent);
}
篇2:信号解调电路仿真与测试
信号解调电路仿真与测试 本文关键词:解调,仿真,电路,信号,测试
信号解调电路仿真与测试 本文简介:六、信号解调电路仿真与测试6.1普通调幅波的解调1.仿真目的(1)进一步了解调幅波的性质,掌握调幅波的解调方法。(2)掌握二极管峰值包络检波的原理。(3)掌握包络检波器的主要性能指标,检波效率及各种波形失真的现象,分析产生的原因并考虑克服的方法。2.仿真电路峰值包络检波:设置调幅度m=0.35,示波
信号解调电路仿真与测试 本文内容:
六、
信号解调电路仿真与测试
6.1
普通调幅波的解调
1.仿真目的
(1)进一步了解调幅波的性质,掌握调幅波的解调方法。
(2)掌握二极管峰值包络检波的原理。
(3)掌握包络检波器的主要性能指标,检波效率及各种波形失真的现象,分析产生的原因并考虑克服的方法。
2.仿真电路
峰值包络检波:设置调幅度m=0.35,示波器中深红线为检波信号。
如图6-1所示为普通调幅波的解调电路图。
图6-1
普通调幅波的解调电路图
如图6-2所示为普通调幅波的解调波形图。
图6-2
普通调幅波的解调波形图
加大R9可观察到对角线失真。在R5=510欧时可观察到负峰切割失真。
3.测试内容
(1)
完成普通调幅波的解调。
(2)
观察普通调幅波解调中的对角切割失真、底部切割失真以及检波器不加高频滤波时的现象。
6.2
调频信号的解调
1.仿真目的
(1)熟悉相位鉴频器的基本工作原理,熟悉模拟乘法器的使用。
(2)掌握并联回路对S曲线和对解调波形的影响
2.仿真电路
仿真说明:我们用EWB软件作“调频信号的解调”,目的是介绍这一软件。EWB是最早使用的仿真软件,元件参数由设计者自行设定,频率测量准确度优于Multisim,电路合理就能工作,这个软件适合初学电路者使用。Multisim软件是接近实际制作电路的软件,各种参数的元器件是实际存在的,这种软件更能锻炼学生实际动手能力。
如图6-2所示为调频信号的解调电路图。
图6-3
调频信号的解调电路图
如图6-2所示为调频信号的解调波形图。
图6-4
调频信号的解调波形图
3.测试内容
(1)
调整并测量鉴频器的静态工作点。
(2)
观察并联回路对波形的影响。
(3)
测量鉴频特性曲线,由此计算鉴频灵敏度和线性频率范围。
3
篇3:基于C3I系统的短波通信仿真建模
基于C3I系统的短波通信仿真建模 本文关键词:短波,建模,仿真,通信,系统
基于C3I系统的短波通信仿真建模 本文简介:基于C3I系统的短波通信仿真建模1引言短波通信是指利用波长为100~10m的电磁波进行无线电通信。短波通信多年来被广泛用于政府、军事、气象、商业等领域,用以传送语言、文字、图像、数据等信息。尤其在军事领域,短波通信始终是军事指挥的重要手段之一。如今计算机技术飞速发展,数据库的提出,及仿真技术的应用,
基于C3I系统的短波通信仿真建模 本文内容:
基于C3I系统的短波通信仿真建模
1
引言
短波通信是指利用波长为100~10
m的电磁波进行无线电通信。短波通信多年来被广泛用于政府、军事、气象、商业等领域,用以传送语言、文字、图像、数据等信息。尤其在军事领域,短波通信始终是军事指挥的重要手段之一。如今计算机技术飞速发展,数据库的提出,及仿真技术的应用,使军事指挥自动化进入一个新的阶段。短波战术平台是指挥自动化系统(C3I)的一个子系统,该平台充分利用计算机技术和电子地图数据库,实现遂行通信,保障谋划、仿生拉试预决策、通信作战文书的生成。这里仅对通信仿真建模进行讨论。
2
短波信道的传播损耗模型
短波天波通信是以电离层为媒介传播的,电离层的密度随昼夜、季节、太阳活动周期和经纬度变化而变化,因此传播损耗与时间、季节、经纬度位置、地形等诸多实时变化因素有关。考虑到目前所能计算的损耗,电离层传播损耗可表示为
式中,LP0是自由空间传播损耗,La是电离层吸收损耗,Ln是多跳地面反射损耗,Yp是额外系统损耗。
2.1
自由空间传播损耗
在短波信号传播过程中,由于电波逐渐远离发射点,能量扩散的面积越来越大,从而使得接收点的场强越来越小。在计算该项损耗时,认为地球和电离层均是平面状态,反射是镜面反射,如图1所示,其中r表示天波传播中的射线距离:D是发射点A与接收点B
之间的大圆距离(地球表面距离),收发两端点间的地球中心夹角用a表示。
自由空间传播损耗的计算公式:
式中,R是地球半径,h是电离层高度,△是射线仰角。
2.4
额外系统损耗
额外系统损耗不是一个稳定的参数,它与地磁纬度、季节、本地时间、路径长度都有关系。工程计算中通常用经过反复校核的统计值来估算,表1列出了额外系统损耗(YP)以反射点的本地时间为自变量的估算值。
3
系统仿真流程
图2为仿真系统总体结构。中,主控系统数据库中有2类数据库:仿真评估库和固定数据库。前者包括仿真任务分配库、通信设备布设库和通信信道布设库等,是在仿真评估过程中产生的;其后者包括传输信道模型库和通信设备模型库等,由系统管理员维护。
系统仿真思想及流程:接受作战任务后,首先打开电子地图,选取作战区域,地图管理模块随之运行;然后布设军事短波通信网,将布设的各种设备参数信息及相关信息写入主控系统数据库,通信仿真模块根据传播损耗模型得出结果,并通过显示模块显示。
4
仿真结果
为测试模型可行性,选取北京一广州通信线路(夏季白天):D=1
800
km,反射点位置为(110°E,31°N),h=300
km,发射信号为1个语音信号,带宽为300~3
300
Hz。仿真结果如图3所示。从图3中可以看出,接收信号遭受损耗与预期结果一致,从而证明了该数学模型的可行性。
5
结论
对C3I系统的短波通信网进行仿真建模,其仿真结果对改进网络的性能有很大帮助,对指挥者及时作出通信保障谋划和仿生拉试预决策有一定的指导意义。但该模型还有需改善的地方,如未考虑山地绕射、多径衰落、多普勒频移等。后续工作将会对此进行改进。
(1)求大圆距离D
由电子地图可知发射端A和接收端B的地理经纬度,则大圆距离为:
式中,x1为发射端的地理纬度;y1为发射端的地理经度;x2为接收端的地理纬度;y2为接收端的地理经度。北纬纬度取正值,南纬纬度取负值,(y1-y2)为收发两点间的经度间隔。
(2)求射线仰角△
由图1可得:
式中,h是电离层高度,其值可由经验值获得。
2.2
电离层吸收损耗
电离层吸收损耗La分为偏移吸收和非偏移吸收,前者指反射区的吸收,后者指电离层D、E区域的吸收。一般偏移吸收损耗极小(≤1
dB),可以忽略。工程中常用以下半经验公式:
式中(以h=100
km为例,下同),θ0是100
km高度处的电波入射角,fH是100
km高度处的平均值,单位为MHz,n是跳数,Ii是吸收系数。Ii的计算公式为:
式中,R12为12个月太阳黑子的流动平均值,xi为穿透吸收区的太阳天顶角平均值。
仿真中采用数学计算和选取典型值的方法模拟。
(1)求电波入射角θ0将h=100
km代人式(6)。
(2)求磁旋频率fH我国经纬度大致范围为北纬:22°~55°,东经75°~135°,查100
km处磁旋频率的世界地图可得FH的取值范围为1.2~1.5
MHz。为计算简便,定义如下:若反射点的纬度位于北纬22°~35°,fH=1.3
MHz;北纬35°~45°,fH=1.4
MHz;北纬45°~55°,fH=1.5
MHz。
(3)求12个月太阳黑子的流动平均值R12
该值无法计算,可查表求得。
(4)求太阳天顶角xi某地某时刻的太阳天顶角是指太阳射线(光线)直射到地球经纬度上,再继续延伸到地心,此延伸线(即太阳直射线)与电台所在地理经纬度到地心的直线之间的夹角。某地的太阳天顶角的大小和该地的地理位置、季节、时间有关。
仿真可按下列步骤进行:
(1)确定太阳直射线在地球上的经度太阳直射线1天(24
h)经过经度线360°,每小时经过15°,每分钟经过0.25°,每秒钟经过0.004
166
667°。太阳直射线投射到东经120°经度面时是我国中午12时0分0秒,计算120°E以西时间由12时减,计算120°E以东时间由12时加;计算
120°E以西的经度由120°E减,计算120°E以东的经度由120°E加。如12时30分,太阳直射位置在:120°-30
x0.25°=112.
5°E
(2)确定太阳直射线在地球上的纬度太阳直射线经过的地球纬度线以1年为周期:由南纬23.5°到北纬23.5°,再回到南纬23.5°。春分和秋分这两天,太阳直射赤道,纬度为0°。夏至和冬至时太阳分别直射在北回归线23.5°N和南回归线23.5°S。太阳直射线经历纬度范同为0°~23.5°。太阳直射线每天经过的纬度是:23.5/91.25(1个季度的天数)=0.257
534
247°;每小时经过的纬度是:23.5/(91.25x24)=0.01O
730
594°;每分钟经过的纬度是:23.5/(91.25x24x60)=0.000
178
843°;每秒钟经过的纬度是:23.5/(91.25x24x60
x60)=0.000
002
981°。例如,如果是第2个季度,计算某天某时某分钟的太阳直射线所在的纬度,要首先计算这一天到春分的天数。假设某年春分为4月3日。计算4月23日
12时30分太阳直射线所在的纬度:
{[20(天)x24(时)+12(时)]x60(分)+30(分)}x0.000
178
843=5.284
810
65°N
根据上述计算,可得出4月23日12时30分太阳直射线所在的经纬度是(112.5°E,5.284.810
65°N)。
(3)确定太阳顶角由式(5)计算出太阳直射位置与电台所在位置的地球中心夹角即是所求的太阳顶角。
2.3
多跳地面反射损耗
在天波多跳传播模式中,传播损耗不仅要考虑电波二次进入电离层,还要考虑地面反射的损耗(LR)。考虑圆极化波,地面反射损耗计算式如下;
式中,RV和RH分别为垂直极化和水平极化的反射系数。RV和RH的表示式分别为:
式中,εr是复介电常数,σ是地表面导电率,λ是工作波长。
仿真时,只考虑陆地(εr=4和σ=10-3
S/m)和海面(εr=80和σ=5
S/m)。若为多跳传播,应将求得的数值乘以(n-1),即多次地面反射损耗的总和值。