Skip to content

Commit

Permalink
Adding a precise definition of spread
Browse files Browse the repository at this point in the history
  • Loading branch information
jwarren-scottlogic committed Nov 8, 2024
1 parent 685ddf3 commit 85a1d51
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions _posts/2024-11-05-building-an-assignment-algorithm-3.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,37 @@ For example, imagine everyone had the exact same preferences in the last slot (u

Alternatively, let’s say we order the slots from an uneven spread of surplus difference to an even spread. Beginning with a slot of unevenly distributed surplus difference, everyone has the same talk preferences (as we finished with in the previous example). People in this slot would still get their third choices, but this time there are many slots for these attendees to get priority. Those who got their 3rd choice before, would be more likely to get first choices for the rest of the algorithmic process. Now for the last slot, there is an even spread of surplus difference, let’s say everyone’s first choice is for separate talks and they all receive their first choice. Since this algorithm has run over multiple slots already, we can assume the spread of compromise between the attendees is also very even. Since everyone gets their first choice, 0 compromise would be made, the spread of compromise remains even and everyone is happy.

<details><summary>Click here for a more precise definition of spread.</summary>
<br>
<p>
Spread is a measure given to a slot of how oversubscribed the talks that it contains are. For example, if a slot has many oversubscribed talks, it has an uneven spread and a high “spread score”. If there are no oversubscribed talks, there is an even spread.
</p>

<p>
The spread score is measured before any assignments are made. The process is as follows...

1. Each talk is given a “popular score” based on a sum of what choices people have made for that talk, minus a value for the capacity of the talk venue. If a talk has a high “popular score”, it is oversubscribed.
2. Order all the talks by the “popular score”, irrespective of slot to make a popularity list
3. For each talk, according to its ranking in the ordered popularity list, you accrue a value to the slot it’s part of. This is the slot’s “spread score”. ie if a talk is 1st in the popularity list of a 10 talk conference, you would +10 to the spread score of the slot it is from, the last talk in the list (least popular talk) would +1 to the spread score of the slot it is from.

The higher up the popularity list, the more oversubscribed the talk, the higher the value given to its associated slot. That is to say, the more oversubscribed talks a slot has, the higher its spread score, the more uneven its spread.
</p>

<h3>
The “popular score”, is given as follows:
</h3>

<p>
For every 1st choice someone made for a talk, the talk is given +20 to their popular score (irrespective of whether everyone gets this first choice). +8 for every 2nd choice and +3 for every 3rd choice. So for every choice a talk gets (no matter whether it's assigned or not)...

- 1st choice: +20
- 2nd choice: +8
- 3rd choice: +3

The value attached to the venue capacity which we minus from the sum of these choice values is the equivalent of the room capacity full of 1st choices. So if the capacity is 10 people, this would be the equivalent of 10 x 20 = 200.
</p>
</details>

The plot thickens if there are duplicate talks. Duplicate talks are the same talk given in different time slots - if for example, the talk is thought to be popular or important. Obviously, attendees shouldn’t attend the same talk twice, so care must be taken in not assigning the same talk twice. We won’t go into this in too much depth, but this does affect slot sorting.

<details><summary>Click here to find out how.</summary>
Expand Down

0 comments on commit 85a1d51

Please sign in to comment.