netlogo中两组海龟的不同组合
我正在努力在netlogo中制作程序,该程序将海龟的不同组合制作成两组。 例如;在一个系统中总共有10只海龟[01123456789],我想把这些海龟分成两组。{[0 6 7 8] [1 2 3 4 5 9]}, {[2 3 6 8 9] [0 1 4 5 7]}....... 等等netlogo中两组海龟的不同组合,netlogo,Netlogo,我正在努力在netlogo中制作程序,该程序将海龟的不同组合制作成两组。 例如;在一个系统中总共有10只海龟[01123456789],我想把这些海龟分成两组。{[0 6 7 8] [1 2 3 4 5 9]}, {[2 3 6 8 9] [0 1 4 5 7]}....... 等等 任何帮助都将不胜感激 这可能就是你想要的。下面的代码通过对列表进行排序并删除重复项来删除重复项(即它将删除[[1 2][3]]和[[2 1][3]],因为它将对第一个列表进行排序,该列表将是[1 2],这将导致匹
任何帮助都将不胜感激 这可能就是你想要的。下面的代码通过对列表进行排序并删除重复项来删除重复项(即它将删除[[1 2][3]]和[[2 1][3]],因为它将对第一个列表进行排序,该列表将是[1 2],这将导致匹配)。切掉一个元素并将其插入左子列表并递归 你可以想象列表中的每个数字都对应一个who。所以你可以
let alist [who] of turtles
如果你有任何问题,请告诉我
to-report permutate-sublist [added-whos remaining-whos]
ifelse length remaining-whos = 1
[
report (list (list (sort added-whos) (sort remaining-whos)))
]
[
let result (list)
foreach (sort remaining-whos)
[
let x ?
let new-whos (sentence added-whos x)
let new-remaining-whos (remove x remaining-whos)
set result (sentence (list (list (sort new-whos) (sort new-remaining-whos))) result)
set result (remove-duplicates (sentence (permutate-sublist new-whos new-remaining-whos) result))
]
report result
]
end
这就是当您打印结果时发生的情况
let alist (list 1 2 3 )
show permutate-sublist (list) alist
[[[2 3] [1]]
[[1 3] [2]]
[[3] [1 2]]
[[1 2] [3]]
[[2] [1 3]]
[[1] [2 3]]]
@amaretto i一直在尝试修改现有netlogo代码的代码,以便进行组合和排列。但是运气不好,这还不清楚。如果只有3个海龟,是否希望所有可能的组合:{[01][2]}和{[02][1]}和{[0][12]}?这将是一个奇怪的事情要NetLogo做。或者您只是想让它随机生成其中一个集合?以下是其他语言的一些实现:Netlogo可能很难实现这一点。你用这个干什么?如果将其用作模拟的输入,则可以使用现有代码以另一种语言将解决方案写入文件,并在模拟中读取。否则,只需为三只海龟编写一个netlogo改编,它在子集中可能是一个或两个。正如你上面提到的那样,塔克斯。如果我有任何与之相关的问题,我会告诉你。当系统中有15只或超过15只海龟时,上述方法看起来很好。程序停止或计算不易处理。正确。你不能用15只或更多的海龟来解决你的问题,因为你要解决的问题需要一个组合答案。如果您约束您的问题,您可能能够创建一个计算更友好的解决方案。请注意存储所有分区所需的内存量。。。如果它使用大量内存,您的程序将运行缓慢。此限制是因为netlogo架构/内部工作,还是其他语言也适用?这是一个计算限制。它适用于当前的计算机。