线性规划linprog

linprog函数的用法

Matlab 中规定线性规划的标准形式为

其中 c 和 x 为 n 维列向量, A 、 Aeq 为适当维数的矩阵,b beq 为适当维数的列向量

注意:如果约束条件为Ax>=b,需要吧矩阵A和b乘以-1。A和b按照乘-1的新矩阵进行运算。如果目标函数是求最大值max需要吧矩阵c乘以-1

使用方法

求解线性规划问题:

List item

其中,f, x, b, beq, lb, ub为向量, A, Aeq为矩阵。
求解最小化问题 min x 条件 Ax ≤ b。

x = linprog(f,A,b)

求解最小化问题 min x 条件 Ax ≤ b Aeq*x = beq,如果没有不等式就设置A = [ ]和b = [ ];没有等式就设置 Aeq=[ ],beq=[ ]

x = linprog(f,A,b,Aeq,beq)

求解最小化问题 min x 条件 Ax ≤ b Aeq*x = beq lb ≤ x ≤ ub,决策变量有上下限时,如果没有不等式就设置A = [ ]和b = [ ] ;没有等式就设置 Aeq=[ ],beq=[ ]

 x = linprog(f,A,b,Aeq,beq,lb,ub)

求解最小化问题 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可以使用optimset来设置。

x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)

对problem求最小值,其中problem是一个结构体。通过优化工具箱来创建,导入到MATLAB工作空间。

x = linprog(problem)

功能:返回目标函数最优解x,和在x处的值:fval = *x.

[x,fval] = linprog(...)

返回目标函数最优解x,和在x处的值:fval = *x,是否存在exitflag标志

[x,fval,exitflag] = linprog(...)

返回目标函数最优解x,和在x处的值:fval = *x,是否存在exitflag标志,优化解结构体output

[x,fval,exitflag,output] = linprog(...)

返回目标函数最优解x,和在x处的值:fval = *x,是否存在exitflag标志,优化解结构体output,拉格朗日乘子结构体lambda

[x,fval,exitflag,output,lambda] = linprog(...)

应用举例

最小解: f(x) = –5x1 – 4x2 –6x3, 满足:
x1 – x2 + x3 ≤ 20
3x1 + 2x2 + 4x3 ≤ 42
3x1 + 2x2 ≤ 30
0 ≤ x1,
0 ≤ x2,
0 ≤ x3.
首先,输入系数、条件;
f = [-5;-4;-6] ;
A = [1 -1 1; 3 2 4 ;3 2 0];
b = [20; 42; 30];
lb = zeros(3,1);
然后,调用线性规划函数;
[x,fval,exitflag,output,lambda] = linprog(f,A,b,[ ],[ ],lb);
最后,得到:
x = 0.0000 15.0000 3.0000
lambda.ineqlin = 0 1.5000 0.5000
lambda.lower = 1.0000 0 0
相关函数
quadprog, optimtool book.

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值