首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在设置时创建一次海龟,而不是在每个节拍中创建海龟

在设置时创建一次海龟,而不是在每个节拍中创建海龟
EN

Stack Overflow用户
提问于 2018-09-06 18:15:59
回答 1查看 74关注 0票数 0

在我的程序中,海龟品种CO2s的初始浓度为10,海龟品种葡萄糖的初始浓度从10开始,每刻度增加10个(如设置-馈送过程中所述)。to go程序包括一种海龟繁殖的细菌,这种细菌在每只扁虫身上都会吃掉CO2s和葡萄糖。问题是,在我目前的代码中,两种海龟,CO2s和葡萄糖,都会增加每一次滴答。我当前输出的Excel如下所示:

我希望我的Excel输出可以是这样的:

对这个问题有什么意见和建议吗?

代码语言:javascript
复制
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

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;PROCEDURES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

代码语言:javascript
复制
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

;助手过程

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-06 21:11:53

没有创建glucose_mass,你的过程count_glucose是一个累积的海龟总和,这就是你的文件中输出的内容。但你的问题表明,你认为这是在报告葡萄糖制剂的数量。

代码语言:javascript
复制
to count_glucose
  set total_glucose (total_glucose + sum [glucose_mass] of glucose)
end

如果您真的想计算葡萄糖制剂的数量,那么您需要count glucose

代码语言:javascript
复制
file-print count glucose

而不是:

代码语言:javascript
复制
file-print total_glucose
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52201805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档