From 9c48fd7879561149462c9a82d700535f4c9b7b6e Mon Sep 17 00:00:00 2001 From: jwarren-scottlogic Date: Mon, 21 Oct 2024 14:48:47 +0100 Subject: [PATCH 01/16] algorithm3 --- ...uilding-an-assignment-algorithm-3.markdown | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 _posts/2024-10-21-building-an-assignment-algorithm-3.markdown diff --git a/_posts/2024-10-21-building-an-assignment-algorithm-3.markdown b/_posts/2024-10-21-building-an-assignment-algorithm-3.markdown new file mode 100644 index 0000000000..fce5596334 --- /dev/null +++ b/_posts/2024-10-21-building-an-assignment-algorithm-3.markdown @@ -0,0 +1,120 @@ +--- +title: Building an Assignment Algorithm - Episode 3 / 3 +date: 2024-08-16 9:22:00 Z +categories: +- Algorithms +tags: +- Algorithms +summary: How we built an assignment algorithm, the third and final blog in the series. +author: jwarren +--- + + + + +In the first two blogs in this series, we looked at the mechanics of how we assigned talks to attendees algorithmically for a conference. This involved: + +1. Sorting by surplus difference: Looking ahead, seeing what talks are more popular and thereafter ordering attendees accordingly. Calculating who would need to compromise (if at all) on their first choice for an optimal result. +2. Sorting by aggregate compromise: Examining how attendees compromising over multiple time slots. Sorting the attendees in a way that avoided an individual(s) being the sacrificial lamb and taking the burden of all the compromise. +3. The interplay between these two sorting methods: How surplus difference and aggregate compromise had to be combined and run simultaneously, for the algorithm to give an optimal result. + +In this third and final blog in the series, we will look at how ordering the slots can make a substantial difference to the outcome of the algorithm. We will also look at how all the elements of the algorithm discussed in the past 3 blogs in this series come together. You can find the [first blog here]({{site.baseurl}}/2024/08/16/building-an-assignment-algorithm-1.html), and the [second blog here]({{site.baseurl}}/2024/08/16/building-an-assignment-algorithm-2.html). + +## Slot Sorting + +We assign talks one timeslot at a time. However, what time slot should we start with? Would the order even make a difference? + +Since we do assign talks according to compromise, any mass accumulation of compromise in one slot will be evened out in the subsequent slot(s). However, if there is a mass accumulation of compromise in the last slot (that assignments are made in), then there won’t be any scope for this to be evened-out. Therefore, we decided that we wanted to make all the difficult decisions, high in compromise, earlier on in the process. Meaning that there would be space for compromise to be evened out amongst the attendees, after having run the process through the rest of the slots. That is to say, the slots with the least even-spread of surplus difference should go first. + +For example, imagine everyone had the exact same preferences in the last slot (unevenly distributed preferences), with talks having a capacity constraint. Furthermore, let’s say the compromise levels are all equal because the algorithm has managed to be very fair up to this final slot. Everyone having the same preferences would lead to a few people getting 3rd choices. So, the end result of the algorithm is unfortunately unfair for some individuals, because there’s a lack of slots left to compensate any compromise. + +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 only getting first (and occasionally second) 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. + +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. + +
Click the 'more' button to find out how. +Firstly, slots containing the most duplicate talks go first. Duplicate talks are put at the front so that the most forced choices happen at the beginning, meaning that the attendees’ aggregate compromise has time (/remaining slots to assign) to even out, in comparison to other attendees, by the end of the algorithm. + +Next, we sort by how spread-out choices are. Duplicate talk slots with an even spread of choices to go first. This way, users aren't assigned a bad set of choices because the good assignments are no longer possible. This would be due to the previously assigned slots, which were oversubscribed (and therefore compromise high). Whereas as we discussed earlier, we want non-duplicate talk slots with a small spread (ie as many oversubscribed talks as possible) to go first. This is so that again, we generate as much compromise at the beginning of the algorithm run as possible, which will then even out over all the delegates by the end. After trialling and testing this method, we found it led to optimal results. +
+
+There is one more element to the algorithm that we haven’t introduced yet, which is needed before we bring everything together. + +## Under Subscribed Talk Assignments: + +If there is an undersubscribed talk (there are less people than the talks prescribed minimum attendees), then users are moved from other groups into this group. Users are chosen from other groups as follows… + +Pick an attendee with the under subscribed talk as a 2nd choice, from the most overly subscribed talk possible. If no attendees have this under subscribed talk as a second choice, the process begins again for attendees with this as a 3rd choice etc. This process then repeats until the under subscribed talk's prescribed min attendees has been reached. + +## Bringing it all together + +So how do all these elements of the algorithm come together as a single flow, the accumulation of everything shared in this blog series? + +Here is the list of steps to be taken for the algorithm: + +1. Data (of attendee choices) is collected and formatted +2. Slots are sorted +3. For each slot, groups are made for every talk in that slot, and then attendees are initially put into groups based on their first choice +4. Next, attendees are assigned talks +
    +
  1. Attendees are first of all sorted by comparing their personal compromise and personal surplus difference (ie how much they have already had to compromise, and what is the potential for compromising in the future if they don’t get the current choice talk).
  2. +
  3. If a talk is undersubscribed, then attendees from other groups are moved into this group.
  4. +
  5. Then attendees are added into groups until a group has reached max capacity. When this occurs, the remaining attendees are moved into different groups according to their next choice (as long as they have not already been assigned this talk in a previous slot).
  6. +
