功能:求解线性规划问题。
模型:
s.t.A·x≤b
Aeq·x=beq
lb≤x≤ub
调用格式:
描述:
x=linprog(f,A,b),求解问题min fTx,约束条件为Ax≤b。
x=linprog(f,A,b,Aeq,beq),求解上面的问题,但增加等式约束,即Aeqx=beq。若没有不等式存在,则令A=[ ],b=[ ]。
x=linprog(f,A,b,Aeq,beq,lb,ub),定义设计变量x的下界lb和上界ub,使得x始终在该范围内。若没有等式约束,令Aeq=[ ]、beq=[ ]。
x=linprog(f,A,b,Aeq,beq,lb,ub,x0),设置初值为x0。该选项只适用于中型问题,缺省时,大型算法将忽略初值。
x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options),用options指定的优化参数进行最小化。
[x,fval]=linprog(…),返回解x处的目标函数值fval。
[x,lambda,exitflag]=linprog(…),返回exitflag值,描述函数计算的退出条件。
[x,lambda,exitflag,output]=linprog(…),返回包含优化信息的输出变量output。
[x,fval,exitflag,output,lambda]=linprog(…),将解x处的拉格朗日乘子返回到lambda参数中。
变量:
lambda参数是解x处的拉格朗日乘子。它有以下一些属性:
lambda.lower,lambda的下界。(www.daowen.com)
lambda.upper,lambda的上界。
lambda.ineqlin,lambda的线性不等式。
lambda.eqlin,lambda的线性等式。
其他参数意义同前。
算法:
大型优化算法:大型优化算法采用的是LIPSOL法,该法在进行迭代计算之前,首先要进行一系列的预处理。
中型优化算法:linprog函数使用的是投影法,就像quadprog函数的算法一样。linprog函数使用的是一种活动集方法,是线性规划中单纯形法的变种。它通过求解另一个线性规划问题来找到初始可行解。
诊断:
大型优化问题:算法的第一步涉及一些约束条件的预处理问题。有些问题可能导致linprog函数退出,并显示不可行的信息。在本例中,exitflag参数将被设为负值,以表示优化失败。
若参数Aeq中某行的所有元素都为零,但参数Beq中对应的元素不为零,则显示以下退出信息:
Exiting due to infeasibility:an all zero row in the constraint matrix does not have a zero in corresponding right hand size entry.
若x的某一个元素没在界内,则给出以下退出信息:
Exiting due to infeasibility:objective f′∗x is unbounded below.
若Aeq参数的某一行中只有一个非零值,则出x中的相关值称为奇异变量。这里,x中该成分的值可以用Aeq和Beq算得。若算得的值与另一个约束条件相矛盾,则给出以下退出信息:
Exiting due to infeasibility:Singleton variables in equality constraints are not feasible.
若奇异变量可以求解但其解超出上界或下界,则给出以下退出信息:Exiting due to infeasibility:singleton variables in the equality constraints are not within bounds.
例2.45
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。