我有一个餐馆洗碗机的简单例子来说明我遇到的问题。
问题
如何确保查获正确数量的洗碗机
问题
使用一个函数来分配资源,洗碗机的数量并不总是正确的,因为使用和不使用水槽的时间不同。
实例
主要:
生成盘子并将其随机分配到出口块中的三个水槽之一。汇是一个代理群体。洗碗机是一个容量为10的资源池。
水槽:
菜进入队列,并使用等待块一次输入一个菜。清洗完盘子后,打开托盘,抓取下一个盘子。
详情:
我在一家餐馆有一个共享的dish_washers资源池。餐馆有3个水槽。菜肴被生成并随机分配给每个水槽。
如果只使用一个水槽,则需要两个洗碗机。但是,如果使用2个或更多水槽,洗碗机的数量将变为:
numberOfDishWashers = 2 + numberOfSinksInUse;
为了在使用更多水槽时更改NumberofDishchiners,我创建了一个函数,定义要从dish\u垫圈资源池中获取的NumberofDishchiners。
int numberOfSinksUsed = 0;
int numberOfWorkersToSeize = 0;
int numberOfWorkersAlreadySeized = 0;
int numberOfWorkersToAssign = 0;
ResourcePool[][] dish_washers;
for(Sink curSink : main.sinks){
if(curSink.queue.size() > 0){
numberOfSinksUsed += 1;
}
}
numberOfWorkersAlreadySeized = main.dish_washers.busy();
numberOfWorkersToSeize = 2 + numberOfSinksUsed;
numberOfWorkersToAssign = numberOfWorkersToSeize - numberOfWorkersAlreadySeized;
dish_washers = new ResourcePool[1][numberOfWorkersToAssign];
for(int i = 0; i < numberOfWorkersToAssign; i++){
dish_washers[0][i] = main.dish_washers;
}
return dish_washers;
错误描述:
但是,取决于哪个接收器首先完成
Exit, Sink: C Workers Currently Seized: 4
Sinks in Use: 2
Exit, Sink: C Workers Currently Seized: 4
Sinks in Use: 3
Exit, Sink: C Workers Currently Seized: 5
Sinks in Use: 2
Exit, Sink: C Workers Currently Seized: 4
Sinks in Use: 2
另一种看待这个问题的方法是,这个Excel表概述了当前的逻辑。繁忙工作线程的数量与繁忙工作线程的数量不匹配,应基于活动接收器的数量。
我尝试过的方法
如何确保始终抓取正确数量的洗碗机?
所以你这里的基本问题是,在水槽里,你会抓住一个洗碗机,然后盘子进入延迟(随着被抓住的洗碗机的数量),一旦超过延迟,它就会释放它抓住的洗碗机。。。但在这段时间里,情况可能已经发生了变化,你实际上想要为特定的水槽扣押不同数量的洗碗机。。。
你的选择是
>
从延迟中取出碟子,释放正确数量的洗碗机,返回延迟并延迟剩余时间。。。
实现您自己的逻辑。
我会选择选项2,因为选项1意味着您为AnyLogic创建的块开发了一个变通方法,最终您将无法按设计的方式使用这些块,不幸的是,这就是块化的问题
所以我在水槽里有一个集合,显示当前分配给这个水槽的洗碗机数量。然后每当一个新盘子进入水槽,我们都会重新计算要分配的洗碗机数量(也许在每个水槽?),然后进行正确的分配。
下面是一个示例,其中包含一些示例代码-我没有测试它,但您将获得类似的结果
问题内容: 我非常喜欢Visual Studio在完成已编写的代码和所引用的ALSO代码(各种库/程序集)时为您提供注释文档/参数名称的方式。 在完成代码或将方法悬停在方法上时,是否有一种简单的方法可以在Eclipse中获取内联javadoc /参数名称?通过插件?通过某些设置?使用大量的库(就像在Java中经常发生的那样)然后当您将其放在源jar中时,必须去网站或本地javadoc位置查找信息,
我不确定我的问题是否足够清楚,所以这里有解释:我正在使用opengl开发体素引擎,它工作正常,但我想通过一些优化来改进它。我开始对立方体的顶点使用VBO,我获得了一些fps,所以这很好。但是现在我想用立方体的颜色做同样的事情,我没有找到一个让我满意的答案,因为我需要一些细节: > 我只使用3个浮点数作为颜色,所以即使它工作glVertex AttribPointer()似乎也不是一个好方法,因为如
但我对它并不完全满意,主要有两个原因 我“滥用”了函数。在Stream API中,每个函数都有其明确、明确的用途:被认为是计算最大值,被认为是根据条件进行筛选,被认为是生成增量累加的值,等等。 这样做会阻止我使用Streams强大的机制:如果我想将搜索限制在前两个结果上怎么办? 这里我使用了,因为(据我所知)它是唯一一个允许比较两个值的函数,而这些值可以在某种程度上导致类似于“当前值”和“下一个值
问题内容: 假设我们有这个流 我想在地图中保存几对相邻的字符串,其中第一个以“ err”开头。 我想到的就是这样 但是我对它并不完全满意,主要有两个原因 我在“滥用” 功能。在Stream API中,每个函数都有其明确的定义明确的目的:应该计算最大值,应该根据条件进行过滤,应该产生递增的累加值,依此类推。 这样做会使我无法使用Streams强大的机制:如果我想将搜索范围限制在前两个结果中,该怎么办
我怎么能释放特定的资源在Any逻辑?在我的过程中,我有一个抓住块,它抓住3个替代资源(根据它们的可用性)。接近尾声时,我需要释放释放块中的一个潜在资源,根据被抓住的资源。我必须做什么才能知道哪个资源被扣押了,我如何释放它?我不能使用服务块,因为进程受到限制。 谢谢你的帮助!
Go的范围可以在地图和切片上迭代,但我想知道是否有一种方法可以在一系列数字上迭代,比如: 或者有没有一种方法来表示Go中的整数范围,就像Ruby对类范围所做的那样?