图1一个简单的项目计划
图中的方框表示项目中的各个任务。如果两个任务在水平方向上直接相连,或者有箭头相连,则表示后项任务的开始依赖于前项任务的完成。例如,在第二个2:CS开始之前,5:HW与3:HW都必须完成。方框中的数字代表完成该任务需要几周的时间;字母代表需要的资源。现有的资源包括:一个程序员(Prog),一个硬件技术员(HW),一个客户服务代表(CS)以及一个工程师(Eng)。
由于这些人力资源可能在其它项目中也有工作,因此他们完成各自任务的时间有着很大的不确定性。为解决这一问题,一个办法是在每处都加上“减振器”,如图2。图中的粗线标出了关键路径(完成时间最长的一条路径)。
图2增加了安全时间的项目计划
现在我们要问,这样的排程是否更合理了呢?答案是否定的,因为:对于硬件技术员仍然处于争用的状态,3:CS一定要在5:HW完成之后才能开始,所以,关键路径上的时间(3+5+8+3=19周)并不能成为整个项目完成所需的真正时间。
步骤1:解决资源的争用
不难想到,首先我们要解决资源争用的问题。本例中,见图3。应注意到以下几点:
图3解决了资源争用的计划
图中没有追加如图2中的安全时间(Safetytime),方框中的时间是平均意义上的完工所需时间,“减振器”将在后文插入。
有些任务(如4:Prog)是到最晚开始时间(LateStarts)才开始,而不是在最早开始时间(EealyStarts)。这是因为,我们只有插入“减振器”时,才会把任务开始时间提前,而现在我们还没有确定“减振器”在哪里插入。
我们没有特别强调某一种“资源平衡”的算法。实际上,尽管我们可以通过某一种算法得出一个“最优”的排程方案,但我们以后遭遇的不确定性仍将使得这种“最优”大打折扣。
图中的排程目前是完工期最短的,但务必注意,仅仅在不存在任何不确定性的情况下才会这样。




