资源描述:
《线性规划:linprog函数》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Linprog针对的线性函数模型为这里是向量,是矩阵。Linprog计算算法为:1.约束优化问题的拉格朗日乘法2.单纯形法Linprog函数的格式为:1.求解目标函数,约束输入:目标函数系数向量不等式约束系数矩阵不等式约束常数向量输出::最优解2.输入::等式约束系数矩阵:等式约束常数向量3.输入::可行域下界:可行域上界4.输入::初始迭代点5.输入::优化参数设置6.输出::最优化目标函数值7.输出:算法停止原因8.输出::优化结果的约束信息9.输出::结果对应的拉格朗日乘子输出参数说明::
2、返回算法迭代停止原因返回值:1算法收敛于解x,即x是线性规划的最优解0算法达到最大迭代次数停止迭代,即x不一定是线性规划的最优解-2算法没有找到可行解,即算法求解失败,问题的可行解集合为空-3原问题无解,即最优解可能为正(负)无穷-4在算法中出现除零问题或其他问题,导致变量中出现非数值情况-5线性规划的原问题与对偶问题都不可解-7可行搜索方向向量过小,无法再提高最优解质量:返回解得拉格朗日乘子与约束符合情况:求得解越下界:求得解越上界:求得解不满足不等式约束:求得解不满足等式约束:返回算法信息:
3、计算时使用的优化算法:共轭梯度迭代次数:算法迭代次数:返回结束信息实例1:使用输入:f=[-1,-1,-1];%目标函数系数A=[7,3,9;8,5,4;6,9,5];%不等式约束的系数矩阵b=[1,1,1,];%不等式约束的bAeq=[];%等式约束的系数矩阵beq=[];%等式约束的beqlb=[0,0,0];%变量的下界ub=[];%变量的上界[x,fval,exitflag,output,lambda]=linprog(f,A,b,Aeq,beq,lb,ub)输出:Optimizatio
4、nterminated.x=0.08700.03560.0316fval=-0.1542exitflag=1output=iterations:7algorithm:'large-scale:interiorpoint'cgiterations:0message:'Optimizationterminated.'lambda=ineqlin:[3x1double]eqlin:[0x1double]upper:[3x1double]lower:[3x1double]使用的单纯形法输入:f=[-1,
5、-1,-1];%目标函数系数A=[7,3,9;8,5,4;6,9,5];%不等式约束的系数矩阵b=[1,1,1,];%不等式约束的bAeq=[];%等式约束的系数矩阵beq=[];%等式约束的beqlb=[0,0,0];%变量的下界ub=[];%变量的上界options=optimset('LargeScale','off','Simplex','on','Display','iter');[x,fval,exitflag,output,lambda]=linprog(f,A,b,Aeq,beq
6、,lb,ub,[],options)输出:Thedefaultstartingpointisfeasible,skippingPhase1.Phase2:Minimizeusingsimplex.IterObjectiveDualInfeasibilityf'*xA'*y+z-w-f001.732051-0.1250.6252-0.1363640.53-0.154150Optimizationterminated.x=0.08700.03560.0316fval=-0.1542exitflag=
7、1output=iterations:3algorithm:'mediumscale:simplex'cgiterations:[]message:'Optimizationterminated.'lambda=ineqlin:[3x1double]eqlin:[0x1double]upper:[3x1double]lower:[3x1double]实例2:使用一下函数格式:输入:f=1:10;%1:10就是1,2,...,10即目标函数系数A=[7,3,9,0,0,0,0,0,0,0;8,5,
8、4,0,0,0,0,0,0,0];%不等式约束的系数矩阵b=[1,1];%不等式约束的bAeq=[1,1,1,1,1,1,1,1,1,1];%等式约束的系数矩阵beq=1;%等式约束的beqlb=[0,0,0,0,0,0,0,0,0,0];%变量的下界ub=[];%变量的上界options=optimset('Display','iter');%展示算法每次迭代结果x0=[];%不设置算法的初始迭代点[x,fval,exitflag,output,lambda]=linprog(f,A,b,Ae