交通系统仿真实验分析报告.docx
- 文档编号:896742
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:18
- 大小:137.32KB
交通系统仿真实验分析报告.docx
《交通系统仿真实验分析报告.docx》由会员分享,可在线阅读,更多相关《交通系统仿真实验分析报告.docx(18页珍藏版)》请在冰豆网上搜索。
交通系统仿真实验分析报告
交通系统仿真实验报告
————————————————————————————————作者:
————————————————————————————————日期:
实验报告
课程名称道路交通系统仿真
学生姓名
学号
专业班级
指导教师
院系名称交通运输工程学院
2012年11月10日
实验一随机数生成程序
一.实验要求
产生1~1000的随机数,个数大约256个。
二.实验环境
工具使用VisualC++6.0,程序类型Win32ConsoleApplication。
三.实验原理
根据公式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
voidmain(void)
{
inti=1,j=0,temp=0;
inta=35,m=1024;
intx[256];
intk;
printf("输入到达服务时间随机初始值:
");
scanf("%d",&x[0]);
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);}
实验二单服务台排队系统仿真
一.实验要求
单服务台对到达顾客进行服务,顾客单路排队,随机分配顾客的到达时间间隔和服务时间,从而确定顾客的到达时刻和服务开始结束时刻,并计算服务台的空闲时间和顾客的排队等待时间。
通过程序实现对单服务台排队系统的仿真,根据程序运行结果计算重要结果属性值。
二.实验环境
工具使用VisualC++6.0,程序类型Win32ConsoleApplication。
三.实验原理
在程序设计中,顾客到达时间间隔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.7min
服务员平均服务时间=3.4min
服务员平均空闲时间=1.2min
六.附录
#include
intimax(int,int);
voidmain(void)
{
inttime_interval[256];
intreach_point[256];
intservice_time[256];
intservice_end_point[256];
intwait_time[256];
intfree_time[256];
intx[256];
inty[256];
intn,max;
inti=1,temp=0;
inta=35,m=1024;
/*输入顾客人数*/
printf("输入顾客数n:
");
scanf("%d",&n);
/*产生到达时间随机间隔*/
printf("\n输入到达时间间隔随机初始值(1~1000):
");
scanf("%d",&x[0]);
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<=n;i++)
{
if(x[i]>=1&&x[i]<=125)
time_interval[i]=1;
if(x[i]>=126&&x[i]<=250)
time_interval[i]=2;
if(x[i]>=251&&x[i]<=375)
time_interval[i]=3;
if(x[i]>=376&&x[i]<=500)
time_interval[i]=4;
if(x[i]>=501&&x[i]<=625)
time_interval[i]=5;
if(x[i]>=626&&x[i]<=750)
time_interval[i]=6;
if(x[i]>=751&&x[i]<=875)
time_interval[i]=7;
if(x[i]>=876&&x[i]<=1000)
time_interval[i]=8;
}
i=1;
printf("第1位顾客到达时间间隔为:
0");
for(i=2;i<=n;i++)
{
printf("\n第%d位顾客的随机到达时间间隔位:
%d",i,time_interval[i]);
}
printf("\n\n");
/*产生随机服务时间*/
i=1,temp=0;
a=35,m=1024;
printf("\n输入到达服务时间随机初始值(1~1000):
");
scanf("%d",&y[0]);
printf("\n");
while(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<=n;i++)
{
if(y[i]>=1&&y[i]<=100)
service_time[i]=1;
if(y[i]>=101&&y[i]<=300)
service_time[i]=2;
if(y[i]>=301&&y[i]<=650)
service_time[i]=3;
if(y[i]>=651&&y[i]<=850)
service_time[i]=4;
if(y[i]>=851&&y[i]<=950)
service_time[i]=5;
if(y[i]>=951&&y[i]<=1000)
service_time[i]=6;
}
for(i=1;i<=n;i++)
{
printf("\n第%d位顾客的随机服务时间:
%d",i,service_time[i]);
}
printf("\n\n\n");
/*主程序排队序列开始,将第一人单独考虑,后面的连续分配间隔时间*/
time_interval[0]=0;
reach_point[0]=0;
service_time[0]=0;
service_end_point[0]=0;
wait_time[0]=0;
free_time[0]=0;
time_interval[1]=0;
reach_point[1]=0;
wait_time[1]=0;
free_time[1]=0;
service_end_point[1]=reach_point[1]+service_time[1];
printf("顾客号=1");
printf("到达时间间隔=%d",time_interval[1]);
printf("到达时刻=%d",reach_point[1]);
printf("服务时间=%d",service_time[1]);
printf("服务结束时刻=%d",service_end_point[1]);
printf("等待时间=%d",wait_time[1]);
printf("空闲时间=%d",free_time[1]);
for(i=2;i<=n;i++)
{
reach_point[i]=reach_point[i-1]+time_interval[i];
max=imax(service_end_point[i-1],reach_point[i]);
service_end_point[i]=service_time[i]+max;
if(service_end_point[i-1]-reach_point[i]>=0)
free_time[i]=0,wait_time[i]=service_end_point[i-1]-reach_point[i];
if(service_end_point[i-1]-reach_point[i]<0)
wait_time[i]=0,free_time[i]=reach_point[i]-service_end_point[i-1];
printf("\n顾客号=%
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通 系统 仿真 实验 分析 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)