【问题标题】:Specifying location of agents that are generated within an agent that is placed on GIS map指定在放置在 GIS 地图上的代理中生成的代理的位置
【发布时间】:2019-02-15 23:04:20
【问题描述】:

所以在这个模型中,我有几个随机放置在一个区域中的医院代理。这些医院包含一个流程,并且在该流程的某个时刻,使用拆分块生成了一个新的代理“骨骼”。这些 Bones-agent 的位置通过设置为医院的 (x,y) 坐标来正确指定。

现在我想通过将医院放置在 GIS 地图中的实际位置来使模型更加逼真。我成功地做到了这一点。但是,现在我需要重新指定 Bones-agents 的位置。在生成第一个 Bones-agent 时,我收到以下错误:

root.Hospital1.splitblock: 
Error when trying to initialize new agent 
Caused by: root.Hospital2: 
This agent is already defined as agent living in space 'Continuous, based on 
GIS map' and can't have behaviour for space 'Continuous'This agent is already 
defined as agent living in space 'Continuous, based on GIS map' and can't 
have behaviour for space 'Continuous'

我需要做什么才能完成这项工作?我已经尝试将 Bones-agent 的位置设置为等于医院代理的经度和纬度,具有以下功能:

double longitude = getLongitude();
return longitude;

我对高纬度做了同样的事情。然后我将这些函数输入到分割块的“纬度”字段中。

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    当您开发模型时,您必须选择要使用的空间类型。请记住,您放置代理的所有画布以及地图和东西都是基于比例的,因此您不能将地图与使用空间标记创建的元素混合在一起(空间标记是指节点、路径、矩形节点等)。

    所以骨骼代理也应该放置在地图中...看来您没有这样做,您可能正在使用空间标记放置骨骼代理。

    当然可以这样做,但您必须在另一个代理中进行。例如,创建一个名为 ContinuousSpace 的新代理,并将您的骨骼代理放在那里。

    之后,您将必须使用 viewAreas(来自演示面板)创建一个导航按钮,以便从一个代理移动到另一个代理(即从 gis 空间到标记空间)。

    否则,您也可以将骨骼代理放置在 gis 空间中(在地图中),它也可以工作。

    祝你好运:)

    【讨论】:

    • 谢谢,费利佩。你是对的:生成骨骼的代理正在使用空间标记。骨骼需要能够移动到其他医院代理,所以我想我需要将骨骼放置在 GIS 空间中。一旦在分割块处生成骨骼,我将如何实现将骨骼放置在 GIS 空间中?更清楚一点:医院生活在 GIS 空间中,骨骼是在使用空间标记的医院内部生成的。
    • 如果它们是通过拆分生成的,那么“复制位置”中有一个选项可供您使用...
    • 是的,这就是我一直在做的。副本位置=(纬度,经度)。然后使用 OP 中的函数来获取医院代理的 lat 和 lon。不幸的是,这会产生该错误
    • 以及创建这些骨骼的代理是什么(分裂前存在的代理是什么?)
    • 患者和医院都住在主区(GIS 地图)。患者进入医院和流程。拆分块将患者代理拆分为患者和骨骼代理。
    猜你喜欢
    • 2022-01-15
    • 2020-05-18
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 2017-12-24
    • 2020-10-19
    相关资源
    最近更新 更多