我正在尝试实现捕食者 - 猎物的模型.它是基于代理的模型.每隔几毫秒就是一个新举措.在场上有两种类型的生物:捕食者和猎物.每个人的行为由以下规则给出:
猎物:
铁血战士:
我有选择猎物移动的问题.

例如,我在单元格5和9中有捕获.它们中的每一个都可以移动到单元格6.如何解决此冲突?谢谢
algorithm simulation collision-detection agent agent-based-modeling
是否可以在Modelica中模拟多代理系统?我说的是用Java编写的MASON系统.这将是多么容易或困难?据我所知,Modelica不是一种典型的编程语言,所以它会特别有用还是modelica语言的基本设计会造成任何阻碍?更重要的是,我们如何模拟基于代理的建模中常见的"消息"系统?
对于作业,我必须制作一个多代理系统(非常开放,但是一个简短的项目),像捕食者/猎物或交通模拟?它将写在Jason/Agent中.我对实际实施的内容(可行的是什么?)感到茫然,因为它可以是任何东西,越奇怪越好!
非常基本的问题,我不明白为什么我的 foreach 代码不执行任何操作(没有错误消息,但没有任何效果)。所以我的海龟有一个 3 维变量(意图),预设为[0 0 0]。我的最后一个问题比这复杂得多,但简单来说,我现在试图将该向量的每个维度更改为一,即[1 1 1]。
我创建了一个名为的过程change-intention,用于foreach产生此结果,但没有效果:
to change-intention
ask turtles [
(foreach intention [ x -> set x 1])
]
end
Run Code Online (Sandbox Code Playgroud)
我已经在观察者和海龟命令行以及单个海龟上尝试过此操作,但没有结果也没有错误。
谢谢!
我有兴趣在Python 中构建基于代理的经济系统模型.典型的模型可能有数千个代理商(即公司,消费者等).
典型的公司代理类可能类似于:
class Firm(object):
def __init__(capital, labor, productivity):
self.capital = capital
self.labor = labor
self.productivity = productivity
Run Code Online (Sandbox Code Playgroud)
在我的大多数模型中,属性不是动态创建的,因此我可以使用__slots__以下方法编写类:
class Firm(object):
__slots__ = ('capital', 'labor', 'productivity')
def __init__(capital, labor, productivity):
self.capital = capital
self.labor = labor
self.productivity = productivity
Run Code Online (Sandbox Code Playgroud)
然而,它似乎是使用__slots__一般不提倡.我想知道这是否是合法/可取的用例__slots__.
大家都说Jave是用于大型系统和工程项目的语言,它的运行速度比大多数其他语言都要快得多。我只是将其与另一种基于Agent的建模语言-Netlogo进行了比较,发现Netlog在经典的狼羊模拟模型中比基于Jave的Repast快四倍。两种模型都使用相同的参数进行仿真,并实时运行5秒钟。Netlogo可以模拟8000多个时间步长,而Jave Repast只能执行2600多个时间步长。为什么?
我的模型中有 8 个不同的品种。其中一些具有相似的特征。不管怎样,假设我的品种是
breed [ humans human ]
breed [ dogs dog ]
breed [ cats cat ]
breed [ horses horse ]
breed [ elephants elephant ]
breed [ mouses mouse ]
breed [ monkeys monkey ]
breed [ birds bird ]
Run Code Online (Sandbox Code Playgroud)
我的问题是如何询问除了鸟类之外的所有人。我不想单独询问每个品种。我知道当你想问每一个品种时,你都会选择ask turtles。
我想为每只海龟分配一个随机布尔变量,但我没有看到一个可以模拟伯努利分布绘制的函数。
这很接近,但很尴尬:
ifelse random-in-range 0 1 < .5 [set expensive? false]
[ set expensive? true ]
Run Code Online (Sandbox Code Playgroud)
有人知道更好的方法吗?
我正在创建一个(简单的)基于代理的模型来学习 Scala 和函数式编程。
我已经在 Python 中创建了它,所以我的想法是按照已经存在的想法对其进行编码,但是我在开始时遇到了一个问题:
我有一个类描述模型中的一个代理,另一个类描述它所生活的社会。社会由 N 个代理组成,其中 N 是一个整数。在 Python 中,我会做一个列表理解来存储类的所有实例,但我如何在 Scala 中做到这一点?有没有比使用以下代码更好的方法:
import agent.Agent
class Society([omitted-for-brevity]){
val tmp_agents = List()
for(i <- 1 to puntos){
val tmp_agent = new Agent(pos_X = 0, name="Agent "+i)
tmp_agents :+ tmp_agent
}
Run Code Online (Sandbox Code Playgroud)
val tmp_agentfor 循环中的值不应该是 var 吗?或者,如果 Agent 类有var参数作为输入,它是否有效?tmp_agents如果只有其中的对象要更改“内部”值,该列表是否应该是 val?附加到 val 可以吗?出于逻辑测试目的,我使用了触发“source.inject()”的可点击按钮。代理的上述逻辑取决于代理特征。因此,最好在测试模型逻辑时控制它们在启动期间获得的特征。在源块的注入()函数上搜索 AnyLogic 文档并没有显示任何方法来强制要求初始特征。
我试过使用“add_patients();” 这允许创建代理,并且我可以根据需要在括号内指定特征。但是,如果我使用此功能,代理将不会进入状态图。
netlogo ×4
agent ×3
simulation ×2
algorithm ×1
anylogic ×1
mason-abm ×1
modelica ×1
modeling ×1
multi-agent ×1
python ×1
random ×1
scala ×1
statechart ×1