2017-04-21 57 views
2

我已經約50萬家條目的數據集,我想找出哪一行是最佳組合,給定一組約束。優化與約束的數據集(無功能)

我已經看過各種線性編程方法,但我的變量之一已經從採用神經網絡的人產生。在沒有將神經網絡結合到任何線性規劃命令後,現在我已經放棄了從使用神經網絡生成的數據集中選擇最好的行。

這裏是我的數據集的摘錄:

 [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內部調用神經網絡,我寧願使用這種方法。謝謝!

+2

直截了當的辦法,首先就是你的子集矩陣,然後應用功能,使用'which.min'在輸出選擇具有最低值的行。 'myMatNew < - myMat [myMat [,「speed」] == 0.25&myMat [,「exhaust」] <= 2.5,]'等,然後通過myMatNew運行該函數。 – lmo

回答

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 
+0

非常感謝!但是,當我嘗試實現這個時,我得到以下錯誤:'我是無效類型(矩陣)。也許將來2列矩陣可能會返回DT的元素列表(本着FAQ 2.14中A [B]的精神)。請讓datatable-help知道您是否願意,或將您的評論添加到FR#657'。 – engineerinr