diet.R


# 2023年版权,Gurobi优化狗万app足彩,LLC # #解决饮食的经典模型,展示如何添加约束#到现有的模型。库(矩阵)库(gurobi) #显示结果printSolution < -函数(模型、res nCategories nFoods){如果(res)美元状态= = '最佳'){猫(‘\ nCost:’, res美元objval‘\ nBuy: \ n”) (j在nCategories + 1: nFoods){如果(res)美元x [j] > 1的军医){猫(格式(模型美元varnames [j],证明=‘左’,宽度= 10),“:”,格式(res美元x [j],证明=‘正确的’,宽度= 10,nsmall = 2), ' \ n ')}}猫(“\ nNutrition: \ n”) (j 1: nCategories){猫(格式(模型美元varnames [j],证明=‘左’,宽度= 10),“:”,格式(res美元x [j],证明=‘正确的’,宽度= 10,nsmall = 2),其他“\ n”)}}{猫(无解\ n)}} #定义原始数据类别< - c(“卡路里”,“蛋白质”,“胖”,“钠”)nCategories < -长度(类别)minNutrition < - c (1800, 91, 0, 0) maxNutrition < - c(2200,正无穷,65,1779)食品< - c(“汉堡包”,“鸡”,“热狗”,“薯条”,“通心粉”、“披萨”,“沙拉”,“牛奶”,“冰淇淋”)nFoods < -长度(食物)成本< - c (2.49, 2.89, 1.50, 1.89, 2.09, 1.99, 2.49, 0.89, 1.59) nutritionValues < - c(410、24、26、730、420, 32岁,1190年,560年,20岁,32岁,1800年,380年,4日,19日,270年,320年,12日,10日,930年,320年,15日,12日,820年,320年,31日,12日,1230年,100年,8,2.5,125年,330年,8日,10日,180)#构建模型模型< -列表()模型美元< - spMatrix (nCategories nCategories + nFoods, i = c (mapp(代表、1:4、1 + nFoods)), j = c (1) (nCategories + 1): (nCategories + nFoods), 2 (nCategories + 1): (nCategories + nFoods), 3 (nCategories + 1): (nCategories + nFoods), 4 (nCategories + 1): (nCategories + nFoods)), x = c (-1.0, nutritionValues [1 + nCategories * (0: (nFoods-1))], -1.0, nutritionValues [2 + nCategories * (0: (nFoods-1))], -1.0, nutritionValues [3 + nCategories * (0: (nFoods-1))], -1.0, nutritionValues [4 + nCategories * (0: (nFoods-1)))))模型美元obj < - c(代表(0,nCategories),成本)模型美元磅< - c (minNutrition代表(0,nFoods))模型美元乌兰巴托< - c (maxNutrition代表(Inf nFoods))模型美元varnames < - c(类别、食品)模型美元rhs < -代表(0,nCategories)模型美元<——代表(“=”,nCategories)模型美元constrnames < -分类模型美元modelname < -“饮食”模型美元modelsense < -“min”#优化res <——gurobi(模型)printSolution(模型、res nCategories nFoods) #添加约束:最多6份乳制品#这是约束矩阵的部分B < - spMatrix (1 nCategories + nFoods i =代表(1、2),j = (nCategories + c (8、9)), x =代表(1、2)# B附加到一个模型美元< - rbind(模型美元A、B) #扩展row-related向量模型美元constrnames < - c(模型美元constrnames limit_dairy)模型美元rhs < - c(模型美元,6)模型美元< - c(模型美元意义上讲,“<”)#优化res < - gurobi(模型)printSolution(模型、res nCategories nFoods) #腾出rm (res,模型)