我有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");`
我得到的错误是空闲不能被解析为变量。虽然我不确定这是最好的方法。也可以在何时对套件进行分组或是否应该单独定义套件方面使用一些指导。
答案 0 :(得分:0)
该错误是由于您的Source对象不知道“ idle”而引起的。您需要按如下方式重写它:
if (productionSuite(0).inState(ProductionSuite.idle))
假设您的productionSuite代理为ProductionSuite类型(请注意大写字母)。简而言之,您需要告诉代码以检查状态所属的代理类型,以便知道在哪里查找。
希望这会有所帮助