天道酬勤,学无止境

netlogo

如何选择列表中具有最高值的项目(How to select the item with highest value in a list)

问题 我在模型中考虑的每只乌龟都有一个列表。 我想选择列表中的一个项目,特别是质量最高的项目。 质量是 [0,1] 范围内的参数。 我的问题是如何将参数分配给每个项目,然后选择具有最高参数值的项目。 为了更好地解释:列表的一个例子是(item 4, item3, item2, item1) 。 我想要的是:带有质量 # 的第 4 项,带有质量 # 的第 3 项,依此类推。 当我创建列表的项目时,它们有一个质量参数(它是乌龟自己的): (quality random-float 1) 。 然后,我应该有这样的东西: item4 0.2, item3 1, item2 0.2, item1 0.5 。 我想选择质量最高的项目,即质量等于1 item3 。 为了分配参数,我考虑过: ask one-of turtles [ ifelse empty? mylist [ set quality random-float 1 ... ] ] 我不知道这是否是将属性分配给 Netlogo 中列表项的正确方法。 选择项目的步骤是: 选择一只乌龟检查其列表是否为空选择其列表中质量最高的项目 基于它们,我会写如下: let mylist [ item4 item3 item2 item1 item0 item6] let max-value max mylist let max-index

2021-10-25 13:40:35    分类:技术分享    netlogo

如何使用 NetLogo 行为空间收集定向链接的“id”?(How can I collect the "ids" of directed links using the NetLogo Behavior Space?)

问题 我们在 NetLogo 模型中存储了大量数据作为链接的属性。 当我使用行为空间设计实验和指导数据收集时,我指定要提取的“链接的[属性]”。 但是,在 CSV 文件中,我看不到链接的 id,这是理解数据必不可少的。 如何在结果中收集链接的 ID? 据我所知,没有启用此命令的原语。 回答1 每当您想使用 BehaviorSpace 从单个代理(包括链接)中提取信息时,一个很好的方法是使用csv扩展名,如本答案所述: https://stackoverflow.com/a/52406247/487946 一般的想法是,我们可以将 csv 嵌入到我们的 csv 中,然后在 R(或 Python 或 Julia 或其他)中使用类似read_csv的函数从我们的 BehaviorSpace 结果中提取“内部 csv”。 在链接的情况下,包含链接每一端的who编号以唯一标识它会很有用。 (这是我提倡对任何事情使用who编号的极少数情况之一。) 让我们以这个愚蠢的示例模型为例: extensions [ csv ] links-own [ attribute ] to setup clear-all create-turtles 3 [ create-links-with other turtles [ set attribute random-float 1 ] ] reset-ticks

2021-10-25 12:42:49    分类:技术分享    netlogo   data-collection   behaviorspace

NetLogo GIS 扩展:不支持的文件类型 21 错误(NetLogo GIS extension: Unsupported file type 21 error)

问题 我一直在尝试在 NetLogo 中添加一个 .shp 文件(点),但它显示了这个错误: 扩展异常:观察者运行 GIS 时出现不支持的形状类型 21 错误:由按钮“Go”调用的过程 SETUP 调用的 LOAD-DATASET 回答1 类型 21 是 PointM - 带有度量的点(作为几何字段的一部分,而不是作为单独的字段)。 显然 NetLogo 不支持这一点。 您通常可以从该文件中删除 M 值并将几何转换为常规点,使用 GDAL ogr2ogr 工具或许多 GIS 系统,然后尝试将转换后的文件加载到 NetLogo。

2021-10-25 10:06:43    分类:技术分享    gis   netlogo

文件输出 Netlogo(File Output Netlogo)

问题 我已经设置了generateOutput过程,并且在每个滴答声中,该过程都必须在txt文件中保存代理的decision和payoff 。 我这样编码: to generateOutput file-open "Sellers-Buyers.txt" file-print "tick step, decision, payoff_seller and payoff_buyer" end 但我认为必须有一些补充。 我是否需要添加一些新代码? 此致 回答1 我相信你想要像file-print (word tick ", " decision ", " payoff_seller " and " payoff_buyer)这样的东西file-print (word tick ", " decision ", " payoff_seller " and " payoff_buyer) 回答2 如果decision 、 payoff_seller和payoff_buyer是变量,并且您希望每个值都位于文件中的不同行,则可以执行此操作: file-open "Sellers-Buyers.txt" file-print decision file-print payoff_seller file-print payoff_buyer file-close 请注意最后一行中的file

2021-10-25 05:32:52    分类:技术分享    file   process   netlogo

我可以在 NetLogo 的一个程序中使用多个复位定时器功能吗?(Can I use multiple reset-timer function in one procedure in NetLogo?)

