A Penalty Function Based Differential Evolution Algorithm for Constrained Optimization