358
91

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【完結編】マクドナルドで一日分の栄養を取れる組み合わせを計算したら衝撃の結果が!

Last updated at Posted at 2021-04-02

敵に塩を送らない

前回はケチャップ48個と塩分過多な結果となりました。原因は人類には塩が必要であることをコンピューターが忖度したためです(違うかも)。たしかに塩はシェイクスピアにも出てくるぐらい人類にかかせない調味料です。リア王にこんなセリフがあります。「As fresh meat loves salt.」。私は英語はよくわからんのですが、要は「リア充は塩が好き」ということなんでしょう(違うかも)。しかし私はリア充ではないので、塩分は控えめにしたいところです。そこで、今回は塩分制限をかけることにします。

三大栄養素に上限と下限を設ける

食塩相当量の上限を6.0gとして、ついでにたんぱく質、脂質、炭水化物にも上限と下限を設定します。数値の出典はおなじみの厚労省の資料です。そしてサイドサラダは引き続き禁止にします。赤字が前回からの変更点です。

栄養素 下限 上限
カロリー (kcal) 2,700
たんぱく質 (g) 88 135
脂質 (g) 75 90
炭水化物 (g) 337.5 438.75
ナトリウム (mg) 2,300
カリウム (mg) 3,000
カルシウム (mg) 738
リン (mg) 600
鉄 (mg) 6.3
ビタミンA (μg) 625
ビタミンB1 (mg) 1.4
ビタミンB2 (mg) 1.6
ナイアシン (mg) 15
ビタミンC (mg) 100
コレステロール (mg) 0
食物繊維 (g) 21
食塩相当量 (g) 6.0

目的は前々回前回と同じく一日必要な栄養素を満たす最もカロリーの低い商品の組み合わせとします。

コードは前回から以下を変更しました。

