lp(linear programming,線性規劃)是一種優化方法,在優化問題中目標函式和約束函式均為向量變數的線性函式,lp問題可描述為:aeq和beq是等式min x
s.t.
a·x b
aeq·x=beq
vlb x vub
其中 ,b,beq均為向量,a,aeq為矩陣,x為向量變數.矩陣a和向量b是線性不等式約束條件的係數,
約束條件
的係數.
在matlab中,用於lp的求解函式為linprog.其呼叫格式為:[x,fval,lambda]=linprog(f,a,b,
aeq,beq,vlb,vub,x0,options)
其中f,a,b,是不可預設的輸入變數,x是不可預設的輸出變數,它是問題的解.vlb,vub均是向量,分別表示x的下界和上界,x0為x的起始點,options為optimset函式中定義的引數的值,fval是目標函
數在解x處的值,lambda為在解x處的lagrange乘子.lambda.lower對應於vlb,lambda.upper對應於ulb,lambda.ineqlin是對應於線性不等式約束的,lambda.eqlin是對應於線性等式約束的.
>>%求解下列線性規劃問題% max z=2x1+3x2-5x3
% s.t. x1+x2+x3=7
% 2x1-5x2+x3>=10
% x1+3x2+x3<=12
% x1,x2,x3>=0
f=[2;3;-5];%目標函式列矩陣
a=[-2,5,-1;1,3,1];%不等矩陣
b=[-10;12
]; aeq=[1,1,1];%相等矩陣
beq=7
; x=linprog(-f,a,b,aeq,beq,zeros(3,1
));
%zeros(m,n)產生m×n的double類零矩陣,zeros(n)產生n×n的全0方陣
value=f'
*x%目標值,其值等於[x,y]=linprog(-f,a,b,aeq,beq,zeros(3,1))的-y
optimization terminated.
value =
14.5714
>>x
x = 6.4286
0.5714
0.0000
>>
>> %求解下列線性規劃問題% min z=2x1+3x2+x3
% s.t. x1+4x2+2x3>=8
% 3x1+2x2>=6
% x1,x2,x3>=0
f=[2;3;1
]; a=[-1,-4,-2;-3,-2,0
]; b=[-8;-6
]; x=linprog(f,a,b,,,zeros(3,1))%無等式,用代替
value=f'
*x %其值等於[x,y]=linprog(f,a,b,,,zeros(3,1))的y
optimization terminated.
x = 0.8066
1.7900
0.0166
value =
7.0000
>>
% min z=|x1|+2|x2|+3|x3|+4|x4|;aeq=[1 -1 -1 1% s.t. x1-x2-x3+x4=0
;% x1-x2+x3-3*x4=1
;% x1-x2-2*x3+3*x4=-0.5
%目標函式
objfun=@(x)abs(x(1))+2*abs(x(2))+3*abs(x(3))+4*abs(x(4
)) %等式約束
aeq=[1 -1 -1
11 -1
1 –3
1 -1 -23];
beq=[0
1 -0.5]'
; x0=[000
0];%給乙個初值 很關鍵
x=fmincon(objfun,x0,,,aeq,beq)
%下面是根據的需要改進的程式
依據:|x|=u+v,x=u-v(u,v>=0)
min z=[123
4123
4]*[u1 u2 u3 u4 v1 v2 v3 v4];s.t.
a=[1 -1 -1
1 -1
11 -1
1 -1
1 -3 -1
1 -1
31 -1 -2
3 -1
12 -3
]x=[u1 u2 u3 u4 v1 v2 v3 v4]'
b=[0
1 -0.5]'
ax=b
x>=0
%目標函式
f=[123
4123
4];%等式約束
1 -1 1 -3
1 -1 -2 3];
aeq=[aeq,-aeq];
beq=[0x = 0.25001 -0.5]'
;%邊界條件
lb=zeros(8,1
);%呼叫linprog
x=linprog(f,,,aeq,beq,lb)
optimization terminated.
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.2500
Matlab隨筆之線性規劃
原文 matlab隨筆之線性規劃 lp linear programming,線性規劃 是一種優化方法,在優化問題中目標函式和約束函式均為向量變數的線性函式,lp問題可描述為 min x s.t.a x b aeq x beq vlb x vub 其中 b,beq均為向量,a,aeq為矩陣,x為向量...
Matlab隨筆之線性規劃
原文 matlab隨筆之線性規劃 lp linear programming,線性規劃 是一種優化方法,在優化問題中目標函式和約束函式均為向量變數的線性函式,lp問題可描述為 min x s.t.a x b aeq x beq vlb x vub 其中 b,beq均為向量,a,aeq為矩陣,x為向量...
MATLAB之線性規劃
c和x為n維列向量,a aeq為適當維數的矩陣,b 資源向量 beq為適當維數的列向量。1 linprog c,a,b,aeq,beq 它的返回值是向量 x的值。引數為空時,用 表示 2 x,fval linprog c,a,b,aeq,beq,lb,ub,x0 fval 返回目標函式的值 lb和 ...