Options and generic interface for ParOpt optimziers

ParOpt consists of three different optimizers: an interior point method, a trust-region method and the method of moving asymptotes.

These optimizers can be accessed through the common python interface ParOpt.Optimizers. This python object is allocated with a problem class which inherits from ParOpt.Problem, and a dictionary of options.

The optimizer interface is generally executed as follows:

# Create the optimizer with the specified options. Here we specify a
# trust-region optimizer, with an initial trust region size of 0.1 and
# a maximum size of 10.0. All other options are set to default.
options = {
    'algorithm': 'tr',
    'tr_init_size': 0.1,
    'tr_max_size': 10.0}
opt = ParOpt.Optimizer(problem, options)

# Execute the optimization
opt.optimize()

# Extract the optimized values and multipliers
x, z, zw, zl, zu = opt.getOptimizedPoint()

Switching the above optimization problem to use the interior-point method or the method of moving asymptotes will be as simple as specifying 'ip' or 'mma' as the argument associated with 'algorithm'.

Options

The option data is populated directly from the C++ code. The options are pulled from all optimizers, so not all options are applicable. In general the options specific to the trust region method have tr_ as a prefix while options associated with the method of moving asymptotes have mma_ as a prefix. Options without the tr_ or mma_ prefix apply to the interior point method.

The full set of options can displayed as follows:

from paropt import ParOpt
ParOpt.printOptionSummary()

This produces the following output:

Absolute stopping criterion
abs_res_tol                              1e-06          
Range of values: lower limit 0  upper limit 1e+20

Absolute stopping norm on the step size
abs_step_tol                             0              
Range of values: lower limit 0  upper limit 1e+20

The type of optimization algorithm
algorithm                                tr             
Range of values:                         ip             
                                         tr             
                                         mma            

The Armijo constant for the line search
armijo_constant                          1e-05          
Range of values: lower limit 0  upper limit 1

The type of barrier update strategy to use
barrier_strategy                         monotone       
Range of values:                         monotone       
                                         mehrotra       
                                         mehrotra_predictor_corrector
                                         complementarity_fraction

The absolute precision of the design variables
design_precision                         1e-14          
Range of values: lower limit 0  upper limit 1

Exponent in the Eisenstat-Walker INK forcing equation
eisenstat_walker_alpha                   1.5            
Range of values: lower limit 0  upper limit 2

Multiplier in the Eisenstat-Walker INK forcing equation
eisenstat_walker_gamma                   1              
Range of values: lower limit 0  upper limit 1

A small value that controls slanting envelope of the filter
filter_gamma                             1e-05          
Range of values: lower limit 0  upper limit 1

Use feasibility restoration for filter method
filter_has_feas_restore_phase            True           

Use sufficient reduction criteria for filter
filter_sufficient_reduction              True           

The absolute precision of the function and constraints
function_precision                       1e-10          
Range of values: lower limit 0  upper limit 1

The absolute GMRES tolerance (almost never relevant)
gmres_atol                               1e-30          
Range of values: lower limit 0  upper limit 1

The subspace size for GMRES
gmres_subspace_size                      0              
Range of values: lower limit 0  upper limit 1000

Step length used to check the gradient
gradient_check_step_length               1e-06          
Range of values: lower limit 0  upper limit 1

Print to screen the output of the gradient check at this frequency during an optimization
gradient_verification_frequency          -1             
Range of values: lower limit -1000000  upper limit 1000000

Do a hard reset of the Hessian at this specified major iteration frequency
hessian_reset_freq                       1000000        
Range of values: lower limit 1  upper limit 1000000

The initial value of the barrier parameter
init_barrier_param                       0.1            
Range of values: lower limit 0  upper limit 1e+20

Initial value of the line search penalty parameter
init_rho_penalty_search                  0              
Range of values: lower limit 0  upper limit 1e+20

Checkpoint file for the interior point method
ip_checkpoint_file                       None           

Number of iterative refinement steps performed in the KKT system solution procedure
iterative_refinement_steps               1              
Range of values: lower limit 0  upper limit 10

Maximum bound value at which bound constraints are omitted
max_bound_value                          1e+20          
Range of values: lower limit 0  upper limit 1e+300

The maximum relative tolerance used for GMRES, above this the quasi-Newton approximation is used
max_gmres_rtol                           0.1            
Range of values: lower limit 0  upper limit 1

