使用 z = f(x, y) 形式的 B 样条方法来拟合 z = f(x)

2024-05-18

作为一个潜在的解决方案这个问题 https://stackoverflow.com/questions/76476327/how-to-avoid-creating-many-binary-switching-variables-in-gekko,怎么能强迫GEKKO https://gekko.readthedocs.io/en/latest/index.html's m.bspline以以下形式构建 2D B 样条的方法z = f(x, y)以以下形式构建 1D B 样条z = f(x)?

更具体地说,2D 方法采用以下参数:

  • x,y= 作为 z 预测变量的独立 Gekko 参数或变量
  • z= 因 Gekko 变量,z = f(x,y)
  • x_data= x 结的一维列表或数组,大小 (nx)
  • y_data= y 结的一维列表或数组,大小 (ny)
  • z_data= c 个系数的二维列表或矩阵,大小 (nx-kx-1)*(ny-ky-1)
  • kx= x 方向样条线的阶数,默认=3
  • ky= y 方向样​​条线的阶数,默认=3

本质上,我想欺骗该方法忽略y完全自变量。


尝试使用零(或其他标称)值y创建 B 样条线时。

from gekko import GEKKO
import numpy as np
m = GEKKO(remote=False)

xgrid = np.linspace(-1, 1, 50)
ygrid = np.linspace(-1e-5,1e-5,50)
xg,yg = np.meshgrid(xgrid,ygrid)

z_data = xg**2

x = m.Var(0.2,lb=-0.8,ub=0.8)
y = m.Param(0)
z = m.Var(0.1)

m.bspline(x,y,z,xgrid,ygrid,z_data)

m.Minimize(z)

m.options.SOLVER=3
m.solve(disp=False)

print(f'x={x.value[0]}')
print(f'y={y.value[0]}')

还有一个选项可以注入直接结和系数 https://apmonitor.com/wiki/index.php/Main/ObjectBspline如果它们已经适合其他功能。如果是这种情况,只需保留y作为一个参数,所以它是不可调整的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 z = f(x, y) 形式的 B 样条方法来拟合 z = f(x) 的相关文章