Now we are ready to quantify the information from the given meetings. The next step is to figure out
how
to represent this problem as a combinatorial optimization problem.
As the first step, we consider how to express variables to indicate in which meeting room each
meeting
will be held. However, binary variables such as QUBO variables and Ising variables cannot have an
arbitrary number of states. So, we assign decision variables as many as the number of meeting rooms to
each meeting.
For example, let $q_{i, r}$ be the variable that represents that the meeting $i$ will be held in the
meeting room $r$. We can think of it as assigning the meeting $i$ to the meeting room $r$ if $q_{i, r}
=
1$, and not assigning it if $q_{i, r} = 0$.
Meeting \ Room |
Room A |
Room B |
$\cdots$ |
Room H |
meeting 1 |
$q_{0,0}$ |
$q_{0,1}$ |
$\cdots$ |
$q_{0,7}$ |
meeting 2 |
$q_{1,0}$ |
$q_{1,1}$ |
$\cdots$ |
$q_{1,7}$ |
$\vdots$ |
$\vdots$ |
$\vdots$ |
$\cdots$ |
$\vdots$ |
meeting 19 |
$q_{19,0}$ |
$q_{19,1}$ |
$\cdots$ |
$q_{19,7}$ |
Next, consider the restriction that multiple meetings cannot be assigned to the same meeting room on
top
of each other.
We construct a list of meetings with overlapped schedules. For example, if there is a schedule
overlap
between meetings $i$ and $j$, we construct a tuple $(i, j)$ and store it in this list. "The problem of
assigning each meeting to a meeting room so that there is no schedule overlap" becomes "the problem of
arranging meetings so that if two meetings $(i, j)$ are included in the above list, they are not
assigned
to the same meeting room".
In the following, we use the check_overlap
function defined above to check for
overlapped
meeting schedules, and based on that, add two meetings $(i, j)$ that have overlapped schedules to the
overlaps
list.