管理运筹学计算机辅助教程_第1页
管理运筹学计算机辅助教程_第2页
管理运筹学计算机辅助教程_第3页
管理运筹学计算机辅助教程_第4页
管理运筹学计算机辅助教程_第5页
已阅读5页,还剩166页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

管理运筹学计算机辅助教程

田亚明主编

石家庄经济学院

2008年5月

刖口

本书关注学生基本理论知识的培养,积极探索“重视基础,拓展应用”

的特色,力图做到结构清晰合理,教材体系完整,内容丰富新颖。强调计

算机求解定量模型的方法,说明各种定量模型的应用前提条件及其注意事

项;有效利用著者管理学科视角的应用优势,重视定量模基本理论、基本

方法的实际应用,每章都配备典型应用案例及其案例分析,并给出计算机

求解程序,形成优化方法,模型应用并重的综合性教材,注重操作的深入

浅出,语言简练通顺,使本书成为具有经管类应用特色的定量分析模型的

辅助性教材。

本书作为中国人民大学出版的管理运筹学配套教材,由该书作者之一

田亚明组织石家庄经济学院老师完成,主要讲管理运筹学定量模型计算机

求解指导,以lindo/lingo在运筹学线性规划、目标规划、整数规划、动态

规划、网络分析、网络计划、存储分析、决策分析、随机服务等模型的应

用,对部分模型的求解。其中实验项目二和十由索贵彬编写;实验项目三

和四由江朝力编写;实验项目五由武建章编写;实验项目六和七由聂雅编

写;实验项目八和九由邢延铭编写;实验项目一、附录及全书统稿由田亚

明负责。

由于水平所限,书中存在很多不足甚至错误之处,欢迎读者不吝指正。

编者

2008年5月

本书实验总述

实验专业:管理类专业

实验学时:课程总学时48,其中实验学时12

实验数量:10

学时分配:12

实验学时

实验名称页码

序号分配

1实验项目一线性规划21

实验项目二应用运筹学CAI软件求解运输问

2113

3实验项目三目标规划119

4实验项目四整数规划126

5实验项目五动态规划233

6实验项目六图论(最短路和最大流问题)148

7实验项目七网络计划157

8实验项目八排队论163

9实验项目九存储论176

实验项目十应用运筹学CAI软件求解多目标

10195

决策问题

附录:lingo使用基础课外98

1实验项目一线性规划

实验学时:2

实验目的:线性规划(LinearProgramming,简写LP)是运筹学中最

成熟的一个分枝,而且是应用最为广泛的一个运筹学分枝,是解决最优化

问题的重要工具。而目前Lindo/lingo是求解线性规划比较成熟的一个软

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

灵活运用。

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

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

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

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

实验内容及步骤:

例:美佳公司计划制造I、n两种家电产品。已知各制造■-件时分别

占用设备A、B的台时、调试时间、调试工序每天可用于这种家电的能力、

各售出一件时的获利情况,如表1-1所示。

产品单位产品I用量单位产品n用量每天可用能力

设备A0515

设备B6224

调试工序115

单位产品获利21

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

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

影子价格是多少)。

3.若家电I的利润不变,家电n的利润在什么范围内变化时,则该公

司的最优生产计划将不发生变化。

1

4.若设备A和B每天可用能力不变,则调试工序能力在什么范围内

变化时,问题的最优基不变。

解:设玉表示产品I的生产量;它表示产品II的生产量,所在该线性规

划的模型为:

maxz=22+x2

Ox+5々<15

6XI+2X2<24

+x2<5

xpx2>0

从此线性规划的模型中可以看出,第一个小问是典型的生产计划问

题,第二小问是相应资源的影子价格,第三和第四个小问则是此问题的灵

敏度分析。

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

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

—4■A牌讯QQ

WindowsUpdate

应1瑞星杀毒软件►

I同金山词霸2005►

|回Hewlett-Packard►

幽交档①)*画HP►

lff?|Nero►

设置⑤)>包天网Maze►

1过(清华同方知网►

/搜索©》

1丽Sn&glt7►

Q帮助和支持国)应301PUSBCamera►

@QQ游戏►

-EJ运行⑥…

CMicrotekScanWizard5forWindows►

1国PhotoShowDeluxe3►

|注销Administratort)...

卜AcrobatDistiller70

回关闭计算机QI)...•'「AdobeAcrobat70Professional

QAdobeDesigner7.0

图1-1启动Lingo8.0

2

图1-2Lingo8.0的初始界面

