【发布时间】:2021-04-30 13:22:05
【问题描述】:
在模拟中,我得到一些看起来像 arctan 或 tanh 函数的数据。
我想实现一个适合 Java 的函数,以获取该函数的参数以进行优化。对于其他函数,我使用了例如多项式和高斯函数的函数拟合的 Apache 代码,但找不到切线的解决方案。
说实话,我不知道如何编写这样的函数 fit,所以也许有人可以帮助我解决这个问题,或者知道是否已经存在适合此类函数的函数。
【问题讨论】:
-
你的问题有点不清楚。如果,而不是 Ben 在他的回答中假设的那样,您正在谈论更普遍地将函数拟合到数据(例如,在您的模型中用作“硬编码”函数 --- 预先拟合到外部数据 --- 生成某些东西),这是您在模拟之外使用 Stat::Fit 等工具所做的事情。 (我认为其他一些模拟工具,比如 Simul8,有 Stat::Fit 作为插件,但 AnyLogic 没有。)
-
最后,我正在将 Excel 文件中的值(x 和 y 值)读入 Anylogic。由于我在模拟过程中需要一个优化函数,我想从这个数据中确定一个函数或一个正切函数的参数并输出它。由于这应该发生在 Anyogic 中,因此我正在寻找解决方案。如前所述,我使用了来自 Apache(通用数学曲线拟合器)的代码,其中包含高斯函数和多项式函数。不过函数还是太软了,所以想试试切线函数。
-
正如我所说,AnyLogic 没有内置的通用数据拟合功能(除了一些用于通用插值的功能 --- 请参阅帮助中的表函数),根据您的描述,这是'本质上不是应该在模拟中完成的事情。 (你会事先使用 Stat::Fit 之类的东西来做。)同样为切线函数确定 parameters 是有意义的,但是“确定一个 function [.. .] 对于正切函数”是什么意思?
-
您可能还想解释“我需要一个优化函数”是什么意思? AnyLogic(启发式)优化中没有任何内在的“需要函数”,所以我假设你只是在你的 to-have-its-parameters-optimized 模拟设计中说一些东西意味着你想要使用数据拟合函数(而不是由于某些无法解释的原因,而不是离散的经验数据值)。
-
再进一步,也许:我的整体模型是运行 33 年后。但是优化本身应该在一年中的每个月运行。因此,这不是对整个模型的优化,而是对中间结果的优化。由于我没有找到解决方案,因此我的想法是实现一个曲线拟合器,将我的直方图数据输出为函数,然后可以将其用作优化中的条件。但是要获得数据的函数,我需要这个曲线拟合器来给我函数的参数。
标签: java optimization anylogic function-fitting