微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 AnyLogic sims 进行函数拟合和数据拟合

如何解决使用 AnyLogic sims 进行函数拟合和数据拟合

在模拟中,我得到一些看起来像 arctan 或 tanh 函数的数据。

我想实现一个适合Java的函数获取这个函数的参数进行优化。对于其他函数,我使用了例如多项式和高斯函数函数拟合的 Apache 代码,但找不到切线的解决方案。

老实说,我不知道如何编写这样的函数 fit 所以也许有人可以帮助我解决这个问题,或者知道是否已经存在适合此类函数函数

解决方法

有一个名为“基于代理的 SIR 模型校准”的示例模型,它可以满足您的需求:校准模型参数,以便输出与给定函数匹配(在本示例中不相切,但易于调整)

,

简答

AnyLogic 没有任何内置的数据拟合功能,除了离散数据的简单插值(请参阅帮助中的表函数)。所以

(a) 如果您需要在模型中进行(例如,由某种模型状态驱动),您需要找到一个合适的 Java 库来完成您已经尝试过的(Apache Commons ),并从 AnyLogic 模型中调用它;

(b) 如果您可以在模型之外进行,请使用 Stat::Fit 之类的数据拟合工具(该工具作为 Simul8 等模拟工具的插件存在,但不适用于 AnyLogic)。

更长的答案

根据您的其他解释性评论,听起来这是一个正确解释您的上下文至关重要的问题,也许您根本不需要使用数据拟合(并且可能有更多的“AnyLogic-在这种情况下,以“中心”的方式接近它)。特别是围绕模拟和(数学)Gurobi 优化之间的预期交互; 请注意,AnyLogic 具有通过 OptQuest 内置的启发式优化,因此任何与 AnyLogic 的“优化”的正常讨论均指此

一方面,您似乎建议将函数拟合到模拟中的某些输入数据。 (你说的是有 Excel 输入,并想为其拟合一条曲线。)

另一方面,您似乎建议您需要一种方法,根据运行时模型状态在中间时间间隔进行优化。但是优化器决定什么以及它的结果如何影响模拟的持续执行?你说“所以这不是关于整个模型的优化,而是中间结果的优化。因为我没有找到解决方案”。您在寻找什么“解决方案”?这听起来就像一种方法,您在模拟中对时间段 N 的决策进行建模,这些决策基于使用时间段 N-1 的结果作为其输入的优化(因此优化有效地基于使用函数的简化仿真,因为仿真已经被认为是真实世界系统最准确的计算表示)。

所以也许(?)您是说您正在模拟/近似模拟作为其输入数据的函数(您碰巧认为切线函数适合)。在这种情况下,最初的建议 (a) 可能是唯一有意义的。尽管如此,当您在第一个时间段之后针对任何内容进行优化时,“输入”不再是原始模型输入;它们是模拟当前状态/结果的某种表示(因此不清楚这是否与 Excel 输入数据直接相关,因此我可能在错误的树上吠叫)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。