【问题标题】:Maintaining two states of turtles netlogo维持海龟的两种状态 netlogo
【发布时间】:2014-08-26 11:19:36
【问题描述】:

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

探索: 在探索中,他们必须探索世界并避开不同类型的障碍。当两只海龟在上述半径范围内相互靠近时,应将状态更改为分散。

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

【问题讨论】:

  • 试试看,向我们展示你的尝试?然后我们可以给你一些建议。由于您的问题中没有任何实际代码,因此尚不清楚任何人都可以为您提供什么样的帮助。
  • 我的代码还有一些问题。我应该在这里上传模型还是只是在这里粘贴代码部分...???

标签: netlogo


【解决方案1】:

目前还不清楚您是否真的需要保持海龟状态,因为无论如何您都必须反复检查其他海龟。但是既然你说你想要那个,你可以使用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

【讨论】:

  • 它的工作。我已将此场景嵌入到我的模型中。谢谢先生
【解决方案2】:

您可能想看看 Moore machine 和 Automata,NetLogo 与它们配合得很好。 摩尔机器可以看作是一组 5 个相互交互的元素,在这个特定的示例中,开始状态(S0) 将是分散的。在 NetLogo 中,您可以使用接收字符串的单词run。您必须通过检查海龟的实际状态来创建一个返回字符串(比如"explore")的过程。

几个月前我做了类似的东西。我们试图基于摩尔机器为北极熊和海豹(或狼和羊)制作猎物模型。

你当然可以使用@Alan 的例子,我只是浏览了一下,我相信它很好。

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

【讨论】:

    猜你喜欢
    • 2014-04-19
    • 2017-08-27
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多