2020-1ν•™κΈ°, λŒ€ν•™μ—μ„œ β€˜μ•Œκ³ λ¦¬μ¦˜β€™ μˆ˜μ—…μ„ λ“£κ³  κ³΅λΆ€ν•œ λ°”λ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. 지적은 μ–Έμ œλ‚˜ ν™˜μ˜μž…λ‹ˆλ‹€ :)

10 minute read

2020-1ν•™κΈ°, λŒ€ν•™μ—μ„œ β€˜μ•Œκ³ λ¦¬μ¦˜β€™ μˆ˜μ—…μ„ λ“£κ³  κ³΅λΆ€ν•œ λ°”λ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. 지적은 μ–Έμ œλ‚˜ ν™˜μ˜μž…λ‹ˆλ‹€ :)


Introduction to Linear Programming

μ§€κΈˆκΉŒμ§€ 닀룬 λ§Žμ€ μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œλ“€μ€ λŒ€λΆ€λΆ„ μ΅œμ ν™” λ¬Έμ œμ˜€λ‹€: shortest path, cheapest spanning tree, … 이런 μ΅œμ ν™” λ¬Έμ œλŠ” λŒ€κ²Œ 2κ°€μ§€λ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλŠ”λ°,

  1. certain constraints
  2. some criterion λ˜λŠ” objective function

예λ₯Ό λ“€μ–΄ shortest pathλ₯Ό μ°ΎλŠ” λ¬Έμ œμ—μ„œλŠ” μ œμ•½ 쑰건이 β€œpathλŠ” κ·Έλž˜ν”„μ˜ edgeλ§Œμ„ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€. $s$μ—μ„œ μΆœλ°œν•΄ $t$에 λ„μ°©ν•œλ‹€β€κ°€ λœλ‹€. 그리고 μ΅œμ ν™”μ˜ λͺ©ν‘œλŠ” β€œμ œμ•½ 쑰건을 λ§Œμ‘±ν•˜λŠ” κ°€μž₯ 짧은 path”λ₯Ό μ°ΎλŠ” 것이닀.

이번 μ±•ν„°μ—μ„œ λ‹€λ£¨λŠ” <Linear Programming>은 λ§Žμ€ μ’…λ₯˜μ˜ μ΅œμ ν™” 문제λ₯Ό ν¬κ΄„ν•˜λŠ” κ°œλ…μΈλ°, <Linear Programming>은 μ œμ•½ 쑰건(constraint)와 λͺ©ν‘œ(objective function)이 λͺ¨λ‘ linear function이닀!

이번 ν¬μŠ€νŠΈμ—μ„œλŠ” μ–΄λ–€ λ¬Έμ œλ“€μ΄ <Linear Programming>에 μ†ν•˜λŠ”μ§€ 그리고 κ·Έ λ¬Έμ œλ“€μ„ μ–΄λ–»κ²Œ <Linear Programming>의 ν˜•μ‹μœΌλ‘œ ν‘œν˜„ν•  수 μžˆλŠ”μ§€λ₯Ό μ‚΄νŽ΄λ³Έλ‹€.


Profit Maximization

A, B 두 개의 μƒν’ˆμ„ μ œμ‘°ν•˜λŠ” νšŒμ‚¬κ°€ μžˆλ‹€κ³  ν•˜μž. νšŒμ‚¬λŠ” μ•„λž˜μ™€ 같이 μ‘°κ±΄μ—μ„œ 두 μƒν’ˆμ„ 생산할 수 μžˆλ‹€κ³  ν•œλ‹€.

A μƒν’ˆ: $1 profit per piece, $\le 200$ pieces demand per day

B μƒν’ˆ: $6 profit per piece, $\le 300$ pieces demand per day

그리고 νšŒμ‚¬μ˜ 노동λ ₯은 μ•„λž˜μ™€ κ°™λ‹€.

노동λ ₯: produce $\le 400$ pieces per day

