NetLogo代码报错‘command expected’,请求排查schooling过程代码问题
问题分析与修复
你的代码里有几处语法和原语使用错误,导致了"command expected"报错:
distancemyself是非法原语:NetLogo中计算距离的正确写法是distance myself(中间必须加空格),所以min-one-of那行要改成:set nearestNeighbour min-one-of schoolmates [distance myself]averageHeading拼写错误:NetLogo的平均朝向原语是average-heading(用连字符,不是驼峰命名),而且你对subtract-headings的用法完全错误。这个原语只接受两个参数:目标朝向和当前海龟的朝向,返回需要右转的角度,用来让海龟转向目标方向。rt语句参数混乱:你写的rt subtract-headings averageHeading schoolmates heading subtract-headings里,不仅拼写错误,还塞了多余的参数,NetLogo无法识别这种格式,自然会报错。正确的转向代码应该是:rt subtract-headings (average-heading schoolmates) heading
修复后的完整代码:
to schooling set schoolmates other turtles in-radius 5 if any? schoolmates [ set nearestNeighbour min-one-of schoolmates [distance myself] ifelse distance nearestNeighbour < 1 [ face nearestNeighbour right 180 ] [ rt subtract-headings (average-heading schoolmates) heading ] ] end
内容的提问来源于stack exchange,提问作者msh schoonmaak
相关产品推荐
相关产品推荐

