版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通软实训模拟加油站工作情况组员:目录一、课程实训题目与要求1.1设计题目内容1.2要求...二、总体思路2.1具体设计思路2.2总体流程图三、程序代码设计四、测试与调试五、实训总结
一、课程实训题目与要求1.1设计题目内容模拟加油站的工作情况:加油站有两台油泵;每台油泵为一辆汽车加油的时间为d分钟;加油站的倒车率为1辆/g分钟;模拟时间长度为time分钟1.2要求明确课程实训的目的,结合循环队列知识及其它相关知识,查阅相关书籍,写出模拟加油站的工作情况的程序。二、总体思路2.1具体设计思路
日常生活中该类问题,是队列应用的典型例子。该加油站的工作情况可用以下列队模型描述:定义一个循环队列,容量为m(足够大,不发生队列满的问题),用于组织等待加油的汽车序列。按照先到先加油的原则进行处理;整个模拟过程内的时间为time,每隔dt分钟监控一次,获取并输出实际情况。
整个问题可分为三部分:
1)
汽车排队:已知一分钟来一辆车的概率为
1/g,则每隔
dt分钟来一辆车的概率为
dt/g。由于来车的问题是随机的,因此,实际处理时,每隔t分钟产生一个随机数
rnd
(0-1内),若它小于等于
dt/g,则认定有一辆车进站,应将它加入队列中。
2)
油泵工作状态:用pump(i)表示第
i(i=1,2)每台油泵工作进程,用
auto(i)表示第
i台油泵的服务对象。则当第
i台油泵开始为一辆车工作时,置
pump(i)=d-dt,以后每
dt分钟,令pump(i)=pump(i)-dt。若
pump(i)<0,说明第i台已完成加油工作,可以继续为下一辆车服务,因此,应从队列中取出一个元素继续处理;若队列为空,置
pump(i)=0,表示空状态。
3)
监控结果输出:每隔t分钟输出一次汽车队列现状和每台油泵的工作状态,输出空闲状态。开始2.2总体流程图开始是否结束t=t+dt调用函数print_out,输出结果2次调用函数simu_pump,1次用来油泵1工作,1次用来模拟油泵2工作调用函数simu_aut,用来模拟汽车排队情况产生0-1的随机数,模拟dt时间内是否到车t<time输入自定义的g,d,dt,time建立空的长度为m的循环链表定义变量类型,并赋初值是否结束t=t+dt调用函数print_out,输出结果2次调用函数simu_pump,1次用来油泵1工作,1次用来模拟油泵2工作调用函数simu_aut,用来模拟汽车排队情况产生0-1的随机数,模拟dt时间内是否到车t<time输入自定义的g,d,dt,time建立空的长度为m的循环链表定义变量类型,并赋初值
三、程序代码设计#include<stdlib.h>#include<math.h>#include<stdio.h>#include<time.h>/*********************注释************************///油泵FuelPump:FP;汽车auto:aut;//当aut(i)=-1时,表示油泵i尚未工作过;//当aut(i)>0时,若FP(i)>0表示油泵i正在为auto(i)加油;//若FP(i)<0表示油泵i刚为auto(i)加完油;//若FP(i)=0表示油泵i已经为auto(i)加完油。/********************主函数***********************/voidmain(){int*Queue,MAX,front,rear,aut[2],FP[2],num;//定义队列相关变量及数组及编号doubleTime,dt,t,g,d,rnd,r=1.0;//模拟情况所用数据MAX=10000;//循环队列空间容量Queue=malloc(MAX*sizeof(int));//分配循环队列顺序存储空间rear=front=MAX;//初始化循环队列aut[0]=aut[1]=-1;//设置两台油泵没有服务过FP[0]=FP[1]=0;//设置两台油泵为空闲状态/*------------输入操作显示---------------*/printf("①请输入到车率中g(分钟):");scanf("%lf",&g);printf("②请输入每辆加油时间d(分钟):");scanf("%lf",&d);printf("③请输入总模拟时间长度Time(分钟):");scanf("%lf",&Time);printf("④请输入采样时间dt(分钟):");scanf("%lf",&dt);printf("----------------------\n");num=0;t=0;//while(t<Time)//模拟时间未结束{r=rand()/32767.00;rnd=r;/*随机数0-1之间产生*///srand(time(NULL));//rnd=(double)rand()/RAND_MAX;/*32767,范围不会超过-32768~32767*/simu_aut(Queue,MAX,&rear,&num,dt,g,rnd);//num,front,rear所占内存地址simu_pump(Queue,MAX,&front,rear,dt,d,FP,aut,1);//front所占内存地址,在此函数中rear=*rear+=1;simu_pump(Queue,MAX,&front,rear,dt,d,FP,aut,2);//front所占内存地址,在此函数中rear=*rear+=1;print_out(Queue,MAX,front,rear,FP,aut);t=t+dt;}free(Queue);//释放循环队列空间}/*------------模拟汽车排队---------------*/simu_aut(Queue,MAX,rear,num,dt,g,rnd)intQueue[],MAX,*rear,*num;//指针指向num,front,rear所占内存地址doubledt,g,rnd;{printf("%lf\n",rnd);if(rnd<=dt/g)//满足概率则给车编号加入循环队列{*num+=1;*rear+=1;if(*rear==MAX+1)*rear=1;//如果rear从1达到max后再前进一个位置就自动到1;Queue[*rear-1]=*num;}//循环队列解决假溢出;从队列开始位置入队一个编号;}/*------------模拟油泵i工作---------------*/simu_pump(Queue,MAX,front,rear,dt,d,FP,aut,i)intQueue[],MAX,*rear,*front,FP[],aut[],i;doubledt,d;{if(FP[i-1]<=0)//加油泵可以服务;(没车来或刚好有车来){if(*front==rear)//rear=1和队空判断;FP[i-1]=0;//没有车即空闲状态;else{*front=*front+1;if(*front==MAX+1) *front=1;//解决假溢出aut[i-1]=Queue[*front-1];//第i辆车被服务FP[i-1]=d-dt;}}elseFP[i-1]=FP[i-1]-dt;}/*------------模拟结果的输出---------------*/print_out(Queue,MAX,front,rear,FP,aut)intQueue[],MAX,rear,front,FP[],aut[];{intk;k=front;while(k!=rear){k=k+1;if(k==MAX+1)k=1;printf("Queue(%d)=%d\n",k,Queue[k-1]);}printf("FP(1)=%d,aut(1)=%d\n",FP[0],aut[0]);printf("FP(2)=%d,aut(2)=%d\n",FP[1],aut[1]);printf("----------------------\n");}/*------------------------------END-------------------------------*/四、测试与调试当dt>=12*g此时会因为采样间隔太大发生模拟失真的情况,当dt<12*g能较好模拟。下面分别分上述当dt>=12当dt<12五、实训总结通过本次实训,让我们明白了很多道理,无论做
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 销售合同签订注意事项及范例
- 提升工作效率心得体会范文
- 小学奥数一阶启蒙专题训练方案
- 一级建造师工程经济真题解析2020
- 人体工程学在工业设计中的应用
- 视力障碍康复2026年培训
- 结核病的分子生物学诊断与药物治疗策略
- 中期妊娠瘢痕子宫引产课件
- 乐观与积极心态主题班会课件
- 物理社团原理明主题班会
- 2026年陕西航空职业技术学院单招职业技能考试题库附答案详解(完整版)
- 人形机器人与具身智能标准体系(2026版)
- 2026年深圳市高三年级高考一模物理试卷(含答案)
- JTG-T 3841-2026 公路工程建设项目安全生产费用清单及计量规范
- 2026年全球市场海洋能发电装置分析报告
- 北京市文职辅警考试真题
- 酒后上岗危害安全培训
- 《薪酬管理(第7版·数字教材版)》教案 刘昕
- 腮腺炎培训课件
- 充电桩财务制度规范标准
- 员工沙盘演练培训课件
评论
0/150
提交评论