logo

선형 계획 문제의 정의 📂최적화이론

선형 계획 문제의 정의

정의 1

목적 함수objective function제약constraint들이 리니어최적화 문제선형 계획 문제linear Programming Problem, 짧게는 선형 문제lP라 한다. 쉽게 말해, 선형 문제란 선형성을 가지는 목적 함수 f:RnRf: \mathbb{R}^{n} \to \mathbb{R} 가 주어진 벡터 cRn\mathbf{c} \in \mathbb{R}^{n} 에 대해 f(x):=cTx f \left( \mathbf{x} \right) := \mathbf{c}^{T} \mathbf{x} 이고 주어진 행렬 ARm×nA \in \mathbb{R}^{m \times n}bRm×1\mathbf{b} \in \mathbb{R}^{m \times 1} 에 대해 Axb A \mathbf{x} \le \mathbf{b} 을 만족시키면서 ff 의 함수값이 최적화되는 xRn\mathbf{x} \in \mathbb{R}^{n} 를 구하는 문제다. 주로 다음과 같이 나타낸다. OptimizecTxsubject toAxb \begin{matrix} \text{Optimize} & \mathbf{c}^{T} \mathbf{x} \\ \text{subject to} & A \mathbf{x} \le \mathbf{b} \end{matrix} 이러한 문제에서 최적화를 떠나 일단 제약 조건은 만족시키는 해를 가용해feasible solution라 하고, 그들 중에서 목적 함수를 최대화하거나 최소화하는 해를 최적해optimal solution라 한다.


  • cT\mathbf{c}^{T}전치를 의미한다.
  • 최적화는 최대화 혹은 최소화를 말한다.

설명

말풀이

선형은 말 그대로 주어진 목적 함수와 제약 조건이 선형이기 때문에 붙은 말이다. 수식에 x=(x1,,xn)\mathbf{x} = \left( x_{1} , \cdots , x_{n} \right) 들의 제곱항이나 로그 같은 비선형 함수꼴이 들어가지 않으며 제약 역시 행렬(부등)식의 꼴로 나타나야 한다는 점에서 알맞은 표현이다. 주로 행렬대수, 선형대수에서 다음과 같이 등식으로 나타난 문제를 푸는 것과 대비된다. Ax=b A \mathbf{x} = \mathbf{b}

계획program은 흔히 우리가 아는 컴퓨터의 응용 프로그램이 아니라 스케쥴schedule이나 태스크task를 의미한다. 실제 선형 계획법의 응용에서 각각의 변수 x1,,xnx_{1} , \cdots , x_{n} 들은 시간, 에너지, 자원 등의 여러가지 요소를 나타낼 수 있다.

가령 경제나 경영학에서 이것들을 가지고 무언가를 최대화한다면 그것은 아마 효용utility, 최소화한다면 비용cost이 될 것이다. 출퇴근시간과 효율이 다른 직원들을 어떤 작업에 배치하는가에 따른 최적의 근무표를 만들어야한다면 선형 계획법이 가장 우선적으로 고려되는 방법일 수 있다.

예시 2

Optimizex1+x2subject tox10x20x2x11x1+6x2154x1x210 \begin{matrix} \text{Optimize} & x_{1} + x_{2} \\ \text{subject to} & x_{1} \ge 0 \\ & x_{2} \ge 0 \\ & x_{2} - x_{1} \le 1 \\ & x_{1} + 6 x_{2} \le 15 \\ & 4 x_{1} - x_{2} \le 10 \end{matrix}

위와 같은 선형 문제를 생각해보자. 무려 조건이 다섯개나 되기 때문에 언뜻 복잡해보이지만, 막상 다루는 변수는 x1x_{1}x2x_{2} 둘 뿐이니 이를 22차원에 평면에 나타내보면 다음의 그림과 같이 조건을 만족하는 영역을 확인할 수 있다.

20210907_143257.png

이러한 영역에 속하는 모든 점들은 일단 제약 조건을 만족하긴하는 가용해feasible solution다. 이제 이들 중 목적 함수 Λ(x1,x2)=x1+x2\Lambda \left( x_{1} , x_{2} \right) = x_{1} + x_{2} 가 최대가 되게 하는 점을 찾으면 된다. 기하적으로 말하자면 직선 가용해의 영역과 x1+x2=λx_{1} + x_{2} = \lambda 가 겹치는intersect 부분 중 λ\lambda 가 제일 커지는 곳, 그러니까 직선의 yy-절편이 가장 커지는 점을 찾으면 되는 것이다.

20210907_143204.png

실제 예제의 해답은 λ=5\lambda = 5 가 되도록 하는 (x1,x2)=(3,2)\left( x_{1} , x_{2} \right) = (3,2) 다. 그런데 이러한 풀이는 어딘가 낯이 익다. 일반적인 교과과정을 거쳤다면 아마 고등학교 1학년 쯤 교과서에서 이와 비슷한 문제들을 보았을 것이다. 이처럼 기본적인 아이디어는 중학교를 갓 졸업한 어린이 친구들도 이해할 수 있을 정도로 간단하다. 애초에 ‘선형’이 붙었다는 것은 실제 풀이가 어떻든 개념 자체는 쉽다는 것이다.


  1. Matousek. (2007). Understanding and Using Linear Programming: p3. ↩︎

  2. Matousek. (2007). Understanding and Using Linear Programming: p1~2. ↩︎