线性规划问题的matlab求解

函数:[x, fval] = linprog(f, A, b, Aeq, Beq, LB, UB)

返回的x:是一个向量——在取得目标函数最小时各个xi的取值;

返回的fval:目标函数的最小值;

参数f:目标函数的系数矩阵;

参数A:不等式约束的系数矩阵;

参数b:不等式约束右端的常数列;

参数Aeq:等式约束的系数矩阵,若没有等式约束,则Aeq = []

参数Beq:等式约束右端的常数列,若没有等式约束,则Beq = []

参数LB:x的下界,常遇到的x1, x2, x3 >= 0,0就是下界,可用zeros(3, 1)生成一个3行1列的向量来表示,其中向量的每个元素的值为0;

参数UB:x的上界;

-------------------------------------------------------------------------------------------------------------

求z的最小值及z取得最小值时x的取值:

min z = -5x1 - 4x2 - 6x3

约束条件:

x1 - x2 + x3 <= 20

3x1 + 2x2 + 4x3 <= 42

3x1 + 2x2 <= 30

0 <= x1, 0 <= x2, 0 <= x3

-------------------------------------------------------------------------------------------------------------

编写.m文件:

 

f = [-5; -4; -6];

A = [1 -1 1; 3 2 4; 3 2 0];

b = [20; 42; 30];

Aeq = [];

Beq = [];

LB = zeros(3, 1);

[x, favl] = linprog(f, A, b, Aeq, Beq, LB)

保存运行,得

 

x =



    0.0000

   15.0000

    3.0000





favl =



  -78.0000


 

 

-------------------------------------------------------------------------------------------------------------

求z的最大值及z取得最大值时x的取值:

max z = 2x1 + 3x2 - 5x3

约束条件:

x1 + x2 + x3 = 7

2x1 - 5x2 + x3 >= 10

x1, x2, x3 >= 0

 

-------------------------------------------------------------------------------------------------------------

编写.m文件:

f = [-2; -3; 5];        %转换成求负形式的最小值

A = [-2 5 -1];      %原>=号,两边同乘-1,转成标准形式

b = [-10];      %原>=号,两边同乘-1,转成标准形式

Aeq = [1 1 1];

Beq = [7];

LB = zeros(3, 1);

[x, fval] = linprog(f, A, b, Aeq, Beq, LB);

x

fval = -fval        %将负形式的最小值转回原正形式的最大值

保存运行,得

 

x =



    6.4286

    0.5714

    0.0000





fval =



   14.5714


 


 

你可能感兴趣的:(matlab)