饮食


饮食


#版权所有2021,Gurobi O狗万app足彩ptimization,LLC ##解决经典饮食模型,展示如何将约束添加到现有模型。库(矩阵)库(Gurobi)#显示结果Printsolution < - 功能(型号,RE,NCategories,NFoods){if(res$status =='最佳'){cat('\ ncost:',res$Objval,'\ nbuy:\ n')for(j在ncategories + 1:nfoods){if(res$X [J]> 1E-4){CAT(格式(型号$varnames [j],justify ='左',width = 10),':',format(res$x [j],justify ='右',宽度= 10,nsmall = 2),'\ n')}} cat('\ nnutrition:\ n')for(j在1:ncategories){cat(格式(格式)模型$varnames [j],justify ='左',width = 10),':',format(res$x [j],justify ='右',宽度= 10,nsmall = 2),'\ n')}} else {cat('no solution \ n')}#定义原始数据类别< -  c('卡路里','蛋白','脂肪','钠')ncategories < - 长度(类别)minnutrition < -  c(1800,91,0,0)Maxnutrition < -  C(2200,INF,65,1779)食品<-  C('汉堡包','鸡','热狗','薯条','Macaroni','披萨','沙拉','牛奶','冰淇淋')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, 10 , 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 ) # Build model model <- list() model$a < -  spmatrix(ncategories,ncategories + nfoods,i = c(mapply(rep,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,营养值[1+ nCategories *(0:(nfoods-1))],-1.0,营养值[2 + ncategoriation *(0 :( nfoods-1))],-1.0,营养值[3 + ncategories *(0 :( nfoods-1))],-1.0,营养值[4 + ncategories *(0:(nfoods-1))]))模型$obj < -  c(rep(0,ncategories),成本)模型$LB < -  C(minnutrition,rep(0,nfoods))模型$UB < -  C(MaxNutrition,Rep(Inf,NFoods))模型$Varnames < -  C(类别,食品)模型$RHS < -  rep(0,ncategories)模型$感觉< -  rep('=',ncategories)模型$CONSTRAMMES <类模型$ModelName < - '饮食'模型$modelsense < - 'min'#优化res < -  gurobi(型号)Printsolution(型号,res,ncategories,nfoods)#添加约束:最多6份乳制品#这是约束b < -  spmatrix的矩阵部分(1,ncategories + nfoods,i = rep(1,2),j =(ncategories + c(8,9)),x = rep(1,2))#附加b到模型$a < -  rbind(型号$A,B)#扩展行相关的向量模型$constrammes < -  C(模型$Constrames,'limit_dairy')模型$RHS < -  C(型号$RHS,6)模型$感觉< -  c(模型$sense,'<')#优化res < -  gurobi(型号)printsolution(型号,res,ncategories,nfoods)#清除空间RM(RES,Model)