当前位置: 首页 > 知识库问答 >
问题:

从两个深托盘架上挑选前面的物品

翟俊远
2023-03-14

我把两个特工藏在一个托盘架上,用一个行李架块。当我用rackStore从货架上取出物品时,它尝试先取后面的代理,我得到下面的错误,说它不能被挑选,因为前面有其他代理。

有人知道我怎么从前面挑吗?

共有1个答案

朱硕
2023-03-14

这是AnyLogic软件的大故障,也是他们急需解决的问题。因为当涉及到深仓时,你必须手动控制一切。

我会给你一个例子,它肯定不是解决你的特定问题的最佳方法,这只是你理解如何将它扩展到更多的东西的一个步骤。因为即使这应该是一个非常容易的问题,但事实并非如此。这将只工作2个机架有2个层次的深度,1个层次的高度,和一个唯一的行。

因为我不知道你的产品在货架上停留多久,我会假设一些事情,这是随着事件,我将决定是否从货架上得到一个产品每5秒钟(这绝对是任意的)。

if(wait.size()>0 && resourcePool.idle()>0 && rackStore.size()==0){
    Box bx=findFirst(wait,b->b.deep==0);

    if(bx!=null)
        wait.free(bx);
}

在rackStore出口上,我需要存储位置,所以在“On exit”操作中,这段代码将有所帮助(您检查相同位置上是否有另一个框,如果有,则更新deep变量的值。然后存储新代理的位置和deep值)

Box box=findFirst(wait,b->b.position==position);
if(box!=null){
    box.deep++;
}
agent.deep=0;
agent.position=position;

最后,在rackPick on exit操作中,一旦产品被挑选并交付,您将更新它后面盒子的深度值(如果有的话)

Box bx2=findFirst(wait,b->b.position==agent.position);
if(bx2!=null){
    bx2.deep--;
}

我知道这一切看起来有点疯狂,但当涉及到使用深层次时,你必须自己创造所有的逻辑...

 类似资料:
  • 我想在AnyLogic中建模一个双深托盘架,它包含两种类型的代理:小盒子和大盒子(扩展gereral代理“盒子”的两种不同的代理类型)。这里我有一个关于进出托盘架的运动的问题: 我需要我的车辆/移动资源能够在同一时间从产卵到托盘架移动1个大或2个小箱子(或如果需要的话只移动1个小箱子),并在一段时间后从那里到despawn。我的问题是我不知道如何告诉资源同时接收两个代理,如果可能的话。有办法解决这

  • 我想在一个工艺流程中使用不同的托盘架。这样我就给我的托盘一个ID并将其与数据库连接起来。我决定在哪个托盘架我的托盘必须储存从我的叉车。这可能吗?我怎么能这么做?它不能给托盘架一个ID并将其与数据库连接,在数据库中我将托盘插入到源块中。机架库和机架拾取器应该知道哪个托盘机架头。

  • 当产品存储在这个特定的单元格中时,我想稍后从这个特定的单元格中检索它。因此,我想通过给出输入行、位置和级别来使用rackPick块(或任何其他块)选择一个产品。 例如,我将产品A存储在第1行、位置20和级别2中。我想从这个特定的细胞中挑选产品。我怎样才能做到这一点?

  • VM挑选 Python解释器或Python虚拟机有很多种实现,CPython是最主流的实现。CPython同时也是别的虚拟机实现的参考解释器。 PyPy是用Python实现的Python解释器,Jython是用Java实现运行在JVM上的解释器,IronPython是用Microsoft .NET CLR实现的解释器。 除非解释器的选择非常非常重要,我们一般都用CPython。 如果上面那些关于版

  • 我们有一个管理打印文档的项目。起初,我想知道为什么不能在一个地方设置打印选项。例如,可以使用MS Word自动化完成首页和其他页面的打印机托盘选择: 在上面的代码中,打印机托盘被指定为整数,因为一些打印机没有托盘的标准值(我们在HP中遇到了这个问题-这里描述了托盘代码)。因此,我们首先使用代码检索打印机的托盘: 这段代码工作正常。 但这里无法指定双面打印和装订选项。可以使用OpenPrinter和