如何使用计算的龟拥有变量A来计算不同的龟拥有变量B.
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用计算的龟拥有变量A来计算不同的龟拥有变量B.相关的知识,希望对你有一定的参考价值。
在我的程序中,每只乌龟(即葡萄糖和细菌)都有自己的变量,称为质量。设置程序表明葡萄糖和细菌的初始质量为1毫摩尔。过程中说葡萄糖会被水解和分裂。因此,葡萄糖质量将与最初的1mmol不同。细菌的去处理程序说,当细菌吃掉一个葡萄糖时,细菌的质量将从最初的1毫摩尔加上葡萄糖的质量(在分水解 - 葡萄糖过程中确定的随机数)生长,它消耗的时间为固定数字(即0.3)。我尝试使用“我自己”命令将另一只乌龟的变量包含在细菌乌龟中。然而,它给了我一个错误,说“OF期望这个输入是一个记者块,但得到一个变量或任何东西”。
对此问题有任何意见或建议吗?
Breed [glucose a-glucose];; Food
Breed [bacteria a-bacteria] ;; Predator
glucose-own [glucose_mass]
Bacteria-own [Bacteria_mass]
建立
;;;葡萄糖;;;
set-default-shape glucose "circle"
Create-glucose (8) ;; Create the glucose available in mmol/d,
[set glucose_mass (1) ;; in mmol
]
;;;菌;;;
Create-Bacteria (8) ;; Create the clostridiales in mmol
[set Batceria_mass (1)
]
end
去
ask glucose
[
Hydrolyse_glucose
Divide_hydrolyzed_glucose
]
ask Bacteria
[ Bacteria_eat_glucose]
to hydrolyse_glucose
if (glucose_mass < 200) [
set glucose_mass ((glucose_mass * 0.025 + random-float 32.975) / 24)
]
end
to divide_hydrolyzed_glucose
if (glucose_mass > 1)
[
set glucose_mass (glucose_mass / 2)
hatch 1
]
end
to Bacteria_eat_glucose
let prey one-of glucose-here
if prey != nobody
[ask prey [die]
set Bacteria_mass (Bacteria_mass + ((glucose_mass of myself) * 0.3))
]
end
答案
错误信息最初可能看起来很难解释,但它告诉你究竟出了什么问题:of
原语需要一个记者块,但你给它一个变量。
所以你需要:
[ glucose_mass ] of myself
方括号告诉NetLogo glucose_mass
应该被包装成“报告块”,这可以在不同的上下文中运行(在这种情况下,[ glucose_mass ]
将在myself
的上下文中运行。)
然而,仔细观察代码,似乎myself
不是你需要的。 myself
原语用于从“外部”上下文中引用代理...当存在时,这不是这里的情况。
我建议你像这样重组你的Bacteria_eat_glucose
程序:
to Bacteria_eat_glucose
let prey one-of glucose-here
if prey != nobody [
set Bacteria_mass Bacteria_mass + [ glucose_mass * 0.3 ] of prey
ask prey [ die ]
]
end
有几点需要注意:
myself
已被prey
取代;- 记者街区仍然用方括号包裹;
- 我把
* 0.3
放在记者区里面因为我觉得它更容易阅读,但[ glucose_mass ] of prey * 0.3
本来就一样好; set Bacteria_mass ...
线需要在猎物死亡之前出现,否则猎物的glucose_mass
将不再可用。
以上是关于如何使用计算的龟拥有变量A来计算不同的龟拥有变量B.的主要内容,如果未能解决你的问题,请参考以下文章