锅炉的最佳控制:使用Fluid Library w。使用JModelica的DynamicPipe组件

时间:2016-09-22 13:53:48

标签: modelica jmodelica

我有兴趣将 JModelica 与我在 Dymola 中构建的模型一起使用。

具体来说,我有一个使用 DynamicPipe 组件的锅炉模型,然后我只是将热量传递到管道以加热其中的水,并使用泵组件来控制压力整个锅炉的差异。该模型使用 JModelica 可以很好地编译为 FMU ,我可以毫无问题地进行模拟。

但是,我现在不想找到一个最佳的控制序列来使锅炉进入某个工作点,这里停止工作。

我写了一个带有优化问题的.mop文件,但是当我调用 transfer_optimization_problem 时,我收到以下错误:

# Create a dummy paragraph to see how it would split
long_string = 'Here should be a variable with long content'*10
long_paragraph = Paragraph(long_string, style_p_footer)

# Needed because of a bug in breakLines (value doesn't matter)
long_paragraph.width = 4.8 * cm

# Fetch the lines of the paragraph for the given width
para_fragment = long_paragraph.breakLines(width=4.8 * cm)

# There are 2 kinds of returns so 2 ways to grab the first line
if para_fragment.kind == 0:
    shorted_text = " ".join(para_fragment.lines[0][1])
else:
    shorted_text = " ".join([w.text for w in para_fragment.lines[0].words])

# To make it pretty add ... when we break of the sentence
if len(para_fragment.lines) > 1:
    shorted_text += "..."

# Create the actual paragraph
shorted_paragraph = Paragraph(shorted_text, style_p_footer)

显然,对 DynamicPipe 模型中的枚举类型不太满意,它指定了模型结构。

为了检查确实是我的模型是问题,我将其线性化并在优化问题中使用了线性化版本; 这完美运行。

有关如何处理此问题的任何想法? : - )

此致

乔金姆

更新 我在JModelica论坛上问了同样的问题,回复如下。但是,我还没有找到解决错误的解决方案:http://www.jmodelica.org/27776#comment-6467

1 个答案:

答案 0 :(得分:0)

Fredrik在JModelica论坛上提供了一个可接受的答案: http://www.jmodelica.org/27776#comment-6468

简单地说:不支持MSL媒体库。

我的解决方案是专门为我的用例构建我自己的小流体库 - 在单相水的情况下这是一个明智的选择,并且它完美地工作。但我必须承认,能够使用MSL流体库是不错的,不能用自己的流体接口锁定自己。