In (1) a problem is discussed where an optimization model can help us.
We want to set up \(N\) business dinners attended by customers and suppliers with the following peculiarities:
- there are \(T\) tables,
- we need to seat \(C\) customers and \(S\) suppliers,
- at most \(Maxc\) customers and at most \(Maxs\) suppliers can sit at a single table,
- a customer \(c\) and supplier \(s\) must sit at the same table exactly once,
- two suppliers can only sit at the same table at most once
We want to minimize the number of dinners \(N\) we need to organize such that all these constraints are met.
![]()
Restaurant Flo in Barcelona, Spain [link]
The data
We use the example data from (1):
- 6 customers, 5 suppliers
- \(Maxc=3\), \(Maxs=2\)
- 2 tables
A (non-optimal) solution is given:
An MINLP model
We start with our central binary variable \(x_{i,t,n}\in\{0,1\}\) indicating if person \(i\) sits at table \(t\) in dinner round \(n\). With this we can develop a Mixed Integer Nonlinear Programming model:
| \[\boxed{\begin{align} \min\>&\sum_n y_n \\ &\sum_t x_{i,t,n} \le 1 &&\forall i,n&&\text{sit at one table}\\ &\sum_s x_{s,t,n} \le Maxs &&\forall t,n&&\text{limit suppliers at table}\\ &\sum_c x_{c,t,n} \le Maxc &&\forall t,n&&\text{limit customers at table}\\ &\sum_{t,n} x_{c,t,n}\cdot x_{s,t,n} = 1&&\forall c,s&&\text{customers and suppliers meet exactly once}\\ &\sum_{t,n} x_{s1,t,n} \cdot x_{s2,t,n} \le 1&&\forall s1,s2&&\text{suppliers sit at most once at the same table}\\ &y_n = \max_{i,t} \{x_{i,t,n}\} && \forall n &&\text{we need a dinner round}\\ &x_{i,t,n},y_n \in \{0,1\} \end{align}}\] |
We have some binary multiplications in here and a \(\max\) function. These constructs can be linearized with a little bit of effort.
A linearized model
The binary multiplication can be linearized using a standard reformulation:
| \[\begin{matrix} \boxed{\begin{align}&z=x\cdot y\\ &x,y,z\in \{0,1\}\end{align}}&\Longleftrightarrow& \boxed{\begin{align}&z \le x\\&z \le y\\&z\ge x+y-1\\&x,y,z\in \{0,1\}\end{align}} \end{matrix}\] |
Other tricks we can use:
- When checking if suppliers \(s1,s2\) are at the same table, we can skip comparing \(s2,s1\). Similarly we don’t need to check \(s1,s1\). Hence we only compare \(s1,s2\) with \(s1<s2\).
- We can simplify the binary multiplication further in the supplier case: we only need to make sure that \(z \ge x+y-1\). That will save us some constraints.
- The constraint \(y_n = \max_{i,t} \{x_{i,t,n}\}\) can be written as a collection of inequalities \(y_n \ge x_{i,t,n}\) (we use the objective to help us drive down \(y_n\)).
- Optionally we can require that \(y_n \ge y_{n+1}\), This makes the solutions more readable but also reduces symmetry.
The complete linearized model can look like:
An optimal solution is:
References
- Alejandra Estanislao, Frédéric Meunier, “A Business Dinner Problem”, Journal of Combinatorial Mathematics and Combinatorial Computing, 97, 173-188, 2016. [link]