Pierre Flener (Uppsala)
Alan M. Frisch (York)
Brahim Hnich, Zeynep Kiziltan (Uppsala)
Ian Miguel, and Toby Walsh (York)
Constraint programs with one or more matrix of decision vars
Common patterns in such models
Which warehouses supply which stores?
0/1 matrices
Open(warehouse)
Supply(warehouse,store)
Constraints
Each store has a warehouse: row sum on Supply=1
Warehouse capacity: column sum on Supply <= ci
Channelling from Supply to
Open
Combinatorial problems
BIBDs, magic squares, projective planes, …
Design
Rack configuration, template and slab design, …
Scheduling
Classroom, social golfer, …
Assignment
Warehouse location, progressive party, …
Ease of problem statement
Side constraints, variable indexing, …
Improved constraint propagation
Symmetry breaking, indistinguishable values, linear models, …
We argue that matrix operations should become first class objects in constraint programming languages. MATLAB meet OPL?
Row or column sum
Weighted row/column sum
Single non-zero entry
Matrix sum
Scalar product
Channelling
This pretty much describes all the examples!
These constraints should be provided as language primitives?
Efficient and powerful propagators developed?
Steel mill slab design
Nasty “colour” constraint
Stops it being simple knapsack problem
Channel into matrix model
Colour constraint easily and efficiently stated
Easy to combine models
Multiple models
Warehouse location
Either 1-d matrix,
Supply(store)=warehouse
Or 2-d matrix,
Supply(store,warehouse)=0/1
2-d matrix is purely linear so can use LP solver
Alan Frisch
Often rows or columns
(or both) are symmetric
All weeks (cols) can be permuted in a timetable
All slabs (rows) of same size can be permuted
Lex order rows/cols
See our talk in
Symmetry workshop
Values in problem can be indistinguishable
In progressive party problem:
Assign(guest,period)=host
But host boats of same size are indistinguishable
Channel into 0/1 matrix with extra dimension
Assign3(guest,period,host)=0/1
Value symmetry => variable symmetry
Use variables to index into arrays
E.g. channelling in progressive party problem
Assign3(guest,period,Assign(guest,period))=1 compared to
Assign3(guest,period,host)=1 iff Assign(guest,period)=host
Reduces number of constraints from cubic to quadratic
Hooker (and others) argue that such indexing is one of the significant advantages CP has over IP
Matrix models common
Common types of constraints posted on matrices
Row/column sum, symmetry breaking, channelling, …
Matrix operations should be made first-class objects in modelling languages
MATLAB, EXCEL, …