Skip to contents

Model introduction

Consider a situation where an instructor wishes to divide students into groups. Each group will be allocated a topic tt, from a pool of topics 1,,T1,\ldots,T. It is possible that each topic tt is repeated RtR_t times across the class. In total, there are NN students in the class.

Suppose that students form their own groups, which they submit through a survey form. In total there are GG 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:

maxw1(i=1N1j=i+1Nt=1Tr=1Rtzijtrdij)+w2(sminsmax) \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 w1w_1 and w2w_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:

xgtr={1if group g is assigned to repetition r of topic t0otherwise\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}

smins_{min} and smaxs_{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:

t=1Tr=1Rtxgtr=1,g \sum_{t=1}^T \sum_{r=1}^{R_t} x_{gtr} = 1, \quad \forall g

Defining zijtrz_{ijtr}

zijtrz_{ijtr} is a binary variable, used to pick up whether the pairwise dissimilarity between student ii and student jj should be included in the objective function calculation.

zijtrg=1Gmigxgtr,i,j,t,rzijtrg=1Gmjgxgtr,i,j,t,rzijtrg=1Gmigxgtr+g=1Gmjgxgtr1,i,j,t,r\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. rminr_{min} and rmaxr_{max} are input variables that the instructor needs to set.

atrxgtr,t,ratrg=1Gxgtr,t,rr=1Rtatrrmin,tr=1Rtatrrmax,t\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.

i=1Ng=1Gmigxgtratrntrmin,t,ri=1Ng=1Gmigxgtratrntrmax,t,r\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.

i=1Ng=1Gmigxgtrsismin,t,ri=1Ng=1Gmigxgtrsismax,t,r\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

xgtr{0,1}atr{0,1}smin0smax0\begin{eqnarray} x_{gtr} &\in& \{0,1\} \\ a_{tr} &\in& \{0,1\} \\ s_{min} &\ge& 0 \\ s_{max} &\ge& 0 \end{eqnarray}