- Index
- » Usage and Applications
- » OpenModelica Usage and Applications
- » Definition of Optimization problem

Page Start Prev 1 Next End

May-28-19 07:10:06

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

Attachments:

Jun-13-19 10:13:15

robarn,

I'm interested in the IpOpt optimization. I'm getting some problem after the part

optimization nmpcBatchReactor(objective=-x2)

extends BatchReactor;

end nmpcBatchReactor;

When I run

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
- 15 Posts

Jun-13-19 11:58:23

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

Jun-13-19 19:51:11

Excuse me, I pasted the wrong file; the output is

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
- 15 Posts

Jun-14-19 05:14:11

You will need to run getErrorString() afterwards to see what the error is.

- sjoelund.se
- 1537 Posts

Jun-14-19 17:33:38

Thank for your help;

I run it on OMEdit, with the COmpiler CLI and the outout is succesful

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
- 15 Posts

Jun-14-19 17:53:14

sjoelund.se , in my OMEdit your model works:

I cut the last three lines

optimization nmpcPruebaRL(objective=resistor1.i-3)

extends PruebaRL;

end nmpcPruebaRL;

Then on the Compiler CLI I run

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

nmpcPruebaRL-resmat.zip

Attachments:

- ElMastro
- 15 Posts

Jun-17-19 07:14:19

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:

"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

Jun-17-19 10:20:40

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)

optimization nmpcPruebaRL(objective=resistor1.i-3)

extends PruebaRL;

end nmpcPruebaRL;

and click send;

after I paste

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
- 15 Posts

Jun-17-19 11:26:15

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

Jun-17-19 17:33:09

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
- 15 Posts

Jun-18-19 09:58:21

I'm glad you succeeded, you're welcome

- ElMastro
- 15 Posts

Page Start Prev 1 Next End

- Index
- » Usage and Applications
- » OpenModelica Usage and Applications
- » Definition of Optimization problem

There are 0 guests and 0 other users also viewing this topic