focuscon 发表于 2009-2-12 18:28:10

仿真小题目和答案集

响应“用仿真方法解析生活中的小问题”活动,大家把题目和答案发到这个帖子里吧,活动贴无法上传附件。谢谢~
为了方便没有仿真币的朋友下载,我把一些就题目转载如下:


活动资料
各位:
为了加强学习Extendsim的趣味性并提升仿真技术,共享大家的智慧,同时也是增添生活乐趣,请大家留意生活中(工作中也行)
的细节问题,表述成题目发上来供大家练习,以促进交流共同进步!

要求不高,每周一题。养成这个习惯我想你会逐渐变成一个生活的有心人,你的关察力也会在不知不觉间提升,你会无意间变得更加细心,你的另一半
也会对你更加满意O(∩_∩)O~......你的工作品质也会有所改善,and so forth......当然这些仅仅是附加价值,真正重要的是
仿真会变成生活和工作中的小工具,这对仿真的普及应该会有一点推动作用吧。

你是道上混的吗? 那就站出来吧:)

说明: 1.题目要具备仿真所需要的基本条件
          题目示例:
一家小型食堂,顾客到达服从指数分布。平均1分钟来一位顾客。餐厅分为冷食部和热食部,冷食部有1个服务窗口,热食部有4个服务窗口,冷热食窗口服务时间均为1分钟。其中40%的顾客选择冷食,60%的顾客选择热食。选购后顾客寻找座位,食堂目前有200个座位,假设顾客只有找到座位后才能就餐而且冷食需要5-15分钟,热食需要15-25分钟。试建立模型,并确定使得顾客平均就餐时间保持在15分钟左右所需要的最少座位数量。
    2. 奖励:出题者只要题目合格就有15~30大洋和1~5原创力到手,上传答案模型者也是一样。”

[ 本帖最后由 focuscon 于 2009-2-12 18:39 编辑 ]

focuscon 发表于 2009-2-12 18:33:12

等车时间

这也是一个非常有趣的题目。可以用离散或者连续来模拟:

例如你在观察一个汽车站车辆到达的情况。假设从0 时刻开始观察,再假设汽车到达的时间间隔是 指数分布,均值是3分钟。如果你选定只记录 到达时间 跨越第200分钟的那辆车的时间间隔,连续许多天都记录这样的数据,然后,得出跨越第200分钟的所有车辆的间隔的均值,那么这个均值和 汽车到达的平均间隔 (3分钟)相比,是

(1)大          (2)小          (3)一样

也就是说,比如,你每天都是早上八点钟去等车,然后记录一下前辆车离开的时间(假设你知道)和下辆辆车到达的时间间隔,观察许多天,然后做个平均。这个平均和你统计的所有从早上到晚上车辆的平均时间间隔之间的关系。

参考模型:

focuscon 发表于 2009-2-12 18:31:17

油轮码头系统

题目描述如下,这是一个油轮码头系统,油轮以指数分布到达港口(Harbour),排队(先进先出),等待一个拖轮(Tug)将其拖到一个空闲泊位(Berth),这称为“靠泊”,如果有多个泊位空闲,则随机选一个。拖轮将油轮拖到泊位后,即释放油轮,可以接受下一个任务。而油轮则开始装油,装完油后,即发出“离泊”请求,等待拖轮将其拖到港口(harbour),这称为“离泊”,释放后离开。总共有三个泊位。
拖轮的调度规则很重要,描述如下:
如果拖轮在港口处,则“靠泊”请求优先于“离泊”请求;
如果拖轮在泊位处,则“离泊”请求优先于“靠泊”请求;

油轮到达时间间隔、从港口到泊位的行驶时间、以及在泊位的装货时间大家自己随便设置。
详情参考: http://www.simulway.com/bbs/thread-13291-1-1.html

还有个Flexsim的,顺便进行比较.
IESIM:
用ExtendSim 做了一个模型,为了一目了然,我没有对模型进行分层,所有模块都在一个层面上,所以,没有考虑美观的问题,只是做了一些标注。为了讨论方便。

这个模型采用了集中调度、分散仿真的思路,就是所有的调度逻辑都放在一个集中的模块中,这样方便以后扩展到更复杂的逻辑上,也容易维护。

这里面逻辑也包含了拖船在泊位之间移动的时间。