mac3.py
problem +=  174*AA+ 213*AB+ 239*AC+ 192*AD+ 195*AE+ 157*AF+ 169*AG+ 139*AH+ 403*AI+ 197*AJ+ 225*AK+ 177*AL+ 303*AM+ 14*AN+ 139*AO+ 166*AP+ 115*AQ+ 169*AR+ 118*AS+ 153*AT+ 128*AU+ 134*AV+ 183*AW+ 104*AX+ 8*AY+ 397*AZ+ 254*BA+ 217*BB+ 137*BC+ 125*BD+ 136*BE+ 143*BF+ 41*BG+ 143*BH+ 133*BI+ 197*BJ+ 165*BK+ 229*BL+ 1*BM+ 253*BN+ 309*BO+ 234*BP+ 203*BQ+ 253*BR+ 281*BS+ 233*BT+ 197*BU+ 237*BV+ 152*BW+ 211*BX+ 186*BY+ 277*BZ+ 138*CA+ 285*CB+ 195*CC+ 170*CD+ 200*CE+ 223*CF+ 215*CG+ 186*CH+ 197*CI+ 80*CJ+ 8*CK+ 74*CL+ 20*CM+ 65*CN+ 340*CO+ 96*CP+ 2*CQ+ 96*CR+ 2*CS+ 94*CT+ 109*CU+ 96*CV+ 300*CW+ 100*CX+ 19*CY+ 51*CZ+ 20*DA+ 56*DB+ 76*DC+ 81*DD+ 370*DE+ 640*DF+ 20*DG+ 170*DH+ 135*DI+ 74*DJ+ 141*DK+ 163*DL+ 70*DM+ 141*DN+ 131*DO+ 121*DP+ 19*DQ+ 20*DR >= 2700
problem +=  12.5*AA+ 14.5*AB+ 19*AC+ 16.7*AD+ 20.2*AE+ 15.5*AF+ 22.3*AG+ 19.2*AH+ 61.9*AI+ 19.9*AJ+ 26.5*AK+ 27.3*AL+ 39.5*AM+ 0*AN+ 14.2*AO+ 21.5*AP+ 15*AQ+ 26.5*AR+ 15.8*AS+ 17.1*AT+ 14*AU+ 15.2*AV+ 20*AW+ 12.8*AX+ 0*AY+ 34.1*AZ+ 26.2*BA+ 26*BB+ 14.4*BC+ 15.9*BD+ 17.7*BE+ 8*BF+ 0*BG+ 17.2*BH+ 10.4*BI+ 20.3*BJ+ 15.7*BK+ 29.7*BL+ 0*BM+ 19.4*BN+ 35.3*BO+ 25.8*BP+ 30*BQ+ 33.3*BR+ 39.8*BS+ 40.6*BT+ 23.2*BU+ 42*BV+ 23.5*BW+ 26.1*BX+ 23*BY+ 34.8*BZ+ 20.6*CA+ 41.4*CB+ 22.7*CC+ 25.5*CD+ 27.2*CE+ 39*CF+ 26.7*CG+ 21.4*CH+ 32.4*CI+ 5.2*CJ+ 0.2*CK+ 3*CL+ 0.4*CM+ 0.5*CN+ 13.4*CO+ 15.3*CP+ 0.5*CQ+ 15*CR+ 0.2*CS+ 14.8*CT+ 5*CU+ 3.8*CV+ 47.3*CW+ 15.8*CX+ 0.3*CY+ 1.2*CZ+ 0.2*DA+ 3.8*DB+ 3.7*DC+ 1.9*DD+ 38.2*DE+ 60.6*DF+ 0.4*DG+ 6.7*DH+ 5.3*DI+ 2.9*DJ+ 5.9*DK+ 8*DL+ 3.2*DM+ 5.4*DN+ 5.9*DO+ 5.3*DP+ 0.4*DQ+ 0.4*DR >= 88
problem +=  12.5*AA+ 14.5*AB+ 19*AC+ 16.7*AD+ 20.2*AE+ 15.5*AF+ 22.3*AG+ 19.2*AH+ 61.9*AI+ 19.9*AJ+ 26.5*AK+ 27.3*AL+ 39.5*AM+ 0*AN+ 14.2*AO+ 21.5*AP+ 15*AQ+ 26.5*AR+ 15.8*AS+ 17.1*AT+ 14*AU+ 15.2*AV+ 20*AW+ 12.8*AX+ 0*AY+ 34.1*AZ+ 26.2*BA+ 26*BB+ 14.4*BC+ 15.9*BD+ 17.7*BE+ 8*BF+ 0*BG+ 17.2*BH+ 10.4*BI+ 20.3*BJ+ 15.7*BK+ 29.7*BL+ 0*BM+ 19.4*BN+ 35.3*BO+ 25.8*BP+ 30*BQ+ 33.3*BR+ 39.8*BS+ 40.6*BT+ 23.2*BU+ 42*BV+ 23.5*BW+ 26.1*BX+ 23*BY+ 34.8*BZ+ 20.6*CA+ 41.4*CB+ 22.7*CC+ 25.5*CD+ 27.2*CE+ 39*CF+ 26.7*CG+ 21.4*CH+ 32.4*CI+ 5.2*CJ+ 0.2*CK+ 3*CL+ 0.4*CM+ 0.5*CN+ 13.4*CO+ 15.3*CP+ 0.5*CQ+ 15*CR+ 0.2*CS+ 14.8*CT+ 5*CU+ 3.8*CV+ 47.3*CW+ 15.8*CX+ 0.3*CY+ 1.2*CZ+ 0.2*DA+ 3.8*DB+ 3.7*DC+ 1.9*DD+ 38.2*DE+ 60.6*DF+ 0.4*DG+ 6.7*DH+ 5.3*DI+ 2.9*DJ+ 5.9*DK+ 8*DL+ 3.2*DM+ 5.4*DN+ 5.9*DO+ 5.3*DP+ 0.4*DQ+ 0.4*DR <= 135
problem +=  17.4*AA+ 29.4*AB+ 21.1*AC+ 20*AD+ 23.2*AE+ 30.2*AF+ 18.9*AG+ 13.5*AH+ 65.5*AI+ 21.7*AJ+ 30.7*AK+ 26.6*AL+ 43.1*AM+ 0*AN+ 20.2*AO+ 30.6*AP+ 25.1*AQ+ 25*AR+ 13.4*AS+ 23*AT+ 15.5*AU+ 17.3*AV+ 21.9*AW+ 9.4*AX+ 6.7*AY+ 51.3*AZ+ 42.7*BA+ 28.3*BB+ 13.9*BC+ 13.3*BD+ 20.8*BE+ 8.6*BF+ 0*BG+ 23.7*BH+ 23.8*BI+ 33.2*BJ+ 18.1*BK+ 49.7*BL+ 0*BM+ 25.5*BN+ 36.1*BO+ 50*BP+ 26.5*BQ+ 34.2*BR+ 43.2*BS+ 39.1*BT+ 28.7*BU+ 40.1*BV+ 21*BW+ 31.6*BX+ 24*BY+ 34.7*BZ+ 16.9*CA+ 43.4*CB+ 18.6*CC+ 28.4*CD+ 43.5*CE+ 36.2*CF+ 23.7*CG+ 38.3*CH+ 33.1*CI+ 3*CJ+ 1.5*CK+ 18*CL+ 0*CM+ 0.1*CN+ 51.8*CO+ 13.1*CP+ 0.2*CQ+ 12.9*CR+ 0*CS+ 12.8*CT+ 18.9*CU+ 3.9*CV+ 51.6*CW+ 17.2*CX+ 11.2*CY+ 9.6*CZ+ 0.1*DA+ 4.4*DB+ 18.1*DC+ 10.7*DD+ 60.3*DE+ 103.4*DF+ 2.3*DG+ 25.9*DH+ 20.6*DI+ 11.3*DJ+ 7*DK+ 10.6*DL+ 0.8*DM+ 5.5*DN+ 10.7*DO+ 5.5*DP+ 10.9*DQ+ 0*DR >= 60
problem +=  17.4*AA+ 29.4*AB+ 21.1*AC+ 20*AD+ 23.2*AE+ 30.2*AF+ 18.9*AG+ 13.5*AH+ 65.5*AI+ 21.7*AJ+ 30.7*AK+ 26.6*AL+ 43.1*AM+ 0*AN+ 20.2*AO+ 30.6*AP+ 25.1*AQ+ 25*AR+ 13.4*AS+ 23*AT+ 15.5*AU+ 17.3*AV+ 21.9*AW+ 9.4*AX+ 6.7*AY+ 51.3*AZ+ 42.7*BA+ 28.3*BB+ 13.9*BC+ 13.3*BD+ 20.8*BE+ 8.6*BF+ 0*BG+ 23.7*BH+ 23.8*BI+ 33.2*BJ+ 18.1*BK+ 49.7*BL+ 0*BM+ 25.5*BN+ 36.1*BO+ 50*BP+ 26.5*BQ+ 34.2*BR+ 43.2*BS+ 39.1*BT+ 28.7*BU+ 40.1*BV+ 21*BW+ 31.6*BX+ 24*BY+ 34.7*BZ+ 16.9*CA+ 43.4*CB+ 18.6*CC+ 28.4*CD+ 43.5*CE+ 36.2*CF+ 23.7*CG+ 38.3*CH+ 33.1*CI+ 3*CJ+ 1.5*CK+ 18*CL+ 0*CM+ 0.1*CN+ 51.8*CO+ 13.1*CP+ 0.2*CQ+ 12.9*CR+ 0*CS+ 12.8*CT+ 18.9*CU+ 3.9*CV+ 51.6*CW+ 17.2*CX+ 11.2*CY+ 9.6*CZ+ 0.1*DA+ 4.4*DB+ 18.1*DC+ 10.7*DD+ 60.3*DE+ 103.4*DF+ 2.3*DG+ 25.9*DH+ 20.6*DI+ 11.3*DJ+ 7*DK+ 10.6*DL+ 0.8*DM+ 5.5*DN+ 10.7*DO+ 5.5*DP+ 10.9*DQ+ 0*DR <= 90
problem +=  47.7*AA+ 55.8*AB+ 66.6*AC+ 48.4*AD+ 52.4*AE+ 36.4*AF+ 31*AG+ 27.1*AH+ 57.5*AI+ 38.9*AJ+ 36.8*AK+ 35.5*AL+ 57.5*AM+ 9.5*AN+ 38.1*AO+ 27.3*AP+ 27.2*AQ+ 31.4*AR+ 30.8*AS+ 39.2*AT+ 37.7*AU+ 37*AV+ 47.3*AW+ 30.3*AX+ 0*AY+ 92.9*AZ+ 40.2*BA+ 41.8*BB+ 35.8*BC+ 26.4*BD+ 29.1*BE+ 52.7*BF+ 30.2*BG+ 34.3*BH+ 41.9*BI+ 42.4*BJ+ 42.4*BK+ 31.2*BL+ 0.1*BM+ 62.8*BN+ 76*BO+ 44.1*BP+ 31*BQ+ 38.9*BR+ 36.8*BS+ 35.5*BT+ 48*BU+ 31.4*BV+ 30.8*BW+ 49.1*BX+ 47.6*BY+ 64.4*BZ+ 30.3*CA+ 41.8*CB+ 45*CC+ 29.1*CD+ 35.5*CE+ 36.3*CF+ 38.2*CG+ 37.6*CH+ 32.7*CI+ 9.6*CJ+ 4.3*CK+ 28.3*CL+ 5.6*CM+ 2.3*CN+ 128.5*CO+ 18.2*CP+ 1.1*CQ+ 18.3*CR+ 1.2*CS+ 17.2*CT+ 21.1*CU+ 24.7*CV+ 39.2*CW+ 13.1*CX+ 1.6*CY+ 13.3*CZ+ 7.7*DA+ 26.4*DB+ 31.5*DC+ 26.8*DD+ 90.4*DE+ 167.7*DF+ 5.2*DG+ 64.3*DH+ 51*DI+ 28*DJ+ 37.7*DK+ 53.4*DL+ 9.7*DM+ 46.8*DN+ 44.1*DO+ 40.6*DP+ 2*DQ+ 1.2*DR >= 337.5
problem +=  2.3*AA+ 2.5*AB+ 3.3*AC+ 2.5*AD+ 3.1*AE+ 2.1*AF+ 2.1*AG+ 1.6*AH+ 6*AI+ 2.1*AJ+ 2.7*AK+ 2.9*AL+ 4.4*AM+ 0*AN+ 2.5*AO+ 2*AP+ 1.8*AQ+ 2.9*AR+ 1.9*AS+ 2.7*AT+ 2.2*AU+ 2.1*AV+ 2.9*AW+ 1.4*AX+ 0.1*AY+ 4.2*AZ+ 2.4*BA+ 2.6*BB+ 1.6*BC+ 1.6*BD+ 2.1*BE+ 1.8*BF+ 0*BG+ 2.3*BH+ 2.5*BI+ 3*BJ+ 2.6*BK+ 3.4*BL+ 0.6*BM+ 3.3*BN+ 5.3*BO+ 3.3*BP+ 2.4*BQ+ 2.5*BR+ 3.1*BS+ 3.3*BT+ 3.8*BU+ 3.6*BV+ 2.3*BW+ 4*BX+ 3.4*BY+ 4.5*BZ+ 1.8*CA+ 3.3*CB+ 2.1*CC+ 2.5*CD+ 2.9*CE+ 3.6*CF+ 3.4*CG+ 3.2*CH+ 3*CI+ 0.2*CJ+ 0*CK+ 0.6*CL+ 0.5*CM+ 0*CN+ 2.1*CO+ 2*CP+ 0.4*CQ+ 1.9*CR+ 0.2*CS+ 1.6*CT+ 0.1*CU+ 0.2*CV+ 3.9*CW+ 1.3*CX+ 0.7*CY+ 0.8*CZ+ 0.5*DA+ 0.8*DB+ 0.4*DC+ 0.6*DD+ 3.6*DE+ 6*DF+ 0.5*DG+ 1.1*DH+ 0.8*DI+ 0.5*DJ+ 0.4*DK+ 0.7*DL+ 0.1*DM+ 0.3*DN+ 0.3*DO+ 0.3*DP+ 0.6*DQ+ 1*DR <= 6