κ°€μž₯ λ§Žμ€ μ΄μœ€μ„ 벌기 μœ„ν•΄μ„  노동λ ₯을 μ–΄λ–»κ²Œ λΆ„λ°°ν•΄μ•Ό ν• κΉŒ?

이 λ¬Έμ œλŠ” 쀑고등학ꡐ μˆ˜ν•™ μ‹œκ°„μ— 배울 μ •λ„λ‘œ μ‰¬μš΄ λ¬Έμ œμ΄λ‹€. 이걸 <Linear Programming; μ΄ν•˜ LP>의 ν˜•μ‹μœΌλ‘œ ν‘œν˜„ν•΄λ³΄μž.

Variables

  • $x_1$: # of item A to produce per day
  • $x_2$: # of item B to produce per day

Constraints

  • $x_1, x_2 \ge 0$
  • $x_1 \le 200$ and $x_2 \le 300$
  • $x_1 + x_2 \le 400$

Objective Function

maximize project per day: $\max \; (x_1 + 6 x_2)$

문제λ₯Ό LP의 ν˜•μ‹μœΌλ‘œ ν‘œν˜„ν–ˆμœΌλ©΄ 이제 문제λ₯Ό ν•΄κ²°ν•΄λ³΄μž. κ°€μž₯ λ¨Όμ € ν•  일은 Constraintλ₯Ό μΈμ‹ν•˜λŠ” 것이닀.

이 μœ„μ— objective function을 ν‘œν˜„ν•˜λ©΄ μ•„λž˜μ™€ κ°™λ‹€.

κ²°κ΅­ constraintsκ°€ μœ λ„ν•˜λŠ” feasible region μ€‘μ—μ„œ max. profit을 얻을 수 μžˆλ‹€! πŸ‘


Diet Problem

λ‹€λ₯Έ μ’…λ₯˜μ˜ μŒμ‹ $n$개 μžˆλ‹€: $F_1, …, F_n$. 그리고 각 μŒμ‹μ€ $m$ μ’…λ₯˜ 만큼의 μ˜μ–‘μ†Œλ₯Ό ν•¨μœ ν•˜κ³  μžˆλ‹€: $N_1, …, N_m$.

또 식단과 κ΄€λ ¨ν•΄ μ•„λž˜μ˜ μš”μ†Œλ“€μ΄ μžˆλŠ”λ°,

  • $a_ij$λ₯Ό μŒμ‹ $F_i$ ν•˜λ‚˜μ— μžˆλŠ” μ˜μ–‘μ†Œ $N_j$의 양이라고 ν•˜μž.
  • $r_j$λ₯Ό ν•˜λ£¨μ— μ„­μ·¨ν•΄μ•Ό ν•˜λŠ” μ˜μ–‘μ†Œ $N_j$의 양이라고 ν•˜μž.
  • $x_i$λ₯Ό ν•˜λ£¨μ— μ„­μ·¨ν•˜λŠ” μŒμ‹ $F_i$의 양이라고 ν•˜μž.
  • $p_i$λ₯Ό μŒμ‹ $F_i$의 ν•˜λ‚˜μ˜ 가격이라고 ν•˜μž.

ν•˜λ£¨ 식단은 μŒμ‹ 쑰합을 μ–΄λ–»κ²Œ ν•˜λŠλƒμ— 따라 달렸닀. μš°λ¦¬λŠ” κ°€μž₯ 적은 λΉ„μš©μœΌλ‘œ μ μ ˆν•œ μ˜μ–‘μ„ μ„­μ·¨ν•˜λŠ” 식단을 μ§œμ•Ό ν•œλ‹€.

μƒν™œμ— λ°€μ ‘ν•œ 식단 λ¬Έμ œμ΄λ‹€. 이걸 LP ν˜•νƒœλ‘œ ν‘œν˜„ν•΄λ³΄μž.

Variables

  • $x$: $n$차원 λ²‘ν„°λ‘œ μŒμ‹ $F_i$의 양을 μ˜λ―Έν•œλ‹€.

Objective Function

minimize cost: $p_1x_1 + p_2x_2 + \cdots + p_nx_n$

