在NetLogo中改变乌龟变量的好方法是什么?

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

我正在模拟一个多代理系统。每个代理都有一条染色体。基因型代表5个参数,它们是0到100之间的各种浮点数。我的变异算子简单地用新的随机数修改原始基因(根据恒定的突变率)。这是最好的方法还是你可以用另一种方式建议?例如,是否可以在位数级别中改变参数以提供更高的精度?

My mutation operator

netlogo genetic-algorithm agent-based-modeling
1个回答
3
投票

你的意思是你想根据它的当前值修改基因值,而不是简单地替换它吗?也许这对你有用:

globals [ genome ]

to setup
  ca
  set genome n-values 5 [ random 101 / 100 ]
  print word "Original genome: " genome
  reset-ticks
end

to mutate
  set genome map [ 
    i -> 
    ifelse-value ( random-float 1 < 0.2 )
    [ precision ( i + one-of [ 0.01 -0.01 ] ) 2 ]
    [ i ]
  ] genome
  print word "Mutated genome:  " genome
end

在这里,基因组是在setup中随机创建的,然后每当你调用mutate时,每个基因都有可能增加或减少0.01。输出:

Original genome: [0.09 0.77 0.41 0.97 0.8]
Mutated genome:  [0.08 0.77 0.41 0.96 0.8]
Mutated genome:  [0.08 0.76 0.41 0.97 0.8]
Mutated genome:  [0.08 0.75 0.41 0.97 0.8]
Mutated genome:  [0.09 0.75 0.42 0.97 0.8]
© www.soinside.com 2019 - 2024. All rights reserved.