<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>動態規劃 on 孤筝の温暖小家</title><link>https://www.guzhengsvt.cn/zh-tw/tags/%E5%8B%95%E6%85%8B%E8%A6%8F%E5%8A%83/</link><description>Recent content from 孤筝の温暖小家</description><generator>Hugo</generator><language>zh-tw</language><managingEditor>lvbowen040427@163.com (孤筝)</managingEditor><webMaster>lvbowen040427@163.com (孤筝)</webMaster><copyright>本部落格所有文章除特別聲明外，均採用 BY-NC-SA 授權協議。轉載請註明出處！</copyright><lastBuildDate>Sat, 10 May 2025 18:48:10 +0800</lastBuildDate><atom:link href="https://www.guzhengsvt.cn/zh-tw/tags/%E5%8B%95%E6%85%8B%E8%A6%8F%E5%8A%83/index.xml" rel="self" type="application/rss+xml"/><item><title>最佳化理論與方法</title><link>https://www.guzhengsvt.cn/zh-tw/post/math/%E6%9C%80%E4%BC%98%E5%8C%96%E7%90%86%E8%AE%BA%E4%B8%8E%E6%96%B9%E6%B3%95/</link><pubDate>Sat, 10 May 2025 18:48:10 +0800</pubDate><author>lvbowen040427@163.com (孤筝)</author><guid>https://www.guzhengsvt.cn/zh-tw/post/math/%E6%9C%80%E4%BC%98%E5%8C%96%E7%90%86%E8%AE%BA%E4%B8%8E%E6%96%B9%E6%B3%95/</guid><description>
<![CDATA[<h1>最佳化理論與方法</h1><p>作者：孤筝（lvbowen040427@163.com）</p>
        
          <h2 id="最佳化問題">
<a class="header-anchor" href="#%e6%9c%80%e4%bd%b3%e5%8c%96%e5%95%8f%e9%a1%8c"></a>
最佳化問題
</h2><h3 id="數學模型">
<a class="header-anchor" href="#%e6%95%b8%e5%ad%b8%e6%a8%a1%e5%9e%8b"></a>
數學模型
</h3>$$
\min f(\vec{x}),\vec{x}\in \vec{R^{n}}
$$$$
\text{s.t.}{
\begin{cases}
c_i(x)=0,& i \in E = {1,2,\cdots,l}\\
c_i(\vec{x})\ge 0,& i \in I = {l+1,\cdots,l+m}\\
\end{cases}}
$$<p>
其中，</p>
<ul>
<li>$\vec{x}=(x_1,x_2,\cdots,x_n)^T$ 稱為決策變數</li>
<li>$f(\vec{x})$ 稱為目標函數</li>
<li>s.t.（subject to，受限於），稱為約束條件</li>
</ul>
<h3 id="分類">
<a class="header-anchor" href="#%e5%88%86%e9%a1%9e"></a>
分類
</h3><ol>
<li>時間
<ol>
<li>靜態問題</li>
<li>動態問題</li>
</ol>
</li>
<li>約束條件
<ol>
<li>有約束問題</li>
<li>無約束問題</li>
</ol>
</li>
<li>目標函數與約束條件是否為線性函數
<ol>
<li>線性規劃</li>
<li>非線性規劃</li>
</ol>
</li>
<li>目標函數與約束條件是否為凸函數
<ol>
<li>凸最佳化問題</li>
<li>非凸最佳化問題</li>
</ol>
</li>
</ol>
<h3 id="二次型矩陣">
<a class="header-anchor" href="#%e4%ba%8c%e6%ac%a1%e5%9e%8b%e7%9f%a9%e9%99%a3"></a>
二次型矩陣
</h3><p>二次型：
</p>
$$
\begin{align}
f
&=x_1^2-3x_3^2-4x_1x_2+x_2x_3\\
&=(x_1,x_2,x_3)
\begin{bmatrix}
1 & -2 & 0\\
-2 & 0 & \frac{1}{2}\\
0 & \frac{1}{2} & -3\\
\end{bmatrix}
\begin{bmatrix}
x_1\\
x_2\\
x_3\\
\end{bmatrix}\\
&= \vec{X^T} A \vec{X}\\
\end{align}
$$<p>二次型矩陣：
</p>
$$
\begin{bmatrix}
1 & -2 & 0\\
-2 & 0 & \frac{1}{2}\\
0 & \frac{1}{2} & -3\\
\end{bmatrix}
$$<h3 id="hessen-矩陣">
<a class="header-anchor" href="#hessen-%e7%9f%a9%e9%99%a3"></a>
Hessen 矩陣
</h3><p>以二元二次函數為例：
</p>
$$
\nabla^2 f(x_1,x_2)=
\begin{bmatrix}
\frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1 \partial x_2}\\
\frac{\partial^2 f}{\partial x_2 \partial x_1} & \frac{\partial^2 f}{\partial x_2^2}\\
\end{bmatrix}
$$<h3 id="可行解">
<a class="header-anchor" href="#%e5%8f%af%e8%a1%8c%e8%a7%a3"></a>
可行解
</h3><ul>
<li>可行解：滿足所有約束條件的解。</li>
<li>可行集（容許集、可行域）：所有可行解所構成的集合。</li>
<li>最佳化問題：在可行集中找出使目標函數取得最大值或最小值的點。</li>
<li>駐點：$\nabla f(x_0)=0$，稱 $x_0$ 為駐點。</li>
<li>鞍點：$x_0$ 為駐點，但不是極值點時，稱為鞍點。</li>
</ul>
<h3 id="凸集">
<a class="header-anchor" href="#%e5%87%b8%e9%9b%86"></a>
凸集
</h3><h4 id="定義">
<a class="header-anchor" href="#%e5%ae%9a%e7%be%a9"></a>
定義
</h4><p>在平面中，若一個圖形內部任意兩點的連線仍位於圖形內部，則該圖形稱為凸集。</p>
<h4 id="性質">
<a class="header-anchor" href="#%e6%80%a7%e8%b3%aa"></a>
性質
</h4><ol>
<li>凸集的交集仍為凸集</li>
<li>凸集按比例縮放後仍為凸集</li>
<li>凸集的和集（不是並集）是凸集
<ul>
<li>設 $D_1,D_2$ 是凸集，則 $D_1+D_2=\{z|z=x+y,x \in D_1,y \in D_2\}$ 是凸集。</li>
</ul>
</li>
<li>凸集的線性組合是凸集。</li>
</ol>
<h4 id="常見凸集">
<a class="header-anchor" href="#%e5%b8%b8%e8%a6%8b%e5%87%b8%e9%9b%86"></a>
常見凸集
</h4><ol>
<li>空集</li>
<li>整個歐氏空間 $\vec{R^n}$</li>
<li>超平面 $H=\{x \in \vec{R^n} | a_1x_1+a_2x_2+\cdots +a_nx_n=b\}$</li>
<li>半空間 $H^+=\{x \in \vec{R^n} | a_1x_1+a_2x_2+\cdots +a_nx_n \ge b\}$</li>
</ol>
<h4 id="凸組合">
<a class="header-anchor" href="#%e5%87%b8%e7%b5%84%e5%90%88"></a>
凸組合
</h4><p>設 $x_i \in \vec{R^n},i=1,2,\cdots ,k$，實數 $\lambda_i \ge 0,\sum^k_{i=1}\lambda_i=1$，則 $x=\sum^k_{i=1}\lambda_ix_i$ 稱為 $x_1,x_2,\cdots , x_k$ 的凸組合。<br>
凸集中任意有限個點的凸組合仍然在該凸集中。</p>
<h4 id="極點">
<a class="header-anchor" href="#%e6%a5%b5%e9%bb%9e"></a>
極點
</h4><p>設 $D$ 為凸集，$x \in D$，若 $D$ 中不存在兩個相異的點 $y,z$ 及某個實數 $\alpha \in (0,1)$ 使得 $x=\alpha y+(1-\alpha)z$，則稱 $x$ 為 $D$ 的極點。</p>
<p>人話：以平面五邊形為例，極點就是它的頂點；以半圓形為例，極點則是直徑的兩個端點以及半圓弧上的尖端。</p>
<h3 id="凸函數">
<a class="header-anchor" href="#%e5%87%b8%e5%87%bd%e6%95%b8"></a>
凸函數
</h3><h4 id="定義-1">
<a class="header-anchor" href="#%e5%ae%9a%e7%be%a9-1"></a>
定義
</h4><p>定義在某個凸集上的函數 $f(x)$，若對凸集內任意兩點 $x_1,x_2$ 都有
</p>
$$
f(\alpha x_1+(1-\alpha)x_2) \le \alpha f(x_1)+(1-\alpha)f(x_2)
$$<p>
則稱該函數為凸函數。<br>
若不等號為嚴格小於號 $\lt$，則稱為嚴格凸函數。</p>
<h4 id="判斷">
<a class="header-anchor" href="#%e5%88%a4%e6%96%b7"></a>
判斷
</h4><ol>
<li>多元函數的 Hessen 矩陣為半正定矩陣——&gt;多元函數是凸函數。</li>
<li>多元函數的 Hessen 矩陣為正定矩陣——&gt;多元函數是嚴格凸函數。</li>
<li>多元線性（一次）函數是 $\vec{R^n}$ 上的凸函數。</li>
</ol>
<h3 id="凸最佳化問題">
<a class="header-anchor" href="#%e5%87%b8%e6%9c%80%e4%bd%b3%e5%8c%96%e5%95%8f%e9%a1%8c"></a>
凸最佳化問題
</h3><h4 id="定義-2">
<a class="header-anchor" href="#%e5%ae%9a%e7%be%a9-2"></a>
定義
</h4><p>目標函數與約束函數都是凸函數的最佳化問題。</p>
<ul>
<li>凸最佳化的可行集是凸集</li>
<li>任何區域最優解都是全域最優解</li>
<li>若目標函數是嚴格凸函數，則區域最優解存在且唯一</li>
</ul>
<h2 id="線性規劃">
<a class="header-anchor" href="#%e7%b7%9a%e6%80%a7%e8%a6%8f%e5%8a%83"></a>
線性規劃
</h2><h3 id="形式">
<a class="header-anchor" href="#%e5%bd%a2%e5%bc%8f"></a>
形式
</h3><h4 id="非標準形式">
<a class="header-anchor" href="#%e9%9d%9e%e6%a8%99%e6%ba%96%e5%bd%a2%e5%bc%8f"></a>
非標準形式
</h4><ul>
<li>目標函數：$\max z=\sum^{n}_{j=1}c_jx_j=CX$</li>
<li>係數矩陣：

$$
A=
\begin{bmatrix}
a_{11} & \cdots & a_{1n}\\
\vdots & \ddots & \vdots\\
a_{m1} & \cdots & a_{mn}\\
\end{bmatrix}
=(P_1,P_2,\cdots,P_n)
$$</li>
<li>資源向量：$b=\begin{bmatrix} b_1\\ \vdots \\ b_m\\ \end{bmatrix}$</li>
<li>決策變數向量：$X=(x_1,x_2,\cdots , x_n)^T$</li>
<li>約束條件：

$$
\begin{cases}
\sum^{n}_{j=1}a_{ij}x_j=b_i,&i=1,2,\cdots,m\\
x_j \ge 0,& j=1,2,\cdots,n\\
\end{cases}
$$

$$
\begin{cases}
AX=b\\
X \ge \vec{0}
\end{cases}
$$</li>
</ul>
<h4 id="標準形式">
<a class="header-anchor" href="#%e6%a8%99%e6%ba%96%e5%bd%a2%e5%bc%8f"></a>
標準形式
</h4><ol>
<li>將極大問題轉為極小化</li>
<li>鬆弛變數：對於 $\le$ 約束，引入鬆弛變數使等號成立</li>
<li>剩餘變數：對於 $\ge$ 約束，引入剩餘變數使等號成立</li>
<li>自由變數：在實際問題中可自由取值的變數，記作 $x_i=x'-x''$</li>
</ol>
$$
\begin{cases}
\min f(x_1,x_2,\cdots , x_n)\\
\text{s.t.} 
\begin{cases}
h_j(x_1,x_2,\cdots,x_n)=0&(j=1,2,\cdots)\\
x_j \ge 0\\
\end{cases}
\end{cases}
$$<h3 id="基矩陣">
<a class="header-anchor" href="#%e5%9f%ba%e7%9f%a9%e9%99%a3"></a>
基矩陣
</h3><ul>
<li>基（基矩陣）：係數矩陣中的最大非奇異子矩陣。
<ul>
<li>若係數矩陣 $A$ 為 $m \times n$ 矩陣，且 $rank(A)=m$，則基矩陣為任意 $m \times m$ 的非奇異子矩陣。</li>
</ul>
</li>
<li>基變數：基中所有列向量所對應的未知數。</li>
<li>非基變數：不屬於基變數的未知數。</li>
<li>基本解：令所有非基變數為零所得到的解。</li>
<li>非退化基本解：基本解中非零分量個數等於約束方程數。否則稱為退化基本解。</li>
<li>基本可行解：滿足 $\text{s.t.}$ 非負條件的基本解。</li>
<li>最優基可行解：所有基本可行解中，使函數值達到最優的基可行解。</li>
</ul>
<h3 id="線性規劃解的性質">
<a class="header-anchor" href="#%e7%b7%9a%e6%80%a7%e8%a6%8f%e5%8a%83%e8%a7%a3%e7%9a%84%e6%80%a7%e8%b3%aa"></a>
線性規劃解的性質
</h3><ol>
<li>線性規劃的可行集是凸集</li>
<li>若有最優解，必定在可行集頂點取得</li>
</ol>
<h3 id="單純形法">
<a class="header-anchor" href="#%e5%96%ae%e7%b4%94%e5%bd%a2%e6%b3%95"></a>
單純形法
</h3><h4 id="判別數檢驗數">
<a class="header-anchor" href="#%e5%88%a4%e5%88%a5%e6%95%b8%e6%aa%a2%e9%a9%97%e6%95%b8"></a>
判別數（檢驗數）
</h4><p>每一個未知數都對應一個判別數
</p>
$$
\sigma_j=C^T_J \vec{P_j}-c_j=\sum^{m}_{i=1}c_ia_{ij}-c_j
$$<ul>
<li>$C^T$ 為目標函數係數</li>
<li>$C^T_J$ 為基變數在目標函數中的係數</li>
<li>$P_j$ 表示 $A$ 矩陣第 $j$ 列</li>
<li>$c_i$ 表示第 $i$ 個<strong>基變數</strong>在目標函數中的係數</li>
<li>$c_j$ 表示目標函數中第 $j$ 個<strong>變數</strong>的係數，與 $c_i$ 無關。</li>
</ul>
<p><strong>當所有判別數都小於等於零時，基可行解即為最優解。</strong></p>
<p>一般來說，基變數的判別數為零。</p>
<h4 id="基變換">
<a class="header-anchor" href="#%e5%9f%ba%e8%ae%8a%e6%8f%9b"></a>
基變換
</h4><h5 id="選取基矩陣">
<a class="header-anchor" href="#%e9%81%b8%e5%8f%96%e5%9f%ba%e7%9f%a9%e9%99%a3"></a>
選取基矩陣
</h5><p>優先選取單位矩陣作為基矩陣，先計算初始基可行解與判別數。</p>
<h5 id="畫出初始單純形表">
<a class="header-anchor" href="#%e7%95%ab%e5%87%ba%e5%88%9d%e5%a7%8b%e5%96%ae%e7%b4%94%e5%bd%a2%e8%a1%a8"></a>
畫出初始單純形表
</h5><table>
  <thead>
      <tr>
          <th></th>
          <th>$P_1$</th>
          <th>$P_2$</th>
          <th>$\cdots$</th>
          <th>$P_n$</th>
          <th>$\vec{b}$</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>係數矩陣</td>
          <td>$a_{11}$</td>
          <td>$a_{12}$</td>
          <td>$\cdots$</td>
          <td>$a_{1n}$</td>
          <td>$b_1$</td>
      </tr>
      <tr>
          <td></td>
          <td>$a_{21}$</td>
          <td>$a_{22}$</td>
          <td>$\cdots$</td>
          <td>$a_{2n}$</td>
          <td>$b_2$</td>
      </tr>
      <tr>
          <td></td>
          <td>$\vdots$</td>
          <td>$\vdots$</td>
          <td>$\ddots$</td>
          <td>$\vdots$</td>
          <td>$\vdots$</td>
      </tr>
      <tr>
          <td></td>
          <td>$a_{m1}$</td>
          <td>$a_{m2}$</td>
          <td>$\cdots$</td>
          <td>$a_{mn}$</td>
          <td>$b_m$</td>
      </tr>
      <tr>
          <td>判別數</td>
          <td>$\sigma_1$</td>
          <td>$\sigma_2$</td>
          <td>$\cdots$</td>
          <td>$\sigma_n$</td>
          <td>最優值</td>
      </tr>
  </tbody>
</table>
<h5 id="選取合適的進基列">
<a class="header-anchor" href="#%e9%81%b8%e5%8f%96%e5%90%88%e9%81%a9%e7%9a%84%e9%80%b2%e5%9f%ba%e5%88%97"></a>
選取合適的進基列
</h5><p>若判別數大於零，則該列有分量大於零，選取該列作為進基列 $P_j$，對應變數為進基變數 $x_j$。</p>
<h5 id="選取主元">
<a class="header-anchor" href="#%e9%81%b8%e5%8f%96%e4%b8%bb%e5%85%83"></a>
選取主元
</h5><p>在該進基列中挑選大於零的元素 $a_{ij}$，將 $b$ 中對應元素除以所選元素，取比值最小者，該元素 $a_{ij}$ 即為主元。<br>
<em><strong>若判別數大於零，而該列元素全都小於零，則此線性規劃無最優解。</strong></em></p>
<h5 id="初等列運算">
<a class="header-anchor" href="#%e5%88%9d%e7%ad%89%e5%88%97%e9%81%8b%e7%ae%97"></a>
初等列運算
</h5><p>將主元化為 1，並把該列其他係數元素化為 0。<br>
<strong>幾何意義：更換可行域頂點。</strong></p>
<h5 id="出基列">
<a class="header-anchor" href="#%e5%87%ba%e5%9f%ba%e5%88%97"></a>
出基列
</h5><p>根據係數矩陣選取新的基矩陣。與原來的基矩陣相比，被取代的那一列為出基列，對應變數即為出基變數。<br>
接著重新計算判別數，列出新的單純形表。</p>
<h5 id="新一輪基變換">
<a class="header-anchor" href="#%e6%96%b0%e4%b8%80%e8%bc%aa%e5%9f%ba%e8%ae%8a%e6%8f%9b"></a>
新一輪基變換
</h5><p>當判別數行發生變化後，如果又出現新的正判別數，就再選取該列作為新的進基列，重新選主元並做初等變換。</p>
<h5 id="結果">
<a class="header-anchor" href="#%e7%b5%90%e6%9e%9c"></a>
結果
</h5><p>當所有判別數都小於等於零時，$\vec{b}$ 中的值就是基變數的值，非基變數取 0，合起來構成最優解，再代回目標函數即可求得最小值。</p>
<h4 id="單純形法適用條件">
<a class="header-anchor" href="#%e5%96%ae%e7%b4%94%e5%bd%a2%e6%b3%95%e9%81%a9%e7%94%a8%e6%a2%9d%e4%bb%b6"></a>
單純形法適用條件
</h4><ol>
<li>非齊次項元素非負。</li>
<li>存在可行解。</li>
<li>鬆弛變數與非基變數的值乘積和為零。</li>
<li>問題是凸可行域上的線性規劃問題。</li>
<li>可行解集合有限。</li>
</ol>
<h3 id="人工變數法">
<a class="header-anchor" href="#%e4%ba%ba%e5%b7%a5%e8%ae%8a%e6%95%b8%e6%b3%95"></a>
人工變數法
</h3><p>當係數矩陣中不含單位矩陣時，通常採用引入人工變數的方式，人為構造出一個單位矩陣。</p>
<p>設線性規劃問題的約束條件為 $\sum^{n}_{j=1}a_{ij}=b_i(i=1,2,\cdots ,m)$，分別給每個約束條件加入人工變數 $x_{n+1},x_{n+2},\cdots,x_{n+m}$，以其作為基變數（構成單位矩陣），其餘變數置零，即得到一組可行解 $x^{(0)}=(0,0,\cdots,0,b_1,b_2,\cdots,b_m)^T$。<br>
在此基礎上再透過基變換求解，最終得到不含非零人工變數的最優解。</p>
<p>若當所有判別數小於零時，仍有非零人工變數存在，則說明原問題無可行解。</p>
<h3 id="大-m-法">
<a class="header-anchor" href="#%e5%a4%a7-m-%e6%b3%95"></a>
大 M 法
</h3><p>對於最小化問題，在約束條件中加入人工變數後，令人工變數在目標函數中的係數為 $M$（$M \in \vec{R^+}$）。<br>
為了求得最小目標函數值，需要不斷進行基變換，使人工變數取值為 0。對於最大化問題，則取 $M \in \vec{R^-}$。</p>
<h3 id="退化情形">
<a class="header-anchor" href="#%e9%80%80%e5%8c%96%e6%83%85%e5%bd%a2"></a>
退化情形
</h3><p>若單純形法陷入循環，而該問題又確有最優解，可透過以下方法避免循環。</p>
<h4 id="攝動法">
<a class="header-anchor" href="#%e6%94%9d%e5%8b%95%e6%b3%95"></a>
攝動法
</h4><h4 id="修正單純形法">
<a class="header-anchor" href="#%e4%bf%ae%e6%ad%a3%e5%96%ae%e7%b4%94%e5%bd%a2%e6%b3%95"></a>
修正單純形法
</h4><h2 id="線性規劃對偶理論">
<a class="header-anchor" href="#%e7%b7%9a%e6%80%a7%e8%a6%8f%e5%8a%83%e5%b0%8d%e5%81%b6%e7%90%86%e8%ab%96"></a>
線性規劃對偶理論
</h2><h3 id="線性規劃對偶問題形式">
<a class="header-anchor" href="#%e7%b7%9a%e6%80%a7%e8%a6%8f%e5%8a%83%e5%b0%8d%e5%81%b6%e5%95%8f%e9%a1%8c%e5%bd%a2%e5%bc%8f"></a>
線性規劃對偶問題形式
</h3><h4 id="對稱形式">
<a class="header-anchor" href="#%e5%b0%8d%e7%a8%b1%e5%bd%a2%e5%bc%8f"></a>
對稱形式
</h4><p>原問題
</p>
$$
\begin{cases}
\min f=\vec{c^T}\vec{x}\\
\text{s.t.}
\begin{cases}
\vec{A}\vec{x} \ge \vec{b}\\
\vec{x} \ge \vec{0}
\end{cases}
\end{cases}
$$<p>對偶問題
</p>
$$
\begin{cases}
\max w=\vec{b^T}\vec{y}\\
\text{s.t.}
\begin{cases}
\vec{A^T}\vec{y} \le \vec{c}\\
\vec{y} \ge \vec{0}\\
\end{cases}
\end{cases}
$$<p>對應關係：</p>
<ul>
<li>（1）原問題中的約束條件個數等於其對偶問題中的變數個數；</li>
<li>（2）原問題目標函數的係數，就是對偶問題中約束條件右端項；</li>
<li>（3）原問題目標函數為最小化時，對偶問題目標函數為最大化；</li>
<li>（4）原問題的約束條件為「≥」，則對偶問題的約束條件為「≤」。</li>
</ul>
<h4 id="非對稱形式">
<a class="header-anchor" href="#%e9%9d%9e%e5%b0%8d%e7%a8%b1%e5%bd%a2%e5%bc%8f"></a>
非對稱形式
</h4><p>原問題
</p>
$$
\begin{cases}
\min f=\vec{c^T}\vec{x}\\
\text{s.t.}
\begin{cases}
\vec{A}\vec{x} = \vec{b}\\
\vec{x} \ge \vec{0}
\end{cases}
\end{cases}
$$<p>對偶問題
</p>
$$
\begin{cases}
\max w=\vec{b^T}\vec{y}\\
\text{s.t.}
\begin{cases}
\vec{A^T}\vec{y} \le \vec{c}\\
\vec{y} \text{無約束}
\end{cases}
\end{cases}
$$<h4 id="一般情形">
<a class="header-anchor" href="#%e4%b8%80%e8%88%ac%e6%83%85%e5%bd%a2"></a>
一般情形
</h4><p>若原問題同時含有 $\le,\ge,=$ 等多種約束，則先引入鬆弛變數與剩餘變數，將約束統一化為 $=$，再用非對稱形式建立對偶問題。</p>
<p><img src="https://cdn.jsdelivr.net/gh/GuZhengSVT/Hugo-media//photo/%E5%8E%9F%E9%97%AE%E9%A2%98%E4%B8%8E%E5%AF%B9%E5%81%B6%E9%97%AE%E9%A2%98%E5%AF%B9%E5%BA%94%E5%85%B3%E7%B3%BB%E8%A1%A81.png" alt="原问题与对偶问题对应关系表1.png">
<img src="https://cdn.jsdelivr.net/gh/GuZhengSVT/Hugo-media//photo/%E5%8E%9F%E9%97%AE%E9%A2%98%E4%B8%8E%E5%AF%B9%E5%81%B6%E9%97%AE%E9%A2%98%E5%AF%B9%E5%BA%94%E5%85%B3%E7%B3%BB%E8%A1%A82.png" alt="原问题与对偶问题对应关系表2.png"></p>
<h3 id="對偶單純形法">
<a class="header-anchor" href="#%e5%b0%8d%e5%81%b6%e5%96%ae%e7%b4%94%e5%bd%a2%e6%b3%95"></a>
對偶單純形法
</h3><ul>
<li>單純形法：先保證 $\vec{b} \ge 0$，再根據檢驗數 $\le 0$ 迭代。</li>
<li>對偶單純形法：先保證檢驗數 $\le 0$，再依據 $\vec{b} \ge 0$ 迭代。</li>
</ul>
<h4 id="確保檢驗數">
<a class="header-anchor" href="#%e7%a2%ba%e4%bf%9d%e6%aa%a2%e9%a9%97%e6%95%b8"></a>
確保檢驗數 $\le 0$
</h4><h4 id="選取出基">
<a class="header-anchor" href="#%e9%81%b8%e5%8f%96%e5%87%ba%e5%9f%ba"></a>
選取出基
</h4><p>若存在 $b_i \lt 0$，則取其中最小的 $\min b_i$ 所在列作為出基列，對應變數為出基變數。</p>
<h4 id="選取進基">
<a class="header-anchor" href="#%e9%81%b8%e5%8f%96%e9%80%b2%e5%9f%ba"></a>
選取進基
</h4><p>將檢驗數除以出基列中為負值的係數（$a_{ij} \lt 0$），取結果最小值所對應的列作為進基列，對應變數為進基變數。</p>
<h4 id="行變換">
<a class="header-anchor" href="#%e8%a1%8c%e8%ae%8a%e6%8f%9b"></a>
行變換
</h4><p>透過行變換，將進基列變成可匹配基矩陣（單位矩陣）的形式，此時 $\vec{b}$ 也會隨之改變。<br>
重新計算檢驗數，並確保其不大於零。</p>
<h4 id="新一輪基變換-1">
<a class="header-anchor" href="#%e6%96%b0%e4%b8%80%e8%bc%aa%e5%9f%ba%e8%ae%8a%e6%8f%9b-1"></a>
新一輪基變換
</h4><p>若仍有負值 $b_i \lt 0$，則取最小的 $\min b_i$ 進行下一輪基變換。</p>
<h4 id="結果-1">
<a class="header-anchor" href="#%e7%b5%90%e6%9e%9c-1"></a>
結果
</h4><p>當所有 $b_i \ge 0$ 時，$\vec{b}$ 構成基變數的最優解部分，而非基變數部分取 0。<br>
將其代回目標函數即可得到最優值（最大或最小）。</p>
<h2 id="靈敏度分析">
<a class="header-anchor" href="#%e9%9d%88%e6%95%8f%e5%ba%a6%e5%88%86%e6%9e%90"></a>
靈敏度分析
</h2>
        
        <hr><p>本文2025-05-10首發於<a href='https://www.guzhengsvt.cn/'>孤筝の温暖小家</a>，最後修改於2025-05-10</p><p>本部落格所有文章除特別聲明外，均採用 BY-NC-SA 授權協議。轉載請註明出處！</p>]]></description><category>Math</category></item></channel></rss>