Matly

Programació lineal i dualitat: vèrtexs, simplex i certificats d'optimalitat

Vols practicar? Aquest tema té 192 exercicis interactius de 2 tipus, de deu en deu, amb correcció immediata i explicació pas a pas.

La programació lineal és el cas on tot funciona: la teoria és completa, els algorismes són eficients i, sobretot, hi ha certificats. Pots demostrar que una solució és òptima sense confiar en cap dibuix ni en cap programa, i aquesta és la part que val la pena entendre bé.

El model i la regió factible

Un programa lineal té objectiu i restriccions afins. Una forma estàndard de maximització és

max⁡ cTxsubjecte aAx≤b,x≥0.\max\ c^{T}x \qquad\text{subjecte a}\qquad Ax\leq b,\quad x\geq 0.

La regió factible és un poliedre: una intersecció de semiespais. Hi ha exactament tres possibilitats i cal saber-les distingir: el problema pot ser inviable (la regió és buida), pot tenir valor no acotat, o pot assolir un òptim.

El resultat geomètric central és que, si la regió és un politop (acotat) no buit, una funció lineal hi assoleix el màxim en algun vèrtex. Això no vol dir que l'òptim sigui únic: pot ser tota una aresta o tota una cara, i llavors qualsevol punt d'aquesta cara és òptim. El que garanteix és que buscar entre els vèrtexs és suficient.

En forma d'igualtats amb variables no negatives, una solució bàsica fixa a zero tantes variables com calgui i resol amb columnes independents. Si totes les variables bàsiques resulten no negatives, és bàsica factible, i correspon a un vèrtex. Quan alguna variable bàsica val zero hi ha degeneració, que és la font de la majoria de patologies algorísmiques.

Símplex i punts interiors

El símplex recorre solucions bàsiques factibles millorant l'objectiu a cada pas, seguint arestes del poliedre. La degeneració pot provocar passos sense millora i, sense una regla anticicle, fins i tot cicles infinits. A la pràctica és molt ràpid, encara que el seu cas pitjor teòric sigui exponencial.

Els mètodes de punt interior segueixen trajectòries per dins de la regió, amb funcions barrera que penalitzen acostar-se a la frontera. Tenen garanties polinòmiques i solen guanyar en problemes molt grans.

Val la pena separar dues coses: formular bé el problema és anterior i independent de quin algorisme faràs servir per resoldre'l.

El dual

Del problema de maximització anterior en surt el dual:

min⁡ bTysubjecte aATy≥c,y≥0.\min\ b^{T}y \qquad\text{subjecte a}\qquad A^{T}y\geq c,\quad y\geq 0.

La relació bàsica es demostra en una línia. Per a qualsevol parella de punts factibles,

cTx≤yTAx≤yTb,c^{T}x \leq y^{T}Ax \leq y^{T}b,

on la primera desigualtat surt de les restriccions duals i la no-negativitat de xx, i la segona de les primals i la no-negativitat de yy. Això és la dualitat feble: qualsevol solució factible del dual dona una cota superior al primal.

La dualitat forta per a programes lineals diu més: si el primal té òptim finit, el dual també, i els dos valors coincideixen. Això és el que converteix el dual en un certificat.

Com certificar que una solució és òptima

Presenta dues coses: un punt factible del primal i un punt factible del dual amb el mateix valor d'objectiu. Per dualitat feble, cap dels dos no pot millorar més enllà de l'altre, i per tant tots dos són òptims.

No cal confiar en cap dibuix, ni en cap programa, ni haver enumerat tots els vèrtexs. És una demostració completa i verificable a mà.

La complementarietat és la caracterització equivalent: a l'òptim, cada restricció primal no saturada obliga el seu multiplicador dual a ser zero, i cada variable primal positiva obliga la seva restricció dual a ser activa. En paraules: o la restricció és justa, o el seu preu és zero.

Un problema petit, resolt i certificat

Maximitza 3x+2y3x+2y amb x+y≤4x+y\leq 4, x≤2x\leq 2, i les dues variables no negatives.

Vèrtexs i valors. La regió és un quadrilàter amb vèrtexs (0,0)(0,0), (2,0)(2,0), (2,2)(2,2) i (0,4)(0,4), amb valors 00, 66, 1010 i 88. L'òptim sembla (2,2)(2,2) amb valor 1010.

