前言:
相信大家在刚刚接触建模时都会初步了解matlab这个软件吧,其实,matlab这个软件非常的强大,它不仅在数学建模里面经常被用到,还在一些其它的科学研究里都会被用到。当然啦,功能强大,那么它所占的内存也是蛮大的,差不多有20G了吧。不过今天,我在这里就分享一下关于用matlab解决一般线性规划问题需要掌握的知识吧。
具备知识:
在看这篇文章前,你需要大概了解一些最基本的MATLAB的语法,当然啦,是最基本的,这样的话,我相信凭你高智商的大脑,在看完这篇文章后,会写出比我这篇文章更好的博客。😄😄😄
MATLAB程序结构
1.顺序结构
MATLAB程序结构最基本的结构就是顺序结构,其简单易读,容易理解.
2.循环结构
MATLAB中循环结构是有for语句和while语句的,不多说直接上图:
运行程序,输出如下:
while循环的结构就是
while 表达式
循环体语句组
end
如果你有一定的编程基础的话,很容易理解该语法的。
3.选择结构
在编写程序时,往往要根据一定的条件进行一定的选择来执行不同的语句,此时,需要用到选择语句结构,其语法为:
if 表达式
执行语句
end
如果有3种或者3种以上选择的情况,那其语法为:
if 表达式1
执行语句1
elseif 表达式2
执行语句2
elseif…
…
…
else
所有表达式为假时执行该语句
end
据我目前的知识来看掌握上面的MATLAB程序结构基本上可以写出MATLAB代码的框架了。
MATLAB实现线性规划问题:
线性规划问题的MATLAB标准型为:
当然在解决这类问题时,MATLAB专门提供了相关函数,帮助我们解决这类问题:
MATLAB函数调用:
[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub],这是我们一般调用该函数去解决一些线性规划问题,当然还有其它关于该函数的知识,如果你有兴趣想了解的话,可以私我,我发资料给你,在此我就不写出来了。
其含义为:
x表示所解出的值,是一个按列排序的矩阵,fval为目标函数值得结果,f表示目标函数中未知数的系数,A表示不等式中,位置数的系数,是一个多维数组或一维数组,b表示不等式右边的值,也是一个矩阵,Aeq表示等式中未知数的系数(矩阵),beq表示等式右边的数,lb表示未知数取值的下限,ub表示未知数取值的上限。
大家来看看这一题,加深大家对该函数的理解
MATLAB代码:
f=[-2,-3,5]; %因为题中目标函数值是求最大值,二一般式是求最小值,所以提一个符号变为一般式
A=[-2,5,-1;1,3,1]; %该不等式是大于等于,而一般试是小于等于,所以提出一个符号转换为一般式
b=[-10;12];
Aeq=[1,1,1];
beq=[7];
lb=[0;0;0];
ub=[inf;inf;inf]; %inf表示正无穷大
[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub) %调用函数
运行结果:
注意!!!当然在有些题目中,可能会存在像参数Aeq等不存在,那么在调用时,我们可以用[ ]来代替Aeq,或者其它参数。
结束语:
上述基本上给出了自己在这一方面的学习心得,当然啦,建模中线性规划不止这么简单,还有其它相关知识,上述只是一些基础的,读者在看完后还需要去了解一下其它方面的知识,比如0-1规划,整数规划等,这样你对线性规划才有一个系统的理解与掌握。创作不易,多多支持。😃😃😃
参考文献:
《MATLAB编程与最优化设计应用》