线性规划求解问题

1.线性规划

求线性规划问题的最优解有两种方法,一种方法是使用linprog命令,另一种是使用optimtool工具箱,下面分别介绍这两种方法.

①linprog命令

一般情况下,Linprog命令的参数形式为[x,fval] = linprog(f,A,b,Aeq,beq,lb,ub,x0),下面分别介绍各参数的含义.

[x,fval]返回值中x为最优解,fval为最优值.

f表示目标函数中各个变量前面的系数向量,如果是求最小值问题,那么f就是各个变量的系数,如果是求最大值问题,那么f就是各个变量的系数的相反数.

A和b 表示不等式约束A*x <=b中的矩阵A和向量b.

Aeq和beq 表示等式约束Aeq*x =beq中的矩阵Aeq和向量beq.

lb和ub 分别表示自变量的上下界组成的向量,如果没有上下界,该选项用[]表示,如果只有部分变量有上下界,其余的变量没有,那么可以把没有上下界的变量的上下界设为-inf或者inf使lb或者ub的长度符合要求.

x0 表示变量的初始值,可以缺省.

例,求如下的线性规划问题
这里写图片描述

由目标函数可知f=[-5;-4;-6];

由约束条件可知矩阵A = [1 -11;3 2 4;3 2 0];右端向量为b = [20;42;30];

由自变量都大于零可知lb =[0;0;0];

所以求该线性规划问题最优解的代码如下

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

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

b = [20;42;30];

lb = [0;0;0];

[x,fval] =linprog(f,A,b,[],[],lb)

其中Aeq和beq都为空,因为没有等式约束条件,只有不等式约束条件.
案例一:
min z=2*x1+3*x2+x3
Subject to:
x1+4*X2+2*X3>=8
3*X1+2*X2>=6
x1>=0
x2>=0
x3>=0
这里写图片描述
案例二:
min z=-5*x1-4*x2-6*x3
subject to:
x1-x2+x3<=20
3*x1+2*x2+4*x3<=42
3*x1+2*x2<=30
0<=x1
0<=x2
0<=x3
这里写图片描述
案例三:
max=2*x1+3*x2-5*x3
subject to:
x1+x2+x3=7
2*x1-5*x2+x3>=10
x1>=0
x2>=0
x3>=0
这里写图片描述

猜你喜欢

转载自blog.csdn.net/Azuresmh/article/details/82149518