LP-dualitet

LP-dualitet: Exempel
Primal: Maximera
max z = 4x1
då
2x1
x1
6x1
x1 ,
LP-dualitet: Generellt
vinsten, utan att använda för mycket råvaror.
+ 3x2
(y1 )
+ 3x2 ≤ 30
(1)
(y2 )
≤ 6
(2)
(y3 )
+ 4x2 ≤ 50
(3)
x2 ≥ 0
Primal:
max z =
då
cj xj
aij xj ≤ bi
xj ≥ 0
LP-dual: Minimera kostnaden för råvarorna. Balansera kostnad mot intäkt.
min v = 30y1 + 6y2 + 50y3
då
2y1 + y2 + 6y3 ≥ 4 (1) (x1 )
3y1
+ 4y3 ≥ 3 (2) (x2 )
y1 ,
y2 ,
y3 ≥ 0
Komplementaritetsvillkoren:
Priset är noll om råvaran inte används fullt ut.
Produkten görs ej om kostnaden blir högre än intäkten.
TAOP88 Optimering
j=1
n
X
i = 1, . . . , m
j=1
Dualvariabel: yi pris på råvara i.
Kaj Holmberg (LiU)
n
X
max z = c T x
då
Ax ≤ b
x ≥0
j = 1, . . . , n
Dual:
min v =
då
m
X
i=1
m
X
bi yi
aij yi ≥ cj
j = 1, . . . , n
min v = bT y
då
AT y ≥ c
y ≥0
i=1
yi ≥ 0
27 augusti 2015
1 / 31
i = 1, . . . , m
Kaj Holmberg (LiU)
TAOP88 Optimering
27 augusti 2015
LP-dualitet: Relationer
LP-dualitet: Komplementaritet
Exakt vilka relationer har primal och dual?
En dualvariabel, yi , anger hur mycket primala bivillkor i “tar emot”.
Ett bivillkor som inte är aktivt tar inte emot alls.
Svaga dualsatsen
Komplementaritet (i ord):
Om primala bivillkor i inte är aktivt, måste yi = 0.
Om duala bivillkor j inte är aktivt, måste xj = 0.
Om x är tillåten i primalen och y är tillåten i dualen så c T x ≤ bT y .
(bevis) (rita)
Följdsats
Komplementaritetsvillkoren
Om x̄ är tillåten i primalen, ȳ är tillåten i dualen och
optimal i primalen och ȳ optimal i dualen.
c T x̄
=
bT ȳ
så är x̄
(se figur)
Följdsats
Primallösningen x och duallösningen y uppfyller komplementaritetsvillkoren
om


n
X
yi 
aij xj − bi  = 0 i = 1, . . . , m
j=1
Om primalen (dualen) är obegränsad, så saknar dualen (primalen) tillåten
lösning.
xj
m
X
!
aij yi − cj
= 0 j = 1, . . . , n
i=1
Båda kan dock sakna lösning.
Kaj Holmberg (LiU)
2 / 31
TAOP88 Optimering
27 augusti 2015
3 / 31
Kaj Holmberg (LiU)
TAOP88 Optimering
27 augusti 2015
4 / 31
LP-dualitet: Komplementaritet
LP-dualitet: Slutsatser
Komplementaritetsvillkoren kan skrivas som
Fullständiga dualsatsen
T
y (Ax − b) = 0
• Om primalen har en tillåten, begränsad optimallösning, x ∗ , så har även
dualen en tillåten, begränsad optimallösning, y ∗ , och c T x ∗ = bT y ∗ .
• Om primalen är obegränsad, så saknar dualen tillåten lösning.
• Om primalen saknar tillåten lösning, så saknar dualen lösning eller har
obegränsad lösning.
x T (AT y − c) = 0
Sats
Om x och y uppfyller komplementaritetsvillkoren, så är c T x = bT y .
(Symmetriskt i primal - dual.)
(peka på bevis)
Följdsats
Om x är tillåten i primalen, y är tillåten i dualen och x och y uppfyller
komplementaritetsvillkoren, så är x optimal i primalen och y optimal i dualen.
Åt andra hållet:
Starka dualsatsen
Om x och y är optimallösningar så gäller c T x = bT y .
Kaj Holmberg (LiU)
TAOP88 Optimering
27 augusti 2015
5 / 31
LP-dualitet: Formulering
Standard:

