Netlogo 将道路网格延伸到双向道路

Netlogo 将道路网格延伸到双向道路,netlogo,Netlogo,我正在使用netlogo进行交通模拟。在附图中,我想将道路网格扩展为双向道路网格,即增加每个道路网格的宽度。这是需要更新的代码,但我自己无法更新 set roads patches with [ (floor ((pxcor + max-pxcor - floor (grid-x-inc - 1)) mod grid-x-inc) = 0) or (floor ((pycor + max-pycor) mod grid-y-inc) = 0) ] 以下是使道路更宽的代码

我正在使用netlogo进行交通模拟。在附图中,我想将道路网格扩展为双向道路网格,即增加每个道路网格的宽度。这是需要更新的代码,但我自己无法更新

set roads patches with [
    (floor ((pxcor + max-pxcor - floor (grid-x-inc - 1)) mod grid-x-inc) = 0) or
    (floor ((pycor + max-pycor) mod grid-y-inc) = 0)
  ] 


以下是使道路更宽的代码

我试着把左车道和右车道分开,这样你就可以看到发生了什么,如果这有助于你确定汽车应该开往哪里

我还分离了x偏移和y偏移值,以便在需要时调整栅格

此代码假定max pxcor=32、max pycor=32和patch size=6,因此整个东西都适合相同的物理视图区域。

globals [
  left-lanes
  right-lanes
  roads
]

to setup
  clear-all

  ;; set the number of patches between lanes
  let grid-x-inc 13
  let grid-y-inc 13

  ;; offsets move the lanes slightly more to the right or further up
  let x-offset grid-x-inc - 3  
  let y-offset   -2

  ;; color the background
  ask patches    [set pcolor lime]

  ;; create the lanes
  set left-lanes patches with [
    (floor ((pxcor + max-pxcor - x-offset) mod grid-x-inc) = 2) or   
    (floor ((pycor + max-pycor - y-offset) mod grid-y-inc) = 2)
  ] 

  set right-lanes patches with [
    (floor ((pxcor + max-pxcor - x-offset) mod grid-x-inc) =  1) or   
    (floor ((pycor + max-pycor - y-offset) mod grid-y-inc) =  3)
  ] 


  ;; color the lanes for debugging purposes
  ; ask left-lanes [set pcolor yellow]
  ; ask right-lanes [set pcolor (yellow - 1)  ]

  ;; merge left and right lanes into roads
  set roads patches with [ member? self left-lanes or member? self right-lanes]
  ask roads [ set pcolor yellow]

  reset-ticks
end

to go   
  tick
end

下面是使道路更宽的代码

我试着把左车道和右车道分开,这样你就可以看到发生了什么,如果这有助于你确定汽车应该开往哪里

我还分离了x偏移和y偏移值,以便在需要时调整栅格

此代码假定max pxcor=32、max pycor=32和patch size=6,因此整个东西都适合相同的物理视图区域。

globals [
  left-lanes
  right-lanes
  roads
]

to setup
  clear-all

  ;; set the number of patches between lanes
  let grid-x-inc 13
  let grid-y-inc 13

  ;; offsets move the lanes slightly more to the right or further up
  let x-offset grid-x-inc - 3  
  let y-offset   -2

  ;; color the background
  ask patches    [set pcolor lime]

  ;; create the lanes
  set left-lanes patches with [
    (floor ((pxcor + max-pxcor - x-offset) mod grid-x-inc) = 2) or   
    (floor ((pycor + max-pycor - y-offset) mod grid-y-inc) = 2)
  ] 

  set right-lanes patches with [
    (floor ((pxcor + max-pxcor - x-offset) mod grid-x-inc) =  1) or   
    (floor ((pycor + max-pycor - y-offset) mod grid-y-inc) =  3)
  ] 


  ;; color the lanes for debugging purposes
  ; ask left-lanes [set pcolor yellow]
  ; ask right-lanes [set pcolor (yellow - 1)  ]

  ;; merge left and right lanes into roads
  set roads patches with [ member? self left-lanes or member? self right-lanes]
  ask roads [ set pcolor yellow]

  reset-ticks
