首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为领导者NetLogo设定目标

为领导者NetLogo设定目标
EN

Stack Overflow用户
提问于 2014-10-23 11:58:04
回答 3查看 267关注 0票数 0

我在这方面出了点差错。我需要要求领导们朝着一个目标前进。但犯了错误

面对预期的输入是一个代理,但得到了清单5.2代替。程序负责人调用乌龟63跑面时出错--程序调用目标被按钮调用

这是一段代码

代码语言:javascript
复制
patches-own [ is-visited? ]
turtles-own [ is-leader? goals ]
;globals [ number  ]
to setup
  let number 70
  ca
  ask patches [set is-visited? false ]
  ask n-of number patches  [sprout 1 [set size 1 set is-leader? false ]]
  choose-leader
  ask turtles [ set goals [ [15 10] [5 2] [0 0] ] ]
  ;tick
end

to go
; ask turtles with [  is-leader? ] [
 fd 1
 ;let target one-of goals

;lt random 20
;rt random 10
;set is-leader? false]
follow-leader
visited-patch
ask turtles with [ is-leader? ] [ leader-toward-goal]
;ask turtles  [ tick ]
end

to visited-patch
  if any? turtles-here [ set is-visited? true ]
end

to choose-leader
  ask max-n-of 7 turtles [ count turtles in-radius 6 ] [set is-leader? true set color red set size 0.7 ]

end

to follow-leader
  let nearby-leaders turtles with [is-leader? and distance myself < 30] ;; find nearby leaders
  if any? nearby-leaders [ ;; to avoid 'nobody'-error, check if there are any first
    face min-one-of nearby-leaders [ distance myself ] 
     ]
;  fd 1
end
to leader-toward-goal
  let target one-of goals
  face target
  if patch-ahead 1 = target [ print "target achived" ]
end

在程序上需要帮助

带头人目标

EN

回答 3

Stack Overflow用户

发布于 2014-10-23 12:57:08

听NetLogo的话。面对一个清单是没有意义的。只需将leader-toward-goal的第一行更改为

代码语言:javascript
复制
let xy one-of goals let x item 0 xy let y item 1 xy let target patch x y

或者更好的是,存储补丁而不是它们的坐标。

票数 1
EN

Stack Overflow用户

发布于 2014-10-23 12:59:20

您正在尝试使用列表作为输入来执行原语face。我猜goal是一个补丁列表,尝试实例化它如下:

代码语言:javascript
复制
ask turtles [set goals (list patch 0 0 patch 15 10 patch 5 2)]

而不是

代码语言:javascript
复制
ask turtles [set goals [ [15 10] [5 2] [0 0] ] ]

所以你可以说

代码语言:javascript
复制
face one-of goals

获取修补程序而不是列表作为输入

票数 1
EN

Stack Overflow用户

发布于 2014-10-23 14:28:27

其他人建议把目标变成一个补丁,而不是坐标对。这可能是个好建议。但假设你决定坚持坐标。在这种情况下,您将需要facexy而不是face,如下所示:

代码语言:javascript
复制
let target one-of goals
facexy (item 0 target) (item 1 target)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26527524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档