Matlab隨筆之線性規劃

2021-09-19 22:23:22 字數 2880 閱讀 7925

原文:

matlab隨筆之線性規劃

lp(linear programming,線性規劃)是一種優化方法,在優化問題中目標函式和約束函式均為向量變數的線性函式,lp問題可描述為:

min x

s.t.

a·x b

aeq·x=beq

vlb x vub

其中 ,b,beq均為向量,a,aeq為矩陣,x為向量變數.矩陣a和向量b是線性不等式約束條件的係數,

aeq和beq是等式

約束條件

的係數.

在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|;

% 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];%等式約束

aeq=[1 -1 -1 1

1 -1 1 -3

1 -1 -2 3];

aeq=[aeq,-aeq];

beq=[0

1 -0.5]'

;%邊界條件

lb=zeros(8,1

);%呼叫linprog

x=linprog(f,,,aeq,beq,lb)

optimization terminated.

x =

0.2500

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隨筆之線性規劃

lp linear programming,線性規劃 是一種優化方法,在優化問題中目標函式和約束函式均為向量變數的線性函式,lp問題可描述為 min x s.t.a x b aeq x beq vlb x vub 其中 b,beq均為向量,a,aeq為矩陣,x為向量變數.矩陣a和向量b是線性不等式約...

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和 ...