R語言代寫解決最優化運營研究問題-線性優化(LP)問題


 原文:http://tecdat.cn/?p=3432

使用R中的線性編程工具來解決優化問題。

優化通常用於運營研究領域,以解決生產計划,運輸網絡設計,倉庫位置分配和調度等問題,我們嘗試最大化或最小化具有決策變量和約束數量的線性函數。

在這里,我使用了我的一個咨詢項目,幫助我們的投資組合公司選擇一個無線供應商,其中包含可以滿足所有要求(總線數和匯總數據量)的數據計划組合,同時花費最少的金錢。

這種優化通常可以在Excel求解器中解決。但是,由於我有20個投資組合公司有2個提供商和2個方案進行分析,要在Excel中完成,我將不得不運行80次。使用R會容易得多。

加載包

<span style="color:#333333"><code><span style="color:#990000"><strong>library</strong></span><span style="color:#687687">(</span><span style="color:#000000">lpSolve</span><span style="color:#687687">)</span></code></span>

加載數據

<span style="color:#333333"><code><span style="color:#000000">usage</span> <span style="color:#687687"><-</span> <span style="color:#000000">read.csv</span><span style="color:#687687">(</span><span style="color:#dd1144">"usage.csv"</span><span style="color:#687687">)</span>
<span style="color:#000000">plan</span> <span style="color:#687687"><-</span> <span style="color:#000000">read.csv</span><span style="color:#687687">(</span><span style="color:#dd1144">"wireless_data_plan.csv"</span><span style="color:#687687">)</span></code></span>

使用數據

<span style="color:#333333"><code><span style="color:#000000">head</span><span style="color:#687687">(</span><span style="color:#000000">usage</span><span style="color:#687687">)</span></code></span>
##   Company Num_Lines Data_Usage
## 1       A       134      397.5
## 2       B       350     1037.5
## 3       C      1510     3462.5
## 4       D      2260     4437.5
## 5       E       750     2875.0
## 6       F       410      612.5
<span style="color:#333333"><code><span style="color:#000000">str</span><span style="color:#687687">(</span><span style="color:#000000">usage</span><span style="color:#687687">)</span></code></span>
## 'data.frame':    20 obs. of  3 variables:
##  $ Company   : Factor w/ 20 levels "A","B","C","D",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ Num_Lines : int  134 350 1510 2260 750 410 2930 1091 3350 7760 ...
##  $ Data_Usage: num  398 1038 3462 4438 2875 ...

我們可以看到,我們在數據集中共有20家公司,平均線數和過去3個月的月度數據使用量。

現在,我查看摘要統計信息和公司數據的直方圖。

  • 行數:我們可以看到平均行數約為1800,但大多數公司的行數少於2000行。只有一家公司有超過7000條線路的異常值。
  • 數據使用情況:每行的平均使用量約為2.5GB,范圍從1GB到4GB。
