2014-04-02 2 views
1

세 부분으로 구성된 프로그램의 성능을 향상시키는 작업이 있다고 가정 해보십시오. 파트 A는 전체 런타임의 20 %, 파트 B는 30 %, 파트 C는 50 %가 필요합니다.어떤 항목을 선택하면 성능이 최대화됩니까?

당신은 $ 1000에 대해 B의 계수를 3.0이나 C의 계수를 1.5로 할 수 있다고 결정했습니다. 어떤 선택이 성과를 극대화 할 것인가?

파트 B의 속도를 3.0으로 높이면 20 %의 시간을 절약하면서 시간의 10 % 만 쓸 수 있다고 생각합니다. 그러나 파트 C의 속도를 1.5 배 높인 경우 25 %의 시간을 소비하고 25 %의 시간을 절약 할 수 있습니다.

25 % 대 20 %를 절약 했으므로 속도 향상 부분 C가 옳은 대답입니까?

나는이 숫자를 제대로 이해하지 못하고있다. 내가 누군가가 이것을 계산하는 방법을 보여 줄 수 없다면?

감사

답변

0

이 간단한 최적화 문제입니다 (다른 프로그램의 코드를 최적화하는 의미에서,하지만 수학 함수의 최적 점을 찾는 의미에서).

당신은 시간 (그리고 $) 사이의 트레이드 오프가 작업에 작업 소요 모델링 utility function (비용)을 시도한다 작품의 장점 (게인을 정의해야 할 것 $ terms에 performance boost를 기술하기 위해).

[상황을 더 복잡하게 만들려면 실제 실적 향상을 미리 알 수없는 경우 확률을 추가 할 수 있습니다. 상황을 더욱 복잡하게 만들기 위해 확률 추정에서 불확실성의 비용을 설명하는 비용 기간 (패널티)을 추가 할 수 있습니다. 마지막 두 개를 예상 값으로 생각하고 게인비용의 분산으로 생각할 수 있습니다 임의 변수).]

직관은 유틸리티 함수가 상황의 "행복 수준"을 모델링한다는 것입니다.

일단 유틸리티 기능을 사용하면 남은 것은 최대 점수를 찾는 것입니다 (분석적, 수치 적 ...) 다양한 방법으로 수행 할 수 있습니다.

비용 및 이득 간의 균형을 설명하는 유틸리티 기능이 없으면 질문에 대한 명확한 답변을 얻을 수 없습니다.

+0

내 유틸리티 기능은 1 = 0.2A + 0.3B + 0.5C와 비슷합니까? A, B, C가 모두 1로 시작하는 곳이 어디입니까? – mharris7190

관련 문제