結果

条件を満たす組み合わせはちゃんとあるでしょうか。今回は三大栄養素の許容範囲が狭いので、ちゃんと出るか不安です。実行!
2.png

最適な組み合わせは今回も存在するようです。わずか0.61秒で計算完了。最新のM1 Macもびっくりだぜ!(マクドナルド的な意味で)

今回の商品の種類は6種類。以下がその組み合わせです。

バターパット(3個)

味はバターで決まるという言葉を真摯に受け止め、最初に直食いすることで速攻でキメます。
butter.jpg

りんご&クリーム(1個)

パキっと折ったらそのまま口に入れてください。
ringo.jpg

ケチャップ(1個)

前回はメインディッシュでしたが、今回はただの調味料です。
ケチャ.jpg

えだまめコーン(8個)

全く塩気がないので、塩分が気になるお年頃の方にもオススメです。
3.png

ヨーグルト(27個)

来ましたメインディッシュ。コンピューターが悩みぬいた結果の一手はヨーグルトでした。
6.jpg





そして、最後の一品は、なんと・・・・!



マックフライポテト(M)(1個)

7.jpeg
なんということでしょう!この企画で初めてマクドナルドっぽい食べ物が出てきました!ああ、コンピューター様、お優しい・・・たった1つだけだけど。