<span style="color:#333333"><code><span style="color:#000000">summary</span><span style="color:#687687">(</span><span style="color:#000000">usage</span><span style="color:#687687">$</span><span style="color:#000000">Num_Lines</span><span style="color:#687687">)</span></code></span>
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   134.0   779.2  1083.0  1774.0  1909.0  7760.0
<span style="color:#333333"><code><span style="color:#000000">summary</span><span style="color:#687687">(</span><span style="color:#000000">usage</span><span style="color:#687687">$</span><span style="color:#000000">Data_Usage</span><span style="color:#687687">/</span><span style="color:#000000">usage</span><span style="color:#687687">$</span><span style="color:#000000">Num_Lines</span><span style="color:#687687">)</span></code></span>
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.004   1.674   2.527   2.547   3.075   4.475
<span style="color:#333333"><code><span style="color:#000000">par</span><span style="color:#687687">(</span><span style="color:#000000">mfrow</span> <span style="color:#687687">=</span> <span style="color:#000000">c</span><span style="color:#687687">(</span><span style="color:#009999">1</span>,<span style="color:#009999">2</span><span style="color:#687687">)</span><span style="color:#687687">)</span>
<span style="color:#000000">hist</span><span style="color:#687687">(</span><span style="color:#000000">usage</span><span style="color:#687687">$</span><span style="color:#000000">Num_Lines</span>, <span style="color:#000000">main</span> <span style="color:#687687">=</span> <span style="color:#dd1144">"Number of Lines"</span>, <span style="color:#000000">xlab</span> <span style="color:#687687">=</span> <span style="color:#dd1144">"Number of Lines"</span><span style="color:#687687">)</span>
<span style="color:#000000">hist</span><span style="color:#687687">(</span><span style="color:#000000">usage</span><span style="color:#687687">$</span><span style="color:#000000">Data_Usage</span><span style="color:#687687">/</span><span style="color:#000000">usage</span><span style="color:#687687">$</span><span style="color:#000000">Num_Lines</span>, <span style="color:#000000">main</span> <span style="color:#687687">=</span> <span style="color:#dd1144">"Data Usage"</span>, <span style="color:#000000">xlab</span> <span style="color:#687687">=</span> <span style="color:#dd1144">"Data Usage - GB"</span><span style="color:#687687">)</span></code></span>

​ 計划數據

<span style="color:#333333"><code><span style="color:#000000">head</span><span style="color:#687687">(</span><span style="color:#000000">plan</span><span style="color:#687687">)</span></code></span>
##   Wireless_Carrier Data_GB Plan_Rate
## 1              ATT       3        60
## 2              ATT       4        75
## 3              ATT       5        85
## 4              ATT       6       100
## 5              VZW       1        56
## 6              VZW       2        60
<span style="color:#333333"><code><span style="color:#000000">str</span><span style="color:#687687">(</span><span style="color:#000000">plan</span><span style="color:#687687">)</span></code></span>
## 'data.frame':    10 obs. of  3 variables:
##  $ Wireless_Carrier: Factor w/ 2 levels "ATT","VZW": 1 1 1 1 2 2 2 2 2 2
##  $ Data_GB         : int  3 4 5 6 1 2 4 6 8 10
##  $ Plan_Rate       : int  60 75 85 100 56 60 70 80 90 100

我們還可以看到我們有來自AT&T和Verizon Wireless的不同級別的數據計划供我們選擇。此分析的目標是選擇具有最低總成本的不同數據計划組合的運營商,同時滿足線路數量和總數據要求

創建目標函數,約束和約束方向對象

