我正在使用由节点和链接组成的网络组成的 NetLogo 模型。我需要帮助来计算从给定节点到网络中任何链路上最近点的最短距离。此计算应考虑链路的整个长度,而不仅仅是端点或中点等特定点。
这是我的上下文模型的简化版本:
breed [nodes node]
to setup
clear-all
create-nodes 10 [
setxy random-xcor random-ycor
set color blue
set shape "circle"
]
create-links
create-nodes 1 [
setxy 0 0
set color red
set shape "circle"
]
reset-ticks
end
to create-links
ask nodes [
create-link-with one-of other nodes
]
end
; Need a method to find the closest point on a link
to-report find-closest-point-on-link [target-node]
; Implementation needed here
end
在这个模型中,我有一组节点以及它们之间的链接。我正在寻找一种方法来准确确定这些链接上到给定节点的最近点。
问题:
如何计算 NetLogo 中从节点到链路上任意点的最短距离? 用于此计算的最佳方法或算法是什么? 我很感激有关此问题的任何建议或指导。
distance
无法接收链接作为参数(在我看来,它应该!),但是您有红色节点和每个链接末端两个节点的坐标。因此,您可以使用适当的几何方程(不深入研究这个答案)来找到链接及其穿过红色节点的垂线相交点的坐标。
我会做的是:
sort links
创建的链接列表(这是必需的,因为与简单的 links
代理集相反,它使链接保持相同的顺序。这些要点中的最后一个需要)。end1
+end2
或 both-ends
检索每个项目是一对链接末端的列表。xcor
和 ycor
查找节点的坐标。distancexy
计算该点与红色节点之间的距离。sort links
完全相同。使用 min
和 position
查找(在列表中)最短距离的位置。sort links
从 index
检索与距离列表中最短距离(如上所述)位于相同位置的链接。注意
上述步骤可让您确定哪个链接最接近给定节点(根据您的问题标题:“如何在 NetLogo 中查找到节点的最近链接”)。根据您的措辞方式,有时您似乎对识别链接上的关闭点更感兴趣(“我正在寻找一种方法来准确确定这些链接上到给定节点的最近点”)。有时,您似乎对查找从节点到链接上任何点的最短距离感兴趣(“如何计算从节点到 NetLogo 中链接上任何点的最短距离?”)。
这些都是不同的输出,但我相信我建议的过程的终点可以针对任何这些情况轻松调整