问题标签 [agent-based-modeling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2353 浏览

java - Java中基于代理的建模 - 动画问题

我正在用 Java 创建一个基于代理的建模程序

我正在尝试确定动画代理的最佳方式。我见过几个使用网格的例子,允许每个代理一次只占用一个单元格。

我正在寻找更流畅的东西,代理可以在各个方向“流动”穿过窗口。

有什么建议么?

谢谢!

编辑:

环境将是简单的二维的。将有从一个代理到数百个代理的任何地方。

我想将代理表示为带有某种方向指示的小圆圈(细节无关紧要;关键是代理需要能够旋转)。

第二次编辑:

我目前正在阅读本教程:http ://www.giosoft.net/Development/Java-Asteroids-Tutorial.html

看起来它会帮助我完成我想要完成的事情。

0 投票
2 回答
601 浏览

java - 基于空间代理的建模的数据结构

有哪些好的数据结构可以在二维空间模拟中跟踪代理?

我看过一些对四叉树(我理解)和 kd-trees(我不太理解)的引用。

我正在寻找一个代理可以有效地说“我知道我的位置,并且我想知道哪些代理在我附近(在我自己的某个半径内)”的东西。

示例(伪代码很好)将不胜感激。

我在 Java 中工作。

0 投票
3 回答
502 浏览

java - 就餐 simphony 中的 log4j 错误消息 - 批处理运行

在批量运行中启动我的 Repast Simphony 模型时,我收到以下错误消息:

关于 log4j http://repast.sourceforge.net/docs/tutorial/SIM/Frequently%20Asked%20Questions.html#FrequentlyAskedQuestions-log4j的答案根本没有帮助,因为我只有在开始批量运行时才遇到问题。正常启动模型时,一切都很好。而且我也无法在 stackoverflow 中调整任何其他 log4j 问题/答案,因为 Repast Simphony 中的问题似乎相当具体。

以前有人遇到过这个问题并解决了吗?或者也许是一个想法,这个 RLFA 是什么?

注意:在第一步中,模型完全初始化时会发生错误。

感谢您的每一个帮助,

安迪


编辑:在velocity.log中我发现了这个日志,它说VM_global_library.vm丢失了——但这有帮助吗?

0 投票
1 回答
83 浏览

evolutionary-algorithm - 如何通过代理技术找到进化计算的搜索技术?

我正在尝试通过代理技术寻找进化计算的新搜索技术。我对此一无所知,并想实施它。有人熟悉这个吗?谁能给我推荐一些研究论文?我在谷歌上搜索。有点我找不到任何有趣的论文。请帮帮我...

0 投票
2 回答
366 浏览

modeling - 是否可以使用 Netlogo 等基于代理的建模工具进行网络模拟(例如 TCP)

我打算使用 Netlogo 进行建模。但是,我还没有看到任何关于使用 Netlogo 进行网络模拟的可靠参考。我想检查简单的网络参数,如吞吐量以及代理集(在这种情况下为网络节点)的变化如何改变一些网络参数。这是否可能仅在 Netlogo 中实现?如果没有,是否有任何解决方法?

0 投票
5 回答
2017 浏览

algorithm - 捕食者-猎物模拟

我正在尝试实现捕食者 - 猎物模型。它是基于代理的模型。每隔几毫秒就是一个新动作。在球场上有两种类型的生物:捕食者和猎物。他们每个人的行为由以下规则给出:

猎物:

  1. 刚搬到一个无人居住的牢房
  2. 每走几步就会为他的旧牢房创造后代
  3. 预期寿命受移动次数的限制

捕食者:

  1. 捕食者带着猎物移动到牢房。如果没有这样的单元格,则在任何空闲的相邻单元格中
  2. 相同的
  3. 相同的

我对猎物移动的选择有疑问。 猎物

例如,我在 5 号和 9 号牢房有猎物。它们每个都可以移动到 6 号牢房。我该如何解决这个冲突?谢谢

0 投票
2 回答
1139 浏览

python - Python中如何通过类字典直接访问类实例

我需要一种通过 ID 号直接访问类实例的方法。

正如我试图在这里解释的那样,我正在导入一个 .csv 文件,并且我想为 .csv 文件中的每一行创建我的类 Person() 的实例,另外我希望能够使用 as 直接访问这些实例key 一个唯一标识符,已经存在于 .csv 文件中。

感谢 user433831 的帮助,到目前为止我所做的是:

其中 person 只是我将类 Person() 定义为的模块:

现在我有一个我的 person 实例的列表,即persons,这已经很整洁了。但是现在我需要使用该networkx模块在这些人之间创建一个网络,并且我肯定需要一种直接访问每个人的方法(目前我的实例没有任何名称)。

例如,每个人都有一个名为“father_id”的属性,这是父亲的唯一 ID。当前人口中没有父亲在世的人的“father_id”等于“-1”。

现在,要将每个人与他/她的父亲联系起来,我会这样做:

我的问题是我无法直接访问这个“person_with_id_equal_to_father_id”。请记住,我需要多次执行此直接访问,因此我需要一种非常有效的方法,而不是在列表中进行某种形式的搜索(同时考虑到我的人口中有大约 150000 人) .

在我的类 Person() 中实现类似字典功能的东西会很棒,每个实例的键都是唯一标识符。这个唯一标识符已经存在于我的 csv 文件中,因此我已经将它作为每个人的属性。

感谢您的任何帮助,一如既往地非常感谢。另外请记住我是一个完全的python新手(你可能会说......;))

