我正在开发应用程序以优化膳食计划。我的应用程序有 10 顿饭 (x1-x10),包括价格、碳水化合物值、蛋白质值和卡路里值。我想从这 10 餐中选择 3 餐。如何设置此限制?
我的代码:
val model = ExpressionsBasedModel()
val x1: Variable = model.addVariable("x1").binary().weight(41)
val x2: Variable = model.addVariable("x2").binary().weight(16)
val x3: Variable = model.addVariable("x3").binary().weight(32)
val x4: Variable = model.addVariable("x4").binary().weight(23)
val x5: Variable = model.addVariable("x5").binary().weight(46)
val x6: Variable = model.addVariable("x6").binary().weight(1)
val x7: Variable = model.addVariable("x7").binary().weight(2)
val x8: Variable = model.addVariable("x8").binary().weight(23)
val x9: Variable = model.addVariable("x9").binary().weight(5)
val x10: Variable = model.addVariable("x10").binary().weight(7)
val protein: Expression = model.addExpression("protein")
.lower(60)
.upper(90)
.set(x1, 20)
.set(x2, 25)
.set(x3, 30)
.set(x4, 15)
.set(x5, 20)
.set(x6, 15)
.set(x7, 5)
.set(x8, 11)
.set(x9, 3)
.set(x10, 25)
val calories: Expression = model.addExpression("calories")
.lower(1800)
.upper(2200)
.set(x1, 700)
.set(x2, 600)
.set(x3, 1000)
.set(x4, 500)
.set(x5, 800)
.set(x6, 300)
.set(x7, 350)
.set(x8, 200)
.set(x9, 300)
.set(x10, 330)
val carbs: Expression = model.addExpression("carbs")
.lower(300)
.set(x1, 100)
.set(x2, 100)
.set(x3, 150)
.set(x4, 60)
.set(x5, 150)
.set(x5, 800)
.set(x6, 60)
.set(x7, 70)
.set(x8, 30)
.set(x9, 70)
.set(x10, 50)
val result: Optimisation.Result = model.maximise()
println(result)
}
data class Meal(val name: String, val kcal: Int, val protein: Int, val carbs: Int, val price: Int, var portionLimit: Int){
override fun toString() = name
}