这个模型只是可以用extendsim 实现的方法之一。其实这里面的 Batch / Unbatch 模块都可以省略,这样模块数量会更少。但那样的话,需要的抽象思维更多一些。我先发这个模型,如果对其他实现方法感兴趣,我可以再做出来。

ExtendSim 模型的建模思路:

关于这个模型中对移动资源的处理具有普遍意义,我们用这种思路成功处理过铁路网中机车移动的情况。

可以看到,模型大概分成两条主线,上面那条主线主要描述的是油轮到港,装油,最后离开的流程。下面这条主线主要描述的是移动资源,也就是拖轮的调度。

对于移动资源来说,最重要的是确定移动资源应该在什么时候从一个地点启动,也就是决定出发点的启动时间,以及应该到什么地方,也就是决定目的地点。对于抽象程度较高,不太关心从出发点到目的点之间走行的路径,而只是关心走行的距离和时间的话(距离可以通过速度转换成时间),那么我们只需要建立一个点到点的距离矩阵表格,或者点到点的移动时间矩阵表格,那么,在确定了起点和终点之后,只要通过这个表格查找距离,就可以确定走行的时间。我们现在这个例子就属于这种情况,因为港口面积较大,拖轮走行自由度相对宽松一点。如果是铁路网,那么情况就更复杂一些,因为铁轨具有独占性、方向性,机车不能随意走行,那么,在这种情况下,除了确定起点和终点之外,还要规划出机车走行的路线,并且在必要的时候,还需要对走行的路线进行“预约”,禁止其他车辆驶入。

回到我们这个例子。
拖轮调度的逻辑需要的输入包括
(1)拖轮目前的位置和状态(空闲?繁忙?)
(2)是否有其他油轮有请求? 谁发出请求?
拖轮调度的逻辑需要的输出包括
(1)让拖轮启动的时间
(2)拖轮的目的地
(3)从出发点到目的地的走行时间

一般情况下,可以想像拖轮没有自主决定权,它的调遣都听从于模型调度模块发出的指令,它唯一要做的就是执行(从一个地方通过一段延迟走到另外一个地方)和报告(汇报当前的状态和位置)。这个模型采用了集中调度,分散仿真的方式,也就是说所有调度指令的发出都是由 Equation 这个模块发出。

这个模块每隔一段时间进行一次调度计算,之所以采用了固定时间间隔计算的方式,而没有采用某个事件触发的方法,就是为了以后更复杂模型逻辑中,在没有事件发生而需要调度的情况下,也可以提前发出调度逻辑。比如说,如果要求拖轮在油轮装油即将结束之前10分钟就要启动,以便可以在油轮刚刚装完油就可以被拖走,那么采用固定时间间隔方法可以满足这个要求。在ExtendSim 中,采用固定时间间隔运算调度逻辑并不会显著影响到运算速度,因为大部分情况下,计算并不触发任何动作,而采用集中调度的好处,就是这个调度逻辑的运算速度近乎可以忽略不计。

为了记录拖轮当前的状态,我们定义了一个 TugLocation 的属性,为了记录在港口和三个码头是否有油轮等待被拖走,我们采用了 Location 的数组,这个数组实时记录了 L1 (港口是否有船),LL1 到 LL3 (是否有已经装完油的油轮等待被拖走),以及 L2 (拖轮本身是否空闲)。这些都是在 Equation 中进行调度逻辑处理所需要的输入参数。那么在 Equation 模块中的调度逻辑其实很简单,就是判断如果拖轮空闲,那么按照一定的优先级看港口和三个码头是否有拖运的任务,如果没有,就接着在原地等待;如果有,那么就会输出三个信息
(1)OPEN=1将 拖轮队列 后面的Gate 打开,让拖轮启动出来
(2)Which告诉拖轮去哪个目的地
(3)通过查表得出出发点和目的地之间的移动时间

有了这三个信息,就可以让拖轮走到任何需要的地方,或者和港口的油轮,或者和已经装完油的油轮,进行 Batch 捆绑。

[ 本帖最后由 focuscon 于 2009-2-12 19:43 编辑 ]

focuscon 发表于 2009-2-12 18:33:59

谁先做完?

这是个经典题目
三个人甲、乙、丙同时开始做一件事情,甲一口气做完,需要的时间是 U(6,12) (也就是均匀分布在6分钟到12分钟之间),乙把事情分成两步,每步时间是U(3,6),丙将事情分成三步,每步时间 U(2,4)。请问,谁最先完成的概率最大? 是甲,乙,还是丙,还是同样大?

