将列表中的数据链接到海龟NetLogo

时间:2015-01-08 20:46:13

标签: excel netlogo

我有一个问题。我最近开始使用NetLogo,我必须完成使用NetLogo进行学习的作业,但是我遇到了问题。 我想使用模型中的Excel文件中的数据。数据集包含两行数字,每行代表一个不同的变量,例如a和b,我想为每个乌龟分配一组这两个变量,这样每个乌龟都有一个变量a和b的值。但是我不知道该怎么做。 通过将数据集转换为txt文件,我成功地将数据集加载到模型中。 .txt文件中的行由选项卡分隔。 这是我用于在模型中加载数据集的代码:

 globals [ turtle-data ]
 turtles-own [ awareness income housingtype adopt ]
 to setup
  clear-all
  reset-ticks
  create-turtles 11557
  ask turtles [
   set color white
  ]
  ask turtles [
   setxy random-xcor random-ycor
  ]
 load-turtle-data
 assign-turtle-data
end
to load-turtle-data
  ifelse ( file-exists? "input-data.txt" ) [
    set turtle-data []
    file-open "input-data.txt"
    while [ not file-at-end? ][
       set turtle-data sentence turtle-data (list (list file-read file-read))
    ]
   user-message "File loading complete!"
   file-close
   ]
   [
      user-message "There is no input-data.txt file in current directory!" 
   ]
end
to assign-turtle-data
  assign-income  
  assign-housingtype
end
to assign-income
  foreach turtle-data [
  ask turtles [ set income item 0 ? ]
  ;link to turtle-data
 ]
end
to assign-housingtype
  foreach turtle-data [
  ask turtles [ set housingtype item 2 ? ]
  ;link to turtle-data
 ]
end

如何将数据集中的值链接到乌龟的正确变量?我的问题的替代解决方案也是受欢迎的。

1 个答案:

答案 0 :(得分:3)

找出数据导入部分的好工作。我实际上一直在做一个扩展来做到这一点,但看起来你甚至不需要它!现在,针对您的问题:

不是创建一堆海龟(我假设每个数据行有一个),我会在迭代数据时逐个创建海龟:

to setup-turtles
  foreach turtle-data [
    crt 1 [
      set income item 0 ?
      set housingtype item 1 ?
    ]
  ]
end

这简化了将数据分配给各个海龟的问题,而无需处理索引或who数字(其他解决方案需要)。它还使得如果添加或删除数据,海龟的数量将自动调整。