【文章內(nèi)容簡介】
(↓ pop : Individual[ ], ↓ op : Operator[ ]) → Individual[ ] variables buffer : Individual[ ][ ]。 j : [1..|op|]。 begin buffer[0] ← pop。 for j ← 1:|op| do buffer[j] ← ApplyOperator (op*j+, buffer*j ? 1+)。 End for。 Memetic Algorithm 2022/01/05 ? In essence, a mutation operator must generate a new solution by partly modifying an existing solution. This modification can be random –as it is typically the case– or can be endowed with problemdependent information so as to bias the search to probablygood regions of the search space MA Method Memetic Algorithm 2022/01/05 MA Method ? Pseudo code: ? Process LocalImprover (↓↑ current : Individual, ↓ op : Operator) variables new : Individual begin rep eat new ← ApplyOperator(op, current)。 if ( Fg (new) ? Fg(current)) then current ← new。 end if until LocalImproverTerminationCriterion()。 return current。 end Memetic Algorithm 2022/01/05 MA Method ? After having presented the innards of the generation process, we can now have access to the larger picture. The functioning of a MA consists of the iteration of this basic generational step Pseudo code: Process MA () → Individual[ ] variables pop : Individual[ ]。 begin pop ← GenerateInitialPopulation()。 rep eat pop ← DoGeneration (pop) if Converged(pop) then pop ← RestartPopulation(pop)。 end if until MATerminationCriterion() end Memetic Algorithm 2022/01/05 MA Method ? The GenerateInitialPopulation process is responsible for creating the initial set of | pop| configurations Pseudo code: Process GenerateInitialPopulation (↓ 181。 : N) → Individual[ ] variables pop : Individual[ ]。 ind : Individual。 j : [1..181。]。 begin for j ← 1:181。 do ind ← GenerateRandomSolution()。 pop[j] ← LocalImprover (ind)。 endfor return pop end Memetic Algorithm 2022/01/05 MA Method ? Consider that the population may reach a state in which the generation of new improved solution be very unlikely Pseudo code: Pro cess RestartPopulation (↓ pop : Individual[ ])→ Individual[ ] variables newpop : Individual[ ]。 j, preserved