维持两种状态的海龟netlogo

时间:2014-08-26 11:19:37

标签: netlogo

我正在做一个小型大学项目。其中我必须维持2种状态的海龟。 1.分散 2.探索 分散:  在分散时,当开始时所有的海龟(20只龟)都在0,0时它们应该相互分散。每只乌龟周围都有2个补丁,其他乌龟不应该在那个半径范围内。所有的海龟都应该走远,直到它们都达到这个半径。然后将调用其他行为,即探索。

探索:  在探索中,他们必须探索世界并避免不同类型的障碍。当两只乌龟在上述半径上彼此接近时,则状态应改变为分散。

我有避免障碍,移动速度以及分散和探索下的所有其他个人行为的程序。但我不知道如何在一次模拟中加入所有这些。

2 个答案:

答案 0 :(得分:2)

目前尚不清楚您是否真的需要维持龟状态,因为在任何情况下您都必须反复检查其他龟。但既然你说你想要那个,你就可以使用turtles-own。例如:

turtles-own [state]

to setup
  ca
  crt 20
end

to go
  ask turtles [set-state]
  ask turtles [move]
end

to set-state ;;turtle proc
  ifelse (any? other turtles in-radius 2) [
    set state "disperse"
  ] [
    set state "explore"
  ]
end

to move ;;turtle proc
  if (not member? state ["disperse" "explore"]) [
    error "unknown state"
  ]
  if (state = "disperse") [
    disperse
  ]
  if (state = "explore") [
    explore
  ]
end


to disperse ;;turtle proc
  move-to one-of patch-set [neighbors] of neighbors
end

to explore
  move-to one-of neighbors
end

答案 1 :(得分:1)

您可能想看看Moore machine和Automata,NetLogo可以很好地应对这些问题。 Moore机器可以看作是一组相互交互的5个元素,在这个特定的例子中,开始状态(S0将是Dispersing。在NetLogo中,您可以使用接收字符串的单词run。您必须通过检查乌龟的实际状态来创建一个返回字符串(例如"explore")的过程。

几个月前我做了类似的事情。我们试图用基于摩尔机器的北极熊和海豹(或狼和羊)做一个猎人 - 猎物模型。

你当然可以使用@Alan的例子,我只是略过了,我相信它很好。

以下是基于摩尔机器的my example。它是西班牙语,但想法是一样的。