在Anylogic

时间:2019-03-07 10:43:12

标签: random location gis point anylogic

我目前正在Anylogic中基于代理的模型工作,该模型由多个商店(每个商店分配有一个驱动程序)和下订单的客户组成,然后将这些订单从最近的商店交付给他们。

我已创建具有特定订单频率事件的代理类型“客户”。我知道anylogic允许通过在GIS地图上放置节点,在地图上搜索位置名称或以编程方式定义位置(setLocation(INodenode),setLocation(Point point),setLocation)来为代理分配GIS位置(代理)和setLatLon(双纬度,双经度)。

但是,我想在每次生成订单时为客户分配一个随机的GIS位置“ GIS节点”。我想知道是否有某种功能可以用来执行此操作或以其他方式进行操作。 / p>

我们非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以在以下代码中使用此代码:代理程序操作,启动时:

Point pt = get_Main().region.randomPointInside();
setXYZ( pt.x, pt.y, pt.z );

如果无法解析“区域”,则应在主树,演示文稿,地图中进行检查,如果“区域”名称不存在,则表示您尚未创建该区域。您可以转到托盘,空间标记,然后使用GIS区域绘制所需的区域。

答案 1 :(得分:0)

我不希望您在整个世界中都想有一个随机的位置,因为您没有在太平洋中部,珠穆朗玛峰的顶部,白宫或南极某个地方的客户。

因此,您真正想要做的就是定义一个GIS区域,这是您在找到GIS点的同一位置可以找到的元素之一,您可以在地图上选择要在其中找到区域的区域您的客户可以存在,然后您可以选择一个随机点:

region.randomPointInside()

不过请记住,必须计算到每个随机点的路线,因此,如果您有太多的随机点并且要传递到这些点,则这会非常慢,因为每次都会计算路线...