Home
Explore Uedu
Student Console
Register as Member/Login
(2) In future presentations of the research findings, in addition to the course project website and public presentations, your real name and personal information will not appear in this research report. If you are interested in the research results, we can provide you with an executive summary after the study is completed.
問卷中心
Teacher Console
Course Setup
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

0

Local AI

--

CISOSE26 本地 AI UG26
政治大學 AQI 19 29°C

AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

程序設計

一座工廠每天賺或賠,往往在設計圖完成那一刻就決定了

從質能平衡與自由度分析出發,看程序設計如何在守恆律的約束下,把「可行設計」推向總年成本最低的「最佳設計」。

一座工廠每天賺或賠,往往在設計圖完成那一刻就決定了

想像你接到一個任務:把每天 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),最佳點會移動。程序設計的真正功夫,往往不在解優化問題,而在於——你有沒有把對的東西放進目標函數裡。這正是化學工程師從「會算」走向「會判斷」的分水嶺。

AI 共讀助教正在陪你讀:一座工廠每天賺或賠,往往在設計圖完成那一刻就決定了
嗨!我是這篇文章的共讀助教,只根據〈一座工廠每天賺或賠,往往在設計圖完成那一刻就決定了〉的內容回答。可以問我「解釋某段」「舉個例子」「出題考我」,或反白文中段落後點下方「解釋選取段落」。