0 投票
1 回答
160 浏览

python - 创建满足其属性值某些条件的类实例列表

如何从类实例的完整列表开始创建满足其属性值某些条件的类实例的子列表?

例如,我有一个我的类 Person() 的实例列表。这些人有很多属性,其中 ID 是唯一标识符,HH_ID 是他们居住的家庭的标识符。我想连接生活在同一家庭中的所有人,因此具有相同的 HH_ID。通过“连接”,我的意思是在所有家庭成员之间使用networkx. 为了做到这一点,我需要识别这些人并将它们放在“子列表”中,以便通过某种算法进行处理,将它们连接在一起。我怎样才能做到这一点?

我还需要一个通用工具来为其他更复杂的目的执行此操作(例如,随机连接 N 个 15 到 20 岁的人),但在家庭成员最简单的情况下,我可以使用我的列表按 ID 排序的事实和HH_ID,因此我有类似的东西:

其中第一个家庭由人 [0,1,2] 组成,第二个家庭由人 [3,4] 组成,依此类推......

对于这个家庭问题,我尝试使用pairwise迭代器配方(itertools 文档以这种方式:

但显然这不起作用,因为我的迭代器i下降,直到hh_id两个相邻的人不匹配,然后从那里重新开始下一个人。例如,对于上面示例中的人员,当涉及到循环中的人员 1 时,我的迭代器将开始比较人员 2 和人员 3 for,而我需要某种方式直接跳转到 for 循环中的人员 3 并让我的迭代器启动比较人 3 和 4。我希望这个例子能澄清一点,即使它看起来不是很清楚......

更一般地说,我需要一种方法来创建满足其属性值某些条件的人的子列表,这可能是一种有效的方法(我有大约 150000 人)

0 投票
3 回答
164 浏览

python - 如何创建一个动态更新的类实例列表,满足特定条件?(Python)

我想创建一个类实例列表,它会根据实例属性的特定条件自动更新自身。

例如,我有一个我的自定义类 Person() 的对象列表,并且我希望能够生成一个始终包含所有已婚人士的列表,即所有属性“MAR_STATUS”等于“MARRIED”的人。

这在 Python 中可能吗?我使用了一个 C++ 预编译器来进行微模拟,它有一个非常方便的内置函数,叫做“actor_set”,它就是这样做的。但我不知道它是如何在 C++ 中实现的。

谢谢你。

0 投票
3 回答
610 浏览

oop - 存储来自基于代理的 Matlab 模拟的数据快照

我正在 MATLAB 中编写基于代理的模拟,其中代理轮流玩游戏,互相卖东西。几乎所有东西(代理、项目、位置、合同......)都使用 MATLAB 的 OOP 功能作为对象实现。

每一轮我都想拍下我的模拟快照并将其存储在磁盘上,以便以后分析模拟是如何发展的。现在我的问题是最好的方法是什么?

我目前的想法是主循环调用每个代理并要求它报告其状态(例如,您拥有多少财产,您的合同义务是什么,账户余额......而如果有必要,代理会调用对象他们拥有并询问他们的状态,并将该信息包含在他们的报告中)。我的想法是让代理的报告成为一个字符串,可能是 XML 格式。然后将所有报告与时间戳一起添加,并将其添加到文本文件的末尾

但由于我从未做过这样的事情,我不确定这是否是一个好方法。除了让数据采用以后可以轻松分析的格式之外,我主要关心的是创建快照并将其写入磁盘的速度。由于我的模拟非常大,我希望每一轮都存储大量数据。

替代的想法是:

  1. 将所有内容存储在数据库中。但我认为与文本文件相比,数据库访问速度相当慢。而且由于每个代理拥有的对象数量可能会发生变化,因此我也不太确定数据库结构。
  2. 使用.mat 文件。但我不知道它们是否易于扩展以及它们将如何处理不断变化的结构(即每轮拥有不同物品的代理)

感谢您的任何意见和建议!