Constraints

  • $x_i \ge 0$
  • $a_{1j}x_1 + a_{2j}x_2 + \cdots + a_{nj}x_n \ge r_j$

Assignment Problem

$n$λͺ…μ˜ 직원과 $m$개의 μž‘μ—…μ΄ μžˆλ‹€. 직원 $i$κ°€ μž‘μ—… $j$λ₯Ό ν•˜λ£¨ 쒅일 ν•  λ•Œμ˜ 효용이 $a_{ij}$라고 ν•˜μž. κ·ΈλŸ¬λ‚˜ ν•˜λ‚˜μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•  λ•ŒλŠ” ν•œ λͺ…μ˜ μ‚¬λžŒμ΄ λ°°μ •λ˜μ–΄μ•Ό ν•˜κ³ , 각 직원은 ν•˜λ£¨λ₯Ό μͺΌκ°œμ„œ ν•˜λ£¨μ— μ—¬λŸ¬ 개의 일을 μˆ˜ν–‰ν•  수 μžˆλ‹€. μš°λ¦¬λŠ” μ§μ›λ“€μ—κ²Œ ν•˜λ£¨μΉ˜ μž‘μ—…μ„ 적절히 λΆ„λ°°ν•΄μ„œ 졜고의 효용의 λ‹¬μ„±ν•˜κ³ μž ν•œλ‹€.

Variables

  • $x_{ij}$: 직원 $i$κ°€ μž‘μ—… $j$에 ν•˜λ£¨λ₯Ό μ“°λŠ” λΉ„μœ¨

Constraints

  • $0 \le x_{ij} \le 1$
  • \(\displaystyle \sum^{m}_{j=1} x_{ij} \le 1\): 직원 $i$λŠ” ν•˜λ£¨ μ΄μƒμ˜ μ‹œκ°„μ„ μ“Έ μˆ˜λŠ” μ—†λ‹€.
  • \(\displaystyle \sum^{n}_{i=1} x_{ij} \le 1\): μž‘μ—… $j$에 ν•˜λ£¨ 치 μ΄μƒμ˜ μž‘μ—…μ„ ν•˜λ„λ‘ ν• λ‹Ήν•  μˆ˜λŠ” μ—†λ‹€.

Objective Function

maximize \(\displaystyle \sum^{n}_{i=1} \sum^{m}_{j=1} a_{ij} x_{ij}\)


Production Plaaning

λ„μžκΈ°λ₯Ό λ§Œλ“œλŠ” 곡μž₯이 μžˆλ‹€. κ·Έ 곡μž₯에 λ“€μ–΄μ˜€λŠ” μ›”κ°„ 주문은 λŒ€λž΅ $440 \le d_i \le 920$ 정도라고 ν•œλ‹€. 곡μž₯μ—λŠ” ν˜„μž¬ 30λͺ…μ˜ 직원이 μžˆλ‹€. 직원듀은 ν•œλ‹¬μ— 20개의 λ„μžκΈ°λ₯Ό λ§Œλ“€ 수 있으며, 2000μ›μ˜ 월급을 λ°›λŠ”λ‹€.

곡μž₯은 직원을 μΆ”κ°€λ‘œ κ³ μš©ν•˜κ±°λ‚˜ ν•΄κ³ ν•  수 μžˆλŠ”λ°, 각각 320원과 400μ›μ˜ λΉ„μš©μ΄ λ“ λ‹€.

…

λ¬Έμ œκ°€ μ’€ κΈΈμ–΄μ„œ 일단 μ—¬κΈ°κΉŒμ§€ 읽고 LP ν˜•νƒœλ‘œ κΈ°μˆ ν•΄λ³΄μž.

Variables

  • $w_i$: $i$번째 달에 고용된 직원 수, μ²˜μŒμ—λŠ” 30λͺ…μ˜ 직원이 μžˆλ‹€. $w_0 = 30$
  • $x_i$: $i$번째 달에 μƒμ‚°ν•œ λ„μžκΈ°μ˜ 수
  • $h_i, f_i$: $i$번째 달에 κ³ μš©ν•˜κ±°λ‚˜ ν•΄κ³ ν•œ μ§μ›μ˜ 수