Primal:



max z = c T x
då
Ax ≤ b



x ≥0
Optimalitetsvillkor (KKT)
Primal tillåtenhet +
Dual tillåtenhet +
Komplementaritet
= Optimalitet
Kaj Holmberg (LiU)
TAOP88 Optimering
27 augusti 2015
6 / 31
27 augusti 2015
8 / 31
LP-dualitet: Formulering, symmetriskt





Dual:



min v = bT y
AT y ≥ c

 då



y ≥0
Standard:

Primal/dual:



max z = c T x
då
Ax ≤ b



x ≥0












Dual/primal:



min v = bT y
AT y ≥ c

 då



y ≥0







Variationer:
Variationer:
Primal
max
Ax ≤ b
Ax ≥ b
Ax = b
x ≥0
x ≤0
x fri
Kaj Holmberg (LiU)
⇒
⇒
⇒
⇒
⇒
⇒
*
max
Ax ≤ b
Ax ≥ b
Ax = b
x ≥0
x ≤0
x fri
Dual
min
y ≥0
y ≤0
y fri
T
A y ≥c
AT y ≤ c
AT y = c
TAOP88 Optimering
27 augusti 2015
7 / 31
Kaj Holmberg (LiU)
⇔
⇔
⇔
⇔
⇔
⇔
*
min
y ≥0
y ≤0
y fri
T
A y ≥c
AT y ≤ c
AT y = c
TAOP88 Optimering
LP-dualitet: Formulering: Exempel
Primal:
max z = 2x1
+ 3x2 − 5x3
då
2x1
+ 3x2 + 2x3
≤
7x1
+ x2 − x3
≥
3x1
+ 4x2 + 4x3
=
x1 ≥ 0, x2 fri, x3 ≤ 0
LP-dual:
min v = 10y1
+ 16y2
+ 43y3
då
2y1
+ 7y2
+ 3y3
3y1
+
y2
+ 4y3
2y1
−
y2
+ 4y3
y1 ≥ 0,
y2 ≤ 0,
y3
Komplementaritetsvillkoren:
y1 (2x1 + 3x2 + 2x3 − 10) =
y2 (7x1 + x2 − x3 − 16) =
x1 (2y1 + 7y2 + 3y3 − 2) =
x3 (2y1 − y2 + 4y3 + 5) =
Kaj Holmberg (LiU)
TAOP88 Optimering
Dualitet och baslösningar
10
16
43
(1)
(2)
(3)
Primal:
max z = c T x
då
Ax = b
x ≥0
(y1 )
(y2 )
(y3 )
Baslösning:
Primal:
max z = cBT xB + cNT xN
då
BxB + NxN = b
xB , xN ≥ 0
≥
2 (1) (x1 )
=
3 (2) (x2 )
≤ −5 (3) (x3 )
fri
Kompl
xBT (B T y − cB ) = 0
xNT (N T y − cN ) = 0
T
0
0
0
0
Dual tillåtenhet: Sätt in y i N T y ≥ cN . Uppfyllt om ĉN ≤ 0 där
ĉN = cN − (cBT B −1 N)T .
T
Primal och dual lösning: xB = B −1 b, xN = 0, y = B −1 cB .
27 augusti 2015
9 / 31
Kaj Holmberg (LiU)
TAOP88 Optimering
27 augusti 2015
10 / 31
27 augusti 2015
12 / 31
LP-dualitet: Exempel
max z = 4x1 + 3x2
då
2x1 + 3x2
x1
6x1 + 4x2
x1 ,
x2
Slutsats
Dual tillåtenhet ⇔ primal optimalitet.
Vi har bevisat starka dualsatsen.
Om primalen har en tillåten, begränsad optimallösning, x ∗ = B −1 b,
så har även dualen en tillåten, begränsad optimallösning, som ges av
T
y ∗ = B −1 cB .
Komplementaritetsvillkoren:
y1 (2x1 + 3x2 − 30)
y2 ( x1
− 6)
y3 (6x1 + 4x2 − 50)
x1 (2y1 + y2 + 6y3
x2 (3y1
+ 4y3
Både primalen och dualen har det optimala målfunktionsvärdet
z ∗ = cBT B −1 b.
27 augusti 2015
≤ 30
≤ 6
≤ 50
≥ 0
(1)
(2)
(3)
(y1 )
(y2 )
(y3 )
LP-dual:
min v = 30y1 + 6y2 + 50y3
då
2y1 + y2 + 6y3 ≥ 4 (1) (x1 )
3y1
+ 4y3 ≥ 3 (2) (x2 )
y1 ,
y2 ,
y3 ≥ 0
Starka dualsatsen, version 2
TAOP88 Optimering
Dual:
min v = bT y
då B T y ≥ cB
N T y ≥ cN
y fri
xB > 0 ⇒ B T y = cB ⇒ y = B −1 cB = (cBT B −1 )T .
Dualitet och baslösningar, forts
Kaj Holmberg (LiU)
Dual:
Kompl.:
min v = bT y
då AT y ≥ c x T (AT y − c) = 0
y fri
11 / 31
Kaj Holmberg (LiU)
= 0
= 0
= 0
− 4) = 0
− 3) = 0
TAOP88 Optimering
LP-dualitet: Exempel
LP-dualitet och simplextablån
Primal optimallösning: x1 = 3, x2 = 8, z = 36.
Duallösningen återfinnes under slackvariablerna i optimaltablån.
Villkor 1 aktivt.
Villkor 2 ej aktivt ⇒ y2 = 0.
Villkor 3 aktivt.
Bas
z
x4
x1
x2
x1 > 0 ⇒ 2y1 + y2 + 6y3 = 4.
x2 > 0 ⇒ 3y1 + 4y3 = 3.
TAOP88 Optimering
x1
0
0
1
0
x2
0
0
0
1
x3
1/5
2/5
-2/5
3/5
x4
0
1
0
0
x5
3/5
-3/10
3/10
-1/5
b̂
36
3
3
8
Dual optimallösning: y1 = 1/5, y2 = 0, y3 = 3/5.
Dual optimallösning: y1 = 1/5, y2 = 0, y3 = 3/5.
Kaj Holmberg (LiU)
z
1
0
0
0
27 augusti 2015
13 / 31
Kaj Holmberg (LiU)
TAOP88 Optimering
27 augusti 2015
14 / 31
LP-dualitet: Kappsäcksproblem: Exempel
Skuggpriser
max z = 2x1 + 3x2 + 5x3 + 7x4
då
2x1 + 2x2 + 2x3 + 4x4 ≤ 10 (y )
x1 ,
x2 ,
x3 ,
x4 ≥ 0
LP-dual:
min v = 10y
då
2y ≥ 2 (1) (x1 )
2y ≥ 3 (2) (x2 )
2y ≥ 5 (3) (x3 )
4y ≥ 7 (4) (x4 )
y ≥ 0
Skriv som: min v = 10y då y ≥ 1, y ≥ 3/2, y ≥ 5/2, y ≥ 7/4, y ≥ 0
Hur mycket förändras det optimala målfunktionsvärdet av en liten ändring
av ett högerled?
Optimallösning: y = 5/2, v = 25.
I en viss baslösning har vi xB = B −1 b och y = B −1 cB .
Detta mått kallas skuggpris (eller marginalpris).
Starka dualsatsen: z = c T x = bT y eller z =
X
bi yi
i
Derivatan av z med avseende på bi är yi .
Slutsats
Skuggpriserna ges av den optimala duallösningen.
T
Skuggpriserna är oförändrade så länge som samma baslösning är optimal.
Om ändringen i b ger B −1 b 6≥ 0, ändras optimal baslösning/skuggpriser.
y > 0 ⇒ 2x3 = 10 ⇒ x3 = 5. Problemet löst.
B −1 b ≥ 0 ger gränser på b för oförändrad optimallösning.
Det blev en metod! maxj (cj /aj ) ger bästa xj . Ta med den.
TAOP88 Optimering
cj xj =
j
Komplementaritetsvillkoren:
Endast duala bivillkor 3 aktivt. ⇒ x1 = 0, x2 = 0, x4 = 0.
Kaj Holmberg (LiU)
X
27 augusti 2015
15 / 31
Kaj Holmberg (LiU)
TAOP88 Optimering
27 augusti 2015
16 / 31
Känslighetsanalys
Känslighetsanalys
Har optimallösning.
Vi beaktar ändringar av:
Indata ändras.
• Högerled, b. (Påverkar tillåtenhet.)
Vad händer?
• Målfunktionskoefficient, c. (Påverkar optimalitet.)
För ickebasvariabel, cN .
Är optimallösningen helt oförändrad?
För basvariabel, cB .
Är optimala baslösningen oförändrad?
• Addition av nytt bivillkor, aiT x ≤ bi . (Påverkar tillåtenhet.)
För hur stora ändringar ändras inte (bas)lösningen?
Om optimal baslösning inte ändras blir alla förändringar lätta att räkna ut,
för då ändras inte B −1 .
T
Stoppa in nya b och/eller c i xB = B −1 b, y = B −1 cB och z = cBT xB .
Kaj Holmberg (LiU)
TAOP88 Optimering
27 augusti 2015
(Dvs. addition av ett dualt bivillkor, akT y ≥ ck .)
(Påverkar optimalitet, dvs. dual tillåtenhet.)
17 / 31
Känslighetsanalys mer exakt
Kaj Holmberg (LiU)
TAOP88 Optimering
27 augusti 2015
18 / 31
Vårt musexempel
max z = 4x1 + 3x2
då
2x1 + 3x2
x1
6x1 + 4x2
x1 ,
x2
Har optimallösning: Primal, x ∗ , och dual, y ∗ .
Primal/dual tillåtenhet: xB∗ = B −1 b ≥ 0, xN∗ = 0, N T y ∗ ≥ cN .
• Ändring av högerled, b: Kolla primal tillåtenhet: xB = B −1 b ≥ 0.
* Ändring i cN : Kolla cN ≤ N T y ∗ .
(Ändringen i ĉ blir lika stor som ändringen i c.)
T
* Ändring i cB : Beräkna y = B −1 cB och kolla N T y ≥ cN .
(Hela ĉ kan ändras.)
• Addition av nytt bivillkor, aiT x ≤ bi : Kolla primal tillåtenhet: aiT x ∗ ≤ bi .
• Addition av ny variabel, xk , med kolumn ak och
målfunktionskoefficient ck : Kolla dual tillåtenhet: akT y ∗ ≥ ck .
Alternativ: Kolla primal optimalitet: ĉk = ck − akT y ∗ ≤ 0.
TAOP88 Optimering
27 augusti 2015
≤ 30
≤ 6
≤ 50
≥ 0
(1)
(2)
(3)
(y1 ) (knappar)
(y2 ) (optik)
(y3 ) (monteringstid)
LP-dual:
min v = 30y1 + 6y2 + 50y3
då
2y1 + y2 + 6y3 ≥ 4 (1) (x1 )
3y1
+ 4y3 ≥ 3 (2) (x2 )
y1 ,
y2 ,
y3 ≥ 0
• Ändring av målfunktionskoefficient, c: Kolla dual tillåtenhet
(dvs. primal optimalitet).
Kaj Holmberg (LiU)
• Addition av ny variabel, xk , med kolumn ak och
målfunktionskoefficient ck .
19 / 31
Optimaltablå:
Bas z x1
z 1 0
x4 0 0
x1 0 1
x2 0 0
x2
0
0
0
1
Kaj Holmberg (LiU)
x3
1/5
2/5
-2/5
3/5
x4
0
1
0
0
x5
3/5
-3/10
3/10
-1/5
(Optimus)
(Rullmus)
b̂
36
3
3
8
TAOP88 Optimering
27 augusti 2015
20 / 31
Känslighetsanalys i simplextablån
Känslighetsananlys i simplextablån
Optimaltablå för vårt exempel:
x3 x4
x5
Bas z x1 x2
z 1 0 0 1/5 0
3/5
x4 0 0 0 2/5 1 -3/10
x1 0 1 0 -2/5 0 3/10
-1/5
x2 0 0 1 3/5 0
Kan läsa av B −1 under slackvariablerna i optimaltablån.
b̂
36
3
3
8
Bas
z
x4
x1
x2
Optimallösning: x1 = 3, x2 = 8, z = 36.
Skuggpriser: y1 = 1/5, y2 = 0, y3 = 3/5.
z
1
0
0
0
x1
0
0
1
0
x2
0
0
0
1
x3
1/5
2/5
-2/5
3/5
x4
0
1
0
0
x5
3/5
-3/10
3/10
-1/5
b̂
36
3
3
8


 

