matlab求解线性规划问题

1.1 线性规划定义

  • 在一组线性约束条件下,求线性目标函数的最大或最小值

1.2 线性规划适用题目

  • 题目中提到“怎样安排/分配”、“尽量多(少)”、“最多(少)”、“利润最大”、“最合理”等词;
  • 如下示例:
  1. 生产安排:原材料、设备有限制,总利润最大
    生产两种机床,利润分别为xxx,A机器和B机器加工,两种机器工作时间;怎样安排生产使总利润最大?
  2. 投资收益:资产配置、收益率、损失率、组合投资、总收益最大
    总资金为M,有n种资产可以配置,平均收益率…,风险损失率…,手续费…,设计组合投资方案使得收益尽可能大,总体风险尽可能小
  3. 销售运输:产地、销地、产量、销量、运费、总运费最省
    商品有m个产地和n个销地,各产地的产量…,各销地需求量…,由a产地运到b销地的运价xxx;如何调运才能使总运费最省?
  4. 车辆安排:路线、起点终点、承载量、时间点、车次安排最合理
    不同种类的车辆有各自的承载量,工地里有多条路线,满足用工需求的情况下,如何安排车辆能使产量尽可能大?

1.3 线性规划的代码实现(matlab)

  • 模型化为matlab标准型:使用linprog()函数,目标函数为最小值,约束条件为小于等于号或等号
    在这里插入图片描述
    在这里插入图片描述

  • 某工厂制造 A、B 两种产品,A 每吨用煤 9 吨,电 4 千瓦,3 个工作日;制造 B 每吨 用煤 5 吨,电 5 千瓦,10 个工作日。制造 A 和 B 每吨分别获利 7000 元和 12000 元,该厂 可利用资源有煤 360 吨,电力 200 千瓦,工作日 300 个。问 A、B 各生产多少吨获利最大?

  • 设生产 A 产品数量 x1 吨,B 产品数量 x2 吨
    则目标函数为 z = 7x1 + 12x2
    约束条件为
    9x1 + 5x2 ≤ 360;4x1 + 5x2 ≤ 200;3x1 + 10x2 ≤ 300;x1 ≥ 0;x2 ≥ 0
    在这里插入图片描述

C = [-7,-12]; 
A = [9,5;4,5;3,10]; 
b = [360;200;300];
Aeq = [ ]; 
beq = [ ]; 
Lb = [0;0]; 
Ub = [inf;inf]; 
[x,fval] = linprog(C, A, b, Aeq, beq, Lb, Ub);
  • 建筑公司承建办公楼和住宅楼。建办公楼将获利润 500 元/平方米,建住宅楼获利润 600 元/平方米,总建筑面积不少于 5000 平方米,办公楼的面积不能大于 5000 平方米,住宅楼不能大于 3000 平方米。

  • 假定公司当年建办公楼 x1 平方米,建住宅楼 x2 平方米
    以所得利润最大为目标,得目标函数 z = 500x1 + 600x2
    根据招标单位的要求,约束条件为 x1 + x2 ≥ 5000;0≤x1 ≤ 5000;0≤x2 ≤ 3000
    在这里插入图片描述

C = [500,600]; 
A = [-1,-1;1,0;0,1;]; 
b = [-5000;5000;3000]; 
Aeq = [ ]; 
beq = [ ]; 
Lb = [0;0]; 
Ub = [5000;3000]; 
x = linprog(-C, A, b, Aeq, beq, Lb, Ub); 
z = C*x
  • 7
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值