Author: Andres Mauricio Ibarra Rodriguez
Advisor: Prof. Dr. Ernesto Julian Goldberg Birgin
This is the master repository for my Master’s dissertation in Applied Mathematics at São Paulo University.
According to the dissertation, the objective of this work is to use sequential statistical learning to tune the augmented Lagrangian algorithm ALGENCAN using IRACE. For this purpose, this repository contains five R scripts responsible for executing the main algorithm, which are written in FORTRAN. Four experiments were implemented; a brief description of each experiment is provided below, along with the corresponding scripts and instructions for their use.
According to what is proposed in the dissertation, the following files are required to carry out this experiment.
1.Montecarlo_Search.f90
2.src_unc.f
3.Irace_Montecarlo.R
(*)To run the Monte_Carlo.f90 search program, we use the file src_unc.f, which contains the OBJ.f90 subroutines used for function evaluation. Compile with: gfortran -O2 -o montecarlo_search Montecarlo_Search.f90 src_unc.f y corremos como:
./montecarlo_search nprob boxtype itrialmax(**) To run Irace and find a parameter configuration
To run the script, execute:
Rscript Irace_Montecarlo.R.According to the methodology proposed in the dissertation, the objective of this experiment is to tune the internal optimization method implemented within Phase
- Newton's method with trust-region globalization;
- Newton's method with line search;
- Truncated Newton method.
The following files are required for the execution of this experiment:
- subroutines_GENCAN.f90
- conf_GENCAN.f90
- src_hes.f
- src_unc.f
- Irace_GENCAN-3.1.1.R
- Irace_GENCAN-3.1.1-(2).R
(Obs: (5) and (6) the main difference between these scripts lies in the definition of the cost measure.
(*) For this experiment, we compile as follows: gfortran -c src_unc.f gfortran -c src_hes.f gfortran -c subroutines_GENCAN.f90 gfortran -c conf_GENCAN.f90
(**) We link the code with the HSL library and the corresponding paths.:
gfortran -o gencan \
conf_GENCAN.o \
subroutines_GENCAN.o \
src_unc.o \
src_hes.o \
/home/user/Descargas/algencan-3.1.1/lib/libalgencan.a \
/home/user/Descargas/algencan-3.1.1/lib/libhsl.a \
-fopenmpSubsequently, we run the executable as follows::
./gencan nprob methodwith method
(***) To execute the
Rscript Irace_GENCAN-3.1.1.R or alternatively
Irace_GENCAN-3.1.1-(2).R. For this experiment, the algorithm GENCAN from ALGENCAN version 4.0.0 was used, and IRACE was implemented to tune the parameters of interest defined in the dissertation. The training instances employed were taken from CUTEst for unconstrained problems and box-constrained problems.
The following files were required for the execution of this experiment:
- gencan.f90
- gencanma-forcutest.f90
- run-unc-bound-contr
- Irace_Gencan-4.0.0.R
In this case, the GENCAN algorithm is executed through the run-unc-bound-constr script. This script compiles the ls and hsl libraries, as well as the CUTEst interface, using gencanma-forcutest.f90. To do so, we first execute: chmod +x run-unc-bound-constr, this bash script compiles all the required libraries. Then, the algorithm is executed as follows:
$\phi_1 \ \phi_2 \ \phi_3 \ \phi_4 \ \phi_5 \ \phi_6 \ \phi_7 \ \phi_8 \ \phi_9 \ \phi_{10}$ ./run-unc-bound-constr,where each
Rscript Irace_Gencan-4.0.0.R.For this experiment, ALGENCAN version 4.0.0 was used, and IRACE was employed to tune the parameters of interest related to the penalty paremeter, defined in the dissertation. The training instances were selected from CUTEst and consisted of nonlinear optimization problems of the form
The following files were required for the execution of this experiment.
- algencan.f90
- algencanma-forcutest.f90
- run-nlp
- Irace_Algencan-4.0.0.R
In this case, the ALGENCAN algorithm is executed through the run-nlp script. This script compiles the ls and hsl libraries, as well as the CUTEst interface, using algencanma-forcutest.f90. To do so, we first execute:
chmod +x run-nlpThis bash compiles all the required libraries. The algorithm is then executed as follows:
$\zeta_1$ $\zeta_2$ ./run-nlp problemwhere each
Rscript Irace_Algencan-4.0.0.R.