在 Anylogic 中分配随机 GIS 位置

Posted

技术标签:

【中文标题】在 Anylogic 中分配随机 GIS 位置【英文标题】:Assigning random GIS location in Anylogic 【发布时间】:2019-07-29 05:23:32 【问题描述】:

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

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

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

非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

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

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

如果你得到“区域”无法解析,你应该检查主树,演示文稿,地图,如果“区域”名称不存在,则意味着你还没有做到。您可以前往 Pallet、Space Markup 并使用 GIS Region 来绘制您想要的区域。

【讨论】:

【参考方案2】:

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

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

region.randomPointInside()

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

【讨论】:

这是个好主意,我会试一试,但是我应该在哪里保存这个函数返回的点? 函数返回一个Point..所以你可以轻松保存 我创建了一个空的代理群体,并在地图上为这个群体分配了一个区域。然后我创建了一个订单频率事件并在事件的操作框中输入了提到的函数( Amman.randomPointInside() )但无法解析“安曼”区域的名称。我应该在另一个地方写这个函数吗?

以上是关于在 Anylogic 中分配随机 GIS 位置的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GIS 空间中的 anylogic 中创建家庭和本地连接?

std::string 在内存中分配的位置在哪里?

AnyLogic错误行人在旅途中飞过GIS地图

在 UIbutton 中分配随机标题

Anylogic使用getNearestAgentByRoute发送新订单

在优先级队列中分配随机优先级?