+5. Slot compromise for each user is calculated and then added to their aggregate compromise + +You can find a flowchart with more detail below: +
+ +
+(The first slide is the overview, then each subsequent slide describes one step in that overview). + + +## Conclusion + +In this blog we looked at how we ordered slots, what to do with undersubscribed talk assignments and then how all the elements in the past 3 blogs string together into a unified whole. Thank you for sticking with me through this algorithm journey. It wasn’t light reading, and you’ve done well to make it to the end. I hope you have found some useful insights to take away and possibly even found a means to apply them to your own projects. + +Designing this app taught me much about algorithm design. It’s important to start with a high-level skeletal structure, and then with this structure, meat can be put on the bones for precision and clarity. I suppose this is true for planning most projects. The fact that surprised me the most was that some tiny details could have a significant effect on the output of an algorithm, such as how slot sorting was inverted depending on the presence of duplicate talks. I certainly enjoyed this challenge and look forward to the next opportunity to do something similar. \ No newline at end of file From 28d19d85cb2c67b98b86bf48c9cdecb038528269 Mon Sep 17 00:00:00 2001 From: jwarren-scottlogic Date: Mon, 21 Oct 2024 15:18:01 +0100 Subject: [PATCH 02/16] updating category and iframe so it will build --- .../2024-10-21-building-an-assignment-algorithm-3.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_posts/2024-10-21-building-an-assignment-algorithm-3.markdown b/_posts/2024-10-21-building-an-assignment-algorithm-3.markdown index fce5596334..1bd15c0a2b 100644 --- a/_posts/2024-10-21-building-an-assignment-algorithm-3.markdown +++ b/_posts/2024-10-21-building-an-assignment-algorithm-3.markdown @@ -1,8 +1,8 @@ --- title: Building an Assignment Algorithm - Episode 3 / 3 -date: 2024-08-16 9:22:00 Z +date: 2024-08-16 9:30:00 Z categories: -- Algorithms +- Tech tags: - Algorithms summary: How we built an assignment algorithm, the third and final blog in the series. @@ -106,7 +106,7 @@ You can find a flowchart with more detail below:
-
From 3d1deb8ce3dc1f3b8ea070e6cb9c8b388cdfb84e Mon Sep 17 00:00:00 2001 From: jwarren-scottlogic Date: Mon, 4 Nov 2024 14:45:05 +0000 Subject: [PATCH 03/16] Correcting algorithm blog links --- _posts/2024-10-24-building-an-assignment-algorithm-1.markdown | 2 +- _posts/2024-11-04-building-an-assignment-algorithm-2.markdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_posts/2024-10-24-building-an-assignment-algorithm-1.markdown b/_posts/2024-10-24-building-an-assignment-algorithm-1.markdown index 98884302ec..a076bb4b78 100644 --- a/_posts/2024-10-24-building-an-assignment-algorithm-1.markdown +++ b/_posts/2024-10-24-building-an-assignment-algorithm-1.markdown @@ -180,4 +180,4 @@ The weight gives more emphasis to the surplus difference if a user’s current g ### What's next? -So you may be wondering, how do we define and measure compromise? And how can we do this over the course of multiple slots? These are good questions and will be answered in the next blog in the series. We’ll also get into the nitty gritty of the maths behind it all. Stay tuned! +So you may be wondering, how do we define and measure compromise? And how can we do this over the course of multiple slots? These are good questions and are covered in the [next blog in the series]({{site.baseurl}}/2024/11/04/building-an-assignment-algorithm-2.html). We’ll also get into the nitty gritty of the maths behind it all. Stay tuned! diff --git a/_posts/2024-11-04-building-an-assignment-algorithm-2.markdown b/_posts/2024-11-04-building-an-assignment-algorithm-2.markdown index bd864406ac..9b686475ee 100644 --- a/_posts/2024-11-04-building-an-assignment-algorithm-2.markdown +++ b/_posts/2024-11-04-building-an-assignment-algorithm-2.markdown @@ -68,7 +68,7 @@ author: jwarren -Last year, we were given the task to create a conference talk-assignment-algorithm, for our company’s internal conferences. In the [first blog]({{site.baseurl}}/2024/08/16/building-an-assignment-algorithm-1.html), we explored how to assign talks in a single time slot, which is really the bedrock of the algorithm. However, looking at the bigger picture, being fair across multiple time slots is also highly important. +Last year, we were given the task to create a conference talk-assignment-algorithm, for our company’s internal conferences. In the [first blog]({{site.baseurl}}/2024/10/24/building-an-assignment-algorithm-1.html), we explored how to assign talks in a single time slot, which is really the bedrock of the algorithm. However, looking at the bigger picture, being fair across multiple time slots is also highly important. We would not want the same attendees to always get their second choice, or worse still their third choice across multiple slots. Therefore, to be able to empirically measure this, we conceptualised the amount by which a single attendee has received different choices in the past as a value called “compromise”. For example, an attendee didn’t get their first choice, so they had to compromise with a second/third choice. From 41f39a39507eb69b7dbe1697f37d3860c34005df Mon Sep 17 00:00:00 2001 From: jwarren-scottlogic Date: Wed, 6 Nov 2024 11:57:36 +0000 Subject: [PATCH 04/16] PR-ready tweaks --- .spelling | 1 + ...uilding-an-assignment-algorithm-2.markdown | 2 +- ...ilding-an-assignment-algorithm-3.markdown} | 39 ++++++++++--------- 3 files changed, 23 insertions(+), 19 deletions(-) rename _posts/{2024-10-21-building-an-assignment-algorithm-3.markdown => 2024-11-05-building-an-assignment-algorithm-3.markdown} (89%) diff --git a/.spelling b/.spelling index 884e511554..62ad7338de 100644 --- a/.spelling +++ b/.spelling @@ -1057,3 +1057,4 @@ NetApp PWC GeoGuessr Dyno +undersubscribed diff --git a/_posts/2024-11-04-building-an-assignment-algorithm-2.markdown b/_posts/2024-11-04-building-an-assignment-algorithm-2.markdown index 9b686475ee..5c86b1fc4d 100644 --- a/_posts/2024-11-04-building-an-assignment-algorithm-2.markdown +++ b/_posts/2024-11-04-building-an-assignment-algorithm-2.markdown @@ -260,4 +260,4 @@ The value of 2.72 comes from the fact that for a normal distribution, 95.4% of v ## Conclusion -In this blog we have seen how we can measure and maintain fairness across multiple time slots using the idea of compromise. We have also seen how this interacts with sorting surplus differences and how it’s important to find a balance between the two. In the next and final blog in this series, we will look at how ordering time slots can make a significant difference to the outcome of the algorithm, along with concluding how the algorithm comes together as a whole. +In this blog we have seen how we can measure and maintain fairness across multiple time slots using the idea of compromise. We have also seen how this interacts with sorting surplus differences and how it’s important to find a balance between the two. In the [next and final blog in this series]({{site.baseurl}}/2024/11/11/building-an-assignment-algorithm-3.html), we will look at how ordering time slots can make a significant difference to the outcome of the algorithm, along with concluding how the algorithm comes together as a whole. diff --git a/_posts/2024-10-21-building-an-assignment-algorithm-3.markdown b/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown similarity index 89% rename from _posts/2024-10-21-building-an-assignment-algorithm-3.markdown rename to _posts/2024-11-05-building-an-assignment-algorithm-3.markdown index 1bd15c0a2b..7a4369f6c9 100644 --- a/_posts/2024-10-21-building-an-assignment-algorithm-3.markdown +++ b/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown @@ -1,23 +1,22 @@ --- title: Building an Assignment Algorithm - Episode 3 / 3 -date: 2024-08-16 9:30:00 Z +date: 2024-11-05 9:30:00 Z categories: - Tech tags: - Algorithms -summary: How we built an assignment algorithm, the third and final blog in the series. +summary: The final installment of the assignment algorithm series! This blog covers the last piece of the puzzle - slot sorting, as well as wrapping up all that has been discussed in the previous 2 episodes. author: jwarren --- - +The third and final blog of the series, well done for making it thus far! We will look at the last piece of the puzzle - slot sorting, which can make a substantial difference to the outcome of our algorithm. Then we will wrap up - looking at how all the elements of the algorithm discussed in the past 3 blogs in this series come together. You can find the [first blog here]({{site.baseurl}}/2024/10/24/building-an-assignment-algorithm-1.html), and the [second blog here]({{site.baseurl}}/2024/11/04/building-an-assignment-algorithm-2.html). + In the first two blogs in this series, we looked at the mechanics of how we assigned talks to attendees algorithmically for a conference. This involved: 1. Sorting by surplus difference: Looking ahead, seeing what talks are more popular and thereafter ordering attendees accordingly. Calculating who would need to compromise (if at all) on their first choice for an optimal result. 2. Sorting by aggregate compromise: Examining how attendees compromising over multiple time slots. Sorting the attendees in a way that avoided an individual(s) being the sacrificial lamb and taking the burden of all the compromise. -3. The interplay between these two sorting methods: How surplus difference and aggregate compromise had to be combined and run simultaneously, for the algorithm to give an optimal result. - -In this third and final blog in the series, we will look at how ordering the slots can make a substantial difference to the outcome of the algorithm. We will also look at how all the elements of the algorithm discussed in the past 3 blogs in this series come together. You can find the [first blog here]({{site.baseurl}}/2024/08/16/building-an-assignment-algorithm-1.html), and the [second blog here]({{site.baseurl}}/2024/08/16/building-an-assignment-algorithm-2.html). +3. The interplay between these two sorting methods: How surplus difference and aggregate compromise had to be combined and run simultaneously, for the algorithm to give an optimal result. + +
## Slot Sorting @@ -71,11 +66,16 @@ Alternatively, let’s say we order the slots from an uneven spread of surplus d 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. -
Click the 'more' button to find out how. +
Click here to find out how. +
+

