c程序队列实现模拟加油站研讨.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c程序队列实现模拟加油站研讨

3 程序调试结果 模拟加油站的工作情况dt g/2 Time=12 dt=3 12÷3= 4组数据 “ 谢 谢 ” 三枚铜钱94keyboard 制作文档 标准字体 渐变色母板 * 金属字效果与倒影效果 * 金属字效果与倒影效果 * 金属字效果与倒影效果 * 金属字效果与倒影效果 * 结束 * 信软件基础实训 答辩 3 选题:模拟加油站的工作情况 小组成员:三枚铜钱94keyboard 时间:2015/5/5 通 模拟加油站的工作情况 √ 加油站有 两台油泵; √ 每台油泵为一辆汽车加油的时间为 d分钟; √ 加油站的到车率为 1辆/g分钟; √ 模拟时间长度为 time分钟; 1 分析问题 2 确定框架 3 实现程序 1 分析问题 1、看是否有车来到(概率决定) 2、若有车再看是否有空闲的油泵 3、若有空闲油泵立即加油,否则排队等待 4、若泵工作忙(未达到加油时间),则时间递减等待 5、时间递减后若为0,将泵置为空闲 1 分析问题 我们要做什么 1 方案思路 模型 油泵1 油泵2 出口 出口 汽车入口 排队 第一段路 第二段路 第三段路 等待可服务 1 分析问题 日常生活中该类模型,是队列应用的典型例子。以加油站为例,假设某加油站有 两台油泵,每台油泵的加油时间为 d分钟,若已知该站的到车率为 g分钟一辆,则该加油站的工作情况可用以下列队模型描述。    定义一个循环队列,容量为MAX(足够大,不发生队列满的问题),用于组织等待加油的汽车序列。按照先到先加油的原则进行处理;整个模拟过程内的时间为 time,每隔 dt分钟监控一次,获取并输出实际情况。    出事状态设为:队列为空(front=rear=MAX),每台油泵为空闲(pump(1)=pump(2)=0),油泵未服务过(auto(1)=auto(2)=-1)。    if(rear+1MAX) then rear=1; else rear+=1; time queue time queue · · · · · · dt 条件:ωs= 2ωm 即 dt = g/2 在模拟时间time内,每隔dt时间,监控并报告一次车排队的情况,油泵的工作状态,被服务的车。 因此用一维整型数组Queue[ ] 存取 车编号num的数据。 量化后 数字信号 模拟信号 整个问题可分为三部分:    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) 监控结果输出:每隔dt分钟输出一次汽车队列现状和每台油泵的工作状态,输出空闲状态。    当auto(i)= -1时,表示油泵 i尚未工作过; 当auto(i)0时,若pump(i)0表示油泵 i正在为 auto(i)加油; 若pump(i)=0表示油泵i空闲;若pump(i)0表示油泵i 所余时间才能加完油; 若pump(i)0表示油泵i刚为 auto(i)加完油; 若pump(i)=0表示油泵i已经为 auto(i)加完油。 排队Queue[ ] rear front 尾指针将新元素插入队中 头指针将等待的元素 对应服务油泵 1 2 3 4 5 6 MAX front rear 2 确定框架 第一步 模拟概率 第二步 模拟排队 第三步 模拟加油 第四步 采样报告 2 确定框架 开始 建立循环队列,设置油泵 从未服务过且初始状态空闲 调用函数simu_aut 模拟车排队;尾指针 插入新元素到队列 有车来rear+=1; t Time? 是 否 报告一次采样 监控结果 从油泵1开始依次查找可以 服务的油泵,找到可服务的 油泵front+=1;对应到相应 油泵。每查找一次加油时间 减去dt 随机数模拟dt内 车是否到来 t=t+dt 结束 车 若到达排队rear+=1 front=rear则油泵2置为空闲 否则油泵2服务front+=1; 油泵2加油时间T= d-dt 油泵1空闲 ? 是 否 继续排队 油泵服务的front的车 油泵front+=1; 油泵1加油时间T= d-dt 油

文档评论(0)

yy558933 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档