A Complex-valued Encoding Bat Algorithm for Solving 0-1 Knapsack Problem