J'adore McDonald's. Mais la malbouffe, mauvaise pour la santé, Je vois plus d'histoires comme ça qu'avant.
Donc, si vous continuez vraiment à manger McDonald, Est-ce mauvais pour votre santé? Si vous vivez seul avec McDonald, vraiment, Y aura-t-il malnutrition ou excès de calories?
Cet article est uniquement pour McDonald ** Un régime qui fournit tous les nutriments dont vous avez besoin pour la journée ** Quel type de menu devriez-vous choisir lorsque vous le faites Quel genre de problèmes nutritionnels en résultera-t-il? Utilisation de la bibliothèque de planification linéaire de Python appelée PuLP Ceci est un résumé des résultats de la recherche.
Autrement dit, ** McDonald seul ** ** Comment construire un menu comme un régime nutritionnel complet ** ** Que dois-je manger et en quelle quantité? ** ** ** Et combien de calories y aura-t-il à ce moment-là? ** Environ 0,001% des gens dans le monde se demandent autrefois Donnez une solution à un problème auquel vous avez pensé.
Aussi, en tant qu'acteur représentatif de l'alimentation nutritionnelle, ** Forme pentagonale avec éléments nutritifs du lait ** Célèbre pour être Flocons de maïs (j'aime ça aussi) J'ajouterai également une considération lors de l'ajout au menu.
"Vous ne pouvez emmener que McDonald sur une île inhabitée." Je suis convaincu que c'est une étude très utile lorsqu'elle est racontée.
Tout d'abord, de tous les menus de McDonald's Pour des informations nutritionnelles, Il est publié sur le site officiel suivant.
https://www.mcdonalds.co.jp/products/nutrition_balance_check/
Sélectionnez un menu sur ce site Votre sexe, âge et niveau d'activité physique En entrant, pour les nutriments nécessaires pour la journée Combien vous rencontrez-vous? Il est possible de confirmer.
Dans cette étude, c'est-à-dire ** Tout en satisfaisant 100% de tous les nutriments pendant une journée ** ** Ajustez la teneur en sel pour qu'elle soit inférieure à la valeur standard, ** ** Et réduisez les calories autant que possible, ** Nous viserons la solution optimale pour la sélection des menus.
Bien que cela semble être un problème difficile à première vue, C'est en fait un simple ** problème de planification linéaire **, Il peut être résolu en une seule fois avec la bibliothèque PuLP de Python.
Le point le plus important est qu'il y a beaucoup de données et de variables. C'est super ennuyeux de mettre le problème dans le code. Une variable appelée "teriyaki-ba-ga" Si vous avez écrit beaucoup d'expressions telles que "VitaminC> 100" Même dans mes rêves Il ne fait aucun doute qu'il sera rempli. Également pour ajouter des menus tels que le burger de lune Il devient difficile de répondre.
En gardant cela à l'esprit, poursuivez la recherche avec la configuration suivante.
① Quel est le problème de planification linéaire? ② Vérifiez l'utilisation de base de PuLP ③ Obtenez des données sur le site officiel de McDonald's et Autoriser le traitement avec Python ④ Nutriments nécessaires pour une journée = comme un problème nutritionnel complet Implémentez le code. (Faites-le bien et universellement) ⑤ Jouez tout en regardant les résultats tout en modifiant certaines conditions ⑥ Jouez avec une limite d'une fois par menu ⑦ Ajoutez des flocons de maïs au menu et jouez plus loin
- | calorie | Nutrition 1 | Nutrition 2 | Nutrition 3 |
---|---|---|---|---|
Teriyaki | 20 | 25 | 10 | 15 |
Patate | 12 | 11 | 10 | 18 |
Cola | 15 | 13 | 16 | 25 |
Nutrition requise | ★ Réduisez ici | 300 | 200 | 100 |
■ Problème: lorsque vous avez un tableau nutritionnel comme celui ci-dessus Tout en satisfaisant la quantité requise de nutriments 1 à 3, Comme minimiser les calories Comment commander teriyaki, pommes de terre et cola?
⇒Réponse: Teriyaki x8, pomme de terre x1, cola x7 Avec 298 calories
De cette façon, dans le problème de trouver la solution optimale de quelque chose Fonction objective (calories) et contraintes (nutriments à satisfaire) Dans une inégalité linéaire (polynôme unidimensionnel sans carré) Le problème qui peut être exprimé est appelé le ** problème de planification linéaire **.
Python a une bibliothèque appelée PuLP. Décrivez simplement ce problème dans le code La solution optimale peut être trouvée en une seule fois.
Voyons comment utiliser PuLP. Tout le code suivant est également essayé d'être exécuté sur Colaboratory.
Comment installer PuLP
Installer PuLP
pip install pulp
Voici le code pour résoudre l'exemple précédent. Voyons l'utilisation la plus basique.
L'utilisation la plus basique de PuLP
import pulp
# !pip install pulp
#Référence 1: https://www.y-shinno.com/pulp-intro/
#Définition du problème
#Spécifiez minimiser ou maximiser
problem = pulp.LpProblem(name="Mac", sense=pulp.LpMinimize)
#problem = pulp.LpProblem(name="Mac", sense=pulp.LpMaximize)
#Définition des variables (* Les variables peuvent être spécifiées en japonais pour python)
#Il est défini comme un entier supérieur ou égal à 0 afin d'exprimer le nombre d'objets.
Teriyaki= pulp.LpVariable(name = "Teriyaki", lowBound = 0, cat="Integer")
Patate= pulp.LpVariable(name = "Patate", lowBound = 0, cat="Integer")
Cola= pulp.LpVariable(name = "Cola", lowBound = 0, cat="Integer")
#Fonction objective (fonction qui doit être minimisée ou maximisée)
problem += 20 *Teriyaki+ 12 *Patate+ 15 *Cola
#Définition des contraintes
#Pour écrire, assurez-vous de mettre un nombre égal<=.==,>=Écrivez de cette manière!
problem += 25 *Teriyaki+ 11 *Patate+ 13 *Cola>= 300
problem += 10 *Teriyaki+ 10 *Patate+ 16 *Cola>= 200
problem += 15 *Teriyaki+ 18 *Patate+ 25 *Cola>= 100
#Résoudre le problème
status = problem.solve()
print(pulp.LpStatus[status])
#Tous les types de statut sont les suivants.
#«Optimal» signifie que la solution optimale a été obtenue.
# {-3: 'Undefined',
# -2: 'Unbounded',
# -1: 'Infeasible',
# 0: 'Not Solved',
# 1: 'Optimal'}
#Affichage des résultats
print("Result")
print("Teriyaki:", Teriyaki.value())
print("Patate:", Patate.value())
print("Cola:", Cola.value())
Résultat de sortie
Optimal
Result
Teriyaki: 8.0
Patate: 1.0
Cola: 7.0
Le premier point d'ingéniosité est ** Le fait que le nom de la variable est «japonais» **. ** En Python3, des noms de variables autres que le code ASCII peuvent être utilisés **, En le gardant en japonais depuis le début, Le nom du produit du menu McDonald's Il peut être traité comme un nom de variable tel quel. Au contraire, si vous ne faites pas cela, le teriyaki sera "teriyaki" ... Donnez des noms anglais à tous les menus comme De plus, vous devez gérer la cartographie. À ce stade, le soleil se couche.
Cependant, si vous changez simplement les variables en japonais, vous pouvez formuler la formule pour chaque nutriment.
Tout entrer est toujours extrêmement difficile.
Tout cela lorsque d'autres menus sont ajoutés, etc.
problème + = 10 * Teriyaki + 10 * Pomme de terre + 16 * Cola> = 200
Mettre à jour la formule de ** sera dangereux ** (manque de vocabulaire)
Par conséquent, comme suit Permet de gérer les noms de menu et les valeurs nutritives dans un format de liste. Le code est assez différent, mais les résultats et les significations sont exactement les mêmes. ** Il n'y a aucun problème avec la saison des hamburgers d'observation de la lune **.
Une petite manière générale d'écrire PuLP
import pulp
# !pip install pulp
#Référence 2: http://www.nct9.ne.jp/m_hiroi/light/pulp01.html
#Définition du problème(
#Spécifiez minimiser ou maximiser
problem = pulp.LpProblem(name="Mac", sense=pulp.LpMinimize)
#problem = pulp.LpProblem(name="Mac", sense=pulp.LpMaximize)
#Définition des données
target_menu_list =["Teriyaki","Patate","Cola"]
kcal =[20,12,15]
eiyou1 =[25,11,13]
eiyou2 =[10,10,16]
eiyou3 =[15,18,25]
#Définition variable
#Écrivez la définition de la variable dans la notation d'inclusion de liste et définissez dynamiquement le nom de la variable en tant que données dans la liste.
xs = [pulp.LpVariable('{}'.format(x), cat='Integer', lowBound=0) for x in target_menu_list]
#Ecrire des fonctions objectives et des contraintes de type multiplication matricielle
#Fonction objective (fonction qui doit être minimisée ou maximisée)
problem += pulp.lpDot(kcal, xs)
#Définition des contraintes
problem += pulp.lpDot(eiyou1, xs) >= 300
problem += pulp.lpDot(eiyou2, xs) >= 200
problem += pulp.lpDot(eiyou3, xs) >= 100
#Résoudre le problème
status = problem.solve()
print(pulp.LpStatus[status])
#Affichage des résultats
print("Result")
print("Teriyaki:", Teriyaki.value())
print("Patate:", Patate.value())
print("Cola:", Cola.value())
Le fait est que la formule est définie par ** type de multiplication matricielle **, et ** Points qui nomment dynamiquement ** des noms de variables tels que Teriyaki.
En d'autres termes
target_menu_list = [" Teriyaki "," Pomme de terre "," Cola "]
⇒
target_menu_list = [" Teriyaki "," Pomme de terre "," Cola "," Tsukimi Burger "]
Si vous mettez à jour la liste des noms de menu comme
Utilisé comme nom de variable à la place de '{}'. Format (x)
,
La raison en est qu'une variable appelée «Tsukimi Burger» est générée dynamiquement.
Si tu ne fais pas ces choses Il n'y a aucun problème à jouer avec quelques lignes de données, Il ne peut pas gérer des centaines de lignes de données réelles de McDonald's.
Même s'il existe une bibliothèque appelée PuLP ** Examen de la nutrition complète du régime McDonald's, qui était le rêve de toute l'humanité ** La raison pour laquelle cela n'a pas été fait jusqu'à présent est ** Si vous le faites normalement, le code sera dangereux **, Ça doit être la raison. Doit être ainsi (souligné par la méthode itérative)
Sur le site officiel de McDonald's mentionné ci-dessus Vous pouvez voir la liste des valeurs nutritionnelles pour tous les derniers menus. Il existe quatre types: hamburger, accompagnement, boisson et barista. Pas besoin de gratter Copiez et collez simplement 4 fois et enregistrez au format CSV.
Les données CSV enregistrées sont codées comme ci-dessous. Il peut être lu au format dictionnaire avec Python.
Lire les données de McDonald's
import csv
McDonaldsDict = {}
with open('/content/drive/My Drive/MACD/Liste des valeurs nutritives de McDonald's 2021009_R.csv') as f:
reader = csv.DictReader(f)
# OrderedDict([('Nom du produit', 'Filet de crevettes'), ('Poids g', '174'),... est inclus dans chaque ligne
#* Pour les jus, etc., la valeur nutritionnelle est "-A été remplacé par 0
for row in reader:
# 'Filet de crevettes' : OrderedDict([('Nom du produit', 'Filet de crevettes'), ('Poids g', '174')Traité dans un format de dictionnaire
McDonaldsDict[row["Nom du produit"]] = row
Plus tard, sélectionnez et retirez uniquement le produit cible, Pour faciliter la lecture Utilisez le "nom du produit" comme clé dans le format du dictionnaire. (* Double dictionnaire dans lequel le format du dictionnaire est un autre type de dictionnaire)
Aussi, concernant les nutriments nécessaires pour une journée Faisons référence aux données et définissons comme suit. La cible est ~~ Les gens de loisir qui pourraient être intéressés par une alimentation complète McDonald's ~~ J'ai essayé de correspondre au lectorat attendu de cette recherche.
Nutriments nécessaires (exemple)
#Homme: la quantité de nourriture nécessaire pour une journée entre 30 et 49 ans.
#Niveau d'activité physique 1 = la plupart de la vie est assise
#Calculé avec si l'activité statique est centrale
#Cependant, l'équivalent sel n'est pas nécessaire et doit être "inférieur ou égal à".
one_da_nutrition_dict ={
"Énergie kcal" : 2300.0,
"Protéine g" : 65.0 ,
"Lipide g" : 63.9 ,
"Glucides g" : 330.6 ,
"Mg de calcium" : 750.0 ,
"Fer mg" : 7.5 ,
"Vitamine A μg" : 900.0 ,
"Vitamine B 1 mg" : 1.4 ,
"Vitamine B 2 mg" : 1.6 ,
"Vitamine Cmg" : 100.0 ,
"Fibres alimentaires g" : 21.0 ,
"Équivalent sel g" : 7.5 ,
}
À ce stade, tout est prêt.
Le menu de McDonald's est varié, "Un pentagone parfait avec du lait" «Sain avec de la salade et du jus de légumes» signifie ** Le sentiment typique de McDonald's est mince **, donc Tout d'abord, les membres suivants ont été sélectionnés subjectivement comme acteurs représentatifs.
Parce que ce choix devrait être un débat religieux majeur Il peut y avoir des croyants d'autres dieux, mais je n'admets aucune objection. Si vous êtes d'une autre secte, veuillez changer les membres sélectionnés et réessayer le code.
** Uniquement avec ces combinaisons ** ** Obtenez tous les nutriments dont vous avez besoin pour la journée, ** ** Et lorsque la teneur en sel est inférieure à la valeur standard ** ** Combien de calories au moins! ?? ** **
Maintenant que nous avons rassemblé le code ci-dessous, exécutons-le! !!
Plan linéaire de nutrition complète Régime McDonald's
import pulp
#Définition du problème
#Cette fois, je veux minimiser les calories, donc je l'ai réglé au début
problem = pulp.LpProblem(name="Nutrition complète Régime McDonald's", sense=pulp.LpMinimize)
import csv
McDonaldsDict = {}
with open('/content/drive/My Drive/MACD/Liste des valeurs nutritives de McDonald's 2021009_R.csv') as f:
reader = csv.DictReader(f)
# OrderedDict([('Nom du produit', 'Filet de crevettes'), ('Poids g', '174'),... est inclus dans chaque ligne
#* Pour les jus, etc., la valeur nutritionnelle est "-A été remplacé par 0
for row in reader:
# 'Filet de crevettes' : OrderedDict([('Nom du produit', 'Filet de crevettes'), ('Poids g', '174')Traité dans un format de dictionnaire
McDonaldsDict[row["Nom du produit"]] = row
#Obtenez une liste de valeurs nutritionnelles spécifiques
#Cible cible_menu_Obtenez la valeur de la valeur nutritive dans l'ordre de la liste.
def get_nutrition_val_list(nutrition_dict, target_menu_list, eiyou_name):
result_list = []
for menu_name in target_menu_list:
#Obtenez une valeur nutritive et remplacez-le par un flotteur
eiyou_val = nutrition_dict[menu_name][eiyou_name]
result_list.append(float(eiyou_val))
return result_list
#des biens
#* Parce que c'est une question de calories, Coca-Cola Zero, Souken Micha, etc.
#Excluez ceux qui ne contiennent absolument aucune calorie.
target_menu_list = [
"Mac Burger Teriyaki",
"Hamburger",
"cheeseburger",
"Double cheeseburger",
"Burger de la lune",
"Big Mac",
"Phileofish",
"Poulet Mac Nugget 5 pièces",
"Pomme de terre mouche Mac(M)",
"Pomme de terre mouche Mac(S)",
"ketchup",
"Sauce barbecue",
# "le maïs sucré",
# "Salade d'accompagnement",
"Coca Cola(M)",
"MacShake® Vanille(S)",
"Minute Made Orange(M)",
# "Lait",
# "Vie végétale 100(M)",
]
#Homme: la quantité de nourriture nécessaire pour une journée entre 30 et 49 ans.
#Niveau d'activité physique 1 = la plupart de la vie est assise
#Calculé avec si l'activité statique est centrale
#Cependant, l'équivalent sel n'est pas nécessaire et doit être "inférieur ou égal à".
one_da_nutrition_dict ={
"Énergie kcal" : 2300.0,
"Protéine g" : 65.0 ,
"Lipide g" : 63.9 ,
"Glucides g" : 330.6 ,
"Mg de calcium" : 750.0 ,
"Fer mg" : 7.5 ,
"Vitamine A μg" : 900.0 ,
"Vitamine B 1 mg" : 1.4 ,
"Vitamine B 2 mg" : 1.6 ,
"Vitamine Cmg" : 100.0 ,
"Fibres alimentaires g" : 21.0 ,
"Équivalent sel g" : 7.5 ,
}
#Pour les nutriments cibles, créez la valeur nutritionnelle de chaque liste de produits cible sous forme de liste.
eiyou_data={}
for key in one_da_nutrition_dict.keys():
#Remplacez le nom nutritionnel (japonais) contenu dans la clé par la clé du dictionnaire de données
eiyou_data[key] = get_nutrition_val_list(McDonaldsDict, target_menu_list, key)
#Définition des variables (* Utiliser les chaînes de caractères japonais comme variables telles quelles)
xs = [pulp.LpVariable('{}'.format(x), cat='Integer', lowBound=0) for x in target_menu_list]
#Fonction objective: minimisation de l'énergie
problem += pulp.lpDot(eiyou_data["Énergie kcal"], xs)
#Contraintes: répondre à chacun des besoins nutritionnels quotidiens.
#Personnalisation des conditions et ON-Décrit en dehors de la boucle pour faciliter la désactivation.
#L'équivalent sel est «à l'intérieur». Une solution existe-t-elle? Faites attention.
problem += pulp.lpDot(eiyou_data["Protéine g"], xs) >= one_da_nutrition_dict["Protéine g"]
problem += pulp.lpDot(eiyou_data["Lipide g"], xs) >= one_da_nutrition_dict["Lipide g"]
problem += pulp.lpDot(eiyou_data["Glucides g"], xs) >= one_da_nutrition_dict["Glucides g"]
problem += pulp.lpDot(eiyou_data["Mg de calcium"], xs) >= one_da_nutrition_dict["Mg de calcium"]
problem += pulp.lpDot(eiyou_data["Fer mg"], xs) >= one_da_nutrition_dict["Fer mg"]
problem += pulp.lpDot(eiyou_data["Vitamine A μg"], xs) >= one_da_nutrition_dict["Vitamine A μg"]
problem += pulp.lpDot(eiyou_data["Vitamine B 1 mg"], xs) >= one_da_nutrition_dict["Vitamine B 1 mg"]
problem += pulp.lpDot(eiyou_data["Vitamine B 2 mg"], xs) >= one_da_nutrition_dict["Vitamine B 2 mg"]
problem += pulp.lpDot(eiyou_data["Vitamine Cmg"], xs) >= one_da_nutrition_dict["Vitamine Cmg"]
problem += pulp.lpDot(eiyou_data["Fibres alimentaires g"], xs) >= one_da_nutrition_dict["Fibres alimentaires g"]
problem += pulp.lpDot(eiyou_data["Équivalent sel g"], xs) <= one_da_nutrition_dict["Équivalent sel g"]
#Afficher le contenu d'un problème donné
print(problem)
status = problem.solve()
print("Status", pulp.LpStatus[status])
#* Assurez-vous qu'il est "Optimal".
#Affichage simple des résultats
print([x.value() for x in xs])
print(problem.objective.value())
#Affichage par nom de variable
for x in xs:
print(str(x) + " × "+ str(int(x.value())) )
#Afficher le résultat du calcul de la quantité de chaque nutriment devenu
print("----résultat----")
for key in one_da_nutrition_dict.keys():
print(key + ": " + str(one_da_nutrition_dict[key]) +"Contre" + str(round(pulp.lpDot( eiyou_data[key], xs).value())) )
Si vous exécutez ce qui précède ...
** Résultat: 8035kcal **
Résultat de sortie
#La sortie du journal autour de la définition du problème est omise.
Mac Burger Teriyaki x 0
Hamburger x 0
Burger au fromage x 0
Burger double fromage x 1
Burger d'observation de la lune x 2
Big Mac x 0
Phileofish x 0
Mac Nugget au Poulet_5 pièces x 0
Pomme de terre mouche Mac(M) × 0
Pomme de terre mouche Mac(S) × 0
Ketchup x 2
Sauce BBQ x 0
Coca Cola(M) × 0
MacShake®_vanille(S) × 0
Minute Maid_Orange(M) × 46
----résultat----
Énergie kcal: 2300.8035 contre 0
Protéines g: 65.175 contre 0
Lipides g: 63.85 contre 9
Glucides g: 330.1654 contre 6
Calcium mg: 750.1526 contre 0
Fer mg: 7.20 contre 5
Vitamine A μg: 900.900 contre 0
Vitamine B 1 mg: 1.12 contre 4
Vitamine B 2 mg: 1.2 contre 6
Vitamine Cmg: 100.5433 contre 0
Fibres alimentaires g: 21.38 contre 0
Équivalent sel g: 7.5 à 8
#Supplément: Le sel a les conditions suivantes, et est-ce 8 en rond?
En effet, pour le besoin quotidien de 2300 kcal, comment Vous prendrez également ** 8035kcal **. Et Burger double fromage x 1 Essentiellement laver Tsukimi Burger x 2 ** 46 tasses de Minute Made_Orange Flood **.
** Joueur représentatif avec un sentiment typique de McDonald ** Si vous le limitez à seulement ** Je me sens un peu fou (vocabulaire) **.
Mais tous les fans de McDonald dans tout le pays, ne vous inquiétez pas, En premier lieu, avec peu de choix comme celui-ci, Parce que c'est une condition pour satisfaire tous les nutriments Le résultat n'est que de 8035 kcal. Je voudrais confirmer des conditions encore plus réalistes.
Même pour moi, si je finis avec les résultats jusqu'à présent C'est la nuit, ** l'obscurité par les clowns jaunes et rouges ** Vous devez avoir peur.
Tout d'abord, selon le décret du "** Mangeons bien les légumes **" Décommentez les salades, le maïs sucré. Aussi, faisons en sorte que la vie du lait et des légumes soit OK!
** Résultat: 1994kcal **
Mangeons bien les légumes
Teriyaki Mac Burger x 1
Hamburger x 0
Burger au fromage x 0
Burger double fromage x 0
Burger de la lune x 0
Big Mac x 0
Phileofish x 0
Mac Nugget au Poulet_5 pièces x 0
Pomme de terre mouche Mac(M) × 0
Pomme de terre mouche Mac(S) × 2
Ketchup x 0
Sauce BBQ x 0
Maïs sucré x 2
Salade d'accompagnement x 95
Coca Cola(M) × 0
MacShake®_vanille(S) × 0
Minute Maid_Orange(M) × 0
Lait x 0
Vie végétale 100(M) × 0
----résultat----
Énergie kcal: 2300.1994 contre 0
Protéines g: 65.72 contre 0
Lipides g: 63.64 contre 9
Glucides g: 330.331 contre 6
Calcium mg: 750.1308 contre 0
Fer mg: 7.5 contre 22
Vitamine A μg: 900.2580 contre 0
Vitamine B 1 mg: 1.3 contre 4
Vitamine B 2 mg: 1.2 contre 6
Vitamine Cmg: 100.1454 contre 0
Fibres alimentaires g: 21.87 contre 0
Équivalent sel g: 7.5 contre 4
1994kcal, ce qui est inférieur à la valeur standard de 2300kcal. Vous pouvez suivre un régime tout en obtenant une bonne nutrition. Des résultats vraiment sains, et en plus Teriyaki Mac Burger x 1 Mac Fly Potato (S) x 2 Vous pouvez aussi manger! !!
J'ai pensé, ** Salade d'accompagnement x 95 ** (excusez-moi)
Vous ne pouvez pas manger de légumes comme ça! !! C'est un montant qui est susceptible d'être une source de programmes de vente par correspondance de jus de santé. ** Après tout, l'influence de la salade d'accompagnement était trop grande. ** **
Par conséquent, essayez la méthode des flocons de maïs. ** Un plan de réapprovisionnement avec des boissons telles que du lait et du jus est OK **. Supprimons uniquement la salade d'accompagnement et le maïs sucré.
** Résultat: 2933kcal **
Mac Burger Teriyaki x 0
Hamburger x 0
Burger au fromage x 1
Burger double fromage x 0
Burger de visualisation de la lune x 1
Big Mac x 0
Phileofish x 0
Mac Nugget au Poulet_5 pièces x 0
Pomme de terre mouche Mac(M) × 2
Pomme de terre mouche Mac(S) × 2
Ketchup x 0
Sauce BBQ x 0
Coca Cola(M) × 0
MacShake®_vanille(S) × 0
Minute Maid_Orange(M) × 2
Lait x 3
Vie végétale 100(M) × 2
----résultat----
Énergie kcal: 2300.2933 contre 0
Protéines g: 65.81 contre 0
Lipides g: 63.125 contre 9
Glucides g: 330.371 contre 6
Calcium mg: 750.1013 contre 0
Fer mg: 7.5 à 8
Vitamine A μg: 900.2018 contre 0
Vitamine B 1 mg: 1.2 contre 4
Vitamine B 2 mg: 1.2 contre 6
Vitamine Cmg: 100.311 contre 0
Fibres alimentaires g: 21.21 contre 0
Équivalent sel g: 7.5 à 8
Burger au fromage x 1 Burger de visualisation de la lune x 1 Pomme de terre mouche Mac (M) x 2 Mac Fly Potato (S) x 2 De plus, quelques bouteilles de jus d'orange, de lait et de jus de légumes. Tout comme demander une valeur définie le jour et la nuit C'est un peu trop, 2933kcal, Si tel est le cas, ce sera plus proche de la réalité! ?? (Probablement parce qu'il y a trop de pommes de terre pour les fibres alimentaires ou quelque chose Vous pouvez prendre des fibres alimentaires dans un menu légèrement différent, etc.)
Ceci est ** une version de pomme de terre régulière de l'ensemble de valeurs ** ** Boisson, jus d'orange ou lait ou vie végétale ** Faites-le simplement **, ce qui est tout à fait idéal pour l'équilibre nutritionnel **. Cela suggère cela. (Légèrement manque de fibres alimentaires / fer)
La nourriture McDonald's est bonne pour la santé! Je ne peux pas dire ça Ce ne serait pas si grave.
Selon cette suggestion, essayez les combinaisons suivantes J'ai essayé l'étiquette nutritionnelle sur le site officiel mentionné ci-dessus.
Source de l'image: site officiel de McDonald's > Notre responsabilité > Notre alimentation > Bilan nutritionnel
Équivalent à un repas, presque tous les nutriments dépassent la ligne de 40% par jour, ** Ajoutez simplement du lait et du jus de fruits à votre ensemble de valeur ** ** Ce sera un repas tellement idéal! !! Il semble que vous puissiez faire de la publicité comme ça. ** **
~~ Il existe une théorie selon laquelle les lipides sont excessifs. ~~ ~~ Aussi, peut-être que la plupart des aliments sont le lait et les jus de légumes ~~ ~~ Il peut être possible de réaliser un "pentagone de flocon de maïs" en le renforçant. ~~
Encore plus, comme solution plus réaliste ** Si un menu peut être commandé jusqu'à une fois ** (Autrement dit, il est NG de ne commander que 95 salades) Essayez de trouver la solution optimale avec. La plage de menus cible est également étendue à tous les types normaux.
Changez simplement le code comme suit! ① Cibler tous les menus normaux (sauf barista) (2) Ajoutez la condition "valeur maximale = 1" lors de la définition de la variable.
Si un menu ne peut être commandé qu'une seule fois
#Sortez le menu varistance
target_menu_list = [x for x in McDonaldsDict.keys() if McDonaldsDict[x]["Classification"]!="Varistance"]
#Omission
#Définition variable upBound=1 est la condition que la valeur maximale soit 1
xs = [pulp.LpVariable('{}'.format(x), cat='Integer', lowBound=0, upBound=1) for x in target_menu_list]
Voyons le résultat lorsque vous pouvez commander jusqu'à une fois!
** Résultat: 2453kcal **
Œuf McMuffin x 1
Confiture de fraises x 1
Plaque chauffante Mac_Œuf bacon x 1
Salade d'accompagnement x 1
Partager la pomme de terre x 1
Maïs sucré x 1
Thé du dragon noir Suntory#Plus sombre x 1
Café glacé torréfié de qualité supérieure(L) × 1
Café torréfié haut de gamme(M) × 1
Café torréfié haut de gamme(S) × 1
Thé chaud(tout droit)(M) × 1
MacShake®_Chocolat(S) × 1
Minute Maid_Orange(S) × 1
Lait x 1
Citron liquide x 1
Vie végétale 100(M) × 1
----résultat----
Énergie kcal: 2300.2453 contre 0
Protéines g: 65.67 contre 0
Lipides g: 63.9 contre 95
Glucides g: 330.331 contre 6
Calcium mg: 750.856 contre 0
Fer mg: 7.5 à 8
Vitamine A μg: 900.1161 contre 0
Vitamine B 1 mg: 1.1 pour 4
Vitamine B 2 mg: 1.2 contre 6
Vitamine Cmg: 100.254 contre 0
Fibres alimentaires g: 21.21 contre 0
Équivalent sel g: 7.5 à 8
C'est dommage que le système de burger typique ait disparu, J'ai pu obtenir une solution que je pouvais commander de manière raisonnablement réaliste. Salade, maïs sucré, vie végétale, Lait, jus d'orange, etc. L'as de la dernière fois est toujours sélectionné. ** Le résultat surprenant est que MacShake®_chocolate est inclus **.
Enfin, le représentant du pentagone de l'équilibre nutritionnel, Ajoutons les données de Corn Frosty (Kellogg). Sur le site officiel de Kellogg, reportez-vous aux données de Corn Frosty, Créez des données Dict individuellement comme indiqué ci-dessous. Ajoutez-le simplement aux données d'origine et exécutez-le.
Données Corn Frosty
from collections import OrderedDict
##Ajout de la version sans lait des données sur le gel du maïs
#Référence: https://www.kelloggs.jp/ja_JP/products/corn-frosties.html
k_od = OrderedDict()
k_od['Nom du produit'] = "Maïs givré"
k_od['Poids g'] = 30.0
k_od['Énergie kcal'] = 114.0
k_od['Protéine g'] = 1.7 #1.2~2.2
k_od['Lipide g'] = 0.25 #0~0.5
k_od['Glucides g'] = 26.9
#k_od['Mg de sodium'] =
#k_od['Potassium mg'] =
k_od['Mg de calcium'] = 1.5 #0.5~2.5
#k_od['Phosphore mg'] =
k_od['Fer mg'] = 1.4
k_od['Vitamine A μg'] = 96 #53~139
k_od['Vitamine B 1 mg'] = 0.47
k_od['Vitamine B 2 mg'] = 0.42
#k_od['Niacine mg'] =
k_od['Vitamine Cmg'] = 15
#k_od['Cholestérol mg'] =
k_od['Fibres alimentaires g'] = 1.2 #0.4~2.0
k_od['Équivalent sel g'] = 0.3
#k_od['Classification'] =
#Ajout de données sur le gel du cône
#McDonaldsDict["Maïs givré"] = k_od
Cette fois, le menu est axé sur les joueurs représentatifs de McDonald's. Pour la version sans salade et avec boisson, Voici les résultats de la version avec Corn Frosty en option.
** Résultat: 2544kcal **
Mac Burger Teriyaki x 0
Hamburger x 2
Burger au fromage x 0
Burger double fromage x 0
Burger de la lune x 0
Big Mac x 0
Phileofish x 0
Mac Nugget au Poulet_5 pièces x 0
Pomme de terre mouche Mac(M) × 2
Coca Cola(M) × 0
Minute Maid_Orange(M) × 0
Lait x 3
Vie végétale 100(M) × 0
Maïs givré x 7
----résultat----
Énergie kcal: 2300.2544 contre 0
Protéines g: 65.68 contre 0
Lipides g: 63.85 contre 9
Glucides g: 330.381 contre 6
Calcium mg: 750.788 contre 0
Fer mg: 7.5 contre 14
Vitamine A μg: 900.940 contre 0
Vitamine B 1 mg: 1.4 contre 4
Vitamine B 2 mg: 1.4 contre 6
Vitamine Cmg: 100.145 contre 0
Fibres alimentaires g: 21.21 contre 0
Équivalent sel g: 7.5 contre 7
** Maïs givré x 7 ** ** Lait x 3 ** Donc, si vous ne pouvez pas choisir Corn Frosty C'était 2933kcal, mais jusqu'à 2544kcal J'ai pu réduire l'apport calorique. Comme prévu ** Ce tigre n'est pas Date. ** **
Cependant, d'un autre côté, même avec l'ajout de tigres ** Hamburger x 2 ** ** Pomme de terre mouche Mac (M) x 2 ** C'est aussi que la force de consigne creuse ** Cela montre également l'excellence du côté McDonald's **.
Autrement dit, maïs glacé + lait pour le petit déjeuner (~~ × 7, c'est beaucoup ~~) Même dans l'habitude de manger de la valeur (pomme de terre) jour et nuit, Il semble qu'un équilibre nutritionnel décent soit maintenu.
Sur la base des résultats de cette recherche ** Si vous ne pouvez amener McDonald que sur une île inhabitée **, ** Vous pouvez maintenant commander le meilleur menu **.
Valeur définie, même si le côté est pomme de terre Bien que cela donne un équilibre nutritionnel étonnamment bon, Sauf si vous choisissez une salade ou du maïs sucré Ce sera trop calorique. ** "Mangeons bien les légumes" **
Aussi, comme boisson Lait, vie végétale, jus d'orange, J'ai trouvé que la zone était utile. Si vous faites un pentagone avec un équilibre nutritionnel qui ajoute une vie végétale ** Le clown jaune peut-il aussi combattre le tigre les bras croisés? ** ** L'ajout de salade d'accompagnement augmentera encore votre force.
D'un autre côté, si vous limitez les options au menu super-typique, En fait, ce sera ** 8000 kcal ou plus **. ** Grossissez si vous ne commandez que ce que vous aimez **, Il s'est avéré que. (évidemment)
Si vous acceptez la salade d'accompagnement et le maïs sucré, Tout en conservant les nutriments nécessaires pour la journée Parce qu'il était possible de maintenir les calories en dessous de la valeur standard ** Après tout, à titre indicatif lorsque vous vivez seul chez McDonald's ** ** Lors de la commande d'un ensemble de valeurs (pomme de terre) ** ** En commandant plus de salade, de lait et de vie végétale ** ** Il sera possible de maintenir une alimentation relativement saine et équilibrée sur le plan nutritionnel. ** **
** Bien que ce soit une conclusion apparemment évidente de manger de manière équilibrée, ** ** Il est possible de réaliser cela uniquement en combinant les options dans un seul magasin ** ** N'est-ce pas joli Elai? ** **
~~ Si je demande une amélioration à McDonald ~~ ~~ En tant qu'option principale de Happy Set, il en coûte environ +100 yens ~~ ~~ J'aimerais que vous puissiez également choisir le Teriyaki Mac Burger. ~~ ~~ De plus, veuillez intégrer l'outil équivalent à ce code sur le site officiel. ~~ ~~ Dans ce cas, je voudrais coopérer. ~~
Au départ, le calcul des nutriments C'est un problème typique de PuLP et de planification linéaire, Aussi sur le site officiel de McDonald's Parce que les données existaient au format liste Je me demandais si cela pouvait être fait assez facilement.
Mais quand j'essaye de l'appliquer à des données réelles Si vous le faites tel quel, ce sera un code dangereux. Variables de nom japonais, affectation de variable dynamique, définition d'expression dans la matrice, etc. De nombreuses parties doivent être modifiées à partir de l'exemple PuLP, Il a fallu plus d'ingéniosité que prévu.
En fin de compte, grâce à cette ingéniosité J'ai pu approfondir mes recherches en échangeant diverses données ~~ jouant ~~.
Le code cette fois est uniquement sur le navigateur tant que vous créez un CSV, Parce qu'il est organisé sous une forme qui peut être exécutée avec une copie Si vous êtes intéressé, veuillez réessayer. J'aimerais que vous envisagiez de modifier diverses conditions. Parce que cela peut être fait dans Colaboratory, cela peut être fait à partir de la fenêtre ou de la pomme.
Les données de menu sur le site Web officiel de McDonald's sont Les résultats peuvent changer car ils semblent être mis à jour quotidiennement.
c'est tout. Le résultat de cette étude est ** Je me sens coupable chaque fois que je passe la porte de McDonald's ** ** J'espère que cela aidera les adeptes de Mac sous-estimés. ** ** ~~ Je pense que quelqu'un a dit qu'il y avait beaucoup d'abonnés Mac parmi les ingénieurs ~~