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