2/5 1 −3/10
b1
2b1 /5 − 9
3/10   6  =  −2b1 /5 + 15  ≥ 0
B −1 b =  −2/5 0
3/5 0 −1/5
3b1 /5 − 10
50
vilket ger 22.5 ≤ b1 ≤ 37.5.
Vad skulle vi tjäna på en ökning av tillgången av knappar?
Det är en ökning av b1 , så vi tjänar y1 = 1/5 per enhets ökning.
Så vi tjänar 1/5 kr per ytterligare knapp, för b1 upp till 37.5.
För hur stor ökning gäller detta? Kolla B −1 b ≥ 0.
Kaj Holmberg (LiU)
TAOP88 Optimering
27 augusti 2015
21 / 31
Exempel: Ny variabel
TAOP88 Optimering
27 augusti 2015
22 / 31
Exempel: Ny variabel
Ska MPigg AB göra en ny sorts mus, SuperGamer, som består av en knapp
och två optiska enheter, kräver 5 min för montering och ger intäkten 3
kr/enhet?
 
1

2  målfunktionskoefficient: c6 = 3.
Ny variabel, x6 : kolumn: a6 =
5
Dual optimallösning (skuggpriser) : y1 = 1/5, y2 = 0, y3 = 3/5.
ĉ6 = c6 − a6T y = 7/2 − (1/5 + 3) = 3/10.
Inför nya kolumnen i optimaltablån: â6 = B −1 a6 .

  

