在前面的章節中,我們討論瞭如何使用微積分找到單變數函式
的最優解,方法是找到所有滿足
的點。但是,如果我們給定一個二元函式,例如
?更重要的是,如果我們給定了需要遵循的約束呢?單變數模型根本無法擴充套件。
考慮最佳化問題
,給定一個約束
。
首先將約束寫成等於 0 的形式 - 因此
。然後,系統的拉格朗日函式定義為
。我們需要最佳化兩個變數 -
和
。然後找到關於變數的導數
將它們設為 0。然後,最優集
是
和
的解。
待辦事項
|
編輯說明 一些作者只會正式對變數求偏導數,並將約束直接設為 0;這完全沒問題,也很容易證明這兩種方法是等效的。 這很重要,因為在使用 KKT 條件進行不等式約束的約束最佳化時(在本節中沒有涵蓋),對約束求偏導數會將問題轉換為拉格朗日等式問題,這不是同一個問題。很容易將兩者混淆。
|
示例。 在約束條件
的情況下,求解最佳化問題
.
那麼拉格朗日系統為
。分別對它們求導
將第二個導數設為零 - 我們得到
。將其代入第一個:我們得到
,即
。將其代入第二個:我們得到
。在這種情況下,最佳的最小值是集合
(這是我們想要的),而最佳的最大值是集合
.
重要的是要意識到拉格朗日並不保證特定解是極小值 - 我們需要自己測試解 - 正如在一個例子中,解實際上是極大值。
實際上,這是一個非常糟糕的例子,正如你可能已經看到的那樣 - 在這種情況下,簡單地用約束條件給出的兩個有效值來測試最佳化問題完全是合適的!當我們有多個變數和約束條件需要考慮時,它會更有用。
考慮在約束條件
的情況下,求解最佳化問題
.
拉格朗日系統幾乎與上面討論的單變數情況相同,只是我們需要考慮三個偏導數(兩個變數+一個約束):
。現在分別求偏導數
(第一個變數x)
(第二個變數y)
(約束條件)
將它們設為 0 - 最優三元組
是該方程組的解。
該問題被繪成圖形。請注意,約束條件“包圍”了最佳化問題 - 解決方案必須位於該外圓內。
例子. 求解最佳化問題
,給定約束條件
。
我們必須使用拉格朗日乘數法嗎?實際上,不是。這個問題可以透過將約束中的一個變數寫成另一個變數的函式來簡化為單變數形式:
,然後將它代入最佳化問題
並使用單變數微積分技術來解決問題!但是,當有 **三個** 變數時,你能做到嗎?不行,因為你很可能只能將問題簡化為兩個變數。
在本節中,考慮大小為 *n* 的向量 **x**:
.
定義。 (拉格朗日函式)
考慮最佳化問題
,給定一個包含 *m* 個約束的向量
.
該系統的拉格朗日函式定義為
.
然後對向量 **x** 和 **λ** 求偏導數:求
和
.
注意,該系統有 *m* + *n* 個變數,你需要對它們求 *m* + *n* 個偏導數。這可能會變得相當混亂。解決方法是使用 矩陣微積分.
這可能會讓你感到害怕,但你不必擔心。平均的微積分 3 課程只會考慮 2 到 3 個變數。
本節需要線性代數知識;因此,平均的微積分 3 課程不太可能涉及這方面內容。
在考慮拉格朗日 FONC(一階必要條件)時,正則性條件適用
記住,這是一個 **必要** 條件。這意味著
- 僅僅因為一個點滿足拉格朗日 FONC,並不意味著它是一個最小化點或最大化點。
- 不滿足拉格朗日 FONC 的點不可能是最小值或最大值。
定義。 (正則性條件)給定一個約束向量
,正則性條件表示每個約束在特定點的梯度必須線性無關。
如果該條件不滿足,拉格朗日 FONC 不適用於該點。只有一個約束時,此條件無關緊要,因為根據定義,單個向量是線性無關的。
示例。
設
定義為
。判斷這些向量在點 (0,0) 處是否正則。
解決方案。
求梯度
代入點 (0,0)
現在問題簡化為檢查向量
和
是否線性無關。為此,回顧線性無關要求給定兩個常數
和
,
的解必須僅在
時出現。
這顯然不是這種情況:一個簡單的例子是設定
和
。因此,拉格朗日 FONC 不適用於該點的問題。