end

to go   
  tick
end

好的,现在我明白你想做什么了。你有一个比绘制更宽的道路更大的问题

我现在明白了,你可能只是想让交通在每一条更宽的道路上朝一个方向行驶,而不是模拟双向行驶的交通

好的,所以在任何人回答您关于代码的问题之前,您需要解决几个设计问题

(1) 您想显示什么?你想要一条更宽的黄路吗?或者你想要漂亮的道路,像“交通2车道”模型那样,两边都有线条

(2) 您是否希望车辆实际使用两条车道,并包括诸如变道和超车等行为,如“交通两条车道”模型

而且。。。“交通2车道”模型已经包含了绘制更宽道路所需的所有逻辑和代码,这将解决您最初发布的两个相关问题之一。即使您只想要肥黄色的道路,而不是有线条的漂亮道路,也可以使用相同的逻辑,只需删除绘制线条的部分即可

这回答了你的第一个问题:

我想。。。增加每个道路栅格的宽度

但是。。。事实上,你在评论和原始帖子的标题中提出了一个更难的问题:

我想将道路网格扩展为双向道路网格

我不确定你的原意翻译成英语后是否保留了下来

对我来说,“双向道路”是指一条有两条车道的道路,在同一条道路上,车辆双向行驶。一些汽车将向北行驶,一些汽车将向南行驶

这比模型库中的“交通网格”问题要复杂得多,在“交通网格”问题中,每条道路只有一条车道宽,但也是“单向”


最后,我看到您没有赞扬Uri Wilensky,也没有提到模型库中的模型,而模型库是您发布的大多数代码的来源。对你的大学老师来说,很明显,你从别人的作品中复制了大量的代码——你应该表扬那个人,并引用代码的来源。将两个模型中的逻辑合并到一个更复杂的模型中,并使其发挥作用,这仍然是你大学期末项目的一项主要工作。

好的,现在我知道你在做什么了。你有一个比绘制更宽的道路更大的问题

我现在明白了,你可能只是想让交通在每一条更宽的道路上朝一个方向行驶,而不是模拟双向行驶的交通

好的,所以在任何人回答您关于代码的问题之前,您需要解决几个设计问题

(1) 您想显示什么?你想要一条更宽的黄路吗?或者你想要漂亮的道路,像“交通2车道”模型那样,两边都有线条

(2) 您是否希望车辆实际使用两条车道,并包括诸如变道和超车等行为,如“交通两条车道”模型

而且。。。“交通2车道”模型已经包含了绘制更宽道路所需的所有逻辑和代码,这将解决您最初发布的两个相关问题之一。即使您只想要肥黄色的道路,而不是有线条的漂亮道路,也可以使用相同的逻辑,只需删除绘制线条的部分即可

这回答了你的第一个问题:

我想。。。增加每个道路栅格的宽度

但是。。。事实上,你在评论和原始帖子的标题中提出了一个更难的问题:

我想将道路网格扩展为双向道路网格

我不确定你的原意翻译成英语后是否保留了下来

对我来说,“双向道路”是指一条有两条车道的道路,在同一条道路上,车辆双向行驶。一些汽车将向北行驶,一些汽车将向南行驶

这比模型库中的“交通网格”问题要复杂得多,在“交通网格”问题中,每条道路只有一条车道宽,但也是“单向”


最后,我看到您没有赞扬Uri Wilensky,也没有提到模型库中的模型,而模型库是您发布的大多数代码的来源。对你的大学老师来说,很明显,你从别人的作品中复制了大量的代码——你应该表扬那个人,并引用代码的来源。将两个模型中的逻辑合并到一个更复杂的模型中,并使其发挥作用,这仍然是你大学期末项目的主要工作。

在堆栈溢出问题上,你必须提出一个问题