A discrete PSO for covering array generation