統計與計量‎ > ‎應用總覽‎ > ‎

商品銷售最佳獲利計算

場景

  • 某商店同時販售兩種商品 (P1, P2):
    • 銷售 P1 獲利 300 元,銷售 P2 獲利 400 元。
    • 搬運 P1 需要 1 小時,搬運 P2 需要 2 小時,但受合約限制,搬運至多只能服務 10 小時。
    • 銷售 P1 至少會帶來有 3 個新客戶詢問,銷售 P2 至少會帶來有 5 個新客戶詢問,每天至少會有 18 個以上之新客戶詢問。
    • 促銷活動中,銷售 P1 贈送 2 元贈品,銷售 P2 贈送 3 元贈品,但無論如何總是贈送價值 12 元贈品。

問題

  1. 求算商店每日最多可獲利之金額。
  2. 求算商店獲利最大之商品販售數量組合。

解答輸出

          商品1  商品2        
Maximize    300    400        
限制1         1      2  <=  10
限制2         3      5  >=  18
限制3         2      3   =  12
Kind        Std    Std        
Type        Int    Int        
Upper       Inf    Inf        
Lower         0      0        

            獲利=1800
            商品(1) 銷售數= 6
            商品(2) 銷售數= 0

GNU-R

library(lpSolveAPI)

# 作業數
lprec <- make.lp(0, 2)

# 求最大值
lp.control(lprec, sense='max')

# 目標係數
set.objfn(lprec, c(300, 400))

# 資源限制條件
add.constraint(lprec, c(1, 2), "<=", 10)
add.constraint(lprec, c(3, 5), ">=", 18)
add.constraint(lprec, c(2, 3), "=", 12)

# 作業組合為正整數
set.bounds(lprec, lower = c(0, 0), columns = c(1, 2))
set.type(lprec, c(1, 2), "integer")

# 線性規劃表格-列/行-變數
dimnames(lprec) <- list(c("限制1", "限制2", "限制3"), 
                        c("商品1", "商品2")
                        )

# 解算
solve(lprec)

# 輸出線性規劃表格
lprec  

# 解答
Ans.Optimization <- get.objective(lprec)
Ans.Varibles <- get.variables(lprec)

# 輸出最大值
print(sprintf("獲利=%d", Ans.Optimization))

# 輸出最大值下作業組合
for (i in seq(1:2)) {
  print(sprintf("商品(%d) 銷售數=%2d", i, Ans.Varibles[i]))
}
ċ
LP-03.R
(1k)
李智,
2013年6月16日 上午5:44