Maximum number of line search iterations
max_line_iters                           10             
Range of values: lower limit 1  upper limit 100

The maximum number of major iterations before quiting
max_major_iters                          5000           
Range of values: lower limit 0  upper limit 1000000

Minimum fraction to the boundary rule < 1
min_fraction_to_boundary                 0.95           
Range of values: lower limit 0  upper limit 1

Minimum value of the line search penalty parameter
min_rho_penalty_search                   0              
Range of values: lower limit 0  upper limit 1e+20

Contraction factor applied to the asymptotes
mma_asymptote_contract                   0.7            
Range of values: lower limit 0  upper limit 1

Expansion factor applied to the asymptotes
mma_asymptote_relax                      1.2            
Range of values: lower limit 1  upper limit 1e+20

Relaxation bound for computing the error in the KKT conditions
mma_bound_relax                          0              
Range of values: lower limit 0  upper limit 1e+20

Regularization term applied in the MMA approximation
mma_delta_regularization                 0.001          
Range of values: lower limit 0  upper limit 1e+20

Regularization term applied in the MMA approximation
mma_eps_regularization                   1e-05          
Range of values: lower limit 0  upper limit 1e+20

Infeasibility tolerance 
mma_infeas_tol                           1e-05          
Range of values: lower limit 0  upper limit 1e+20

Initial asymptote offset from the variable bounds
mma_init_asymptote_offset                0.5            
Range of values: lower limit 0  upper limit 1

l1 tolerance for the optimality tolerance
mma_l1_tol                               1e-06          
Range of values: lower limit 0  upper limit 1e+20

l-infinity tolerance for the optimality tolerance
mma_linfty_tol                           1e-06          
Range of values: lower limit 0  upper limit 1e+20

Maximum asymptote offset from the variable bounds
mma_max_asymptote_offset                 10             
Range of values: lower limit 0  upper limit 1e+20

Maximum number of iterations
mma_max_iterations                       200            
Range of values: lower limit 0  upper limit 1000000

Minimum asymptote offset from the variable bounds
mma_min_asymptote_offset                 0.01           
Range of values: lower limit 0  upper limit 1e+20

Move limit for design variables to prevent oscillation
mma_move_limit                           0.2            
Range of values: lower limit 0  upper limit 1e+20

Ouput file name for MMA
mma_output_file                          paropt.mma     

Use a linearization of the constraints in the MMA subproblem
mma_use_constraint_linearization         False          

Factor applied to the barrier update < 1
monotone_barrier_fraction                0.25           
Range of values: lower limit 0  upper limit 1

Exponent for barrier parameter update > 1
monotone_barrier_power                   1.1            
Range of values: lower limit 1  upper limit 10

Switch to the Newton-Krylov method at this residual tolerance
nk_switch_tol                            0.001          
Range of values: lower limit 0  upper limit 1e+20

The type of norm to use in all computations
norm_type                                infinity       
Range of values:                         infinity       
                                         l1             
                                         l2             

Output file name
output_file                              paropt.out     

Output level indicating how verbose the output should be
output_level                             0              
Range of values: lower limit 0  upper limit 1000000

Fraction of infeasibility used to enforce a descent direction
penalty_descent_fraction                 0.3            
Range of values: lower limit 1e-06  upper limit 1

l1 penalty parameter applied to slack variables
penalty_gamma                            1000           
Range of values: lower limit 0  upper limit 1e+20

The problem name
problem_name                             None           

The type of initial diagonal to use in the quasi-Newton approximation
qn_diag_type                             yty_over_yts   
Range of values:                         yty_over_yts   
                                         yts_over_sts   
                                         inner_yty_over_yts
                                         inner_yts_over_sts

Scalar added to the diagonal of the quasi-Newton approximation > 0
qn_sigma                                 0              
Range of values: lower limit 0  upper limit 1e+20

The maximum dimension of the quasi-Newton approximation
qn_subspace_size                         10             
Range of values: lower limit 0  upper limit 1000

The type of quasi-Newton approximation to use, note that scaled_bfgs should be only used when there's single constraint and objective is linear
qn_type                                  bfgs           
Range of values:                         bfgs           
                                         scaled_bfgs    
                                         sr1            
                                         none           

The type of BFGS update to apply when the curvature condition fails
qn_update_type                           skip_negative_curvature
Range of values:                         skip_negative_curvature
                                         damped_update  