<span style="color:#333333"><code><span style="color:#000000">obj.fun.att</span> <span style="color:#687687"><-</span> <span style="color:#000000">plan</span><span style="color:#687687">[</span><span style="color:#009999">1</span><span style="color:#687687">:</span><span style="color:#009999">4</span>, <span style="color:#009999">3</span><span style="color:#687687">]</span>
<span style="color:#000000">obj.fun.vzw</span> <span style="color:#687687"><-</span> <span style="color:#000000">plan</span><span style="color:#687687">[</span><span style="color:#009999">5</span><span style="color:#687687">:</span><span style="color:#009999">10</span>, <span style="color:#009999">3</span><span style="color:#687687">]</span>
<span style="color:#000000">constr.att</span> <span style="color:#687687"><-</span> <span style="color:#000000">matrix</span><span style="color:#687687">(</span><span style="color:#000000">c</span><span style="color:#687687">(</span><span style="color:#009999">1</span>, <span style="color:#009999">1</span>, <span style="color:#009999">1</span>, <span style="color:#009999">1</span>, <span style="color:#000000">as.vector</span><span style="color:#687687">(</span><span style="color:#000000">plan</span><span style="color:#687687">[</span><span style="color:#009999">1</span><span style="color:#687687">:</span><span style="color:#009999">4</span>, <span style="color:#009999">2</span><span style="color:#687687">]</span><span style="color:#687687">)</span><span style="color:#687687">)</span>, <span style="color:#000000">ncol</span> <span style="color:#687687">=</span> <span style="color:#009999">4</span>, <span style="color:#000000">byrow</span> <span style="color:#687687">=</span> <span style="color:#990073">TRUE</span><span style="color:#687687">)</span>
<span style="color:#000000">constr.vzw</span> <span style="color:#687687"><-</span> <span style="color:#000000">matrix</span><span style="color:#687687">(</span><span style="color:#000000">c</span><span style="color:#687687">(</span><span style="color:#009999">1</span>, <span style="color:#009999">1</span>, <span style="color:#009999">1</span>, <span style="color:#009999">1</span>, <span style="color:#009999">1</span>, <span style="color:#009999">1</span>, <span style="color:#000000">as.vector</span><span style="color:#687687">(</span><span style="color:#000000">plan</span><span style="color:#687687">[</span><span style="color:#009999">5</span><span style="color:#687687">:</span><span style="color:#009999">10</span>, <span style="color:#009999">2</span><span style="color:#687687">]</span><span style="color:#687687">)</span><span style="color:#687687">)</span>, <span style="color:#000000">ncol</span> <span style="color:#687687">=</span> <span style="color:#009999">6</span>, <span style="color:#000000">byrow</span> <span style="color:#687687">=</span> <span style="color:#990073">TRUE</span><span style="color:#687687">)</span>
<span style="color:#000000">constr.dir</span> <span style="color:#687687"><-</span> <span style="color:#000000">c</span><span style="color:#687687">(</span><span style="color:#dd1144">"="</span>, <span style="color:#dd1144">">="</span><span style="color:#687687">)</span></code></span>

我們有兩個目標函數,因為我們希望找到AT&T和Verizon成本最低的計划組合。並且有兩個限制因素。一個是總行數和總(合並)數據量。對於總行數,我希望數據計划具有完全相同的數量,因此我使用“=”。但是對於總的數據量,只要有比所消耗的數據更多的數據,就可以接受。所以我用“> =”表示數據量約束。

創建空矩陣以存儲結果

<span style="color:#333333"><code><span style="color:#000000">result.att</span> <span style="color:#687687"><-</span> <span style="color:#000000">matrix</span><span style="color:#687687">(</span><span style="color:#009999">0</span>, <span style="color:#000000">nr</span> <span style="color:#687687">=</span> <span style="color:#009999">20</span>, <span style="color:#000000">nc</span> <span style="color:#687687">=</span> <span style="color:#009999">5</span><span style="color:#687687">)</span>
<span style="color:#000000">row.names</span><span style="color:#687687">(</span><span style="color:#000000">result.att</span><span style="color:#687687">)</span> <span style="color:#687687"><-</span> <span style="color:#000000">usage</span><span style="color:#687687">$</span><span style="color:#000000">Company</span>
<span style="color:#000000">colnames</span><span style="color:#687687">(</span><span style="color:#000000">result.att</span><span style="color:#687687">)</span> <span style="color:#687687"><-</span> <span style="color:#000000">c</span><span style="color:#687687">(</span><span style="color:#dd1144">"3GB"</span>, <span style="color:#dd1144">"4GB"</span>, <span style="color:#dd1144">"5GB"</span>, <span style="color:#dd1144">"6GB"</span>, <span style="color:#dd1144">"Cost"</span><span style="color:#687687">)</span>
<span style="color:#000000">result.vzw</span> <span style="color:#687687"><-</span> <span style="color:#000000">matrix</span><span style="color:#687687">(</span><span style="color:#009999">0</span>, <span style="color:#000000">nr</span> <span style="color:#687687">=</span> <span style="color:#009999">20</span>, <span style="color:#000000">nc</span> <span style="color:#687687">=</span> <span style="color:#009999">7</span><span style="color:#687687">)</span>
<span style="color:#000000">row.names</span><span style="color:#687687">(</span><span style="color:#000000">result.vzw</span><span style="color:#687687">)</span> <span style="color:#687687"><-</span> <span style="color:#000000">usage</span><span style="color:#687687">$</span><span style="color:#000000">Company</span>
<span style="color:#000000">colnames</span><span style="color:#687687">(</span><span style="color:#000000">result.vzw</span><span style="color:#687687">)</span> <span style="color:#687687"><-</span> <span style="color:#000000">c</span><span style="color:#687687">(</span><span style="color:#dd1144">"1GB"</span>, <span style="color:#dd1144">"2GB"</span>, <span style="color:#dd1144">"4GB"</span>, <span style="color:#dd1144">"6GB"</span>, <span style="color:#dd1144">"8GB"</span>, <span style="color:#dd1144">"10GB"</span>, <span style="color:#dd1144">"Cost"</span><span style="color:#687687">)</span></code></span>

