정수 계획법(Integer Programming, IP)은 자원 배분, 일정 계획, 네트워크 설계, 생산 계획 등 다양한 실세계 문제를 해결하는 데 사용되는 강력한 최적화 기법입니다. 정수 계획법은 의사결정 변수가 정수로 제한되는 최적화 문제를 다루며, 이러한 문제는 일반적으로 NP-난해(NP-hard) 문제로 분류됩니다.
정수 계획법의 주요 구성 요소는 다음과 같습니다:
일반적인 정수 계획법 문제는 다음과 같이 공식화할 수 있습니다:
$$ \text{Maximize or Minimize } ; c^T x $$
$$ \text{subject to } ; Ax \leq b $$
$$ x \in \mathbb{Z}^n $$
여기서 $ x $는 정수 변수 벡터, $ c $는 계수 벡터, $ A $는 계수 행렬, $ b $는 상수 벡터입니다.
정수 계획법은 문제의 성격에 따라 다음과 같이 분류할 수 있습니다:
구체적인 예제를 통해 정수 계획법의 적용을 살펴보겠습니다. 두 가지 제품을 생산하는 공장을 고려해 봅시다. 각 제품의 생산 비용, 시간, 이익, 그리고 제한된 자원이 주어져 있습니다. 목표는 이익을 최대화하는 것입니다.
데이터 설정:
문제 공식화:
$$ \text{Maximize } ; 40x_1 + 70x_2 $$
$$ \text{subject to} $$
$$ 3x_1 + 5x_2 \leq 40 $$
$$ 2x_1 + 4x_2 \leq 30 $$
$$ x_1, x_2 \geq 1 $$
$$ x_1, x_2 \in \mathbb{Z} $$
여기서 $$ x_1 $$과 $$ x_2 $$는 각각 제품 1과 제품 2의 생산 수량을 나타냅니다.
더 복잡한 문제로 "이중 배낭 문제(Double Knapsack Problem)"를 살펴보겠습니다. 두 개의 배낭이 있고, 각 배낭에는 최대 용량이 있습니다. 여러 개의 아이템이 있으며, 각 아이템은 특정한 무게와 가치를 가집니다. 목표는 두 배낭에 아이템들을 배치하여 총 가치를 최대화하는 것입니다.
데이터 설정:
문제 공식화:
$$ \text{Maximize } ; 60x_{A1} + 60x_{A2} + 100x_{B1} + 100x_{B2} + 120x_{C1} + 120x_{C2} $$
$$ \text{subject to} $$
$$ x_{A1} + x_{A2} \leq 1 $$
$$ x_{B1} + x_{B2} \leq 1 $$
$$ x_{C1} + x_{C2} \leq 1 $$
$$ 10x_{A1} + 20x_{B1} + 30x_{C1} \leq 50 $$
$$ 10x_{A2} + 20x_{B2} + 30x_{C2} \leq 50 $$
$$ x_{A1}, x_{A2}, x_{B1}, x_{B2}, x_{C1}, x_{C2} \in {0, 1} $$
정수 계획 문제는 다양한 알고리즘을 통해 해결할 수 있습니다:
CFL 조건의 의미와 중요성 (0) | 2024.05.18 |
---|---|
선형 계획법(Linear Programming) (0) | 2024.05.16 |
Machine precision과 NumPy 부동소수점 표현 (0) | 2023.09.08 |
positive definiteness of a matrix (0) | 2023.08.08 |
$L_2$ 직교사영(orthogonal projection) (0) | 2023.07.01 |
댓글 영역