概要
pythonライブラリのPuLPを使い、栄養を過不足なく摂れるという条件の下で食費最適化計算をしてみました。結論として、338 円(税込)で1日分の五大栄養素を摂取できる事が分かりました。
PuLP
PuLPとは線型計画問題を解けるpythonライブラリです。以下の様にして線型計画問題を解く事ができます。
import pulp
# 問題を作成
problem = pulp.LpProblem("最小化問題", pulp.LpMinimize)
# 変数を作成
x = pulp.LpVariable(f'var0')
y = pulp.LpVariable(f'var1')
# 目的関数を設定
problem += x + y
# 制約条件を設定
problem += 2 * x + y >= 1.5
problem += x + 2 * y >= 1.5
# 解く
problem.solve()
# 結果を表示
print(
f'''
最小値:{pulp.value(problem.objective)}
x: {pulp.value(x)}
y: {pulp.value(y)}
'''
)
最小値:1.0
x: 0.5
y: 0.5
今回行った食費最適化計算では次の様な問題を解きました。
項目 | 値 |
---|---|
問題の種類 | 最小化問題 |
変数 | 食品の数量(ご飯〇〇gなど) |
目的関数 | 食品の価格の合計値 |
制約条件 | ・栄養成分の合計値が食事摂取基準の推奨量を超える ・栄養成分の合計値が食事摂取基準の耐容上限量を超えない など |
※ 制約条件の基準値には、男性
53kg
18~29歳代
身体活動レベル2(通勤など軽い運動をする)
における値を使用しました。
ちなみに、PuLPの詳細はこの記事に分かりやすく書かれています。
計算結果
次の組み合わせで1日分の五大栄養素を摂取できる事が分かりました。合計 338 円(税込)です。
|食品名|数量|価格(税込)|
|---|---|---|---|
|ご飯|912g(炊いた状態)|150|
|きな粉|76g|57.2|
|カットわかめ|2g|8.56|
|だし入り味噌|30g|8.56|
|ほうれんそう|31g|19.8|
|塩|0.3g|0.0291|
|スキムミルク|24g(粉の重量)|31.8|
|オリーブオイル|15g|14.7|
|えごま油|6.6g|26.2|
|ネイチャーメイド スーパーマルチビタミン&ミネラル|1粒|14.8|
|ネイチャーメイド ベータカロテン|1粒|5.41|
食品ごとの役割は次の通りです。
食品 | 役割 |
---|---|
ご飯 | 炭水化物とたんぱく質の主な供給源です。 |
きな粉 | 重量の9割以上が炭水化物・タンパク質・脂質で構成されています。特に食物繊維が大量に含まれています。その量なんと重量の17%。 |
ネイチャーメイド スーパーマルチビタミン&ミネラル | 1粒で大半のビタミン・ミネラルを摂取できるサプリです。 |
えごま油 | 6割がオメガ3脂肪酸で構成されています。 |
その他 | 栄養成分の調整用です。 |
最後に
本記事で紹介した食費最適化の詳細を Githubで公開しています。READMEに詳細を記載しています。また、この食費最適化で使用したipynbファイルを併せて公開しています。変数となる食品や、栄養成分の制約条件を変更しやすい形にしてあります。
また、制約条件の基準値として使用した、厚労省が公表している食事摂取基準をCSVにしたものをGithubで公開しています。
※ この記事はステマではありません。