当前位置: 首页 > 知识库问答 >
问题:

GEKKO中间结构中的元素错误无效

景英杰
2023-03-14

我试图用Python GEKKO解决一个最小线性规划优化问题。有两件事我想问你。

首先;我仔细检查了下面的链接,并试图理解Hedengren先生所做的更改。

Python-GEKKO-MINLP能源系统优化:如何构建二维阵列的中间产物

在这个例子的带有文本编辑器的. apm模型文件中;有“连接”。我理解那里的操作,但是我不知道代码中的哪一部分带来了这些连接。我试着遵循这个例子;我使用了类似的中间结构,但是在我自己的模型中从来没有得到过类似的连接。

另一件事;在我的中间代码中,我有和函数。在模型的文本文件版本中,我再次看到求和总是从0开始,然后它将变量添加到彼此。例如:

......[(((((((0 (((((((((15))^(-9)))(2711)))(v230)))*(int_v340)))

在模型中;T=10 G=11,上面的等式是这样的:

INV=m.中级([[sum(pow((1 r),-t)*IC[g]*Z[g, t]*Y[g, t]表示范围(G)中的g)]表示范围(T)中的t])

操作看起来是正确的,但我不明白为什么每个括号中都有0(零)?它给出无效元素错误,并用最后一个t值指向变量。。。

***函数字符串语法错误:无效元素:v230

这个变量(v230)代表Z[11,10]。我发现它总是给出去年的错误,这意味着最高的t值。

同样,如果我用m.sum代替sum;它给出了这个错误:“x必须是GEKKO参数变量或表达式的python列表”

如果你能给我一个提示,我将不胜感激。这可能不是什么大问题,但我自己找不到任何解决方案。

感谢您的时间和理解。

最好的问候

共有1个答案

魏书
2023-03-14

中间变量总是在开头加零,以防表达式中没有参数。下面是一个简单的Gekko脚本,它显示了中间产物和m.sum()的使用。

from gekko import GEKKO
m = GEKKO()
x = m.Array(m.Var,3)
m.Equation(m.sum(x)==3)
y = m.Intermediate(sum(x))
m.Minimize(y)
for i,xi in enumerate(x):
    m.Minimize((xi-i)**2)
m.solve()
m.open_folder()
print(x)

这是gk_模型0。由Gekko生成并由APMonitor编译为字节码的apm模型文件。

Model
Variables
    v1 = 0
    v2 = 0
    v3 = 0
End Variables
Intermediates
    i0=(((0+v1)+v2)+v3)
End Intermediates
Equations
    ((v1+v2)+v3)=3
    minimize i0
    minimize (((v1-0))^(2))
    minimize (((v2-1))^(2))
    minimize (((v3-2))^(2))
End Equations
End Model

如果xnumpy数组转换为带有x=list(x)的列表,则它会创建一个对象并连接到这些对象,如留档所示。这是APMonitor模型。

Model
Variables
    v1 = 0
    v2 = 0
    v3 = 0
    v4 = 0
End Variables
Intermediates
    i0=(((0+v1)+v2)+v3)
End Intermediates
Equations
    v4=3
    minimize i0
    minimize (((v1-0))^(2))
    minimize (((v2-1))^(2))
    minimize (((v3-2))^(2))
End Equations
Connections
    v1 = sum_1.x[1]
    v2 = sum_1.x[2]
    v3 = sum_1.x[3]
    v4 = sum_1.y
End Connections
Objects
    sum_1 = sum(3)
End Objects
End Model
 类似资料:
  • DocBook 中的一些元素,在发布的时候会作为条目被收进目录。它们表示的是文档内部的结构,所以它们是结构元素,如下: <set> <book><part><chapter> <sect1> <sect2> ………… </sect2> </sect1></chapter> </part> </book> </set> 如果 DocBook 的根元素是art

  • 问题内容: 我有一个结构“ Guest”,其中包含聚会客人的元数据(唯一的ID,名称,姓氏以及作为该客人的朋友的客人的唯一ID的列表。 我有以下代码从朋友列表中删除ID: 问题是:我要删除的元素被元素的移位覆盖,但是切片不会变短。而是将切片的最后一个元素相乘。 举一个例子:是。我打电话后,结果却不是理想的。 那么,我在做什么错呢? 问题答案: 任何打算/确实修改接收器的方法都必须使用指针接收器。

  • 构建的应用程序:React Native 0.62.2 用于测试的工具:Appium v1.17.1 问题描述:Appium Inspector未检查/定位iOS层次结构中的子元素。 我们使用testID和accessibilityLabel属性为元素提供ID: 返回{testID:id,accessibilityLabel:id,}; 但是appium仍然不能识别iOS层次结构中的元素。 在An

  • 问题内容: 如果您具有这样的功能: 如果getUsers返回仅包含一个元素的,则生成的JSON只是JSON对象,而不是JSON数组。 是否有使XStream返回JSON数组的变通办法,而不管该函数是否返回单个数组List? 问题答案: 解决方案是降级到Jettison 1.2 根据XStream数组错误https://github.com/jettison- json/jettison/issue

  • 问题内容: 我想单击一个单选按钮,出现在网页上。代码如下: HTML代码: Tesstcase: 此测试通过错误: 1)量角器演示应用检查项目数 信息: 失败:元素不可见 我也尝试过: 它给出了错误: [16:16:26] E / launcher-参数列表后出现错误:SyntaxError:缺少) 请提出建议,单选按钮将如何获得点击? 问题答案: 在使用硒进行测试自动化中,这是一个相当普遍的问题

  • 我想点击一个单选按钮,出现在网页上。代码如下所示: HTML代码: 泰斯特案例: 此测试通过错误: 1)量角器演示应用程序检查项目计数 消息: 失败:元素不可见 我还尝试了: 它给出错误: [16:16:26]E/启动器-参数列表后的错误:语法错误:缺失) 请建议,单选按钮将如何获得点击?