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