NetLogo智能体类型分配代码报错:set命令需两个输入,求排查
问题原因及修正方案
错误的核心是匿名过程语法不符合NetLogo版本要求,导致代码解析混乱,触发"set命令需要两个输入"的错误提示。以下分版本给出修正方案:
若使用NetLogo 5.x及更早版本
这类版本不支持[参数 -> 代码]的匿名过程写法,需使用foreach的传统语法,用?指代列表中的当前元素:
to setup-players let type-distribution read-from-string n-of-players-for-each-type let i 1 foreach type-distribution [ create-players ? [ set type i set payoff 0 set strategy (random 11) set strategy-after-revision strategy ] set i (i + 1) ] set n-of-players count players end
若使用NetLogo 6.0及以上版本
支持匿名过程,但单参数需用括号包裹(规范写法),修正后代码如下:
to setup-players let type-distribution read-from-string n-of-players-for-each-type let i 1 foreach type-distribution [ [j] -> create-players j [ set type i set payoff 0 set strategy (random 11) set strategy-after-revision strategy ] set i (i + 1) ] set n-of-players count players end
额外注意
确保界面输入的n-of-players-for-each-type是合法的列表字符串,例如[10 20 30 40],否则read-from-string无法正确解析为数值列表。
内容的提问来源于stack exchange,提问作者Viktor Glushkov
相关产品推荐
相关产品推荐

