饮食


饮食


#!/ usr / bin / env python3.7#版权所有2021,guro狗万app足彩bi优化,llc#解决经典饮食模型,展示如何将约束#添加到现有模型。从Gurobipy导入Gurobipy导入Gurobipy导入Grb#营养指南,基于#USDA饮食指南为美国人,2005#http://www.health.gov/dietaryguidelines/dga2005/分类,minnuritition,maxnutrition = gp.multidict({'卡路里':[1800,2200],'蛋白':[91,grb.invinity],'脂肪':[0,65],'钠':[0,1779]})食物,成本= GP.Multidict({'汉堡包':2.49,'鸡':2.89,'热狗':1.50,'薯条':1.89,'Macaroni':2.09,'披萨':1.99,'沙拉':2.49,'牛奶':0.89,'冰淇淋':1.59})#食品的营养价值营养价值= {('汉堡包,'卡路里'):410,('汉堡包','蛋白'):24,('汉堡包','FAT'):26,('汉堡包','钠'):730,('鸡','卡路里'):420,('鸡','蛋白'):32,('鸡','脂肪'):10,('鸡','钠'):1190,('热狗','卡路里'):560,('热狗','蛋白'):20,('热狗','FAT'):32,('热狗','钠'):1800,('薯条','卡路里'):380,('薯条','蛋白'):4,('炸薯条','胖'):19,('Fries','钠'):270,('Macaroni','卡路里'):320,('Macaroni','蛋白'):12,('Macaroni','Fat'):10,('Macaroni','钠'):930,('披萨','卡路里'):320,('披萨','蛋白'):15,('披萨','FAT'):12,('披萨','钠'):820,('沙拉','卡路里'):320,('沙拉','蛋白'):31,('沙拉','脂肪'):12,('沙拉','钠'):1230,('牛奶','卡路里'):100,('牛奶','蛋白'):8,('牛奶','脂肪'):2.5,('牛奶','钠'):125,('冰淇淋','卡路里'):330,('冰淇淋','蛋白'):8,('冰淇淋','脂肪'):10,('冰淇淋','钠'):180}#型号m = gp。型号(“饮食”)#为购买购买的食物= M.addvars(Foods,Name =“购买”)#您可以使用Python循环构造和M.addvar()来创建#这些决策变量。 The following would be equivalent # # buy = {} # for f in foods: # buy[f] = m.addVar(name=f) # The objective is to minimize the costs m.setObjective(buy.prod(cost), GRB.MINIMIZE) # Using looping constructs, the preceding statement would be: # # m.setObjective(sum(buy[f]*cost[f] for f in foods), GRB.MINIMIZE) # Nutrition constraints m.addConstrs((gp.quicksum(nutritionValues[f, c] * buy[f] for f in foods) == [minNutrition[c], maxNutrition[c]] for c in categories), "_") # Using looping constructs, the preceding statement would be: # # for c in categories: # m.addRange(sum(nutritionValues[f, c] * buy[f] for f in foods), # minNutrition[c], maxNutrition[c], c) def printSolution(): if m.status == GRB.OPTIMAL: print('\nCost: %g' % m.objVal) print('\nBuy:') for f in foods: if buy[f].x > 0.0001: print('%s %g' % (f, buy[f].x)) else: print('No solution') # Solve m.optimize() printSolution() print('\nAdding constraint: at most 6 servings of dairy') m.addConstr(buy.sum(['milk', 'ice cream']) <= 6, "limit_dairy") # Solve m.optimize() printSolution()