It seems like you are looking for a solution with multiple swarms.
You can run a few optimizations for each number of "genes" you want to use.
Another option would be to add a variable holding the number of additional "genes" to the decision vector,and communicate only between particles that have that number equal. Then one needs a way to communicate between the swarms, and possibly ability for particles to join other of the swarms.
I refer to a paper by Niu et al. 2006 - "MCPSO: A multi-swarm cooperative particle swarm optimizer".
Hope that helps. Cheers!