3

我想使用 numpy 数组乘法创建方程,即我想将所有变量保留在一个数组中,并将其系数保留在其他数组中,并将两者相乘以产生一个表达式,以便我可以使用 GEKKO 的 m.Equation() 方法。我尝试了上述代码但失败了,请让我知道如何实现我的目标。

“它失败了”我的意思是它只是给出了一个错误,并没有让我使用 x*y==1 作为 GEKKO 中可用的 m.Equation() 方法中的方程。我的目标是我想将变量保留在一个数组中,并将它们的系数保留在另一个数组中,然后将它们相乘以获得数学方程,用作 m.Equation() 方法的输入。

import numpy as np
from gekko import GEKKO


X = np.array([x,y,z])
y = np.array([4,5,6])
m = GEKKO(remote=False)
m.Equation(x*y==1)
# I wanted to get a result like 4x+5y+6z=1

我得到的错误如下

    Traceback (most recent call last):
  File "C:\Users\kk\AppData\Local\Programs\Python\Python37\MY WORK FILES\numpy practise.py", line 5, in <module>
    X = np.array([x,y,z])
NameError: name 'x' is not defined
4

1 回答 1

4

您需要定义变量并将系数转换为 Gekko 对象。您可以使用数组来制作变量和系数的参数:

from gekko import GEKKO

m = GEKKO(remote=False)
X = m.Array(m.Var, 3)
y = m.Param([4, 5, 6])
eq = m.Equation(X.dot(y) == 1)
print(eq.value)

输出:

((((v1)*(4))+((v2)*(5)))+((v3)*(6)))=1
于 2018-11-09T14:06:58.107 回答