为链接分配成本

时间:2013-10-07 19:30:22

标签: netlogo

我有一个横向,每个补丁包含一个成本值。 我根据以下代码在每个补丁中放置了一只乌龟:

to create-turtles 
ask neighbors [ sprout 1 [ 
set shape "dot" 
set size 0.5 ] ]
end 

然后,我根据以下代码在每只乌龟之间建立了一个链接:

to create-link-turtles
ask turtles [ create-links-with turtles-on neighbors ]
end 

由于每个补丁包含一个成本值,我想为海龟之间的链接分配一个成本值。

例如, 如果链接与具有两个不同成本的两个补丁(补丁1和补丁2)相交,则链接将等于补丁1中的成本+补丁2中的成本。

如果链接与具有相同成本的两个补丁(补丁1和补丁2)相交,则链接将等于补丁1中的成本。

如何以这种方式为海龟之间的链接分配成本值?

在此之后,我想应用dijkstra的算法。

感谢您的帮助。 祝你有个美好的一天

1 个答案:

答案 0 :(得分:1)

假设:

  • 您的补丁有cost变量
  • 您的链接有link-cost变量
  • 海龟总是与相邻斑块上的海龟连接(如您发布的代码中所示)

你可以简单地说:

ask links [ set link-cost sum [ cost ] of both-ends ]

这只会在链接两端的乌龟下添加两个补丁的成本。 (如果你有遍历两个以上补丁的链接,这种方法就行不通了,事情会变得复杂得多。)

为了计算之后的距离,我建议你看一下the NW extension。它的weighted-distance-to primitive在内部使用了Dijktra的算法。