In Denmark, a rather substantial amount of work and effort has gone into reducing bullying in the Danish public schools. Many initiatives, which purposes are to strengthen the unity and solidarity in the individual classes, have been introduced (and this with quite remarkable results actually).
One of these initiatives is the so-called “Dinner with friends” initiative. The idea is that the kids in a class should go home to each other for dinner in small groups of four to five kids. These visits to each other’s homes should happen approximately 6 times a year (three times in the fall and three times in the spring) and each time the groups are different such that the kids get to visit and dine with as many of their class mates as possible. The reasoning behind the initiative is that you do not bully those with whom you have dined.
Making such a “Dinner with friends”-plan is obviously a combinatorial optimization problem (at least it is to me)!
The plan for the 6 events during the year should be such that
- at most 5 kids go to the same dinner arrangement
- at least two girls and two boys go to each dinner arrangement,
- all kids should try to be the host of a dinner at least once a year,
- if kid $j$ is host at a dinner, then this kid cannot be a host for the next event (for the sake of the parents)
- Each kid should go to exactly one dinner on each of the event days (possibly as a host)
The objective is to maximize the number of different pairings of kids during the events. That is, if $z_{ij}$ is a binary variable equaling one if kids $i$ and $j$ go to the same dinner at least once during the 6 events, then the objective is to maximize the sum over these $z_{ij}$-variables.
I have a working ILP formulation using the following variables:
- binary $y_j^e$-variables that equal one if kid $j$ is host at event $e$,
- binary $x_{ij}^e$-variables equaling one if kid $i$ goes to kid $j$’s house during event $e$,
- binary $z_{ij}$-variables equaling one if kids $i$ and $j$ go to the same dinner at least once during the six events.
However, my model is not very elegant! Therefore, I have two questions:
- Is this a known problem in the literature? To me, it is somewhat similar to graph partitioning but not all the way there. There is also an element of scheduling in the problem, but I am embarrassingly unfamiliar with the scheduling literature.
- I have a feeling that this problem could be formulated much more elegantly with different variables. Could you suggest a way to formulate the problem elegantly?