首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用statechart模拟卡车交付的意外结果?

使用statechart模拟卡车交付的意外结果?
EN

Stack Overflow用户
提问于 2019-08-10 04:19:27
回答 1查看 73关注 0票数 1

我正在构建一个模型,在这个模型中,卡车离开主要分销商,沿着一条路线向几个客户送货,然后在分销商空着的时候返回给分销商。我已经创建了一个“卡车”代理,它模拟卡车从分销商,从一个客户到另一个客户,再回到分销商的行为。在我的模型中,我希望卡车在返回之前的旅程不超过20个小时。

为此,我在卡车代理中创建了一个statechart,但它的工作方式与我在代码中预期的不同。这是我的状态图中的状态截图,如下图所示:

我有代码

代码语言:javascript
复制
startTime = time(HOUR);

在我的" atDistributor“状态下,atDistributor和prepareToLeave之间的转换分别为1天和0小时。我的movingToCustomer块代码如下所示:

代码语言:javascript
复制
client = getNearestAgent(customers);
if ((time(HOUR) - startTime) < 20)
    moveTo(client);
else
    moveTo(main.distributor);

卸载时间为30分钟,返回到movingToCustomer的分支的条件为

代码语言:javascript
复制
customers.size() > 0

而movingBackToNewton具有进入操作

代码语言:javascript
复制
moveTo(main.Newton);

然而,当我运行模型时,我查看了单个卡车的行程时间,它们超过了20个小时。这让我相信我的代码或逻辑中一定有某种错误,尽管我不知道从哪里去找。

EN

回答 1

Stack Overflow用户

发布于 2019-08-11 00:36:32

这就是你的潜在问题:

这是你的movingToCustomer代码:

代码语言:javascript
复制
client = getNearestAgent(customers);
if ((time(HOUR) - startTime) < 20)
    moveTo(client);
else
    moveTo(main.distributor);

这意味着如果时间超过20,它将返回到分销商...但是当它到达您的分发者时,它会进入"unload“状态,然后转到分支来询问问题customers.size() > 0

既然这是真的,它就会返回到movingToCustomer状态

这个状态图在概念上是错误的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57436632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档