本文由实习生Devon Cowling分享,他目前正在比勒陀利亚大学完成工业工程学位的最后一年项目,由Jaco-Ben Vosloo指导。本文旨在分享一种可以在处理大型复杂智能体演示时提高AnyLogic导航速度的方法。由于这些动画和演示在AnyLogic中的工作方式,它们可以使用许多资源。
对每个模型开发人员来说,处理大型智能体演示时再遇到严重性能损失,无疑让人非常恼火。乍一看,在处理模型时先删除演示,然后在运行之前手动重新添加演示似乎可以很容易解决。这样既可以很好地进行开发工作,也可以提高导航速度,但就开发过程来说这将非常麻烦和繁琐。这种方法要求您在每次处理动画智能体时都需要重复此操作,如果您像我一样,在打开智能体之前忘记从项目任务栏中删除它,那么当您的计算机时代回到拨号上网速度时,您会感到非常惊讶。
我从我最后一年的项目中借鉴了一个大型道路网络的示例模型。大型道路网络位于名为AgentWithIntenseAnimation的智能体中,需要在运行时在Main上看到。
在展示演示时,请查看以下视频中AnyLogic画布的移动速度有多慢。
如果你的模型跟视频一样,慢的几乎想拔头发,可以想象一下我在这个项目上工作了几周的感觉。。。
谢天谢地,有一个简单的方法可以解决这个问题,动态添加演示!
这将加快导航速度,同时在运行时保持演示的功能和动画。最棒的是…只需要做一次!
在启动顶层智能体时使用以下代码添加演示:
presentation.add(new ShapeEmbeddedObjectPresentation(Agent agent,
ShapeDrawMode drawMode,
boolean ispublic,
double x,
double y,
double z,
double rotation,
boolean drawAgentWithOffset,
boolean scaleIsAutomatic,
Agent embeddedObject));
对于我创建的示例模型,上面的代码如下所示:
presentation.add(new ShapeEmbeddedObjectPresentation(this,
ShapeDrawMode.SHAPE_DRAW_2D3D,
true,
0,
0,
0,
0,
false,
false,
AgentWithIntenseAnimation));
使用上述技术,结果如下:
如你所见,动态添加演示可以使导航更加顺畅,更容易处理该智能体,无论是添加统计信息还是添加按钮等。
这种方法使使用大型演示的模型变得更加用户友好(而且确实让我不必担心),所以我希望它能对在AnyLogic中遇到导航缓慢问题的人有所帮助。
示例模型:DynamicPresentaion