創建循環以針對每個提供商為每個投資組合公司運行解算器

<span style="color:#333333"><code><span style="color:#990000"><strong>for</strong></span> <span style="color:#687687">(</span><span style="color:#000000">i</span> <span style="color:#990000"><strong>in</strong></span> <span style="color:#009999">1</span><span style="color:#687687">:</span><span style="color:#009999">20</span><span style="color:#687687">)</span> <span style="color:#687687">{</span>
  <span style="color:#000000">rhs</span> <span style="color:#687687"><-</span> <span style="color:#000000">usage</span><span style="color:#687687">[</span><span style="color:#000000">i</span>,<span style="color:#009999">2</span><span style="color:#687687">:</span><span style="color:#009999">3</span><span style="color:#687687">]</span>
  <span style="color:#000000">prod.sol</span> <span style="color:#687687"><-</span> <span style="color:#000000">lp</span><span style="color:#687687">(</span><span style="color:#dd1144">"min"</span>, <span style="color:#000000">obj.fun.att</span>, <span style="color:#000000">constr.att</span>, <span style="color:#000000">constr.dir</span>, <span style="color:#000000">rhs</span>, <span style="color:#000000">compute.sens</span> <span style="color:#687687">=</span> <span style="color:#990073">TRUE</span>, <span style="color:#000000">all.int</span> <span style="color:#687687">=</span> <span style="color:#990073">TRUE</span><span style="color:#687687">)</span>
  <span style="color:#000000">result.att</span><span style="color:#687687">[</span><span style="color:#000000">i</span>,<span style="color:#009999">5</span><span style="color:#687687">]</span> <span style="color:#687687"><-</span> <span style="color:#000000">prod.sol</span><span style="color:#687687">$</span><span style="color:#000000">objval</span>
  <span style="color:#000000">result.att</span><span style="color:#687687">[</span><span style="color:#000000">i</span>, <span style="color:#009999">1</span><span style="color:#687687">:</span><span style="color:#009999">4</span><span style="color:#687687">]</span> <span style="color:#687687"><-</span> <span style="color:#000000">prod.sol</span><span style="color:#687687">$</span><span style="color:#000000">solution</span>
<span style="color:#687687">}</span>
<span style="color:#990000"><strong>for</strong></span> <span style="color:#687687">(</span><span style="color:#000000">i</span> <span style="color:#990000"><strong>in</strong></span> <span style="color:#009999">1</span><span style="color:#687687">:</span><span style="color:#009999">20</span><span style="color:#687687">)</span> <span style="color:#687687">{</span>
  <span style="color:#000000">rhs</span> <span style="color:#687687"><-</span> <span style="color:#000000">usage</span><span style="color:#687687">[</span><span style="color:#000000">i</span>,<span style="color:#009999">2</span><span style="color:#687687">:</span><span style="color:#009999">3</span><span style="color:#687687">]</span>
  <span style="color:#000000">prod.sol</span> <span style="color:#687687"><-</span> <span style="color:#000000">lp</span><span style="color:#687687">(</span><span style="color:#dd1144">"min"</span>, <span style="color:#000000">obj.fun.vzw</span>, <span style="color:#000000">constr.vzw</span>, <span style="color:#000000">constr.dir</span>, <span style="color:#000000">rhs</span>, <span style="color:#000000">compute.sens</span> <span style="color:#687687">=</span> <span style="color:#990073">TRUE</span>, <span style="color:#000000">all.int</span> <span style="color:#687687">=</span> <span style="color:#990073">TRUE</span><span style="color:#687687">)</span>
  <span style="color:#000000">result.vzw</span><span style="color:#687687">[</span><span style="color:#000000">i</span>,<span style="color:#009999">7</span><span style="color:#687687">]</span> <span style="color:#687687"><-</span> <span style="color:#000000">prod.sol</span><span style="color:#687687">$</span><span style="color:#000000">objval</span>
  <span style="color:#000000">result.vzw</span><span style="color:#687687">[</span><span style="color:#000000">i</span>, <span style="color:#009999">1</span><span style="color:#687687">:</span><span style="color:#009999">6</span><span style="color:#687687">]</span> <span style="color:#687687"><-</span> <span style="color:#000000">prod.sol</span><span style="color:#687687">$</span><span style="color:#000000">solution</span>
<span style="color:#687687">}</span></code></span>

AT&T優化結果

<span style="color:#333333"><code><span style="color:#000000">result.att</span></code></span>
##    3GB 4GB 5GB 6GB   Cost
## A  134   0   0   0   8040
## B  350   0   0   0  21000
## C 1510   0   0   0  90600
## D 2260   0   0   0 135600
## E  438   0 311   1  52815
## F  410   0   0   0  24600
## G 2930   0   0   0 175800
## H  286   0 805   0  85585
## I 3350   0   0   0 201000
## J 7760   0   0   0 465600
## K 4920   0   0   0 295200
## L  594   0 335   1  64215
## M  960   0   0   0  57600
## N 1792   0   0   0 107520
## O 1730   0   0   0 103800
## P 1406   0 247   1 105455
## Q  316   0 472   1  59180
## R  297   0   0   0  17820
## S 1075   0   0   0  64500
## T  796   0   0   0  47760

正如我們在這里看到的,大多數分配是3GB計划,這是有道理的,因為大多數公司使用的不到3GB。但是,如果公司使用超過3GB,由於每GB成本較低,似乎更好地使用更高的數據計划。

Verizon優化結果

<span style="color:#333333"><code><span style="color:#000000">result.vzw</span></code></span>
##    1GB  2GB 4GB 6GB 8GB 10GB   Cost
## A    0   69  65   0   0    0   8690
## B    0  258  66   0   1   25  22690
## C    1 1405  64   1   0   39  92816
## D   82 2178   0   0   0    0 135272
## E    1  528  65   0   1  155  51876
## F  207  203   0   0   0    0  23772
## G  785 2145   0   0   0    0 172660
## H    1  704  64   0   1  321  78966
## I 3337   13   0   0   0    0 187652
## J    1 7174  64   0   1  520 487066
## K 4215  705   0   0   0    0 278340
## L    1  680  64   1   0  184  63816
## M  645  315   0   0   0    0  55020
## N    0 1573   1   0   0  218 116250
## O    1 1571  66   0   1   91 108126
## P    1 1336  64   0   0  253 109996
## Q    0  523  65   0   1  200  56020
## R  148  149   0   0   0    0  17228
## S    1  890  66   0   0  118  69876
## T    0  796   0   0   0    0  47760

至於Verizon,我們可以看到大多數公司都有2GB和10GB的混合計划,以利用2GB計划中更便宜的總速率,但從10GB計划中降低每GB速率。

比較AT&T和Verizon Wireless的總體成本

