R語(yǔ)言解決最優(yōu)化運(yùn)營(yíng)研究問(wèn)題
原文鏈接:http://tecdat.cn/?p=6810
?
使用R中的線性編程工具來(lái)解決優(yōu)化問(wèn)題。
優(yōu)化通常用于運(yùn)營(yíng)研究領(lǐng)域,以解決生產(chǎn)計(jì)劃,運(yùn)輸網(wǎng)絡(luò)設(shè)計(jì),倉(cāng)庫(kù)位置分配和調(diào)度等問(wèn)題,我們嘗試最大化或最小化具有決策變量和約束數(shù)量的線性函數(shù)。
在這里,我使用了我的一個(gè)咨詢項(xiàng)目,幫助我們的投資組合公司選擇一個(gè)無(wú)線供應(yīng)商,其中包含可以滿足所有要求(總線數(shù)和匯總數(shù)據(jù)量)的數(shù)據(jù)計(jì)劃組合,同時(shí)花費(fèi)最少的金錢。
這種優(yōu)化通??梢栽贓xcel求解器中解決。但是,由于我有20個(gè)投資組合公司有2個(gè)提供商和2個(gè)方案進(jìn)行分析,要在Excel中完成,我將不得不運(yùn)行80次。使用R會(huì)容易得多。
加載數(shù)據(jù)
read.csv("usage.csv")
plan<-read.csv("wireless_data_plan.csv")
使用數(shù)據(jù)
## ? 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 ...
我們可以看到,我們?cè)跀?shù)據(jù)集中共有20家公司,平均數(shù)和過(guò)去3個(gè)月的月度數(shù)據(jù)使用量。
現(xiàn)在,我查看摘要統(tǒng)計(jì)信息和公司數(shù)據(jù)的直方圖。
行數(shù):我們可以看到平均行數(shù)約為1800,但大多數(shù)公司的行數(shù)少于2000行。只有一家公司有超過(guò)7000條線路的異常值。
數(shù)據(jù)使用情況:每行的平均使用量約為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

?計(jì)劃數(shù)據(jù)
## ? 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
我們還可以看到我們有不同級(jí)別的數(shù)據(jù)計(jì)劃供我們選擇。此分析的目標(biāo)是選擇具有最低總成本的不同數(shù)據(jù)計(jì)劃組合的運(yùn)營(yíng)商,同時(shí)滿足線路數(shù)量和總數(shù)據(jù)要求
創(chuàng)建目標(biāo)函數(shù),約束和約束方向?qū)ο?/h1>
我們有兩個(gè)目標(biāo)函數(shù),因?yàn)槲覀兿M业匠杀咀畹偷挠?jì)劃組合。并且有兩個(gè)限制因素。一個(gè)是總行數(shù)和總數(shù)據(jù)量。對(duì)于總行數(shù),我希望數(shù)據(jù)計(jì)劃具有完全相同的數(shù)量,因此我使用“=”。但是對(duì)于總的數(shù)據(jù)量,只要有比所消耗的數(shù)據(jù)更多的數(shù)據(jù),就可以接受。所以我用“> =”表示數(shù)據(jù)量約束。
創(chuàng)建空矩陣以存儲(chǔ)結(jié)果
創(chuàng)建循環(huán)以針對(duì)每個(gè)提供商為每個(gè)投資組合公司運(yùn)行解算器
優(yōu)化結(jié)果
## ? ?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
正如我們?cè)谶@里看到的,大多數(shù)分配是3GB計(jì)劃,這是有道理的,因?yàn)榇蠖鄶?shù)公司使用的不到3GB。但是,如果公司使用超過(guò)3GB,由于每GB成本較低,似乎更好地使用更高的數(shù)據(jù)計(jì)劃。
優(yōu)化結(jié)果
## ? ?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
我們可以看到大多數(shù)公司都有2GB和10GB的混合計(jì)劃,以利用2GB計(jì)劃中更便宜的總速率,但從10GB計(jì)劃中降低每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
第二種情景
現(xiàn)在我們知道根據(jù)我們當(dāng)前的行數(shù)和用途選擇什么提供商和計(jì)劃。然而,公司可能希望購(gòu)買的數(shù)據(jù)超過(guò)他們現(xiàn)在消費(fèi)的數(shù)據(jù),因?yàn)閿?shù)據(jù)的使用一直在增長(zhǎng),并且預(yù)計(jì)會(huì)繼續(xù)這樣做,其次,他們希望避免潛在的超額費(fèi)用。
所以現(xiàn)在,我將建立一個(gè)新變量,作為公司過(guò)去使用的數(shù)據(jù)的百分比。
## ? ?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
?
非常感謝您閱讀本文,有任何問(wèn)題請(qǐng)?jiān)谙旅媪粞裕?/p>
?
?
?