我想创造一个场景,海龟用他们刚刚移动到的补丁检查他们之前的补丁,如果新补丁有更高的c值,那么海龟将在其计算中使用new_p1在状态0或1之间切换(这是模拟翻滚和运行大肠杆菌)。在决定继续运行(0)或切换到翻滚(1)之后,它应该更新它的oldc值,以便做出进一步移动的决定。根据平衡计算,海龟在产卵时也会被分配0或1状态。我的问题是,运行程序时,我没有看到乌龟在右边累积(我已经沿着每个补丁创建了一个梯度,右边越远,补丁的c值越高)。
ask turtles [
if (status = 0)
[
fd 0.3
set heading heading + 10 * (2 * random-float 1.0 - 1.0)
set rsq xcor * xcor + ycor * ycor
set msq msq + rsq
ifelse (c > oldc)
[if ( random-float 100 < new_p1 ) [set status 1]][if ( random-float 100 < p1 ) [set status 1]]
set oldc c
]
fd 0.02
set heading heading + 180 * (2 * random-float 1.0 - 1.0)
set rsq xcor * xcor + ycor * ycor
set msq msq + rsq
if ( random-float 100 < p2 ) [set status 0]
set oldc c]
发布于 2020-04-13 09:21:55
我发现了问题所在,在这种情况下,我应该使用ifelse而不是if,因为它允许在运行过程之后继续执行tumble过程
ask turtles [
ifelse (status = 0)
[
fd 0.3
set heading heading + 10 * (2 * random-float 1.0 - 1.0)
set rsq xcor * xcor + ycor * ycor
set msq msq + rsq
ifelse (c > oldc)
[if ( random-float 100 < new_p1 ) [set status 1]][if ( random-float 100 < p1 ) [set status 1]]
set oldc c
]
[
fd 0.02
set heading heading + 180 * (2 * random-float 1.0 - 1.0)
set rsq xcor * xcor + ycor * ycor
set msq msq + rsq
if ( random-float 100 < p2 ) [set status 0]
set oldc c
]https://stackoverflow.com/questions/61178409
复制相似问题