matlab应用——求极限,求导,求积分,解方程,概率统计,函数绘图,三维图像,拟合函数,动态图,傅里叶变换,随机数,优化问题....更多内容尽在个人专栏:matlab学习
上一节我们说了说怎么用matlab绘制饼图,这一节我们说一说使用matlab解决线性规划问题。
出了一点问题...知友们一定记得要先安装 optimization toolbox(优化工具箱)才能运行linprog等优化函数,不然系统会报错...问题是我不知道为什么总是安装不上,所以这一节我只能给各位说一说linprog函数的相关调用规则,实例暂时就放不了了(大哭)
linprog函数:
linprog函数用于计算matlab中线性规划问题的最小值,注意默认返回的是最小值。
这里的各种参数主要是以矩阵形式输入,其中有几个规则要先说在前面
(1)变量统一用x(n)表示
比如函数中有两个变量x和y,目标函数z=x+2y
那x用x(1)表示,y用x(2)表示
(2)用矩阵表示各参数的系数
比如若目标函数z=x-3y
那定义时z=[1 -3]这样
然后我们再来一个个的说一下linprog函数的调用格式:
整体上:
[x ans]=linprog(f,left,right,leq,req,lb,rb)
1、目标函数
首先我们要定义目标函数f=n1x1+n2x2+...
这里n1,n2都是各参数的系数
比如f=2x+3y
那先替换成f=2x(1)+3x(2)
程序中f=[2 3]
2、输入不等式
比如有不等式组:
我们先把它换成
注意这里都要是小于等于号
输入到程序中:
left=[-1 1;
2 -1]
矩阵的每一行对应每一个不等式,每一行的每一个元素对应每一个变量的系数
right=[1 3]
就是对应不等式右边的每一个元素
3、输入等式
这个比较特殊,就是如果点必须在某条线上
比如在这一条
x(1)+3x(2)=2
那leq=[1 3]
req=2
4、输入参数的取值范围
有时候我们还要规定各参数的取值范围
比如
−1≤x(1)≤1.5
−0.5≤x(2)≤1.25.
那么用lb表示下限,rb表示上限
lb=[-1 -0.5]
rb=[1.5 1.25]
4、输出结果
输出结果[x,ans]中
x表示各参数的取值,一个矩阵量
x=[x1,x2,...]
ans表示当各参数满足x矩阵的取值时,目标函数的最小值ans,是一个标量
tips:如果想求最大值,也很好办,就是把上述的所有系数都加个负号,算出最后答案ans之后再加一个负号,这样负负得正,结果返回的就是最大值
这节我们简单说了说怎么使用linprog函数,因为没有optimization toolbox,我们只能简单说一下调用规则,这样后续的内容就先暂定吧,我看看能不能早点得到mathworks公司的反馈把优化工具箱安装好,或者有没有知友知道怎么安装,能在评论区拉我一把(拱手),真的,我现在总是这个样子