2/5 1 −3/10
1
9/10
3/10   2  =  11/10 
â6 =  −2/5 0
3/5 0 −1/5
5
−2/5
Bas
z
x4
x1
x2
Slutsats: Låt x6 förbli noll. Gör inga SuperGamer.
MPigg vill justera priset så att SuperGamer blir lönsam.
Bestäm c6 så att ĉ6 > 0:
ĉ6 = c6 − a6T y = c6 − (1/5 + 3) = c6 − 3.2 > 0 om c6 > 3.2.
27 augusti 2015
z
1
0
0
0
x1
0
0
1
0
x2
0
0
0
1
x3
1/5
2/5
-2/5
3/5
x4
0
1
0
0
x5
3/5
-3/10
3/10
-1/5
x6
-3/10
9/10
11/10
-2/5
b̂
36
3
3
8
Fortsätt med simplexmetoden. x6 inkommande. Utgående?
För att få lite marginal sätter man priset så att intäkten blir 3:50 kr.
TAOP88 Optimering
Ny optimallösning?
Inför i optimaltablån:
Reducerad kostnad (dual tillåtenhet):
ĉ6 = c6 − a6T y = 3 − (1/5 + 3) = −1/5 ≤ 0.
Kaj Holmberg (LiU)
Kaj Holmberg (LiU)
23 / 31
Kaj Holmberg (LiU)
TAOP88 Optimering
27 augusti 2015
24 / 31
Känslighetsananlys från koder
Känslighetsananlys från koder
På skärmen (rensat):
Reading model section from lp-ko1.mod...
11 lines were read
Model has been successfully generated
GLPK Simplex Optimizer, v4.44
4 rows, 2 columns, 7 non-zeros
Preprocessing...
2 rows, 2 columns, 4 non-zeros
Scaling...
A: min|aij| = 2.000e+00 max|aij| = 6.000e+00 ratio =
Problem data seem to be well scaled
Constructing initial basis...
Size of triangular part = 2
*
0: obj =
0.000000000e+00 infeas = 0.000e+00 (0)
*
3: obj =
3.600000000e+01 infeas = 0.000e+00 (0)
OPTIMAL SOLUTION FOUND
Time used:
0.0 secs
Memory used: 0.1 Mb (108000 bytes)
Writing basic solution to ‘lp-ko1.sol’...
Indatafil: (GMPL)
var x1 >= 0;
var x2 >= 0;
maximize obj:
4*x1 + 3*x2;
subject to con1: 2*x1 + 3*x2 <= 30;
subject to con2:
x1
<= 6;
subject to con3: 6*x1 + 4*x2 <= 50;
end;
Lösning av problemet: Skriv
glpsol -m lp-ko1.mod -o lp-ko1.sol
Kaj Holmberg (LiU)
TAOP88 Optimering
27 augusti 2015
25 / 31
Kaj Holmberg (LiU)
TAOP88 Optimering
Känslighetsananlys från koder
Känslighetsananlys från koder
I utdatafilen lp-ko1.sol (rensat):
Lösning av problemet med känslighetsanalys: Skriv
Problem:
Rows:
Columns:
Non-zeros:
Status:
Objective:
glpsol -m lp-ko1.mod --bounds lp-ko1.bnd
lp
4
2
7
OPTIMAL
obj = 36 (MAXimum)
No.
Row name
--- -----------1 obj
2 con1
3 con2
4 con3
3.000e+00
27 augusti 2015
26 / 31
I utdatafilen lp-ko1.bnd (rensat):
GLPK 4.44 - SENSITIVITY ANALYSIS REPORT
Problem:
lpluma
Objective: obj = 36 (MAXimum)
St Activity Lower bound Upper bound Marginal
-- ----------- ----------- ------------ ----------B
36
NU
30
30
0.2
B
3
6
NU
50
50
0.6
No. Row name
Slack
Lower bound
Marginal
Upper bound
------ ------------ -- ------------- ------------- ------------1 obj
BS
36.00000
-36.00000
-Inf
.
+Inf
No. Column name St Activity Lower bound Upper bound Marginal
--- ------------ -- ----------- ----------- ------------- ---------1 x1
B
3
0
2 x2
B
8
0
St
Activity
Activity
O
range
------------- -----30.00000
36.00000
2 con1
NU
30.00000
.
.20000
-Inf
30.00000
22.50000
37.50000
3 con2
BS
3.00000
3.00000
.
-Inf
6.00000
.
8.33333
4 con3
NU
50.00000
.
.60000
-Inf
50.00000
40.00000
60.00000
Karush-Kuhn-Tucker optimality conditions:
Kaj Holmberg (LiU)
TAOP88 Optimering
27 augusti 2015
27 / 31
Kaj Holmberg (LiU)
TAOP88 Optimering
27 augusti 2015
28 / 31
-
Känslighetsananlys från koder
LP-dualen till ett strukturerat problem
Sida 2 i utdatafilen lp-ko1.bnd (rensat):
Tillordningsproblemet: Varje person i skall tilldelas en uppgift j.
n X
n
X
min
cij xij
GLPK 4.44 - SENSITIVITY ANALYSIS REPORT
Problem:
lpluma
Objective: obj = 36 (MAXimum)
No. Column name
j=1
n
X
Obj coef
Activity
Obj coef Obj value at Limiting
Marginal
range
range
break point variable
------ ------------ -- ------------- ------------- ---------- ------------- ------------- -----------1 x1
BS
3.00000
4.00000
-Inf
2.00000
30.00000 con3
.
6.00000
4.50000
37.50000 con1
2 x2
St
då
BS
Activity
8.00000
3.00000
.
3.50000
10.00000
2.66667
6.00000
33.33333 con1
60.00000 con3
LP-dualen:
i=1 j=1
Page
2
n
X
xij = 1
i = 1, . . . n
(αi )
xij = 1
j = 1, . . . n
(βj )
i=1
xij ≥ 0
max
n
X
i=1
End of report
då
αi +
för alla i, j
n
X
βj
j=1
αi + βj ≤ cij för alla (i, j) (xij )
Komplementaritetsvillkoren: xij (αi + βj − cij ) = 0 för alla (i, j)
Kaj Holmberg (LiU)
TAOP88 Optimering
27 augusti 2015
29 / 31
TAOP88 Optimering
27 augusti 2015
31 / 31
Vileopt
Kaj Holmberg (LiU)
Kaj Holmberg (LiU)
TAOP88 Optimering
27 augusti 2015
30 / 31