第二步,在进行线性规划模型求解时,先要对初始求解方法及参数要

进行设置,首先选择lingo菜单下的Option菜单项,并切换在generalsolver

(通用求解器)页面下,如下图1-3所示:

图1-3generalsolver选项的初始设置

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

表格1-1generalsolver选项卡上的各项设置意义

选项组选项含义

GeneratorMemoryLimit(MB)缺省值为32M,矩阵生成器使用的内

矩阵生成器的内存限制(兆)存超过该限制,LINGO将报告"Themodel

3

generatorranoutofmemory*'

Iterations求解一个模型时,允许的最大迭代次数

Runtime

迭代次数(缺省值为无限)

Limits

Time(sec)求解一个模型时,允许的最大运行时间

运行限制运行前间(秒)

(缺省值为无限)

求解时控制对偶计算的级别,有三种可

能的设置:

DualComputations•None:不计算任何对偶信息;

(对偶计算)•Prices:计算对偶价格(缺省设置);

,PricesandRanges:计算对偶价格并分

析敏感性。

控制重新生成模型的频率,有三种可能

的设置:

•Onlywhentextchanges:只有当模型

ModelRegeneration的文本修改后才再生成模型;

(模型的重新生成)•Whentextchangesorwithexternal

references:当模型的文本修改或模型含有

外部引用时(缺省设置);

•Always:每当有需要时。

决定求解模型时线性化的程度,有四种

可能的设置:

SolverDecides:若变量数小于等于12

个,则尽可能全部线性化;否则不做任何线

Degree性化(缺省设置)

(线性化程,None:不做任何线性化

度)•Low:对函数@ABS(),@MAX(),

Linearization

@MIN(),@SMAX(),@SMIN(),以及二进

(线性化)

制变量与连续变量的乘积项做线性化

•High:同上,此外对逻辑运算符#LE#,

#EQ#,#GE#,#NE#做线性化

BigM(线性化设置线性化的大M系数(缺省值为

的大M系数)106)

Delta(线性化设置线性化的误差限(缺省值为10-6)

的误差限)

AllowUnrestrictedUseofPrimitive选择该选项可以保持与LINGO4.0以

SetMemberNames前的版本兼容:即允许使用基本集合的成员

(允许无限制地使用基本集合的名称直接作为该成员在该集合的索引值

成员名)(LINGO4.0以后的版本要求使用@INDEX

函数)。

CheckforDuplicateNamesinData选择该选项,LINGO将检查数据和模型

(检查日据和模型中的名称

andModel中的名称是否重复使用,如基本集合的成员

是否重复使用)名是否与决策变量名重复。

UseR/CformatnamesforMPSI/O

在MPS文件格式的输入输出中,将变

(在MPS文件格式的输入输出中使用

量和行名转换为R/C格式

R/C格式的名称)

4

接下来再对LinearSolver(线性求解器)选项卡进行设置,切换界面

如所示:

图l-4LinearSolver选项卡的初始设置

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

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

选项组选项含义

求解时的算法,有四种可能的设置:

•SolverDecides:LINGO自动选择算法

Method(缺省设置)

求解方法•PrimalSimplex:原始单纯形法

•DualSimplex:对偶单纯形法

•Barrier:障碍法(即内点法)

InitialLinearFeasibilityTol初控制线性模型中约束满足的初始误差限

