108 年 國立臺灣大學工業工程學研究所碩士班產業與服務系統工程組《作業研究》
第 1 題20 分
Consider the following two linear programming (LP) models.
LP1:
max
subject to
LP2:
max
subject to
Assume that the basic variables of the optimal solution for both LPs are and . The optimal solution of LP1 is , and the shadow prices of constraints 1 and 2 in LP1 are the same and equal to .
a. (10 points) Find the optimal solution and the objective value to LP2.
b. (5 points) Formulate the dual problem for LP2.
c. (5 points) Find the optimal solution and the objective value to the dual problem of LP2.
登入後即可作答並保存紀錄。
核心觀念
本題考查線性規劃中的:
- 變數尺度轉換:若令 ,可將 LP2 轉換成 LP1。
- 影子價格與對偶變數:最大化問題的限制式為「」、變數非負時,其對偶為最小化問題,對偶變數皆非負。
- 強對偶定理:原問題與對偶問題的最佳目標值相等。
- 最佳基底不變性:題目已知 為兩個模型最佳解的基本變數,因此可直接利用尺度轉換求解。
解題方法
令
則 LP2 的目標式為
LP2 的限制式則變為
且 。
因此,以 表示的 LP2,與 LP1 完全相同。已知 LP1 的最佳解為
由 ,可得 LP2 的最佳解。
a. LP2 的最佳解與目標值
由
得到
LP2 的最佳目標值為
所以:
b. LP2 的對偶問題
LP2 為
subject to
對兩個限制式分別設對偶變數 。依照最大化問題的對偶形式:
- 原問題限制式為 ,故 ;
- 原問題目標係數形成對偶限制式右側;
- 原問題限制式右側 形成對偶目標式係數。
因此,LP2 的對偶問題為
subject to
第 2 題20 分
Consider a supply chain that consists of two manufacturers (say, M1 and M2) and two retailers (R1 and R2). These two manufacturers sell one product to the retailers, and M1 and M2 can provide 2 and 3 units of the product, respectively. R1 and R2 will purchase 1 and 4 units from both manufacturers, and the shipping cost per unit from M1 to R1 is 3, from M1 to R2 is 1, from M2 to R1 is 2, and from M2 to R2 is 3.
a. (10 points) Formulate the problem as an assignment problem to minimize the total shipping cost.
b. (10 points) Solve the problem by using the Hungarian method.
登入後即可作答並保存紀錄。
本題考查指派問題(Assignment Problem)的建立與匈牙利演算法(Hungarian Method)的應用。
核心觀念:
- 指派問題的結構:一對一的指派,最小化總成本(或最大化總收益)。
- 指派問題的建立:如何將供應鏈中的生產、需求與運輸成本轉換為指派問題的成本矩陣。
- 匈牙利演算法:求解指派問題的標準演算法,包含降低成本矩陣、尋找零元素、涵蓋零元素、調整矩陣等步驟。
解題步驟:
a. 建立指派問題
首先,我們需要釐清問題中的「指派」是什麼。在這個問題中,我們有兩家製造商(M1, M2)和兩家零售商(R1, R2)。
M1 的產能是 2 個單位,M2 的產能是 3 個單位。總產能為 個單位。
R1 的需求是 1 個單位,R2 的需求是 4 個單位。總需求為 個單位。
總產能等於總需求,因此是一個平衡的指派問題。
我們需要將 M1 和 M2 的產出指派給 R1 和 R2,以最小化總運輸成本。
但是,M1 和 M2 的產能不同。M1 只能提供 2 個單位,M2 則可以提供 3 個單位。
R1 需要 1 個單位,R2 需要 4 個單位。
這是一個運輸問題(Transportation Problem)的變形,但題目要求我們將其「公式化為指派問題」。
標準的指派問題是將 個工人指派給 個任務,每個工人只能做一個任務,每個任務只能由一個工人做。
為了將此問題轉換為指派問題,我們需要讓「來源」和「目的」的數量相等,並且每個來源只能「發出」一次,每個目的只能「接收」一次。
由於 M1 的產能是 2,M2 的產能是 3,為了讓每個「單位產出」可以被獨立指派,我們需要將 M1 的產能分解成 2 個「來源點」,將 M2 的產能分解成 3 個「來源點」。
同樣地,R1 的需求是 1,R2 的需求是 4。為了讓每個「單位需求」可以被獨立接收,我們需要將 R1 的需求分解成 1 個「目的點」,將 R2 的需求分解成 4 個「目的點」。
然而,這會導致來源點和目的點數量不匹配。
來源點數量:M1_unit1, M1_unit2, M2_unit1, M2_unit2, M2_unit3 (共 5 個)
目的點數量:R1_unit1, R2_unit1, R2_unit2, R2_unit3, R2_unit4 (共 5 個)
這樣就可以建立一個 5x5 的成本矩陣。
成本矩陣的每一行代表一個「產出單位」,每一列代表一個「接收單位」。
成本定義:
- M1 供應 R1 的單位成本:3
- M1 供應 R2 的單位成本:1
- M2 供應 R1 的單位成本:2
- M2 供應 R2 的單位成本:3
建構 5x5 成本矩陣 C:
列(接收單位):R1 (1 unit), R2 (4 units)
行(產出單位):M1 (2 units), M2 (3 units)
為了讓矩陣是方陣,我們將 M1 的 2 個單位視為 M1a 和 M1b。將 M2 的 3 個單位視為 M2a, M2b, M2c。
我們將 R1 的 1 個單位視為 R1a。將 R2 的 4 個單位視為 R2a, R2b, R2c, R2d。
成本矩陣 C 的大小為 5x5。
行標示:M1a, M1b, M2a, M2b, M2c
列標示:R1a, R2a, R2b, R2c, R2d
成本 為從第 個產出單位運送到第 個接收單位的成本。
-
M1a 供應 R1a 的成本:3
-
M1a 供應 R2 的任何單位(R2a, R2b, R2c, R2d)的成本:1
-
M1b 供應 R1a 的成本:3
-
M1b 供應 R2 的任何單位(R2a, R2b, R2c, R2d)的成本:1
-
M2a 供應 R1a 的成本:2
-
M2a 供應 R2 的任何單位(R2a, R2b, R2c, R2d)的成本:3
-
M2b 供應 R1a 的成本:2
-
M2b 供應 R2 的任何單位(R2a, R2b, R2c, R2d)的成本:3
-
M2c 供應 R1a 的成本:2
-
M2c 供應 R2 的任何單位(R2a, R2b, R2c, R2d)的成本:3
成本矩陣 C (5x5):
| R1a | R2a | R2b | R2c | R2d | |
|---|---|---|---|---|---|
| M1a | 3 | 1 | 1 | 1 | 1 |
| M1b | 3 | 1 | 1 | 1 | 1 |
| M2a | 2 | 3 | 3 | 3 | 3 |
| M2b | 2 | 3 | 3 | 3 | 3 |
| M2c | 2 | 3 | 3 | 3 | 3 |
這個矩陣代表了將 M1 的兩個單位和 M2 的三個單位,分別指派給 R1 的一個單位和 R2 的四個單位。
指派問題的目標是選擇 5 個單元(每個行和每個列恰好一個)使得總成本最小。
b. 使用匈牙利演算法求解
步驟 1:降低成本矩陣
從每一行減去該行的最小值。
- M1a 行最小值是 1。
- M1b 行最小值是 1。
- M2a 行最小值是 2。
- M2b 行最小值是 2。
- M2c 行最小值是 2。
矩陣 C' (減行最小值後):
| R1a | R2a | R2b | R2c | R2d | |
|---|---|---|---|---|---|
| M1a | 2 | 0 | 0 | 0 | 0 |
| M1b | 2 | 0 | 0 | 0 | 0 |
| M2a | 0 | 1 | 1 | 1 | 1 |
| M2b | 0 | 1 | 1 | 1 | 1 |
| M2c | 0 | 1 | 1 | 1 | 1 |
從每一列減去該列的最小值。
- R1a 列最小值是 0。
- R2a 列最小值是 0。
- R2b 列最小值是 0。
- R2c 列最小值是 0。
- R2d 列最小值是 0。
由於所有列最小值都是 0,矩陣 C'' (減列最小值後) 與 C' 相同。
矩陣 C'':
| R1a | R2a | R2b | R2c | R2d | |
|---|---|---|---|---|---|
| M1a | 2 | 0 | 0 | 0 | 0 |
| M1b | 2 | 0 | 0 | 0 | 0 |
| M2a | 0 | 1 | 1 | 1 | 1 |
| M2b | 0 | 1 | 1 | 1 | 1 |
| M2c | 0 | 1 | 1 | 1 | 1 |
步驟 2:尋找最佳指派(涵蓋所有零元素)
嘗試用最少直線數目涵蓋所有的零元素。
在 C'' 中,我們有大量的零。
-
M1a 行有 4 個零。
-
M1b 行有 4 個零。
-
M2a 行有 1 個零。
-
M2b 行有 1 個零。
-
M2c 行有 1 個零。
-
R1a 列有 2 個零。
-
R2a 列有 2 個零。
-
R2b 列有 2 個零。
-
R2c 列有 2 個零。
-
R2d 列有 2 個零。
觀察矩陣:
M1a 的零在 R2a, R2b, R2c, R2d。
M1b 的零在 R2a, R2b, R2c, R2d。
M2a 的零在 R1a。
M2b 的零在 R1a。
M2c 的零在 R1a。
我們可以選擇涵蓋策略。
例如:
- 涵蓋 M1a 行。
- 涵蓋 M1b 行。
- 涵蓋 R1a 列。
這樣就涵蓋了所有的零。
直線數目 = 3 (M1a 行, M1b 行, R1a 列)。
矩陣大小是 5x5。直線數目 3 < 5。因此,這不是一個最佳指派。
我們需要調整矩陣。
找出未被直線涵蓋的最小元素。
未被涵蓋的元素是:
C''[M2a, R2a]=1, C''[M2a, R2b]=1, C''[M2a, R2c]=1, C''[M2a, R2d]=1
C''[M2b, R2a]=1, C''[M2b, R2b]=1, C''[M2b, R2c]=1, C''[M2b, R2d]=1
C''[M2c, R2a]=1, C''[M2c, R2b]=1, C''[M2c, R2c]=1, C''[M2c, R2d]=1
最小的未涵蓋元素是 1。
步驟 3:調整矩陣
從未被直線涵蓋的所有元素中減去 1。
將被兩條直線(即直線交點)涵蓋的所有元素加上 1。
在我們上面的涵蓋方式中,交點是 (M1a, R1a) 和 (M1b, R1a)。
但是,M1a 和 M1b 行被涵蓋,R1a 列也被涵蓋。
交點是 M1a 行與 R1a 列、M1b 行與 R1a 列。
矩陣 C'':
| R1a | R2a | R2b | R2c | R2d | |
|---|---|---|---|---|---|
| M1a | 2 | 0 | 0 | 0 | 0 |
| M1b | 2 | 0 | 0 | 0 | 0 |
| M2a | 0 | 1 | 1 | 1 | 1 |
| M2b | 0 | 1 | 1 | 1 | 1 |
| M2c | 0 | 1 | 1 | 1 | 1 |
直線:M1a 行, M1b 行, R1a 列。
未被涵蓋的最小元素是 1。
調整矩陣 C''':
- 未被涵蓋的元素減 1:
M2a, R2a, R2b, R2c, R2d -> 1-1=0
M2b, R2a, R2b, R2c, R2d -> 1-1=0
M2c, R2a, R2b, R2c, R2d -> 1-1=0 - 被兩條直線涵蓋的元素加 1:
(M1a, R1a) -> 2+1=3
(M1b, R1a) -> 2+1=3 - 被一條直線涵蓋的元素不變:
M1a, R2a, R2b, R2c, R2d -> 0
M1b, R2a, R2b, R2c, R2d -> 0
R1a, M2a, M2b, M2c -> 0
矩陣 C''':
| R1a | R2a | R2b | R2c | R2d | |
|---|---|---|---|---|---|
| M1a | 3 | 0 | 0 | 0 | 0 |
| M1b | 3 | 0 | 0 | 0 | 0 |
| M2a | 0 | 0 | 0 | 0 | 0 |
| M2b | 0 | 0 | 0 | 0 | 0 |
| M2c | 0 | 0 | 0 | 0 | 0 |
步驟 4:重新尋找最佳指派
再次嘗試用最少直線數目涵蓋所有零元素。
現在,M2a, M2b, M2c 行都有 5 個零。R2a, R2b, R2c, R2d 列都有 5 個零。
M1a 行有 4 個零。M1b 行有 4 個零。
我們可以這樣涵蓋:
- 涵蓋 M2a 行。
- 涵蓋 M2b 行。
- 涵蓋 M2c 行。
- 涵蓋 R1a 列。
- 涵蓋 R2a 列。
- 涵蓋 R2b 列。
- 涵蓋 R2c 列。
- 涵蓋 R2d 列。
這樣涵蓋了所有零。直線數目是 8,這顯然不對。
應該是:
- 涵蓋 M2a 行。
- 涵蓋 M2b 行。
- 涵蓋 M2c 行。
- 涵蓋 M1a 行。
- 涵蓋 M1b 行。
這樣涵蓋了所有 5 行。直線數目是 5。
這意味著我們可能找到了最佳指派。
步驟 5:進行指派
當直線數目等於矩陣大小 (5x5) 時,我們可以在零元素處進行指派。
首先,尋找只有一個零的行或列。
-
R1a 列,在 M2a, M2b, M2c 行都有零。
-
R2a 列,在 M1a, M1b, M2a, M2b, M2c 行都有零。
-
... (其他 R2 列同理)
-
M1a 行,有零在 R2a, R2b, R2c, R2d。
-
M1b 行,有零在 R2a, R2b, R2c, R2d。
-
M2a 行,有零在 R1a, R2a, R2b, R2c, R2d。
-
M2b 行,有零在 R1a, R2a, R2b, R2c, R2d。
-
M2c 行,有零在 R1a, R2a, R2b, R2c, R2d。
這表示有很多可能的指派。我們需要選擇一個。
由於 M1a 和 M1b 的成本矩陣(在 C''' 中)是相同的 (0,0,0,0),而 M2a, M2b, M2c 的成本矩陣(在 C''' 中)也是相同的 (0,0,0,0)。
這表示 M1a 和 M1b 的指派是可交換的,M2a, M2b, M2c 的指派也是可交換的。
讓我們嘗試一個指派:
-
指派 M2a -> R1a (成本 0 在 C''')。
由於 R1a 已被指派,M2a 已被指派,劃掉 R1a 列和 M2a 行。
剩餘矩陣:R2a R2b R2c R2d M1a 0 0 0 0 M1b 0 0 0 0 M2b 0 0 0 0 M2c 0 0 0 0 -
在剩餘的 4x4 矩陣中,M1a, M1b, M2b, M2c 行都有 4 個零。R2a, R2b, R2c, R2d 列也有 4 個零。
我們需要指派 M1a, M1b, M2b, M2c 到 R2a, R2b, R2c, R2d。
由於 M1a 和 M1b 的零都在 R2 列,M2b 和 M2c 的零也在 R2 列。
這表示 M1a, M1b, M2b, M2c 必須指派給 R2 的四個單位。
由於 M1a, M1b 來自 M1,M2b, M2c 來自 M2,這意味著 M1 的兩個單位指派給 R2,M2 的兩個單位指派給 R2。讓我們指派 M1a -> R2a (成本 0)。
劃掉 M1a 行和 R2a 列。
剩餘矩陣:R2b R2c R2d M1b 0 0 0 M2b 0 0 0 M2c 0 0 0 -
在剩餘的 3x3 矩陣中,M1b 行有 3 個零,M2b, M2c 行有 3 個零。R2b, R2c, R2d 列有 3 個零。
指派 M1b -> R2b (成本 0)。
劃掉 M1b 行和 R2b 列。
剩餘矩陣:R2c R2d M2b 0 0 M2c 0 0 -
在剩餘的 2x2 矩陣中,M2b 行有 2 個零,M2c 行有 2 個零。R2c, R2d 列有 2 個零。
指派 M2b -> R2c (成本 0)。
第 3 題10 分
Consider the following statements about any pure integer programming (IP) problem (in maximization form) and its LP relaxation. Answer True or False for each statement.
a. The number of the feasible solutions is finite for the pure IP problem with a bounded feasible region.
b. IP problems are generally easier to solve than their LP relaxation.
c. The feasible region for the LP relaxation is a subset of the feasible region for the IP problem.
d. If an optimal solution for the LP relaxation is an integer solution, the optimal value of the objective function will be the same for both problems.
e. If a noninteger optimal solution is found for the LP relaxation, the nearest integer solution (rounding each variable either up or down) is optimal to the IP problem.
登入後即可作答並保存紀錄。
本題主要考查整數規劃(Integer Programming, IP)及其線性規劃鬆弛(LP Relaxation)的相關性質。
核心觀念:
- 整數規劃的可行域與 LP 鬆弛的可行域的關係。
- 整數規劃與 LP 鬆弛的求解難易度比較。
- 整數規劃解的性質(例如,最佳解的特性)。
解題步驟:
a. 關於純整數規劃(Pure IP)在有界可行區域下的可行解數量。
一個純整數規劃問題是指所有變數都必須是整數的規劃問題。
「有界可行區域」(bounded feasible region)意味著存在一個下界和上界限制了所有變數的取值範圍。
如果一個變數 必須是整數,並且其取值範圍是 ,其中 和 是有限的,那麼 可以取的值的數量是有限的(例如,若 是整數且 ,則 可取 0, 1, ..., 10 共 11 個值)。
如果一個整數規劃問題有多個整數變數,且每個變數都有一個有限的整數範圍,那麼所有變數組合起來的可行解數量必然是有限的。
因此,這個陳述是正確的。
【答案】True**
b. 整數規劃問題一般比其 LP 鬆弛更容易求解。
LP 鬆弛是將整數規劃中的整數約束去除,只保留線性約束和非負約束(如果有的話)。
LP 鬆弛問題通常比原來的整數規劃問題更容易求解,因為 LP 問題有成熟且高效的演算法(如單純形法、內點法),並且其可行域是連續的(一個凸多面體)。
整數規劃問題則需要在連續的可行域中尋找整數解。即使可行區域有界,變數的整數約束使得問題的結構變得複雜,可能需要使用分支定界法(Branch and Bound)、割平面法(Cutting Plane)等更複雜的演算法,並且求解時間通常遠長於 LP 鬆弛。
因此,整數規劃問題一般比其 LP 鬆弛更難求解。這個陳述是錯誤的。
答案:False
c. LP 鬆弛的可行域是純 IP 問題可行域的一個子集。
一個純整數規劃問題 P 的形式為:
max
s.t.
for all
其 LP 鬆弛問題 P_LP 的形式為:
max
s.t.
for all (或者 如果原問題有此約束)
第 4 題20 分
IIE is a travel agency located in Taipei. IIE arranges 1-week tours for international tourists. To fulfill customer demands, IIE needs 8, 5, 8, and 9 tour buses over the next 4 weeks, respectively. The needs for tour buses can be met through renting additional buses or returning unneeded buses. Both renting and returning activities incur costs. Renting a bus in any week will incur a fixed cost of 330 per bus per week, and returning a bus in any week will incur a fixed cost of 330 per week.
The goal is to minimize overall costs while fulfilling all the needs for tour buses.
a. (10 points) Find the optimal numbers of buses renting and returning in each of the next four weeks.
b. (10 points) Find the total cost under the optimal renting and returning policy.
登入後即可作答並保存紀錄。
核心觀念
本題考的是具固定成本的租賃決策與存貨平衡。每週必須滿足旅遊巴士需求,且可以:
- 租車:當週支付固定成本 ,並對當週持有的每輛車支付租金 。
- 還車:當週只要發生還車,就支付固定成本 。
- 保留多餘車輛:不需額外操作,但每輛車每週仍支付 。
設第 週:
- :租入的車輛數
- :歸還的車輛數
- :第 週實際持有的車輛數
- :第 週需求量
存量平衡式為
並且必須滿足
需求量為
以下依一般租賃題慣例,假設第一週開始時沒有既有車輛。
解題方法與關鍵判斷
第一週:租入 8 輛
第一週需求為 輛,因此至少必須租入 輛:
第一週多租車輛沒有好處,因為額外車輛至少要支付當週租金,且後續仍可再租車。
第二週:歸還 3 輛
第二週需求為 輛。第一週持有的 輛中,最多只能歸還
因此考慮是否歸還這 輛。
若保留這 輛至第二週,需支付租金
若歸還這 輛,只需支付一次還車固定成本
因為
所以歸還 輛較有利。第二週結束後保留 輛:
第三週:租入 4 輛,持有 9 輛
第三週需求為 輛,目前有 輛,因此至少要租入 輛。
但第四週需求增加至 輛。比較以下兩種方式:
方案一:第三週只租 3 輛,第四週再租 1 輛
第四週租 1 輛需支付:
方案二:第三週多租 1 輛,提前持有 9 輛
第三週多持有 1 輛只增加一週租金:
由於第三週本來就要租車,固定租車成本 已經發生。因此第三週直接租入 輛,使持有量達到 輛較便宜:
所以
第 5 題15 分
ORMS operates an ice-cream truck and sells ice-cream in one of the following four locations: Zoo, Museum, Aquarium, and Beach. On the average, the daily revenue of the ice-cream truck is:
• 1,200 at the Museum,
• 1,300 at the Beach.
The location of the ice-cream truck is predictable, but the location may change every day. Every morning, there is a 45% probability that ORMS will move to a different location and a 55% chance that ORMS will sell ice-cream at the same location as the day before. When the ice-cream truck moves, there are equal probabilities of switching to one of the other three locations.
a. (5 points) ORMS is selling ice-cream at the Zoo this Monday. Find the probability that ORMS will sell ice-cream at the Museum this Friday.
b. (10 points) Find the long-run average revenue of the ice-cream truck per day.
登入後即可作答並保存紀錄。
核心觀念
本題考的是有限狀態馬可夫鏈(Markov chain)。
四個地點為:
- 動物園
- 博物館
- 水族館
- 海灘
每天的地點只與前一天的地點有關,因此符合馬可夫性質。
每天:
- 留在原地的機率為
- 移動到其餘任一地點的機率為
因此轉移矩陣為
解題方法
矩陣中的每一列都具有相同結構:對角線元素為 ,其餘元素為 。
此矩陣可寫成
其中 為單位矩陣, 為所有元素皆為 的矩陣。
由於四個地點完全對稱,經過 天後,從某一地點到另一個不同地點的機率為
留在原地的機率則為
其中 來自
(a)星期五位於博物館的機率
星期一在動物園,星期五之間共有四次地點轉移:
- 星期一到星期二
- 星期二到星期三
- 星期三到星期四
- 星期四到星期五
因此要求的是四步轉移機率:
因為動物園與博物館是不同地點:
計算得
所以
故星期五在博物館的機率為
亦即:
第 6 題15 分
NTU produces and sells two products, Product A and Product B.
• If NTU sells units of Product A, the price its customers are willing to pay for Product A is dollars.
• If NTU sells units of Product B, the price its customers are willing to pay for Product B is dollars.
• The production cost is: .
a. (15 points) The goal is to maximize the total profit. Find the optimal total profit and the optimal quantities and .
登入後即可作答並保存紀錄。
本題考查單變數與多變數的利潤最大化問題,其中價格函數(需求函數的逆函數)與成本函數均為給定。
核心觀念:
- 收益(Revenue)的計算:價格 × 數量。
- 利潤(Profit)的計算:收益 - 成本。
- 最大化利潤:利用微積分求導,令導數為零,找到極值點。
- 二階條件:驗證極值點為最大值點。
解題步驟:
1. 定義收益函數
產品 A 的需求函數(價格函數)為 。
產品 A 的收益函數 為:
。
產品 B 的需求函數(價格函數)為 。
產品 B 的收益函數 為:
。
2. 定義總收益函數
總收益函數 為產品 A 和產品 B 的收益函數之和:
。
3. 定義總成本函數
總生產成本函數 為:
。
4. 定義總利潤函數
總利潤函數 為總收益減去總成本:
整理後得到:
。
5. 最大化利潤函數
為了找到最大化利潤的 和 ,我們需要計算利潤函數對 和 的偏導數,並令它們等於零。
對 的偏導數:
令偏導數等於零:
。
對 的偏導數:
令偏導數等於零:
。
6. 驗證二階條件
為了確認這是一個最大值點,我們需要檢查二階偏導數。