170 likes | 188 Views
How to Play Sudoku & Win. Integer Programming Formulation of a Popular Game Sven Leyffer , Argonne, Feb. 15, 2005. (windoze powerpoint sumi painting style). Sudoku Rules. Given initial data Fill digits 1-9 into boxes such that Every digit 1-9 appears in every row, column, and 3x3 box.
E N D
How to Play Sudoku & Win Integer Programming Formulation of a Popular Game Sven Leyffer, Argonne, Feb. 15, 2005 (windoze powerpoint sumi painting style)
Sudoku Rules • Given initial data • Fill digits 1-9 into boxes such that • Every digit 1-9 appears in every row, column, and 3x3 box. • Works for letters, names etc.
Solving Sudoku • Eliminate rows & cols from 3x3 box • E.g. eliminate 2 from 3x3 box:
Solving Sudoku • Eliminate rows & cols from 3x3 box • E.g. eliminate 2 from 3x3 box: • Gives new 2
Solving Sudoku • Eliminate rows & cols from 3x3 box • E.g. eliminate 2 from 3x3 box: • Gives new 2 • Continue …
Solving Sudoku • Eliminate rows & cols from 3x3 box • E.g. eliminate 2 from 3x3 box: • Gives new 2 • Continue … • … fill other digits
Solving Sudoku • Eliminate rows & cols from 3x3 box • E.g. eliminate 2 from 3x3 box: • Gives new 2 • Continue … • … fill other digits • Fill 3x3 boxes
Solving Sudoku by Integer Optimization • 0-1 variables model digit assignment & linear equations model rules … gives integer linear program (ILP) • NP-complete (graph coloring) problem (6,670,903,752,021,072,936,960 sols) • Solve using ILP solvers: CPLEX, MINTO • See ~leyffer/sudoku/ for AMPL models
Branch-and-Bound Solver • Solve continuous relaxation: [0,1] • Branch on non-integral variable: • Two new probs: • Set y=1 or y=0 • Continue until all nodes explored
Solution to Simple Example • Solver: CPLEX • Simple Problem: • Time: 0 • Nodes: 0 … AMPL presolve • Challenging Problem • Time: 0.03 seconds • Nodes: 0 … integral LP soln
Sudokus Without Solutions • No solution • AMPL/CPLEX: • Infeasible constraints by presolve • Proof of non-existence of solution
Sudokus With Multiple Solutions • Many solution • AMPL/MINTO: • Find first solution • Integer cuts to remove solution • Resolve to find new solution • Stop when infeasible • Soln at root node • what’s the secret?
AMPL’s Primal Presolve • Transform problem to smaller/easier equivalent problem • Remove fixed variables • Remove constraints that express variable bounds • Iteratively tighten bounds on variables, using Gauss-Seidel • Todd has experience with NCP presolve!
MINTO’s Primal Heuristics • Find solution early … reduce tree-search • Probing: tentatively set binaries to 0 or 1 • Rounding & feasibility pump • LP relaxation: solution x … round to r(x) • Solve LP min dist(y,r(x)) subject to Ax=b • LP solution y … round to r(y) & repeat • Heuristics: genetic algorithms, et al.
Integer Optimization Applications • Crew scheduling • Machine scheduling • Reactor core reload: • Max fuel efficiency • Subject to safety & diffusion PDE • Find reloading schedule…integer & nonlinear
Constrained Logic Programming • CLP origins: AI & logic • CLP: declarative language to formulate logical problems, scheduling etc • CLP: combines constraints with logic & constraint satisfaction • CLP allows tailored solutions/rules • CHIP, ECLiPSe, GNU Prolog, IF/Prolog, ILOG, Koalog, MOzart, and SICStus
References: • Wikipedia: en.wikipedia.org/wiki/Sudoku • Th. Koch: How to Solve Sudoku … • M.J. Chlond: IP Modeling: Su Doku (05) • W. Shortz: Sudoku – 100 wordless puzzles • Fourer & Gay: AMPL’s Primal Presolve (93) • Sudoku Programmers Forum Thanks and Enjoy the Puzzles!