Netlogo 在设置时创建海龟一次,而不是在每个滴答声中创建海龟

Netlogo 在设置时创建海龟一次,而不是在每个滴答声中创建海龟,netlogo,agent,Netlogo,Agent,在我的程序中,海龟品种的CO2初始浓度为10,海龟品种的葡萄糖将从10开始,每滴虫增加10(如设置饲料程序中所述)。接下来的程序包括海龟繁殖的细菌,每只蜱都会吃二氧化碳和葡萄糖。问题是,根据我目前的代码,每种海龟的二氧化碳和葡萄糖含量都会增加。我当前的Excel输出如下所示: 我希望我的Excel输出可以如下所示: 对这个问题有什么意见或建议吗 Breed [glucose a-glucose];; Glucose Breed [CO2s CO2] Breed [bacteria bacte

在我的程序中,海龟品种的CO2初始浓度为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

海龟不是被创造出来的,你的程序计数是葡萄糖质量的累积和,这是你文件中输出的。但你的问题表明,你认为这是在报告葡萄糖制剂的数量

to count_glucose
  set total_glucose (total_glucose + sum [glucose_mass] of glucose)
end
如果你真的想计算葡萄糖制剂,那么你需要计算葡萄糖

file-print count glucose
而不是:

file-print total_glucose

海龟不是被创造出来的,你的程序计数是葡萄糖质量的累积和,这是你文件中输出的。但你的问题表明,你认为这是在报告葡萄糖制剂的数量

to count_glucose
  set total_glucose (total_glucose + sum [glucose_mass] of glucose)
end
如果你真的想计算葡萄糖制剂,那么你需要计算葡萄糖

file-print count glucose
而不是:

file-print total_glucose

你的细菌实际上没有摄入任何葡萄糖或二氧化碳,因为它们只能在同一块地上找到猎物,因为themJen正确地指出,在设置后,你实际上没有产生任何二氧化碳或葡萄糖,相反,你只需将当前蜱虫的总量与前一蜱虫的总量相加。例如,在一次勾选后,总葡萄糖
设置为10。然后,在下一个勾号中使用
total_glucose+sum[glucose_mass]of glucose
更新它。所以:10+10等于20。所以,现在总葡萄糖是20。下一个滴答声,这个过程会重复,所以变成20+10,依此类推。由于你的细菌只有在食物上繁殖后才会进食,你的excel文件如你所见。也许你只是想打印葡萄糖的[葡萄糖质量]之和?此外,您还可以在
输出-1
中为“细菌”创建一列,但不要将它们计入
output-2
。你的细菌实际上并没有摄入任何葡萄糖或二氧化碳,因为它们只能在同一块地上找到猎物,正如themJen正确指出的那样,在安装后,你实际上并没有产生任何二氧化碳或葡萄糖,但是,你只是简单地将当前勾号的总金额与前一个勾号的总金额相加。例如,在一次勾选后,总葡萄糖
设置为10。然后,在下一个勾号中使用
total_glucose+sum[glucose_mass]of glucose
更新它。所以:10+10等于20。所以,现在总葡萄糖是20。下一个滴答声,这个过程会重复,所以变成20+10,依此类推。由于你的细菌只有在食物上繁殖后才会进食,你的excel文件如你所见。也许你只是想打印葡萄糖的[葡萄糖质量]之和?此外,您在
output-1
中为“Bacteria”创建了一列,但在
output-2
中不计算它们。谢谢您的评论。对不起,我忘了解释,我正试图计算二氧化碳和葡萄糖的总质量在每一个滴答声的最后。例如,对于CO2,生成质量为(10/10)=1的10种药剂。因此,Begging的质量是10。但是,如果我创建了5个质量为2的CO2,我仍然需要报告质量为10的CO2,而不是5个CO2。然后,在细菌吃掉一些二氧化碳后,再次进行计数。因此,如果吃了1个CO2,在CO2_质量=2的情况下,那么最终计数应该是8。所有这些都很好:)(见下一条评论)问题是,在下一个勾选中,不应再产生二氧化碳,而应产生10个葡萄糖单位质量。因此,在下一个刻度中,我想得到葡萄糖质量=20(已经可以了),二氧化碳质量=8,但是我得到了18个二氧化碳,因为二氧化碳质量增加了10。请让我知道如果我解释我自己。谢谢你的帮助和时间!不,你实际上并没有产生更多的二氧化碳或质量。只有在安装程序中才有“create”语句。在go过程中,你没有产生任何新的质量,你只是将现有质量再次相加,并将其添加到之前的总和中。我建议您去掉所有生成输出的代码,只需在界面上安装几个监视器,直到模型满足您的要求。模型工作后,您可以担心报告格式。谢谢您的评论JenB。对不起,我忘了解释,我正试图计算二氧化碳和葡萄糖的总质量在每一个滴答声的最后。例如,对于CO2,生成质量为(10/10)=1的10种药剂。因此,Begging的质量是10。但是,如果我创建了5个质量为2的CO2,我仍然需要报告质量为10的CO2,而不是5个CO2。然后,在细菌吃掉一些二氧化碳后,再次进行计数。因此,如果吃了1个CO2,在CO2_质量=2的情况下,那么最终计数应该是8。所有这些都很好:)(见下一条评论)问题是,在下一个滴答声中,不再有二氧化碳排放