Optimization Techniques for Shell-and-Tube Heat Exchanger Design