Fix the diagonals for the MIP N-Queens
This commit is contained in:
parent
df40f93cf1
commit
b3a497f71d
@ -842,11 +842,14 @@ can then be rewritten as linear \glspl{constraint} using the \glspl{variable}
|
||||
following model shows a integer program of this problem.
|
||||
|
||||
\begin{align}
|
||||
\text{given} \hspace{2em} & N = {1,\ldots,n} & \\
|
||||
\text{maximise} \hspace{2em} & 0 & \\
|
||||
\text{subject to} \hspace{2em} & q_{i} \in \{1,\ldots{},n\} & \forall_{i=1}^{n} \\
|
||||
& y_{ij} \in \{0,1\} & \forall_{i=1}^{n} \forall_{j=1}^{n} \\
|
||||
\label{line:back-mip-channel} & x_{i} = \sum_{j=1}^{n} j * y_{ij} & \forall_{i=1}^{n} \\
|
||||
\label{line:back-mip-row} & \sum_{i=1}^{n} y_{ij} \leq 1 & \forall_{j=1}^{n}
|
||||
\text{subject to} \hspace{2em} & q_{i} \in N & \forall_{i \in N} \\
|
||||
& y_{ij} \in \{0,1\} & \forall_{i,j \in N} \\
|
||||
\label{line:back-mip-channel} & x_{i} = \sum_{j \in N} j * y_{ij} & \forall_{i \in N} \\
|
||||
\label{line:back-mip-row} & \sum_{i \in N} y_{ij} \leq 1 & \forall_{j \in N} \\
|
||||
\label{line:back-mip-diag1} & \sum_{i,j \in N. i + j =k} y_{ij} \leq 1 & \forall_{k=3}^{2n-1} \\
|
||||
\label{line:back-mip-diag2} & \sum_{i,j \in N. i - j =k} y_{ij} \leq 1 & \forall_{k=2-n}^{n-2}
|
||||
\end{align}
|
||||
|
||||
|
||||
@ -857,10 +860,8 @@ can then be rewritten as linear \glspl{constraint} using the \glspl{variable}
|
||||
\(q\). The \cref{line:back-mip-channel} is used to connect the \(q\) and \(y\)
|
||||
\glspl{variable} and make sure that their values correspond.
|
||||
\Cref{line:back-mip-row} ensures that only one queen is placed in the same
|
||||
row.
|
||||
|
||||
\jip{TODO: Fix diagonals}
|
||||
|
||||
row. Finally, \cref{line:back-mip-diag1,line:back-mip-diag2} constrain all
|
||||
diagonals to contain only one queen.
|
||||
\end{example}
|
||||
|
||||
\subsection{Boolean Satisfiability}%
|
||||
@ -900,13 +901,13 @@ most efficient way to solve the problem.
|
||||
\gls{sat} encoding for this problem is the following.
|
||||
|
||||
\begin{align}
|
||||
\text{given} \hspace{2em} & n & \\
|
||||
\text{find} \hspace{2em} & q_{ij} \in \{\text{true}, \text{false}\} & \forall_{i=1}^{n}\forall_{j=1}^{n} \\
|
||||
\label{line:back-sat-at-least}\text{subject to} \hspace{2em} & \exists_{j=1}^{n} q_{ij} & \forall_{i=1}^{n} \\
|
||||
\label{line:back-sat-row}& \neg q_{ij} \lor \neg q_{ik} & \forall_{i=1}^{n} \forall_{j=1}^{n} \forall_{k=j}^{n}\\
|
||||
\label{line:back-sat-col}& \neg q_{ij} \lor \neg q_{kj} & \forall_{i=1}^{n} \forall_{j=1}^{n} \forall_{k=i}^{n}\\
|
||||
\label{line:back-sat-diag1}& \neg q_{ij} \lor \neg q_{(i+k)(j+k)} & \forall_{i=1}^{n} \forall_{j=1}^{n} \forall_{k=1}^{min(n-i, n-j)}\\
|
||||
\label{line:back-sat-diag2}& \neg q_{ij} \lor \neg q_{(i+k)(j-k)} & \forall_{i=1}^{n} \forall_{j=1}^{n} \forall_{k=1}^{min(n-i, j)}
|
||||
\text{given} \hspace{2em} & N = {1,\ldots,n} & \\
|
||||
\text{find} \hspace{2em} & q_{ij} \in \{\text{true}, \text{false}\} & \forall_{i,j \in N} \\
|
||||
\label{line:back-sat-at-least}\text{subject to} \hspace{2em} & \exists_{j \in N} q_{ij} & \forall_{i \in N} \\
|
||||
\label{line:back-sat-row}& \neg q_{ij} \lor \neg q_{ik} & \forall_{i,j \in N} \forall_{k=j}^{n}\\
|
||||
\label{line:back-sat-col}& \neg q_{ij} \lor \neg q_{kj} & \forall_{i,j \in N} \forall_{k=i}^{n}\\
|
||||
\label{line:back-sat-diag1}& \neg q_{ij} \lor \neg q_{(i+k)(j+k)} & \forall_{i,j \in N} \forall_{k=1}^{min(n-i, n-j)}\\
|
||||
\label{line:back-sat-diag2}& \neg q_{ij} \lor \neg q_{(i+k)(j-k)} & \forall_{i,j \in N} \forall_{k=1}^{min(n-i, j)}
|
||||
\end{align}
|
||||
|
||||
The encoding of the problem uses a Boolean \gls{variable} for every position
|
||||
|
Reference in New Issue
Block a user