为了账号安全,请及时绑定邮箱和手机立即绑定

使用通过移动水平估计修改的参数的矩阵运算

使用通过移动水平估计修改的参数的矩阵运算

紫衣仙女 2023-06-20 15:43:29
我最近开始尝试使用 GEKKO 进行移动地平线估计。我指定的操纵变量用于我的模型中的热平衡方程,我在模型中遇到一些矩阵运算问题。示例代码:from gekko import GEKKOimport numpy as np#creating a sample array of input valuesnt = 51u_meas = np.zeros(nt)u_meas[3:10] = 1.0u_meas[10:20] = 2.0u_meas[20:40] = 0.5u_meas[40:] = 3.0p = GEKKO(remote=False)p.time = np.linspace(0,10,nt)n = 1 #process model order#designating u as my input, and that I'm going to be using these measurements to estimate my parameters with MHEp.u = p.MV(value=u_meas)p.u.FSTATUS=1#parameters I'm looking to modulatep.K = p.FV(value=1, lb = 1, ub = 3) #gainp.tau = p.FV(value=5, lb = 1, ub = 10) #time constantp.x = [p.Intermediate(p.u)]#constants within the model that do not changeX_O2 = 0.5X_SiO2 = 0.25X_N2 = 0.1m_feed = 100#creating an array with my feed separated into components. This creates a 1D array with the individual feed streams of my components. mdot_F_i = (np.tile(m_feed,3)*np.array([X_O2, X_SiO2, X_N2])#at this point, I want to add my MV values to the end of my component feed array for later heat and mass balance equations. Normally, in my previous model without MHE, I would putmdot_c_i = np.concatenate(mdot_F_i, x, (other MV variables after))但是,现在 u 是 GEKKO 中指定的 MV,而不是设定值,我在 mdot_c_i 行收到一个错误,指出索引 0 处的数组有 1 维,而索引 1 处的数组有 2 维。我猜我必须将 mdot_c_i 指定为 Gekko 中的中间变量。我尝试了几种不同的变体,交替指定 mdot_c_i 作为中间值并尝试仅使用 MV 的值;但是,我不断收到该错误。有没有人遇到类似的问题?
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

您可以使用np.append()而不是来解决此问题np.concatenate()。尝试类似的东西:


mdot_c_i = np.append(mdot_F_i, p.u)

如果您想尝试,这是一个最小且完整的示例。


import numpy as np

from gekko import GEKKO

m = GEKKO(remote=False)

x = m.Array(m.Var,3,lb=-10,ub=10)

y = m.Var(5,lb=-5,ub=5)

z = np.append(x,y)

m.Minimize(np.dot([1,1,-1,1],z))

m.solve(disp=False)

print([zi.value[0] for zi in z])

# solution: [-10.0, -10.0, 10.0, -5.0]

Gekko 变量需要存储为对象,而不是数值。该错误可能是因为np.concatenate()函数试图访问 Gekko 操纵变量数据的长度p.u.value以连接这些值而不是连接p.u为对象。


查看完整回答
反对 回复 2023-06-20
  • 1 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信