Numerous studies for scheduling problems have appeared and developed over the past fifty years and earned a particular value to become a popular subject with a rich background of simple and complex algorithms and rules. In general, scheduling problems cover a broad range of practical problems. The scheduling problem is one of the most important combinatorial optimization problems. The most basic version is as follows: We are given $ n $ jobs $ \\{J_?, J_?, \\cdots, J_n\\} $ of varying processing times, which need to be scheduled on m machines with varying processing power, while trying to minimize the makespan. The makespan is the total processing times of the schedule. A mathematical statement of the problem can be made as follows: Let $ M=\\{M_{?},M_{?},\\cdots ,M_{m}\\} $ and $ J = \\{ J_{?}, J_{?}, \\cdots, J_{n} \\} $ be two finite sets. On account of the industrial origins of the problem, the $ M_{i} $ are called machines and the $ J_{j} $ are called jobs. Let $ \\mathcal{X} $ denote the set of all sequential assignments of jobs to machines, such that every job is done by every machine exactly once, elements $ x \\in \\mathcal{X} $ may be written as $ n\imes m $ matrices, in which column $ i $ lists the jobs that machine $ M_{i} $ will do, in order.