[Minotaur] User defined objective function

Ashutosh Mahajan amahajan at iitb.ac.in
Mon Nov 10 22:15:09 CST 2014


Hi Cristiano 

In addition to what Nikos explained, you can define your own functions as well.
You will at least need to implement routines to evaluate the function at a
given point and a routine to evaluate the gradient. You will also need to
write some helper functions about the number of variables in the function etc.

An example (myNLFun3 class derived from Function class) is available in
src/testing/NLPBnbUT.cpp

If you provide more details on what kind of function you want to write, I can
help you a bit more.

Cheers.
--
Regards
Ashutosh Mahajan
http://www.ieor.iitb.ac.in/amahajan

On Mon, Nov 10, 2014 at 02:15:18PM +0000, Nikolaos Kazazakis wrote:
>    Dear Cristiano,
> 
>    You can define the objective function through an AMPL .mod file, e.g.:
> 
>    # Start of mod file
>    var x {1..2};
> 
>    minimize obj:
>        cos(x[1]+x[2]+2)+log(x[1]);
>       
>        subject to cons0:
>        -4<=x[1]<=4;
>        subject to cons1:
>        -1<=x[2]<=3;
>    # End of mod file
> 
>    Minotaur normally reads the .mod filename through the input, i.e.:
> 
>    $ ./minotaur_exe problem_file
> 
>    and then (inside the code):
> 
>      problem =
>    iface.readInstance(options->findString("problem_file")->getValue());
> 
>    You can read another file (let's say "second_file") by:
> 
>      problem = iface.readInstance("second_file");
> 
>    You can have multiple problem instances in your code this way, i.e. you
>    can set minotaur to read more than one file and get multiple functions in
>    your code, although when I tried to have to ProblemPtr type problems on my
>    setup I was getting segfaults when assigning memory (with setNativeDer).
> 
>    If you create the second problem as a RelaxationPtr though you can have as
>    many problem instances as you want, it works fine!
> 
>    Kind regards,
>    Nikos
> 
>    On 10/11/14 13:15, Cristiano Arbex Valle wrote:
> 
>      Hi Ashutosh / Minotaur team
>      Is it possible to have in Minotaur an independently user-defined
>      objective function, which Minotaur would call whenever it needs to
>      compute the objective function?
>      Thank you and best regards, 
>      --
>      Cristiano Arbex Valle
> 
>  _______________________________________________
>  Minotaur mailing list
>  [1]Minotaur at lists.mcs.anl.gov
>  [2]https://lists.mcs.anl.gov/mailman/listinfo/minotaur
> 
> References
> 
>    Visible links
>    1. mailto:Minotaur at lists.mcs.anl.gov
>    2. https://lists.mcs.anl.gov/mailman/listinfo/minotaur

> _______________________________________________
> Minotaur mailing list
> Minotaur at lists.mcs.anl.gov
> https://lists.mcs.anl.gov/mailman/listinfo/minotaur



More information about the Minotaur mailing list