Netlogo - 选择距特殊代理给定距离的所有海龟
Netlogo - selecting all turtles at a given distance from a special agent
我必须 select 并从固定点计算最近的乌龟,但是我希望距离可变,因为我有一个滑块并且我想 select最近的乌龟
到该点的给定距离。
我尝试了很多解决方案,也尝试了 in-radius
函数,但它没有产生所需的输出。
谁能帮我?提前致谢。
Enrico,我没有足够的声誉点数来发表评论,所以我会 post 这个作为答案。您的问题是两周前提出的,您可能不再需要答案。
如果下面的讨论正确地描述了您的问题,以及其中涉及的通用逻辑,您应该有足够的能力编写基本的 NetLogo 模型,或者编写基本的控制结构并专注于您无法弄清楚 NetLogo 语法来实现所需功能的特定点。或者您可能已经有了代码,只是我们没有在这里看到它。
到那时,优秀的 Whosebug 成员应该能够帮助您在共享上下文中回答特定问题,并了解您正在尝试做什么、您正在使用什么代码以及当您尝试时会发生什么运行 模型。
以下是否正确重述了您的问题?
情况
情况是剧院的舞台,有多排座位。人们一次进来一个,并且总是坐在离舞台最近的一排,那里至少还有一个空位。当该行已满时,座位将从离舞台更远的下一排开始。当所有行都填满时,模拟停止。在有多个空座位的一排中,选择的座位与其他就座者(可能包括其他排中的人)的集体距离最大化。
问题 -- 剧院是长方形的,座位排成直线,还是圆形的,舞台周围有同心圆排的座位?
设计注意事项
集体距离度量计算可以放入单独的例程中,不会影响基本 NetLogo 模型设置的其余部分。
一些可能的指标可能是:
1)最大化与同一排中最近就座者的距离
2) 最大化到整个剧院中最近就座者的距离
3)最大化与坐在同一排的每个人的距离总和
4)最大化整个剧院中每个人的距离总和
5) 最大化到每个人的距离平方和的平方根
* 在抽雪茄的剧院里。
无论选择何种指标,逻辑上我们都会做同样的事情:
- 选择初始座位安排和可能的初始入座人数
- 选择接下来要处理的行
循环
选择下一步要处理的行,如果所有行都已满则退出
对于该行中的每个空座位
- 找到与计算相关的已满席位的代理集
- (比如,与空位在同一排的已满座位)
- 对于该代理集,计算集体距离度量
- 然后选择产生最大collective-distance-metric的空座位
- 坐在那里
- 根据需要更新全局统计数据
- 根据需要显示统计数据
循环结束
NetLogo 实现
尽你所能,然后带着它回来。
您可能想要将人和座位设为两种不同的海龟。您可以布置 "setup" 中的所有座位,然后边走边加人。
座位可以拥有变量"row"和"occupied?" 使用"layout-circle"函数可以很容易地布置海龟的圆环。也许将未占用的座位设为 2 号的绿色圆圈,并在占用时将其更改为红色。
我必须 select 并从固定点计算最近的乌龟,但是我希望距离可变,因为我有一个滑块并且我想 select最近的乌龟
到该点的给定距离。
我尝试了很多解决方案,也尝试了 in-radius
函数,但它没有产生所需的输出。
谁能帮我?提前致谢。
Enrico,我没有足够的声誉点数来发表评论,所以我会 post 这个作为答案。您的问题是两周前提出的,您可能不再需要答案。
如果下面的讨论正确地描述了您的问题,以及其中涉及的通用逻辑,您应该有足够的能力编写基本的 NetLogo 模型,或者编写基本的控制结构并专注于您无法弄清楚 NetLogo 语法来实现所需功能的特定点。或者您可能已经有了代码,只是我们没有在这里看到它。
到那时,优秀的 Whosebug 成员应该能够帮助您在共享上下文中回答特定问题,并了解您正在尝试做什么、您正在使用什么代码以及当您尝试时会发生什么运行 模型。
以下是否正确重述了您的问题?
情况
情况是剧院的舞台,有多排座位。人们一次进来一个,并且总是坐在离舞台最近的一排,那里至少还有一个空位。当该行已满时,座位将从离舞台更远的下一排开始。当所有行都填满时,模拟停止。在有多个空座位的一排中,选择的座位与其他就座者(可能包括其他排中的人)的集体距离最大化。
问题 -- 剧院是长方形的,座位排成直线,还是圆形的,舞台周围有同心圆排的座位?
设计注意事项
集体距离度量计算可以放入单独的例程中,不会影响基本 NetLogo 模型设置的其余部分。
一些可能的指标可能是: 1)最大化与同一排中最近就座者的距离 2) 最大化到整个剧院中最近就座者的距离 3)最大化与坐在同一排的每个人的距离总和 4)最大化整个剧院中每个人的距离总和 5) 最大化到每个人的距离平方和的平方根 * 在抽雪茄的剧院里。
无论选择何种指标,逻辑上我们都会做同样的事情:
- 选择初始座位安排和可能的初始入座人数
- 选择接下来要处理的行
循环
选择下一步要处理的行,如果所有行都已满则退出
对于该行中的每个空座位
- 找到与计算相关的已满席位的代理集
- (比如,与空位在同一排的已满座位)
- 对于该代理集,计算集体距离度量
- 然后选择产生最大collective-distance-metric的空座位
- 坐在那里
- 根据需要更新全局统计数据
- 根据需要显示统计数据
循环结束
NetLogo 实现
尽你所能,然后带着它回来。
您可能想要将人和座位设为两种不同的海龟。您可以布置 "setup" 中的所有座位,然后边走边加人。
座位可以拥有变量"row"和"occupied?" 使用"layout-circle"函数可以很容易地布置海龟的圆环。也许将未占用的座位设为 2 号的绿色圆圈,并在占用时将其更改为红色。