1

私たちはコンピュータ サイエンスを学ぶ 1 年生のグループです。

私たちは「電子ダイエット計画」というプロジェクトに取り組んでいます (直訳)

C# でプログラムを作成して、毎週基本的に、いくつかの基準を満たす/満たすダイエット計画を計算したいと考えています。

あなたの毎日のエネルギー摂取量は、計算されたカロリー必要量を超えてはなりません. (例: 人が 1 日 2000 カロリーを摂取する必要があると計算すると、ダイエット計画は約 2000 カロリーを計画する必要があります)

1 日のエネルギー (カロリー) は、次のように配分する必要があります。

  • 脂肪 25-35%
  • 炭水化物 50-60%
  • タンパク質 10-20%

食品とそれに含まれる脂肪、炭水化物、タンパク質の量 + おおよその価格の「データベース」があります。そして、レシピと調理にかかる時間の「データベース」があります。

SO: 毎週基本的に、毎日のエネルギー必要量 (およびその配分方法 (脂肪、炭水化物、タンパク質)) を満たす適切な食事計画を計算するプログラムを作成したいと考えています。また、プログラムは、時間も費用もかからないダイエット計画を立てる必要があります (ユーザーは、1 週間あたりの価格の上限を定義します)。

SO.. これを満たす 1 日あたり 3 ~ 6 皿を組み合わせることができる方法 / アルゴリズムを見つける手助けが必要です ^^ 私たちは多くの組み合わせ最適化アルゴリズム / 問題を見てきましたが、ほとんどが「ナップザック問題」です。

しかし、これらのアルゴリズム/問題は、1 つの基準のみを満たしているか、「最も安価な」ソリューションを見つけようとしています。-> 多くの基準を満たし、最良の解決策を見つけたいと考えています (最も安いものではありません。例: 脂肪は最低値だけでなく、25 ~ 35% でなければなりません)。

良いアルゴリズムを開発するために、あなたの何人かが私たちを助けてくれることを願っています。

4

1 に答える 1

3

「最良」ではなく「最も安価な」ソリューションを見つけることになると、「安価」を再定義する必要があります。

最適化理論では、最小化されるコスト関数を参照することがよくあります。あなたの場合、「コスト」は「30% からの脂肪パーセンテージ ポイントの差」である可能性があります。つまり、30% の脂肪を食べるのに費用はかかりません。 20% を 40% として食べる。もちろん、この方法をより洗練されたものにするために、脂肪を摂りすぎた方が少なすぎるよりも「費用がかさむ」ように計算することもできます。

ここで、条件ごとにコストを作成する場合は、mellamokb がコメントで指摘したように、それらを一緒に検討する必要もあります。これを行うには、加重総コストを計算するだけです。次のような結果になります。

ダイエットの費用 = (価格の重要性) * 価格 + (時間の重要性) * 時間 + (脂肪の重要性) * (脂肪の目標からの偏差) + など ...

予算 (費やされた金額) を超えないようにしたい場合は
over budget ? infinity : 0、アルゴリズムに予算内で解決策を見つけさせるなどの条件を追加できます。また、食事の繰り返しなどの制約を作成することもできます。制限を設定するのは、多かれ少なかれあなたの想像力 (および計算能力) です。

コスト関数が得られたので、問題の解決策、つまりダイエットのコストを最小限に抑える作業を開始できます。そして突然、「最も安価な」ソリューションを見つけるすべてのアルゴリズムが理にかなっています... ;)


通常、このコスト関数の定式化は難しい部分であることに注意してください。コストをどのように比較検討するかによって、問題に対する非常に異なる解決策が見つかります。それらのすべてが役立つわけではありません (実際、それらのほとんどはおそらく役に立たないでしょう)。

于 2013-04-17T19:46:03.200 に答える