Very nice simulation, very interesting to play around with.
I think in your function createPosition one line should be changed to
DeleteDuplicates[
Join[positions,
Select[Round@RandomPoint[region, n - Length[positions]],
memberq]]];
in stead of
DeleteDuplicates[
Join[positions,
Select[Round@RandomPoint[region, 200 - Length[positions]],
memberq]]];