探索图表上的相邻节点

时间:2014-03-26 09:10:00

标签: network-programming netlogo

我正在研究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

2 个答案:

答案 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的模型库中有两个相关的代码示例我建议你看一下:

  • Link-Walking Turtles示例
  • 走向目标示例

在前者中,海龟一下子移动到下一个节点;在后者中,他们逐渐进行。我不确定你在尝试哪一个?通常情况下,如果你正在做网络工作,你会采用前一种方法;从您的代码来看,您似乎正在尝试后者,但它并不清楚原因。

请注意,您可以仅使用setxy ([xcor] of current-node) ([ycor] of current-node)替换move-to current-node