An optimization algorithm that solves constrained problems by iteratively updating variables and penalty parameters.