query-optimization - 使用 R 优化饮食
问题描述
我想做一种零食,尽可能接近观察到的零食(尽量减少与观察到的零食(qte_ob)的差异,同时尊重零食价格和营养价值的限制。我的数据库是:
食品编号 成本 Prot Fat Carb Cal Qte_ob 面包 1 0.1 2.5 1 15 90 150 牛奶 2 0.5 4.8 5 11.7 120 350 奶酪 3 1 8 9 0.4 106 20
Cost 是每种食物的价格,Prot 是每种食物的蛋白质含量,Fat 是每种食物的脂肪含量,Carb 是每种食物的碳水化合物含量,cal 是每种食物的钙含量,Qte_ob 是我通常食用的量。
我将变量命名为 Qte_m :它是一个带有测量数量的食物(面包、牛奶和奶酪)的向量。
objectif 函数可以写成: f(Qte_m) = sum (i to 1;3)
还有很多约束:
- 价格必须低于 3€ Cont_price : sum (i to [1;3] (Qte_m(i)*Cost(i))<4)
- 饮食必须提供至少 10g 蛋白质 Cont_prot : sum (i to [1;3] (Qte_m(i)*Prot(i))≥10)
- 一克奶酪必须至少有 5 克面包 Cont_bread : Cont_bread : Qte_m(3) ≤ 5*Qte_m(2)
我已经开始以下代码:
Base_Alim<-read.csv(file = "Compo.csv",sep=";",header = TRUE)
head(Base_Alim)
#Variable
qte_m <-Variable(3)
#Objective
function_opti <- function(Base_Alim, qte_m){
result = sum((qte_m - Base_Alim[qte_ob])^2)
return(result)
}
# contrainte
constraint_1 <- sum(Base_alim[qte_m]*cost) <= 3.999999
constraint_2 <- sum(Base_alim[qte_m]*prot) >=10
constraint_3 <- qte_m(3)<=5*qte_m(2)
#problem
constraints <- list(constraint_1, constraint_2, constraint_3))
resultat=optim(fn=function_opti,Data=Base_alim, contraints, method="L-BFGS-B")
谢谢您的帮助!
解决方案
推荐阅读
- python - 当我通过网络摄像头运行模型时,为什么我的模型只预测一个类?
- nlp - 可以为标记器和模型使用不同的变压器模型吗?
- python - 收到新的 JSON 数据时,如何将新行附加到“dbc.Table.from_dataframe”破折号组件?
- eclipse - Eclipse 正在锁定 SVN 帐户
- python - PySpark 根据排名创建新列
- python - 在 HTML 中过滤字符 - Python - Django
- wordpress - 使用 .htaccess 强制下载特定文件夹的文件
- google-cloud-platform - GCP Cloud NAT 超时问题
- android - 以编程方式安装拆分 Apk
- azure - Azure:使用 ARM 模板附加托管磁盘,出现错误“不允许更改属性 'dataDisk.managedDisk.id'”