Firstly, slots containing the most duplicate talks go first. Duplicate talks are put at the front so that the most forced choices happen at the beginning, meaning that the attendees’ aggregate compromise has time (/remaining slots to assign) to even out, in comparison to other attendees, by the end of the algorithm. - +

+

Next, we sort by how spread-out choices are. Duplicate talk slots with an even spread of choices to go first. This way, users aren't assigned a bad set of choices because the good assignments are no longer possible. This would be due to the previously assigned slots, which were oversubscribed (and therefore compromise high). Whereas as we discussed earlier, we want non-duplicate talk slots with a small spread (ie as many oversubscribed talks as possible) to go first. This is so that again, we generate as much compromise at the beginning of the algorithm run as possible, which will then even out over all the delegates by the end. After trialling and testing this method, we found it led to optimal results. +

+
There is one more element to the algorithm that we haven’t introduced yet, which is needed before we bring everything together. @@ -103,6 +103,7 @@ Here is the list of steps to be taken for the algorithm: 5. Slot compromise for each user is calculated and then added to their aggregate compromise You can find a flowchart with more detail below: +
@@ -110,8 +111,10 @@ You can find a flowchart with more detail below: src="https://www.canva.com/design/DAGUMczeZ0g/zzjhOfeMNDN88TuDguYPyg/view?embed" allowfullscreen="allowfullscreen" allow="fullscreen">
-(The first slide is the overview, then each subsequent slide describes one step in that overview). +(The first slide is the overview, then the subsequent slides describes each step from the overview). + +
## Conclusion From 685ddf3f9317ec503d438b56a33219b2cea94cd9 Mon Sep 17 00:00:00 2001 From: jwarren-scottlogic Date: Fri, 8 Nov 2024 13:56:32 +0000 Subject: [PATCH 05/16] First iteration of Chris' comments --- ...uilding-an-assignment-algorithm-3.markdown | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown b/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown index 7a4369f6c9..e866e1c532 100644 --- a/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown +++ b/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown @@ -44,25 +44,25 @@ author: jwarren } -The third and final blog of the series, well done for making it thus far! We will look at the last piece of the puzzle - slot sorting, which can make a substantial difference to the outcome of our algorithm. Then we will wrap up - looking at how all the elements of the algorithm discussed in the past 3 blogs in this series come together. You can find the [first blog here]({{site.baseurl}}/2024/10/24/building-an-assignment-algorithm-1.html), and the [second blog here]({{site.baseurl}}/2024/11/04/building-an-assignment-algorithm-2.html). +The third and final blog of the series, well done for making it thus far! We will look at the last piece of the puzzle - slot sorting, which can make a substantial difference to the outcome of our algorithm. Then we will wrap up - looking at how all the elements of the algorithm discussed in this series come together. You can find the [first episode here]({{site.baseurl}}/2024/10/24/building-an-assignment-algorithm-1.html), and the [second episode here]({{site.baseurl}}/2024/11/04/building-an-assignment-algorithm-2.html). -In the first two blogs in this series, we looked at the mechanics of how we assigned talks to attendees algorithmically for a conference. This involved: +In the first two episodes in this series, we looked at the mechanics of how we assigned talks to attendees algorithmically for a conference. This involved: 1. Sorting by surplus difference: Looking ahead, seeing what talks are more popular and thereafter ordering attendees accordingly. Calculating who would need to compromise (if at all) on their first choice for an optimal result. -2. Sorting by aggregate compromise: Examining how attendees compromising over multiple time slots. Sorting the attendees in a way that avoided an individual(s) being the sacrificial lamb and taking the burden of all the compromise. -3. The interplay between these two sorting methods: How surplus difference and aggregate compromise had to be combined and run simultaneously, for the algorithm to give an optimal result. +2. Sorting by aggregate compromise: Examining how attendees compromise over multiple time slots. Sorting the attendees in a way that avoided an individual(s) being the sacrificial lamb and taking the burden of all the compromise. +3. The interplay between these two sorting methods: How surplus difference and aggregate compromise must be combined and run simultaneously, for the algorithm to give an optimal result.
## Slot Sorting -We assign talks one timeslot at a time. However, what time slot should we start with? Would the order even make a difference? +We assign talks one time slot at a time. However, what time slot should we start with? Would the order even make a difference? Since we do assign talks according to compromise, any mass accumulation of compromise in one slot will be evened out in the subsequent slot(s). However, if there is a mass accumulation of compromise in the last slot (that assignments are made in), then there won’t be any scope for this to be evened-out. Therefore, we decided that we wanted to make all the difficult decisions, high in compromise, earlier on in the process. Meaning that there would be space for compromise to be evened out amongst the attendees, after having run the process through the rest of the slots. That is to say, the slots with the least even-spread of surplus difference should go first. For example, imagine everyone had the exact same preferences in the last slot (unevenly distributed preferences), with talks having a capacity constraint. Furthermore, let’s say the compromise levels are all equal because the algorithm has managed to be very fair up to this final slot. Everyone having the same preferences would lead to a few people getting 3rd choices. So, the end result of the algorithm is unfortunately unfair for some individuals, because there’s a lack of slots left to compensate any compromise. -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 only getting first (and occasionally second) 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. +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. 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. @@ -79,11 +79,11 @@ Next, we sort by how spread-out choices are. Duplicate talk slots with an even s
There is one more element to the algorithm that we haven’t introduced yet, which is needed before we bring everything together. -## Under Subscribed Talk Assignments: +## Undersubscribed Talk Assignments: -If there is an undersubscribed talk (there are less people than the talks prescribed minimum attendees), then users are moved from other groups into this group. Users are chosen from other groups as follows… +If there is an undersubscribed talk (there are less people than the talk's prescribed minimum attendees), then users are moved from other groups into this group. Users are chosen from other groups as follows… -Pick an attendee with the under subscribed talk as a 2nd choice, from the most overly subscribed talk possible. If no attendees have this under subscribed talk as a second choice, the process begins again for attendees with this as a 3rd choice etc. This process then repeats until the under subscribed talk's prescribed min attendees has been reached. +Pick an attendee with the undersubscribed talk as a 2nd choice, from the most oversubscribed talk possible. If no attendees have this undersubscribed talk as a second choice, the process begins again for attendees with this as a 3rd choice and so on. This process then repeats until the undersubscribed talk's prescribed minimum attendees has been reached. ## Bringing it all together @@ -102,7 +102,7 @@ Here is the list of steps to be taken for the algorithm: 5. Slot compromise for each user is calculated and then added to their aggregate compromise -You can find a flowchart with more detail below: +Here is a flowchart of the process:
+
  • Sum the "popularity rankings" (not popularity score) of a slot's talks. This is the slot’s “spread score”.
  • - -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. +For example, if a talk is 1st in the popularity list of a 10 talk conference, its popularity ranking is 10, which would be added to the spread score of the slot it is from. The last talk in the list (least popular talk) would have a popularity ranking of 1, which would be added 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.

    @@ -93,9 +92,11 @@ The “popular score”, is given as follows:

    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 +

      +
    1. 1st choice: +20
    2. +
    3. 2nd choice: +8
    4. +
    5. 3rd choice: +3
    6. +
    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.

    From e5974a5b7842d169e51919c92b8728562c650d7d Mon Sep 17 00:00:00 2001 From: jwarren-scottlogic Date: Tue, 12 Nov 2024 17:23:16 +0000 Subject: [PATCH 09/16] further refinement of the expanding box --- ...-building-an-assignment-algorithm-3.markdown | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown b/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown index 232febf2ea..60cf049143 100644 --- a/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown +++ b/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown @@ -76,13 +76,16 @@ Spread is a measure given to each slot, representing how oversubscribed the talk

    The spread score is calculated before any assignments are made, using the following process... +

      -
    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. -
    3. Order all the talks by the “popular score”, irrespective of slot to make a popularity list. It's order in the popularity list is its "popularity ranking"
    4. -
    5. Sum the "popularity rankings" (not popularity score) of a slot's talks. This is the slot’s “spread score”.
    6. +
    7. The popularity score: Each talk is given a “popular score” based on a sum of what choices people have made for that talk, minus a value representing the capacity of the talk venue. If a talk has a high “popular score”, it is oversubscribed. More details are given at the end of this expanding section.
    8. +
    9. The popularity ranking: order all the talks by the “popular score”, irrespective of slot to make a popularity list. Its order in the popularity list is its "popularity ranking"
    10. +
    11. The spread score: For each talk in a slot, sum the value calculated by subtracting each talk's "popularity ranking" from the total number of talks (in the whole conference). This is the slot’s “spread score”.
    -For example, if a talk is 1st in the popularity list of a 10 talk conference, its popularity ranking is 10, which would be added to the spread score of the slot it is from. The last talk in the list (least popular talk) would have a popularity ranking of 1, which would be added 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. + +

    +For example, if a talk is 1st in the popularity list of a 10 talk conference, its popularity ranking is 1 (being first), which would add 10-1=9 to the spread score of the slot it is from. The last talk in the list (least popular talk) would have a popularity ranking of 10, which would add 1-1=0 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.

    @@ -91,13 +94,15 @@ The “popular score”, is given as follows:

    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.

    From e291485d4d70172dad0d6f49dc0ca2b5444780da Mon Sep 17 00:00:00 2001 From: jwarren-scottlogic Date: Tue, 12 Nov 2024 17:55:47 +0000 Subject: [PATCH 10/16] expanding box - further tweaks --- ...uilding-an-assignment-algorithm-3.markdown | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown b/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown index 60cf049143..b4f1714ee1 100644 --- a/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown +++ b/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown @@ -79,21 +79,42 @@ The spread score is calculated before any assignments are made, using the follow

      -
    1. The popularity score: Each talk is given a “popular score” based on a sum of what choices people have made for that talk, minus a value representing the capacity of the talk venue. If a talk has a high “popular score”, it is oversubscribed. More details are given at the end of this expanding section.
    2. -
    3. The popularity ranking: order all the talks by the “popular score”, irrespective of slot to make a popularity list. Its order in the popularity list is its "popularity ranking"
    4. -
    5. The spread score: For each talk in a slot, sum the value calculated by subtracting each talk's "popularity ranking" from the total number of talks (in the whole conference). This is the slot’s “spread score”.
    6. +
    7. The intial oversubscribed score: Each talk is given an "intial oversubscribed score” based on a sum of what choices people have made for that talk, minus a value representing the capacity of the talk venue. More details are given at the end of this expanding section.
    8. +
    9. The oversubscribed ranking: Order all the talks by the "intial oversubscribed score", irrespective of slot to make an oversubscribed list. A talk's order in the oversubscribed list is its "oversubscribed ranking"
    10. +
    11. The relative oversubscribed score: Subtract each talk's "oversubscribed ranking" from the total number of talks (in the whole conference).
    12. +
    13. The spread score: For all the talks in a given slot, sum the relative oversubscribed score. This is the slot’s “spread score”.

    -For example, if a talk is 1st in the popularity list of a 10 talk conference, its popularity ranking is 1 (being first), which would add 10-1=9 to the spread score of the slot it is from. The last talk in the list (least popular talk) would have a popularity ranking of 10, which would add 1-1=0 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. +For example, if a talk is the most oversubscribed in the "oversubscribed list" from a 10 talk conference: +

    + +
      +
    • The talk's intial oversubscribed ranking = 1
    • +
    • The relative oversubscribed score = 10-1 = 9
    • +
    • +9 to the slot's "spread score", for the slot which the talk is part of.
    • +
    + +

    +For the last talk in the "oversubscribed list": +

    + +
      +
    • The talk's intial oversubscribed ranking = 10
    • +
    • The relative oversubscribed score = 10-10 = 0
    • +
    • +0 to the slot's "spread score", for the slot which the talk is part of.
    • +
    + +

    +The more oversubscribed the talk, the higher the value given to its associated slot's "spread score". Therefore, the more oversubscribed talks a slot has, the higher its spread score, the more uneven its spread.

    -The “popular score”, is given as follows: +The "intial oversubscribed score”, is given as follows:

    -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)... +For every 1st choice someone made for a talk, the talk is given +20 to their initial oversubscribed 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)...

      From 13d3458150c98ad78042f0fb3827f84abc8fe6cb Mon Sep 17 00:00:00 2001 From: jwarren-scottlogic Date: Tue, 12 Nov 2024 18:13:23 +0000 Subject: [PATCH 11/16] Final refinment --- ...uilding-an-assignment-algorithm-3.markdown | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown b/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown index b4f1714ee1..fae646f447 100644 --- a/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown +++ b/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown @@ -79,38 +79,38 @@ The spread score is calculated before any assignments are made, using the follow

        -
      1. The intial oversubscribed score: Each talk is given an "intial oversubscribed score” based on a sum of what choices people have made for that talk, minus a value representing the capacity of the talk venue. More details are given at the end of this expanding section.
      2. -
      3. The oversubscribed ranking: Order all the talks by the "intial oversubscribed score", irrespective of slot to make an oversubscribed list. A talk's order in the oversubscribed list is its "oversubscribed ranking"
      4. -
      5. The relative oversubscribed score: Subtract each talk's "oversubscribed ranking" from the total number of talks (in the whole conference).
      6. -
      7. The spread score: For all the talks in a given slot, sum the relative oversubscribed score. This is the slot’s “spread score”.
      8. +
      9. The initial oversubscribed score: Each talk is given an initial oversubscribed score based on a sum of what choices people have made for that talk, minus a value representing the capacity of the talk venue. More details are given at the end of this expanding section.
      10. +
      11. The oversubscribed ranking: Order all the talks by the initial oversubscribed score, irrespective of slot to make an "oversubscribed list". A talk's order in the oversubscribed list is its oversubscribed ranking
      12. +
      13. The relative oversubscribed score: Subtract each talk's oversubscribed ranking from the total number of talks in the whole conference. Note we don't subtract this from the number of talks in a slot.
      14. +
      15. The spread score: For all the talks in a given slot, sum the relative oversubscribed scores. This is the slot’s “spread score”.

      -For example, if a talk is the most oversubscribed in the "oversubscribed list" from a 10 talk conference: +For example, if a Talk A from Slot-1 is the most oversubscribed in the oversubscribed list from a 10 talk conference:

        -
      • The talk's intial oversubscribed ranking = 1
      • -
      • The relative oversubscribed score = 10-1 = 9
      • -
      • +9 to the slot's "spread score", for the slot which the talk is part of.
      • +
      • Talk A's initial oversubscribed ranking = 1
      • +
      • Talk A's relative oversubscribed score = 10-1 = 9
      • +
      • +9 to the Slot-1's spread score

      -For the last talk in the "oversubscribed list": +For Talk B from Slot-2, the last talk in the oversubscribed list (the least oversubscribed):

        -
      • The talk's intial oversubscribed ranking = 10
      • -
      • The relative oversubscribed score = 10-10 = 0
      • -
      • +0 to the slot's "spread score", for the slot which the talk is part of.
      • +
      • Talk B's initial oversubscribed ranking = 10
      • +
      • Talk B's relative oversubscribed score = 10-10 = 0
      • +
      • +0 to the Slot-2's spread score.

      -The more oversubscribed the talk, the higher the value given to its associated slot's "spread score". Therefore, the more oversubscribed talks a slot has, the higher its spread score, the more uneven its spread. +The more oversubscribed the talk, the higher the value given to its associated slot's spread score. Therefore, the more oversubscribed talks a slot has, the higher its spread score, the more uneven its spread.

      -The "intial oversubscribed score”, is given as follows: +The initial oversubscribed score, is given as follows:

      From ce8c86390c8c48803e71a97cd7b029b85cf2e939 Mon Sep 17 00:00:00 2001 From: jwarren-scottlogic Date: Wed, 13 Nov 2024 10:35:49 +0000 Subject: [PATCH 12/16] Changing date + adding in maths equations --- ...ilding-an-assignment-algorithm-3.markdown} | 52 ++++++++++++------- 1 file changed, 32 insertions(+), 20 deletions(-) rename _posts/{2024-11-05-building-an-assignment-algorithm-3.markdown => 2024-11-13-building-an-assignment-algorithm-3.markdown} (85%) diff --git a/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown b/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown similarity index 85% rename from _posts/2024-11-05-building-an-assignment-algorithm-3.markdown rename to _posts/2024-11-13-building-an-assignment-algorithm-3.markdown index fae646f447..3273a9bb72 100644 --- a/_posts/2024-11-05-building-an-assignment-algorithm-3.markdown +++ b/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown @@ -1,6 +1,6 @@ --- title: Building an Assignment Algorithm - Episode 3 / 3 -date: 2024-11-05 9:30:00 Z +date: 2024-11-13 9:30:00 Z categories: - Tech tags: @@ -44,6 +44,11 @@ author: jwarren } + + + The third and final post of the series, well done for making it this far! We will look at the last piece of the puzzle - slot sorting, which can make a substantial difference to the outcome of our algorithm. Then we will wrap up - looking at how all the elements of the algorithm discussed in this series come together. You can find the [first episode here]({{site.baseurl}}/2024/10/24/building-an-assignment-algorithm-1.html), and the [second episode here]({{site.baseurl}}/2024/11/04/building-an-assignment-algorithm-2.html). In the first two episodes in this series, we looked at the mechanics of how we assigned talks to attendees algorithmically for a conference. This involved: @@ -79,29 +84,29 @@ The spread score is calculated before any assignments are made, using the follow

        -
      1. The initial oversubscribed score: Each talk is given an initial oversubscribed score based on a sum of what choices people have made for that talk, minus a value representing the capacity of the talk venue. More details are given at the end of this expanding section.
      2. +
      3. The initial oversubscribed score: Each talk is given an initial oversubscribed score based on a sum of what choices people have made for that talk, minus the "venue capacity score". More precise details are given at the end of this expanding section.
      4. The oversubscribed ranking: Order all the talks by the initial oversubscribed score, irrespective of slot to make an "oversubscribed list". A talk's order in the oversubscribed list is its oversubscribed ranking
      5. -
      6. The relative oversubscribed score: Subtract each talk's oversubscribed ranking from the total number of talks in the whole conference. Note we don't subtract this from the number of talks in a slot.
      7. +
      8. The relative oversubscribed score: Subtract each talk's oversubscribed ranking from the total number of talks in the whole conference. Note we don't subtract this from the number of talks in a slot.
      9. The spread score: For all the talks in a given slot, sum the relative oversubscribed scores. This is the slot’s “spread score”.

      -For example, if a Talk A from Slot-1 is the most oversubscribed in the oversubscribed list from a 10 talk conference: +For example, if a Talk-A from Slot-1 is the most oversubscribed in the oversubscribed list from a 10 talk conference:

        -
      • Talk A's initial oversubscribed ranking = 1
      • -
      • Talk A's relative oversubscribed score = 10-1 = 9
      • +
      • Talk-A's initial oversubscribed ranking = 1
      • +
      • Talk-A's relative oversubscribed score = 10-1 = 9
      • +9 to the Slot-1's spread score

      -For Talk B from Slot-2, the last talk in the oversubscribed list (the least oversubscribed): +For Talk-B from Slot-2, the last talk in the oversubscribed list (the least oversubscribed):

        -
      • Talk B's initial oversubscribed ranking = 10
      • -
      • Talk B's relative oversubscribed score = 10-10 = 0
      • +
      • Talk-B's initial oversubscribed ranking = 10
      • +
      • Talk-B's relative oversubscribed score = 10-10 = 0
      • +0 to the Slot-2's spread score.
      @@ -109,23 +114,30 @@ For Talk B from Slot-2, the last talk in the oversubscribed list (the least over The more oversubscribed the talk, the higher the value given to its associated slot's spread score. Therefore, the more oversubscribed talks a slot has, the higher its spread score, the more uneven its spread.

      -

      -The initial oversubscribed score, is given as follows: +

      +Calculating the initial oversubscribed score:

      -

      -For every 1st choice someone made for a talk, the talk is given +20 to their initial oversubscribed 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)... -

      +\[IOS = \sum_{i=1}^{nst} CSᵢ - VCS\] -
        -
      • 1st choice: +20
      • -
      • 2nd choice: +8
      • -
      • 3rd choice: +3
      • -
      +Where... +\[IOS = ${Initial Oversubscribed Score,}\] +\[nst = ${number of slot talks}\] +\[CSᵢ = ${i^th talk's Choice Score} \\ + = \begin{cases} + 20 & \text{if 1st choice} \\ + 8 & \text{if 2nd choice} \\ + 3 & \text{if 3rd choice} \\ + \end{cases}\] +\[VCS = ${Venue Capacity Score} = ${Venue Capacity} x 20 \]

      -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. +We are assuming there are ony 3 choices here. The choice score is given irrespective of whether everyone gets this first choice. This means that one attendee given a slot of 3 choices will effectively be assigning 3 different choice scores to 3 different talks, no matter which talk is assigned to the attendee in the end. +

      +

      +The value attached to the venue capacity score 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. This accounts for a popular talk having a large venue - it would not necessarily be oversubscribed.

      +
      From 4eab3a6e8d7f8411f7e395665dddf8fbaa500ff2 Mon Sep 17 00:00:00 2001 From: jwarren-scottlogic Date: Wed, 13 Nov 2024 10:51:49 +0000 Subject: [PATCH 13/16] mathjax formatting --- ...uilding-an-assignment-algorithm-3.markdown | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown b/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown index 3273a9bb72..59d64f3ecb 100644 --- a/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown +++ b/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown @@ -121,18 +121,23 @@ Calculating the initial oversubscribed score: \[IOS = \sum_{i=1}^{nst} CSᵢ - VCS\] Where... -\[IOS = ${Initial Oversubscribed Score,}\] -\[nst = ${number of slot talks}\] -\[CSᵢ = ${i^th talk's Choice Score} \\ - = \begin{cases} - 20 & \text{if 1st choice} \\ - 8 & \text{if 2nd choice} \\ - 3 & \text{if 3rd choice} \\ - \end{cases}\] -\[VCS = ${Venue Capacity Score} = ${Venue Capacity} x 20 \] +\[ +\begin{align*} +\text{IOS} &= \text{Initial Oversubscribed Score}, \\ +\text{nst} &= \text{number of slot talks}, \\ +\text{CS}_i &= \text{i-th talk's Choice Score} + = + \begin{cases} + 20 & \text{if 1st choice}, \\ + 8 & \text{if 2nd choice}, \\ + 3 & \text{if 3rd choice} + \end{cases}, \\ +\text{VCS} &= \text{Venue Capacity Score} = \text{Venue Capacity} \times 20 +\end{align*} +\]

      -We are assuming there are ony 3 choices here. The choice score is given irrespective of whether everyone gets this first choice. This means that one attendee given a slot of 3 choices will effectively be assigning 3 different choice scores to 3 different talks, no matter which talk is assigned to the attendee in the end. +We are assuming there are ony 3 choices here. The choice score is given irrespective of whether everyone gets this first choice. This means that 1 attendee given a slot of 3 choices will effectively be assigning 3 different choice scores to 3 different talks, in this singular slot, no matter which talk is assigned to the attendee in the end.

      The value attached to the venue capacity score 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. This accounts for a popular talk having a large venue - it would not necessarily be oversubscribed. From 2f55f3444a1349c7ea8b6fbd32d48303ca9d0324 Mon Sep 17 00:00:00 2001 From: jwarren-scottlogic Date: Wed, 13 Nov 2024 11:03:27 +0000 Subject: [PATCH 14/16] further equation tweaks --- ...uilding-an-assignment-algorithm-3.markdown | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown b/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown index 59d64f3ecb..404efa3346 100644 --- a/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown +++ b/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown @@ -97,7 +97,7 @@ For example, if a Talk-A from Slot-1 is the most oversubscribed in the oversubsc

      • Talk-A's initial oversubscribed ranking = 1
      • Talk-A's relative oversubscribed score = 10-1 = 9
      • -
      • +9 to the Slot-1's spread score
      • +
      • +9 to Slot-1's spread score

      @@ -107,7 +107,7 @@ For Talk-B from Slot-2, the last talk in the oversubscribed list (the least over

      • Talk-B's initial oversubscribed ranking = 10
      • Talk-B's relative oversubscribed score = 10-10 = 0
      • -
      • +0 to the Slot-2's spread score.
      • +
      • +0 to Slot-2's spread score.

      @@ -117,27 +117,32 @@ The more oversubscribed the talk, the higher the value given to its associated s

      Calculating the initial oversubscribed score:

      +

      +The Initial Oversubscribed Score (IOS) is given by the following equation. +

      -\[IOS = \sum_{i=1}^{nst} CSᵢ - VCS\] +\[IOS = \sum_{i=1}^{n} CSᵢ - VCS\] Where... \[ \begin{align*} -\text{IOS} &= \text{Initial Oversubscribed Score}, \\ -\text{nst} &= \text{number of slot talks}, \\ -\text{CS}_i &= \text{i-th talk's Choice Score} +n &= \text{number of talks in a slot}, \\ +\text{CS}_i &=\text{i}^{\text{th}} \text{ talk's Choice Score} = \begin{cases} 20 & \text{if 1st choice}, \\ 8 & \text{if 2nd choice}, \\ 3 & \text{if 3rd choice} - \end{cases}, \\ + \end{cases} \\ \text{VCS} &= \text{Venue Capacity Score} = \text{Venue Capacity} \times 20 \end{align*} \]

      -We are assuming there are ony 3 choices here. The choice score is given irrespective of whether everyone gets this first choice. This means that 1 attendee given a slot of 3 choices will effectively be assigning 3 different choice scores to 3 different talks, in this singular slot, no matter which talk is assigned to the attendee in the end. +In the above maths equations, we are assuming there are ony 3 choices in a slot. +

      +

      +The choice score is given for every choice made - 1st, 2nd and 3rd - irrespective of what choice is assigned ot the attendee in the end. For example, 1 attendee given a slot of 3 choices will effectively be making 3 different choice scores for 3 different talks, in this singular slot.

      The value attached to the venue capacity score 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. This accounts for a popular talk having a large venue - it would not necessarily be oversubscribed. From 62a0dde8970b318456e0f634acf42e09be3b75c2 Mon Sep 17 00:00:00 2001 From: jwarren-scottlogic Date: Wed, 13 Nov 2024 11:14:44 +0000 Subject: [PATCH 15/16] Final tweaks math jax --- ...11-13-building-an-assignment-algorithm-3.markdown | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown b/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown index 404efa3346..09e2f74563 100644 --- a/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown +++ b/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown @@ -91,7 +91,7 @@ The spread score is calculated before any assignments are made, using the follow

      -For example, if a Talk-A from Slot-1 is the most oversubscribed in the oversubscribed list from a 10 talk conference: +For example, if Talk-A from Slot-1 is the most oversubscribed in the oversubscribed list from a 10 talk conference:

        @@ -115,10 +115,10 @@ The more oversubscribed the talk, the higher the value given to its associated s

        -Calculating the initial oversubscribed score: +Calculating the Initial Oversubscribed Score:

        -The Initial Oversubscribed Score (IOS) is given by the following equation. +The Initial Oversubscribed Score (IOS) is given by the following equation...

        \[IOS = \sum_{i=1}^{n} CSᵢ - VCS\] @@ -126,14 +126,14 @@ The Initial Oversubscribed Score (IOS) is given by the following equation. Where... \[ \begin{align*} -n &= \text{number of talks in a slot}, \\ +n &= \text{number of talks in a slot}, \\[1em] \text{CS}_i &=\text{i}^{\text{th}} \text{ talk's Choice Score} = \begin{cases} 20 & \text{if 1st choice}, \\ 8 & \text{if 2nd choice}, \\ 3 & \text{if 3rd choice} - \end{cases} \\ + \end{cases} \\[1em] \text{VCS} &= \text{Venue Capacity Score} = \text{Venue Capacity} \times 20 \end{align*} \] @@ -142,7 +142,7 @@ n &= \text{number of talks in a slot}, \\ In the above maths equations, we are assuming there are ony 3 choices in a slot.

        -The choice score is given for every choice made - 1st, 2nd and 3rd - irrespective of what choice is assigned ot the attendee in the end. For example, 1 attendee given a slot of 3 choices will effectively be making 3 different choice scores for 3 different talks, in this singular slot. +The choice score is given for every choice made - 1st, 2nd and 3rd - irrespective of what choice is assigned ot the attendee in the end. For example, 1 attendee given a slot of 3 choices will effectively be making 3 different choice scores for 3 different talks in this singular slot.

        The value attached to the venue capacity score 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. This accounts for a popular talk having a large venue - it would not necessarily be oversubscribed. From e63a734e9014fed81a2f54157ba4c065b0adbdc6 Mon Sep 17 00:00:00 2001 From: jwarren-scottlogic Date: Wed, 13 Nov 2024 12:14:40 +0000 Subject: [PATCH 16/16] Further tweaks - margin in list, choice score definition --- .../2024-11-13-building-an-assignment-algorithm-3.markdown | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown b/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown index 09e2f74563..3399162192 100644 --- a/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown +++ b/_posts/2024-11-13-building-an-assignment-algorithm-3.markdown @@ -42,6 +42,9 @@ author: jwarren details { font-style: italic; } + li + li { + margin-top: 10px; + } @@ -126,7 +129,7 @@ The Initial Oversubscribed Score (IOS) is given by the following equation... Where... \[ \begin{align*} -n &= \text{number of talks in a slot}, \\[1em] +n &= \text{number of choices made in a slot}, \\[1em] \text{CS}_i &=\text{i}^{\text{th}} \text{ talk's Choice Score} = \begin{cases} @@ -142,7 +145,7 @@ n &= \text{number of talks in a slot}, \\[1em] In the above maths equations, we are assuming there are ony 3 choices in a slot.

        -The choice score is given for every choice made - 1st, 2nd and 3rd - irrespective of what choice is assigned ot the attendee in the end. For example, 1 attendee given a slot of 3 choices will effectively be making 3 different choice scores for 3 different talks in this singular slot. +A choice score is given for every choice made irrespective of what choice is assigned to the attendee in the end. For example, 1 attendee given a slot of 3 talks will make 3 choices - 1st, 2nd and 3rd - which effectively will make 3 different choice scores in this singular slot.

        The value attached to the venue capacity score 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. This accounts for a popular talk having a large venue - it would not necessarily be oversubscribed.