110 高普考高考三級 工業工程 作業研究 考古題詳解

110 年・高普考・高考三級・工業工程
試題代碼 作業研究

第 一 題25 分

最短路徑問題(shortest path problem)為常用之數學模型。常用的求解算法之一,為 Dijkstra 所提出之標籤設定法(label setting algorithm)。該演算法在求解過程中,將網路(network)之所有節點區分為永久節點(permanent node)及暫時節點(temporary node)兩類,再逐一設定永久節點之距離標籤(distance label)。任一節點成為永久節點之後,其距離標籤即不再變動。

(一) 試寫出標籤設定法之步驟。(10 分)

(二) 請設計一個具有下列性質之網路:含有不多於 5 個節點及若干節線(arc)、含有長度為負值之節線、無負值長度之迴圈(negative cycle),且以標籤設定法求解其最短路徑時將產生錯誤。請以圖形呈現所設計之網路,並使用標籤設定法求解最短路徑。請列舉詳細計算過程,並明確指出所產生之錯誤。請在圖形中明確標示各節線之長度及最短路徑起點。(15 分)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

Dijkstra 標籤設定法用來求解從指定起點到各節點的最短距離。演算法將節點分為:

  • 永久節點:最短距離已確定,距離標籤不再改變。
  • 暫時節點:目前已知的距離上界,之後仍可能更新。

每次選取暫時節點中標籤最小者,將其設為永久節點,再以該節點更新相鄰暫時節點的標籤。此方法成立的前提是節線長度皆為非負值;若有負值節線,已永久化的標籤仍可能被更短路徑改善,因而造成錯誤。

(一)標籤設定法步驟

設起點為 ss,節點集合為 VV,節線 (i,j)(i,j) 的長度為 cijc_{ij}。

  1. 初始化:將起點設為永久節點,標籤設為 d(s)=0d(s)=0;其餘節點設為暫時節點,標籤設為 d(j)=∞d(j)=\infty。
  2. 更新相鄰標籤:對每一條由永久節點 ii 指向暫時節點 jj 的節線,若 d(i)+cij<d(j),d(i)+c_{ij}<d(j), 則更新 d(j)=d(i)+cijd(j)=d(i)+c_{ij},並記錄前置節點為 ii。
  3. 選取最小標籤:在所有暫時節點中,選取標籤最小者 kk,將 kk 設為永久節點。
  4. 重複更新與選取:以新永久節點 kk 更新其相鄰暫時節點的標籤,並重複步驟 3,直到所有可達節點皆成為永久節點,或指定終點成為永久節點。
  5. 回溯路徑:由終點沿記錄的前置節點回溯至起點,即得最短路徑;各節點的永久標籤即為最短距離。

(二)含負值節線時造成錯誤的網路

設計網路

以下網路有 4 個節點、3 條有向節線,起點為 SS:

 2
 S ─────→ A
 │ │
 5 │ −4 │
 ↓ ↓
 B ─────→ T
 2

節線及長度為:

cSA=2,cSB=5,cAT=−4,cBT=2.c_{SA}=2,\qquad c_{SB}=5,\qquad c_{AT}=-4,\qquad c_{BT}=2.

此網路含有負值節線 A→TA\to T,但沒有迴圈,因此不含負值長度迴圈。

依標籤設定法計算

起點 SS 為永久節點,初始標籤為 d(S)=0d(S)=0;其餘節點標籤皆為 ∞\infty。

步驟永久節點暫時節點標籤(前置節點)
初始化S(0)S(0)A=∞, B=∞, T=∞A=\infty,\ B=\infty,\ T=\infty
由 SS 更新S(0)S(0)A=2(S), B=5(S), T=∞A=2(S),\ B=5(S),\ T=\infty
選最小標籤S(0),A(2)S(0), A(2)B=5(S), T=−2(A)B=5(S),\ T=-2(A)
選最小標籤S(0),A(2),T(−2)S(0), A(2), T(-2)B=5(S)B=5(S)
選取 BBS(0),A(2),T(−2),B(5)S(0), A(2), T(-2), B(5)—

由 SS 更新後,AA 的標籤為 22,BB 的標籤為 55。選取 AA 為永久節點後,沿 A→TA\to T 更新:

d(T)=d(A)+cAT=2+(−4)=−2.d(T)=d(A)+c_{AT}=2+(-4)=-2.

因此接著選取 TT,標籤為 −2-2,並將其設為永久節點。之後 BB 成為永久節點,然而本網路沒有由 BB 通往已永久化節點 TT 以外的節線,故標籤不再變動。

錯誤所在及正確結果

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 二 題25 分

假設某港口營運公司欲分配 nn 艘船(編號 1 至 nn)靠泊 mm 個席位(編號 1 至 mm)。每個席位最多僅可分配予一艘船舶。對每艘船,公司可將之安排於任何一個席位,也可以不予分配任何席位。若船舶 ii 安排在席位 jj,則將產生 FijF_{ij} 之效益。

在這 nn 艘船當中,有 aa、bb、cc 三艘特殊船。不論安排在何席位,aa 與 bb 不可二者均獲得席位分配,但若 cc 有獲得席位分配,則無此限制。

港口營運公司欲得到總效益最大化之席位分配計畫,試寫出線性整數規劃模式以協助達成之。請注意所有的數學式均必須為線性。

(一) 寫出決策變數並明確說明其定義。(8 分)

(二) 寫出目標函數並說明其意義。(5 分)

(三) 寫出限制式並說明其意義。(12 分)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考「指派問題」的線性整數規劃建模。每艘船最多分配一個席位,每個席位最多分配給一艘船;船舶也可以不獲分配席位,因此船舶指派限制是不等式。另以二元變數表示船舶是否獲得任何席位,再用線性限制表達特殊船舶 aa 與 bb 不可同時獲得席位的條件。

解題方法

(一)決策變數

對每艘船 i=1,…,ni=1,\ldots,n 與席位 j=1,…,mj=1,\ldots,m,定義

xij={1,船舶 i 分配至席位 j,0,否則。x_{ij}= \begin{cases} 1, & \text{船舶 }i\text{ 分配至席位 }j,\\ 0, & \text{否則。} \end{cases}

另定義船舶是否獲得席位的二元變數:

yi={1,船舶 i 獲得任一席位,0,船舶 i 未獲得席位。y_i= \begin{cases} 1, & \text{船舶 }i\text{ 獲得任一席位},\\ 0, & \text{船舶 }i\text{ 未獲得席位。} \end{cases}

其中 i=1,…,ni=1,\ldots,n。以 yiy_i 表示船舶是否獲分配,可直接將「aa 與 bb 不可二者均獲得席位」寫成線性限制。

(二)目標函數

最大化所有已分配船舶所產生的總效益:

max⁡∑i=1n∑j=1mFijxij.\max \quad \sum_{i=1}^{n}\sum_{j=1}^{m} F_{ij}x_{ij}.

當船舶 ii 分配至席位 jj 時,xij=1x_{ij}=1,目標函數便計入效益 FijF_{ij};未分配時則不計入。

(三)限制式

1. 每艘船至多分配一個席位

∑j=1mxij≤1,i=1,…,n.\sum_{j=1}^{m}x_{ij}\leq 1, \qquad i=1,\ldots,n.

此限制允許船舶不獲分配席位,也避免同一艘船占用多個席位。

2. 每個席位至多分配給一艘船

∑i=1nxij≤1,j=1,…,m.\sum_{i=1}^{n}x_{ij}\leq 1, \qquad j=1,\ldots,m.

此限制確保每個席位不會同時安排多艘船。

3. 連結席位分配與是否獲分配

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 三 題25 分

考慮下列線性規劃問題:

Maximize2x1−x2+x3subject to3x1+x2+x3≤60,2x1−2x2+4x3≤20,x1≥0,x2≥0,x3≥0.\begin{aligned} \text{Maximize}\quad & 2x_1-x_2+x_3 \\ \text{subject to}\quad & 3x_1+x_2+x_3\leq 60,\\ & 2x_1-2x_2+4x_3\leq 20,\\ & x_1\geq 0,\quad x_2\geq 0,\quad x_3\geq 0. \end{aligned}

(一) 試以單形法(simplex algorithm)求解其最佳解,或明確指出其最佳解不存在。必須使用表列式(tableau)求解,並完整列出每一回合求解之列表。請明確寫出最佳解之基底變數(basic variables)以及最佳之目標函數值。(15 分)

(二) 試寫出其對偶問題(dual problem)。(不必求解)(10 分)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查單形法(simplex method)的表列運算,以及線性規劃對偶問題的建立。將每個「≤\leq」限制式加入鬆弛變數後,以原點為初始可行基底解,再依目標列的檢定數選入變數、依最小比值選出變數。當目標列不再有可改善目標值的非基底變數時,即得最佳解。

採用 Cj−ZjC_j-Z_j 列表示檢定數:最大化問題中,若所有非基底變數的 Cj−Zj≤0C_j-Z_j\leq 0,則目前基底解為最佳解。

解題方法:單形表列運算

令 s1,s2s_1,s_2 為兩個限制式的鬆弛變數,標準式為

3x1+x2+x3+s1=60,2x1−2x2+4x3+s2=20,x1,x2,x3,s1,s2≥0.\begin{aligned} 3x_1+x_2+x_3+s_1&=60,\\ 2x_1-2x_2+4x_3+s_2&=20,\\ x_1,x_2,x_3,s_1,s_2&\geq 0. \end{aligned}

初始基底為 s1,s2s_1,s_2,目標係數為 Cj=(2,−1,1,0,0)C_j=(2,-1,1,0,0)。初始表如下:

CBC_B基底變數bbx1x_1x2x_2x3x_3s1s_1s2s_2θ\theta(選 x1x_1)
CjC_j22−1-1110000
00s1s_1606033111111002020
00s2s_2202022−2-24400111010
ZjZ_j000000000000
Cj−ZjC_j-Z_j22−1-1110000

Cj−ZjC_j-Z_j 中最大的正值為 x1x_1 欄的 22,故令 x1x_1 入基。比值檢定為 60/3=2060/3=20、20/2=1020/2=10,最小非負比值為 1010,故 s2s_2 出基,樞紐元素為 22。

以第二列除以 22,再用新第二列消去第一列的 x1x_1,得到第一回合表:

CBC_B基底變數bbx1x_1x2x_2x3x_3s1s_1s2s_2
CjC_j22−1-1110000
00s1s_130300044−5-511−32-\frac32
22x1x_1101011−1-1220012\frac12
ZjZ_j202022−2-2440011
Cj−ZjC_j-Z_j0011−3-300−1-1

此時 x2x_2 的檢定數為正,故令 x2x_2 入基。比值檢定只採用 x2x_2 欄係數為正的列:第一列為 30/4=15/230/4=15/2;第二列係數為 −1-1,不列入比值檢定。因此 s1s_1 出基,樞紐元素為 44。

將第一列除以 44,再以新第一列消去第二列的 x2x_2,得到第二回合表:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 四 題25 分

某公司欲以單一機臺處理 NN 批貨件。所有貨件各不相同,編號 1 至 NN。該機臺在同一時間僅能處理一批貨件。第 ii 批貨件在機臺上所需要之處理時間長度已知為 TiT_i。機臺可依任何順序處理,但在完成貨件 ii 之後,若下一批貨為第 jj 貨件時,其間的機臺清理時間已知為 RijR_{ij};在進行清理時,機臺無法處理任何貨件。在開始工作之前,以及完成所有工作之後,均無額外機臺清理時間。

今欲將此問題模化成為旅行推銷員問題(travelling salesman problem),以求取能夠極小化完成處理所有貨件總時間之工作順序。

(一) 試寫出旅行推銷員問題之定義。(文字敘述即可,不必寫出數學式)(5 分)

(二) 說明將這個機臺處理貨件問題模化成為旅行推銷員問題之方法。至少需要說明如何定義旅行推銷員問題中之:

  1. 節點;
  2. 節線長度。

並說明求解完成後,如何將旅行推銷員問題之最佳解轉化成為原機臺處理貨件問題之最佳解。(20 分)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查將單一機臺的排序問題轉換為旅行推銷員問題(Traveling Salesman Problem, TSP)。每批貨件的處理時間 TiT_i 不受順序影響,所有貨件的總處理時間固定;工作順序所影響的是相鄰貨件之間的機臺清理時間 RijR_{ij}。因此,極小化總完成時間等同於極小化所選工作順序中的清理時間總和。

(一)旅行推銷員問題的定義

給定若干節點及任兩節點間的旅行成本,旅行推銷員須從某一節點出發,恰好拜訪每個節點一次,最後返回出發節點,並使整趟巡迴路線的總成本最小。

(二)轉換為旅行推銷員問題

解題方法

原機臺工作順序是一條由 NN 批貨件構成的排列。相鄰貨件 ii 與 jj 之間的清理時間為 RijR_{ij},所以可用節點代表貨件,並以節線長度代表相鄰貨件的清理時間。

但原問題在開始工作前及完成工作後都沒有清理時間;標準 TSP 則要求路線返回出發節點。為避免返回成本影響原問題,加入一個虛擬節點,並令其與所有貨件間的往返節線長度為零。

節點

建立 N+1N+1 個節點:

  • 每一個實際節點 ii 代表第 ii 批貨件,i=1,…,Ni=1,\ldots,N;
  • 另設一個虛擬節點 00,代表機臺工作開始前及全部工作完成後的邊界。

節線長度

對任兩個不同的實際貨件節點 ii、jj,設定由 ii 至 jj 的有向節線長度為:

cij=Rij.c_{ij}=R_{ij}.

若清理時間依先後順序而異,則須使用有向節線;不要求 Rij=RjiR_{ij}=R_{ji}。

對虛擬節點與各實際節點之間,設定:

c0i=ci0=0,i=1,…,N.c_{0i}=c_{i0}=0,\qquad i=1,\ldots,N.
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

其他考古題