В поисках соседей (таких как я)

Закончил чтение для нового курса Model Thinker про модель Шеллинга, которая говорит о том, что люди стараются поселиться, чтобы вокруг было как минимум некоторое количество соседей были ровней (по доходу/образованию или другим признакам).

Эта модель позволяет продемонстрировать как даже легкая неприязнь отдельных людей к, скажем, инаковости (образованности, например) соседа приводит к появлению настоящих гетто, как на карте.

В самом простом случае на кольце могут проживать m магистров и n аспирантов + некоторое количество свободных мест. Каждый воспринимает как личное пространство двух (или какое-то другое) человек справа и слева.

Далее на каждом шаге выбирается недовольный индивид, доля похожих на него соседей для которому кажется неприемлемой, и переселяется на случайное свободное место. Процедура повторяется до тех пор пока не останется недовольных/надоест.

Я построил небольшую демонстрацию для Mathematica, которая позволяет посмотреть на процесс:
1) До массовых переселений

2) Все счастливы:
На Demonstrations уже есть иллюстрация модели Шеллинга, но она не слишком хороша, так как автор решает проблему определения соседей жестко задавая их индексы (там это в коде сразу видно), что лишает его возможности:
1) изменять размер личного пространства для индивидов (кол-во соседей которые учитываются при расчете доли похожих).
2) использовать другие способы расселения индивидов (например, на случайном графе).
В моем случае, населить случайных граф очень просто:
  
В поисках соседей (таких как я)