Constraints

  • $w_i, x_i, h_i, f_i \ge 0$
  • $x_i = 20 w_i$
  • $w_i = w_{i-1} + h_i - f_i$

Objective Function

아직 λ¬Έμ œμ—λŠ” μ•ˆ λ‚˜μ™”μ§€λ§Œ, 결ꡭ은 곡μž₯ 운영 λΉ„μš©μ„ μ΅œμ†Œν™”ν•˜λŠ” λ¬Έμ œλ‹€.

\[\min \quad 2000 \sum_i w_i + 320 \sum_i h_i + 400 \sum_i f_i\]

문제λ₯Ό 계속 μ½μ–΄λ³΄μž.

…

초과근무λ₯Ό 톡해 λ„μžκΈ°λ₯Ό μΆ”κ°€λ‘œ 생산할 수 μžˆλ‹€. μ΄λ•Œ μƒμ‚°λœ λ„μžκΈ°λŠ” κΈ°μ‘΄ κΈ‰μ—¬μ˜ 80%λ₯Ό 초과근무 λΉ„μš©μœΌλ‘œ μ§€λΆˆν•΄μ•Ό ν•œλ‹€. μ΄ˆκ³Όκ·Όλ¬΄λŠ” λŠ₯λ₯ μ΄ 떨어지기 λ•Œλ¬Έμ— 직원 ν•œλͺ…이 초과 근무둜 μƒμ‚°ν•˜λŠ” λ„μžκΈ° μˆ˜λ„ 6개 뿐이닀.

…

Variables

  • $o_i$: $i$번째 달에 초과근무둜 μƒμ‚°λœ λ„μžκΈ°μ˜ 수

Constraints

  • $o_i = 6 w_i$
  • $x_i = 20 w_i + o_i$

Objective Function

λ„μžκΈ° ν•˜λ‚˜μ— $2000/20 = 100$을 κΈ‰μ—¬λ‘œ μ œκ³΅ν–ˆλ‹€. 초과근무둜 μƒμ‚°λœ 것에 λŒ€ν•΄μ„  80%λ₯Ό 더 주기둜 ν–ˆμœΌλ‹ˆ 초과근무둜 μƒμƒλœ λ„μžκΈ° ν•˜λ‚˜μ— $180$의 초과근무 κΈ‰μ—¬λ₯Ό μ œκ³΅ν•΄μ•Ό ν•œλ‹€.

\[\min \quad 2000 \sum_i w_i + 320 \sum_i h_i + 400 \sum_i f_i + 180 \sum_i o_i\]

…

곡μž₯은 맀달 말에 μ—¬λΆ„μ˜ λ„μžκΈ°λ₯Ό μ €μž₯ν•  수 μžˆλ‹€. λ„μžκΈ°λ₯Ό μ €μž₯ν•˜λŠ”λ° 8의 λΉ„μš©μ΄ λ“€λ©°, λ…„λ„μ˜ μ‹œμž‘κ³Ό λμ—λŠ” μ €μž₯ν•˜λŠ” λ„μžκΈ°κ°€ μ—†λ‹€.

Variables

  • $si$: $i$번째 월말에 μ €μž₯ν•  λ„μžκΈ° 수, $s_0 = 0$

Constraints

  • $s_i = s_{i-1} + x_i - d_i$

Objective Function

\[\min \quad 2000 \sum_i w_i + 320 \sum_i h_i + 400 \sum_i f_i + 180 \sum_i o_i + 8 \sum_i s_i\]

Bandwidth Allocation

