0

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

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 的算法。

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

4

1 回答 1

1

假如说:

  • 你的补丁有一个cost变量
  • 你的链接有一个link-cost变量
  • 海龟总是连接到相邻补丁上的海龟(就像您发布的代码中一样)

您可以简单地:

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

这只会增加链接两端海龟下的两个补丁的成本。(如果您的链接遍历两个以上的补丁,这种方法将不起作用,事情会变得更加复杂。)

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

于 2013-10-08T15:02:44.370 回答