
运筹学实验一线性规划.doc
12页实验项目一 线性规划实验学时: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,影子价格是否一定没有意义?最优基是否一定改变?一般来说,这是不能从灵敏性分析报告中直接得到的此时,应该重新用新数据求解规划模型,才能做出判断所以,从正常理解的角度来看,我们上面回答“设备 A 最多增加 6)”并不是完全科学的实验思考:(第2题为选做题)1、某公司有三个工厂均可生产 A,B,C 三种产品.各产品的单件利润分别为 35 元,30 元和 25 元;市场预测表明:三种产品的需求量分别是 900,1200 和 750 件;各种产品的占地面积分别是 20,15 和 12 平方尺. 一厂仓库面积 13000 平方尺,二厂 12000 平方尺,三厂 5000 平方尺. 产品必须放在库内且在期末一次售出. 问如何按排各厂的生产计划, 使全公司的总收益最高, 建立线性规划模型并用软件计算结果,对结果做简单说明2、某厂生产甲、乙、丙三种产品,已知有关数据如下表所示,试分别回答下列问题:(1) 建立线性规划模型,求使该厂获利最大的生产计划;(2) 若产品乙、丙的单件利润不变,则产品甲的利润在什么范围内变化时,上述最解不变;(3) 若有一种新产品丁,其原料消耗定额:A 为 3 单位,B 为 2单位,单件利润为 2.5 单位。
问该产品是否值得安排生产,并求新的最优计划;若材料 A 市场紧缺,除拥有量外一时无法购进,而原材料 B 如数量不足可去市场购买,单价为 0.5,问该厂应否购买,并用运筹概念说明原因,并且购进多少为宜;3、某商场决定:营业员每周连续工作 5 天后连续休息 2 天,轮流休息根据统计,商场每天需要的营业员如下表所示营业员需要量统计表商场人力资源部应如何安排每天的上班人数,使商场总的营业员最少。
