gpt4 book ai didi

python-3.x - 如何使用 Gekko 释放变量

转载 作者:行者123 更新时间:2023-12-05 07:00:53 25 4
gpt4 key购买 nike

我正在尝试使用 GEKKO 来做简单的代数。

鉴于方程 6 = X1 * X2,我首先使用 Gekko fix() 函数将 X1 设置为 2。求解并打印该方程后,我尝试使用 Gekko free() 函数释放 X1,并再次使用 fix() 函数将 X2 固定为 2。 free 函数似乎没有正确释放 X2 变量。

from gekko import GEKKO

m = GEKKO()

# Variables
x1 = m.Var()
x2 = m.Var()

# Equation
FindX1 = 6 == x1*x2
m.Equation(FindX1)

# Fix x1 to 2
m.fix(x1, val=2)

# Solve X2
m.solve(disp=False)
print("X1: %s and X2: %s" % (x1.VALUE, x2.VALUE))

# Fix x2 to 2
m.fix(x2, val=2)

# Free x1
m.free(x1)

# Solve X1
m.solve(disp=False)
print("X1: %s and X2: %s" % (x1.VALUE, x2.VALUE))

最佳答案

restart file坚持规范。对于 IMODE=3,它是运行目录 m.path 中的 rto.t0。您可以使用以下方法删除该重启文件:

import os
os.remove(m.path+'\\rto.t0')

有一个选项 m.options.SPECS=0 也应该可以忽略重新启动文件中的固定/自由规范,但这不会与求解引擎通信。我创建了一个 new GitHub issue to address this bug .

import os
from gekko import GEKKO

m = GEKKO(remote=False)

# Variables
x1 = m.Var()
x2 = m.Var()

# Equation
FindX1 = 6 == x1*x2
m.Equation(FindX1)

# Fix x1 to 2
m.fix(x1, val=2)

# Solve X2
m.solve(disp=False)
print("X1: %s and X2: %s" % (x1.VALUE, x2.VALUE))

# Fix x2 to 2
m.fix(x2, val=2)

# Free x1
m.free(x1)

os.remove(m.path+'\\rto.t0')
#m.options.SPECS = 0

# Solve X1
m.solve(disp=False)
print("X1: %s and X2: %s" % (x1.VALUE, x2.VALUE))

m.open_folder()

这会产生正确的响应:

X1: [2.0] and X2: [3.0]
X1: [3.0] and X2: [2.0]

关于python-3.x - 如何使用 Gekko 释放变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63996508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com