MATLAB在线性规划中的应用.doc
MATLAB在线性规划中的应用
摘要
在各类经济活动中,经常遇到这样的问题:在生产条件不变的情下,如何通过统筹安排,改良生产组织或方案,合理安排人力、物力资源,组织生产过程,使总的经济效益最好。这样的问题常常可以化成或近似地化成所谓的“线性规划”〔LinearProgramming,简记为LP〕问题。线性规划是应用分析、量化的方法,对经济管理系统中的人、财、物等有限资源进行统筹安排,为决策者提供有依据的最优方案,以实现有效管理。利用线性规划我们可以解决很多问题。如:在不违反一定资源限制下,组织安排生产,获得最好的经济效益〔产量最多、利润最大、效用最高〕。也可以在满足一定需求条件下,进行合理配置,使本钱最小。同时还可以在任务或目标确定后,统筹兼顾,合理安排,用最少的资源〔如资金、设备、原材料、人工、时间等〕去完成任务。常规的手工解法复杂且运算量大,而MATLAB语言可以很好的处理线性规划问题,既能进行数值的求解,又能绘制有关线性图形,非常方便实用,利用其可以减少工作量,节约时间,加深理解,同样可以培养应用能力。
关键词:线性规划优化求解MATLAB语言
一、线性规划问题的在实际中的应用
线性规划问题的在实际应用中的作用
任何资源都是有限的,如何通过分配有限的资源获得人们所期望的效果,在工农业生产、交通运输、资本增值等各项经济活动中,如何提高经济效益,做到消耗较少的人力物力财力,创造出较多的经济价值,这些问题涉及分配,而线性规划为最优分配提供了工具。
线性规划主要研究的两类问题
一是一项任务确定后,如何统筹安排,尽量做到用最少的人力物力资源去完成这一任务。
二是已有一定数量的人力物力资源,如何安排使用它们,使得完成任务最多。常见的线性规划问题如:运输问题,生产的组织与方案问题,合力下料问题,配料问题、布局问题、分派问题等。
MATLAB在线性规划中的应用
1.MATLAB在线性规划中的指令
线性规划是一种优化方法,Matlab优化工具箱中有现成函数linprog[1]对如下式描述的LP问题求解:
%minfx
%s.t.(约束条件):Ax=b
%(等式约束条件):Aeqx=beq
%lb=x=ub
linprog函数的调用格式如下:
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)作有等式约束的问题。假设没有不等式约束,那么令A=[]、b=[]。
x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)中lb,ub为变量x的下界和上界,x0为初值点,options为指定优化参数进行最小化。
Options的参数描述:Display显示水平;选择’off’不显示输出;选择’Iter’显示每一步迭代过程的输出;选择’final’显示最终结果。
MaxFunEvals函数评价的最大允许次数。Maxiter最大允许迭代次数。TolXx处的终止容限。
[x,fval]=linprog(…)左端fval返回解x处的目标函数值。
[x,fval,exitflag,output,lambda]=linprog(f,A,b,Aeq,beg,lb,ub,x0)的输出局部。
exitflag描述函数计算的退出条件:假设为正值,表示目标函数收敛于解x处;假设为负值,表示目标函数不收敛;假设为零值,表示已经到达函数评价或迭代的最大次数。
output返回优化信息:output.iterations表示迭代次数;output.algorithm表示所采用的算法;outprt.funcCount表示函数评价次数。
lambda返回x处的拉格朗日乘子。它有以下属性:
lambda.lower-lambda的下界;
lambda.upper-lambda的上界;
lambda.ineqlin-lambda的线性不等式;
lambda.eqlin-lambda的线性