LINGO实验项目Word文档格式.docx
《LINGO实验项目Word文档格式.docx》由会员分享,可在线阅读,更多相关《LINGO实验项目Word文档格式.docx(46页珍藏版)》请在冰豆网上搜索。
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菜单项,并切换在generalsolver(通用求解器)
页面下,如下图1-3所示:
generalsolver选项卡上的各项设置意义如下表格1-1所示:
表格
1-1
generalsolver选项卡上的各项设置意义
接下来再对LinearSolver(线性求解器)选项卡进行设置,切换界面如所示:
其各项设置意义如下表格1-2所示:
1-2
LinearSolver选项卡各项设置意义
因为这个线性规划模型较为简单,数字也是比较小的,而且需要进行灵敏度分析,所以对generalsolver选项卡上的DualComputations(对偶计算)项设为“PricesandRanges(计算对偶价格并分析敏感性)”。
对LinearSolver(线性求解器)选项卡上的Method(求解方法)项设为“PrimalSimplex(原始单纯形法)”其余的选项采用Lingo默认值,注竟,如果模型变量较多,数字较大时,就需要对其它选项进行设置。
第三步,在Lingo的命令窗口中输入此线性规划的模型(注意没有上下标之分),如下图1-5所示:
然后单击File菜单下的Save,将模型保存,以供以后使用。
(当然也可以不保存模型。
第四步,单击Lingo菜单下的Solver菜单项,对模型进行求解。
其结果如下所示:
求解器状态窗口对于监视求解器的进展和模型大小是有用的。
求解器状态窗口提供了一个中断求解器按钮(InterruptSolver),点击它会导致LINGO在下一次迭代时停止求解。
在绝大多数情况,LINGO能够交还和
报告到目前为止的最好解。
一个例外是线性规划模型,返回的解是无意义的,应该被忽略。
但这并不是一个问题,因为线性规划通常求解速度很快,很少需要中断。
注意:
在中断求解器后,必须小心解释当前解,因为这些解可能根本就不最优解、可能也不是可行解或者对线性规划模型来说就是无价值的。
在中断求解器按钮的右边的是关闭按钮(Close)。
点击它可以关闭求解器状态窗口,不过可在任何时间通过选择Windows|StatusWindow再重新打开。
在中断求解器按钮的右边的是标记为更新时间间隔(UpdateInterval)的域。
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个单位时“效益”的增量)是有限制的。
每增加单位资源利润增长影子价格元,但是,上面输出的
CURRENTRHS的
ALLOWABLEINCREASE
和ALLOWABLEDECREASE
给出了影子价格有意义条件下约束右端的限制范围:
设备A可以无限的增加,设备B最多增加6,调试工序最多最多增加1。
很容易回答问题4的。
需要注意的是:
灵敏性分析给出的只是最优基保持不变的充分条件,而不一定是必要条件。
比如对于上面的问题,“设备A最多增加6”的含义只能是“设备A增加6”时最优基保持不变,所以影子价格有意义,即
利润的增加大于牛奶的投资。
反过来,设备A增加超过6,影子价格是否一定没有意义?
最优基是否一定改变?
一般来说,这是不能从灵敏性分析报告中直接得到的。
此时,应该重新用新数据求解规划模型,才能做出判断。
所以,从正常理解的角度来看,我们上面回答“设备A最多增加6)”
并不是完全科学的。
实验条件:
1.清华出版社《运筹学教程》教材;
2.Lindo/lingo计算机软件;
实验思考:
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天,轮流休息。
根据统计,商场每天需要的营业员如下表所示。
营业员需要量统计表
商场人力资源部应如何安排每天的上班人数,使商场总的营业员最少。
实验项目五 动态规划
2
动态规划(dynamicprogramming,DP)是解决多阶段决策问题的一种有效的数量化方法,难度比较大,技巧性也很强。
Lindo/lingo是求解动态规划比较常用的软件之一,通过本实验,掌握动态规划模型在Lindo/lingo中的求解。
1.掌握动态规划的建模步骤及方法;
2.掌握动态规划模型在Lindo/lingo转化及求解;
3.学会动态规划的执行结果分析
如图5-1所示,某地要从A向F地铺设一条输油管道,各点间连线上的数字表示距离。
问应选择什么路线,可是总距离最短?
图5-1