Optimization for Engineering Design: Algorithms and Examples