Relative factor applied to barrier parameter for bound constraints
rel_bound_barrier                        1              
Range of values: lower limit 0  upper limit 1e+20

Relative function value stopping criterion
rel_func_tol                             0              
Range of values: lower limit 0  upper limit 1e+20

Discard the quasi-Newton approximation (but not necessarily the exact Hessian)
sequential_linear_method                 False          

Minimum multiplier for the affine step initialization strategy
start_affine_multiplier_min              1              
Range of values: lower limit 0  upper limit 1e+20

Initialize the Lagrange multiplier estimates and slack variables
starting_point_strategy                  affine_step    
Range of values:                         least_squares_multipliers
                                         affine_step    
                                         no_start_strategy

Print to screen the output of the step check at this frequency during an optimization
step_verification_frequency              -1             
Range of values: lower limit -1000000  upper limit 1000000

Which strategy to use to decide if a trial point can be accepted or not
tr_accept_step_strategy                  penalty_method 
Range of values:                         penalty_method 
                                         filter_method  

The type of constraint to use for the adaptive penalty subproblem
tr_adaptive_constraint                   linear_constraint
Range of values:                         linear_constraint
                                         subproblem_constraint

Adaptive penalty parameter update
tr_adaptive_gamma_update                 True           

The type of objective to use for the adaptive penalty subproblem
tr_adaptive_objective                    linear_objective
Range of values:                         constant_objective
                                         linear_objective
                                         subproblem_objective

Upper and lower bound relaxing parameter
tr_bound_relax                           0.0001         
Range of values: lower limit 0  upper limit 1e+20

Trust region trial step acceptance ratio
tr_eta                                   0.25           
Range of values: lower limit 0  upper limit 1

Infeasibility tolerance 
tr_infeas_tol                            1e-05          
Range of values: lower limit 0  upper limit 1e+20

The initial trust region radius
tr_init_size                             0.1            
Range of values: lower limit 0  upper limit 1e+20

l1 tolerance for the optimality tolerance
tr_l1_tol                                1e-06          
Range of values: lower limit 0  upper limit 1e+20

l-infinity tolerance for the optimality tolerance
tr_linfty_tol                            1e-06          
Range of values: lower limit 0  upper limit 1e+20

Maximum number of trust region iterations
tr_max_iterations                        200            
Range of values: lower limit 0  upper limit 1000000

The maximum trust region radius
tr_max_size                              1              
Range of values: lower limit 0  upper limit 1e+20

Maximum number of trust region iterations
tr_max_soc_iterations                    20             
Range of values: lower limit 0  upper limit 1000000

The minimum trust region radius
tr_min_size                              0.001          
Range of values: lower limit 0  upper limit 1e+20

Trust region output file
tr_output_file                           paropt.tr      

Maximum value for the penalty parameter
tr_penalty_gamma_max                     10000          
Range of values: lower limit 0  upper limit 1e+20

Minimum value for the penalty parameter
tr_penalty_gamma_min                     0              
Range of values: lower limit 0  upper limit 1e+20

Update quasi-Newton approximation in second order correction steps
tr_soc_update_qn                         False          

The barrier update strategy to use for the steering method subproblem
tr_steering_barrier_strategy             mehrotra_predictor_corrector
Range of values:                         monotone       
                                         mehrotra       
                                         mehrotra_predictor_corrector
                                         complementarity_fraction
                                         default        

The barrier update strategy to use for the steering method subproblem
tr_steering_starting_point_strategy      affine_step    
Range of values:                         least_squares_multipliers
                                         affine_step    
                                         no_start_strategy
                                         default        

Use second order correction when trial step is rejeccted
tr_use_soc                               False          

Write output frequency
tr_write_output_frequency                10             
Range of values: lower limit 0  upper limit 1000000

Perform a back-tracking line search
use_backtracking_alpha                   False          

Use or do not use the diagonal Hessian computation
use_diag_hessian                         False          

Use or do not use Hessian-vector products
use_hvec_product                         False          

Perform or skip the line search
use_line_search                          True           

Use or do not use the quasi-Newton method as a preconditioner
use_qn_gmres_precon                      True           

Update the quasi-Newton approximation at each iteration
use_quasi_newton_update                  True           

Write out the solution file and checkpoint file at this frequency
write_output_frequency                   10             
Range of values: lower limit 0  upper limit 1000000