NetLogo中的永久选择

时间:2018-11-25 12:59:35

标签: simulation netlogo

在此模型中,如果满足某些条件,农民将投资于其生产率(RoP)。如果满足其他条件,他们会投资他们的生活水平(SoL)。

当前,这是通过每个时间步在To Invest过程中的多个if语句执行的。

我如何才能使行动方针永久化。例如,如果第2点的第一个服务器场符合投资RoP的条件,则该服务器场应在随后的每个时间步继续这样做,而不是第3点的选择投资SoL。如何使该操作永久生效?

to invest 
  let p random 100 
  set excess-prev-tick farm-excess
  if ( farm-excess > 0 and p <= 30 ) [
    set farm-RoP ( farm-RoP + farm-excess )] 
  if ( farm-excess > 0 and p > 30 and SoL < SoL-max ) [
    set SoL ( SoL + 0.1 )] 
  if ( farm-excess > 0 and p > 30 ) [
    set farm-RoC ( farm-RoC + ( count patches in-radius farm-size * 2 ))]
  if farm-excess < 0 and SoL >= SoL-min [
    set SoL ( SoL - 0.05) ]
  set farm-excess (farm-ROP - farm-RoC) 
  set RoExp ((farm-excess - excess-prev-tick) / (excess-prev-tick)) 
end

1 个答案:

答案 0 :(得分:1)

最简单的方法是为每个农民创建一个变量(使用农民自己的声明),将其初始化为“不确定”,然后在其中一个满足条件时变为“生产”或“生活”。然后,您应该组织您的投资代码,以针对不同的农民子群体进行不同的计算(例如ask farmers with [invest-type = "undecided"][ <do stuff> ]