You're planning to attend a big party. Some of your friends will be there, but many people will be strangers. Among the strangers is your unknown soulmate. Your goal is to have beneficial conversations with as many people as you can for three simulated hours. Friends are interesting to talk to, strangers less so, but your soulmate is particularly interesting. Also, you need to move around in order to find people and chat with them. The party takes place in a large square room measuring 20 meters on each side.
Each turn of the simulator corresponds to a 6-second chunk of real-world time. During any turn your player may attempt to do one of the following:
All players submit their orders together, and the outcome is resolved by the simulator using the following rules in sequence:
The purpose of a conversation is to accumulate gossip/wisdom/life-lessons, that come conveniently packaged in 6-second units. The wisdom that players can offer each other is captured in a two-dimensional array W. There are N players in the game, where N is a parameter, so W is an N by N array where W[i,j] represents the total wisdom that player i has to offer player j. (W[i,i] is not meaningful.) It is not always the case that W[i,j]=W[j,i].
On a turn when players i and j are chatting, each has the opportunity to collect a unit of wisdom from their partner. However, they will only obtain this wisdom if there is no other ``interfering'' player closer to them than their conversation partner (too hard to hear otherwise!). It therefore pays to try to start your conversations away from other players. Note that it is possible for one partner in the conversation to gain wisdom, while the other does not due to interference. If W[i,j] is nonzero and nobody is closer to j than i then the score of player j is incremented by one and W[i,j] is decremented by one. A symmetric outcome happens for player i. Once W[i,j] reaches zero, j has no further incentive to chat with i.
Players have special relationships with other players. Each player has f friends, s strangers, and one soulmate among the other players, where f+1+s = N. Players know who their friends are, but do not know who their soulmate is. Friendship is symmetric. If i is a friend of j then j is a friend of i and W[i,j]=W[j,i]=50. In other words, friends can chat productively for up to 5 minutes.
Soulmates are also symmetric, but with W[i,j]=W[j,i]=200. If i and j are neither friends nor soulmates, then W[i,j] is chosen at random from { 0, 10, 20 }. To balance the game, the simulator will make sure that each player has the same number of 0, 10 and 20 values among all strangers. For nonfriends, when player i chats with player j, player j learns W[i,j] and player i learns W[j,i]. Prior to that initial conversation, W[i,j] is unknown. Player i is unaware of the values of W[i,j] for strangers j.
Finally, your player can see only a radius of 6m around its current position. The simulator will tell you the positions of all players within that radius. (Your player is free to remember previous locations of players that have gone outside the 6m radius if that information would be helpful later.) If two players who are both within 6m are having a conversation, the simulator will make your player aware of this conversation. (How could that information be helpful?) The values of N, f, and s are known to each player at the start of the game.
We'll run several tournaments at the end of class using various parameter settings for N, f, and s. Large values of N are possible, in which case we'll use multiple instances of players from each group.
Ken Ross 2015-09-21