首页 理论教育 线性规划问题的软件求解实例展示

线性规划问题的软件求解实例展示

时间:2023-05-16 理论教育 版权反馈
【摘要】:例1-10用Matlab 求解线性规划问题。解编写M 文件xxgh1.m 如下:例1-12用Lingo 求解线性规划问题。首先在模型窗体输入模型的目标函数,其中Par 公司问题的目标函数是max10 S+9D。一般来说,Lingo中的每一个数学表达式都以分号结束。Par 公司问题的第一个约束条件是0.7 S+1D≤630。作为求解过程的一部分,Lingo 提供了一个求解状态窗口,用来对求解过程进行监控。Lingo 将在一个名称为“Solution Report”的新窗口中显示求得的解。

线性规划问题的软件求解实例展示

例1-10 用Matlab 求解线性规划问题。

(1)模型:

命令:x=linprog(c,A,b)

(2)模型:

命令:x=linprog(c,A,b,Aeq,beq)

注意:若没有不等式AX≤b存在,则令A=[],b=[];若没有等式约束,则令Aeq=[],beq=[].

(3)模型:

命令:[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 表示初始点。

(4)命令:[x,fval]=linprog(…)

返回最优解x 及x 处的目标函数值fval.

例1-11 求解下列线性规划问题。

解 编写M 文件xxgh1.m 如下:(www.xing528.com)

例1-12 用Lingo 求解线性规划问题。

在这一部分,我们将介绍如何使用Lingo 解决Par 公司问题。当你启动Lingo 时,首先映入眼帘的是两个窗体。其中外部的窗体,或说主窗体,包含所有的控制菜单和命令工具栏;另一个较小的窗体是模型窗体,这个窗体用来输入和编辑你想解决的线性规划问题的模型。首先在模型窗体输入模型的目标函数,其中Par 公司问题的目标函数是max10 S+9D。于是,在Lingo 模型窗体的第一行,我们键入下面的表达式

max10*S+9*D;

注意:在Lingo中,用符号*来标记乘法,并且目标函数行以分号结尾。一般来说,Lingo中的每一个数学表达式(目标函数和约束条件)都以分号结束。

接下来,我们按回车键,进入下一行。Par 公司问题的第一个约束条件是0.7 S+1D≤630。于是,在Lingo 模型窗体的第二行,我们键入下面的表达式:

注意:Lingo 用符号<=表示≤,我们也可输入<来替代<=。就像输入目标函数时一样,在第一个目标函数的结尾也需要加一个分号。按回车键,进入下一行,我们继续键入剩下的约束条件,如下所示:

此时,模型窗口应该包括以下内容:

当向Lingo 里输入一个分数时,不需要将这个分数转换为相近的十进制数字。例如,若在Lingo中输入不需要担心转换成十进制数字,也不需要担心占十进制数字多少空间。想要输入可以输入或者0.7,让Lingo 自己计算。

Lingo 对于等式的形式具有非常强的灵活性,不需要将所有的变量移到等式左边,也不需要将常数项都移到等式右边。例如:

也可以按此形式输入:

这种形式对于以后用简洁和易懂的形式表达模型非常有帮助。最后,注意一下,虽然我们表示的是1*D,可是在Lingo中输入时,D 和1*D 都是一样的。

如果在模型输入时发生了错误,只需简单地将光标移动到出错处,进行修改就可以了。

为了对模型求解,你必须在Lingo 菜单中选择Solve 命令,或从主窗体顶部的工具栏中按下Solve 按钮。在确定模型是否遵循了所有的语法规则之后,Lingo 将开始求解过程。如果Lingo 没有通过这些测试,你将收到一条出错信息;如果Lingo 没有在输入的模型中发现任何错误,它将开始求解这个模型。作为求解过程的一部分,Lingo 提供了一个求解状态窗口,用来对求解过程进行监控。Lingo 将在一个名称为“Solution Report”的新窗口中显示求得的解。

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

我要反馈