作为一个潜在的解决方案这个问题 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(使用前将#替换为@)