- Index
- » Usage and Applications
- » OpenModelica Usage and Applications
- » Definition of Optimization problem
Definition of Optimization problem
Definition of Optimization problem
Hello
I'm trying to use IpOpt for dynamic optimization of an electrical model created with OMEdit but I always get the "Failed to build model:" message
I could complete the BatchReactor.mo example of the User's guide but the optimization for the attached simple example always fail
PruebaRLIpOpt.mo
The model can be loaded in the shell but the optimization command returns error:
optimize(nmpcPruebaRL, numberOfIntervals=16,stopTime=1,tolerance=1e-8)
Can someone provide an example of using OpIpt with a model built with OMEdit? Or any idea about how I should create my optimization problem?
Thank you
Re: Definition of Optimization problem
robarn,
I'm interested in the IpOpt optimization. I'm getting some problem after the part
Code:
optimization nmpcBatchReactor(objective=-x2)
extends BatchReactor;
end nmpcBatchReactor;
When I run
Code:
optimize(nmpcBatchReactor, numberOfIntervals=16, stopTime=1, tolerance=1e-8)
record SimulationResult
resultFile = "«DOCHOME»/nmpcBatchReactor_res.mat",
simulationOptions = "startTime = 0.0, stopTime = 1.0, numberOfIntervals = 16, tolerance = 1e-08, method = 'optimization', fileNamePrefix = 'nmpcBatchReactor', options = '', outputFormat = 'mat', variableFilter = '.*', cflags = '', simflags = ''",
messages = "LOG_SUCCESS | info | The initialization finished successfully without homotopy method.
Optimizer Variables
========================================================
State[0]:x1(start = 1, nominal = 1, min = 0, max = 1, init = 1)
State[1]:x2(start = 0, nominal = 1, min = 0, max = 1, init = 0)
Input[2]:u(start = 0, nominal = 5, min = 0, max = 5)
--------------------------------------------------------
number of nonlinear constraints: 0
========================================================
******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
Ipopt is released as open source code under the Eclipse Public License (EPL).
For more information visit http://projects.coin-or.org/Ipopt
******************************************************************************
LOG_SUCCESS | info | The simulation finished successfully.
",
timeFrontend = 0.107220861,
timeBackend = 0.065935538,
timeSimCode = 0.001220293,
timeTemplates = 0.010451172,
timeCompile = 0.496370947,
timeSimulation = 0.03213160900000001,
timeTotal = 0.713488376
end SimulationResult;
The output is
Error occurred building AST
Syntax Error
Could you please tell me how you did, so that I can treasure your experience?
- ElMastro
- 33 Posts
Re: Definition of Optimization problem
Sorry ElMastro
I don't understand your question.
Once you run "optimize(nmpcBatchReactor, numberOfIntervals=16, stopTime=1, tolerance=1e-8) " I see that you obtain a correct execution: LOG_SUCCESS. And your log for results it seems correct
So I don't know why you receive "Error occurred building AST Syntax Error"
When I run the optimize funcion I obtaint a result log similar to yours and I can access the .mat results file without problem
Best regards
Re: Definition of Optimization problem
Excuse me, I pasted the wrong file; the output is
Code:
optimize(nmpcBatchReactor, numberOfIntervals=16, stopTime=1, tolerance=1e-8)
record SimulationResult
resultFile = "",
simulationOptions = "startTime = 0.0, stopTime = 1.0, numberOfIntervals = 16, tolerance = 1e-08, method = 'optimization', fileNamePrefix = 'nmpcBatchReactor', options = '', outputFormat = 'mat', variableFilter = '.*', cflags = '', simflags = ''",
messages = "Failed to build model: nmpcBatchReactor",
timeFrontend = 0.065435036,
timeBackend = 0.0,
timeSimCode = 0.0,
timeTemplates = 0.0,
timeCompile = 0.0,
timeSimulation = 0.0,
timeTotal = 0.065895884
end SimulationResult;
- ElMastro
- 33 Posts
Re: Definition of Optimization problem
You will need to run getErrorString() afterwards to see what the error is.
- sjoelund.se
- 1700 Posts
Re: Definition of Optimization problem
Thank for your help;
I run it on OMEdit, with the COmpiler CLI and the outout is succesful
Code:
optimize(nmpcBatchReactor, numberOfIntervals=16, stopTime=1, tolerance=1e-8)
record SimulationResult
resultFile = "/tmp/OpenModelica_maxtro/OMEdit/nmpcBatchReactor_res.mat",
simulationOptions = "startTime = 0.0, stopTime = 1.0, numberOfIntervals = 16, tolerance = 1e-08, method = 'optimization', fileNamePrefix = 'nmpcBatchReactor', options = '', outputFormat = 'mat', variableFilter = '.*', cflags = '', simflags = ''",
messages = "LOG_SUCCESS | info | The initialization finished successfully without homotopy method.
Optimizer Variables
========================================================
State[0]:x1(start = 1, nominal = 1, min = 0, max = 1, init = 1)
State[1]:x2(start = 0, nominal = 1, min = 0, max = 1, init = 0)
Input[2]:u(start = 0, nominal = 5, min = 0, max = 5)
--------------------------------------------------------
number of nonlinear constraints: 0
========================================================
******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
Ipopt is released as open source code under the Eclipse Public License (EPL).
For more information visit http://projects.coin-or.org/Ipopt
******************************************************************************
LOG_SUCCESS | info | The simulation finished successfully.
",
timeFrontend = 0.410979041,
timeBackend = 0.010253416,
timeSimCode = 0.00122332,
timeTemplates = 0.00288823,
timeCompile = 0.799306899,
timeSimulation = 0.070365205,
timeTotal = 1.295109968
end SimulationResult;
getErrorString however doesn't show anything, neither on OMShell nor here. Now I'll try your model to get the use of it, if it happens to work, I'll let you know
- ElMastro
- 33 Posts
Re: Definition of Optimization problem
sjoelund.se , in my OMEdit your model works:
I cut the last three lines
Code:
optimization nmpcPruebaRL(objective=resistor1.i-3)
extends PruebaRL;
end nmpcPruebaRL;
Then on the Compiler CLI I run
Code:
optimization nmpcPruebaRL(objective=resistor1.i-3)
extends PruebaRL;
end nmpcPruebaRL;
{nmpcPruebaRL}
optimize(nmpcPruebaRL, numberOfIntervals=16,stopTime=1,tolerance=1e-8)
record SimulationResult
resultFile = "/tmp/OpenModelica_maxtro/OMEdit/nmpcPruebaRL_res.mat",
simulationOptions = "startTime = 0.0, stopTime = 1.0, numberOfIntervals = 16, tolerance = 1e-08, method = 'optimization', fileNamePrefix = 'nmpcPruebaRL', options = '', outputFormat = 'mat', variableFilter = '.*', cflags = '', simflags = ''",
messages = "LOG_SUCCESS | info | The initialization finished successfully without homotopy method.
Optimizer Variables
========================================================
Input[0]:u(start = 0, nominal = 1, min = -Inf, max = +Inf)
--------------------------------------------------------
number of nonlinear constraints: 0
========================================================
stdout | info | Jacobian or SparsePattern is not generated or failed to initialize! Switch back to normal.
******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
Ipopt is released as open source code under the Eclipse Public License (EPL).
For more information visit http://projects.coin-or.org/Ipopt
******************************************************************************
stdout | warning | No optimal solution found!
| | | | Use -lv=LOG_IPOPT for more information.
LOG_SUCCESS | info | The simulation finished successfully.
",
timeFrontend = 0.4063101739999999,
timeBackend = 0.006439266000000001,
timeSimCode = 0.001593736,
timeTemplates = 0.002677573,
timeCompile = 0.8018269769999999,
timeSimulation = 0.037602812,
timeTotal = 1.256511073
end SimulationResult;
getDocumentationAnnotation(BatchReactor)
{"","",""}
getClassComment(BatchReactor)
""
readSimulationResultVars("/tmp/OpenModelica_maxtro/OMEdit/nmpcPruebaRL_res.mat",true,false)
{"$OMC$objectMayerTerm","ground1.p.i","ground1.p.v","resistor1.LossPower","resistor1.R","resistor1.R_actual","resistor1.T","resistor1.T_heatPort","resistor1.T_ref","resistor1.alpha","resistor1.i","resistor1.n.i","resistor1.n.v","resistor1.p.i","resistor1.p.v","resistor1.v","signalVoltage1.i","signalVoltage1.n.i","signalVoltage1.n.v","signalVoltage1.p.i","signalVoltage1.p.v","signalVoltage1.v","time","u"}
About the results this come out to me
- ElMastro
- 33 Posts
Re: Definition of Optimization problem
I have always used OMShell instead of Compiler CLI
How do you run the three lines of "optimization ..." in the Compiler CLI?
I always get the error:
Code:
"Error occurred building AST
Syntax Error
[<interactive>:1:0-1:12:writable] Error: Parser error: Unexpected token near: optimization (IDENT)"
I have tried to run it in the command line and also as a script. In this second case I obtain "Failed" as output of the runScript command
Re: Definition of Optimization problem
In the same folder of PruebaRLIpOpt.mo I start OMEdit;
on the menu there is Tools -> Openmodelica Compiler CLI;
this starts the COmpiler CLI, I paste in it (at the bottom)
Code:
optimization nmpcPruebaRL(objective=resistor1.i-3)
extends PruebaRL;
end nmpcPruebaRL;
and click send;
after I paste
Code:
optimize(nmpcPruebaRL, numberOfIntervals=16,stopTime=1,tolerance=1e-8)
, click send and this does the trick.
OMShell gives the same results as you (I don't understand why).
- ElMastro
- 33 Posts
Re: Definition of Optimization problem
Thank you for your help, ElMastro
This is what I was trying but it doesn't work
I tried to change the working directory in OMEdit and also in Compiler CLI. But the error is the same. I will keep on trying.
May you tell me what version of OpenModelica and OMEdit are you using? In my case:
OMEdit v1.13.2 (64-bit) - Connected to v1.13.2 (64-bit)
And I am working on a folder without spaces or symbols in its name
Or maybe you can send me an image of the Compiler CLI window after the execution of the optimization command (the three lines)
Thank you
Re: Definition of Optimization problem
My version of openmodelica is 1.14.0.dev.r26546.g4ce17f701-1 (from GIT). I think that OMEdit is the same, the about dialog says
USER wrote:
Connected to OMCompiler v1.14.0-dev.26546+g4ce17f701
Connected to OMSimulator v2.1.0-dev-112-g0ae785f-linux
For the image here is a link, I got some problem attaching it
- ElMastro
- 33 Posts
Re: Definition of Optimization problem
I'm glad you succeeded, you're welcome
- ElMastro
- 33 Posts
- Index
- » Usage and Applications
- » OpenModelica Usage and Applications
- » Definition of Optimization problem