Production planning Big factory, produces widgets, doodads Each - - PowerPoint PPT Presentation

production planning
SMART_READER_LITE
LIVE PREVIEW

Production planning Big factory, produces widgets, doodads Each - - PowerPoint PPT Presentation

Production planning Big factory, produces widgets, doodads Each widget: 1 unit of wood, 2 units steel, profit $1 Each doodad 1 unit wood, 5 units steel, profit $2 Have: 4M units wood, 12M units steel A wrinkle Due


slide-1
SLIDE 1

Production planning

  • Big factory, produces widgets, doodads
  • Each widget:

– 1 unit of wood, 2 units steel, profit $1

  • Each doodad

– 1 unit wood, 5 units steel, profit $2

  • Have: 4M units wood, 12M units steel
slide-2
SLIDE 2
slide-3
SLIDE 3

A wrinkle

  • Due to limitations of machinery, must

produce in lots of exactly 1M widgets or 1M doodads

slide-4
SLIDE 4
slide-5
SLIDE 5
slide-6
SLIDE 6

Effect of integrality

slide-7
SLIDE 7

Integer linear programs

  • max cTx s.t.

E.g., max s.t. Ax + b ≥ 0 Cx + d = 0 x integer

slide-8
SLIDE 8

Variations

  • Mixed integer linear program (MILP)
  • Integer quadratic program
  • 0-1 ILP
slide-9
SLIDE 9

Combinatorial optimization

  • Roughly, any optimization problem

whose decision version is in NP

  • ILP, MILP, 0/1 IP:
slide-10
SLIDE 10

Applications

  • SAT
  • MAXSAT
slide-11
SLIDE 11

Applications

  • Facility location problem:

– have n stores, at positions y1, y2, … – can build m warehouses, at x1, x2, … – minimize distance from each store to nearest warehouse

  • Extra vars:
  • min s.t.
slide-12
SLIDE 12

Embedding logic in MILPs

  • z ==> aTx + b ≥ 0
  • OR:
  • k-of-n:
slide-13
SLIDE 13

Piecewise-linear functions

slide-14
SLIDE 14

Applications

  • Planning (e.g., STRIPS)
slide-15
SLIDE 15

Have cake & eat it as CNF

slide-16
SLIDE 16

Applications

  • Scheduling
slide-17
SLIDE 17

Solving combinatorial

  • ptimization problems
  • Two basic strategies
  • And,
slide-18
SLIDE 18

Basic search

  • Schema: if n 0/1 variables, {0, 1, *}n
  • E.g.,
  • Schema is full if no *s: e.g.,
  • Notation: schema/(variable→value)
  • E.g., 10**1/(x3→1) =
slide-19
SLIDE 19

Basic search

[schema, value] = search(F, sch)

  • If full(sch): return [sch, F(sch)]
  • pick a variable xi
  • [sch(0), v(0)] = search(F, sch/(xi→0))
  • [sch(1), v(1)] = search(F, sch/(xi→1))
  • if v(0) ≥ v(1) return [sch(0), v(0)]

else return [sch(1), v(1)]

slide-20
SLIDE 20

Exercise

  • SAT problem w/ XOR constraints:

search(a ⊕ b ^ b ⊕ c ^ c ⊕ a, ***)

  • How many total calls to search()?
slide-21
SLIDE 21

search(a ⊕ b ^ b ⊕ c ^ c ⊕ a)

slide-22
SLIDE 22

Constraint propagation

  • Start w/ table of feasible values
  • When we set a var, look at its constrs

– e.g., set a = 0: –

  • If a domain becomes empty:
  • If one becomes singleton:
slide-23
SLIDE 23

Search tree

slide-24
SLIDE 24

Relaxation

  • min f(x) s.t. x ∈ S1

(*)

  • min g(y) s.t. y ∈ S2

(**)

  • (*) is a relaxation of (**) if:

– –

  • Example:
slide-25
SLIDE 25

Why are relaxations useful?

  • Relaxation may be
  • From solution of relaxed problem:
  • Suppose x*, y* are optimal solutions to
  • riginal / relaxed problems

– we know:

slide-26
SLIDE 26

Example: have & eat LP

min 5s1 + 5s2 + … + 5s19 + s20 + 2s21 s.t. … h2 + (1–B2) + (1–M2) ≥ 1–s15 (1–e2) + e1 + M2 ≥ 1–s16 … 0 ≤ M1, h1, e1, M2, B2, h2, e2, s1, …, s21 ≤ 1

slide-27
SLIDE 27

How should we relax?

slide-28
SLIDE 28

Combine relaxation w/ search

  • Given a schema: e.g.,
  • Substitute in fixed variables
  • Relax integrality constraints for *s
  • Solve relaxation
  • Quiz: in min problem, lower value for

relaxation w/ or ?

– A:

slide-29
SLIDE 29

A random 3-CNF formula

slide-30
SLIDE 30

Example search tree

slide-31
SLIDE 31

Branch & bound

[schema, value] = bb(F, sch, bnd)

  • [vrx, rsch] = relax(F, sch)
  • if integer(rsch): return [rsch, vrx, bnd]
  • if vrx ≥ bnd: return [sch, vrx, bnd]
  • Pick variable xi
  • [sch(0), v(0)] = bb(F, sch/(xi→0), bnd)
  • [sch(1), v(1)] = bb(F, sch/(xi→1), min(bnd, v(0)))
  • if (v(0) ≤ v(1)): return [sch(0), v(0)]
  • else:

return [sch(1), v(1)]