Repast:如何根据具体情况获取特定的代理集?

2023-11-29

我之前曾与 Netlogo 合作,有一些非常好的内置方法可以让我从总体中过滤和控制所需的代理。 (看:http://ccl.northwestern.edu/netlogo/docs/dictionary.html#agentsetgroup)。例如,我可以很容易地使用简单的代码在模拟中命令不同类别的人员代理,例如:

 ask peoples with [wealth_type = "rich"] [donate money...] 
 ask peoples with [wealth_type = "poor"] [get money from rich people...]

在 Repast 中,是否有专门为轻松控制代理集而构建的方法列表?


Repast Simphony Java 中的等效项是使用查询。查询将谓词应用于上下文中的每个代理,并返回在迭代器中计算结果为 true 的谓词。 PropertyEquals 查询将代理的财产评估为某个值(例如“wealth_type”和“rich”)。注意,这里的“属性”指的是Java属性,即getter类型的方法:

String getWealthType() {
     return wealthType;
}

其中“wealthType”是财产的名称。

例如,在 JZombies 示例模型中,我们可以查询能量等于 5 的人类。

Query<Object> query = new PropertyEquals<Object>(context, "energy", 5);
for (Object o : query.query()) {
    Human h = (Human)o;
    System.out.println(h.getEnergy());
}

query() 迭代器返回能量等于 5 的所有人类。

通过提供自己的谓词,您可以在等价测试中变得更复杂一些。例如,

PropertyEqualsPredicate<Integer, Integer> pep = (a, b) -> {
    return a * 2 == b;
};

Query<Object> query2 = new PropertyEquals<Object>(context, "energy", 8, pep);
for (Object o : query2.query()) {
    Human h = (Human)o;
    System.out.println(h.getEnergy());
}

在这里,我们检查 energy * 2 == 8 是否存在。谓词在第一个参数中传递了代理的属性值,在第二个参数中传递了要进行比较的值。鉴于谓词返回布尔值,您还可以测试不等式、大于等。

Simphony 有多种可用的查询。看,

https://repast.github.io/docs/api/repast_simphony/repast/simphony/query/package-summary.html https://repast.github.io/docs/RepastReference/RepastReference.html#_repast_model_design_fundamental_concepts

了解更多信息。

您还可以使用 Simphony 的 ReLogo 方言执行此操作:

ask (turtles()){
    if (wealth_type == "rich") {
        donateMoney()
    }
    if (wealth_type == "poor") {
        getMoneyFromRichPeople()
    }
}

如果你只想收集 richTurtles,你可以这样做(其中“it”是访问使用 findAll 迭代的单个海龟的默认方法):

richTurtles = turtles().findAll{
    it.wealth_type == "rich"
}

或者使用显式的闭包参数:

richTurtles = turtles().findAll{x->
    x.wealth_type == "rich"
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Repast:如何根据具体情况获取特定的代理集? 的相关文章

随机推荐

  • 在发生异常时将临时对象绑定到非常量引用

    我一直读到 在函数调用的情况下 临时变量只能与非常量引用参数绑定 CASE 1 例如 class Simple public int i Simple Simple f i f i 1 Simple int j i j int main S
  • 如何使用 AFNetworking AFHTTPRequestOperationManager 显示进度条

    当我从 url 下载 JSON 时 我试图显示进度栏 JSON 正在正确下载 但我不确定如何显示进度栏 我尝试过使用UIProgressView但它不显示在屏幕上 任何建议 将不胜感激 CGFloat width UIScreen main
  • XPage:IBM OneUI 与 Bootstrap

    在不久的将来 我必须更新一个更大的 XPage 应用程序 开发时间超过三年 现在运行在Domino Server 8 5 3 FP6 to Domino Server 9 在此应用程序中我使用IBM OneUIv2 1但我不确定是否应该进一
  • R:命名矩阵的不同方法

    我正在使用 R 编程语言 在R的 数据集 库中 有一个名为 eurodist 的数据集 其中包含每个城市组合之间的距离 library datasets 然后可以将该数据集转换为 矩阵 eurodist as matrix eurodist
  • React Context 是道具钻探的解药吗?

    如果 React Context API 旨在用于传递全局变量 那么我们为什么要使用它们来替代从父组件到子组件传递 props prop 钻取 由于大多数传递的 props 并不意味着在应用程序范围内 即全球范围内 可用 上下文中定义的变量
  • 如何在 Java 中将图像/文件上传到 Firebase 存储?

    我正在开发一个功能 需要使用 java 将图像 文件上传到 firebase 存储并将其公开为 API 我已经在 Angular 4 TypeScript 中实现了此功能 但现在我需要这个方法作为 Java Rest API 这样我的同伴也
  • Android 上的 Apache HttpClient 产生 CertPathValidatorException (IssuerName != subjectName)

    我正在开发一个Android应用程序来访问一些battle net https eu battle net 帐户数据 对于魔兽世界 我正在使用org apache http client HttpClient这样做 这是我正在使用的代码 p
  • 具有不同调度程序间隔的气流ExternalTask​​Sensor

    目前我有两个 DAG DAG A 和 DAG B 两者都运行schedule interval timedelta days 1 DAG A 有一个 Task1 通常需要 7 小时才能运行 而DAG B只需要3个小时 DAG B 有一个Ex
  • 在 Grails 3.x 中安装和使用 MongoDB

    我一直在关注曼宁Grails 的实际应用 但是他们关于配置数据源的部分对于 Grails 3 0 3 来说已经过时了 我的意图是从H2的默认数据源转换为MongoDB版本3 0 2 Google 搜索产生了相互矛盾的结果 许多答案通常是针对
  • 避免在 JavaScript 中嵌套 if [重复]

    这个问题在这里已经有答案了 我需要检查是否auth runtime status等于 200 但是auth runtime是undifend 有没有更优雅的方法在nodejs中做到这一点 if auth runtime if auth ru
  • AJAX 发布错误:拒绝设置不安全标头“连接”

    我有以下自定义 ajax 函数 可将数据发送回 PHP 文件 每次发布数据时 我都会收到以下两个错误 拒绝设置不安全标头 Content length 拒绝设置不安全标头 连接 Code function passposturl url1
  • 使用 Google Drive API v3 移动文件

    我正在尝试使用 Google Drive API v3 将文件从一个文件夹移动到另一个文件夹 我找到了文档如何做到这一点here 我使用了文档页面中的 NET 示例代码并创建了一个如下所示的方法 public ActionResult Mo
  • CodeIgniter活动记录调用多个存储过程的问题

    class Registration model extends CI Model function construct parent construct function check email availability email sq
  • 将日期字符串转换为 Int Swift

    我正在尝试转换字符串 let time 7 30 为整数 let hour Int 7 let minutes Int 30 我目前正在循环字符串 for char in time characters 但我不知道如何将 char 转换为
  • 在 JavaScript 中捕获 302 FOUND

    我使用 jQuery 向我的服务器发出 AJAX POST 请求 该请求可以返回状态为 302 的 HTTP 响应 然后 JavaScript 仅向此 URL 发送 GET 请求 而我想将用户重定向到此响应中的 URL 这可能吗 由于给出的
  • 为什么我的golang无锁队列总是卡在那里?

    这是我的代码 package main import sync atomic unsafe sync fmt time const MAX DATA SIZE 100 lock free queue type Queue struct he
  • 通过过滤度量值在 MDX 中定义计算成员

    我需要在 MDX 中定义一个计算成员 这是 SAS OLAP 但我很感谢使用不同 OLAP 实现的人员提供的答案 新度量的值应通过应用附加过滤条件根据现有度量计算得出 我想通过一个例子会更清楚 现有衡量标准 总流量 现有维度 方向 入 或
  • 如何使用java代码在google中进行搜索?

    如何使用java代码在google中进行搜索 我会告诉你使用他们的其中之一API 不幸的是 似乎不存在用于搜索的 因此 你必须使用HtmlUnit模拟浏览器并查看其结果 显然 您可以采取更困难的方法并自己执行一些 HTTP 查询 但谁会这样
  • 如何添加对WinForm项目的引用?

    我有几个不同解决方案的 winform 项目 如果我在同一个解决方案中有两个 winform 项目 当我添加引用时 我会进入 项目 选项卡 从那里我可以引用我的其他项目 但是 当 winform 项目位于不同的解决方案中时 如何引用它呢 当
  • Repast:如何根据具体情况获取特定的代理集?

    我之前曾与 Netlogo 合作 有一些非常好的内置方法可以让我从总体中过滤和控制所需的代理 看 http ccl northwestern edu netlogo docs dictionary html agentsetgroup 例如