用linprog函数解线性规划
- 格式:ppt
- 大小:103.00 KB
- 文档页数:4


一、Matlab在线性规划中的应用Linear Programing, 又叫线性最优化(Linear Optimization)1、(1)线性规划首先要有一个目标函数(2)要有一组控制变量(或叫决策变量),且目标函数必须是控制变量的线性组合(即只能是一个线性方程).(3)需要一组约束条件(等式、不等式约束,特别注意这些变量是否大于0或变量的可能的取值范围) (要尽可能挖掘出所有的条件) (4)线性规划的目标是控制变量在满足约束条件下使目标函数达到最大或最小值。
1、线性规划问题即线性方程求最小值----有一个万能函数fmincon(当目标函数为多元一次方程时,它的最小值可以用此求,但有个万能的命令的fmincon)---且不能带常数项2、线性规划的函数为linprog此函数只能(只能线性方程(每项最多只有一次的多项式),n元-----------(即n元一次方程)完全可以用(因fmincon可以用来求任意方程的最小值)(任意方程,任意n元----任意条件)完全可以用代替(即可以不学linprog)两个函数都只能求最小值,(条件都只能是<=)(什么都是“小”)如要求最大值,两个函数都必须前后两次取反(1)使用格式为:x=linprog(f,A,b)x=linprog(f,A,b,Aeq,beq)x=linprog(f,A,b,Aeq,beq,l,u)x=linprog(f,A,b,Aeq,beq,l,u,x0)(参数个数为:3/5/7/8, 少了X0或让其置于末尾)不要编程序,用向量f来表示目标方程(同线性代数中的线性方程)(2)左边还可为:[x,fval]=……[x,fval,exitflag]=……[x,fval,exitflag,output]=……[x,fval,exitflag,output,lambda]=其中lambda表示拉格朗日乘子的内容所以最好是用三个返回结果,最后要根据exitflag判断结果的有效性(用法与fmincon把函数换成了系数向量(不要编程)(2)x0不要或置于末尾---因为没有额外编写程序)(3)x0为初始向量,一般不要使用f为目标函数的系数向量A*x<=b 构成了线性不等式条件Aeq*x=beq 构成了线性等式条件l<=x<=u 构成了上下限(4)注意:A:如要求最大值,则必须对目标函数取反,转化为先求出最小值,最后再将函数值取反即为所求的最大值.B:不等式约束条件是<=,如果为>=,则必须两边乘以-1,C:如前面的某些项没有使用,必须用空矩阵[ ]d:有3、5、7个等参数线性方程中不能有常数项,如有,先不要考虑,最后在结果上再加(或减)去该常数。
§15. 利用Matlab求解线性规划问题线性规划是一种优化方法,Matlab优化工具箱中有现成函数linprog对如下式描述的LP问题求解:% min f'x% s.t .(约束条件):Ax<=b% (等式约束条件):Aeqx=beq% lb<=x<=ublinprog函数的调用格式如下:x=linprog(f,A,b)x=linprog(f,A,b,Aeq,beq)x=linprog(f,A,b,Aeq,beq,lb,ub)x=linprog(f,A,b,Aeq,beq,lb,ub,x0)x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)[x,fval]=linprog(…)[x, fval, exitflag]=linprog(…)[x, fval, exitflag, output]=linprog(…)[x, fval, exitflag, output, lambda]=linprog(…)其中:x=linprog(f,A,b)返回值x为最优解向量。
x=linprog(f,A,b,Aeq,beq) 作有等式约束的问题。
若没有不等式约束,则令111A=[ ]、b=[ ] 。
x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options) 中lb ,ub为变量x的下界和上界,x0为初值点,options为指定优化参数进行最小化。
Options的参数描述:Display显示水平。
选择’off’ 不显示输出;选择’I ter’显示每一步迭代过程的输出;选择’final’ 显示最终结果。
MaxFunEvals 函数评价的最大允许次数Maxiter 最大允许迭代次数TolX x处的终止容限[x,fval]=linprog(…) 左端fval 返回解x处的目标函数值。
[x,fval,exitflag,output,lambda]=linprog(f,A,b, Aeq,beq,lb,ub,x0) 的输出部分:exitflag描述函数计算的退出条件:若为正值,表示目标函数收敛于解x 处;若为负值,表示目标函数不收敛;若为零值,表示已经达到函数评价或迭代的最大次数。
北京联合大学实验报告项目名称:运筹学专题实验报告学院:自动化专业:物流工程班级: 1201B 学号:2012100358081 姓名:管水城成绩:2015 年 5 月 6 日实验一:用matlab的linprog求解简单线性规划问题一、实验目的:(1)使学生在程序设计方面得到初步的训练;,学习Matlab (C或VB)语言进行程序设计中一些常用方法。
二、实验用仪器设备、器材或软件环境计算机, Matlab R2006a三、算法步骤、计算框图、计算程序等1. 线性规划模型的一般形式,目标函数和所有的约束条件都是设计变量的线性函数:.2. 用MATLAB优化工具箱解线性规划:命令:x=linprog(c, A, b)命令:x=linprog(c,A,b,Aeq,beq)注意:若没有不等式:存在,则令A=[ ],b=[ ].命令:[1] x=linprog(c,A,b,Aeq,beq, VLB,VUB)[2] x=linprog(c,A,b,Aeq,beq, VLB,VUB, X0)注意:[1] 若没有等式约束, 则令Aeq=[ ], beq=[ ].[2]其中X0表示初始点3.求解简单线性规划问题1. 求解:打开matlab2006a软件,如图所示,点击file,新建script文件hh1并输入程序代码。
图1程序代码:c=[-0.4 -0.28 -0.32 -0.72 -0.64 -0.6];A=[0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08];b=[850;700;100;900];Aeq=[]; beq=[];vlb=[0;0;0;0;0;0]; vub=[];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)运行该程序,结果如下图:图2由实验结果可知,该问题的最优解是x1=135,x2=20,x3=300,x3=0,x5=0,x6=0,最大值为250。