假设一家快餐店出售沙拉和汉堡。有 两个收银员。使用收银台1,它需要的秒数 完成沙拉的顺序均匀分布 {55,56,...,64,65};以及完成一个人所需的秒数 汉堡的顺序均匀分布在{111,112,...,129,130}。 使用收银台2,完成收款所需的秒数 沙拉的顺序均匀分布在{65,66,...,74,75};和 完成汉堡订单所需的秒数是统一的 分布在{121,122,... ,, 139,140}。假设客户 随机到达,但r客户的平均到达率 每分钟。
考虑两种不同的情景。
•顾客在一个人中等待 服务线,当两个收银员中的任何一个可用时, 生产线上的第一个客户前往收银台并获得服务。在 在这种情况下,当顾客到达餐厅时,他也是 如果没有排队,则会得到服务,或者在行尾等待。
•客户排队等候两行,每一行都是收银员。第一个客户 当且仅当收银员为他的线路时,在一条线路上将得到服务 变得可用了。在这种情况下,当客户到达时 餐厅,他加入了短线。另外,我们强加了 条件是,如果客户加入一条线,他将不会移动到 当另一条线变短时,另一条线或另一条收银台 或当其他收银员获得免费时。
在两种情况下, 收银员只会在客户开始为下一位客户提供服务 他目前正在接受他订购的食物。 (那就是 我们称之为“客户订单已完成”。)
......模拟
有关 两种情景中的每一种以及r的几种选择(见后面的内容) 描述),你要模拟顾客 到达/等待/获得服务3小时,即 从时间0到时间180分钟,你假设在那个时间0 没有客户等待,两个收银员都可用;整个 将3小时的时间段分成每个1秒的时隙 持续时间。在每个时间段,以r / 60的概率,你创造一个新的 客户到达,并且以1 - r / 60的概率你没有新的 客户到达。这应该会导致平均客户到达 r客户/分钟的比率,到达模型将是合理的 接近上面描述的内容。在每个时间段,你将做 你的程序处理任何必要的事情。
...目标和 交付
您需要编写一个程序来调查以下内容。 对于两个场景中的每个场景以及每个场景,你要划分 三个小时的模拟时间段,分为10分钟,每个时间段 客户在期间i到达(i∈{1,2,...,18}),计算 客户的整体等待时间(即从他到达的时间) 在餐厅到他的订单完成时。你需要 打印每个客户到达的平均等待时间 期间我请注意,如果到达期间i的客户没有 在三个小时的模拟时间内服役,然后他等待 时间不得而知。所以客户到达的平均等待时间 在这个时期无法计算。在这种情况下,只需打印“不 可用“作为该期间的平均等待时间。
所以,这个程序处理小时,分钟和秒。
最好是制作一个三维数组:
time[3][60][60]
总共三小时,内部60分钟,内部60秒。
或者,我认为我应该用这种结构制作一个“for-loop”:
for (time=0;t<10800;t++)
此循环的每次迭代都将代表三小时模拟中的一秒(3hx60mx60s = 10800秒)。
我这些人在正确的轨道上?哪种方法更合理。是否有其他数组对此程序至关重要?
一如既往地感谢帮助!
答案 0 :(得分:1)
几乎总是最好将内部时间表示为几秒钟;使用for循环比使用三维数组更容易。一个很好的约定是将其写为
MAX_SECONDS = 3 * 60 * 60
for (t=0;t<MAX_SECONDS;t++)
要查看此项目的数据结构恰当地是一个队列。这可以使用数组实现,但需要一些额外的工作。