Netlogo 编写一个驾驶模拟,我想同时使用三个命令,使汽车在三个补丁的道路上保持单一的文件

Netlogo 编写一个驾驶模拟,我想同时使用三个命令,使汽车在三个补丁的道路上保持单一的文件,netlogo,Netlogo,这是指汽车不能从前面或前面左右通过。如何使用所有命令,如何链接它们 to place-cars-level0 ;creating basic real life driver ;make a random placement of cars ask n-of (num-of-cars-level0 / 3) patches with [meaning = "road-up"] [ if not any? c

这是指汽车不能从前面或前面左右通过。如何使用所有命令,如何链接它们

  to place-cars-level0                                    ;creating basic real life driver

 ;make a random placement of cars
  ask n-of (num-of-cars-level0 / 3) patches with [meaning = "road-up"] [
    if not any? cars-on patch pxcor (pycor + 1) and not any? cars-here and not any? cars-on patch pxcor (pycor - 1) and not any? patches with [meaning = "crossing"] in-radius 2 [
  sprout-cars 1 [
    set size 3
    set will-turn? "maybe"
    set will-stop? "maybe"
    set shape "car top"
    set politeness basic-politeness + random (101 - basic-politeness)
    if random 100 > basic-politeness [set politeness random 21]
    set heading 0
    let s random 10
    if s < 7 [set maxSpeed speed-limit - 15 + random 16]
    if s = 7 [set maxSpeed speed-limit - 20 + random 6]
    if s > 7 [set maxSpeed speed-limit + random 16]
    set speed maxSpeed - random 20
  ]
]
]    ; set the number of cars for the level, size, politness,speed

 ask n-of (num-of-cars-level0 / 3) patches with [meaning = "road-down" and count turtles-on neighbors = 0] [
if not any? cars-on patch pxcor (pycor + 1) and not any? cars-here and not any? cars-on patch pxcor (pycor - 1) and not any? patches with [meaning = "crossing"] in-radius 2 [
  sprout-cars 1 [
    set size 3
    set shape "car top"
    set politeness basic-politeness + random (101 - basic-politeness)
    if random 100 > basic-politeness [set politeness random 21]
    set heading 180
    set will-turn? "maybe"
    set will-stop? "maybe"
    let s random 10
    if s < 7 [set maxSpeed speed-limit - 15 + random 16]
    if s = 7 [set maxSpeed speed-limit - 20 + random 6]
    if s > 7 [set maxSpeed speed-limit + random 16]
    set speed maxSpeed - random 20
  ]
  ]
  ]

   ask n-of (num-of-cars-level0 / 3) patches with [meaning = "road-left" and 
 count turtles-on neighbors = 0] [
  if not any? cars-on patch (pxcor + 1) pycor and not any? cars-here and not 
any? cars-on patch (pxcor - 1) pycor and not any? patches with [meaning = 
"crossing"] in-radius 2 [
  sprout-cars 1 [
    set will-turn? "maybe"
    set will-stop? "maybe"
    set size 3
    set shape "car top"
    set politeness basic-politeness + random (101 - basic-politeness)
    if random 100 > basic-politeness [set politeness random 21]
    set heading 270
    let s random 10
    if s < 7 [set maxSpeed speed-limit - 15 + random 16]
    if s = 7 [set maxSpeed speed-limit - 20 + random 6]
    if s > 7 [set maxSpeed speed-limit + random 16]
    set speed maxSpeed - random 20
  ]
   ]
  ]

  while [count cars < num-of-cars-level0] [
  ask one-of patches with [meaning = "road-right"] [
  if not any? cars-on patch (pxcor + 1) pycor and not any? cars-here and not 
any? cars-on patch (pxcor - 1) pycor and not any? patches with [meaning = 
"crossing"] in-radius 2 [
    sprout-cars 1 [
      set will-turn? "maybe"
      set will-stop? "maybe"
      set size 3
      set shape "car top"
      set politeness basic-politeness + random (101 - basic-politeness)
      if random 100 > basic-politeness [set politeness random 21]
      set heading 90
      let s random 10
      if s < 7 [set maxSpeed speed-limit - 15 + random 16]
      if s = 7 [set maxSpeed speed-limit - 20 + random 6]
      if s > 7 [set maxSpeed speed-limit + random 16]
      set speed maxSpeed - random 20
    ]
        ]
    ]
  ]

  end
在上面一节中,是编写汽车放置的代码,下面是速度和控制

to control-speed
let car-ahead one-of cars-on patch-ahead 4
ifelse car-ahead = nobody  [
  ifelse speed < maxSpeed [set speed speed + acceleration] [set speed speed 
- deceleration]
]
[
ifelse [speed] of car-ahead = 0 [set speed 0] [
  ifelse [speed] of car-ahead >= maxSpeed [
    set speed maxSpeed
    set speed speed - deceleration
  ] [
  ;try to overtake
  ;ifelse [meaning] of patch-left-and-ahead 90 1 = meaning and not any? turtles-on patch-left-and-ahead 90 1 and [meaning] of patch-left-and-ahead 90 1 != "crossroad"
  ;and meaning != "crossing" and [meaning] of patch-left-and-ahead 180 1.3 != "crossing" and not any? turtles-on patch-left-and-ahead 169 3
  ;and not any? turtles-on patch-left-and-ahead 45 1 and not any? turtles-on patch-left-and-ahead 135 1 and not any? turtles-on patch-left-and-ahead 23 2
 ; and not any? turtles-on patch-left-and-ahead 157 2 and not any? turtles-on patch-left-and-ahead 12 3 and [meaning] of patch-ahead 1 != "crossing" [move-to patch-left-and-ahead 90 1] [


   ; ifelse [meaning] of patch-right-and-ahead 90 1 = meaning and not any? turtles-on patch-right-and-ahead 90 14 and [meaning] of patch-right-and-ahead 90 1 != "crossroad"
    ;and meaning != "crossing" and [meaning] of patch-right-and-ahead 180 1.3 != "crossing" and not any? turtles-on patch-right-and-ahead 12 3
    ;and not any? turtles-on patch-right-and-ahead 45 1 and not any? turtles-on patch-right-and-ahead 135 1 and not any? turtles-on patch-right-and-ahead 23 2
    ;and not any? turtles-on patch-right-and-ahead 157 2 and not any? turtles-on patch-right-and-ahead 169 3 and [meaning] of patch-ahead 1 != "crossing"[move-to patch-right-and-ahead 90 1] [
      ;set speed [speed] of car-ahead
      ;set speed speed - deceleration]
  ]



  ]
]
我希望这更有用

如果你能看到图片,我的目标是在每条车道上保留一辆车,而不是在每条车道上并排放置三辆车,这是为了模拟半自动车道居中,而不是这样做

let car-ahead one-of cars-on patch-ahead 4
您可能想做的是创建一个补丁集,其中包含潜在汽车可能占用的所有三个补丁。在不知道如何创建车道的情况下,这有点困难,你需要小心,因为执行请求的车辆可能也处于三个补丁中的任何一个。在创建补丁集之后,您可以简单地执行之前所做的操作,但要使用补丁集

let in-lane (patch-set patch-ahead 4 <other patches you need go here>)
let car-ahead one-of cars-on in-lane

不幸的是,这一点非常不清楚。如果您试图确保一辆车不能超过其他车辆,那么我们需要查看您用于移动车辆的代码。毕竟,你需要的逻辑是“向前走,除非有一辆车你不能通过”JenB我已经添加了更多的细节,我希望你能帮助我好的,所以超车不是我认为的问题。请确认您的道路车道有3个补丁宽,并且您当前正在让车辆“共享车道”,也就是说,如果直接在后面,它们不会相互碰撞,但最终会彼此相邻。如果这是真的,请只显示阻止他们直接从后面撞车的代码部分,因为你想要的是让前面的车被视为占据了所有三个补丁,而不是仅仅占据了它所在的那一个。如果我能让前面的车说它占据了所有三个补丁,是的,每条车道由三个补丁组成。@JenB阻止它们撞到前面的那条车道的那条线是编码的第二部分,从~~~~~~~~让前面的一辆车在前面的补丁上4 ifelse car ahead=nobody[ifelse speed=maxSpeed[设定速度maxSpeed设定速度-减速]~~~~~~~~对不起,我没有评论我的想法,这是第二部分的第二行~~~让车在前面,一辆车在前面补好4~~~谢谢你帮我解决了这个问题,不过我还有一些问题