我有一个目标函数,其中有四个要优化的参数(n1、n2、n3 和 n4)。这种优化应该在“for T in T”循环中完成,因为目标函数是 T 的函数。结果,我为每个 T 得到一组参数。如何构建和打印包含 T、n1、n2、n3 和 n4 的个性化列表?
我尝试了不同的“打印”方式,在循环内部和外部。我还在这里和 GEKKO 的文档中搜索了示例,但这对我来说仍然是一个挑战。提前致谢。
import math
import numpy as np
from gekko import GEKKO
T = np.arange(1, 10, 2)
for T in T:
A = 3/(T**2)
B = 20-T**2
C = 3+T
D = T
mA = A-T*C
mB = B-T*D
# Minimization routine
from gekko import GEKKO
m = GEKKO()
# Variables to be minimized:
n1, n2, n3, n4 = [m.Var() for i in range(4)]
var = [n1, n2, n3, n4]
# Initial values:
n0 = [3,2,3,3]
nL = np.ones(len(n0))*10**-10
nU = np.ones(len(n0))*10**10
for i,x in enumerate(var):
x.value = n0[i]
x.lower = nL[i]
x.upper = nU[i]
nt = m.Intermediate(n1 + n2 + n3 + n4)
# Objective:
m.Obj(T*A*mA + B*mB + C*D/nt)
# Set global options
m.options.IMODE = 3
# Solve minimization
m.solve()
print(n1, n2, n3, n4)
print(str(n1.value), str(n2.value), str(n3.value), str(n4.value))