ITPub博客

首页 > 大数据 > 数据挖掘 > R语言解决最优化运营研究问题

R语言解决最优化运营研究问题

原创 数据挖掘 作者:tecdat 时间:2020-10-22 08:42:03 0 删除 编辑

原文链接: http://tecdat.cn/?p=6810

 

使用R中的线性编程工具来解决优化问题。

优化通常用于运营研究领域,以解决生产计划,运输网络设计,仓库位置分配和调度等问题,我们尝试最大化或最小化具有决策变量和约束数量的线性函数。

在这里,我使用了我的一个咨询项目,帮助我们的投资组合公司选择一个无线供应商,其中包含可以满足所有要求(总线数和汇总数据量)的数据计划组合,同时花费最少的金钱。

这种优化通常可以在Excel求解器中解决。但是,由于我有20个投资组合公司有2个提供商和2个方案进行分析,要在Excel中完成,我将不得不运行80次。使用R会容易得多。

加载数据

read.csv("usage.csv")plan<-read.csv("wireless_data_plan.csv")

使用数据

##   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
## '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 ...

现在,我查看摘要统计信息和公司数据的直方图。

  • 行数:我们可以看到平均行数约为1800,但大多数公司的行数少于2000行。只有一家公司有超过7000条线路的异常值。
  • 数据使用情况:每行的平均使用量约为2.5GB,范围从1GB到4GB。
summary(usage$Num_Lines)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.##   134.0   779.2  1083.0  1774.0  1909.0  7760.0
summary(usage$Data_Usage,usage$Num_Lines)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.##   1.004   1.674   2.527   2.547   3.075   4.475

  计划数据

##   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
## '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

我们还可以看到我们有不同级别的数据计划供我们选择。此分析的目标是选择具有最低总成本的不同数据计划组合的运营商,同时满足线路数量和总数据要求

创建目标函数,约束和约束方向对象

我们有两个目标函数,因为我们希望找到成本最低的计划组合。并且有两个限制因素。一个是总行数和总数据量。对于总行数,我希望数据计划具有完全相同的数量,因此我使用“=”。但是对于总的数据量,只要有比所消耗的数据更多的数据,就可以接受。所以我用“> =”表示数据量约束。

创建空矩阵以存储结果

创建循环以针对每个提供商为每个投资组合公司运行解算器

优化结果

##    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成本较低,似乎更好地使用更高的数据计划。

优化结果

##    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

我们可以看到大多数公司都有2GB和10GB的混合计划,以利用2GB计划中更便宜的总速率,但从10GB计划中降低每GB速率。

比较总体成本

##      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

第二种情景

现在我们知道根据我们当前的行数和用途选择什么提供商和计划。然而,公司可能希望购买的数据超过他们现在消费的数据,因为数据的使用一直在增长,并且预计会继续这样做,其次,他们希望避免潜在的超额费用。

所以现在,我将建立一个新变量,作为公司过去使用的数据的百分比。

##    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
##    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
##      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

 

非常感谢您阅读本文,有任何问题请在下面留言!

 

 

 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69982319/viewspace-2728667/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
拓端tecdat分享最in的大数据资讯,提供“一站式”的数据分析学习和咨询体验,让我们一起做有态度的数据人。关注公众号:拓端数据部落、拓端数据。

注册时间:2020-08-21

  • 博文量
    87
  • 访问量
    62182