APM.REDUCE - APMonitor Option

 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.