Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
锅炉的最优控制:使用流体库w。使用JModelica的DynamicPie组件_Modelica_Jmodelica - Fatal编程技术网

锅炉的最优控制:使用流体库w。使用JModelica的DynamicPie组件

锅炉的最优控制:使用流体库w。使用JModelica的DynamicPie组件,modelica,jmodelica,Modelica,Jmodelica,我对使用JModelica和我在Dymola中构建的模型感兴趣 具体地说,我有一个使用dynamicpe组件的锅炉模型,然后我将热量传递到管道以加热其中的水,并使用一个泵组件来控制整个锅炉的压差。该模型使用JModelica编译成FMU,我能够毫无问题地模拟它 然而,我现在不想找到一个最佳的控制序列,使锅炉进入某个工作点,在这里事情停止工作 我已经编写了一个带有优化问题的.mop文件,但是当我调用transfer\u optimization\u problem时,我得到以下错误: Warnin

我对使用JModelica和我在Dymola中构建的模型感兴趣

具体地说,我有一个使用dynamicpe组件的锅炉模型,然后我将热量传递到管道以加热其中的水,并使用一个泵组件来控制整个锅炉的压差。该模型使用JModelica编译成FMU,我能够毫无问题地模拟它

然而,我现在不想找到一个最佳的控制序列,使锅炉进入某个工作点,在这里事情停止工作

我已经编写了一个带有优化问题的.mop文件,但是当我调用transfer\u optimization\u problem时,我得到以下错误:

Warning: Ignored enumeration typed variable:
eval parameter Modelica.Fluid.Types.ModelStructure boiler.boilerFMU.boiler.pipe.modelStructure = Modelica.Fluid.Types.ModelStructure.av_b "Determines whether flow or volume models are present at the ports" /* Modelica.Fluid.Types.ModelStructure.av_b */
Java error occurred:
Exception in thread "main" java.lang.UnsupportedOperationException: Cannot convert expression to MX: size(A, 1)
at org.jmodelica.optimica.compiler.FExp.toMX(FExp.java:4516)
at org.jmodelica.optimica.compiler.FMaxExp.toMX(FMaxExp.java:560)
at org.jmodelica.optimica.compiler.FExp.toMXVector(FExp.java:4497)
at org.jmodelica.optimica.compiler.FAssignStmt.updateExpressionsAccordingToStatement(FAssignStmt.java:385)
at org.jmodelica.optimica.compiler.FFunctionDecl.generateFinalExpressionVector(FFunctionDecl.java:1365)
at org.jmodelica.optimica.compiler.FFunctionDecl.toMXFunction_compute(FFunctionDecl.java:2878)
at org.jmodelica.optimica.compiler.FFunctionDecl.toMXFunction(FFunctionDecl.java:2865)
at org.jmodelica.optimica.compiler.FFunctionCall.toMXVector(FFunctionCall.java:1578)
at org.jmodelica.optimica.compiler.FFunctionCallStmt.updateExpressionsAccordingToStatement(FFunctionCallStmt.java:391)
at org.jmodelica.optimica.compiler.FFunctionDecl.generateFinalExpressionVector(FFunctionDecl.java:1365)
at org.jmodelica.optimica.compiler.FFunctionDecl.toMXFunction_compute(FFunctionDecl.java:2878)
at org.jmodelica.optimica.compiler.FFunctionDecl.toMXFunction(FFunctionDecl.java:2865)
at org.jmodelica.optimica.compiler.FFunctionCall.toMXVector(FFunctionCall.java:1578)
at org.jmodelica.optimica.compiler.FFunctionCallStmt.updateExpressionsAccordingToStatement(FFunctionCallStmt.java:391)
at org.jmodelica.optimica.compiler.FFunctionDecl.generateFinalExpressionVector(FFunctionDecl.java:1365)
at org.jmodelica.optimica.compiler.FFunctionDecl.toMXFunction_compute(FFunctionDecl.java:2878)
at org.jmodelica.optimica.compiler.FFunctionDecl.toMXFunction(FFunctionDecl.java:2865)
at org.jmodelica.optimica.compiler.FFunctionCall.toMXVector(FFunctionCall.java:1578)
at org.jmodelica.optimica.compiler.FFunctionCall.toMX(FFunctionCall.java:1562)
at org.jmodelica.optimica.compiler.FDotSubExp.toMX(FDotSubExp.java:544)
at org.jmodelica.optimica.compiler.FVariable.parameterEquationToMXBindingExpression(FVariable.java:3807)
at org.jmodelica.optimica.compiler.FVariable.findMXBindingExpressionIfPresent(FVariable.java:3770)
Traceback (most recent call last):
File "boiler_opt.py", line 89, in <module>
op = transfer_optimization_problem("BoilerOptimization.Opt", paths, compiler_log_level='error')
File "/opt/jmodelica/Python/pyjmi/casadi_interface.py", line 171, in transfer_optimization_problem
accept_model=accept_model)
File "/opt/jmodelica/Python/modelicacasadi_transfer/modelica_casadi_transfer_wrapper.py", line 156, in transfer_optimization_problem
_get_options(compiler_options), compiler_log_level)
File "/opt/jmodelica/Python/modelicacasadi_transfer/modelica_casadi_transfer_wrapper.py", line 179, in _transfer_optimica
return modelicacasadi_wrapper._transferOptimizationProblem(ocp, class_name, files, options, log_level)
File "/opt/jmodelica/Python/modelicacasadi_wrapper/modelicacasadi_wrapper.py", line 3417, in _transferOptimizationProblem
return _modelicacasadi_wrapper._transferOptimizationProblem(*args)
RuntimeError: a java error occurred; details were printed
警告:忽略枚举类型的变量:
评估参数Modelica.Fluid.Types.ModelStructure boiler.boilerFMU.boiler.pipe.ModelStructure=Modelica.Fluid.Types.ModelStructure.av_b“确定端口处是否存在流量或体积模型”/*Modelica.Fluid.Types.ModelStructure.av_b*/
发生Java错误:
线程“main”java.lang.UnsupportedOperationException中出现异常:无法将表达式转换为MX:size(A,1)
位于org.jmodelica.optimica.compiler.FExp.toMX(FExp.java:4516)
位于org.jmodelica.optimica.compiler.FMaxExp.toMX(FMaxExp.java:560)
位于org.jmodelica.optimica.compiler.FExp.toMXVector(FExp.java:4497)
位于org.jmodelica.optimica.compiler.FAssignStmt.updateExpressionsAccordingStatement(FAssignStmt.java:385)
位于org.jmodelica.optimica.compiler.FFunctionDecl.generateFinalExpressionVector(FFunctionDecl.java:1365)
位于org.jmodelica.optimica.compiler.FFunctionDecl.toMXFunction_compute(FFunctionDecl.java:2878)
位于org.jmodelica.optimica.compiler.FFunctionDecl.toMXFunction(FFunctionDecl.java:2865)
位于org.jmodelica.optimica.compiler.FFunctionCall.toMXVector(FFunctionCall.java:1578)
位于org.jmodelica.optimica.compiler.FFunctionCallStmt.updateExpressionsAccordingStatement(FFunctionCallStmt.java:391)
位于org.jmodelica.optimica.compiler.FFunctionDecl.generateFinalExpressionVector(FFunctionDecl.java:1365)
位于org.jmodelica.optimica.compiler.FFunctionDecl.toMXFunction_compute(FFunctionDecl.java:2878)
位于org.jmodelica.optimica.compiler.FFunctionDecl.toMXFunction(FFunctionDecl.java:2865)
位于org.jmodelica.optimica.compiler.FFunctionCall.toMXVector(FFunctionCall.java:1578)
位于org.jmodelica.optimica.compiler.FFunctionCallStmt.updateExpressionsAccordingStatement(FFunctionCallStmt.java:391)
位于org.jmodelica.optimica.compiler.FFunctionDecl.generateFinalExpressionVector(FFunctionDecl.java:1365)
位于org.jmodelica.optimica.compiler.FFunctionDecl.toMXFunction_compute(FFunctionDecl.java:2878)
位于org.jmodelica.optimica.compiler.FFunctionDecl.toMXFunction(FFunctionDecl.java:2865)
位于org.jmodelica.optimica.compiler.FFunctionCall.toMXVector(FFunctionCall.java:1578)
位于org.jmodelica.optimica.compiler.FFunctionCall.toMX(FFunctionCall.java:1562)
位于org.jmodelica.optimica.compiler.FDotSubExp.toMX(FDotSubExp.java:544)
位于org.jmodelica.optimica.compiler.FVariable.parameterEquationToMXBindingExpression(FVariable.java:3807)
位于org.jmodelica.optimica.compiler.FVariable.findMXBindingExpressionIfPresent(FVariable.java:3770)
回溯(最近一次呼叫最后一次):
文件“boiler_opt.py”,第89行,在
op=传输\优化\问题(“BoilerOptimization.Opt”,路径,编译器\日志\级别='error')
文件“/opt/jmodelica/Python/pyjmi/casadi_interface.py”,第171行,在传输优化问题中
接受模型=接受模型)
文件“/opt/jmodelica/Python/modelicacasadi_transfer/modelica_casadi_transfer_wrapper.py”,第156行,在传输优化问题中
_获取选项(编译器选项)、编译器日志级别)
文件“/opt/jmodelica/Python/modelicacasadi_transfer/modelica_casadi_transfer_wrapper.py”,第179行,在“transfer_optimica”中
返回modelicacasadi_包装器。_传输优化问题(ocp、类名称、文件、选项、日志级别)
文件“/opt/jmodelica/Python/modelicacasadi_wrapper/modelicacasadi_wrapper.py”,第3417行,in_transferOptimizationProblem
返回modelicacasadi_wrapper.transferOptimizationProblem(*args)
RuntimeError:发生java错误;细节已打印出来
显然,对于dynamicpe模型中指定模型结构的枚举类型,它并不满意

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

你知道怎么处理吗?:-)

问候,

约金

更新:
我在JModelica论坛上问了同样的问题,并给出了以下回答。但是,我还没有找到一个解决方案来规避这些错误:

因此Fredrik在JModelica论坛上提供了一个可接受的答案:

简而言之:不支持MSL媒体库。


我的解决方案是专门为我的用例构建我自己的小型流体库——对于单相水来说,这是一个不需要动脑筋的问题,而且它工作得非常完美。但我必须承认,如果能够使用MSL流体库,而不是将自己锁定在自己的流体界面中,那将是一件好事。

不太熟悉组件或
Optimica
,但是你能试着通过放松系统使问题更容易线性化吗?嗯,我认为问题在于Modelica中使用了一些特殊的语言结构,Optimica/JModelica不喜欢这种结构,因此与系统的适定性没有太大关系。我在会议上提出了同样的问题。但我会调查的:-)