2000-2006 年间,我在荷兰公司 Tryllian 工作,该公司专门研究多智能体系统。该公司现在不活跃。
Tryllian 的第一个想法是构建一个基于代理的搜索设备(称为 Gossip)。它有一个图形客户端应用程序,带有许多颜色鲜艳的圆形代理和可爱的眼睛。每个特工的背部都有一个空隙,可以拖出一个“背包”。背包可以包含一个搜索查询和许多搜索结果(URL、文档、图像等)。要进行搜索,用户必须将一个背着准备好的背包的特工拖到“互联网门户”上,这是一种科幻电影中星空背景的登陆舱门。然后,代理将被“传送”到 Tryllian 服务器,在那里它会被服务器上的“管家代理”引导到“主题室”。在房间里,它可以与其他代理交互并交换搜索兴趣和结果。在这里。

后来 Tryllian 决定开发一个代理开发工具包 (ADK),使用它可以更轻松地创建像 Gossip 这样的代理应用程序。它为编程代理行为提供了一个基于任务的模型。您的代理会收到很多事件(agentStarted 等),并且在事件处理程序中可以添加任务,这些任务反过来也会收到事件(taskStarted 等),并且可以安排更复杂的行为(可能以子任务的形式)。API 做得非常好。
在我看来,ADK 的关键特性是它提供的代码移动性。代理不仅可以在其本地 ARE(代理运行时环境)上的虚拟房间之间移动,还可以移动到另一台服务器。这涉及到类序列化和多类加载器解决方案,这在当时是非常具有革命性的(我们喜欢这样想)。此功能支持将代码带到数据中的设计,而不必到处传递数据(我所知道的大多数企业系统的主要功能仍然是传递数据)。例如,Tryllian 开发了一个远程审计应用程序,它允许审计公司的分析人员将审计规则编码到代理中,并将其安全地发送到客户的服务器以监控流程。
我会在这个答案开始变得很长之前停下来(-;
这可能比你现在想要实现的要多一点。如果您可以更具体地提出您的问题,我可以就如何设置您的多代理系统提供一些建议(如何为代理之间的消息传递建模也是一个非常有趣的话题 - 哦,对不起,我说过我会停下来。 ..)。
您的多代理系统的目的是什么?代理会做什么?它会在一台机器上运行,还是分布式?代理的行为/规则会是硬编码的、可配置的还是完全动态的?
最后一个建议:考虑对简单代理进行建模的合理起点是通常与机器人相关的感知计划行为。
编辑:回复您的评论
Tryllian 代理模型更侧重于消息传递,而不是与模拟物理环境的紧密交互。查看您发布的示例站点,性能似乎非常重要,尤其是当代理数量增加时。您不会利用 Tryllian 代理的优势:代码移动性、基于任务的编程、通用性,因此我认为它不是此类模拟的最佳工具。
您提到了“网格”与“平滑”方法。我认为在计算机模拟中,您总是需要在某种离散的坐标系统中表示代理的大小、坐标、速度和方向。因此总会有某种网格,但您可以使“单元格”更小以使其看起来更平滑。
也许在游戏领域可以找到一些有用的资源?(精灵,碰撞检测等)
祝好运并玩得开心点!