NetLogo代码转换求助:跨品种单侧修改变量及随机远程修改
可运行的NetLogo代码实现需求
我帮你把伪代码调整成了可直接运行的NetLogo代码,还修正了原伪代码里的语法错误,同时优化了细节让逻辑更顺畅:
; 定义品种和变量 breed [ greens green ] greens-own [ variable ] breed [ reds red ] to setup clear-all ; 创建100个绿色智能体,随机分布,变量初始为0-9的随机数 create-greens 100 [ setxy random-xcor random-ycor set variable random 10 ] ; 创建1个红色智能体,随机分布 create-reds 1 [ setxy random-xcor random-ycor set color red ] reset-ticks end to start ; 让红色智能体持续执行交互逻辑(建议把start绑定到Forever按钮) ask reds [ exchange ] tick end to exchange ; 红色智能体随机转向并移动一小步 rt random 360 fd 0.5 ; 第一部分:修改附近(邻居)中变量>6.9的绿色智能体的变量 ask greens in-neighbors 1 [ ; 筛选当前红色智能体的邻居范围内的绿色智能体 if variable > 6.9 [ set variable variable + 0.5 ] ] ; 第二部分:随机修改任意一个远程绿色智能体的变量(不管距离) if any? greens [ ; 先判断是否还有绿色智能体存在,避免报错 ask one-of greens [ set variable variable + 1 ] ] end
关键修改和说明:
- 给智能体添加了
setxy random-xcor random-ycor,让它们初始随机分布在画布上,避免扎堆影响邻居检测 - 修正了原伪代码中错误的
ask reds-on neighbors,改为正确的ask greens in-neighbors 1来筛选邻居中的绿色智能体 - 添加了
if variable > 6.9的条件判断,精准匹配需求中“变量>6.9时”才修改的规则 - 增加了
if any? greens的判断,防止当所有绿色智能体消失时one-of greens出现报错 - 给
start过程添加了tick,方便你通过时间轴观察变量变化
内容的提问来源于stack exchange,提问作者Til Hund
相关产品推荐
相关产品推荐

