netlogo - Netlogo:在评估给定变量的相似性后让乌龟与另一个人互动
问题描述
我有几只海龟,每只都有三个变量意见 1、意见 2 和意见 3。我需要他们:
- 确定这三个变量中哪个具有最高值
- 在他们的网络中找到另一只乌龟,其值至少与在 1 中找到的乌龟一样高。
- 相对于在 2 中找到的海龟的值,更新在 1 中找到的自己的值。
我所做的并没有真正起作用,因为它只更新查看 o1 而没有真正查看哪棵树(意见 1、意见 2 或意见 3)是最高的,然后寻找邻居。
to update-opinion
ask turtles [
let my-nearby-turtles nw:turtles-in-radius 1
let my-opinion1 opinion1
set neighbour one-of my-nearby-turtles with [ opinion1 > my-opinion1 ]
if neighbour != nobody [
let opinion_n [opinion1] of neighbour
set opinion1 ((opinion1 + opinion_n) / (2))
]
]
end
解决方案
我不知道一种简单的方法来使用诸如opinion1
等的独特变量来做到这一点,但也许有一个意见列表而不是每个意见的单个变量会起作用。例如,使用此设置:
extensions [ nw ]
turtles-own [
opinions
]
to setup
ca
resize-world -5 5 -5 5
set-patch-size 30
crt 30 [
set shape "dot"
set opinions n-values 3 [ precision random-float 10 2]
set color scale-color blue sum opinions -5 35
while [ any? other turtles-here ] [
move-to one-of neighbors4
]
]
ask turtles [
create-links-with turtles-on neighbors4
]
reset-ticks
end
你会得到这样的东西:
每个海龟都有一个opinions
长度为三项的列表变量。现在,您可以让每只海龟使用 确定其最高意见值max
,使用 获取列表中的最大值索引位置position
,然后查询该海龟的邻居以查看它们中的任何一个在同一索引位置是否具有更高的值。如果是这样,请修改您的询问海龟opinions
列表replace-item
,使其成为两个值的平均值:
to go
ask turtles [
; Get adjacent turtles
let my-nearby-turtles nw:turtles-in-radius 1
; Identify the highest highest value variable of
; the current turtle, and get its list position
let my-opinion max opinions
let my-op-ind position my-opinion opinions
; Pick one of the turtles whose value in the same indexed
; position is higher than my-opinion
let influence one-of my-nearby-turtles with [
item my-op-ind opinions > my-opinion
]
; If that turtle exists, update my own opinions list as appropriate
if influence != nobody [
let new-opinion precision (
( [ item my-op-ind opinions ] of influence + my-opinion ) / 2
) 2
set opinions replace-item my-op-ind opinions new-opinion
]
set color scale-color blue sum opinions -5 35
]
tick
end
希望这是在正确的轨道上,不确定列表是否适合您的需要。如果您必须在每个刻度上将变量作为独立值,我想您可以将它们转换为列表,然后按照上面的过程进行操作。如果您只需要它们进行输出,您可以根据需要根据列表中的值更新您的唯一变量(只要您与顺序一致)。
推荐阅读
- javascript - 有没有办法将 css 应用于元素的一部分?
- javascript - 我不断收到错误:require is not defined
- google-chrome-theme - 有没有办法为操作系统中的明暗模式指定不同的 Chrome 主题颜色?
- c++ - 为什么 Visual Studio 只返回整数?
- python - 按长期月平均年查找变异性月度数据
- ruby - RSpec shared_examples 有条件地检查块是否存在
- reactjs - 列表组件不断重新渲染
- ajax - 如何使用带有 Ajax 和 Laravel 的 id 从另一个表中获取值?
- c# - 我正在尝试在 NET 5 核心中创建 TexttoSpeech。为此,swagger UI 在 webapi 中没有显示任何内容
- node.js - 你可以使用 axios 在后端发出 post 请求吗?