首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >降低基于Agent模型的复杂性

降低基于Agent模型的复杂性
EN

Stack Overflow用户
提问于 2015-03-20 13:07:02
回答 1查看 129关注 0票数 0

我正在开发一个基于代理的模型,模拟细胞体外生长.

我正在使用MASON库(Java),但我想问题是可以适用于不同的实现。

本质上,我的代理程序是在创建后每12 +/- 2个时间步骤进行划分。每次一个代理分开,一个新的一个被添加到仿真中。

这导致了问题复杂性的快速增长,这使得模拟速度特别慢。

为了解决这个问题,我决定代理应该“死”后,从创建的时间步骤。

然而,梅森的日程是建立在一个BinaryHeap之上的,一旦添加了这些对象(代理),它就不允许删除对象(代理)。我的解决方案是设置一个布尔标志:

代码语言:javascript
复制
dead = false;

在t个时间步骤之后,它被设置为true。

所以

代码语言:javascript
复制
if(t == 50)
    dead = true;

然后开始我的step方法,也就是每次代理被分步时调用的方法,如下所示:

代码语言:javascript
复制
if(dead)
    return;

但是,我理解,简单地访问时间表中的对象就足以减缓模拟的速度。

有人对我如何解除代理或阻止它被调用有任何建议吗?

谢谢,达里奥

EN

回答 1

Stack Overflow用户

发布于 2015-03-20 13:13:47

取自梅森文件第94页

如果您的代理计划重复,则scheduleRepeating(.)方法返回一个sim.engine.Stoppable对象。以防止代理人有步骤(.)方法再次调用,只需在停止点上调用stop()即可。这也将使代理能够被垃圾收集。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29167225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档