18c. 0-1 Integer linear programming

2021-04-30
slides.com/jod/pt_18c

Docent: Jo Devriendt

Assistent: Ann Philips

Coördinator: Joost Vennekens

voornaam.achternaam@kuleuven.be

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

IDP under the hood

\forall r\colon \exists_1 c \colon \text{queen}(r,c)\\ \forall c\colon \exists_1 r \colon \text{queen}(r,c)\\ \forall d\colon \#\{(r, c) ~|~ \text{diag1}(r,c)=d \wedge \text{queen}(r,c)\} \leq 1\\ \forall d\colon \#\{(r, c) ~|~ \text{diag2}(r,c)=d \wedge \text{queen}(r,c)\} \leq 1\\

Hoe vindt een systeem als IDP een interpretatie voor queen die de volgende formules waar maakt?

Door deze "hoogniveau" constraints te reduceren naar eenvoudiger constraints.

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

IDP under the hood

\forall r\colon \exists_1 c \colon \text{queen}(r,c)\\ \forall c\colon \exists_1 r \colon \text{queen}(r,c)\\ \forall d\colon \#\{(r, c) ~|~ \text{diag1}(r,c)=d \wedge \text{queen}(r,c)\} \leq 1\\ \forall d\colon \#\{(r, c) ~|~ \text{diag2}(r,c)=d \wedge \text{queen}(r,c)\} \leq 1\\

wordt

met        een variabele die waarde 0 of 1 kan hebben, en aangeeft of er een koningin staat op vakje (r,c)

x_{rc}
\sum_{c \in \text{Index}} x_{rc} = 1 ~~~~~~~~~~~~~~~~~~ \forall r \in \text{Index}\\ \sum_{r \in \text{Index}} x_{rc} = 1 ~~~~~~~~~~~~~~~~~~ \forall c \in \text{Index}\\ \sum_{\{r, c ~|~ \text{diag1}(r,c)=d\}} x_{rc} \leq 1 ~~~ \forall d \in \text{Diag}\\ \sum_{\{r, c ~|~ \text{diag2}(r,c)=d\}} x_{rc} \leq 1 ~~~ \forall d \in \text{Diag}\\

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

0-1 integer linear program
(0-1 ILP)

\sum_{c \in \text{Index}} x_{rc} = 1 ~~~~~~~~~~~~~~~~~~ \forall r \in \text{Index}\\ \sum_{r \in \text{Index}} x_{rc} = 1 ~~~~~~~~~~~~~~~~~~ \forall c \in \text{Index}\\ \sum_{\{r, c ~|~ \text{diag1}(r,c)=d\}} x_{rc} \leq 1 ~~~ \forall d \in \text{Diag}\\ \sum_{\{r, c ~|~ \text{diag2}(r,c)=d\}} x_{rc} \leq 1 ~~~ \forall d \in \text{Diag}\\

Dit is een 0-1 ILP, waar gespecialiseerde solvers voor bestaan.

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

0-1 integer linear program
(0-1 ILP)

\text{optimaliseer } \sum_j c_{j}x_j \\ \text{zodat } \sum_j a_{ij}x_j \leq b_i ~~~ \forall i \\ \text{met } c_j, a_{ij}, b_i \in \mathbb{Z} \\ \text{en } x_j \mapsto \{0,1\}

Algemene vorm van 0-1 ILP

  • In het algemeen:
  • Veel interessante problemen kunnen uitgedrukt worden als 0-1 ILP
  • Simpel voorbeeld: knapzakprobleem
O(2^n)

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

Knapzakprobleem

Beslis welke objecten j, met gewicht      en waarde    , in je knapzak te steken. De knapzak heeft een maximum totaalgewicht b, en je wil een zo groot mogelijke totale waarde in de knapzak.

\text{Algemene vorm: }\\ \text{maximaliseer } \sum_j c_{j}x_j \\ \text{zodat } \sum_j a_{j}x_j \leq b \\
\text{Specifiek voorbeeld: }\\ \text{maximaliseer } x_1+2x_2+3x_3+4x_4+5x_5 \\ \text{zodat } x_1+x_2+2x_3+2x_4+4x_5 \leq 4\\
\text{Twee oplossingen: }\\ x_1=x_2=x_5=0, x_3=x_4=1 \\ x_3=x_5=0, x_1=x_2=x_4=1 \\

en.wikipedia.org/wiki/Knapsack_problem

a_j
c_j

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

Mathematical programming

  • 0-1 ILP is een vorm van mathematical programming (MP)
  • Een mathematical program is een verzameling rekenkundige vergelijkingen waar een oplossing voor gezocht moet worden
  • Meest bekende is linear programming, waar de variabelen rationale getallen kunnen aannemen, en de vergelijkingen lineaire ongelijkheden zijn
  • Andere mogelijkheden voor variabelen (bvb. geheeltallig of enkel 0-1) of vergelijkingen (bvb. veeltermen) zijn ook mogelijk
  • Vergelijkingen worden opgelost met gespecialiseerde solvers

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

Samenvatting

  • Systemen die oplossingen zoeken voor logische formules of constraints vertalen naar 0-1 ILPs onder de motorkap
  • 0-1 ILPs zijn programma's bestaande uit lineaire ongelijkheden over 0-1 (Booleaanse) variabelen, waar een optimale oplossing voor moet gevonden worden
  • 0-1 ILPs behoren tot de algemenere klasse van mathematical programs

18c. 0-1 Integer linear programming

By jod

18c. 0-1 Integer linear programming

  • 471