本文章的学习和例题全部来源于司守奎《数学建模算法与应用》 第二版。
-
命令:
在matlab中有专门用来解决线性规划问题的命令,[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub),下面依次介绍该命令各个部分的含义:
-
命令的各部分含义:
x:决策变量,对解决问题所选取的合理方案
fval:为目标函数最优解,最大值或者最小值
f:为价值向量(即决策变量x的系数)
A,b:为线性不等式约束,A为不等式的系数矩阵,b为常数矩阵(列向量),即:
Aeq,beq:为线性等式约束,Aeq为等式的系数矩阵,beq为常数矩阵(列向量),即:
lb,ub:用来约束决策变量X的取值范围:
-
注意:
该命令只能求出最小值,若求最大值时需要将价值向量f乘上一个负号,最后结果fval输出时也要乘上负号
-
例题演示:
下为例题演示:
其中有个有趣的点,在1.3中运行结果最优结果与课本一致,但是决策变量不一样,然后我又用lingo进行验算,得到的是课本上的决策变量,反复检查代码的确不存在问题,因为我用的是matlab 2023a,所以又用学校机房用matlab 2014b测试了一下,结果与课本相符,所以推断这是一个最优解的多组决策,因为软件版本问题所以运行结果里决策变量不同。