Search code examples
python-2.7optimizationmodelicajmodelica

jmodelica optimization has runtime error


I am trying to follow different papers and tutorials to learn how to solve optimization problems of modelica modells. In http://www.syscop.de/files/2015ss/events/opcon-thermal-systems/optimization_tool_chain_in_jmodelica.org_toivo_henningsson.pdf I found a very simple tutorial. But when I execute it I get some very open error messages. I am using Python 2.7 with jupyther. Here is my Notepad:

from pyjmi import transfer_optimization_problem
import matplotlib.pyplot as plt
import os.path

file_path = os.path.join("D:\Studies", "Integrator.mop")

op  = transfer_optimization_problem('optI', file_path)
res = op.optimize()

t = res['time']
x = res['x']
u = res['u']
plt.plot(t,x,t,u)

My modelica file:

package Integrator
 model Integrator
  Real x(start=2, fixed = true);
  input Real u;
 equation
  der(x) = -u;
 end Integrator;

 optimization optI(objective = finalTime, objectiveIntegrand = x^2 + u^2, startTime = 0, finalTime(free = true, min = 0.5, max = 2, initialGuess = 1))
 Real x (start = 2, fixed = true);
  input Real u;
 equation
  der(x) = -u;
 constraint
  u <= 2;
  x(finalTime) = 0;
 end optI;
end Integrator;

When I excute the code I get an RuntimeError, telling me that a java error occured and details where printed. From the Traceback I do not know what the note

This file is compatible with both classic and new-style classes

mean. I know that my setup is working because I executed the CSTR tutorial given by modelon. But now, it try to use my own models and it is giving me that error.

Runtime Error desciption


Solution

  • Using same syntax like in Modelica for import e.g.

    import Modelica.SIunits.Temperature;
    

    where the package structure is part of the model-identification should resolve the issue.

    op  = transfer_optimization_problem('Integrator.optI', file_path)