Community

๐ŸŒˆ ์˜์นด ์˜ˆ์•ฝ์„ ํšจ์œจ์ ์œผ๋กœ - ์ˆ˜ํ•™์  ๋ชจ๋ธ๋ง์„ ํ™œ์šฉํ•œ ์˜์นด ์˜ˆ์•ฝ ํ…ŒํŠธ๋ฆฌ์Šค ๐ŸŽ ์ด ๊ธ€์„ ์ถ”์ฒœํ•˜๋Š” ์ด์œ  - ์‚ฐ์—…๊ณตํ•™ ์ „๊ณต์—์„œ ๋ฐฐ์šฐ๋Š” ์„ ํ˜• ์ตœ์ ํ™”, ๋น„์„ ํ˜• ์ตœ์ ํ™”, Integer Programmin

๐ŸŒˆ ์˜์นด ์˜ˆ์•ฝ์„ ํšจ์œจ์ ์œผ๋กœ - ์ˆ˜ํ•™์  ๋ชจ๋ธ๋ง์„ ํ™œ์šฉํ•œ ์˜์นด ์˜ˆ์•ฝ ํ…ŒํŠธ๋ฆฌ์Šค ๐ŸŽ ์ด ๊ธ€์„ ์ถ”์ฒœํ•˜๋Š” ์ด์œ  - ์‚ฐ์—…๊ณตํ•™ ์ „๊ณต์—์„œ ๋ฐฐ์šฐ๋Š” ์„ ํ˜• ์ตœ์ ํ™”, ๋น„์„ ํ˜• ์ตœ์ ํ™”, Integer Programming์— ๋Œ€ํ•ด ์•„์‹œ๋‚˜์š”? - ์ €๋„ ๊ฒฝ์˜๊ณผํ•™ ์‹œ๊ฐ„์— ์ด๋Ÿฐ ๊ณผ๋ชฉ์„ ๋ฐฐ์› ๋Š”๋ฐ, ๊ทธ ๋‹น์‹œ์—” ์ดํ•ดํ–ˆ์œผ๋‚˜ ์‹ค๋ฌด์—์„œ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ• ์ง€ ๋„ˆ๋ฌด ์ƒ์ƒํ•˜๊ธฐ ์–ด๋ ค์› ์–ด์š” - ์˜์นด์—์„  ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด ์˜ˆ์•ฝ ํšจ์œจ์„ ๊ฐœ์„ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ์–ด์š” - ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ๋ฐ์ดํ„ฐ ๋ถ„์„, ๋จธ์‹ ๋Ÿฌ๋‹/๋”ฅ๋Ÿฌ๋‹ ๋“ฑ๋งŒ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ตœ์ ํ™” ์ด๋ก ์—์„œ ๋‚˜์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ถ€๋ถ„์„ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์–ด ํŒ€์›๋ถ„๊ณผ ๊ธ€์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค - ์ด ์ตœ์ ํ™” ํ”„๋กœ์ ํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฐฐํฌํ–ˆ๋Š”์ง€๋„ ๋‹ด์•˜์Šต๋‹ˆ๋‹ค. ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด Ray๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , GCP Pub/Sub, Dataflow, CPU 224 Core ์„ ์ ํ˜• ์ธ์Šคํ„ด์Šค ๋“ฑ์„ ์‚ฌ์šฉํ•œ ๋‚ด์šฉ๋„ ์žˆ์œผ๋‹ˆ ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ถ„๋“ค๋„ ์žฌ๋ฏธ์žˆ๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ์„๊ฑฐ์—์š” ๐Ÿ‘ ์ฝ์œผ๋ฉด ์ข‹์€ ๋ถ„ - ๋ชจ๋นŒ๋ฆฌํ‹ฐ, ๋ฌผ๋ฅ˜, ๋ฐฐ๋‹ฌ ์‚ฐ์—…์—์„œ ์ผํ•˜๊ณ  ๊ณ„์‹  ๋ถ„(์ด ๋ถ„์•ผ๊ฐ€ ์ตœ์ ํ™”์™€ ์ž˜ ๋งž์•„์š”) - ์ตœ์ ํ™” ๋ฌธ์ œ๊ฐ€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐ๋˜๋Š”์ง€ ๊ถ๊ธˆํ•˜์‹  ๋ถ„ - ์˜์นด ๋ฐ์ดํ„ฐ๋น„์ฆˆ๋‹ˆ์Šค ๋ณธ๋ถ€์˜ ์—…๋ฌด ๋ฐฉ์‹์ด ๊ถ๊ธˆํ•˜์‹  ๋ถ„ - ์ตœ์ ํ™” ๋ฌธ์ œ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง ๊ณผ์ •์ด ๊ถ๊ธˆํ•˜์‹  ๋ถ„ ๐Ÿ“‹ ๋ชฉ์ฐจ 1. ์˜ˆ์•ฝ ํ…ŒํŠธ๋ฆฌ์Šค ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ - 1.1 ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์˜ ์œ ๋ž˜ - 1.2 ์˜ˆ์•ฝ ํ…ŒํŠธ๋ฆฌ์Šค์˜ ๋ชฉ์  2. ์˜ˆ์•ฝ ํ…ŒํŠธ๋ฆฌ์Šค ์ตœ์ ํ™” ๋ชจ๋ธ๋ง - 2.1 ์ตœ์ ํ™” ๋ฌธ์ œ(Optimization Problem)์˜ ์ ‘๊ทผ๋ฒ• - 2.2 ์ •์ˆ˜ ๊ณ„ํš๋ฒ•(Integer Programming) - 2.3 ์ตœ์ ํ™” ์ง€ํ‘œ ์ •์˜ํ•˜๊ธฐ : ์–ด๋–ค ์ƒํƒœ๊ฐ€ ๋” โ€˜์ตœ์ โ€™์ผ๊นŒ? - 2.4 ์ตœ์ ํ™” ๋ชจ๋ธ ์ •์˜ํ•˜๊ธฐ - 2.5 ์ตœ์ ํ™” ๋ชจ๋ธ ๊ตฌํ˜„ํ•˜๊ธฐ : Google OR-Tools 3. ์˜ˆ์•ฝ ํ…ŒํŠธ๋ฆฌ์Šค ๋ชจ๋ธ ๋ฐฐํฌ - 3.1 ์ตœ์ ํ™” ์„œ๋ฒ„ & ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ - 3.2 ์˜์นด ์„œ๋น„์Šค ์„œ๋ฒ„์™€ ์ตœ์ ํ™” ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ ํ”„๋กœํ† ์ฝœ 4. ์˜ˆ์•ฝ ํ…ŒํŠธ๋ฆฌ์Šค ์ ์šฉ ์„ฑ๊ณผ 5. ๋งˆ๋ฌด๋ฆฌ --- ์ตœ์ ํ™” ๋ฌธ์ œ(Optimization Problem) : ์–ด๋–ค ๋ชฉ์  ํ•จ์ˆ˜(Objective Function)์˜ ํ•จ์ˆซ๊ฐ’์„ ์ตœ๋Œ€ํ™” ๋˜๋Š” ์ตœ์†Œํ™”ํ•˜๋Š” ๋ณ€์ˆ˜์˜ ํ•ด ๊ฐ’์„ ์ฐพ๋Š” ์œ ํ˜•์˜ ๋ฌธ์ œ ์ตœ์ ํ™” ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ ๋ฐฉ์‹ 1) ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1-1) ๋ฌธ์ œ์— ๋งž์ถค์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋ฐœ 1-2) ํœด๋ฆฌ์Šคํ‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ 2) ์ˆ˜ํ•™์  ๋ชจ๋ธ๋ง ํ›„ Solver ์‚ฌ์šฉ ๊ฐ๊ฐ ์ตœ์ ํ•ด ๋ณด์žฅ ์—ฌ๋ถ€, ๊ฐœ๋ฐœ์˜ ๋‚œ์ด๋„๊ฐ€ ๋‹ค๋ฅด๋ฏ€๋กœ ์ทจ์‚ฌ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ ์ •์ˆ˜ ๊ณ„ํš๋ฒ•(Integer Programming) : ์„ ํ˜• ์ œ์•ฝ์กฐ๊ฑด์œผ๋กœ ํ‘œํ˜„๋œ ํ•ด ๊ณต๊ฐ„์—์„œ ์กฐํ•ฉ ์ตœ์ ํ™”(Combinatorial Optimization) ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ์ตœ์ ํ™” ๊ธฐ๋ฒ• ์ตœ์ ํ™” ๋ชจ๋ธ์˜ 3์š”์†Œ 1) ์ œ์•ฝ์กฐ๊ฑด(Contraints) - ํŠน์ • ์ œ์•ฝ์„ ๊ฑฐ๋Š” ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด x๋Š” 0 ๋ณด๋‹ค ํฐ ๊ฐ’์ด๋‹ค, -x์™€ y๋ฅผ ๋”ํ•˜๋ฉด 2๋ณด๋‹ค ์ž‘๋‹ค์ž…๋‹ˆ๋‹ค. 2) ๊ฒฐ์ •๋ณ€์ˆ˜(Decision Variable) - ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ ์ž ํ•˜๋Š” ๋ณ€์ˆ˜์ธ x, y๋Š” k ๊ฐ’์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒฐ์ •๋ณ€์ˆ˜๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค 3) ๋ชฉ์  ํ•จ์ˆ˜(Objective Function) - ์ตœ๋Œ€ํ™”ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ’ k๋Š” ์ด ๋ฌธ์ œ์˜ ๋ชฉ์ ์ด ๋˜๋Š” ํ•จ์ˆ˜๋กœ ๋ชฉ์ ํ•จ์ˆ˜๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค