netlogo - 计算邻居之间海龟的步数
问题描述
在世界上,个体和消息这两种主体随机定位在二维的态度空间中。
如果个人相信这些消息,他或她会创建与这些消息的链接。
然后,个人根据从自己到消息的距离的计算来调整他或她的态度位置。
在这里,我有一个问题。
我想让一个人在接触高价值信息时比接触低价值信息时多移动两倍。
但我现在能做的只是平均消息之间的距离。
这是我到目前为止所做的
breed [individuals individual]
breed [messages message]
messages-own [value]
undirected-link-breed [messagelinks messagelink]
to setup
ca
create-individuals 100 [initiate-individuals]
reset-ticks
end
to go
new-messages
end
to initiate-messages
ifelse random-float 1 < value-p [ set value "H" ] [set value "L"]
end
to initiate-individuals
setxy random-xcor random-ycor
end
to new-messages
create-messages 30 [
initiate-messages
ask individuals [
integrate-messages myself
]
]
end
to integrate-messages [newmessages]
if random-float 1 < 0.3
[create-messagelink-with newmessages
setxy mean [xcor] of messagelink-neighbors mean [ycor] of messagelink-neighbors]
end
解决方案
我假设integrate-messages
旨在处理一组消息,即使当接收者在您的代码中执行它时,它只是新创建的消息本身,而不是所有新创建的消息。可能有几种方法可以处理赋予“H”消息比“L”消息更大的影响的问题,但可能是最简单的方法,即简单地使用消息的 xcors 和 ycors 的加权平均值。我已经写了一个简短的模型,在integrate-messages
.
breed [messages message]
breed [receivers receiver]
undirected-link-breed [messagelinks messagelink]
messages-own [value]
to setup
clear-all
create-receivers 1 [
setxy random-xcor random-ycor
set color green
]
create-messages 5 [
setxy random-xcor random-ycor
set value ifelse-value (random-float 1 < 0.5) ["H"] ["L"]
set color blue
set label value
]
reset-ticks
end
to go
ask one-of receivers [
integrate-messages n-of 3 messages
]
end
to integrate-messages [newmessages]
;to indicate which messages are being received.
ask newmessages [set color red ]
create-messagelinks-with newmessages [set color red]
;now calculate the weighted position relative to ALL linked messages.
let mssgs [other-end] of my-messagelinks
let wghts map [x -> ifelse-value ([value] of x = "H") [2] [1]] mssgs
let xc sum (map [[m w] -> w * [xcor] of m ] mssgs wghts)
let yc sum (map [[m w] -> w * [ycor] of m ] mssgs wghts)
set xcor xc / sum wghts
set ycor yc / sum wghts
;to show where the receiver ends up.
set color red
end
推荐阅读
- amazon-web-services - 错误:启动源实例时出错:不支持:此实例类型不支持请求的租赁
- swift - 图表 x 轴上的相同值
- python - Roblox 好友删除器
- plantuml - 如何使用 Plant UML yaml 排除包
- oracle - Oracle Reports Builder 条码字体消失
- qt - QtQuick 2.12 中的垂直滑动
- c - zsh shell 中的百分号从何而来?
- javascript - Angular 上的缓存破坏
- docker - 如何使用自定义配置通过 docker 运行 hyperledger besu 节点?
- python - 如何绘制用于分组子图的括号