在设置时创建一次海龟,而不是在每个刻度中
Create turtles ONCE at setup and not in every tick
在我的程序中,海龟品种 CO2s 的初始浓度为 10,而海龟品种葡萄糖将从 10 开始,每次滴答增加 10(如设置-饲料程序中所述)。待办程序包括海龟繁殖的细菌,它每次滴答都会吃掉二氧化碳和葡萄糖。问题是,根据我当前的代码,海龟、二氧化碳和葡萄糖的品种都会增加每个滴答声。我当前的输出 Excel 如下所示:
我希望我的输出 Excel 可以是这样的:
对这个问题有什么意见或建议吗?
Breed [glucose a-glucose];; Glucose
Breed [CO2s CO2]
Breed [bacteria bacterium]
glucose-own [glucose_mass]
bacteria-own [bacteria_mass]
CO2s-own [CO2s_mass]
Globals
[
time
Initial_concentration_glucose
Initial_concentration_CO2s
total_glucose
total_CO2s
]
to setup
clear-all
set time 0
set Initial_concentration_glucose 0
set Initial_concentration_CO2s 0
set total_glucose 0
set total_CO2s 0
;;; BACTERIA;;;
set-default-shape bacteria "default"
create-bacteria (20)
[ set color cyan
set bacteria_mass 20 / 20
]
;;; CO2s;;;
set-default-shape CO2s "circle"
create-CO2s (10)
[set color orange
set CO2s_mass (10 / 10)
setxy random-xcor random-ycor
]
setup-feed
output-1
reset-ticks
end
to setup-feed
set-default-shape glucose "circle";; Glucose shape
Create-glucose (10)
[
set glucose_mass 10 / 10
setxy random-xcor random-ycor
]
end
to output-1
if (file-exists? "TestINOUT-AD.csv") [carefully [file-delete "TestINOUT-AD.csv"] [print error-message]]
file-open "TestINOUT-AD.csv"
file-type "tick,"
file-type "Initial_concentration_glucose,"
file-type "Initial_concentration_CO2s,"
file-type "Bacteria,"
file-type "CO2s,"
file-print "glucose,"
file-close
end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;
to go
if not any? turtles [stop]
Calculate_concentrations
ask bacteria
[ eat
]
set time time + 1
count_glucose
count_CO2s
output-2
tick
if (time = 72) [stop]
end
;;;;;;;;;;;;;;;辅助程序
to Calculate_concentrations
set Initial_concentration_glucose (Initial_concentration_glucose + sum [glucose_mass] of glucose + 0.0000001)
set Initial_concentration_CO2s (Initial_concentration_CO2s + sum [CO2s_mass] of CO2s + 0.0000001)
end
to eat
let prey one-of glucose-here
if prey != nobody
[ask prey [die]]
let prey2 one-of CO2s-here
if prey2 != nobody
[ask prey2 [die]]
end
to output-2
file-open "TestINOUT-AD.csv"
file-type ticks file-type ","
file-type Initial_concentration_glucose file-type ","
file-type Initial_concentration_CO2s file-type ","
file-type total_CO2s file-type ","
file-print total_glucose
file-close
end
to count_glucose
set total_glucose (total_glucose + sum [glucose_mass] of glucose)
end
to count_CO2s
set total_CO2s (total_CO2s + sum [CO2s_mass] of CO2s )
end
没有创建海龟,您的程序 count_glucose 是 glucose_mass 的累加和,这就是您文件中输出的内容。但是你的问题表明你认为这是报告葡萄糖剂的数量。
to count_glucose
set total_glucose (total_glucose + sum [glucose_mass] of glucose)
end
如果你真的想计算葡萄糖试剂,那么你需要count glucose
file-print count glucose
而不是:
file-print total_glucose
在我的程序中,海龟品种 CO2s 的初始浓度为 10,而海龟品种葡萄糖将从 10 开始,每次滴答增加 10(如设置-饲料程序中所述)。待办程序包括海龟繁殖的细菌,它每次滴答都会吃掉二氧化碳和葡萄糖。问题是,根据我当前的代码,海龟、二氧化碳和葡萄糖的品种都会增加每个滴答声。我当前的输出 Excel 如下所示:
我希望我的输出 Excel 可以是这样的:
对这个问题有什么意见或建议吗?
Breed [glucose a-glucose];; Glucose
Breed [CO2s CO2]
Breed [bacteria bacterium]
glucose-own [glucose_mass]
bacteria-own [bacteria_mass]
CO2s-own [CO2s_mass]
Globals
[
time
Initial_concentration_glucose
Initial_concentration_CO2s
total_glucose
total_CO2s
]
to setup
clear-all
set time 0
set Initial_concentration_glucose 0
set Initial_concentration_CO2s 0
set total_glucose 0
set total_CO2s 0
;;; BACTERIA;;;
set-default-shape bacteria "default"
create-bacteria (20)
[ set color cyan
set bacteria_mass 20 / 20
]
;;; CO2s;;;
set-default-shape CO2s "circle"
create-CO2s (10)
[set color orange
set CO2s_mass (10 / 10)
setxy random-xcor random-ycor
]
setup-feed
output-1
reset-ticks
end
to setup-feed
set-default-shape glucose "circle";; Glucose shape
Create-glucose (10)
[
set glucose_mass 10 / 10
setxy random-xcor random-ycor
]
end
to output-1
if (file-exists? "TestINOUT-AD.csv") [carefully [file-delete "TestINOUT-AD.csv"] [print error-message]]
file-open "TestINOUT-AD.csv"
file-type "tick,"
file-type "Initial_concentration_glucose,"
file-type "Initial_concentration_CO2s,"
file-type "Bacteria,"
file-type "CO2s,"
file-print "glucose,"
file-close
end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;程序 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;
to go
if not any? turtles [stop]
Calculate_concentrations
ask bacteria
[ eat
]
set time time + 1
count_glucose
count_CO2s
output-2
tick
if (time = 72) [stop]
end
;;;;;;;;;;;;;;;辅助程序
to Calculate_concentrations
set Initial_concentration_glucose (Initial_concentration_glucose + sum [glucose_mass] of glucose + 0.0000001)
set Initial_concentration_CO2s (Initial_concentration_CO2s + sum [CO2s_mass] of CO2s + 0.0000001)
end
to eat
let prey one-of glucose-here
if prey != nobody
[ask prey [die]]
let prey2 one-of CO2s-here
if prey2 != nobody
[ask prey2 [die]]
end
to output-2
file-open "TestINOUT-AD.csv"
file-type ticks file-type ","
file-type Initial_concentration_glucose file-type ","
file-type Initial_concentration_CO2s file-type ","
file-type total_CO2s file-type ","
file-print total_glucose
file-close
end
to count_glucose
set total_glucose (total_glucose + sum [glucose_mass] of glucose)
end
to count_CO2s
set total_CO2s (total_CO2s + sum [CO2s_mass] of CO2s )
end
没有创建海龟,您的程序 count_glucose 是 glucose_mass 的累加和,这就是您文件中输出的内容。但是你的问题表明你认为这是报告葡萄糖剂的数量。
to count_glucose
set total_glucose (total_glucose + sum [glucose_mass] of glucose)
end
如果你真的想计算葡萄糖试剂,那么你需要count glucose
file-print count glucose
而不是:
file-print total_glucose