问题 我正在尝试在 Netlogo 中建立 4 个教室,学生将根据他们的随机进入时间一个一个进入 4 个教室。 所以在我的go程序中,我将不得不使用多个(2次)reset-timer让学生一一进入4间教室。 但是一个教室的学生都在0分钟内进入。 为什么会这样? to go reset-timer tick create-students-classroom move-students reset-timer move-studentsB reset-timer move-studentsC reset-timer move-studentsD wait 1 move-student-out if ticks >= 1 [stop] end 回答1 如果您查看reset-timer的字典条目,您将看到以下警告: 请注意,计时器与滴答计数器不同。 计时器以秒为单位测量经过的实时时间; 滴答计数器以滴答为单位测量模型经过的时间。 我认为您到目前为止尝试的方法混淆了“滴答”和“实时”,这将导致各种问题。 在基于代理的模型中,您应该真正关注刻度,而不是实时。 实时性取决于计算机的速度,在模拟环境中几乎毫无意义。 相比之下,“滴答”实际上是概念上的“模型步骤”,几乎在所有情况下都是相关的单位。 按照惯例,在 NetLogo 中,我们运行go过程,每个滴答一次。 这就是为什么 NetLogo

2021-10-25 04:24:35    分类:技术分享    netlogo

File Output Netlogo

I have so set generateOutput process and in every tick this process has to save the decision and payoff of the agents in the txt file. I code it so: to generateOutput file-open "Sellers-Buyers.txt" file-print "tick step, decision, payoff_seller and payoff_buyer" end But I think there have to be some additions. Have i to add some new codes or? best regards

2021-10-24 22:40:31    分类:问答    file   process   netlogo

NetLogo - 不超过 5% 的人口具有一定的变量值(NetLogo - no more than 5 % of population has a certain value of variable)

问题 我怎样才能给每个刻度随机数量的海龟一个二进制变量(1 或 0)的变化,而在该变量中始终不超过 5% 的现有种群的值为 0? 换句话说,我希望变量值为 0 的海龟总数在每个刻度的海龟总数的 0% 或 5% 之间。 我怎样才能做到这一点? 我的代码是: to setup create-turtles 100 set var random 1 (only 5 % max shall have a 0 at start) end to start change end to change let %draw (random 1) if (%draw < 0) … ; than I do not how to continue end 回答1 n-of原语选择指定数量的代理。 您需要一些数字,因此您还需要随机生成该数字。 像这样的东西: to setup create-turtles 100 [ set var 1 ] ; give them all value 1 ask n-of random 6 turtles [ set var 0 ] ; randomly selects 0 to 5 turtles, assigns value 0 end

2021-10-24 19:55:48    分类:技术分享    netlogo

NETLOGO:在最后 3 个刻度中存储和使用变量的值(NETLOGO: Storing and using the value of a variable in the last 3 ticks)

问题 我正在尝试模拟股票市场。 我试图让代理商采取某种行为来预测价格。 所以基本上,每个代理都会预测股票的价格。 在设置过程中,随机预测价格分配给每个代理。 随着时间的推移,预测价格应该计算如下:最近3个周期的预测价格总和/3 我不知道如何处理这个问题。 我尝试使用最后一个命令,但它不起作用。 我正在考虑制作一种矢量,但我做不到。 任何线索? 这是我迄今为止尝试过的: ask turtles [ set pre-price (pre-price + last [pre-price] of turtles + last [last [pre-price] of turtles] of turtles) / 3 ] end 最后一个命令无法正常工作,因为我试图手动计算结果,但结果与此命令不一致。 关于如何去做的任何想法? 谢谢! 回答1 这实际上是一个非常有趣的错误。 问题是在你的海龟调用中,你假设所有海龟的“预价”都是静态的; 但是,对于每个代理,他们都在分配变量。 我建议引入另一个变量,它显式存储每个刻度的预价格(使用矩阵/嵌套列表)

2021-10-24 15:57:20    分类:技术分享    netlogo   agent-based-modeling

Netlogo:在评估给定变量的相似性后让海龟与另一个人互动(Netlogo: Making a turtle interact with anotherone after evaluating similarity in a given variable)

问题 我有几只海龟,每只海龟都有三个变量opinion1、opinion2和opinion3。 我需要他们: 确定这三个变量中哪个具有最高值在他们的网络中找到另一只乌龟,其值至少与 1 中找到的乌龟一样高。 更新它自己在 1. 中找到的值,相对于在 2 中找到的海龟的值。 我所做的并没有真正起作用,因为它只更新查看 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 回答1 我不知道使用诸如opinion1等独特变量的简单方法,但也许有一个意见列表而不是每个意见的单个变量会起作用。 例如,使用此设置: extensions [ nw ] turtles-own [ opinions

2021-10-24 15:27:35    分类:技术分享    netlogo   agent-based-modeling

netlogo,gis 扩展没有绘制并给出错误(netlogo, gis extension not drawing and giving an error)

问题 我正在尝试使用 netlogo 绘制一些 gis 文件。 我有 3 个形状文件(区域边界、建筑多边形和道路网络)。 当我使用 gis:draw 命令时,其中一个文件可以完美绘制(区域边界),但与其他 2 个形状文件一起绘制。 一个根本不绘制(道路网络),另一个给出以下错误“观察者运行 GIS 时,不支持的形状类型 15 错误:LOAD_DATASET” 最大文件大小为 1927KB 任何想法为什么?

2021-10-24 14:35:27    分类:技术分享    netlogo