始线性可行性误差限(缺省值为3*10")

FinalLinearFeasibilityTol.最Ji控制线性模型中约束满足的最后误差限

线性可行性误差限(缺省值为10-7)

控制是否检查模型中的无关变量,从而

降低模型的规模:

ModelReduction•Off:不检查

模型降维,On:检查

•SolverDecides:LINGO自动决定(缺

省设置)

5

有三种可能的设置:

•SolverDecides:LINGO自动决定(缺

省设置)

PrimalSolver•Partial:LINGO对一部分可能的出基变

原始单纯形法量进行尝试

,Devex:用Steepest-Edge(最陡边)近

Pricing

似算法对所有可能的变量进行尝试,找到使

Strategies

价格策略目标值下降最多的出基变量

(决定出基变有三种可能的设置:

量的策略)•SolverDecides:LINGO自动决定(缺

省设置)

DualSolver对•Dantzig:按最大下降比例法确定出基变

&

偶单纯形法里

,Steepest-Edge:最陡边策略,对所有可

能的变量进行尝试,找到使目标值下降最多

的出基变量

MatrixDecomposition选择该选项,LINGO将尝试将一个大模

矩阵分解型分解为几个小模型求解;否则不尝试

选择该选项,LINGO检查模型中的数据

ScaleModel

是否平衡(数量级是否相差太大)并尝试改

模型尺度的改变

变尺度使模型平衡;否则不尝试

因为这个线性规划模型较为简单,数字也是比较小的,而且需要进行

灵敏度分析,所以对generalsolver选项卡上的DualComputations(对偶

计算)项设为"PricesandRanges(计算对偶价格并分析敏感性)对Linear

Solver(线性求解器)选项卡上的Method(求解方法)项设为"PrimalSimplex

(原始单纯形法)”其余的选项采用Lingo默认值,注竟,如果模型变量

较多,数字较大时,就需要对其它选项进行设置。

第三步,在Ling。的命令窗口中输入此线性规划的模型(注意没有上

下标之分),如下图1-5所示:

6

图1-5输入模型界面

max=2*xl+x2;

5*x2<=15;

6*xl+2*x2<=24;

xl+x2<=5;

然后单击File菜单下的Save,将模型保存,以供以后使用。(当然也

可以不保存模型。

第四步,单击Lingo菜单下的Solver菜单项,对模型进行求解。其结

果如下所示:

7

WWF*'CW!ITWJMt,■,HWWSWl

图1-6模1的计算结果图

Globaloptimalsolutionfoundatiteration:4

Objectivevalue:8.,500000

VariableValueReducedCost

XI3.5000000.000000

X21.5000000.000000

RowSlackorSurplusDualPrice

18.5000001.000000

27.5000000.000000

30.0000000.2500000

40.0000000.5000000

求解器状态窗口对于监视求解器的进展和模型大小是有用的。求解器

状态窗口提供了一个中断求解器按钮(InterruptSolver),点击它会导致

LINGO在下一次迭代时停止求解。在绝大多数情况,LINGO能够交还和

报告到目前为止的最好解。•个例外是线性规划模型,返回的解是无意义

的,应该被忽略。但这并不是一个问题,因为线性规划通常求解速度很快,

8

很少需要中断。注意:在中断求解器后,必须小心解释当前解,因为这些

解可能根本就不最优解、可能也不是可行解或者对线性规划模型来说就是

无价值的。

在中断求解器按钮的右边的是关闭按钮(Close)。点击它可以关闭

求解器状态窗口,不过可在任何时间通过选择WindowslStatusWindow再

重新打开。

在中断求解器按钮的右边的是标记为更新时间间隔(UpdateInterval)

的域。LINGO将根据该域指示的时间(以秒为单位)为周期更新求解器

状态窗口。可以随意设置该域,不过若设置为0将导致更长的求解时间一

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

Total显示当前模型的全部变量数,Nonlinear显示其中的非线性变量

数,Integers显示其中的整数变量数。非线性变量是指它至少处于某一个

约束中的非线性关系中。

从计算结果告诉我们:这个线性规划的最优解为xl=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.50o从中还可以看出迭代经过了四步。

第五步,单击上图窗体中的close按钮,关闭求解窗体。然后再单击

模型窗体,使其处于活动状态。接着单击Ling。菜单下的Range菜单项,

其结果如下所示:

9

Maaye*anvhicb(hek>«aaaluictuuavmiiX

CaECflnsAllovabl*lllOMbla

CoexttcieniJncceo*

XI3.000000).0000001.000000

XZ1.0000001.000000O.9»39»3

RxgfctiMndSide*2。他・

w・CucrwMtAl|utra*>l»tnumhlw

WBInrreaae

215.00000mrwrrr7.SOOOOO

34.OOQQOt.QOQOOQ<.000000

■1.0000001.0000001.000000

图1-7灵敏度分析结果界面

即:Rangesinwhichthebasisisunchanged:

ObjectiveCoefficientRanges

CurrentAllowableAllowable

VariableCoefficientIncreaseDecrease

XI2.0000001.0000001.000000

X21.0000001.0000000.3333333

RighthandSideRanges

RowCurrentAllowableAllowable

RHSIncreaseDecrease

215.00000INFINITY7.500000

324.000006.0000006.000000

45.0000001.0000001.000000

目标函数的系数发生变化时(假定约束条件不变),最优解和最优值

会改变吗?这个问题不能简单地回答。上面输出给出了最优基不变条件下

目标函数系数的允许变化范围:X1的系数为(2-1,2+1)=(1,3);x2

的系数为(1-0.3333,1+1)=(0.6667,2)。注意:xl系数的允许范围

需要x2系数1不变,反之亦然。由于目标函数的费用系数变化并不影响

约束条件,因此此时最优基不变可以保证最优解也不变,但最优值变化。

用这个结果很容易回答附加问题3o

下面对“资源”的影子价格作进一步的分析。影子价格的作用(即在

10

最优解下“资源”增加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、某厂生产甲、乙、丙三种产品,已知有关数据如下表所示,

试分别回答下列问题:

消耗量产品

甲乙丙原料拥有量

原料

11

A63545

B34530

单件利415

(1)建立线性规划模型,求使该厂获利最大的生产计划;

(2)若产品乙、丙的单件利润不变,则产品甲的利润在什么范围

内变化时,上述最解不变;

(3)若有一种新产品丁,其原料消耗定额:A为3单位,B为2

单位,单件利润为2.5单位。问该产品是否值得安排生产,并求新的最优

计划;

若材料A市场紧缺,除拥有量外一时无法购进,而原材料B如数量

不足可去市场购买,单价为0.5,问该厂应否购买,并用运筹概念说明原

因,并且购进多少为宜;

3、某商场决定:营业员每周连续工作5天后连续休息2天,轮流休息。

根据统计,商场每天需要的营业员如下表所示。

营业员需要量统计表

星期需要人数星期需要人数

—■300五480

二300六600

三350日550

四400

商场人力资源部应如何安排每天的上班人数,使商场总的营业员最

少。

12

2实验项目二应用运筹学CAI

软件求解运输问题

实验学时:1

实验目的:

1、了解软件的界面和功能;

2、熟悉并掌握应用软件来求解运输问题;

实验内容:

1、运筹学CAI软件介绍

(1)主界面

该程序下包含数个模块,主界面是对各个模块的综合。如图2-1所示,

程序的主界面比较朴素,主要功能依靠菜单与快捷按钮来调用。图2-1

中标示出了各个快捷按钮所对应的功能,每个快捷按钮都对应着一个菜单

的功能。在程序运行过程中,当鼠标在快捷按钮上停留片刻时,将自动出

现提示文字。

图2-1主界面

13

图2-2新建项目

(2)新项目

选择主菜单"文件(F)”下的“新项目(N)”菜单,或是单击新项目按钮,

都将弹出一个对话框,提示是新建一个小问题的练习还是一个大项目的解

答,如图2-2所示。单击相应的按钮将开始一个新的项目,也可以单击取

消按钮取消本次操作。由于演示部分是程序事先已经封装好了的,无法重

新建立一个项目,因此演示部分将不出现在新项目的选择对话框里。

实现同样的功能,用户也可以通过直接单击主界面上的小问题练习按

钮与大项目解答按钮来开始一个小问题练习或是大项目解答的新项目。

(3)读取文件

在本程序中,数据文件将以四种文件格式存放:

■演示数据文件,扩展名为.sdt;

■小问题数据文件,扩展名为.edt;

■小问题迭代中间数据文件,扩展名为.tdt;

■大项目数据文件,扩展名为Jdt;

在用户的使用过程中,随着数据文件的逐步增多,有可能给用户带来

一定的困惑:忘记某一类数据文件应该在哪个模块里打开了。这时只要简

单地选择主菜单"文件(F)”下的“读取文件(R)”菜单,或是直接单击读

取文件按钮,在弹出的打开文件对话框里选择想要打开的数据文件,程序

将自动转入到与该文件相对应的模块中,并打开文件。

(4)第一模块:演示部分

14

下一步(g)

上一步的

另一示例国)..

退出g)

图2-3弹出菜单

选择主菜单“选择(C)”下的“演示(S)”菜单,或是单击演示按钮,

程序将转入到对示例的演示模块中。这时需要指定的是演示数据文件存放

的目录,并选择某一示例以及该问题的初始化方法(默认为第一示例,运

用西北角法),单击确定按钮后开始对该例子的演示。

进入演示模式后,直接单击鼠标左键或键盘的空格键,将继续下一步

的演示。如果要回到上一步的演示结果,可以单击鼠标右键,在弹出菜单

中选择“上一步(B)”项,如图2-3所示。此外,可以在弹出菜单中选择

“另一示例(A)…”项,退出当前的示例以开始另一个新的示例,或是直

接选择“退出(X)”项退出演示模块。

图2-4弹出框

在演示过程中,屏幕上一次只显示一步的数据,在某些时候需要将本

步的计算数据与前一步做互相比较时,程序提供了一个弹出的显示框。只

要将鼠标移动到屏幕的右上角时,该框自动弹出,在框内显示出上一步的

计算数据,如图2-4所示。

鼠标移开屏幕右上角之后,该弹出框将自动关闭隐藏,不影响正常的

演示过程。

(5)第二模块:小问题练习

15

选择主菜单“选择(C)”下的“小练习(P)”菜单,或是单击小问题练

习按钮,程序将转入到小问题练习模块中,界面如图5所示。

图2-5小问题练习

在该模块中可以对8x8矩阵以下的小练习进行逐步的演示。在右上角

的旋转按钮里可以选择产、销地的个数。随着旋转按钮里产、销地的改变,

运费表矩阵也将自动随之改变。在右下方的五个按钮中,包含了存储数据

到文件中,以及从文件中读取数据的功能。清空按钮用以根据当前的产、

销地数清空运费表中的数据,复位按钮将把产、销地数与运费表复位成为

图2-5中的默认设置。在确认数据输入无误后,单击确定按钮开始计算。

此时程序将对输入的数据进行检查,剔除无效的数据,表中所有空白的单

元格都将被视为零。如果数据无误,程序将检查是否出现产销不平衡的情

况,一旦出现产、销不平衡,程序将给出提示,并增加虚拟点、调整表中

的数据,此时用户需再次单击确定按钮,根据选择的寻找初始可行解的方

法,开始相应的计算。不论选择的是何种方法,在得到初始可行解后,都

统一转入对初始可行解的迭代过程,如图2-6所示。

16

图2-6迭代过程

在这里同样地可以对数据进行存储,也可以从文件读取数据。单击迭

代按钮,开始用位势法对分配方案进行检验和迭代,迭代结束后,在编辑

框内显示出当前方案下的目标函数值。如果已经达到最优方案,将弹出对

话框提示达到最优。在某些情况下,可能需要迭代许多步才能达到最优方

案,如果用户在迭代了数步后不再关心其他各步的迭代过程,可以点击右

下角的“直接得到结果”按钮。此时程序将不再显示中间过程,直接运算

出最终的最优结果,并显示该方案的分配情况与最终目标函数值。

另外,不论在迭代的任何时候,都可以通过点击左下角的新项目按钮,

重新开始一个小问题练习,但是现有的所有数据都将丢失(如果没有保存

的话),因此,程序将要求你确认是否真的开始一个新的项目。

(6)第三模块:大项目解答

选择主菜单“选择(C)”下的“大项目(L)”菜单,或是单击大项目解

答按钮,程序将转入到对大项目的解答模块中。界面上与小问题解答相类

似,但是略去了对获得初始可行解的方法的选择。在这个模块里,程序不

再显示中间的任何运算过程,而只给出最终的解决方案。因此,这里可以

17

运算的数据达到100x100矩阵。

在运算结束后,程序将把最终解决方案显示到一个网格中。由于通常

情况下,该模块运算的都是较大规模的数量,结果的显示有些紊乱,并且

容易让人感到迷惑。这种情况下程序提供了一个输出最终结果为文本文件

的功能,在输出的文本文件中,详细记录了从产地角度来看与从销地角度

来看的最佳运输方案,这一点无疑是具有较高的实用价值。

实验思考:

1、某公司从三个产地Al、A2、A3将物品运往四个销地Bl、B2、

B3、B4,各产地的产量、各销地的销量和各产地运往各销地每件物品的

运费如下表所示,问应如何调运,可使得总运输费最小?

销地

产地、BiB2B3Bi产量

3113107

A_19284

A3741059

销量365620(产销平

衡)

该问题的最优解为X|3=5,X|4=2,X21=3,X24=1,X32=6,X34=3,其余

的Xij=O,且该问题具有多重解。

总运费为:f=5X3+2X10+3Xl+1X8+6X4+3X5=85。

2、某公司从两个产地A-A2将物品运往三个销地&、B,、B3,各产地

的产量、各销地的销量和各产地运往各销地每件物品的运费如下表所示,

问:应如何调运可使总运输费用最小?

销地产地产量

B,B2B3

A,13151278

A?11292245

需求533625

18

3实验项目三目标规划

实验学时:1

实验目的:目标规划(goalprogramming)是由线性规划发展演变而

来的。线性规划考虑的是只有一个目标函数的问题,而实际问题中往往需

要考虑多个目标函数,这些目标不仅有主次关系,而且有的还相互矛盾。

这些问题用线性规划求解就比较困难,因而提出了目标规划。现阶段所讨

论的实际是线性目标规划。

由于LINDO不能直接求解目标规划问题,这并不意味着LINDO失

去了效力。序贯式算法是求解目标规划的一种早期算法,起核心是根据优

先级的先后次序,将目标规划问题分解成一系列的单目标规划问题,然后

再依次求解。

通过本实验,掌握线性目标规划模型在Lindo/lingo中的求解,并能

达到灵活运用。

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

2.掌握线性目标规划模型的序贯式算法。

实验内容及步骤:

序贯式算法其实就是分解成二种办法求解目标规划。

例:求解目标规划的序贯式算法

某音像店有5名全职售货员和4名兼职售货员,全职售货员每月工作

160h,兼职售货员每月工作80h,根据记录,全职每小时销售CD25张,

平均每小时工资15元,加班工资每小时22.5元。兼职售货员每小时销售

CD10张,平均工资每小时10元,加班工资每小时10元。现在预测下月

CD销售量为27500张,商店每周开门营业6天,所以可能要加班。每出

售一张CD盈利L5元。

商店经理认为,保持稳定的就业水平加上必要的加班,比不加班就业

水平好要好,但全职销售员如果加班过多,就会因为疲劳过度而造成效率

19

下降,因此不允许每月加班超过100h,建立相应的目标规划模型,并运

用LINGO软件求解。

解:首先建立目标约束的优先级。

P1:下月的CD销售量达到27500张。

P2:全职售货员加班时间不超过100ho

P3:保持全体售货员充分就业,对全职的要比兼职的加倍优先考虑。

P4:尽量减少加班时间,对两种售货员区别对待,权重由他们对利润

的贡献而定。

第二,建立目标约束

销售目标约束,设

XI:全体全职售货员下月的工作时间;

X2:全体兼职售货员下月的工作时间;

dl-:达不到销售目标的偏差;

dl+:超过销售目标的偏差。

125%+10x2+d「-d;=27500

(2)正常工作时间约束。设

d2v全体全职售货员下月的停工时间;

d2+:全体全职售货员下月的加班时间;

d3-:全体兼职售货员下月的停工时间;

d3+:全体兼职售货员下月的加班时间。

-+

,&+J2-d2-800,

%2+4dy=320.

加班时间的限制。设

d4v全体全职售货员下月的加班不足100h的偏差;

d4+:全体全职售货员下月的加班超过100h的偏差。

20

min

$+d;-d;=900,

另外,两种售货员区别对待,权重由他们对利润的贡献而定,

故权重比为:d2+:d3+=l:3,所以另一个加班目标约束为:

min"++3痣+}

<x}+d;一d2'=800,

