I recently wrote an article about a simple technique I called Localized Attraction Repulsion between particles. It is based on attraction / repulsion between particles, but the attraction and repulsion only works if 2 particles are under an attraction and repulsion range respectively.
The technique is described in the article on my blog (link in the readme of the github repo).
Repo of the source code: https://github.com/bcrespy/LocalizedAttractionRepulsion
Have fun !