LINGO实验项目

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验项目一线性规划

实验学时:2

实验目的:线性规划(Linear Programming,简写LP)是运筹学中最成熟的一个分枝,而且是应用最为广泛的一个运筹学分枝,是解决最优化问题的重要工具。而目前 Lindo/lingo 是求解线性规划比较成熟的一个软

件,通过本实验,掌握线性规划模型在 Lindo/lingo 中的求解,并能达到灵活运用。

实验要求:1.掌握线性规划的建模步骤及方法;

2.掌握Lindo/lingo 的初步使用;

3.掌握线性规划模型在Lindo/lingo 建模及求解;

4.掌握线性规划的灵敏度分析

实验内容及步骤:

例:美佳公司计划制造I、II 两种家电产品。已知各制造一件时分别占用设备A、B 的台时、调试时间、调试工序每天可用于这种家电的能力、各售出一件时的获利情况,如表1-1 所示。

1.问该公司应制造两种家电各多少件,使其获取的利润最大。

2. 如果资源出租,资源出租的最低价格至少是多少(即每种资源的影子价格是多少)。

3.若家电I 的利润不变,家电II 的利润在什么范围内变化时,则该公司的最优生产计划将不发生变化。

4. 若设备A 和B 每天可用能力不变,则调试工序能力在什么范围内变化时,问题的最优基不变。

解:设x1表示产品I 的生产量; x2表示产品II 的生产量,所在该线性规划的模型为:

从此线性规划的模型中可以看出,第一个小问是典型的生产计划问题,第二小问是相应资源的影子价格,第三和第四个小问则是此问题的灵敏度分析。

现在我们利用lingo8.0 来教你求解线性规划问题。

第一步,启动lingo 进入初始界面如下图1-1 和图1-2 所示:

第二步,在进行线性规划模型求解时,先要对初始求解方法及参数要进行设置,首先选择lingo 菜单下的Option 菜单项,并切换在general solver(通用求解器)页面下,如下图1-3 所示:

general solver 选项卡上的各项设置意义如下表格1-1 所示:表格1-1 general solver 选项卡上的各项设置意义

接下来再对Linear Solver(线性求解器)选项卡进行设置,切换界面如所示:

其各项设置意义如下表格1-2 所示:

表格1-2 Linear Solver 选项卡各项设置意义

因为这个线性规划模型较为简单,数字也是比较小的,而且需要进行灵敏度分析,所以对general solver 选项卡上的Dual Computations(对偶计算)项设为“Prices and Ranges(计算对偶价格并分析敏感性)”。对Linear Solver(线性求解器)选项卡上的Method(求解方法)项设为“Primal Simplex (原始单纯形法)”其余的选项采用Lingo 默认值,注竟,如果模型变量较多,数字较大时,就需要对其它选项进行设置。第三步,在Lingo 的命令窗口中输入此线性规划的模型(注意没有上下标之分),如下图1-5 所示:

然后单击File 菜单下的Save,将模型保存,以供以后使用。(当然也可以不保存模型。第四步,单击Lingo 菜单下的Solver 菜单项,对模型进行求解。其结果如下所示:

求解器状态窗口对于监视求解器的进展和模型大小是有用的。求解器状态窗口提供了一个中断求解器按钮(Interrupt Solver),点击它会导致LINGO 在下一次迭代时停止求解。在绝大多数情况,LINGO 能够交还和

报告到目前为止的最好解。一个例外是线性规划模型,返回的解是无意义的,应该被忽略。但这并不是一个问题,因为线性规划通常求解速度很快,很少需要中断。注意:在中断求解器后,必须小心解释当前解,因为这些解可能根本就不最优解、可能也不是可行解或者对线性规划模型来说就是无价值的。

在中断求解器按钮的右边的是关闭按钮(Close)。点击它可以关闭求解器状态窗口,不过可在任何时间通过选择Windows|Status Window 再重新打开。在中断求解器按钮的右边的是标记为更新时间间隔(Update Interval)的域。LINGO 将根据该域指示的时间(以秒为单位)为周期更新求解器状态窗口。可以随意设置该域,不过若设置为0 将导致更长的求解时间—

—LINGO 花费在更新的时间会超过求解模型的时间。

Total 显示当前模型的全部变量数,Nonlinear 显示其中的非线性变量数,Integers 显示其中的整数变量数。非线性变量是指它至少处于某一个约束中的非线性关系中。

从计算结果告诉我们:这个线性规划的最优解为x1=3.5,x2=1.5,最优值为z=8.5,即产品I 生产 3.5 件,产品II 生产 1.5 件,可获最大利润8.5

元。另外还可以看出第一个约束的资源剩余7.5 个单位,即设备 A 剩

余,对应的影响价格为0;第二个约束和第三个约束对应的资源没有剩余,相应的影子价格为0.25 和0.50;即设备A、设备 B 和调试工序的出让价格分别为0、0.25、0.50。从中还可以看出迭代经过了四步。

第五步,单击上图窗体中的close 按钮,关闭求解窗体。然后再单击模型窗体,使其处于活动状态。接着单击Lingo 菜单下的Range 菜单项,其结果如下所示:

目标函数的系数发生变化时(假定约束条件不变),最优解和最优值会改变吗?这个问题不能简单地回答。上面输出给出了最优基不变条件下目标函数系数的允许变化范围:x1 的系数为(2-1,2+1)=(1,3);x2

的系数为(1-0.3333,1+1)=(0.6667,2)。注意:x1 系数的允许范围需要x2 系数1 不变,反之亦然。由于目标函数的费用系数变化并不影响约束条件,因此此时最优基不变可以保证最优解也不变,但最优值变化。用这个结果很容易回答附加问题3。

下面对“资源”的影子价格作进一步的分析。影子价格的作用(即在最优解下“资源”增加 1 个单位时“效益”的增量)是有限制的。每增加单位资源利润增长影子价格元,但是,上面输出的 CURRENT RHS 的

ALLOWABLE INCREASE 和ALLOWABLE DECREASE 给出了影子价格有意义条件下约束右端的限制范围:设备A 可以无限的增加,设备B最多增加6,调试工序最多最多增加1。很容易回答问题4 的。

需要注意的是:灵敏性分析给出的只是最优基保持不变的充分条件,而不一定是必要条件。比如对于上面的问题,“设备 A 最多增加6”的含义只能是“设备A 增加6”时最优基保持不变,所以影子价格有意义,即

利润的增加大于牛奶的投资。反过来,设备 A 增加超过6,影子价格是否一定没有意义?最优基是否一定改变?一般来说,这是不能从灵敏性分析报告中直

相关文档
最新文档