我正在研究netLogo中的一个项目,其中我有一个随机网络,其中每个链路都分配了一个带宽。算法自己选择一个随机的源和目的地,之后它必须选择这两者之间的最佳路径。 我的问题是我如何要求我在特定代码上创建的海龟面对并在其邻居节点上移动以便探索图形(至少探索,如果它无法到达目的地) 除了“relay nod”之外,很少有trtles必须在节点上传播(中继节点是最佳节点路径,但我希望节点也可以探索其他节点)。 继承我的代码部分:
to face-targets
ask ants ;with [ target-node]; = node 4 ] ;nobody ]
[
let d 0
face (one-of nodes with [ label = "Relay Node" ]);target-node
ask current-node [
set d distance (one-of nodes with [ label = "Relay Node" ]);target-node)
]
set distance-to-go d
]
end
to move-forward
face-targets
ask ants [
while [ distance-gone < (distance-to-go )]
[
fd 1
set distance-gone (distance-gone + 1)
]
]
ask ants [
if distance-gone < distance-to-go
[
set current-node target-node
setxy ([xcor] of current-node) ([ycor] of current-node)
set distance-gone 0
set distance-to-go 0
]
]
end
答案 0 :(得分:1)
你所要求的并不完全清楚。一般情况下,您应该尝试将问题范围缩小到需要帮助的特定问题。
那就是说,我对你所描述内容的一般看法是这样的:
turtles-own [ current-node ]
to go
ask ants [
let next-node pick-next-node
face next-node ;; This is purely for visual reasons and is not necessary to the behavior of the model
move-to next-node
set current-node next-node
]
end
to-report pick-next-node
;; Whatever strategy you want your ants to use to pick their next node. For example, random:
report one-of [ link-neighbors ] of current-node
end
答案 1 :(得分:0)
我认为还没有人回答这个因为:
如果你解决了这两件事(S.O.问题是可编辑的),你将有更好的机会从这里得到有用的反馈。
NetLogo的模型库中有两个相关的代码示例我建议你看一下:
在前者中,海龟一下子移动到下一个节点;在后者中,他们逐渐进行。我不确定你在尝试哪一个?通常情况下,如果你正在做网络工作,你会采用前一种方法;从您的代码来看,您似乎正在尝试后者,但它并不清楚原因。
请注意,您可以仅使用setxy ([xcor] of current-node) ([ycor] of current-node)
替换move-to current-node
。