λ„€νŠΈμ›Œν¬ κ³΅κΈ‰μžλŠ” μ•„λž˜μ™€ 같은 쑰건으둜 λ„€νŠΈμ›Œν¬λ₯Ό κ΅¬μΆ•ν•˜λ €κ³  ν•œλ‹€.

  • 데이터 전솑 λ‹¨μœ„ λ‹Ή A-B μ—°κ²°μ—μ„œλŠ” 3의 수읡이, B-C μ—°κ²°μ—μ„œλŠ” 2의 수읡이, A-C μ—°κ²°μ—μ„œλŠ” 4의 수읡이 λ‚œλ‹€.
    • 즉, A-Bμ—μ„œ 1 μœ λ‹› 만큼 정보λ₯Ό μ£Όκ³  λ°›μœΌλ©΄ 3만큼의 이득이 λ‚œλ‹€λŠ” 것이닀.
  • 각 연결은 2 μ΄μƒμ˜ λ‹¨μœ„ μœ λ‹› 만큼 정보λ₯Ό μ£Όκ³  λ°›λŠ”λ‹€.
  • 각 연결은 long pathκ³Ό short path λ˜λŠ” 볡합적인 ν˜•νƒœλ‘œ ν˜•μ„±λœλ‹€.

μœ„μ™€ 같은 μ—°κ²° ν˜•νƒœλ₯Ό μ΄μš©ν•΄ λ„€νŠΈμ›Œν¬ μ΄μœ€μ„ μ΅œλŒ€ν™” ν•˜λ„λ‘ λ„€νŠΈμ›Œν¬ λΌμš°νŒ…μ„ κ΅¬μ„±ν•˜λΌ.

Variables

  • $x_{AB}$: short-path bandwidth allocated to the connection btw $A$ and $B$
  • $x’_{AB}$ long-path bandwidth allocated to the connection btw $A$ and $B$

Objective Function

\[\max \; 3 x_{AB} + 3 x'_{AB} + 2 x_{BC} + 2 x'_{BC} + 4 x_{CA} + 4 x'_{CA}\]

Constraints

\[x_{AB}, x'_{AB}, x_{BC}, x'_{BC}, x_{CA}, x'_{CA} \ge 0\] \[\begin{aligned} x_{AB} + x'_{AB} &\le 2 \\ x_{BC} + x'_{BC} &\le 2 \\ x_{CA} + x'_{CA} &\le 2 \end{aligned}\] \[\begin{aligned} x_{AB} + x'_{AB} + x_{BC} + x'_{BC} &\le 10 & [\text{edge}(b, B)] \\ x_{AB} + x'_{AB} + x_{CA} + x'_{CA} &\le 12 & [\text{edge}(a, A)] \\ x_{BC} + x'_{BC} + x_{CA} + x'_{CA} &\le 8 & [\text{edge}(c, C)] \end{aligned}\] \[\begin{aligned} x_{AB} + x'_{BC} + x'_{CA} &\le 6 & [\text{edge}(a, b)] \\ x_{BC} + x'_{AB} + x'_{CA} &\le 13 & [\text{edge}(b, c)] \\ x_{CA} + x'_{AB} + x'_{BC} &\le 11 & [\text{edge}(c, a)] \end{aligned}\]

μ΄κ²ƒμœΌλ‘œ LP의 문제둜 ν‘œν˜„ν•  수 μžˆλŠ” μ˜ˆμ‹œ 사둀듀을 μ‚΄νŽ΄λ³΄μ•˜λ‹€. ν˜„μ‹€μ˜ 문제λ₯Ό LP둜 ν’€κΈ° μœ„ν•œ κ°€μž₯ 기본적인 λ‹¨κ³„λŠ” μœ„μ™€ 같이 Variables, Objective Function, Constraints둜 μ •μ œν•΄μ„œ ν™•μΈν•˜λŠ” 것이닀. LPλ₯Ό ν‘ΈλŠ” 것은 κ·Έ λ‹€μŒμ˜ 일이닀.

λ‹€μŒ ν¬μŠ€νŠΈμ—μ„œλŠ” LP 문제λ₯Ό ν‘ΈλŠ” 방법인 <Simplex Method>에 λŒ€ν•΄ μ‚΄νŽ΄λ³Έλ‹€.

Categories:

Updated: