[數學建模]線性規劃與matlab解法

1.1 線性規劃問題(LinearProgramming,LP)

1.1.1 線性規劃的實例和定義

某機牀廠生產甲、乙兩種機牀,每臺銷售後的利潤分別爲4000元與3000元。生產甲機牀需用A、B機器加工,加工時間分別爲每臺2h和1h;生產乙機牀需用A、B、C三種機器加工,加工時間爲每臺1h。若每天可用於加工的機器時數爲A機器10h、B機器8h和C機器7h,問該廠應生產甲、乙機牀各幾臺,才能使總利潤最大?

設總利潤爲z ,生產x1 臺甲機器,生產x2 臺乙機器,則目標函數z=4x1+3x2
約束條件s.t.(subject to)2x1+x210,x1+x28,x27,x1,x20

1.1.2 線性規劃問題的解的概念

一般情況

maxz=ni=1cixis.t.{nj=1aij=bii=1,2,...m,xj0,j=1,2,...,n:bi0,i=1,2,...m
可行解:滿足約束條件的解 x=[x1,...,xn]T ,使式子達到最大值爲最優解
可行域:所有可行解構成的集合稱爲問題的可行域,記爲R。

1.1.3 線性規劃的Matlab標準形式及軟件求解

標準形式爲
minx=fTX,s.t.AXB,AeqX=beq,lbXub
[x,fval] = linprog(f,A,b,Aeq,beq,lb,ub)

(f爲價值向量,B 爲資源向量,x返回決策向量的取值,fval返回目標函數的最優值,Aeq,beq對應線性等式約數,lb,ub分別對應決策向量的下界向量和上界向量。)

1.2.1 案例:投資的收益和風險

市場上有n中資產si(u=1,2,...,n) 可以選擇,現用數額爲M的相當大的資金作一個時期的投資。這n種資產在這一時期內購買si 的平均收益率爲ri ,風險損失率爲 qi , 投資越分散,總的風險越小,總體風險可用投資的si 中最大的一個風險來度量。購買si 時要付交易費,費率爲pi , 當購買額不超過給定值ui 時,交易費按購買ui 計算。另外,假定同期銀行存款利率是r0 ,既無交易費又無風險(r0=5% )。

si ri /% qi /% pi /% ui /%
s1 28 2.5 1 103
s2 21 1.5 2 198
s3 23 5.5 4.5 52
s4 25 2.6 6.5 40

1.2.2 模型的分析與建立

(1)總體風險用所投資的si 中最大的一個風險來衡量,即max{qixi |i=1,2,…,n}。

(2)購買sii=1,2,...,n 所付交易費是一個分段函數,即
交易費 = {pixi,xi>ui,piui,xiui
而題目所給的定值ui (單位:元)相對總投資M很少,piui 更小,這樣購買si 的淨收益可以簡化爲ripixi

(3)要使淨收益儘可能大,總體風險儘可能小,這是一個多目標規劃模型。
目標函數爲{maxni=0ripixi,min(max1in(qixi))

(4)模型優化。
①在實際投資中,投資者承受風險的程度不一樣,若給定風險一個界限a,時最大的一個風險率爲a,即qixiMa(i=1,2,...,n) , 可找到相應的投資方案。這樣把多目標規劃變成一個目標的線性規劃。

模型一:固定風險水平,優化收益
maxni=0(1+pi)xi,s.t.{qixiMa,i=1,2,...,n,ni=0(1+pi)xi=M,xi0,i=0,1,...,n

②在實際投資中,若投資者希望總盈利至少達到水平k以上,在風險最小的情況下尋求相應的投資組合。

模型二:固定盈利水平,極小化風險
min(max1in(qixi))s.t.ni=0(ripi)xik,ni=0(1+pi)xi=M,xi0,i=0,1,2,...,n

③投資者在權衡資產風險和預期收益兩方面時,希望選擇一個令自己滿意的投資組合。因此對風險,收益分別賦予權重s(0<s1)s1,s

模型三:帶有權值的風險收益模型
min(smax1in(qixi))(1s)ni=0(ripi)xi,s.t.{ni=0(1+pi)xi=M,xi0,i=0,1,2,...,n

1.2.3 模型的求解

模型一:
min f=[0.05,0.27,0.19,0.185,0.185][x0,x1,x2,x3,x4]T,s.t.x0+1.01x1+1.02x2+1.045x3+1.065x4=1,0.025x1a,0.015x2a,0.055x3a,0.026x4a,xi0,i=0,1,...,4

clc,clear
a=0;
hold on
while a<0.05
    c=[-0.05,-0.27,-0.19,-0.185,-0.185];
    A=[zeros(4,1),diag([0.025,0.015,0.055,0.026])];
    b=a*ones(4,1);
    Aeq=[1,1.01,1.02,1.045,1.065];
    beq=1;
    LB=zeros(5,1);
    [x,Q]=linprog(c,A,b,Aeq,beq,LB);
    Q=-Q;
    plot(a,Q,'*k');
    a = a + 0.001;
end
xlabel('a'),ylabel('Q')

圖1.1 模型1 風險與收益的關係圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章