第一章 线性规划
在利用matlab求线性规划的问题过程中,我们常用到的是linprog函数,下面我们将主要介绍一下linprog函数的常规用法。
例子 求解下列线性规划问题
可编写matlab程序为
c=[2;3;-5];
a=[-2,5,-1;1,3,1];
b=[-10;12];
aeq=[1,1,1];
beq=7;
[x,fval]=linprog(-c,a,b,aeq,beq,zeros(3,1))
value=c’*x
运行结果:
x =
6.4286
0.5714
0
fval =
-14.5714
value =
14.5714
附图:
解析:
matlab中的linprog常用的有一下几种形式:
This MATLAB
function solves min f’x such that Ax ≤ b.
x = linprog(f,A,b)
x = linprog(f,A,b,Aeq,beq)
x = linprog(f,A,b,Aeq,beq,lb,ub)
x = linprog(f,A,b,Aeq,beq,lb,ub,options)
x = linprog(problem)
[x,fval] = linprog(___)
[x,fval,exitflag,output] = linprog(___)
[x,fval,exitflag,output,lambda] =linprog(___)
x = linprog(f,A,b)
功能:求解最小化问题 min x 条件 Ax ≤ b。
x =linprog(f,A,b,Aeq,beq)
功能:求解最小化问题 min x 条件 Ax ≤ b Aeqx =beq,如果没有不等式就设置A = [ ]和b = [ ];没有等式就设置 Aeq=[ ],beq=[]
x =linprog(f,A,b,Aeq,beq,lb,ub)
功能:求解最小化问题 min x 条件 Ax ≤ b Aeqx =beq lb ≤ x ≤ ub,决策变量有上下限时,如果没有不等式就设置A = [ ]和b = [ ] ;没有等式就设Aeq=[ ],beq=[ ]
x =linprog(f,A,b,Aeq,beq,lb,ub,x0)
功能:求解最小化问题 min x 条件 Ax ≤ b Aeq*x =
beq lb ≤ x ≤ ub,如果没有不等式就设置A = [ ]和b = [ ]。设置初始点x0,这个选择项只是对medium-scale算法有效。默认的large-scale算法和简单的算法忽略任何初始点。
x =linprog(f,A,b,Aeq,beq,lb,ub,x0,options)
功能:最小化带有参数项的线性规划问题。其中options可以使用optimset来设置。
x =linprog(problem)
功能:对problem求最小值,其中problem是一个结构体。通过优化工具箱来创建,导入到MATLAB工作空间。
[x,fval] =linprog(…)
功能:返回目标函数最优解x,和在x处的值:fval =*x.
[x,fval,exitflag]= linprog(…)
功能:返回目标函数最优解x,和在x处的值:fval =*x,是否存在exitflag标志
[x,fval,exitflag,output]= linprog(…)
功能:返回目标函数最优解x,和在x处的值:fval = *x,是否存在exitflag标志,优化解结构体output
[x,fval,exitflag,output,lambda]= linprog(…)
功能:返回目标函数最优解x,和在x处的值:fval = *x,是否存在exitflag标志,优化解结构体output,拉格朗日乘子结构体lambda。