background-image: url("../pic/slide-front-page.jpg") class: center,middle exclude: FALSE # 数据、模型与决策</br></br>(Data, Model and Decision) <!--- chakra: libs/remark-latest.min.js ---> ### 胡华平 ### 西北农林科技大学 ### 经济管理学院数量经济教研室 ### huhuaping01@hotmail.com ### 2025-04-01
--- class: center, middle, duke-orange,hide_logo name: chapter09 exclude: FALSE # 第9章 项目安排:</br></br>计划评审法/关键路线法 ### [9.1 活动时间已知的项目安排](#known) ### [.white[9.2 活动时间不确定的项目安排]](#uncertain) ### [9.3 时间与成本抉择](#option) --- layout: false class: center, middle, duke-softblue,hide_logo name: uncertain # 9.2 活动时间不确定的项目安排 --- layout: true <div class="my-header-h2"></div> <div class="watermark1"></div> <div class="watermark2"></div> <div class="watermark3"></div> <div class="my-footer"><span>huhuaping@    <a href="#chapter09"> 第09章 项目安排</a>                       <a href="#uncertain">9.2 活动时间不确定的项目安排</a> </span></div> --- ## 道特公司吸尘器案例:背景 .case[ **案例说明**: - 道特公司管理层希望对无绳吸尘器这种产品制造的可行性进行研究,以便决定是否生产该产品。 - 为了完成可行性研究,公司需要从研发部门、产品测试部、生产部、成品估计部和市场调查部获取足够的信息。 ] --- ## 道特公司吸尘器案例:项目活动
--- ## 道特公司吸尘器案例:网络图 根据表中给出的活动信息,可以构造一个项目网络图: - 网络中的节点(方形框)代表每项活动,弧(箭头线)代表各项活动之间的优先顺序。 <img src="../pic/chpt09-PV-network-path-raw.png" width="750" style="display: block; margin: auto;" /> --- ## 道特公司吸尘器案例:时间不确定性的类型 .fyi[ 为了对不确定活动进行分析,需要获取每项活动的3个估计时间: - 乐观的估计时间a:每项活动都能顺利进行的最小活动时间 - 最可能的估计时间m:一般状态下最可能的活动时间 - 悲观的估计时间b:遭遇重大延误时的最大活动时间 ] - 而且假设估计时间t服从期望 `\(E(t)\)`和方差 `\(var(t) \equiv \sigma^2_t\)`如下的 `\(\beta\)`分布: `$$\begin{align} E(t) &= \frac{a +4m +b}{6} \\ var(t) \equiv \sigma^2_t &= \left(\frac{b-a}{6} \right)^2 \end{align}$$` --- ### 活动时间不确定性:数据表
??? 道特公司吸尘器项目活动的可能时间 --- ### 活动时间不确定性:计算活动A的期望时间及方差 根据上述数据表,我们可以计算得到活动A的期望时间和方差: - A的期望活动时间: `$$\begin{align} E(t)_A &= \frac{a +4m +b}{6} = \frac{4 +4\times5 +12}{6} = 6\\ \end{align}$$` - A活动时间的方差: `$$\begin{align} var(t)_A \equiv \sigma^2_{t,A} &= \left(\frac{b-a}{6} \right)^2 =\left(\frac{12-4}{6} \right)^2 = 1.78 \end{align}$$` --- ### 活动时间不确定性:计算活动A的期望时间及方差 考虑到活动时间不确定性是建立在 `\(\beta\)`概率分布假设基础上的,我们可以将活动A的时间不确定性做如下展示: <img src="../pic/chpt09-PV-A-Et.png" width="700" style="display: block; margin: auto;" /> 类似地,我们可以计算出其他所有活动的期望时间和方差(见下一页)。 --- ### 活动时间不确定性:计算期望时间及方差
--- ## 道特公司吸尘器案例:关键路径 .fyi[ 当我们知道了项目网络图和每项活动的期望活动时间后,就可以确定项目的关键路径,以便确定完成整个项目的期望时间和活动时间表,进而找出关键活动和关键路径。 ] 具体思路如下: - 在计算时,将期望活动时间视为固定值或已知值。利用前述方法求关键路径,之后分析活动时间方差的影响。 - 利用**向后推进**法求出每项活动的最早开始时间ES和最早完成时间EF - 利用**向前逆推**法,求出每项活动的最晚开始时间LS和最晚完成时间LF。 - 计算各项活动的**松弛量**,以确定整个项目的所有**关键活动** - 依据**关键活动**,找出项目的**关键路径**! --- ### 道特公司吸尘器案例:活动时间
--- ### 道特公司吸尘器案例:路径网络图(给出活动时间) - 根据数据表,给出道特公司吸尘器项目所有活动的期望时间E(t)。 <img src="../pic/chpt09-PV-path-network-with-time.png" width="850" style="display: block; margin: auto;" /> --- ### 道特公司吸尘器案例:路径网络图(计算出ES和EF) - 利用“向后推进”法,计算得到道特公司吸尘器项目所有活动的最早开始时间ES和最早完成时间EF。 <img src="../pic/chpt09-PV-network-path-ES-EF.png" width="850" style="display: block; margin: auto;" /> --- ### 道特公司吸尘器案例:路径网络图(计算出LS和LF) - 利用“向前逆推”法,计算得到道特公司吸尘器项目所有活动的最晚开始时间LS和最晚完成时间LF。 <img src="../pic/chpt09-PV-network-path-LS-LF.png" width="850" style="display: block; margin: auto;" /> --- ### 计算所有活动的松弛量和所有关键活动
--- ### 找到整个项目的所有关键活动 <img src="../pic/chpt09-PV-network-path-keys.png" width="700" style="display: block; margin: auto;" /> - 活动A、E、H、I、J都没有任何松弛量 `\((Slack = 0)\)` - 因此这五项活动都是道特公司吸尘器项目路径图的**关键活动**! - 这也进一步意味着:这些关键活动之前的**非关键活动**所能容忍的最大松弛量(或延误时间),都可能会增加整体项目的完工时间! --- ### 道特公司吸尘器案例:项目完成时间的方差 .notes[ 关键路径上活动时间的方差可能会导致项目总体完成时间的方差。 因此,我们将使用关键路径活动时间的方差来确定项目总体完成时间的方差。 - 用T来表示完成整个项目所需要的总时间,则T的期望值就是所有关键活动期望完成时间之和。 - 项目完成时间的方差就等于所有关键路径活动时间方差之和。 ] --- exclude:true ## R chunk: 4条路径的概率计算 --- ## 道特公司吸尘器案例:路径的时间期望和方差 我们重点观察如下四条关键路径: - 路径1: `\(A \Rightarrow E \Rightarrow H \Rightarrow I \Rightarrow J\)` - 路径2: `\(A \Rightarrow C \Rightarrow F \Rightarrow J\)` - 路径3: `\(A \Rightarrow D \Rightarrow G \Rightarrow J\)` - 路径4: `\(B \Rightarrow H \Rightarrow I \Rightarrow J\)` --- ## 道特公司吸尘器案例:路径的时间期望和方差
--- ### 路径1的计算:活动的期望时长和方差(数据形式1) 下面我们先计算路径1: `\(A \Rightarrow E \Rightarrow H \Rightarrow I \Rightarrow J\)`活动时间的期望和方差。
.footnote[ **说明**:其他路径可以类似计算得到 ] --- ### 路径1的计算:活动的期望时长和方差(数据形式2) 下面我们先计算路径1: `\(A \Rightarrow E \Rightarrow H \Rightarrow I \Rightarrow J\)`活动时间的期望和方差。
--- ### 路径1的计算:方案期望总时长和方案时长方差 利用上述数据表,我们可以计算得到: - 路径1的期望总时长为17周: `$$\begin{align} E\left(T_{1}\right)=t_{\mathrm{A}}+t_{\mathrm{E}}+t_{\mathrm{H}}+t_{\mathrm{I}}+t_{\mathrm{J}}=6+3+4+2+2=17 \end{align}$$` - 路径1的各项活动时长的方差为2.72周 `\(^2\)`: `$$\begin{align} \sigma_{1}^{2}=\sigma_{\mathrm{A}}^{2}+\sigma_{\mathrm{E}}^{2}+\sigma_{\mathrm{H}}^{2}+\sigma_{\mathrm{I}}^{2}+\sigma_{\mathrm{J}}^{2}=1.78+0.11+0.69+0.03+0.11=2.72 \end{align}$$` - 路径1的各项活动时长的标准差为1.65周: `$$\begin{align} \sigma_{1}=\sqrt{\sigma_1^2}=\sqrt{2.72} =1.65 \end{align}$$` --- ### 路径1的计算:限期要求与完成的概率 .puzzle[ 道特公司管理层希望计划在20周之内完成吸尘器项目,那么路径1的进度方案满足这个20周期限的概率是多少呢? ] .pull-left[ <img src="../pic/chpt09-PV-z-distribution-demo01.png" width="876" height="400" style="display: block; margin: auto;" /> ] .pull-right[ - 假设项目完成时间T服从正态分布(钟形分布),那么我们就可以利用这个分布图,计算得到满足特定完成期限要求的概率。 ] --- ### 路径1的计算:正态分布与概率计算 .puzzle[ 道特公司管理层希望计划在20周之内完成吸尘器项目,那么路径1的进度方案满足这个20周期限的概率是多少呢? ] .pull-left[ <img src="../pic/chpt09-PV-z-distribution-demo02.png" width="871" height="400" style="display: block; margin: auto;" /> ] .pull-right[ - 如果T服从正态分布,则可以构造出一个标准正态分布 `$$\begin{align} T &\sim N(E(T), \sigma^2) \\ Z = \frac{T-E(T)}{\sigma} &\sim N(0, 1 ) \end{align}$$` - 若期限设定为 `\(T=20\)`周,则通过计算可得到统计量 `\(Z^* = \frac{20-17}{1.65}=1.82\)` - 最后通过正态分布概率查表,可以得到期限内完成的概率值 `\(p =0.9655\)` ] --- ### 全部路径方案的计算:正态分布与概率计算(独立概率) 根据同样的方法,我们可以算出在给定期限 `\(T=20\)`周的要求下,全部4条安排方案都达到要求的概率值。
- 注意,这里计算得到的概率,是4条路径安排方案各自独立运行下,能在限期 `\(T=20\)`周内都能完成的独立概率。 --- ### 全部路径方案的计算:回看所有路径 <img src="../pic/chpt09-PV-network-path-keys.png" width="1533" height="520" style="display: block; margin: auto;" /> --- ### 全部路径方案的计算:正态分布与概率计算(联合概率) 如果4条方案同时进行,那么限期 `\(T=20\)`周内都能完成的联合概率又是多少呢?
我们可以根据下式计算得到联合概率为: `$$\begin{align} P_{all} &= \prod_{i=1}^4{P_i}=P_1\times P_2\times P_3\times P_4\\ & = 0.9655\times 1.0000\times 0.9784\times 1.0000 = 0.9446 \end{align}$$` --- ### 管理科学家软件:PERT/CPM关键路径程序 .notes[ 下面,我们还需要使用管理科学家软件,对活动时间不确定的项目安排,进行操作和训练。 ] --- layout:false background-image: url("../pic/thank-you-gif-funny-fan.gif") class: inverse,center # 本节结束