【发布时间】:2018-10-23 08:54:55
【问题描述】:
我尝试通过使用列表 array x[] 而不是变量 x1..x4 来转换来自 gekko python 优化器的示例。这是给出结果的代码,但我认为它不正确
from gekko import GEKKO
import numpy as np
# Initialize Model
m = GEKKO(remote=False)
#help(m)
#define parameter
eq = m.Param(value=40)
#initialize variables
x = [m.Var(value=1,lb=1,ub=5) for i in range(4)]
x[1].value=5
x[2].value=5
#Equations
m.Equation(np.prod([x[i] for i in range(0,4)])>=25)
m.Equation(np.sum([x[i]**2 for i in range(0,4)])==eq)
#Objective
m.Obj(x[0]*x[3]*(x[0]+x[1]+x[2])+x[2])
#Set global options
m.options.IMODE = 3 #steady state optimization
#Solve simulation
m.solve() # solve on public server
#Results
print('')
print('Results')
print('x1: ' + str(x[0].value))
print('x2: ' + str(x[1].value))
print('x3: ' + str(x[2].value))
print('x4: ' + str(x[3].value))
请任何人帮助我了解如何使用gekko 中的列表、变量数组。在我看来,这似乎不太优雅,我想知道是否有一种使用 Array() 函数而不是 Var() 的方法。我不知道我们如何以及何时可以使用 Array() 函数。
【问题讨论】: