我有一个大约500,000个条目的数据集,我想在给定一组约束的情况下找出哪一行是最佳组合。
我已经研究过各种线性编程方法,但我的一个变量是使用神经网络从其他变量生成的。在未将神经网络结合到任何线性编程命令之后,现在我已经决定从使用神经网络生成的数据集中选择最佳行。
以下是我的数据集的摘录:
[Speed] [BoostP] [InletT] [ExhaustT] [FuelFlow] [Lambda] [Torque]
[1] 0.25 1.53144 2.29048 -0.39812 -0.65421 -0.19841 0.52364
[2] 0.50 -2.26588 0.54588 2.65987 0.05721 -0.78777 0.53268
[3] 0.25 0.14583 0.89634 0.98554 -0.33293 0.48981 0.51389
[4] 0.25 -0.21985 0.84242 0.66724 0.12758 -0.89856 0.48713
[5] 0.25 0.52630 0.79399 0.73567 0.13699 0.69841 0.56812
[6] 0.75 0.87531 0.84658 0.98555 2.98945 0.26843 0.52487
[7] 0.25 0.96512 0.88127 2.35642 0.98254 1.89546 0.50320
[8] 0.25 -0.05984 0.65542 4.58643 -0.56988 -2.65412 0.59856
我的研究目的是找出哪种组合能够以最低的油耗消耗最高扭矩,即最大限度地减少以下功能:
f<-(2/(1+Torque))+0.25*FuelFlow+0.05*ExhaustT
我的约束如下:
Speed=0.25
ExhaustT<=2.5
-0.5<=Lambda<=1.5
哪个R包可以实现这个目标?此外,如果有人知道如何从LP内部调用神经网络,我宁愿使用该方法。谢谢!
答案 0 :(得分:1)
使用data.table
获取速度:
df<-read.table(text="Speed BoostP InletT ExhaustT FuelFlow Lambda Torque
[1] 0.25 1.53144 2.29048 -0.39812 -0.65421 -0.19841 0.52364
[2] 0.50 -2.26588 0.54588 2.65987 0.05721 -0.78777 0.53268
[3] 0.25 0.14583 0.89634 0.98554 -0.33293 0.48981 0.51389
[4] 0.25 -0.21985 0.84242 0.66724 0.12758 -0.89856 0.48713
[5] 0.25 0.52630 0.79399 0.73567 0.13699 0.69841 0.56812
[6] 0.75 0.87531 0.84658 0.98555 2.98945 0.26843 0.52487
[7] 0.25 0.96512 0.88127 2.35642 0.98254 1.89546 0.50320
[8] 0.25 -0.05984 0.65542 4.58643 -0.56988 -2.65412 0.59856",header=T)
library(data.table)
setDT(df)
df[Speed==0.25 & ExhaustT<=0.25 & Lambda>=-0.5 & Lambda<=1.5,
Result := (2/(1+Torque)) + 0.25*FuelFlow + 0.05*ExhaustT]
df[which.min(Result)]
Speed BoostP InletT ExhaustT FuelFlow Lambda Torque Result
1: 0.25 1.53144 2.29048 -0.39812 -0.65421 -0.19841 0.52364 1.129188