Changes between Version 30 and Version 31 of WikiStart


Ignore:
Timestamp:
Apr 23, 2019 8:44:00 AM (4 months ago)
Author:
stefan
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WikiStart

    v30 v31  
    1 = Welcome to the LaGO home page =
    2 
    3 == **Note**: The development of LaGO has ceased. ==
    4 If you are looking for an open-source global solver for MINLPs, consider using [https://projects.coin-or.org/Couenne Couenne].
    5 
    6 == Introduction ==
    7 
    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 [http://www.opensource.org/licenses/cpl.php Common Public Licence (CPL)].
    10 The code has been written by Ivo Nowak and [http://www.math.hu-berlin.de/~stefan Stefan Vigerske] (Humboldt-University Berlin), who is the COIN project leader for LaGO.
    11 
    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.
    23 
    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.
    28 
    29 == Download / Installation ==
    30 
    31 You can obtain the LaGO code by subversion, please refer to the [https://projects.coin-or.org/BuildTools/wiki/user-download 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 [http://www.ampl.com AMPL] or [http://www.gams.com GAMS] modeling environments.
    34 
    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.
    37 
    38 === Latest stable version ===
    39 
    40 The latest stable release is version 0.3. You can obtain it via subversion by
    41 {{{
    42   svn checkout https://projects.coin-or.org/svn/LaGO/stable/0.3 COIN-LaGO
    43 }}}
    44 
    45 The build system can be used as documented on the [https://projects.coin-or.org/BuildTools BuildTools webpage].
    46 If you have problems with it, don't hesitate to ask me by using the [http://list.coin-or.org/mailman/listinfo/lago mailing list] or [https://projects.coin-or.org/LaGO/newticket reporting a bug] (after [https://projects.coin-or.org/LaGO/login login]).
    47 
    48 When you checkout LaGO, you will also get the following COIN-OR packages:
    49 
    50  * [https://projects.coin-or.org/BuildTools/wiki BuildTools]
    51  * [https://projects.coin-or.org/CoinUtils/wiki CoinUtils]
    52  * [https://projects.coin-or.org/Clp/wiki Clp]
    53  * [https://projects.coin-or.org/Cgl/wiki Cgl]
    54  * [https://projects.coin-or.org/Osi/wiki Osi]
    55  * [https://projects.coin-or.org/Ipopt/wiki Ipopt]
    56  * !ThirdParty/HSL or !ThirdParty/Mumps, !ThirdParty/Blas, !ThirdParty/Lapack (required by Ipopt)
    57  * !ThirdParty/ASL and !ThirdParty/GAMSIO (one or the other)
    58 
    59 === Third Party packages ===
    60 
    61 Further, LaGO depends on the following third party packages:
    62 
    63  * [http://www.gams.com GAMS] I/O libraries (alternative to ASL)
    64  * NIST Template Numerical Toolkit: [http://math.nist.gov/tnt TNT]
    65  * Serial Graph Partitioning and Fill-reducing Matrix Ordering: [http://glaros.dtc.umn.edu/gkhome/metis/metis/overview METIS]
    66  * Random Number Generation: [http://www.netlib.org/random RANLIB.C]
    67  * Interval Arithmetic Library: [http://www.math.uni-wuppertal.de/wrswt/software/filib.html FILIB++] (optional)
    68  * ILOG LP Solver: [http://www.ilog.com/products/cplex CPLEX] (optional)
    69 
    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.
    73 
    74 ==== GAMS interface ====
    75 
    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.
    77 
    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 [http://www.gams.com/download here].
    82 
    83 To make GAMS known of LaGO, you copy the file {{{bin/gmsla_.zip}}} 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.
    86 
    87 ==== AMPL interface ====
    88 
    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.
    92 
    93 ==== FILIB++ ====
    94 
    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.).
    99 
    100 ==== CPLEX ====
    101 
    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.
    107 
    108 == Usage / Documentation ==
    109 
    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.
    113 
    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.
    122 
    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 }}}
    131 
    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).
    133 
    134 The recent paper [http://www.mathematik.hu-berlin.de/publ/pre/2006/P-06-24.ps LaGO - a (heuristic) Branch and Cut algorithm for nonconvex MINLPs] and the slides
    135 [http://www.math.hu-berlin.de/~eopt/papers/ago07.pdf LaGO - Branch and Cut for nonconvex MINLPs] illustrate the Branch and Cut algorithm implemented in LaGO.
    136 
    137 We have also a [http://list.coin-or.org/mailman/listinfo/lago 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], [https://projects.coin-or.org/LaGO/login Login], and [https://projects.coin-or.org/LaGO/newticket 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.
    139 
    140 == Tests ==
    141 
    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 [http://www.gamsworld.org/minlp/minlplib.htm GAMS MINLPLib].
    145 All these tests should work.
    146 If you experience that some test is not working, you can [https://projects.coin-or.org/LaGO/newticket submit a bug report] (after [https://projects.coin-or.org/LaGO/login login]), preferably together with the LaGO output.
    147 
    148 == Project Links ==
    149 
    150 * [http://www.coin-or.org COIN-OR Initiative]
    151 
    152 * [https://projects.coin-or.org/BuildTools/wiki/user-download Documentation for the download of the source code]
    153 
    154 * [http://list.coin-or.org/mailman/listinfo/lago mailing list]
    155 
    156 * [https://projects.coin-or.org/LaGO/login Login] and [https://projects.coin-or.org/LaGO/newticket report a bug]
     1= LaGO has been moved to https://github.com/coin-or/LaGO =