Numerical optimization of heat recovery steam cycles: Mathematical model, two-stage algorithm and applications