基于MATLAB的线性规划
基于MATLAB的线性规划
线性规划(LP)是数学规划的一类,在解决已有资源求解最大效益问题上有显著效果,逐步成为了现代管理中经常采用的基本方法之一。
线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是大于号也可以是小于号。Matlab中线性规划的标准形式为:
其中c和x是n维向量,A,Aeq是适当维数的矩阵,b,beq是适当维数的列向量。
Matlab中线性规划的基本函数形式为:linprog(c,A,b),它的返回值是向量x的值。还有其他的一些函数调用形式【在matlab中指令窗口运行help linprog可以看到所有的函数调用形式】:
x = linprog(f,A,b) 求解满足min f'x,满足A*x<=b
x = linprog(f,A,b,Aeq,beq) 包括等式约束Aeq*x = beq,如果不存在不等式,A=[];b=[]
x = linprog(f,A,b,Aeq,beq,lb,ub) 定义设计变量x的一组上界和下界,使解始终在lb≤x≤ub范围内, 如果不存在不等式,A=[];b=[]
x = linprog(f,A,b,Aeq,beq,lb,ub,options) 使用options所指定的优化选项执行最小化,使用optimoptions可设置这些选项。
x = linprog(problem) 求problem的最小值,它是problem中所述的一个结构体
[x,fval] = linprog( ) 返回目标函数fun 在解x处的值:fval = f'*x
[x,fval,exitflag,output] = linprog( ) 还返回说明退出条件的值exitflag,以及包含优化过程信息的结构体output
[x,fval,exitflag,output,lambda] = linprog( ) 还返回结构体lambda,其字段包含在解x处的拉格朗日乘数
如下求解问题::
c=[2;3;-5];
a=[-2,5,-1;1,3,1]; b=[-10;12];
aeq=[1,1,1];
beq=7;
x=linprog(-c,a,b,aeq,beq,zeros(3,1));
value=c'*x;
运行结果如下: