[Excel Tip] 해 찾기로 최대한 예산에 근접하게 금액 맞추기(조합 최적화)

일을 하다 보면 종종 그런 일이 있습니다.
써야할 돈은 90만원인데 남은 예산은 70만원 정도일 때..

이럴 때는 최대한 근접하게 예산을 맞추는 것이 현명한 방법이죠.
(사용처가 제한되어 있는 예산도 있으니까요!)

일반적으로는 예산에 포함된 항목들을 이리저리 빼면서 가장 근접하게 맞출텐데요.
저런 방법은 정확하지 않습니다.
항목이 2-30개씩 된다고 했을 때는 더욱 그럴것이구요. (각 항목별 경우의 수가 너무 많죠)

약간 비현실적인 금액이긴 합니다.

Excel 의 해 찾기 기능을 활용해서 해결할 수 있습니다

이런 기능을 Excel 의 해 찾기 기능이 해결해줄 수 있습니다.
해 찾기 기능은 Excel 에 포함되어있는 기능이고, 추가방법은 이곳을 참고하세요.

우선 현재 상황은 다음과 같습니다.

목표에 최대한 근접하게 한번 찾아보겠습니다!

1. 개수와 반영액 추가하기

우선 위와 같이 개수와 반영액이 필요합니다.
감이 안잡히신다구요? 개수에는 1을 입력하게 되면, 반영액에는 해당되는 금액이 반영되게 설계하면 됩니다.

예를들면 TV의 개수에 1을 입력하게 되면, 250,000 이 반영액에 나타나게 만들어주시면 됩니다
수식은 구매액 * 개수 = 반영액 형태로 만들어주세요.

2. 해 찾기에서 다음과 같이 설정하세요.

  1. 목표설정: 목표는 최종적으로 반영액의 합계를 말합니다.
  2. 대상은 최대값으로 해주세요.
  3. 변수 셀 변경: 개수를 말합니다 (선택된 셀들)
  4. 제한조건
    • 캡쳐화면 속 첫번째 제한조건은 0 또는 1으로 선택하기 위해 2진수로 제한조건을 추가했습니다.
    • 실제 예산액보다 반영액이 높으면 안되겠죠. 따라서 조건을 추가했습니다.
  5. 해법선택: 여기서는 단순 LP 로 하겠습니다.

3. 결과검토

이렇게 하면, 700원을 남기고 주어진 예산을 다 사용할 수 있게 계산됩니다.
(항목이 많으면 시간이 더 걸릴 수 있습니다!)

정리하며

엑셀 내 해 찾기 기능을 사용하지 않는다면 Python 에서 선형 프로그램을 만드는 것도 한가지 방법입니다(이걸 조합 최적화 문제라고 부릅니다)

그냥 이거 씁시다!!
(프로그래밍 명언 중에 Don’t reinvent the wheel 이라는 말이 있습니다. 바퀴를 두번 만들지 말라는 말이지요)

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다