我有兴趣使用JModelica以及我在Dymola中构建的模型。锅炉的最佳控制:使用流体库w。 DynamicPipe组件使用JModelica
具体而言,我必须使用DynamicPipe组分的锅炉的模型,并且我然后只是将热传递到所述管预热它里面的水,并采用一个泵部件,以控制在整个的压力差锅炉。该模型编译得很好,以FMU使用JModelica和我能够模拟它没有任何问题。
但是,我现在不想找到一个最佳的控制序列来使锅炉进入某个工作点,并且在这里停止工作。
我已经写了.mop文件与优化问题,但是当我打电话transfer_optimization_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
显然,它不是那么高兴在一个枚举类型DynamicPipe指定模型结构的模型。
为了检查确实是我的模型是问题,我将其线性化并在优化问题中使用线性化版本; 这完美运行。
有关如何处理这个问题的任何想法? :-)
问候,
乔金 -
UPDATE: 我问同样的问题在JModelica论坛上,有以下回应。但是,我还没有找到一个解决方案来规避错误:http://www.jmodelica.org/27776#comment-6467
不太熟悉组件或'Optimica',但是您可以尝试通过轻松放松系统来使问题更容易线性化吗? – jrhodin
嗯 - 我认为问题是在Modelica中使用了一些特殊的语言结构,Optimica/JModelica不喜欢 - 因此与系统构造的好坏没有多大关系。我在[JModelica论坛]上提出了同样的问题(http://www.jmodelica.org/27776)。但我会研究它:-) –