Type: Integer, Input Default Value: 0 Description: Number of pre-processing cycles to identify equations or variables to eliminate

REDUCE is the number of cycles of pre-solve analysis before sending the problem to a solver. The analysis eliminates variables and equations with the following characteristics:

- variables that don't belong to an equation or objective
- equations with assignments such as x=2.5 (set to value and fix)
- identified with a single non-zero in Jacobian row
- set variable equal to zero, evaluate residual
- then set x = -resid/jac (when abs(jac)>tolerance)
- check that upper or lower limits are not violated

- equations that connect two variables y = z (merge)
- set variables equal to zero, evaluate residual
- if abs(residual)~0 and abs(jac_1 - jac_2) ~ 0, merge

- independent blocks of linear equations (not yet implemented)
- perform Lower Block Triangularization (LBT)
- analyze independent blocks
- if equation blocks are linear then solve and fix

If no variables are left (all reduced) then APMonitor reports a successful solution without sending the problem to a solver. When no variables or equations are eliminated, the remainder of the REDUCE cycles are skipped. REDUCE has the potential to present a more dense and smaller problem to the solver but may also require more pre-processing time that is more efficiently utilized by the solver.

See also COLDSTART