沿着梯度移动的特工

问题描述 投票:0回答:1

我想创建一种情况,乌龟会使用刚移动到的补丁检查其先前的补丁,如果新补丁的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

]

gradient netlogo
1个回答
2
投票

我发现了问题,在这种情况下,我应该使用ifelse而不是if,因为它允许在运行运行过程之后继续执行滚动过程

© www.soinside.com 2019 - 2024. All rights reserved.