然后,看看谁最后完成的概率最大? 是甲,乙,还是丙,还是同样大?

这个题目如果放在制造和物流的应用环境下,也可以变成

(1)有一个工序,可以一次完成,或者拆分成几个步骤完成 或者

(2)有一个物流运输从A点到B点,有三个走行方法

等等,道理都是一样的,所以,这个题目的应用背景比较广

参考模型

focuscon 发表于 2009-2-12 18:34:43

打死一只蚊子所需时间和次数的仿真求解

出一道题目供初学者练习,也请专家级别的道友指导。

题目名称:打死一只蚊子需要的时间和次数

问题描述:假设某晚你睡觉没关好蚊帐不幸被一只蚊子连叫带咬弄醒,很生气!于是开灯并关起蚊帐实施瓮中捉鳖搜捕行动。那只蚊子四处逃避,你找到它需要的时间是均值为2分钟的指数分布,找到它后悄悄地凑过去“啪”一下能打中(打中即死)的几率是0.3,打死这只蚊子才能睡觉。
请用Extendsim仿真的方法得出:
1.打蚊子花费的总时间
2.平均需要多少次“啪”才能打死蚊子

(蚊子咬人成功的事件和这个类似)

本人初学,对于仿真掌握的不全面,如果题目出的不对还请大家指正,不胜感激!如果题目没问题,欢迎上传你的模型和分析和大家一起交流。

更详细的讨论过程 http://www.simulway.com/bbs/thread-13296-1-1.html

[ 本帖最后由 focuscon 于 2009-2-16 16:23 编辑 ]

focuscon 发表于 2009-2-12 18:36:54

山寨老婆饼店若干问题的仿真求解

大家好!
这两天我又想到了一个小题目,可供初学者练习使用Batch,Unbatch,Transport..可能还有统计.等等模块的功能,有兴趣的可以试一下。
声明:其实本人并不懂老婆饼的制作流程,里面的流程和参数都是编的,冠以此名纯属趣味性考虑,吸引大家前来交流。

题目名称:山寨老婆饼店若干问题的仿真求解

问题描述:我们以未烤的老婆饼为原料(以下简称饼),主要模拟烤和出货的过程。
一家饼店制作老婆饼的流程和相关细节如下:
1. 固定每1min来一个未烤的饼,工作人员在专用的工作台上(共两个,处理能力均为1)用2min时间将4个饼装入一个托盘,
2. 然后戴上耐高温手套用2min时间将盘送入4个烤箱中的一个,每个烤箱装满2个盘才可开烤,烘烤时间为20min.
3. 再戴上耐高温手套将盘一个一个拿出来放(花1min)在一个可容纳6个盘的冷却室冷却6min,将盘中的饼分装到纸盒(每个纸盒装2个饼,装饼时间为2min,共有两个出售窗口)卖给顾客。

注意:整个过程中人员,托盘和手套是要周转的,比如人不能站在那里等着烤炉,手套也不能一直戴在人手上。

请问:在工作台,烤炉和销售窗口等资产数量不变的情况下,为使销售量最大化(假设烤出来的都可以卖掉)以及成本最低,至少要几个工作人员,几个托盘和几双耐高温手套?

有问题请提出,主要是练习,里面的参数只是建议值,可以随意改动。:D

目前还没有成熟的模型

focuscon 发表于 2009-2-16 09:20:14

原帖由 linweixu168 于 2009-2-15 23:28 发表 http://www.simulway.com/bbs/images/common/back.gif
突然发现 这里还有一个 这么有意思的题目
呵呵 多多支持,我们讨论成熟的题目我会转帖过来,集中整理方便后来人。:lol

focuscon 发表于 2009-2-16 16:20:51

银行营业窗口的最佳个数

转自Arena的高额悬赏题目,好像是一个学生的作业,也适合我们练习.
更详细的讨论过程请参考这里。http://www.simulway.com/bbs/thread-13330-1-1.html
关于这个题目,我要感谢iesim和linweixu168的热心交流 呵呵。。

[ 本帖最后由 focuscon 于 2009-2-16 16:22 编辑 ]

frank433 发表于 2009-2-27 20:49:51

好东西:victory:

focuscon 发表于 2009-3-1 16:48:34

题目5:机器抽检功能的实现

题目5:机器抽检功能的实现

