任何逻辑查询如何在插值后 select 来自数据库 [=11g=] 的值

Anylogic query How to select values from a databse table after interpolation

我有一个数据库 table,在 Anylogic 中有 2 列。在将我的输入与第 1 列的值进行比较并进行线性插值后,我想知道查询 dsl 代码或 sql 代码 select 从第 2 列的 table 中获取一个值。 我在 Anylogic 中的代码提供了一个值 x2 where (x1 < x2 < x3) 而 x2 不在 table 中。我想从 table 中 select 一个基于 x2 where (y1 < y2 < y3) 的值 y2 并且 y2 不在 table 中。所以我想让软件在 table 中查找后 return 值 y2 如下所示:

y2= [(x2-x1)*(y3-y1)/(x3-x1)]+y1

x1  |  y1

x3  |  y2

x4  |  y3

x5  |  y4

示例:如果我的代码 returns x=0.15 我希望程序从 table 值 y 中插入并 return 其中:

y =[[0.15-0.1]*(0.0072-0.0127)/(0.2-0.1)]+0.0127= 0.00995

---x  |   y

0.1  | 0.0127

0.2  | 0.0072

0.3  | 0.0039

0.4  | 0.0020

0.5  | 0.0010

0.3  | 0

谢谢

您可以简单地创建一个 table 函数并将其配置为从数据库加载数据,而不是从内置数据库 table 中选择值并对其进行线性插值。

由于默认选择线性插值作为函数插值类型,您只需调用tableFunction(0.15)即可得到y = 0.00995 for x = 0.15.