分享非線性動態規劃問題(一)

2022-08-10 09:12:07 字數 932 閱讀 8837

摘要:前面的都是簡單的線性動規,本篇開始樹形動規問題的入門.

1.正文:樹是我最喜歡的資料結構(沒有之一),它既不是像線性表那樣過於單調的線性關係,又沒有像圖那樣有著複雜的網狀關係,規律的非線性關係常常是我們現實生活中諸多問題的基本模型,比如家族關係、企業架構等。當它與動態規劃相結合時,似乎很高大上,但一言概之只是用乙個樹狀的資料結構封裝問題元素的動規問題而已,仍然是按動規的基本步驟走:

(1)題意分析;

(2)基於分析數學建模;

(3)判定是否可以符合使用動規的兩大前置條件(最優子結構和無後效性),是則下一步,否則終止(非動規可以解決的問題,另尋他法);

(4)動規基本三步曲:

1)結合題意根據模型選擇計算出比較合適的狀態轉移方程,歸約初始的狀態值,推導出終止(最終收斂)條件;

2)迭代驗證;

3)選擇合適的迭代次序實現狀態轉移方程的迭代和收斂;

(5)程式設計實現。

萬變不離其宗。不多贅述,看看今日有趣的例題。

2.題目:

經典例題(某度就有)

沒有上司的晚會等

【問題描述】

有個公司要舉行一場晚會。為了讓到會的每個人不受他的直接上司約束而能玩得開心,公司領導決定:如果邀請了某個人,那麼一定不會再邀請他的直接的上司,但該人的上司的上司,上司的上司的上司……都可以邀請。已知每個人最多有唯一的乙個上司。

已知公司的每個人參加晚會都能為晚會增添一些氣氛,求乙個邀請方案,使氣氛值的和最大。

3.輸入輸出示例:

輸入:第1行乙個整數n(1<=n<=6000)表示公司的人數。

接下來n行每行乙個整數。第i行的數表示第i個人的氣氛值x(-128<=x<=127)。

接下來每行兩個整數l,k。表示第k個人是第l個人的上司。

輸入以0 0結束。

輸出:5

4.例程: 

非線性規劃

1.基本形式和求解模式。2.掌握凸函式和凸規劃的概念及性質。3.掌握0.618法。4.無約束優化的最優性質,熟練運用最速下降法和共軛方法。約束最優化的性質,懲罰函式。minf x s.t gi x 0 i 1,2,ph j x 0,j 1,2 q可行域為 x x r n gi x 0,i 1,2,p...

Matlab非線性規劃

在matlab非線性規劃數學模型可以寫成一下形式 minf x s.t.begin ax le b aeq x beq c x le 0 ceq x 0 end f x 為目標函式,a,b,aeq,beq為線性約束對應的矩陣和向量,c x ceq x 為非線性約束。matlab求解命令為 x fmi...

非線性規劃問題的matlab求解

函式 x,fval fmincon fun,x0,a,b,aeq,beq,lb,ub,nonlcon 返回的x 是乙個向量 在取得目標函式最小時各個xi的取值 返回的fval 目標函式的最小值 引數fun 目標函式 引數x0 向量x的初始值 引數a 線性不等式約束的係數矩陣,若沒有線性不等式約束,則...