2.5.3 MATLAB线性规划求解
MATLAB是矩阵实验室(matrix laboratory)的简称,是由美国Math Works公司开发的主要面向科学计算、可视化以及交互程序设计的软件。自1992年推出MATLAB1.0版本后,近30年已经更新了多个版本。MATLAB语言具有其他高级语言难以比拟的一些优点,编写简单,编程效率高,易学易懂,被称为演算纸的科学算法语言(马莉,2010;王志新,2013;项家樑,2014;栾颖,2014)。
MATLAB解线性规划问题有两种方法,一种方法是使用linprog命令,另一种是使用optimtool工具箱,这里仅介绍使用linprog函数的线性规划求解方法。
在MATLAB下,线性规划一般形式是:

c 为目标函数的价值系数,A、Aeq对应不等式和等式约束的系数矩阵,b、beq对应不等式和等式约束的常数项,lb、ub对应变量x 的下界和上界。
一般情况下,linprog命令的参数形式为[x,fval]=linprog(c,A,b,Aeq,beq,lb,ub,x0),命令中各参数的含义如下:
[x,fval]返回值中x为最优解,fval为最优值。
c表示目标函数中各个变量前面的系数向量,如果是求最小值问题,那么c就是各个变量的系数,如果是求最大值问题,那么c就是各个变量的系数的相反数。
A 和b表示不等式约束Ax≤b中的矩阵A 和向量b。
Aeq和beq表示等式约束Aeq=beq中的矩阵Aeq和向量beq。如果没有等式约束,该选项用[]表示。
lb和ub分别表示自变量的上下界组成的向量,如果没有上下界,该选项用[]表示。
x0表示变量的初始值,可以缺省。(https://www.daowen.com)
【例2.16】用MATLAB求解[例2.8]问题。
先将[例2.8]转化为MATLAB标准形式:

启动MATLAB后,在英文输入法状态下,命令行窗口输入如下内容并回车确认后,命令行及结果如图2.14所示。
由于MATLAB语言中,线性规划目标函数是极小值,linprog运行的结果改变符号后,才是原问题的最优值(-84→84)。
由于没有等式约束条件,本例题中命令行可以简化为如图2.15所示输入内容,输出结果是一样的。

图2.14 [例2.16]linprog输入及运行结果

图2.15 [例2.16]linprog简化输入及运行结果
上面简单介绍的Excel、LINGO 和MATLAB线性规划求解方法各有特点,更多了解可以参考相关文献。本书主要采用Excel求解方法。