一台机器具备检查功能,假如我要实现这样一种抽检功能该如何设计? 1.正常生产情况下每生产10个产品会自动抽检一次,假设正常生产时处理时间是20秒,抽检时需要50秒 2.开始生产的第一个产品必须检查 3.如果该机器中途发生当机,恢复后的第一个产品自动检查以防止产生更多的不良品. 补充: 1.如果中途停止,等机器恢复后再生产。 2.当机恢复后只检查第一个,后续还是每10个检查一次。 3.所谓50秒的处理时间其实是20秒的加工时间+30秒的检查时间。如果在生产时当掉了,那么机器恢复生产后必须继续完成当机前剩余的加工时间(其实这时候处理时间会变的更长,避免过于复杂我们就忽略了吧),并且做完此产品后会对它做检查(即对20秒的产品来说,剩余处理时间就是 20-X+50-20(即余下的加工时间+30秒的检查时间), 对于50秒的产品也一样还是 20-X+50-20,但是如果在检查时当了,那么不管已经检查到哪一步,恢复后必须检查30秒 ),好像挺复杂的。 大家讨论,如何实现这样的功能。
模型:
http://www.simulway.com/bbs/thread-13374-1-1.html

focuscon 发表于 2009-3-1 16:49:55

题目6:WIP控制功能

假设有一条自动化生产线,为了保证瓶颈设备不待料,每个主制程机台前方均设置一个Buffer,靠下游Buffer给上游Buffer发送Transfer stop的信号来控制投料与否,为了简化问题,我截取一部分来说明。

一个烤炉前后各设一个Bufffer,每个Buffer最多可暂存50个产品,Buffer同时还配有一个Robot具有搬送的功能,正常情况下的搬送时间为20秒,当接收到停机信号以后的搬送时间为15秒(只往本机暂存产品).为了合理控制WIP,假如设定当下游Buffer(buffer2)里面的WIP大于等于30的时候就发信号让前面的Buffer(Buffer1)停止往下游投料,产品送往暂存区。当WIP量减小到10的时候取消信号,buffer1继续往烤炉投料,如果buffer1暂存区的物件个数大于等于50个就从暂存区拿物件,直到小于10个为止。当Buffer1 WIP达到50个后它的上游自动停止投料(投料时间间隔为25s),直到少于10个为止。正常情况下,Robot1是将物件从上游搬到烤炉,Robot2从烤炉搬到下游,Tact time平衡时物件不经过暂存区。Robot2 优先从烤炉取物件。


注:1.整个过程中Oven不当机,持续生产(可同时处理50个产品,时间为35分钟)
       2.上游工艺来料的时间间隔为25秒.
       3.Buffer暂存区的优先级顺序为后进者先出
       5.方便看效果,各处理时间可以自行设置

大家讨论如何实现上述功能。

水平有限,不知道表述清楚了没有:D

模型: http://www.simulway.com/bbs/thread-13383-1-1.html

focuscon 发表于 2009-3-1 16:51:10

题目7:Transfer Delay功能

类似上次的题目,现在来讨论一个搬送延时的功能:
一个Loader负责供料(15s),一个Robot负责往下游搬送(20s)。按常理当下游繁忙时Robot应该立即把料送到暂存区(LIFO),再去上游接料,但是Robot把料送到暂存区再拿出来要花更多时间(假设是30s), 为了节省时间,给Robot设置一个延时功能,只有当Robot在这个延时之内且下游有需求时才送到下游,否则送到暂存区。
我的问题是:如何显性的实现这个延时的功能,也就是可以直接通过输入Delay时间来控制延时,参考IESIM提供的模型,我只能“隐性”的搞成这个样子了。

详见 :http://www.simulway.com/bbs/thread-13470-1-1.html

focuscon 发表于 2009-3-20 21:03:08

题目8:烤炉产能评估

讨论异常激烈,太多了,请看这里。
http://www.simulway.com/bbs/thread-13610-1-1.html

focuscon 发表于 2009-3-24 17:31:08

电影院售票系统作业

http://www.simulway.com/bbs/thread-13578-1-1.html

已经有参考答案,进入后请往下翻。

focuscon 发表于 2009-3-24 17:31:21

电影院售票系统作业

http://www.simulway.com/bbs/thread-13578-1-1.html

已经有参考答案,进入后请往下翻。
页: [1] 2 3 4 5 6
查看完整版本: 仿真小题目和答案集