使用 ResourceTaskStart .startTask(Agent) 以编程方式触发停机时间
Trigger Downtime programmatically using ResourceTaskStart .startTask(Agent)
在我的模型中,我有一个代表设备的资源池,该设备具有由停机时间块定义的停机时间。停机时间由触发器定义并将其任务发送到流程图。
除了标准的停机时间程序外,我还想以编程方式触发停机时间,使用:
`cleaning_and_conditioning_mld_617_411.startTask(Eq_MLD_617_411);`
我收到以下错误:
Eq_MLD_617_411 cannot be resolved to a variable
我该如何解决这个问题?
编辑:将代码更改为
cleaning_and_conditioning_mld_617_411.startTask(new Eq_MLD_617_411());
现在我得到一个 NullPointerException(见图 6)。
请查找模型的附件图片。
[1]: https://i.stack.imgur.com/xho4L.png
[2]: https://i.stack.imgur.com/C8Ybx.png
[3]: https://i.stack.imgur.com/pyPGH.png
[4]: https://i.stack.imgur.com/3WX8f.png
[5]: https://i.stack.imgur.com/5M2lc.png
[6]: https://i.stack.imgur.com/xGB1W.png
Eq_MLD_617_411
是您的 ResourceUnit 类型的名称。您将需要为停机时间提供一个实际的资源单位。
不幸的是,您不能简单地调用
cleaning_and_conditioning_mld_617_411.startTask(new Eq_MLD_617_411());
因为 new Eq_MLD_617_411()
将创建一个新代理但与引擎没有任何连接。 (因此你在 ...engine.Utilities.time
上得到了空指针异常
相反,您需要始终使用 add_myPopulation()
提供的 AnyLogic 创建代理,只要您在 canvas.
上创建任何代理类型的群体,它就可用。
现在在你的情况下,因为你有一个资源池,我们需要访问属于该池的资源单元......但是没有 resourcePool.getUnit()
可用的功能......现在怎么办?
一个选项是将资源池的资源单位添加到您创建的人口中
然后您可以调用该种群中的资源单元开始停机
我对其进行了测试,在 运行 时间内按下按钮会减少可用资源。
在我的模型中,我有一个代表设备的资源池,该设备具有由停机时间块定义的停机时间。停机时间由触发器定义并将其任务发送到流程图。
除了标准的停机时间程序外,我还想以编程方式触发停机时间,使用:
`cleaning_and_conditioning_mld_617_411.startTask(Eq_MLD_617_411);`
我收到以下错误:
Eq_MLD_617_411 cannot be resolved to a variable
我该如何解决这个问题?
编辑:将代码更改为
cleaning_and_conditioning_mld_617_411.startTask(new Eq_MLD_617_411());
现在我得到一个 NullPointerException(见图 6)。
请查找模型的附件图片。 [1]: https://i.stack.imgur.com/xho4L.png [2]: https://i.stack.imgur.com/C8Ybx.png [3]: https://i.stack.imgur.com/pyPGH.png [4]: https://i.stack.imgur.com/3WX8f.png [5]: https://i.stack.imgur.com/5M2lc.png [6]: https://i.stack.imgur.com/xGB1W.png
Eq_MLD_617_411
是您的 ResourceUnit 类型的名称。您将需要为停机时间提供一个实际的资源单位。
不幸的是,您不能简单地调用
cleaning_and_conditioning_mld_617_411.startTask(new Eq_MLD_617_411());
因为 new Eq_MLD_617_411()
将创建一个新代理但与引擎没有任何连接。 (因此你在 ...engine.Utilities.time
相反,您需要始终使用 add_myPopulation()
提供的 AnyLogic 创建代理,只要您在 canvas.
现在在你的情况下,因为你有一个资源池,我们需要访问属于该池的资源单元......但是没有 resourcePool.getUnit()
可用的功能......现在怎么办?
一个选项是将资源池的资源单位添加到您创建的人口中
然后您可以调用该种群中的资源单元开始停机
我对其进行了测试,在 运行 时间内按下按钮会减少可用资源。