Netlogo 当多个代理以它为食时,我如何使一个代理衰退?
在我的模型中,我有一些代理,它们充当具有一定能量的食物。这些都是由一些海龟品种喂养的,每个海龟品种都有自己的食物能量,低于食物的能量 喂料剂的代码如下:Netlogo 当多个代理以它为食时,我如何使一个代理衰退?,netlogo,Netlogo,在我的模型中,我有一些代理,它们充当具有一定能量的食物。这些都是由一些海龟品种喂养的,每个海龟品种都有自己的食物能量,低于食物的能量 喂料剂的代码如下: to eat ifelse [food-energy] of myfood > 1.5 [ set food-energy 1.5] end 食品腐烂的相关代码为: to decay if any? turtles-here [set food-energy (1.5 * count feeders-here wit
to eat
ifelse [food-energy] of myfood > 1.5 [
set food-energy 1.5]
end
食品腐烂的相关代码为:
to decay
if any? turtles-here [set food-energy
(1.5 * count feeders-here with [myfood = myself]
end
如果食物的能量不是喂食者所能消耗能量的精确倍数,就会出现问题。例如,它可以降到1,这导致馈线取1.5个单位,这是不可能的。当我有不同食物能量的不同品种(即<或>1.5)时,这种情况会加剧
所以我的问题是,我怎样才能让这些东西达到平衡
breed [feeders feeder]
patches-own [ food-energy ]
feeders-own [ myfood ]
to setup
ca
ask patches [set food-energy random 50]
create-feeders 500 [
move-to one-of patches
set myfood one-of patches
]
end
to go
ask feeders [move]
ask feeders [feed]
ask patches [growback]
end
to move ;how shd they move?
rt random 20
left random 40
fd 1
;shd movement cost energy?
end
to feed
if (patch-here = myfood) [
let _extracted min (list food-energy 1.5)
set food-energy (food-energy - _extracted)
]
end
to growback
;do you want growback?
end
breed [feeders feeder]
patches-own [ food-energy ]
feeders-own [ myfood ]
to setup
ca
ask patches [set food-energy random 50]
create-feeders 500 [
move-to one-of patches
set myfood one-of patches
]
end
to go
ask feeders [move]
ask feeders [feed]
ask patches [growback]
end
to move ;how shd they move?
rt random 20
left random 40
fd 1
;shd movement cost energy?
end
to feed
if (patch-here = myfood) [
let _extracted min (list food-energy 1.5)
set food-energy (food-energy - _extracted)
]
end
to growback
;do you want growback?
end
谢谢你的回复。我会努力实现它们。这是一个不雅观的变通方法,对我来说很有效:
to eat
ifelse (food-energy / capacity) < 1 and [meat] of myfood > capacity [
set food-energy 1.5] [set food-energy [meat] of myfood
ask myfood [set shape "square"]]
if (food-energy / capacity) = 1 [
set color white]
if (food-energy > 0 and food-energy / capacity < 1)
[ set color white ]
end
谢谢你的回复。我会努力实现它们。这是一个不雅观的变通方法,对我来说很有效:
to eat
ifelse (food-energy / capacity) < 1 and [meat] of myfood > capacity [
set food-energy 1.5] [set food-energy [meat] of myfood
ask myfood [set shape "square"]]
if (food-energy / capacity) = 1 [
set color white]
if (food-energy > 0 and food-energy / capacity < 1)
[ set color white ]
end
我不完全确定衰变应该做什么,因为它似乎是创造能量而不是减少能量。然而,我的最佳猜测是,您需要一个类似于
设置值min(值中的列表1.5)
的构造。也就是说,如果输入值已经大于1.5,则输出值将与输入值相同,但如果输入值大于1.5,则输出值将为1.5。我应该说,我正在反向运行衰减函数。如果你看我下面的答案,你可能会知道这是如何工作的,因为我有两个变量,肉类和食物能量。我不完全确定衰变应该做什么,因为它似乎创造能量而不是减少能量。然而,我的最佳猜测是,您需要一个类似于设置值min(值中的列表1.5)
的构造。也就是说,如果输入值已经大于1.5,则输出值将与输入值相同,但如果输入值大于1.5,则输出值将为1.5。我应该说,我正在反向运行衰减函数。如果你看我下面的答案,你可能会知道这是如何工作的,因为我有两个变量,肉类和食物能量。