add PSO algorithm