この組み合わせによって以下の通り一日に必要な栄養素を満たす極めて健康的な栄養を摂取することができます。塩分も5.9gと理想的!

栄養素 摂取量
エネルギー(kcal) 2,901
たんぱく質 (g) 133.9
脂質 (g) 87.8
炭水化物 (g) 400
ナトリウム (mg) 2,320
カリウム (mg) 5,841
カルシウム (mg) 2,648
リン (mg) 2,746
鉄 (mg) 9.9
ビタミンA (μg) 633
ビタミンB1 (mg) 1.9
ビタミンB2 (mg) 4.0
ナイアシン (mg) 16.0
ビタミンC (mg) 104
コレステロール (mg) 171
食物繊維 (g) 31.1
食塩相当量 (g) 5.9
kekka3.txt抜粋
バターパット: 3.0
えだまめコーン: 8.0
りんご&クリーム: 1.0
ケチャップ: 1.0
マックフライポテト(M): 1.0
ヨーグルト: 27.0

究極のメニュー降臨

いかがでしたか?**「朝昼晩の三食ともひたすらヨーグルトを計1.9kg食べなさい、さすればおやつにポテトが与えられるだろう」・・・これは間違いなく天の啓示です!**仏陀も「自分で自分を励ましてあげなさい」と言っているのでこのアメとムチ路線は天のお墨付きです!この努力と願いは必ずや生きて届くことでしょう。天にではなく腸に

