改变变量netlogo的范围

时间:2016-03-12 16:22:09

标签: netlogo

我有一个变量:

ask group [set means-one groupmeans + resources-agent ]

我想让netlogo将变量限制在1到99之间。 怎么样?

2 个答案:

答案 0 :(得分:2)

你的问题并不完全清楚。 “改变范围”是什么意思?如果你想剪切极值,你可以这样做:

to-report clip [#x #min #max]
  if (#x < #min) [report #min]
  if (#x > #max) [report #max]
  report #x
end

然后你可以ask turtles [set means-one clip means-one 1 99]。 Otoh,如果您确实想要将所有现有值线性地重新调整到新范围,您可以执行以下操作:

to rescale-all-means-one
  let _newmin 1
  let _newmax 99
  let _newrange (_newmax - _newmin)
  let _lst [means-one] of turtles
  let _min min _lst
  let _max max _lst
  let _range (_max - _min)
  ask turtles [
    let _scale (means-one - _min) / _range
    let _scaled (_newmin + _scale * _newrange)
    set means-one _scaled
  ]
end

答案 1 :(得分:2)

只是为了简化Alan的第一个删除if语句的答案:

你可以这样做:

ask group [set means-one (max (list 1 (min (list 99 groupmeans + resources-agent))) ]