netlogo计算从选定点到所有方向的距离

时间:2012-11-22 19:20:57

标签: netlogo

我看过这里:Example code Description

NetLogo project with vector map data

我正在使用矢量地图,其中是道路。然后我绘制道路的链接。在起点的图像中,即拉脱维亚的首都(里加)。左边是文茨皮尔斯市,距离里加约200公里。最重要的是拉脱维亚/爱沙尼亚边境,也约200公里。到底部约100公里。

我想要的是计算我需要为汽车充电站的位置。平均绿色汽车可以用充满电的电池行驶50公里。所以。我知道文茨皮尔斯大约200公里。我们在那条路上需要4个充电站。

理念1号是从起点充电站到每个方向每50公里之后。 (图片上的树符号)。此时充电站(树木)我将放置在随机位置:

to setup-stacijas
  set-default-shape boats "tree"
  create-boats num-boats [
    set speed 0 ; min-speed + random-float (max-speed - min-speed)
    let l one-of links
    set size 18
    set-next-stacija-link l [end1] of l
  ]
end 

to set-next-stacija-link [l n] ;; boat proc
  set cur-link l
  move-to n
  ifelse n = [end1] of l [set to-node [end2] of l] [set to-node [end1] of l]
  face to-node
end

问题:

如何计算到所有方向的距离xx公里?

Vector map with links and random charging stations

1 个答案:

答案 0 :(得分:1)

AGENT(补丁或海龟)可以使用DISTANCE原语和MOD运算符来查找50英里外的倍数的其他代理。

我假设我们的模拟中有1个补丁= 1英里 我假设“链接”连接到品种“节点”的乌龟 我假设START是一个包含“节点”的变量。

;; get all nodes that are multiples of 50 miles from start
let stations no-turtles
ask start [ set stations nodes with [ (floor distance myself) MOD 50 = 0 ]

由于许多原因,这并不完美。

  • 假设所有链接长度不超过1个单位。
  • 在50英里处穿过或沿着弧线行驶的道路将全部包括在内,因此他们将拥有所有车站。
  • 其他奇怪的东西,我没想过。

其他一些迭代方法表明了自己:

  1. 在道路上设置“旅行者”,每隔50(或左右)英里就会“停放”充电站。

    • 在十字路口,旅行者分成新旅行者来旅行每个分支
    • 当旅行者遇到旅行者时,如果每个旅行者到其最后一个“车站”的总距离超过50英里,则创建一个车站。无论如何,两位旅行者都死了。
    • 当旅行者找到现有的电台时,它就会死亡。

    通过这种方式,车站将被放置在所有道路上。

  2. 用十六进制网格填充补丁,半径为25英里或几英里。让他们迁移。

    • 让不在道路上的车站向最近的道路移动。
    • 所有车站都找到了一条公路,使车站远离车站。 50英里远,沿着道路行驶(远离地图中心打破领带)。
    • 击中边缘的站将“脱落”(死亡)
    • 因此,电台将自己展开,额外的电台将从地图的边缘掉下来。

    这可能确实有效。

  3. 用电台覆盖,然后销毁,直到只有足够的

    • 在每一英里的路上创建一个电台。
    • 选择一个站
    • ##要求49英里半径范围内的所有其他站点死掉 - 标记
    • 选择50英里外的其中一个站点。
    • 从## unil重复所有电台都被标记。

    那个可能不是最佳的。

  4. 模拟道路上的汽车 - 创建他们死亡的车站。

    • 将汽车随机放在您的道路上(从城市开始)。在需要充电(死亡)之前,汽车可行驶约50英里
    • 没有电台
    • 模拟在道路上随机行驶的汽车。
    • 当一辆车撞到一个车站时,它会完全充电
    • 如果汽车电量耗尽,它会死亡,并且该补丁/节点/位置的计数器会增加
    • 重复
    • 当补丁中的计数器超过某个值时,将站点放在那里。
    • 创建一个电台时,半径50英里范围内所有补丁的计数器减少到最近的0,最远的0,逐渐变为0。

    最终,电台会在需要的地方弹出。这个很有趣。

  5. ~~詹姆斯