[Chapter 3] The simplex method

인디언식기우제·2022년 5월 17일

LINEAR_OPTIMIZATION

목록 보기
1/1
본 자료는 Bertsimas 형님의 Introduction to LINEAR OPTIMIZATION을 내가 알아보기 위해 정리한 글 입니다. 반박은 언제나 환영이고, 아마 그 말이 대부분 맞을 껍니다.

들어가는 글

표준형(standard form) 선형 계획 문제에서 최적해가 있다면, 그것은 최적 기저가능해(basic feasible solution)이다.
심플렉스 해법은 이를 기반으로 하고, cost가 적은 방향으로 가능해 집합의 꼭지를 따라서 기저 가능해를 이동하면서 최적해를 찾아나간다. 쉽게 말해서 가능해 집합의 꼭지점를 따라 이동하면서 비용이 감소하지 않는 기저가능해에서 정지하고 이것이 바로 최적해이다.

여기서 말하는 표준형은 아래와 같다.
minimizecx\textbf{minimize} \quad \mathbf{c^{'}x}
subject toAx=bx>=0,\textbf{subject to} \quad \mathbf{Ax=b} \\ \qquad \qquad \qquad \mathbf{x>=0,}

3.1 Optimaltity conditions

현재 xP\mathbf{x} \in P에서 x\mathbf{x}를 vector dRn\mathbf{d} \in \R^n의 방향으로 이동할 예정이에요. 왜냐면 그 방향을 비용을 감소시키는 방향이고 비용이 감소되면서 최적해에 가까워지기 때문이죠. 그런데 그 방향은 당연히 기저가능해 집합에서 벗어나면 안되겠죠? 이걸 수학적으로 이야기하면 아래와 같아요.

Definition 3.1

  • Let x\mathbf{x} be an element of a polyhedron PP. A vector dRn\mathbf{d} \in \R^n is said to be a feasible direction at x\mathbf{x}, if there exists a potitive scalar θ\theta for which x+θdP\mathbf{x+\theta d} \in P.

PP라는 다면체 공간이 해집합이고 x\mathbf{x}는 그 공간 안에 있어요. 그럼 위에서 말했던 것처럼 x\mathbf{x}는 그 공간에서 꼭지점에서 꼭지점으로 이동하면서 비용이 감소하는 것을 찾아나간다고 했어요. 근데 그 방향이 다면체 바깥으로 이동하면 해집합을 벗어나기 때문에 해를 찾는 것이 아니겠죠? 위의 Definition 3.1은 그 방향을 정의해주는 이야기에요. 해집합을 벗어나지 않는 방향, 그 방향을 feasible direction이라고 해요.

추후에 이야기하겠지만, 우리는 이동이라는 단어에 주목해야해요. 이동이라는 말에는 어디로, 얼마나 이동해서 최적해를 빠르게 찾느냐 이게 바로 심플렉스의 핵심 개념입니다.
여기서 '어디로'는 바로 dRn\mathbf{d} \in \R^n에 해당하고 '얼마나'θ\theta에 해당돼요. 각설하고 다시 '어디로'(dRn\mathbf{d} \in \R^n)에 집중해볼게요.

어디로 가는지 알기 위해서는 우리는 x\mathbf{x}를 기저변수(basic variable)와 비기저변수(nonbasic variable), 둘로 나눌꺼에요. 기저변수는 해를 구성하는 변수이고, 비기저변수는 해를 구성하지 않고 0으로 표현되는 변수를 뜻해요.

  • 기저변수(basic variable): 해를 구성
  • 비기저변수(nonbasic variable): 해를 구성하지 않아 0으로 표현
기저변수임에도 0으로 표현되는 경우가 있어요. 그건 degenerate한 경우라고 해요. 추후에 또 설명이 나오니 현재 설명하는 것은 기저변수인 경우에는 0이 없음을 가정하고 이야기할게요.
  • 기저변수의 인덱스: B(1),...,B(m)B(1),...,B(m)
  • 상응하는 기저 행렬(basis matrix)를 B=[AB(1)AB(m)]\mathbf{B= \begin{bmatrix} A_{B(1)} & \cdots & A_{B(m)} \end{bmatrix}}
  • 기저변수 벡터: xB=(xB(1),,xB(m))\mathbf{x}_{B}=(x_{B(1)},\cdots,x_{B(m)})

여기서 우리가 알고 싶은 것은 해를 구성하는 기저변수 벡터이고 이는 아래와 같이 계산될 수 있어요.

xB=B1b\mathbf{x}_{B}=\mathbf{B^{-1}b}

심플렉스는 현재 x\mathbf{x}가 위치한 곳에서 얼마나, 어디로 이동하면서 해를 개선해나간다고 했어요. 그럼 이동을 어떻게 하는지 알아볼게요.

여기서 이동한다는 것은 x\mathbf{x}의 값이 변한다는 것이고 x+θd\mathbf{x+\theta d}로 값이 변하면서 해를 개선해나가는거에요. Definition 3.1 을 보면 x+θd\mathbf{x+\theta d}로 해가 변해도 해집합 안에 있다는 것을 알 수 있죠.

우리는 위쪽에서 기저변수와 비기저변수를 나눴고 비기저변수는 해를 구성하지 않는 0인 변수라고 했어요. 그럼 현재 x\mathbf{x}θ\theta만큼 이동시키기 위해서 비기저변수 중 하나를 1로 바꿔줄거에요. 하나만 1로 변하고 나머지는 모두 0 그대로를 유지하고 있어요. 이를 교재와 같이 표현해볼게요.

비기저변수 xjx_{j}(원래는 0이었음)를 선택해서 x\mathbf{x}x+θd\mathbf{x+\theta d}로 옮길꺼에요. Definition 3.1에 적혀있듯이 θ\theta인 양수만큼 변화될꺼에요. 이 때, 비기저변수 중 xjx_{j}가 아닌 애들은 모두 0을 유지해야해요. 대수학적으로 표현하면 dj=1d_{j}=1이고 di=0d_{i}=0인데 여기서 iijj가 아닌 모든 비기저변수의 인덱스를 말해요.

이를 통해서 벡터 xB\mathbf{x_{B}}xB+θdB\mathbf{x_{B}+\theta d_{B}}로 이동하는데, 여기서 dB=(dB(1),dB(2),,dB(m))\mathbf{d_{B}}=(d_{B(1)}, d_{B(2)}, \cdots, d_{B(m)}) 이고 이는 기저변수에 해당하는 d\mathbf{d}의 원소로 구성된 벡터에요.

여기서 중요한 것은, A(x+θd)\mathbf{A(x+\theta d)}Ax\mathbf{Ax}나 모두 b\mathbf{b}와 같아요. 왜냐면 Definition 3.1에서 보면 모두 polyhedron PP 안에 있기 때문이죠. θ>0\theta>0인 경우, Ad=0\mathbf{Ad=0}이 되어야 해요. 위에서도 말했듯이 dj=1d_{j}=1이고 di=0d_{i}=0(iijj가 아닌 모든 비기저변수의 인덱스)이면 아래와 같이 식이 정리될 수 있어요.

0=Ad=i=1nAidi=i=1mAB(i)dB(i)+Aj=BdB+Aj0=\mathbf{Ad}=\sum^{n}_{i=1}\mathbf{A}_{i}d_{i}=\sum^{m}_{i=1}\mathbf{A}_{B(i)}d_{B(i)}+\mathbf{A}_{j}=\mathbf{Bd}_{B}+\mathbf{A}_{j}

여기서 basis matrix B\mathbf{B}는 가역하기(역행렬이 있기) 때문에

0=BdB+Aj0=\mathbf{Bd}_{B}+\mathbf{A}_{j}

를 정리해서 아래와 같이 dB\mathbf{d}_{B}를 구할 수 있어요.

dB=B1Aj\mathbf{d}_{B}=-\mathbf{B}^{-1}\mathbf{A}_{j}

우리가 앞서 정의한 direction vector d\mathbf{d}jj번째 basic direction이라고 할 수 있어요. 지금까지는 equality constraints에 대해서만 확인해보았는데, nonnegative constraints에 대해서는 어떨까요? 우리는 xjx_{j}가 증가된다는데 주목해야해요. 여기서 다른 비기저변수는 여전히 0을 유지하고 있다는 걸 잊어서는 안돼요. 따라서 우리는 기저변수에 대해 확인을 해봐야하죠. 두 가지 케이스가 있고 한번 확인해보겠습니다.

(a) x\mathbf{x}를 nondegenerate basic feasible solution이라 가정하면, xB>0\mathbf{x}_{B}>0 이니까 xB+θdb0\mathbf{x}_{B}+ \theta \mathbf{d}_{b}\ge0 이고 feasibility는 유지가 되죠. 주의해야할 건 θ\theta가 충분히 작을(sufficiently small) 때 유지가 됩니다.

(b) x\mathbf{x}를 degenerate한 경우에는 어떻게 될까요? 그럼 x\mathbf{x}가 항상 feasible direction이 아닐 수도 있겠죠. xB(i)\mathbf{x}_{B(i)}가 0인데 dB=B1Aj\mathbf{d}_{B}=\mathbf{-B^{-1}}A_{j}dB(i)d_{B(i)}가 negative하게 될 수도 있게 되죠. 이런 경우에, jj번째 basic direction을 따라간다면 xB(i)x_{B(i)}에 대한 비음제약을 위배하게 되고 infeasible하게 됩니다.

profile
될 때까지 하면 된다

0개의 댓글