Matrix Modelling

advertisement

Matrix Modelling

Pierre Flener (Uppsala)

Alan M. Frisch (York)

Brahim Hnich, Zeynep Kiziltan (Uppsala)

Ian Miguel, and Toby Walsh (York)

What is matrix modelling?

Constraint programs with one or more matrix of decision vars

Common patterns in such models

Example: warehouse location

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

Diversity of matrix models

Combinatorial problems

BIBDs, magic squares, projective planes, …

 Design

Rack configuration, template and slab design, …

Scheduling

Classroom, social golfer, …

Assignment

Warehouse location, progressive party, …

Why matrix model?

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?

Common constraint types

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?

Ease of problem statement

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

Improved propagation

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

Symmetry breaking

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

Indistinguishable values

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

Variable indexing

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

Conclusions

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, …

Download