NetLogo仿真中的车道合并

NetLogo仿真中的车道合并,netlogo,Netlogo,我想写一个NetLogo程序来合并汽车车道。车辆分布在4条车道上,间距为3.5米(每片车道为1米)。每条车道的中心坐标位于ycor值-3.75、-7.25、-10.75和-14.25 车辆具有随机的xcor值,其中ycor值位于一条车道的中心,并向右行驶。我希望交通合并,以便车辆朝地图中心行驶(distancexy 0您写道: if ycor = -10.75 [ rt 45 fd speed ;;;fd 5.1 ifelse ycor = -14.25 [ lt

我想写一个NetLogo程序来合并汽车车道。车辆分布在4条车道上,间距为3.5米(每片车道为1米)。每条车道的中心坐标位于
ycor
值-3.75、-7.25、-10.75和-14.25

车辆具有随机的
xcor
值,其中
ycor
值位于一条车道的中心,并向右行驶。我希望交通合并,以便车辆朝地图中心行驶(
distancexy 0您写道:

if ycor = -10.75
[
  rt 45
  fd speed 
  ;;;fd 5.1
  ifelse ycor = -14.25
  [
    lt 45
    fd speed 
  ]
  [
    fd speed 
  ]
]
如果我遗漏了一些无关紧要的事情,那就是:

if ycor = -10.75
[
  ...
  ifelse ycor = -14.25
  [
    ...
ifelse
位于
if
内部,因此它仅在ycor为-10.75时运行。但是
ycor
怎么能等于-10.75和-14.25呢?它不能,所以第二个条件永远不会触发

也许您想要的结构是:

ifelse ycor = -10.75
[
  ...
]
[
  ifelse ycor = -14.25
  [
    ...
这就是你如何表达“如果ycor为-10.75,就这样做;如果ycor为-14.25,就这样做。”

你写道:

if ycor = -10.75
[
  rt 45
  fd speed 
  ;;;fd 5.1
  ifelse ycor = -14.25
  [
    lt 45
    fd speed 
  ]
  [
    fd speed 
  ]
]
如果我遗漏了一些无关紧要的事情,那就是:

if ycor = -10.75
[
  ...
  ifelse ycor = -14.25
  [
    ...
ifelse
位于
if
内部,因此它仅在ycor为-10.75时运行。但是
ycor
怎么能等于-10.75和-14.25呢?它不能,所以第二个条件永远不会触发

也许您想要的结构是:

ifelse ycor = -10.75
[
  ...
]
[
  ifelse ycor = -14.25
  [
    ...

这就是你表达“如果ycor是-10.75,那么就这样做;但是如果ycor是-14.25,那么就这样做”.

我认为你的问题是ycor永远不会精确等于-14.25,除非它从-14.25开始。这是因为汽车向前移动,并且只在移动后检查它的位置,所以它可能移动到-14.5或-14.0或其他非-14.25的值。在这种情况下,你希望它在靠近-14.25车道时左转。试试看他这样说:

ifelse ycor = -14.25
[ fd speed ]
[ if heading = 90 [ rt 45 ]
  fd speed
  if ycor <= -12.5
  [ set heading
    set ycor -14.25
  ]
]
ifelse ycor=-14.25
[fd速度]
[如果航向=90[rt 45]
fd速度

如果ycor我认为你的问题是,ycor永远不会精确等于-14.25,除非它从-14.25开始。这是因为汽车向前移动,并且只在移动后检查它的位置,所以它可能移动到-14.5或-14.0,或者其他一些不是-14.25的值。在这种情况下,你希望它在靠近-14.25车道时左转。试试som就像这样:

ifelse ycor = -14.25
[ fd speed ]
[ if heading = 90 [ rt 45 ]
  fd speed
  if ycor <= -12.5
  [ set heading
    set ycor -14.25
  ]
]
ifelse ycor=-14.25
[fd速度]
[如果航向=90[rt 45]
fd速度


如果ycor嘿,为什么投反对票?这是一个非常好的问题。这有点难理解,但海报不是以英语为母语的。谢谢你的图片,它更容易理解。我试图调整它,但仍然失败。嘿,为什么投反对票?这是一个非常好的问题。这有点难理解,但海报是不是以英语为母语的人。谢谢你的图片,它更容易理解。我试图调整它,但仍然失败。对于OP来说,这可能有点太多了,但是有一个扩展可以帮助你避免这些多嵌套的ifelse语句。关于使用它的说明在这里()和下载在这里()我试过了,但没能。对于在4个不同坐标下行驶的车辆。只有坐标ycor=-14.25处的车辆是直行的。坐标ycor=-14.25处的其他车辆将在一个拐角45处行驶。便宜的车辆仍然直行。如何让车辆在到达坐标ycor 1=-14.25处的1个拐角45处右转将左转,然后继续行驶45度角。我喜欢贴在上面的新图片。为什么我的答案对你没有帮助?我想我已经回答了你的问题。如果你认为我没有回答,你需要解释它对你没有帮助。我们无法为你编写代码。“我试过了,但无法”-不能什么?你尝试了什么?向我们展示你的新代码。我成功了,但仍然有故障的车辆。当汽车右转45度时,它一直在行驶,汽车不必左转。这可能对OP来说有点太多,但有一个扩展可以帮助你避免这些多嵌套的ifelse语句。关于usin的说明在这里下载()并在这里下载()我试过了,但没能。对于在4个不同坐标下行驶的车辆。只有坐标ycor=-14.25处的车辆是直行的。坐标ycor=-14.25处的其他车辆将在一个拐角45处行驶。便宜的车辆仍然直行。如何让车辆在到达坐标ycor 1=-14.25处的1个拐角45处右转将左转,然后继续行驶45度角。我喜欢贴在上面的新图片。为什么我的答案对你没有帮助?我想我已经回答了你的问题。如果你认为我没有回答,你需要解释它对你没有帮助。我们无法为你编写代码。“我试过了,但无法”-不能什么?你尝试了什么?给我们看看你的新代码。我已经按你的方式做了,但仍然有故障的车辆。当汽车右转45度时,然后它一直运行,汽车不必左转。这似乎是一个很好的猜测问题可能是什么。你也可以尝试添加
打印ycor
到你的代码中,以便你可以准确地看到w乌龟的
ycor
是什么-这应该可以帮助你理解为什么你想要触发的条件没有触发。我被编程为遵循正确的车道。我这样更改了代码,它移动到了右车道。但是看起来状态车辆跳转到坐标ycor=-14.25始终不是车辆到位置ycor=-14.25lse ycor=-14.25[fd速度][rt 45 fd速度,如果航向=135[fd速度设置航向90设置ycor-14.25]]这似乎是一个很好的问题猜测。你也可以尝试将
print ycor
添加到你的代码中,这样你就可以准确地看到海龟的
ycor
是什么-这应该可以帮助你理解为什么你想要触发的条件没有触发。我被编程为遵循正确的车道。我这样更改了我的代码它移动到了右车道,但看起来状态车辆跳到坐标ycor=-14.25,而不是位置ycor=-14.25=