理论教育 MATLAB运筹学指导及linprog函数

MATLAB运筹学指导及linprog函数

时间:2023-11-17 理论教育 版权反馈
【摘要】:x=linprog,定义设计变量x的下界lb和上界ub,使得x始终在该范围内。x=linprog,设置初值为x0。[x,lambda,exitflag]=linprog(…),返回exitflag值,描述函数计算的退出条件。linprog函数使用的是一种活动集方法,是线性规划中单纯形法的变种。有些问题可能导致linprog函数退出,并显示不可行的信息。

MATLAB运筹学指导及linprog函数

功能:求解线性规划问题。

模型:

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

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