在 Anylogic 中分配随机 GIS 位置

Assigning random GIS location in Anylogic

我目前正在 Anylogic 中开发基于代理的模型,该模型由多个商店组成,每个商店都分配了 driver 和下订单的客户,然后这些订单会从最近的商店交付给他们。

我创建了一个具有特定订单频率事件的代理类型 "Customer"。我知道 anylogic 允许通过在 GIS 地图上放置一个节点、在地图上搜索位置名称或通过编程定义位置(setLocation(INodenode)、setLocation(Point point)、setLocation 来为代理分配 GIS 位置(代理agent)&setLatLon(双纬度,双经度)).

但是,我想在每次下订单时为客户分配一个随机的 GIS 位置 "GIS node" generated.I 想知道是否有我可以用来执行此操作的特定功能,或者任何其他方式。

非常感谢任何帮助。

我不认为你想要在全世界的随机位置,因为你在太平洋中部、珠穆朗玛峰山顶、白宫或南极的某个地方没有客户。

所以您真正想要做的是定义一个 GIS 区域,这是您可以在找到 GIS 点的同一位置找到的元素之一,您可以 select地图您的客户可以存在的区域然后您可以 select 一个随机点:

region.randomPointInside()

但请记住,必须计算到每个随机点的路线,因此如果您有太多随机点和到这些点的交付,这可能会很慢,因为每次都会计算路线...

您可以将此代码用于:代理操作,启动时:

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

如果你得到 "region" cannot be resolved,你应该检查 Main tree, presentation, map,如果 "region" name 不存在则意味着你还没有成功。您可以转到 Pallet,Space Markup 并使用 GIS Region 绘制您想要的区域。