--------------------------------------------------------------------------- About ipfilter: --------------------------------------------------------------------------- The software package ipfilter is a solver for nonlinear programming (NLP) problems, defined by the minimization of an objective function in a feasible region defined by equality and inequality constraints. ipfilter provides interfaces to AMPL and SIF and a user 'standard' Fortran interface. To use the standard interface, the NLP problems must be first formulated in the format: minimize f(x) subject to h(x) = 0, l <= x <= u. where x is in R^n and h(x) is in R^m. ipfilter (version 0.3) is written in Fortran 90. ipfilter is capable of solving large-scale NLPs. The sparse linear algebra uses MA57 from HSL. Version 0.3 requires first and second-order derivatives for all the functions defining the problem and is only available for problems where n => m. --------------------------------------------------------------------------- Conditions of use for ipfilter: --------------------------------------------------------------------------- (A) ipfilter is freely available for academic purposes (i.e., as a tool for education or for basic research, as well as for benchmarking). (B) All publications or technical reports describing work using this software must quote the references given below: M. Ulbrich, S. Ulbrich, and L. N. Vicente, A globally convergent primal-dual interior-point filter method for nonlinear programming, Mathematical Programming, 100 (2004) 379-410. R. Silva, M. Ulbrich, S. Ulbrich, and L. N. Vicente, A globally convergent primal-dual interior-point filter method for nonlinear programming: new filter optimality measures and computational results, pre-print 08-49, Department of Mathematics, University of Coimbra. (C) The package comes with no guarantee that it is free of error and therefore it should not be relied on as the basis to solve a problem whose incorrect solution could result in injury to person or property. No maintenance, support, troubleshooting, or subsequent upgrade is provided. (D) The package, or any modification thereof, may not be sold or supplied, nor embedded within other software products which are subsequently sold, or supplied, to a third party. (E) The conditions for commercial (non-academic) use of ipfilter will be specified later. --------------------------------------------------------------------------- Third party codes: --------------------------------------------------------------------------- In order to run ipfilter, the following third party components are required: - MA57 subroutines from the HSL (the former Harwell Subroutine Library): available from http://www.cse.clrc.ac.uk/nag/hsl. To run ipfilter using the CUTEr interface (for solving problems modeled in SIF) you will also need to obtain the codes from - http://hsl.rl.ac.uk/cuter-www (CUTEr web site), - http://www.netlib.org/blas (BLAS web site). To run ipfilter using the AMPL interface (for solving problems modeled in AMPL) you will also need to obtain the code from - http://www.ampl.com (AMPL web site). --------------------------------------------------------------------------- Instalation and usage of ipfilter: --------------------------------------------------------------------------- Version 0.3 of ipfilter can be obtained by sending e-mail to ipfilter@mat.uc.pt. 1. To decompress ipfilter archive file do: % gunzip ipfilter-0.3.tar.gz % tar -xvf ipfilter-0.3.tar.gz 2. To obtain the source code for the necessary HSL subroutines do: Go to http://www.cse.clrc.ac.uk/nag/hsl and follow the instructions to download the MA57 subroutines (double precision version). Then save the file 'MA57.f' in the 'ipfilter-0.3/ipfilter_hsl' directory. 3. To install ipfilter do: First change to the 'ipfilter-0.3' directory: % cd ipfilter-0.3 Then, change the configuration parameters in the file 'config' according to your operating system and Fortran 90 compiler. See also the 'makefiles' in 'ipfilter-0.3/AMPL_interface', 'ipfilter-0.3/CUTEr_interface', 'ipfilter-0.3/Fortran_interface', 'ipfilter-0.3/ipfilter', and 'ipfilter-0.3/ipfilter_hsl'. After that, create the libraries: % make all The ipfilter parameters can be modified in the file 'parameters.dat' under the 'ipfilter-0.3/ipfilter' directory. Change also the file 'time_ipfilter.f90' (in the 'ipfilter-0.3/ipfilter' directory) according to your system specifications. 4. To run ipfilter using the CUTEr interface do: Go to http://hsl.rl.ac.uk/cuter-www and follow the instructions to download and install SifDec and CUTEr and to download the CUTEr problems. Do not forget to set the environment variables MYSIFDEC, MYCUTER, and MASTSIF. CUTEr routines also need some BLAS (dense) routines. Go to http://www.netlib.org/blas and follow the instructions to download and install the BLAS (Basic Linear Algebra Subprograms) library. Then save the file 'libblas.a' in the 'ipfilter-0.3/lib' directory (if you have the BLAS library already installed in your system, change the variable BLASLIB in the 'makefile' of the 'ipfilter-0.3/CUTEr_interface' directory). After that, do % cd CUTEr_interface % ./tester reportname or % cd CUTEr_interface % ./sd ALJAZZZAF (for example) % make run You can test other CUTEr problems by changing the variable TEST_SET in file 'tester' of the 'ipfilter-0.3/CUTEr_interface' directory or by changing the argument of the 'sd' command in the command line. 5. To run ipfilter using the AMPL interface do: Go to http://www.ampl.com/ and follow the instructions to download and install AMPL. Then set the variable AMPLDIR (in the 'makefile' of the 'ipfilter-0.3/AMPL_interface') to the location of your AMPL directory (which must include the files 'funcadd0.o' and 'amplsolver.a') and the variable TESTDIR (in the file 'tester' of the 'ipfilter-0.3/AMPL_interface') to the location of your AMPL models directory. After that, do % cd AMPL_interface % ./tester reportname or % cd AMPL_interface % make all (it is only necessary to 'make all' once) % ampl -ogaljazzaf TESTDIR/aljazzaf.mod (for example) % ipfilter aljazzaf or % cd AMPL_interface % make all (it is only necessary to 'make all' once) % ampl ampl: option solver ipfilter; ampl: model TESTDIR/aljazzaf.mod; (for example) ampl: solve; (TESTDIR is the location of your AMPL models directory.) You can test other AMPL models by changing the variable TEST_SET in file 'tester' of the 'ipfilter-0.3/AMPL_interface' directory or by changing the argument of the 'ampl -og' command in the command line or the argument of the 'model' command in the 'ampl' command line. 6. To run ipfilter using the Fortran interface do: % cd Fortran_interface % make run (runs the example1) To run example2, example3 or example4 modify the makefile: define EX = example2, EX = example3, or EX = example4, respectively. You can also run your own examples by changing the 'example*.f' files accordingly. Note 1: The HSL subroutines that we use, the CUTEr/SifDec packages, and the BLAS package are freely available for non-commercial, academic use, but it is your responsibility to investigate the licensing of all third party code. Note 2: All downloadable versions of AMPL are Student Editions, which are limited to problems of 300 variables and 300 constraints and objectives, but are full-featured in other respects. --------------------------------------------------------------------------- Main directory structure: --------------------------------------------------------------------------- The 'ipfilter-0.3' directory contains the following files (f) and directories (d): README.ipfilter (f) - this file. config (f) - sets up the basic variables to be used in all ipfilter makefiles. makefile (f) - creates all the libraries needed by ipfilter. ipfilter (d) - contains the ipfilter subroutines. ipfilter_hsl (d) - contains the HSL subroutines needed by ipfilter. lib (d) - contains all the libraries needed by ipfilter. Fortran_interface (d) - contains four examples written in Fortran. CUTEr_interface (d) - contains the subroutines needed to run ipfilter with a CUTEr problem. AMPL_interface (d) - contains the subroutines needed to run ipfilter with an AMPL model. docs (d) - contains the user's manual. --------------------------------------------------------------------------- User parameters for ipfilter: --------------------------------------------------------------------------- The user parameters for ipfilter are set in the file 'ipfilter-0.3/ipfilter/parameters.dat'. Output: outputs (integer) Determines the amount of information written in the screen: 0: no output (default). 1: verbose. 2: very verbose. outputf (integer) Determines the amount of information written in the file 'ipfilter.out': 0: no output (default). 1: prints final value of objective function and final point. 2: prints the same as outputs=2, plus final value of objective function and final point. Termination: max_cpu_time (double precision, > 0d0) Maximum CPU time allowed (in seconds). If the running of ipfilter exceeds this value, the optimization is aborted with error code ierr = 13. Default is 30000. max_it (integer, >0) Maximal number of iterations allowed. If ipfilter exceeds this number, the optimization is aborted with error code ierr = 1 (main algorithm) or ierr = 2 (restoration phase). Default is 1000. tol (double precision, > 0d0) Desired error tolerance. If the current error estimate is less than tol, the problem is considered solved. Default is 1d-8. del_min (double precision, > 0d0) Minimum value allowed for Delta. If the current Delta is less than del_min, the optimization is aborted with error code ierr = 3 or 4 (main algorithm) or ierr = 5 or 6 (restoration phase). Default is 1d-10. Initialization: del_0 (double precision, >0) Initial value of Delta parameter. Default is 1d5. Memory length: wdim (integer, >0) Length of the working arrays. If the memory needed is greater than wdim, the optimization is aborted with error code ierr = 10 (real memory) or ierr = 11 (integer memory). Default is 100000000. --------------------------------------------------------------------------- Screen output of ipfilter: --------------------------------------------------------------------------- Warmstart: Column Meaning It. Iteration counter. ||gLk|| Norm of the current gradient of the warmstart function. Main algorithm: Column Meaning It. Iteration counter. f Current value of objective function. thl Current value of theta_l = ||gd_l||_2 (optimality measure). thh Current value of theta_h = ||h||_2 (constraint violation). thc Current value of theta_c = ||Xz-mu e||_2 (centrality measure). mu Current value of mu = x^T z/ n (centrality parameter). del Current value of Delta (step length parameter). step Indicates the type of step: safe: if safe step was computed (in main algorithm). fast: if safe step was not computed (in main algorithm). rest: step computed in the restoration algorithm. main: step computed in the main algorithm (no bounds). --------------------------------------------------------------------------- The ipfilter team and web site: --------------------------------------------------------------------------- Current ipfilter team: Renata Silva and Luis Nunes Vicente (University of Coimbra). Michael Ulbrich (Technical University of Munich). Stefan Ulbrich (Technical University of Darmstadt). The ipfilter web site is located at: http://www.mat.uc.pt/ipfilter. ---------------------------------------------------------------------------