우리는 컴퓨터 과학을 전공하는 1 학년 학생 그룹입니다. 우리는 우리는 C#에서 프로그램을 만들고 싶어 (직접 번역)는 "전기 장 다이어트 계획"몇 가지 기준을 충족해야하는 조합 최적화
라는 프로젝트에서 작업하는
그 주간 기본 계산 fullfiels 다이어트 계획/만족하는 몇 가지 기준에 :
귀하의 일일 에너지 섭취량은 계산 된 칼로리 요구량을 초과해서는 안됩니다. 가 (. 예 우리는 한 사람이 하루에 2000 칼로리를 먹어야한다는 계산하면 다이어트 계획은 약 2,000 칼로리를 계획해야합니다) 배포해야
일일 에너지 (칼로리)를 다음과 같이
- 지방 (25) -35 %
- 탄수화물 50-60%
- 단백질 ~ 20 %
우리는 음식과 얼마나 많은 지방, 탄수화물과 단백질이 계속있는 "데이터베이스"가 ains + 대략적인 가격. 그리고 우리는 조리법을 가진 "데이터베이스"와 그것을 요리하는 데 걸리는 시간이 있습니다.
그래서 우리는 일일 에너지 필요량 (지방, 탄수화물, 단백질)을 어떻게 충족시켜야하는지에 대한 좋은 다이어트 계획을 주간 기본 계산으로 만들고 싶습니다. 이 프로그램은 또한 많은 시간과 많은 비용을 들이지 않는식이 요법을 계획해야합니다 (사용자는 가격이 책정 된 주에 대한 상한선을 정의합니다).
SO .. 우리는 도움을 우리는 조합 최적화 알고리즘/문제의 많은하지만 대부분 "배낭 문제에서 찾고있다이 를 ^^ 만족 하루에 3-6 요리를 combinate 수있는 방법/알고리즘을 찾으려면 ".
그러나 이러한 알고리즘/문제는 하나의 기준 만 만족하거나 "가장 저렴한"솔루션을 찾으려고합니다. -> 우리는 기준을 많이 만족하고 최적의 솔루션을 (하지 저렴한 .. 전 지방 그냥하지 25-35 % 사이로 가장 낮은 값을가집니다.)
우리는 어떤 희망 찾으려 할 좋은 알고리즘으로 우리를 도울 수 있습니다.
음, 무엇을 시도 했습니까? – svick
알고리즘과 관련이없는 몇 가지 사항을 정의해야합니다. 제약 조건의 우선 순위는 무엇입니까? 예를 들어 예산을 맞추거나 칼로리 제한을 충족시키는 것이 더 중요합니까? 경계에 얼마나 가까이 있어야합니까? 넘어갈 수 있습니까, 아니면 아래에 있어야합니까? 주어진 제약 조건을 만족하는 솔루션이 데이터베이스에 없다면 어떻게 될까요? "최상의"가능한 솔루션을 반환합니까? 당신은 가까운 성냥의 세트 중 "제일"해결책을 어떻게 정의합니까? – mellamokb
@mellamokb 그것의보기에, 비용은 제약이 아니므로, 최소화 할 값입니다. 다른 요인은 제약 조건이지만 최소화 할 요소는 아닙니다. 따라서 가능한 한 (그러나 솔직히 순진하고 비효율적 인) 알고리즘은 모든 순열 레시피를 생성하고 가격순으로 오름차순으로 정렬 한 다음 주어진 기준을 충족시키지 못하는 모든 조합을 제거하는 것입니다. OP에게는 내가 방금 설명한 것을 코딩으로 제안 할 것입니다. 그것은 코드 작성이 가장 쉽습니다. 너무 빨리 (너무 많은 요리법으로 인해) 계산할 수 없다면 다른 알고리즘을 테스트/비교할 무언가가 있습니다. – Servy