On Wed, Apr 15, 2015 at 3:04 PM, John Peterson <jwpeter...@gmail.com> wrote:
>
>
> On Wed, Apr 15, 2015 at 12:42 PM, David Knezevic <
> david.kneze...@akselos.com> wrote:
>
>> I'm interested in having an interface to optimization software from
>> libMesh.
>>
>> I've attached some code that provides:
>> - A generic optimization solver interface (OptimizationSolver), modeled
>> on NonlinearSolver.
>> - OptimizationSystem, modeled on NonlinearImplicitSystem.
>> - TaoOptimizationSolver, which is a subclass of OptimizationSolver for
>> the specific case of TAO. Note that TAO is included in PETSc now (since
>> version 3.5 I believe).
>>
>> I've implemented a simple test problem in tao_test.C that solves: min 0.5
>> * U^T A U - U^T. You can run, say, "./example-opt -tao_monitor -tao_view
>> -tao_type nls" and you should get the same solution as if you solved AU = F.
>>
>> If there's broad interest in this, I can clean up the code and turn it
>> into a PR.
>>
>> Some ideas for future additions:
>> - Add support for inequality and equality constraints (inequality
>> constraints are my main motivation for considering optimization problems).
>> I looked into this a bit with TAO and it seems like we have to provide a
>> Jacobian for the constraints, which is a rectangular matrix.
>> - Add interfaces for other optimization suites, e.g. Ipopt or NLOpt
>>
>
> Yes, this seems really awesome!
>
> Please at least push a branch with these changes to your libmesh fork...
> that is way, way easier to look at and discuss than email attachments.
>
I've pushed the code to here:
https://github.com/dknez/libmesh/tree/opt_interface
I don't remember exactly how to add new source files to the repo. I
ran rebuild_include_HEADERS.sh, rebuild_libmesh_SOURCES.sh, and
re-bootstrapped, but I think I must've forgot something since I'm getting:
"libmesh/optimization_solver.h: No such file or directory"
I think a wiki page about steps for adding new source files would be
helpful.
Anyway, please have a look at the code and tell me what you think! This is
a very early version for now, but I'm certainly very enthusiastic about
adding support for optimization within libMesh since I think it would
enable a lot of cool new capabilities. If anyone else is interested in this
too, it'd be great to collaborate on this branch in order to get it in good
enough shape to be added to libMesh.
David
------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel