Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 将未指定数量的列表插入列表[Netlogo]_List_Netlogo - Fatal编程技术网

List 将未指定数量的列表插入列表[Netlogo]

List 将未指定数量的列表插入列表[Netlogo],list,netlogo,List,Netlogo,一般问题:我有一个报告器,它是一个品种所有变量的列表。这个列表中的每个勾号都会发生变化,我想要的是创建一个列表,为每个勾号存储这个品种拥有的变量列表 具体地说:我记录了海龟品种(这里是蚂蚁)的“年龄”。我通过以下途径将它们报告到“蚁巢年龄”列表中 to-report nest_age_dist let nest-ages-list [nest-age] of ants report (list [nest-age] of ants) end 如果我给这位记者打电话,我会在每一个滴答

一般问题:我有一个报告器,它是一个品种所有变量的列表。这个列表中的每个勾号都会发生变化,我想要的是创建一个列表,为每个勾号存储这个品种拥有的变量列表

具体地说:我记录了海龟品种(这里是蚂蚁)的“年龄”。我通过以下途径将它们报告到“蚁巢年龄”列表中

to-report nest_age_dist

  let nest-ages-list [nest-age] of ants
  report (list [nest-age] of ants)

end
如果我给这位记者打电话,我会在每一个滴答声(数字代表年龄)中得到如下信息:

这很好,但希望每个列表中都有一个勾号添加到包含它们的列表中。比如我想要

[[1 1 1 1 2 2 2 3 3 3 ][2 2 2 2 3 3 3 4 4 4][3 3 3 3 4 4 4 5 5 5]]
在哪里

[[tick 1 nest_age_dist ] [tick 2 nest_age_dist ] [tick 3 nest_age_dist ] [tick n nest_age_dist]] 
我希望这是清楚的

看起来解决这个问题的方法应该很简单,但我不知道怎么做,而且我还没有找到解决stackoverflow的方法。NetLogo中的列表是不变的,这一事实让我感到震惊

作为补充说明,我必须这样做,因为当我使用BehaviorSpace时,我不能使用nest_age_dist reporter,因为当每个勾号都报告大列表时,创建的.csv太大,无法在我尝试过的任何文本编辑器(TextWrangler、Texteditor、Excel)中打开。一旦我有了我的列表(考虑到这个问题已得到解决),我只想报告列表中最后100个列表(巢龄列表)。我知道我可以多次运行较小的模拟,但如果我不能在一夜之间完成整个该死的事情,那又有什么意义呢


希望我的问题和提问动机都清楚。提前谢谢

如果您只想在say
biglist
中保留最近的100个nest age dist列表,您可以使用

let biglist ifelse-value (length biglist >= 100) [lput nest-age-dist but-first biglist] [lput next-age-dist biglist]
接下来,卢克C的回答也起到了作用,它看起来像:

globals [all_nest_age_list last_10]
turtles-own [age]

to setup
  ca
  crt 5 [
    set age random 6
  ]
  set all_nest_age_list []
  set last_10 []
  reset-ticks
end

to go

  repeat 150 [
    ask turtles [
      set age age + 1
    ]
    set last_10 ifelse-value (length last_10 >= 10) 
       [lput sort [age] of turtles but-first last_10] 
       [lput sort [age] of turtles last_10]
    set all_nest_age_list lput ( sort [age] of turtles ) all_nest_age_list
  ]

  let x 10   ;; however far back you want  
  let last_x_list sublist all_nest_age_list (length all_nest_age_list - x)  (length all_nest_age_list)  
  print last_x_list
  print last_10

end

我只保留了最近的10个,而不是100个。

如果您想在say
biglist
中只保留最近的100个巢龄距离列表,您可以使用

let biglist ifelse-value (length biglist >= 100) [lput nest-age-dist but-first biglist] [lput next-age-dist biglist]
接下来,卢克C的回答也起到了作用,它看起来像:

globals [all_nest_age_list last_10]
turtles-own [age]

to setup
  ca
  crt 5 [
    set age random 6
  ]
  set all_nest_age_list []
  set last_10 []
  reset-ticks
end

to go

  repeat 150 [
    ask turtles [
      set age age + 1
    ]
    set last_10 ifelse-value (length last_10 >= 10) 
       [lput sort [age] of turtles but-first last_10] 
       [lput sort [age] of turtles last_10]
    set all_nest_age_list lput ( sort [age] of turtles ) all_nest_age_list
  ]

  let x 10   ;; however far back you want  
  let last_x_list sublist all_nest_age_list (length all_nest_age_list - x)  (length all_nest_age_list)  
  print last_x_list
  print last_10

end

我只保留了最近的10个,而不是100个。

对你上次的回答,你可以使用
子列表。比如:

globals [ 
  all_nest_age_list
  last_x_list
]

turtles-own [
  age
]

to setup
  ca
  crt 5 [
    set age random 6
  ]
  set all_nest_age_list []

end

to go

  repeat 10 [
    ask turtles [
      set age age + 1
    ]
    set all_nest_age_list lput ( sort [age] of turtles ) all_nest_age_list
  ]

  let x 3   ;; however far back you want  
  set last_x_list sublist all_nest_age_list (length all_nest_age_list - x)  (length all_nest_age_list)  
  print last_x_list

end

对于您在Hajz的最后一个答案,您可以使用
子列表
。比如:

globals [ 
  all_nest_age_list
  last_x_list
]

turtles-own [
  age
]

to setup
  ca
  crt 5 [
    set age random 6
  ]
  set all_nest_age_list []

end

to go

  repeat 10 [
    ask turtles [
      set age age + 1
    ]
    set all_nest_age_list lput ( sort [age] of turtles ) all_nest_age_list
  ]

  let x 3   ;; however far back you want  
  set last_x_list sublist all_nest_age_list (length all_nest_age_list - x)  (length all_nest_age_list)  
  print last_x_list

end

我无法让那段代码正常工作,但我在某种程度上解决了部分问题。下面,我将描述一下我现在正在努力解决的问题,因为您的回答似乎试图达到目的,但我在实施过程中遇到了困难。谢谢你的帮助!我无法让那段代码正常工作,但我在某种程度上解决了部分问题。下面,我将描述一下我现在正在努力解决的问题,因为您的回答似乎试图达到目的,但我在实施过程中遇到了困难。谢谢你的帮助!