(2021/8/10追記)
じゃあ野菜だけで組み合わせを考えたらどうなるんだ?という疑問はこちらで解きました。
野菜だけで一日分の栄養を取れる組み合わせを計算したら衝撃の結果が!

参考リンク

元記事:https://www.transrecog.com/diary/2021/04/01/post-1521/(プログラミングを主題とするように著者自身がQiita向けに加筆)
前々回:マクドナルドで一日分の栄養を取れる組み合わせを計算したら衝撃の結果が!
前回:続・マクドナルドで一日分の栄養を取れる組み合わせを計算したらさらに衝撃の結果に

(補足1)目的関数
目的関数は総費用最小化にするという手もありますが、マクドナルドはクーポンを配りまくっているので現実的な解は望めないと思いやめました。また、同じ商品ばかり選ばれるのを避けるには個数制限をかけるという手がありますが、それよりもどうせやるなら似たような栄養素の商品の組み合わせを避ける条件にしたほうが良いと思います。栄養素は17種類なので、各商品の栄養素を正規化した17次元の頂点を含む凸包の最大化、とか良いかもしれません。

(補足2)この企画の目的
この企画の目的は、一見無味乾燥に見える数式やデータにもドラマがあることを伝えることでした。ちょっとでも数理最適化に興味を持っていただければ幸いです。

358
91
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
358
91

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?