El certificat. El dual minimitza 4u+2v4u+2v amb u+v≥3u+v\geq 3, u≥2u\geq 2 i les dues no negatives. Prova (u,v)=(2,1)(u,v) = (2,1): compleix les dues restriccions (3≥33\geq 3 i 2≥22\geq 2) i el seu valor és 4⋅2+2⋅1=104\cdot 2 + 2\cdot 1 = 10.

Com que tenim un punt primal factible de valor 1010 i un punt dual factible de valor 1010, tots dos són òptims. No cal haver enumerat els vèrtexs ni haver dibuixat res.

Lectura econòmica. Els valors u=2u=2 i v=1v=1 són els preus ombra dels dos recursos: afluixar la primera restricció una unitat milloraria l'òptim en 22, i la segona en 11. Aquesta interpretació val localment i sota les condicions de sensibilitat habituals.

Modelitzar amb cura

Tres coses que es donen per fetes i no ho són:

  • La no-negativitat és una hipòtesi del model, no una propietat de les variables. Si una variable pot ser negativa, escriu-la com a diferència de dues no negatives.
  • Una igualtat es pot substituir per dues desigualtats, tot i que sovint és més eficient tractar-la directament.
  • Si les decisions són indivisibles (quantes màquines, quins projectes), afegir integritat canvia el problema de manera essencial. Arrodonir la solució contínua pot violar restriccions o allunyar-se molt de l'òptim.

Quan arrodonir falla

Maximitza 3x+2y3x+2y amb 2x+y≤42x+y\leq 4, x+2y≤4x+2y\leq 4 i variables enteres no negatives.

La relaxació contínua té òptim a (4/3, 4/3)(4/3,\ 4/3) amb valor 20/3≈6,6720/3 \approx 6{,}67. Aquesta és una cota superior vàlida per al problema enter.

Arrodonir cap amunt dona (2,2)(2,2), que no és factible: 2⋅2+2=6>42\cdot 2 + 2 = 6 > 4.

Les opcions enteres reals: (2,0)(2,0) val 66, (1,1)(1,1) val 55 i (0,2)(0,2) val 44. L'òptim enter és (2,0)(2,0) amb valor 66.

Fixa't que la coordenada yy de la relaxació era 4/34/3 i a l'òptim enter val zero: arrodonir cap al valor més proper tampoc no hi arribava. La integritat no és un detall d'acabat, és part del problema.

Exercici resolt: detectar un problema no acotat

És acotat el problema de maximitzar x+yx+y amb x−y≤1x - y\leq 1 i les dues variables no negatives?

No. Els punts de la diagonal (t,t)(t,t) compleixen totes les restriccions per a qualsevol t≥0t\geq 0: la diferència val zero, que no passa d'11, i les dues coordenades són no negatives. I l'objectiu val 2t2t, que creix sense límit.

El que diu el dual. Quan el primal és no acotat, el dual ha de ser inviable: si tingués algun punt factible, la dualitat feble donaria una cota superior finita. Comprovem-ho: el dual seria minimitzar uu amb les condicions u≥1u\geq 1 i −u≥1-u\geq 1, que exigeixen u≥1u\geq 1 i u≤−1u\leq -1 alhora. Efectivament, no hi ha cap punt factible.

La moral. Les patologies del primal i del dual estan lligades, i mirar-se el dual sovint explica què està passant al primal.

Exercici resolt: verificar amb complementarietat

Al problema de l'exemple, comprova la complementarietat entre la solució primal (2,2)(2,2) i la dual (2,1)(2,1).

Restriccions primals. La primera, x+y≤4x+y\leq 4, es compleix amb igualtat (4=44 = 4): està saturada, i per tant el seu multiplicador pot ser positiu. Efectivament, u=2>0u = 2 > 0. La segona, x≤2x\leq 2, també està saturada, i v=1>0v = 1 > 0. Cap contradicció.

Variables primals. Totes dues són positives, o sigui que les dues restriccions duals han d'estar saturades. La primera, u+v≥3u+v\geq 3, val exactament 33. La segona, u≥2u\geq 2, val exactament 22. Correcte.

Conclusió. Totes les condicions de complementarietat es compleixen, cosa que confirma que la parella és òptima. Aquesta comprovació és equivalent a la igualtat de valors, però és més informativa: et diu quines restriccions manen i quines sobren.

Ara prova-ho tu. 192 exercicis d'aquest tema, de 2 tipus diferents, per resoldre en línia, de deu en deu: escrius la resposta, te la corregeix a l'instant i, si falles, t'explica com es fa pas a pas. Quan acabis una tanda, en tens deu més, amb dades noves.

Fer els exercicisSimulacre d'examen