matlab nan变成0_【运筹学】单纯形法求解线性规划问题的Matlab实现

8cecb4d31b3c4f40ae5e0117060b02b4.png

前言

运筹学中的各种算法,用Lingo或Matlab很容易就能算出结果。但从运筹学教学来说,必须得对各种重要算法理解其原理,按标准算法步骤进行笔算推演,想要的是过程。网上也有很多按算法步骤的编程实现,但基本都有两个缺点:

(1)不能提取算法步骤的中间结果;

(2)代码非向量化,非常的啰嗦。

我这学期正在教运筹学课,顺便把自己写的部分代码分享出来,时间有限,代码相当于是初版,后续有待进一步完善,也希望大家提出改进意见。

————————————————————

本篇先从最基础最重要的单纯形法求解线性规划问题(LP)开始。当然,LP的求解只关心结果的话,用Lingo或Matlab非常简单就能实现,可参看

张敬信:【优化算法】01. 线性规划​zhuanlan.zhihu.com
5d84ecc3798c14b7e54432158459e64d.png

一、线性规划问题标准形式

aea60360483af925049e08138da8c59d.png

二、单纯形法求解标准形式线性规划问题的算法步骤

929d098eaede924b6c29b5632408047a.png

三、单纯形法求解线性规划问题的Matlab实现

优点:

  1. 代码采用向量化Matlab语言实现,非常简洁;
  2. 可以把整个单纯形表直接保存下来,再输出到Excel非常方便。

缺点(欢迎指正):

  1. LP各种特殊解的情况,暂时没有讨论全面;

2. 按照“勃兰特”规则,当出现两个相同的最小

时,选下标小的作为出基变量。然而在不多的测试过程中,就遇到两例选下标小的结果是错的,选下标大的才对。
function

测试:

A 

运行结果:

2f020a32252b52e3890abf38227662ad.png

可以进一步写入Excel:

%% 写入Excel

出来就是完美的结果——单纯形表:

c5840bf08ab5ea513762b9c51ed36680.png

主要参考文献:

胡运权,运筹学原理及应用(第六版),及其课件

————————————————————————————————

原创作品,转载请注明,版权所有,禁止盗用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值