AnyLogic:前瞻性模拟
Posted
技术标签:
【中文标题】AnyLogic:前瞻性模拟【英文标题】:AnyLogic: Look ahead simulation 【发布时间】:2017-04-22 05:55:15 【问题描述】:是否可以在 AnyLogic 中执行前瞻模拟? 具体来说:
-
模拟到时间 T.
使用一个变量的 2 个值,并行模拟这两个值直到 T+t。
评估 T+t 时的系统状态,选择能带来更好性能的变量值。
使用选定的变量值从 T 继续模拟。
这是我试图实现的基本功能。变量值可以取自决策树,不会影响实现。
如果有人做过类似的事情,请告诉我。
【问题讨论】:
【参考方案1】:是的,可以使用一些 Java 代码。你可以:
-
暂停父实验,在时间 T 保存快照;
从父实验创建两个新实验;
在两个新实验中加载快照;
继续执行两个实验直到时间 T + t;
向父实验发送通知,比较结果,分配最佳值并继续模拟。
有些点可以通过 UI 控件或代码手动完成,有些——仅通过代码。
【讨论】:
我可以找到暂停、保存和加载快照的方法。能否请您指导我有关 runTillTime() 方法和两个实验之间的通信? “使用一个变量的 2 个值,同时模拟两个值直到 T+t”也意味着您需要担心设计模型,以便对这个中期运行的更改是“干净的” (可能使用 AnyLogic 参数的更改功能来“链接”更改该变量的任何影响)。根据您的模型功能,这可能没问题。 @SwapRenushe,运行到时间 T+t:getEngine().runFast(time() + constant);
。实验通信:由于您是从另一个实验创建实验实例,因此只需将对新实验的引用保存在父实验中即可。您可以通过以下方式获取其***代理及其所有成员:((Main)getEngine().getRoot())
以上是关于AnyLogic:前瞻性模拟的主要内容,如果未能解决你的问题,请参考以下文章