2013-04-17 5 views
1

우리는 컴퓨터 과학을 전공하는 1 학년 학생 그룹입니다. 우리는 우리는 C#에서 프로그램을 만들고 싶어 (직접 번역)는 "전기 장 다이어트 계획"몇 가지 기준을 충족해야하는 조합 최적화

라는 프로젝트에서 작업하는

그 주간 기본 계산 fullfiels 다이어트 계획/만족하는 몇 가지 기준에 :

귀하의 일일 에너지 섭취량은 계산 된 칼로리 요구량을 초과해서는 안됩니다. 가 (. 예 우리는 한 사람이 하루에 2000 칼로리를 먹어야한다는 계산하면 다이어트 계획은 약 2,000 칼로리를 계획해야합니다) 배포해야

일일 에너지 (칼로리)를 다음과 같이

  • 지방 (25) -35 %
  • 탄수화물 50-60%
  • 단백질 ~ 20 %

우리는 음식과 얼마나 많은 지방, 탄수화물과 단백질이 계속있는 "데이터베이스"가 ains + 대략적인 가격. 그리고 우리는 조리법을 가진 "데이터베이스"와 그것을 요리하는 데 걸리는 시간이 있습니다.

그래서 우리는 일일 에너지 필요량 (지방, 탄수화물, 단백질)을 어떻게 충족시켜야하는지에 대한 좋은 다이어트 계획을 주간 기본 계산으로 만들고 싶습니다. 이 프로그램은 또한 많은 시간과 많은 비용을 들이지 않는식이 요법을 계획해야합니다 (사용자는 가격이 책정 된 주에 대한 상한선을 정의합니다).

SO .. 우리는 도움을 우리는 조합 최적화 알고리즘/문제의 많은하지만 대부분 "배낭 문제에서 찾고있다이 를 ^^ 만족 하루에 3-6 요리를 combinate 수있는 방법/알고리즘을 찾으려면 ".

그러나 이러한 알고리즘/문제는 하나의 기준 만 만족하거나 "가장 저렴한"솔루션을 찾으려고합니다. -> 우리는 기준을 많이 만족하고 최적의 솔루션을 (하지 저렴한 .. 전 지방 그냥하지 25-35 % 사이로 가장 낮은 값을가집니다.)

우리는 어떤 희망 찾으려 할 좋은 알고리즘으로 우리를 도울 수 있습니다.

+0

음, 무엇을 시도 했습니까? – svick

+1

알고리즘과 관련이없는 몇 가지 사항을 정의해야합니다. 제약 조건의 우선 순위는 무엇입니까? 예를 들어 예산을 맞추거나 칼로리 제한을 충족시키는 것이 더 중요합니까? 경계에 얼마나 가까이 있어야합니까? 넘어갈 수 있습니까, 아니면 아래에 있어야합니까? 주어진 제약 조건을 만족하는 솔루션이 데이터베이스에 없다면 어떻게 될까요? "최상의"가능한 솔루션을 반환합니까? 당신은 가까운 성냥의 세트 중 "제일"해결책을 어떻게 정의합니까? – mellamokb

+2

@mellamokb 그것의보기에, 비용은 제약이 아니므로, 최소화 할 값입니다. 다른 요인은 제약 조건이지만 최소화 할 요소는 아닙니다. 따라서 가능한 한 (그러나 솔직히 순진하고 비효율적 인) 알고리즘은 모든 순열 레시피를 생성하고 가격순으로 오름차순으로 정렬 한 다음 주어진 기준을 충족시키지 못하는 모든 조합을 제거하는 것입니다. OP에게는 내가 방금 설명한 것을 코딩으로 제안 할 것입니다. 그것은 코드 작성이 가장 쉽습니다. 너무 빨리 (너무 많은 요리법으로 인해) 계산할 수 없다면 다른 알고리즘을 테스트/비교할 무언가가 있습니다. – Servy

답변

3

"최고"보다 "가장 저렴한"솔루션을 찾는 데는 "저렴한"을 다시 정의해야합니다.

최적화 이론에서는 종종 비용 함수를 참조하여 최소화해야합니다. "비용"은 "지방 퍼센트 차이 30 %"일 수 있습니다. 즉, 30 % 지방을 먹는 데는 비용이 들지 않습니다. 40 %로 20 %를 먹는 것과 마찬가지입니다. 물론, 방법을 더욱 정교하게 만들려면 무게를 달아 너무 많은 양의 지방을 먹는 것이 너무 비싸다.

이제 각 기준에 대한 비용을 만들면 의견에 언급 된 mellamokb도 함께 계산해야합니다. 이렇게하려면 단순히 가중 총 비용을 계산하십시오. * 시간 + (지방의 중요성) * (지방 목표 편차) + 다이어트의

비용 = (가격의 중요성) * 가격 + (시간의 중요성) : 다음과 같이 될 겁니다 등 ...

당신이 (돈이 소비에서) 불가능 예산을 가서 할 수 있도록하려면

, 당신은 예산 내에서 알고리즘 찾기 솔루션을 만들기 위해
over budget ? infinity : 0 같은 용어를 추가 할 수 있습니다. 식사 반복 등의 제약을 만들 수도 있습니다. 한계를 설정하는 상상력 (및 컴퓨팅 능력)은 더 많거나 적습니다.

이제 비용 함수가 생기면 문제 해결에 대한 해결책을 시작할 수 있습니다. 다이어트 비용 최소화. 그리고 "저렴한"솔루션 메이크 센스 ... 찾는 갑자기 모든 알고리즘)이 비용 함수를 공식화하는 것은 보통 어려운 부분이다


참고. 비용을 측정하는 방법에 따라 문제에 대한 매우 다른 해결책을 찾을 수 있습니다. 그들 모두가 유용하지는 않을 것입니다 (실제로 대부분은 유용하지 않을 것입니다).

+1

또한 일부 알고리즘은 비용 함수에 요구 사항을 적용 할 수 있습니다. 예를 들어, 그것이 연속적이고 및/또는 차별화 될 필요가있을 수있다. 따라서 무게 등을 적절하게 조정해야합니다. –