[mathematics]

Optimization - use EXCEL to solve optimization problems

suggestion_one 2021. 5. 19. 23:55

이번 글에서는 Optimization - use EXCEL to solve optimization problems 라는 제목에서 언급한 것처럼,

최적화 문제를 풀 때, 즉 방정식과 부등식으로부터 최적의 해를 찾을 때, EXCEL 이라는 프로그램을 이용하는 방법을 소개하고자 한다.

 

데이터과학기초 라는 강의에는 'Optimization' 내용이 따로 소개되어있다. 그 강의에서 언급된 것처럼, 최적화 문제를 풀때, 여러 프로그램을 이용할 수 있는데, CPLEX, Gurobi, R 등이 있다고 한다.

 

본 강의에서는 EXCEL을 통해서 최적의 해를 찾아보기로 했다. 물론 찾는 내용은 강의에 나오지 않았고, 강의는 마무리되었다. 여기서 언급하고 싶은 것은 강의에서 안했다가 아니라 어떻게 EXCEL을 이용해서 최적의 해를 찾을 수 있는지다.

(내가 참고한 글의 링크 : https://pinkwink.kr/377)

(이름은 찾아봐도 몰라서.. 성자님께 이 자리를 빌려 감사드립니다.)

 


자, 이게 서론을 맺고 시작해보자. 시작하기 앞서 두 가지를 먼저 해야한다.

1) 우선, 내가 참고한 글을 읽은 후 아래 내용을 읽어야 한다.

2) 아래의 decision variable, objective function, constraint 에 대한 개념을 이해해야 한다.

 

데이터과학기초 강의에서 언급된 최적화 내용 (1)

 

 

데이터과학기초 강의에서 언급된 최적화 내용 (2)

 

 

데이터과학기초 강의에서 언급된 최적화 내용 (3)

위 내용들을 보고, 이해했다면, 진짜 시작할 수 있다.

 

위 링크의 글과 마찬가지로 똑같은 머그컵 예제를 통해 연습했다. 나 또한 착착 EXCEL에 하나하나 입력해가면서 프로그램을 돌려봤다.(프로그램을 돌린다는 표현이 조금 무색하지만)

위 성자님께 고맙하는 말씀을 드렸지만, 좀더 편리하고 쉽게 만들 수 있지 않을까 해서 고민해보았다.

위 글에서 바로 이해가 되지않았던게

'왜 constraints(제한조건)을 입력할 때, -1를 이용했을까?'

'그럼 -1을 이용하지 않고 할 수 있는 방법이 있지 않을까?'

 

성자님께서는 일괄적으로 적용하기 위해서 -1을 사용했다.

나는 그냥 있는그대로 써보려고 한다.

 

기본적인 과정은 동일하다. 다만, 제한조건추가 부분에서 크다를 표현한 것과 작다를 표현한 것 모두 표현했다. 

즉, '높이가 10보다 크다'는 동일하게 제한조건을 걸고, '높이가 15보다 작다'는 부등호를 반대로 설정하였다.

 

EXCEL (1)

 

EXCEL (2)

 

EXCEL (3)

 

결과는 동일하게 나왔다. 물론 당연한 결과다.

 


이제는 배웠으니 다른 예제들을 통해 학습해보자.

글이 생각보다 길어진 관계로 다음 글에서 학습해보자...