我正在构建一个模型,在这个模型中,卡车离开主要分销商,沿着一条路线向几个客户送货,然后在分销商空着的时候返回给分销商。我已经创建了一个“卡车”代理,它模拟卡车从分销商,从一个客户到另一个客户,再回到分销商的行为。在我的模型中,我希望卡车在返回之前的旅程不超过20个小时。
为此,我在卡车代理中创建了一个statechart,但它的工作方式与我在代码中预期的不同。这是我的状态图中的状态截图,如下图所示:

我有代码
startTime = time(HOUR);在我的" atDistributor“状态下,atDistributor和prepareToLeave之间的转换分别为1天和0小时。我的movingToCustomer块代码如下所示:
client = getNearestAgent(customers);
if ((time(HOUR) - startTime) < 20)
moveTo(client);
else
moveTo(main.distributor);卸载时间为30分钟,返回到movingToCustomer的分支的条件为
customers.size() > 0而movingBackToNewton具有进入操作
moveTo(main.Newton);然而,当我运行模型时,我查看了单个卡车的行程时间,它们超过了20个小时。这让我相信我的代码或逻辑中一定有某种错误,尽管我不知道从哪里去找。
发布于 2019-08-11 00:36:32
这就是你的潜在问题:
这是你的movingToCustomer代码:
client = getNearestAgent(customers);
if ((time(HOUR) - startTime) < 20)
moveTo(client);
else
moveTo(main.distributor);这意味着如果时间超过20,它将返回到分销商...但是当它到达您的分发者时,它会进入"unload“状态,然后转到分支来询问问题customers.size() > 0。
既然这是真的,它就会返回到movingToCustomer状态
这个状态图在概念上是错误的。
https://stackoverflow.com/questions/57436632
复制相似问题