=320.

第三,按目标的优先级,写出相应的目标规划模型:

++

minz=pxd~+p2d4++P3Q&+J3-)+p4(J2+3J3);

s.t252+10x2+d「-4J=27500,

玉+d?—d9—800,

xo+&——320,

$+dj-dj=900,

玉,W,4,d;>0,z=1,2,3,4.

第四,写出相应的LINGO程序,程序名:mb.lg4

MODEL:

sets:

Level/1,.4/:p,z.Goal;

Variable/1..2/:x;

S_Con_Num/l..4/:g,dplus,dminus;

S_Cons(S_Con_Num,Variable):c;

Obj(LevelsS_Con_Num):WpluszWminus;

endsets

data:

p=????;

Goal=?z?,?,0;

g=27500800320900;

c=2510100110;

Wplus=0000

0001

0000

0130;

Wminus=1000

0000

21

0210

0000;

enddata

min=@sum(Level:p*z);

@for(Level(i);

z(i)=@sum(S_Con_Num(j):Wplus(izj)*dplus(j))

+@sum(S_Con_Num(j):Wminus(i,j)*dminus(j));

@for(S_Con_Num(i):

©sum(Variable(j):c(i,j)*x(j))

+dminus(i)-dplus(i)=g(i);

);

@for(Level(i)/i#lt#@size(Level):

@bnd(0,z(i),Goal(i));

);

END

第一级的计算结果(只列出相关变量):

Globaloptimalsolutionfoundatiteration:8

Objectivevalue:0.000000

VariableValueReducedCost

X(1)800.00000.000000

X(2)750.00000.000000

第二级的计算结果(只列出相关变量):

Globaloptimalsolutionfoundatiteration:8

Objectivevalue:0.000000

VariableValueReducedCost

X(1)800.00000.000000

X(2)750.00000.000000

第三级的计算结果(只列出相关变量):

Globaloptimalsolutionfoundatiteration:1

Objectivevalue:0.000000

VariableValueReduce

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论