Changes between Version 30 and Version 31 of WikiStart

Apr 23, 2019 8:44:00 AM (3 years ago)



  • WikiStart

    v30 v31  
    1 = Welcome to the LaGO home page =
    3 == **Note**: The development of LaGO has ceased. ==
    4 If you are looking for an open-source global solver for MINLPs, consider using [ Couenne].
    6 == Introduction ==
    8 LaGO ('''La'''grangian '''G'''lobal '''O'''ptimizer) is a software-package for the global optimization of nonconvex mixed-integer nonlinear programs (MINLP).
    9 It is written in C++ and is released as open source code under the [ Common Public Licence (CPL)].
    10 The code has been written by Ivo Nowak and [ Stefan Vigerske] (Humboldt-University Berlin), who is the COIN project leader for LaGO.
    12 LaGO is designed to find global solutions of mathematical optimization programs of the form
    13 {{{
    14     min   f(x)
    15     s.t.         g(x) <=  0
    16                  h(x)  =  0
    17           x_L <=  x   <=  x_U
    18                   x_i integer   i\in B
    19 }}}
    20 where {{{ f: R^n --> R }}} is the objective function and {{{ g: R^n --> R^m }}} and {{{ h: R^n --> R^k }}} are the constraint functions.
    21 {{{ x_L }}} and {{{ x_U }}} denote lower and upper bounds on the variables, and {{{ B }}} the indices of the discrete variables.
    22 The functions {{{ f(x), g(x),}}} and {{{ h(x) }}} can be nonlinear and nonconvex, but have to be twice continuously differentiable.
    24 LaGO can work with black-box formulations of the functions {{{ f(x), g(x),}}} and {{{ h(x).}}}
    25 Only methods for the evaluation of function values, gradients, and Hessian-vector-multiplications, and information about sparsity of the functions have to be provided.[[BR]]
    26 The bounds {{{ x_L }}} and {{{ x_U }}} should be finite.
    27 LaGO has some methods to deal with unbounded variables, but they are likely to fail on more difficult optimization problems.
    29 == Download / Installation ==
    31 You can obtain the LaGO code by subversion, please refer to the [ Downloading the Source Code webpages].
    32 Individual files can also be obtained from the [source: subversion web interface].
    33 The LaGO distribution can be used to generate solver executables for the [ AMPL] or [ GAMS] modeling environments.
    35 LaGO has only been used on Linux 32- and 64-bit systems with Intel compatible processors so far.
    36 The installation is likely to fail on other platforms since it has never been tested.
    38 === Latest stable version ===
    40 The latest stable release is version 0.3. You can obtain it via subversion by
    41 {{{
    42   svn checkout COIN-LaGO
    43 }}}
    45 The build system can be used as documented on the [ BuildTools webpage].
    46 If you have problems with it, don't hesitate to ask me by using the [ mailing list] or [ reporting a bug] (after [ login]).
    48 When you checkout LaGO, you will also get the following COIN-OR packages:
    50  * [ BuildTools]
    51  * [ CoinUtils]
    52  * [ Clp]
    53  * [ Cgl]
    54  * [ Osi]
    55  * [ Ipopt]
    56  * !ThirdParty/HSL or !ThirdParty/Mumps, !ThirdParty/Blas, !ThirdParty/Lapack (required by Ipopt)
    57  * !ThirdParty/ASL and !ThirdParty/GAMSIO (one or the other)
    59 === Third Party packages ===
    61 Further, LaGO depends on the following third party packages:
    63  * [ GAMS] I/O libraries (alternative to ASL)
    64  * NIST Template Numerical Toolkit: [ TNT]
    65  * Serial Graph Partitioning and Fill-reducing Matrix Ordering: [ METIS]
    66  * Random Number Generation: [ RANLIB.C]
    67  * Interval Arithmetic Library: [ FILIB++] (optional)
    68  * ILOG LP Solver: [ CPLEX] (optional)
    70 For the first five packages and the ASL, scripts are provided (in {{{trunk/ThirdParty}}}) which download and install these packages.
    71 These scripts have to be executed before {{{configure}}} is called.
    72 Alternatively, you can give the location of the compiled packages as parameters in your {{{configure}}} call.
    74 ==== GAMS interface ====
    76 If you want to use LaGO with GAMS interface, you can download the required GAMS I/O libraries using the {{{get.LX3}}} (32-bit Linux) or {{{get.LEI}}} (64-bit Linux) script in !ThirdParty/GAMS_IO.
    78 Furthermore, LaGO requires some libraries from an installed GAMS distribution for linking.
    79 Hence, the {{{configure}}} script searches for a GAMS system in your {{{PATH}}} environment variable.
    80 Alternatively, you can give the path to a GAMS system as a parameter to the {{{configure}}} script.
    81 A GAMS system can be downloaded [ here].
    83 To make GAMS known of LaGO, you copy the file {{{bin/}}} into your GAMS distribution.
    84 To inform GAMS about the new solver, you now need to call the program {{{gamsinst}}} of your GAMS distribution.
    85 From now on you can use LaGO by giving the argument {{{MINLP=LAGO}}} when solving a MINLP via GAMS.
    87 ==== AMPL interface ====
    89 If the {{{configure}}} script does not find GAMS I/O libraries or a GAMS system, it will check whether the AMPL Solver Library is installed.
    90 If so, a LaGO binary with AMPL interface will be generated.
    91 You use this binary by first generating a {{{.nl}}} file from you AMPL model and then parsing the name of the .nl file as argument to LaGO.
    93 ==== FILIB++ ====
    95 If you make the FILIB++ available to LaGO, features based on interval arithmetic are activated.
    96 Note, that if you use the FILIB++, also the interface to the optimization problem need to provide methods to evaluate functions over an interval.
    97 This is only the case for the GAMS interface.
    98 Thus, the interval arithmetic features in LaGO will not work when you use the AMPL interface (exception: If your MINLP is purely linear and quadratic (MIQQP), then it will work, since quadratic and linear functions are handled separately by LaGO.).
    100 ==== CPLEX ====
    102 If you want to use CPLEX, you have to provide the linker flag and the path of the include file {{{cplex.h}}} to the configure script ({{{--with-cplex-lib}}} and {{{-with-cplex-incdir}}}), e.g.,
    103 {{{
    104 --with-cplex-incdir=<path-to-cplex.h> --with-cplex-lib="-L<path-to-cplex-library> -lcplex -lpthread"
    105 }}}
    106 If CPLEX is not available for LaGO, COIN/Clp is used.
    108 == Usage / Documentation ==
    110 LaGO can be used with either AMPL or GAMS, depending on your configuration.[[BR]]
    111 If you use GAMS, you can install LaGO as MINLP solver in your GAMS system, see the documentation above.[[BR]]
    112 If you use AMPL, you have to pass the name of a {{{.nl}}} file as argument to LaGO. Optional you can pass the name of parameter file as second argument.
    114 Due to the early state of the LaGO project, documentation is available only in a very limited form.
    115 The directory doc contains a makefile which calls flex to generate a program that generates a parameter documentation.
    116 The easiest is to call make in the doc directory. Then point your webbrower to one of the files {{{doc/paramdoc.html}}}, {{{doc/shortparamdoc.html}}}, {{{doc/veryshortparamdoc.html}}}.
    117 These files differ in the amount of LaGO parameters that are listed.
    118   * {{{doc/veryshortparamdoc.html}}} documents those parameters which might be most interesting for you when you are starting to use LaGO.
    119   * {{{doc/shortparamdoc.html}}} documents those parameters that can also be useful to influence the behaviour of LaGO.
    120   * {{{doc/paramdoc.html}}} documents all parameters of LaGO.
    121     This documentation is more directed to developers, since many features that you can switch on there are not tested and are in a very early state.
    123 The parameters in a LaGO optionfile have the format {{{parametername : parametervalue}}}.
    124 An exemplary {{{lago.opt}}} has the form
    125 {{{
    126   MinlpBCP max iter: 1000
    127   BCP subdiv type: Violation
    128   #nlp solver for local minimization
    129   GAMS LocOpt solver  : snopt
    130 }}}
    132 A doxygen documentation of the classes in LaGO can be generated by calling {{{make doxydoc}}} in the main directory of the LaGO package (after configure has been called).
    134 The recent paper [ LaGO - a (heuristic) Branch and Cut algorithm for nonconvex MINLPs] and the slides
    135 [ LaGO - Branch and Cut for nonconvex MINLPs] illustrate the Branch and Cut algorithm implemented in LaGO.
    137 We have also a [ mailing list] where you can subscribe to get notifications about updates and to post questions and comments regarding LaGO.
    138 If you believe you found a bug in the code, please use the bug report system (see the [report: View Tickets], [ Login], and [ New Ticket] tabs on put of this page); please include as much information as possible, and if possible some (ideally simple) example code so that we can reproduce the error.
    140 == Tests ==
    142 The LaGO distribution contains a directory {{{test}}}.
    143 After installation, you find in this directory the script {{{run_tests}}}.
    144 This script runs LaGO with several models that are taken from the [ GAMS MINLPLib].
    145 All these tests should work.
    146 If you experience that some test is not working, you can [ submit a bug report] (after [ login]), preferably together with the LaGO output.
    148 == Project Links ==
    150 * [ COIN-OR Initiative]
    152 * [ Documentation for the download of the source code]
    154 * [ mailing list]
    156 * [ Login] and [ report a bug]
     1= LaGO has been moved to =