<span style="color:#333333"><code><span style="color:#000000">comp</span> <span style="color:#687687"><-</span> <span style="color:#000000">as.data.frame</span><span style="color:#687687">(</span><span style="color:#000000">cbind</span><span style="color:#687687">(</span><span style="color:#000000">result.att</span><span style="color:#687687">[</span>,<span style="color:#009999">5</span><span style="color:#687687">]</span>, <span style="color:#000000">result.vzw</span><span style="color:#687687">[</span>,<span style="color:#009999">7</span><span style="color:#687687">]</span><span style="color:#687687">)</span><span style="color:#687687">)</span>
<span style="color:#000000">comp</span><span style="color:#687687">$</span><span style="color:#000000">lowest</span> <span style="color:#687687"><-</span> <span style="color:#000000">ifelse</span><span style="color:#687687">(</span><span style="color:#000000">comp</span><span style="color:#687687">[</span>,<span style="color:#009999">1</span><span style="color:#687687">]</span> <span style="color:#687687">></span> <span style="color:#000000">comp</span><span style="color:#687687">[</span>,<span style="color:#009999">2</span><span style="color:#687687">]</span>, <span style="color:#dd1144">"vzw"</span>, <span style="color:#dd1144">"att"</span><span style="color:#687687">)</span>
<span style="color:#000000">colnames</span><span style="color:#687687">(</span><span style="color:#000000">comp</span><span style="color:#687687">)</span> <span style="color:#687687"><-</span> <span style="color:#000000">c</span><span style="color:#687687">(</span><span style="color:#dd1144">"ATT"</span>, <span style="color:#dd1144">"VZW"</span>, <span style="color:#dd1144">"Lowest"</span><span style="color:#687687">)</span>
<span style="color:#000000">comp</span></code></span>
##      ATT    VZW Lowest
## A   8040   8690    att
## B  21000  22690    att
## C  90600  92816    att
## D 135600 135272    vzw
## E  52815  51876    vzw
## F  24600  23772    vzw
## G 175800 172660    vzw
## H  85585  78966    vzw
## I 201000 187652    vzw
## J 465600 487066    att
## K 295200 278340    vzw
## L  64215  63816    vzw
## M  57600  55020    vzw
## N 107520 116250    att
## O 103800 108126    att
## P 105455 109996    att
## Q  59180  56020    vzw
## R  17820  17228    vzw
## S  64500  69876    att
## T  47760  47760    att

第二種情景

現在我們知道根據我們當前的行數和用途選擇什么提供商和計划。然而,公司可能希望購買的數據超過他們現在消費的數據,因為數據的使用一直在增長,並且預計會繼續這樣做,其次,他們希望避免潛在的超額費用。

所以現在,我將建立一個新變量,作為公司過去使用的數據的百分比。

