0

我有 3 个相同的套件,由 productionSuite 的一种代理类型表示,我想使用循环将套件设置为空闲和忙碌。productionOrder 的代理只需要发送到空闲房间。

我在ProductionOrder 代理中有一个assignedSuite 参数,它等于在main 的源中挑选的随机套件。我开始在此源中尝试与 ProductionSuite 代理的状态图相关的循环。我想我需要一段代码来将 ProductionSuite 定义为 0、1、2,然后用循环检查它们是否有 ProductionOrder。

[资源]

(原码)

agent=ProductionOrder
agent.assignedSuite = productionSuite(uniform_discr(0,2));
deliver("Suite is Scheduled", agent.assignedSuite);

(新代码)

行动:

`if ( productionSuite(0).inState(idle))
agent.assignedSuite = productionSuite(0);
agent.receive("Suite is Scheduled");

if ( productionSuite(1).inState(idle))
agent.assignedSuite = productionSuite(1);
agent.receive("Suite is Scheduled");

if ( productionSuite(2).inState(idle))
agent.assignedSuite = productionSuite(2);
agent.receive("Suite is Scheduled");`

我得到的错误是空闲不能作为变量解析。虽然我不确定这是最好的使用方法。也可以在何时对套件进行分组或我是否应该单独定义它们时使用一些方向。

4

1 回答 1

0

该错误是由于您的 Source 对象不知道“空闲”而引起的。您需要将其重写如下:

if (productionSuite(0).inState(ProductionSuite.idle))

假设您的 productionSuite 代理是 ProductionSuite 类型(注意大写字母)。简而言之,您需要告诉代码检查状态属于哪个代理类型,以便它知道在哪里查找。

希望这可以帮助

于 2019-10-15T17:19:38.183 回答