How to Play Sudoku & Win Integer Programming Formulation of a

Download Report

Transcript How to Play Sudoku & Win Integer Programming Formulation of a

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

1 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.

7 9 4 2 3 8 9 4 4 6 2 9 6 3 7 1 6 9 2 5 1 7 6 9 8 2 4 5 7 6 3

Solving Sudoku

1 Eliminate rows & cols from 3x3 box E.g. eliminate 2 from 3x3 box : 7 2 3 8 9 4 4 9 6 2 4 9 2 5 7 6 6 3 8 9 7 1 6 2 9 5 1 4 7 6 3

Solving Sudoku

1 Eliminate rows & cols from 3x3 box E.g. eliminate 2 from 3x3 box : Gives new 2 7 2 2 8 9 4 4 3 9 2 6 2 9 4 5 7 6 6 3 8 9 7 1 6 2 9 5 1 4 7 6 3

Solving Sudoku

1 Eliminate rows & cols from 3x3 box E.g. eliminate 2 from 3x3 box : Gives new 2 Continue … 7 2 9 2 3 8 9 4 4 6 3 2 5 1 9 2 9 8 7 1 6 2 4 6 2 9 4 7 6 5 7 6 3

Solving Sudoku

1 Eliminate rows & cols from 3x3 box E.g. eliminate 2 from 3x3 box : Gives new 2 Continue … … fill other digits 7 2 9 2 3 8 9 4 4 6 2 9 6 3 2 8 2 7 1 6 9 2 5 1 9 2 4 4 2 7 6 5 7 6 2 3

Solving Sudoku

1 Eliminate rows & cols from 3x3 box E.g. eliminate 2 from 3x3 box : Gives new 2 Continue … … fill other digits 7 2 9 2 3 8 9 4 4 6 2 9 6 3 2 8 4 9 2 5 1 9 5 2 7 1 6 2 4 Fill 3x3 boxes 4 2 7 6 5 7 6 2 3

Solving Sudoku by Integer Optimization 0-1 variables model digit assignment & linear equations … model rules gives integer linear program (ILP) NP-complete See (graph coloring) problem (6,670,903,752,021,072,936,960 sols) Solve using ILP solvers: CPLEX, MINTO ~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

1 7 5 4 9 6 3 Solver: CPLEX Simple Problem: Time: 0 Nodes: 0 … AMPL presolve Challenging Problem Time: 0.03 seconds Nodes: 0 … integral LP soln 8 6 4 9 3 8 5 2 7 2 5 9 3 1 4 2 3 7 1 4 8 9 4 4 6 2 9 3 5 6 1 6 8 3 6 7 7 1 6 9 2 5 1 5 3 4 8 7 1 1 2 8 7 6 2 9 8 8 5 2 3 7 4 5 9 5 8 7 6 1 9 2 4 3

Sudokus Without Solutions

1 6 3 No solution AMPL/CPLEX: Infeasible constraints by presolve Proof of non existence of solution 7 9 2 3 8 9 4 4 6 2 9 8 9 8 7 1 6 9 2 5 1 2 4 4 7 6 5 7 6 3

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? 1 7 9 6 2 9 7 9 6 3 5 1 7 6 6 2 4 3

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 W. Shortz: Sudoku – … M.J. Chlond: IP Modeling: Su Doku (05) 100 wordless puzzles Fourer & Gay: AMPL ’ s Primal Presolve (93) Sudoku Programmers Forum