<span style="color:#333333"><code><span style="color:#000000">buffer</span> <span style="color:#687687"><-</span> <span style="color:#000000">c</span><span style="color:#687687">(</span><span style="color:#009999">1.2</span><span style="color:#687687">)</span>
<span style="color:#990000"><strong>for</strong></span> <span style="color:#687687">(</span><span style="color:#000000">i</span> <span style="color:#990000"><strong>in</strong></span> <span style="color:#009999">1</span><span style="color:#687687">:</span><span style="color:#009999">20</span><span style="color:#687687">)</span> <span style="color:#687687">{</span>
  <span style="color:#000000">rhs</span> <span style="color:#687687"><-</span> <span style="color:#000000">c</span><span style="color:#687687">(</span><span style="color:#000000">usage</span><span style="color:#687687">[</span><span style="color:#000000">i</span>,<span style="color:#009999">2</span><span style="color:#687687">]</span>,<span style="color:#000000">usage</span><span style="color:#687687">[</span><span style="color:#000000">i</span>,<span style="color:#009999">3</span><span style="color:#687687">]</span> <span style="color:#687687">*</span> <span style="color:#000000">buffer</span><span style="color:#687687">)</span>
  <span style="color:#000000">prod.sol</span> <span style="color:#687687"><-</span> <span style="color:#000000">lp</span><span style="color:#687687">(</span><span style="color:#dd1144">"min"</span>, <span style="color:#000000">obj.fun.att</span>, <span style="color:#000000">constr.att</span>, <span style="color:#000000">constr.dir</span>, <span style="color:#000000">rhs</span>, <span style="color:#000000">compute.sens</span> <span style="color:#687687">=</span> <span style="color:#990073">TRUE</span>, <span style="color:#000000">all.int</span> <span style="color:#687687">=</span> <span style="color:#990073">TRUE</span><span style="color:#687687">)</span>
  <span style="color:#000000">result.att</span><span style="color:#687687">[</span><span style="color:#000000">i</span>,<span style="color:#009999">5</span><span style="color:#687687">]</span> <span style="color:#687687"><-</span> <span style="color:#000000">prod.sol</span><span style="color:#687687">$</span><span style="color:#000000">objval</span>
  <span style="color:#000000">result.att</span><span style="color:#687687">[</span><span style="color:#000000">i</span>, <span style="color:#009999">1</span><span style="color:#687687">:</span><span style="color:#009999">4</span><span style="color:#687687">]</span> <span style="color:#687687"><-</span> <span style="color:#000000">prod.sol</span><span style="color:#687687">$</span><span style="color:#000000">solution</span>
<span style="color:#687687">}</span>
<span style="color:#990000"><strong>for</strong></span> <span style="color:#687687">(</span><span style="color:#000000">i</span> <span style="color:#990000"><strong>in</strong></span> <span style="color:#009999">1</span><span style="color:#687687">:</span><span style="color:#009999">20</span><span style="color:#687687">)</span> <span style="color:#687687">{</span>
  <span style="color:#000000">rhs</span> <span style="color:#687687"><-</span> <span style="color:#000000">c</span><span style="color:#687687">(</span><span style="color:#000000">usage</span><span style="color:#687687">[</span><span style="color:#000000">i</span>,<span style="color:#009999">2</span><span style="color:#687687">]</span>,<span style="color:#000000">usage</span><span style="color:#687687">[</span><span style="color:#000000">i</span>,<span style="color:#009999">3</span><span style="color:#687687">]</span> <span style="color:#687687">*</span> <span style="color:#000000">buffer</span><span style="color:#687687">)</span>
  <span style="color:#000000">prod.sol</span> <span style="color:#687687"><-</span> <span style="color:#000000">lp</span><span style="color:#687687">(</span><span style="color:#dd1144">"min"</span>, <span style="color:#000000">obj.fun.vzw</span>, <span style="color:#000000">constr.vzw</span>, <span style="color:#000000">constr.dir</span>, <span style="color:#000000">rhs</span>, <span style="color:#000000">compute.sens</span> <span style="color:#687687">=</span> <span style="color:#990073">TRUE</span>, <span style="color:#000000">all.int</span> <span style="color:#687687">=</span> <span style="color:#990073">TRUE</span><span style="color:#687687">)</span>
  <span style="color:#000000">result.vzw</span><span style="color:#687687">[</span><span style="color:#000000">i</span>,<span style="color:#009999">7</span><span style="color:#687687">]</span> <span style="color:#687687"><-</span> <span style="color:#000000">prod.sol</span><span style="color:#687687">$</span><span style="color:#000000">objval</span>
  <span style="color:#000000">result.vzw</span><span style="color:#687687">[</span><span style="color:#000000">i</span>, <span style="color:#009999">1</span><span style="color:#687687">:</span><span style="color:#009999">6</span><span style="color:#687687">]</span> <span style="color:#687687"><-</span> <span style="color:#000000">prod.sol</span><span style="color:#687687">$</span><span style="color:#000000">solution</span>
<span style="color:#687687">}</span></code></span>
<span style="color:#333333"><code><span style="color:#000000">result.att</span></code></span>
##    3GB 4GB 5GB 6GB   Cost
## A   97   0  36   1   8980
## B  253   0  96   1  23440
## C 1510   0   0   0  90600
## D 2260   0   0   0 135600
## E  150   0 600   0  60000
## F  410   0   0   0  24600
## G 2930   0   0   0 175800
## H    0   0 687 404  98795
## I 3350   0   0   0 201000
## J 7513   0 246   1 471790
## K 4920   0   0   0 295200
## L  248   0 681   1  72865
## M  960   0   0   0  57600
## N 1282   0 510   0 120270
## O 1730   0   0   0 103800
## P  860   0 794   0 119090
## Q    0   0 757  32  67545
## R  297   0   0   0  17820
## S  753   0 321   1  72565
## T  796   0   0   0  47760
<span style="color:#333333"><code><span style="color:#000000">result.vzw</span></code></span>
##    1GB  2GB 4GB 6GB 8GB 10GB   Cost
## A    1   57  66   0   1    9   9086
## B    1  231  66   0   1   51  23726
## C    1 1318  65   0   1  125  96276
## D    1 2109  65   1   0   84 139626
## E    0  504   3   0   0  243  54750
## F   85  325   0   0   0    0  24260
## G    0 2899   3   0   0   28 176950
## H    1  581  65   1   0  443  83846
## I 2665  685   0   0   0    0 190340
## J    1 6678  65   0   1 1015 506876
## K 3090 1830   0   0   0    0 282840
## L    1  593  65   0   1  270  67276
## M  390  570   0   0   0    0  56040
## N    0 1439   2   0   0  351 121580
## O    0 1513   1   0   0  216 112450
## P    0 1199  66   0   1  388 115450
## Q    1  440  64   0   0  284  59336
## R   59  238   0   0   0    0  17584
## S    0  860   0   0   0  215  73100
## T    1  707  64   0   0   24  49356
<span style="color:#333333"><code><span style="color:#000000">comp</span> <span style="color:#687687"><-</span> <span style="color:#000000">as.data.frame</span><span style="color:#687687">(</span><span style="color:#000000">cbind</span><span style="color:#687687">(</span><span style="color:#000000">result.att</span><span style="color:#687687">[</span>,<span style="color:#009999">5</span><span style="color:#687687">]</span>, <span style="color:#000000">result.vzw</span><span style="color:#687687">[</span>,<span style="color:#009999">7</span><span style="color:#687687">]</span><span style="color:#687687">)</span><span style="color:#687687">)</span>
<span style="color:#000000">comp</span><span style="color:#687687">$</span><span style="color:#000000">lowest</span> <span style="color:#687687"><-</span> <span style="color:#000000">ifelse</span><span style="color:#687687">(</span><span style="color:#000000">comp</span><span style="color:#687687">[</span>,<span style="color:#009999">1</span><span style="color:#687687">]</span> <span style="color:#687687">></span> <span style="color:#000000">comp</span><span style="color:#687687">[</span>,<span style="color:#009999">2</span><span style="color:#687687">]</span>, <span style="color:#dd1144">"vzw"</span>, <span style="color:#dd1144">"att"</span><span style="color:#687687">)</span>
<span style="color:#000000">colnames</span><span style="color:#687687">(</span><span style="color:#000000">comp</span><span style="color:#687687">)</span> <span style="color:#687687"><-</span> <span style="color:#000000">c</span><span style="color:#687687">(</span><span style="color:#dd1144">"ATT"</span>, <span style="color:#dd1144">"VZW"</span>, <span style="color:#dd1144">"Lowest"</span><span style="color:#687687">)</span>
<span style="color:#000000">comp</span></code></span>
##      ATT    VZW Lowest
## A   8980   9086    att
## B  23440  23726    att
## C  90600  96276    att
## D 135600 139626    att
## E  60000  54750    vzw
## F  24600  24260    vzw
## G 175800 176950    att
## H  98795  83846    vzw
## I 201000 190340    vzw
## J 471790 506876    att
## K 295200 282840    vzw
## L  72865  67276    vzw
## M  57600  56040    vzw
## N 120270 121580    att
## O 103800 112450    att

 

如果您有任何疑問,請在下面發表評論。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM