--- title: "Maximising Diversity and Balancing Skill" output: rmarkdown::html_vignette: toc: true toc_depth: 2 vignette: > %\VignetteIndexEntry{Maximising Diversity and Balancing Skill} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` # Model introduction Consider a situation where an instructor wishes to divide students into groups. Each group will be allocated a topic $t$, from a pool of topics $1,\ldots,T$. It is possible that each topic $t$ is repeated $R_t$ times across the class. In total, there are $N$ students in the class. Suppose that students form their own groups, which they submit through a survey form. In total there are $G$ groups; each student appears in exactly 1 group. In addition, we have the following information about each student: 1. Information that can be used to compute dissimilarities between pairs of students. Examples are: the major of the student (STEM vs. non-STEM), gender, year-of-study, etc. 2. Information on the skill level pertinent to your class, or to the problem they will be working on. This model allows you to maximise the diversity within a group and minimise the difference in skill within groups. # Objective function The overall objective function can be written as: $$ \max \quad w_1 \left( \sum_{i=1}^{N-1} \sum_{j=i+1}^N \sum_{t=1}^T \sum_{r=1}^{R_t} z_{ijtr} \cdot d_{ij} \right) + w_2 (s_{min} - s_{max}) $$ where $w_1$ and $w_2$ are weights. They indicate which half of the objective function should be given priority. # Constraints ## Group to topic-repetition combination First, let us introduce the decision variable of interest: \begin{equation} x_{gtr} = \begin{cases} 1 & \text{if group $g$ is assigned to repetition $r$ of topic $t$} \\ 0 & \text{otherwise} \end{cases} \end{equation} $s_{min}$ and $s_{max}$ are also decision variables. The objective function attempts to minimise the difference between them, ensuring all groups have a similar range of total skill. This first constraint represents the need for each group to be assigned to exactly one topic-repetition combination: $$ \sum_{t=1}^T \sum_{r=1}^{R_t} x_{gtr} = 1, \quad \forall g $$ ## Defining $z_{ijtr}$ $z_{ijtr}$ is a binary variable, used to pick up whether the pairwise dissimilarity between student $i$ and student $j$ should be included in the objective function calculation. \begin{eqnarray} z_{ijtr} &\le& \sum_{g=1}^G m_{ig} \cdot x_{gtr}, \quad \forall i,j,t,r \\ z_{ijtr} &\le& \sum_{g=1}^G m_{jg} \cdot x_{gtr}, \quad \forall i,j,t,r \\ z_{ijtr} &\ge& \sum_{g=1}^G m_{ig} \cdot x_{gtr} + \sum_{g=1}^G m_{jg} \cdot x_{gtr} - 1, \quad \forall i,j,t,r \end{eqnarray} ## Number of repetitions per topic This set of constraints serve to regulate the total number of repetitions for each topic. $r_{min}$ and $r_{max}$ are input variables that the instructor needs to set. \begin{eqnarray} a_{tr} &\ge& x_{gtr},\quad \forall t,r \\ a_{tr} &\le& \sum_{g=1}^G x_{gtr},\quad \forall t,r \\ \sum_{r=1}^{R_t} a_{tr} &\ge& r_{min},\quad \forall t \\ \sum_{r=1}^{R_t} a_{tr} &\le& r_{max},\quad \forall t \end{eqnarray} ## Number of students per group A similar set of constraints are used to bound the number of students in each eventually assigned group. \begin{eqnarray} \sum_{i=1}^N \sum_{g=1}^G m_{ig} \cdot x_{gtr} &\ge& a_{tr} \cdot n^{min}_{tr}, \quad \forall t,r \\ \sum_{i=1}^N \sum_{g=1}^G m_{ig} \cdot x_{gtr} &\le& a_{tr} \cdot n^{max}_{tr}, \quad \forall t,r \end{eqnarray} ## Per-group skill levels We aim to maintain the skill level within each group using the following constraints. \begin{eqnarray} \sum_{i=1}^N \sum_{g=1}^G m_{ig} \cdot x_{gtr} \cdot s_i &\ge& s_{min}, \quad \forall t,r \\ \sum_{i=1}^N \sum_{g=1}^G m_{ig} \cdot x_{gtr} \cdot s_i &\le& s_{max}, \quad \forall t,r \\ \end{eqnarray} ## Binary and non-negativity constraints \begin{eqnarray} x_{gtr} &\in& \{0,1\} \\ a_{tr} &\in& \{0,1\} \\ s_{min} &\ge& 0 \\ s_{max} &\ge& 0 \end{eqnarray}