Lassen Sie uns drei Integer-Variablen für Integer-Programmierung haben annehmen, also:Integer Programming: Modell Einzigartigkeit von Integer-Variablen
a \in {1,2,3}
b \in {1,2,3}
c \in {1,2,3}
Jetzt will ich modellieren, dass alle Variablen unterschiedlich sind. Natürlich kann ich für jede Kombination folgendes machen (drei in diesem Fall). Ich zeige es mit a und b.
a <= b - 1 + bin1 * bigM
a >= b + 1 - (1 - bin1) * bigM
bin1 \in {0, 1}
Gibt es einen einfacheren Weg ohne viele neue Constraints, bigMs und binäre Variablen zu erzeugen?
Ich kenne keine bessere Formulierung mit linearer Programmierung. Ich denke, das geht nicht, da es sich um ein kombinatorisches Optimierungsproblem handelt. Constraint-Programming-Solver/Sprachen implementieren globale Constraints, siehe [z3 Distinct] (http://z3prover.github.io/api/html/namespacez3py.html#aa79af225f3b27b84fef346c257d2e406) und [Minizinc all_different] (http://www.minizinc.org /2.0/doc-lib/doc-globals-alldifferent.html) zum Beispiel. – Emilien