使用R中的线性编程工具来解决优化问题。
优化通常用于运营研究领域,以解决生产计划,运输网络设计,仓库位置分配和调度等问题,我们尝试最大化或最小化具有决策变量和约束数量的线性函数。
在这里,我使用了我的一个咨询项目,帮助我们的投资组合公司选择一个无线供应商,其中包含可以满足所有要求(总线数和汇总数据量)的数据计划组合,同时花费最少的金钱。
这种优化通常可以在Excel求解器中解决。但是,由于我有20个投资组合公司有2个提供商和2个方案进行分析,要在Excel中完成,我将不得不运行80次。使用R会容易得多。
加载包
加载数据
使用数据
## 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 ...
我们可以看到,我们在数据集中共有20家公司,平均线数和过去3个月的月度数据使用量。
现在,我查看摘要统计信息和公司数据的直方图。
- 行数:我们可以看到平均行数约为1800,但大多数公司的行数少于2000行。只有一家公司有超过7000条线路的异常值。
- 数据使用情况:每行的平均使用量约为2.5GB,范围从1GB到4GB。
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 134.0 779.2 1083.0 1774.0 1909.0 7760.0
## 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
我们还可以看到我们有来自AT&T和Verizon Wireless的不同级别的数据计划供我们选择。此分析的目标是选择具有最低总成本的不同数据计划组合的运营商,同时满足线路数量和总数据要求
创建目标函数,约束和约束方向对象
我们有两个目标函数,因为我们希望找到AT&T和Verizon成本最低的计划组合。并且有两个限制因素。一个是总行数和总(合并)数据量。对于总行数,我希望数据计划具有完全相同的数量,因此我使用“=”。但是对于总的数据量,只要有比所消耗的数据更多的数据,就可以接受。所以我用“> =”表示数据量约束。
创建空矩阵以存储结果
创建循环以针对每个提供商为每个投资组合公司运行解算器
AT&T优化结果
## 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优化结果
## 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
|
请发表评论