繁体   English   中英

请让我知道如何将 GEKKO 参数放入变量中

[英]pleas let me know how to put GEKKO Parameter in Variable

我想将 GEKKO 参数 'N' 放在变量 'Y' 中,但出现如下错误。 我的意思是当优化进行时,参数“N”应该不断变化。 有没有其他方法可以改变N?

from gekko import GEKKO
m = GEKKO()
k = 10
N = m.Param(value=[i+1 for i in range(6)])

Y = m.Array(m.Var, (N, k))
for i in range(N):
    for j in range(k):
        Y[i, j].value = 0
        Y[i, j].lower = 0
        Y[i, j].upper = 1
Traceback (most recent call last):
  File "C:\Users\johnh\Desktop\test.py", line 6, in <module>
    Y = m.Array(m.Var, (N, k))
  File "C:\Python37\lib\site-packages\gekko\gekko.py", line 1916, 
  in Array x = np.ndarray(dim,dtype=object)
TypeError: 'GKParameter' object cannot be interpreted
  as an integer

Gekko 要求问题结构(方程)保持不变,但变量值和边界可以改变。 如果您不想要最后几行变量,那么您可以设置一个静态矩阵,然后使用lower=upper=0打开或关闭每一行。 当下限和上限相等时,该变量固定在该值上并且不被优化器使用。

from gekko import GEKKO
m = GEKKO()
k = 3
N = 6
Y = m.Array(m.Var, (N, k))

for i in range(N):
    for j in range(k):
        Y[i, j].value = 0
        Y[i, j].lower = 0
        if i<N:
            Y[i, j].upper = 1
        else:
            Y[i, j].upper = 0
        m.Maximize(Y[i,j])
    m.solve(disp=False)
    print('Problem: ' + str(i))
    print(Y)

这会产生 6 个解决方案,其中Y的值最大化。

Problem: 0
[[[1.0] [1.0] [1.0]]
 [[0.0] [0.0] [0.0]]
 [[0.0] [0.0] [0.0]]
 [[0.0] [0.0] [0.0]]
 [[0.0] [0.0] [0.0]]
 [[0.0] [0.0] [0.0]]]
Problem: 1
[[[1.0] [1.0] [1.0]]
 [[1.0] [1.0] [1.0]]
 [[0.0] [0.0] [0.0]]
 [[0.0] [0.0] [0.0]]
 [[0.0] [0.0] [0.0]]
 [[0.0] [0.0] [0.0]]]
Problem: 2
[[[1.0] [1.0] [1.0]]
 [[1.0] [1.0] [1.0]]
 [[1.0] [1.0] [1.0]]
 [[0.0] [0.0] [0.0]]
 [[0.0] [0.0] [0.0]]
 [[0.0] [0.0] [0.0]]]

每次通过循环,它都会用多一行变量来求解。

Problem: 3
[[[1.0] [1.0] [1.0]]
 [[1.0] [1.0] [1.0]]
 [[1.0] [1.0] [1.0]]
 [[1.0] [1.0] [1.0]]
 [[0.0] [0.0] [0.0]]
 [[0.0] [0.0] [0.0]]]
Problem: 4
[[[1.0] [1.0] [1.0]]
 [[1.0] [1.0] [1.0]]
 [[1.0] [1.0] [1.0]]
 [[1.0] [1.0] [1.0]]
 [[1.0] [1.0] [1.0]]
 [[0.0] [0.0] [0.0]]]
Problem: 5
[[[1.0] [1.0] [1.0]]
 [[1.0] [1.0] [1.0]]
 [[1.0] [1.0] [1.0]]
 [[1.0] [1.0] [1.0]]
 [[1.0] [1.0] [1.0]]
 [[1.0] [1.0] [1.0]]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM