我有一个问题。我最近开始使用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
如何将数据集中的值链接到乌龟的正确变量?我的问题的替代解决方案也是受欢迎的。
答案 0 :(得分:3)
找出数据导入部分的好工作。我实际上一直在做一个扩展来做到这一点,但看起来你甚至不需要它!现在,针对您的问题:
不是创建一堆海龟(我假设每个数据行有一个),我会在迭代数据时逐个创建海龟:
to setup-turtles
foreach turtle-data [
crt 1 [
set income item 0 ?
set housingtype item 1 ?
]
]
end
这简化了将数据分配给各个海龟的问题,而无需处理索引或who
数字(其他解决方案需要)。它还使得如果添加或删除数据,海龟的数量将自动调整。