首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向GEKKO添加输入

向GEKKO添加输入
EN

Stack Overflow用户
提问于 2020-04-01 16:00:44
回答 1查看 104关注 0票数 3

我需要一些关于GEKKO的帮助

我希望等式是由代码中的输入来设置的,它不是一个int输入,因为它有一个"x“,而字符串不起作用,因为它有数字。

代码语言:javascript
复制
from gekko import GEKKO

m = GEKKO()
x = m.Var()

m.Obj(x**2)

m.Equation(3*x+5==4*x)

m.solve(disp=False)
print(x.value)
EN

回答 1

Stack Overflow用户

发布于 2020-04-01 21:37:04

您可以将方程式作为字符串输入(如seqn)。可以使用eval()函数将字符串转换为表达式。这将计算表达式,就好像您在代码中使用了它一样。

代码语言:javascript
复制
from gekko import GEKKO
seqn = '3*x+5==4*x' # input as string
m = GEKKO(remote=False)
x = m.Var()
m.Obj(x**2)
m.Equation(eval(seqn))
m.solve(disp=False)
print(x.value)

如果等式的形式始终相同,则可以添加参数输入,如p=m.Param(),然后设置p.value=6。这会在您的等式中插入一个不同的数字,例如当您需要多次求解相同的方程但具有不同的输入时,例如3*x+p==(p-1)*x

代码语言:javascript
复制
from gekko import GEKKO
m = GEKKO(remote=False)
x = m.Var()
p = m.Param(5)
m.Obj(x**2)
m.Equation(3*x+p==(p-1)*x)
m.solve(disp=False)
print('Solution with p=5: ' + str(x.value))

p.value=6
m.solve(disp=False)
print('Solution with p=6: ' + str(x.value))

您还可以将输入添加为浮点型或将整型添加为p=6,但这只适用于设置一次值,因为gekko使用此常量写入模型文件。您可以通过使用m.open_folder()打开run文件夹来查看模型文件gk_model0.apm

代码语言:javascript
复制
Model
Variables
    v1 = 0
End Variables
Equations
    (((3)*(v1))+5)=((4)*(v1))
    minimize ((v1)^(2))
End Equations
End Model

每当有一个solve命令时,这个APMonitor模型文件就被编译成字节码。高级用户可以使用m.Raw()向该文件添加行,但除非对APMonitor的内部方法有很好的理解,否则我不建议这样做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60966119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档