This program models a cocktail party.  The party is
made up of groups of both men and women.  The partygoers have a
TOLERANCE that defines how many people of the opposite sex
they are comfortable with.  If they are in a group that has 
a higher percentage of people of the opposite sex than their
TOLERANCE allows, then they are considered "uncomfortable", 
and they leave that group to find another group.  This action 
continues until everyone at the party is "comfortable" within their
This model is based on the work of the pioneering economist Thomas
Schelling. It is also described in: Resnick, M. & Wilensky, U. (1998).
Diving into Complexity: Developing Probabilistic Decentralized
Thinking through Role-Playing Activities. Journal of Learning
Sciences, Vol. 7, No. 2.

	To set the inital number of people, use the NUMBER slider. 
To set the tolerance of the people, use the TOLERANCE
slider.  If the TOLERANCE slider is set to 75, then each
person can be in a group with less than or equal to 75% people of the
opposite sex.  If there are more than this, the person is
uncomfortable, and he/she leaves the group and finds
another.  The SETUP button sets up all the people into
random groups.  The SPREAD-PEOPLE button shows the
initial composition of each group by spreading them along
the vertical dimension.  GROUP-PEOPLE puts the groups
back together.  The GO button sets the party in motion, and
the STEP-ONCE button makes all uncomfortable partygoers move
once.  The SPEED slider can speed up or slow down the
simulation.  The units are in tenths of a second.
The NUMBER-HAPPY monitor shows how many people are content. 
 The SINGLE-SEX-GROUPS monitor shows
the number of single-sex groups.  These "single-sex" groups are
flagged with a yellow patch. 
When the simulation ends (everyone is happy), the
SPREAD-PEOPLE button shows the ending composition of each group.



  At the end of the simulation (when everyone is happy),
  notice the number of single-sex groups.  Is there an
  increase from their initial compositions?

  Is there a critical tolerance at which each group ends up
  being a single-sex group?

  Notice the difference in time it takes for all groups to be
  comfortable depending upon the tolerance.

  See how many mixed groups (not a single-sex group)
  you can get.
  Use the STEP-ONCE button, and experiment with different
  tolerances.  Watch how one unhappy person can disrupt
  the stability of other groups.

  Is it possible to have an initial grouping such that the
  party is never completely content? (i.e. the model never terminates)

  Observe real parties. Is this model descriptive of real social
  What tolerances would model the people in the real party?


Add another dimension to the model.  Instead of male/female,
try a trait that has more than two types, like race or
religion. You can use BREEDS to implement that.

Allow each BREED of person to have their own tolerance.

Complicate the tolerance rules: For example, the tolerance
could go up as long as there are at least 2 of one BREED.

Allow groups to subdivide, instead of finding new groups.

Set a maximum group size, so that if there are too many
people in the group, they become unhappy.


Notice the use of the "mod" function with a portion of the
"screen-size" to space out the groups evenly. Setting up 
the groups in this manner allows for easy movement from
group to group.


Pond - segregation patterns


Schelling, T. (1978). Micro-motives and Macro-Behavior. New York:

Resnick, M. & Wilensky, U. (1998). Diving into Complexity: Developing
Probabilistic Decentralized Thinking through Role-Playing Activities.
Journal of Learning Sciences, Vol. 7, No. 2.