Project 3: Marriage Market

People are dating with a view to marriage. Each person has a profile of characteristics, and a profile of the ideal person that they are seeking. People go on dates, during which time they can sense the profile of the person they're with based on their behavior. During dates, people can also adjust their own behavior to project a profile that is different from their actual profile. At the end of a date, each person describes to the other, honestly or not, the ideal profile they're seeking.

People advertise themselves for dating by posting (a) one of their own characteristics, and (b) one of their desired characteristics. The choices for the advertisement are fixed for the entire simulation, and are not required to be truthful reflections of the player's actual characteristics/desires. Each person looking for a date (that's everybody on the first round) selects a subset of people they would be interested in dating based on the advertisements and past dating experience. It is OK to list somebody you previously dated. The simulator will then randomly assign pairs in which both people are interested in each other. If there are remaining people left, the simulator will choose pairs at random in which one person is interested in dating the other. If there are any people remaining then, they are paired at random. A person X who has previously dated a person Y can mark Y as incompatible, after which the simulator will never match X with Y again. In rare cases, this could lead to a person having no dates for a round.

After a date, a person can request another date with the same person. If both people make this request, the simulator will pair them first, before the random assignment. On second and subsequent dates, people are free to further adjust their behavior to project a different profile, and describe a different ideal partner profile. There is no limit to the number of repeat dates that can happen in this way.

After at least 2 dates with somebody, a person has the option to propose marriage to that somebody. If both people on the same round propose marriage to each other, then the marriage is settled, the pairing is fixed, and the two participants are removed from the dating pool. If only one person proposes marriage, then the simulation proceeds as before. However, the recipient of the proposal now knows that their date wanted to get married to them on that turn.

A person's profile consists of a number d of dimensions that are scored as integers between 0 and 10. For example, if a dimension corresponds to extroversion/introversion then 0 may correspond to very shy, while 10 may correspond to very outgoing. The distribution of values in a dimension is a parameter of the simulation. Some dimensions may be uniformly distributed between 0 and 10 while others may be roughly normally distributed. Some dimensions may be monotonic, i.e., bigger is generally more desirable, all else being equal.

A person p's true profile Tp is a d-dimensional vector of numbers. A person p's desired profile Dp is another d-dimensional vector of numbers, than could be very different from Tp (opposites attract!).

A person's happiness is calculated as follows at the end of the simulation.

Your primary goal: Achieve a positive happiness score by the end of the simulation as often as possible. Your secondary goal: Maximize your player's average happiness. You will be writing code to make decisions for a single person. Multiple groups' code might be used in a single simulation. Your code may be used for multiple people in a single simulation, perhaps all of them, one code instance per person.

Input parameters include:

Players also know their own profile and their desired ideal profile, but do not have access to other players' true profiles. Your code should not attempt in any way to bypass these restrictions, e.g., by sharing data structures between different instances of your code. Players do not know the probability distributions for a given simulation: they will need to go on a few dates if they want to gather data about the distributions.

Some things to think about: