一座工廠每天賺或賠,往往在設計圖完成那一刻就決定了
從質能平衡與自由度分析出發,看程序設計如何在守恆律的約束下,把「可行設計」推向總年成本最低的「最佳設計」。
一座工廠每天賺或賠,往往在設計圖完成那一刻就決定了
想像你接到一個任務:把每天 1000 公斤的乙醇水溶液,從濃度 10% 提純到 95%。你可以選擇蒸餾、薄膜分離、或吸附;你可以把塔做高一點、回流比加大一點,也可以多串幾級。每一種選擇都「可行」,都能把乙醇分出來——但它們的設備成本、蒸汽用量、冷卻水量、佔地面積天差地遠。等工廠蓋好、管線焊死、設備就定位之後,這些差異會以「每年數百萬元的營運成本」具體地呈現出來,而且幾乎改不動了。
這就是程序設計(Process Design)的核心張力:在資訊最不完整、選項最多的階段,做出影響整個生命週期的決策。化學工程師不是在「組合設備」,而是在一個龐大的選項空間裡,搜尋一個同時滿足物理定律、安全規範、環境法規,並且經濟上最划算的設計點。本文要談的,就是這個搜尋過程怎麼進行,以及它如何自然地通向「最適化(Optimization)」。

程序設計的三個層次:從方塊圖到管線圖
程序設計通常分成由粗到細的三個層次,這個分層不是行政上的形式,而是反映了「不確定性逐步收斂」的工程邏輯。
概念設計(Conceptual Design) 是最上層。這個階段只關心物質與能量「從哪來、到哪去、變成什麼」,用的工具是方塊流程圖(Block Flow Diagram)。一個經典的思維框架是 Douglas 的「洋蔥模型(Onion Model)」:最內層是反應器(決定了所有下游要處理什麼),往外一層是分離與回收系統,再往外是熱整合的換熱網路,最外層才是公用設施(蒸汽、冷卻水、電)。設計要由內而外推,因為反應器的選擇會決定外圈所有設備的負荷。
基本設計(Basic / Flowsheet Design) 進到程序流程圖(Process Flow Diagram, PFD)。這裡要把每一股物流的流量、溫度、壓力、組成都算出來,也就是建立完整的質能平衡(Material and Energy Balance)。主要設備的尺寸、操作條件在此確定。
詳細設計(Detailed Design) 產出管線儀器圖(Piping and Instrumentation Diagram, P&ID),標出每一根管、每一個閥、每一個感測器。這是施工的依據。
值得注意的是:愈往上層,決策的「槓桿」愈大。在概念設計階段換一個反應路線,可能讓總成本減半;在詳細設計階段優化一根管徑,省的是零頭。所以好的工程師會把最多的思考留給最上層。
一切的地基:質量與能量平衡
任何程序設計都建立在守恆律上。對一個穩態(steady-state)程序的某個控制體積,總質量平衡是:
$$ \sum_{\text{in}} \dot{m}_i - \sum_{\text{out}} \dot{m}_j = 0 $$
若涉及化學反應,對個別物種 $A$ 要寫成莫耳形式並加入生成/消耗項:
$$ \sum_{\text{in}} \dot{n}_{A,\text{in}} - \sum_{\text{out}} \dot{n}_{A,\text{out}} + \dot{G}_A = 0 $$
其中 $\dot{G}_A$ 是反應造成的 $A$ 之淨生成莫耳速率(消耗時為負)。對反應 $\nu_A A + \nu_B B \rightarrow \nu_C C$,各物種的生成速率透過反應程度(extent of reaction)$\dot{\xi}$ 連結:
$$ \dot{G}_A = \nu_A \dot{\xi}, \qquad \dot{n}_{A,\text{out}} = \dot{n}_{A,\text{in}} + \nu_A \dot{\xi} $$
(化學計量係數 $\nu$ 對反應物取負、生成物取正。)
能量平衡則建立在熱力學第一定律上。對穩態、忽略動能與位能變化的開放系統:
$$ \dot{Q} - \dot{W}_s = \sum_{\text{out}} \dot{n}_j \hat{H}_j - \sum_{\text{in}} \dot{n}_i \hat{H}_i $$
其中 $\dot{Q}$ 是加入系統的熱、$\dot{W}_s$ 是系統對外做的軸功、$\hat{H}$ 是莫耳焓。對有反應的系統,焓的基準要涵蓋反應熱,常用做法是把反應熱 $\Delta H_{\text{rxn}}$ 顯式拉出來:
$$ \dot{Q} - \dot{W}_s = \Delta H_{\text{rxn}} \cdot \dot{\xi} + \sum_{\text{out}} \dot{n}_j \int_{T_{\text{ref}}}^{T_{\text{out}}} C_{p,j}\, dT - \sum_{\text{in}} \dot{n}_i \int_{T_{\text{ref}}}^{T_{\text{in}}} C_{p,i}\, dT $$
這組方程式看似抽象,但它就是流程模擬軟體(如 Aspen Plus、DWSIM)在背後反覆求解的核心。每加一個設備、每接一條物流,模擬器就多一組這樣的方程式,整個流程圖最終變成一個大型非線性方程組。
自由度分析:設計到底有幾個「旋鈕」可以轉
新手最常見的困惑是:「這個程序我到底能自由決定什麼?」答案由自由度分析(Degrees of Freedom, DOF)給出:
$$ \text{DOF} = N_{\text{variables}} - N_{\text{equations}} $$
當 DOF $= 0$,系統剛好被指定,有唯一解(這是模擬問題)。當 DOF $> 0$,代表你還有自由變數可以選擇——這些就是「設計變數(design variables)」,也正是最適化要去調整的旋鈕。當 DOF $< 0$,代表你過度指定(over-specified),方程式互相矛盾,無解。
舉例:一個簡單的閃蒸槽(flash drum),進料的流量、組成、溫度、壓力都已知,要決定出口兩相的狀態。物種平衡、能量平衡、相平衡($y_i = K_i x_i$)、歸一化條件加起來,通常剩下 2 個自由度——對應到操作壓力與溫度(或熱負荷)這兩個你可以「轉」的旋鈕。理解 DOF 不只是會算數,而是讓你清楚知道:哪些東西是物理定律幫你決定的,哪些是你身為設計者要負責決定的。後者,正是優化問題的決策變數。
從「可行設計」到「最佳設計」:程序設計如何通向最適化
到這裡,程序設計與最適化(Optimization)的關係就浮現了。質能平衡保證你的設計「可行」(守恆、收斂、組分對得上),但可行的設計往往有無窮多個。要從中挑出「最好」的那一個,就要把問題寫成標準的最適化形式:
$$ \begin{aligned} \min_{\mathbf{x}} \quad & f(\mathbf{x}) \\ \text{s.t.} \quad & g_i(\mathbf{x}) \le 0, \quad i = 1, \dots, m \\ & h_j(\mathbf{x}) = 0, \quad j = 1, \dots, p \end{aligned} $$
對應到程序設計: - 決策變數 $\mathbf{x}$:那些 DOF 留下的自由旋鈕——回流比、操作壓力、塔板數、換熱面積、反應器體積等。 - 目標函數 $f(\mathbf{x})$:通常是總年成本(Total Annualized Cost, TAC),把一次性的設備投資攤提成年費,再加上每年的操作成本。 - 等式約束 $h_j$:就是前面那些質能平衡方程——它們不是用來「最小化」的,而是必須嚴格成立的物理事實。 - 不等式約束 $g_i$:純度規格(產品 $\ge 95\%$)、安全上限(壓力 $\le$ 設計壓力)、環境排放限值等。
總年成本常寫成:
$$ \text{TAC} = \frac{C_{\text{capital}}}{n} + C_{\text{operating}} $$
其中 $C_{\text{capital}}$ 是設備總投資、$n$ 是攤提年限、$C_{\text{operating}}$ 是年操作成本(蒸汽、冷卻水、電、原料)。這個結構揭示了程序設計裡無所不在的權衡(trade-off):把蒸餾塔做高(capital 增加)通常能降低所需回流比(operating 的蒸汽費下降);反之亦然。最佳設計就落在這兩者總和的最低點。
這也是為什麼「優化工」這門課裡,程序設計與程序最適化幾乎是同一枚硬幣的兩面:設計給出方程與約束,最適化在這些約束內找極值。
看一個例子
我們用一個極簡的蒸餾塔成本權衡來感受這件事。設要分離一股進料,已知分離難度下,回流比 $R$ 與所需理論板數 $N$ 之間有近似反比關係(回流比愈大、所需板數愈少)。為了能手算,我們用一組示意性的函數:
設備成本(與板數成正比,板數又隨回流比下降):
$$ C_{\text{capital}} = a \cdot N(R) = a \cdot \frac{k}{R - R_{\min}} $$
操作成本(蒸汽量與塔頂蒸氣流量成正比,後者隨回流比線性上升):
$$ C_{\text{operating}} = b \cdot V = b \cdot D(R + 1) $$
把攤提後的總年成本對回流比 $R$ 寫出(令 $A = a k / n$、忽略常數項,並設 $D$ 為定值):
$$ \text{TAC}(R) = \frac{A}{R - R_{\min}} + b D (R + 1) $$
要找最低成本,對 $R$ 微分並令其為零:
$$ \frac{d\,\text{TAC}}{dR} = -\frac{A}{(R - R_{\min})^2} + bD = 0 $$
解出最佳回流比:
$$ (R - R_{\min})^2 = \frac{A}{bD} \quad\Rightarrow\quad R^{\ast} = R_{\min} + \sqrt{\frac{A}{bD}} $$
代入數字感受一下:假設 $R_{\min} = 1.2$、$A = 4.8 \times 10^5$(元·無因次)、$b D = 3.0 \times 10^4$(元/年),則
$$ R^{\ast} = 1.2 + \sqrt{\frac{4.8 \times 10^5}{3.0 \times 10^4}} = 1.2 + \sqrt{16} = 1.2 + 4 = 5.2 $$
這告訴我們:在這個假設下,最划算的操作回流比約是最小回流比的 4.3 倍($5.2 / 1.2 \approx 4.3$)。實務上常見的經驗法則「最佳回流比約為 $1.05 \sim 1.3$ 倍最小回流比」是因為真實的成本函數形狀不同於此示意式,但方法完全一樣:寫出成本對決策變數的函數,微分找極值。當變數從 1 個變成 50 個、約束從手算的 1 條變成模擬器裡的上千條時,手算微分換成數值最適化演算法(如 SQP、內點法),但物理直覺不變。
重點回顧
- 程序設計分概念、基本、詳細三層;愈上層的決策槓桿愈大,最值得投入思考,這也是 Douglas 洋蔥模型「由反應器向外推」的理由。
- 質量平衡(含反應程度 $\dot{\xi}$)與能量平衡(第一定律加反應熱)是所有設計的地基,也是流程模擬器背後反覆求解的非線性方程組。
- 自由度分析 $\text{DOF} = N_{\text{var}} - N_{\text{eq}}$ 告訴你哪些是物理定律決定的、哪些是你要負責決定的設計變數;DOF $> 0$ 留下的自由變數正是最適化的決策變數。
- 程序設計提供約束(質能平衡為等式約束、規格與安全為不等式約束),最適化在其中找總年成本(TAC)的最低點,兩者是同一問題的兩面。
- 程序設計的本質是權衡:設備投資與操作成本此消彼長,最佳設計落在兩者總和的極小值處。
深入探討(研究所視角)
上面的手算範例假裝決策變數只有一個、約束可以代換消去。真實的程序最適化遠比這複雜,研究所層級主要在處理三類難題。
一、混合整數非線性規劃(MINLP)與超結構(Superstructure)。 真正的程序設計不只調整連續變數(流量、溫度),還要決定「結構」——要不要裝這台換熱器?要串幾級反應器?這些是 0/1 的離散決策。Grossmann 等人提出的超結構法,會先建一個「包含所有候選結構」的網路,引入二元變數 $y_k \in \{0,1\}$ 表示某設備存不存在,再交給 MINLP 求解器同時優化結構與操作條件:
$$ \min_{\mathbf{x},\, \mathbf{y}} \ f(\mathbf{x}, \mathbf{y}) \quad \text{s.t.}\ h(\mathbf{x},\mathbf{y}) = 0,\ g(\mathbf{x},\mathbf{y}) \le 0,\ \mathbf{y} \in \{0,1\}^q $$
這類問題非凸(non-convex),存在多個局部最佳解,全域最佳化(global optimization)至今仍是活躍的研究領域。
二、熱整合與夾點分析(Pinch Analysis)。 洋蔥模型最外圈的能量整合,本身就是一個優化問題。透過構建組合曲線(composite curves),可以在不解任何 MINLP 的情況下,先用熱力學手法找出「夾點(pinch point)」,並據此推出整廠最少需要外加多少熱($Q_{H,\min}$)與冷($Q_{C,\min}$)。這個下界給了後續換熱網路合成(HEN synthesis)一個明確的標竿,是「先用熱力學洞察縮小搜尋空間,再做數值優化」的典範。
三、不確定性與設計的彈性(Flexibility)。 前面所有方程都假設參數已知,但真實工廠的進料組成會波動、觸媒會衰退、市場價格會變。研究所層級會把問題升級為隨機規劃(stochastic programming)或彈性分析:設計不只要在標稱點(nominal point)最佳,還要能在一整個不確定區間內維持可行與接近最佳。這牽涉到 min–max 形式的雙層優化,計算上極具挑戰。
最後一個值得反思的觀念是:「最佳設計」永遠相對於你寫下的目標函數與約束。如果你只把 TAC 放進 $f(\mathbf{x})$,得到的就是最省錢的設計;但若把碳排、水耗、安全裕度也納入(多目標最適化,Pareto front),最佳點會移動。程序設計的真正功夫,往往不在解優化問題,而在於——你有沒有把對的東西放進目標函數裡。這正是化學工程師從「會算」走向「會判斷」的分水嶺。