matlab解决线性规划

线性规划

线性规划(Linear programming,简称LP),是运筹学中研究较早、发展较快、应用广泛、方法较成熟的一个重要分支,它是辅助人们进行科学管理的一种数学方法。研究线性约束条件下线性目标函数的极值问题的数学理论和方法。英文缩写LP。

matlab处理线性规划

linprog函数介绍:
线性规划求解器查找由所指定问题的最小值
函数内容
f,x,b,beq,lb和ub是向量,而A和Aeq是矩阵。
因为线性规划的不等式符号不好控制,所以matlab中只是使用上图的不等式形式,只求最小值,要求最大值需要转化。其他形式的要转化成上图形式。

函数讲解

[x,y] = linprog(f,A,b,Aeq,beq,lb,ub);
f:目标函数的系数
A:不等式方程的系数矩阵
b:不等式常数向量
Aeq:等式系数方程,没有则为空矩阵[ ]
beq: 等式常数矩阵,没有为空向量[ ]
lb:未知数的范围的左象限,就是未知数大于什么 没有就为空向量
ub: 未知数的范围的右象限,就是未知数小于什么,没有就为空向量
x:未知数解的向量
y:目标函数值

例1:
max z = x1 + 2* x2 + x3
2* x1 – 3* x2 + 2*x3 <=15
(1/3) * x1 +x2 +5 * x3 <=20
x1, x2, x3 >=0

matalb程序

f=[-1;-2;-1]; %样例中求最大值,取反转化为最小值
A=[2,-3,2;1/3,1,5];  %与标准不等式一致,不用转化符号
b=[15;20];
%不存在等式,用[]代替
%zeros(31)就是(000%ub不存在,可以不用写,也可以用[]代替
%[x,y] = linprog(f,A,b,[],[],zeros(3,1),[]);
[x,y] = linprog(f,A,b,[],[],zeros(3,1)); 

结果展示

Optimal solution found.
x =
   25.0000
   11.6667
         0
y =
  -48.3333

x1 = 25, x2 = 11.667. x3 = 0
所以最大值为-y = 48.3333,因为上面转成最小值加上符号 => -z = -x1 - 2* x2 - x3 ;
结果y = -z; ==> z = -y;
最大值就为48.3333

例2:
max z = 5 * x1 + 6 * x2;
x1 - 2 * x2 >= 2;
-2 * x1 + 3 * x2 >= 2;

matlab程序

f=[5;6]; %样例中求最大值,取反转化为最小值,也可以在函数中传-f来解决
%与标准不等式一致,需要转化符号,直接传参数实施-a
A=[1,-2;-2,3];  
%与标准不等式一致,需要转化符号,直接传参数实施-b
b=[2;2];
%不存在等式,用[]代替
%zeros(21)就是(00%ub不存在,可以不用写,也可以用[]代替
%ub不存在,可以不用写,也可以用[]代替
%[x,y] = linprog(-f,-A,-b,[],[],[],[]);
[x,y] = linprog(-f,-A,-b,[],[]);

结果展示

Optimal solution found.
x =
  -10.0000
   -6.0000
y =
   86.0000

x1 = -10, x2 = -6;
max z = -86;

例3
min z = 0.3 * x1 + 0.5 * x2;
0.5 * x1 +0.5 * x2 >= 2;
1.0 * x1 +0.3 * x2 >= 3;
0.2 * x1 +0.6 * x2 >= 1.2;
0.5 * x1 +0.2 * x2 >= 2;
x1 , x2 >=0;

matlab程序

f=[0.3;0.5];
a=[0.5,0.5;1.0,0.3;0.2,0.6;0.5,0.2];
b=[2;3;1.2;2];
[x,y]=linprog(f,-a,-b,[],[],zeros(2,1));

结果展示

Optimal solution found.
x =
    3.6923
    0.7692
y =
    1.4923

x1 = 3.6923, x2 = 0.7692;
z = 1.4923;

演示结束
微信号

  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值