指定放置在GIS地图上的代理内生成的代理的位置

时间:2018-09-11 12:29:53

标签: anylogic

因此,在此模型中,我将一些医院代理随机放置在一个区域中。这些医院包含一个流程,并在该流程的某个点上使用拆分块生成了一个新的代理人“ Bones”。通过将其设置为等于医院的(x,y)坐标,可以正确指定这些Bones代理的位置。

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

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代理的位置设置为等于医院代理的经度和纬度:

double longitude = getLongitude();
return longitude;

我在纬度上也做同样的事情。然后,我在拆分块的“纬度”字段中输入了这些函数。

1 个答案:

答案 0 :(得分:1)

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

因此,骨骼代理也应放置在地图中……似乎您没有这样做,并且可能是使用空格标记放置了骨骼代理。

当然可以这样做,但是您必须在另一个代理中执行。例如,创建一个名为continuousSpace的新代理,然后将骨骼代理放置在此处。

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

否则,您也可以将bonesagents放置在gis空间(在地图中),它也将起作用。

祝你好运:)