C语言解决双代号网络计划中费用优化问题的思路探析
2019-10-06朱雨红
朱雨红
摘 要:隨着现代生产技术水平的不断提升,在工程项目的管理推进过程中,网络计划技术逐渐取代传统的静态管理模式,以达到动态管控工程项目、全面满足工程项目实际需求的目的,有利于控制工程项目成本、节约企业社会资源、提高施工效率、增强企业的竞争力。在此基础上,怎样找到最佳网络计划方案对于工程项目的实施十分关键。将双代号网络计划图与C语言相结合,通过建立基于网络计划图的C语言计算模型,旨在为双代号网络计划优化中的费用优化提供一种算法解决思路。
关键词:双代号网络计划;费用优化;C语言;CPM
中图分类号:TB 文献标识码:Adoi:10.19311/j.cnki.1672-3198.2019.29.104
网络计划技术在现代工程项目的监督管理中有着重要的影响。它凭借科学合理的方法详细规划工程项目,通过对多方面资源的优化配置即网络计划优化,可以减少项目的费用支出,高效减少项目整体的工期,提高工程施工的效率,减少企业投入的费用成本,增强企业的竞争力。网络计划的优化根据优化目标不同,分为工期优化、费用优化和资源优化。双代号网络图作为网络计划的表达形式之一被广泛应用于工程项目的管理中。
1 概述
1955年,美国杜邦化学公司提出将每一活动规定起止时间,然后按照活动的顺序绘制成一种网络状图形的设想。1957 年,由雷明顿——兰德公司(Remington- Rand)的JE克里(JE Kelly)和杜邦公司的 MR 沃尔克(MR Walker)提出关键线路法(Critical Path Method,简称 CPM)。它是在网络图的基础上,通过分析总时差找出控制总工期的关键线路,提供了在一定工期和费用条件下获得工程项目最佳进度计划的方法。
双代号网络计划也称箭线图法,它是用箭线表示活动,并在节点处将活动连接起来表示工作流程的有向有序的网络图形。C语言是一门不需任何运行环境的支持就可以运行的高效率通用程序设计语言。将C语言应用在双代号网络计划中能够实现网络计划优化中的费用优化,也称之为工期成本优化。实践表明,人们可以通过增加人数与设备的方法来缩减计划任务中每一环节的工序持续时间,但与此同时也增加了项目费用成本。因此,怎样用最少的费用成本尽可能缩减工期是管理中不可忽视的问题。为了找到费用最低的工期,在初始网络计划中确定的总工期的基础上,通过重复压缩关键路线上关键工作可以压缩的时间,比较不同压缩方案下的工程总成本,以最小原则选出其中的最佳方案。
费用优化的基本顺序是:
(1)按任务每一工序原有逻辑关系和持续时间编制双代号网络计划图,根据关键线路法找出关键线路并计算出总工期。
(2)计算整个双代号网络计划各道工序的最大缩短时间以及所需的费率。
(3)保证关键工作不被压缩为非关键工作的条件下,比较不同压缩方案,寻求费用最低时的最佳方案。
(4)通过不断的选择比较与压缩,直到将工期压缩至最小工期或要求工期。
(5)最后计算变化的总费用。
2 问题示例
某个单项工程,按图1所示双代号网络计划图组织施工。
原来的计划工期是170天,但是在工程进行到第75天时发现,工作B才刚开始开工。经计算可发现,工作B属于关键线路上的关键工作,它滞后15天,业因此工程的总工期将延长15天。每一个工作相关的参数见表1。
如果想通过赶工的方式使工程按照原有工期170天照常竣工,请问该怎样调整双代号网络图中不同工作的工期,使其耗费的费用最少又能够保证在原计划的170天内将所有工作完成?经过调整后,投入的赶工费用总共多少?
3 解题步骤
(1)目前,总工期滞后了15天,关键线路:B-D-H。其中,工作B的赶工费率最小,因此对工作B的工期进行压缩。将工作B压缩5天,共增加费用:5×200=1000元,总工期:185-5=180天,关键线路:B-D-H。
(2)在剩下的关键工作D和H中,工作D的赶工费率为最小,所以对其的工期进行压缩。为保证B-D-H依然是关键线路,故工作D只能压缩5天,因此增加费用:5×300=1500元,总工期:180-5=175天,关键线路:B-D-H和B-C-F-H两条。
(3)经过调整后,对剩余未压缩的关键工作共有三种压缩方法。(1)同时压缩工作C和工作D。(2)同时压缩工作F和工作D。(3)压缩工作H。其中,方法(1)的赶工费率最小,因此对工作C和工作D的工期进行压缩。压缩工作C的最大可压缩天数3天,增加费用:3×100+3×300=1200元,总工期:175-3=172天,关键线路:B-D-H和B-C-F-H两条。
(4)在剩下的压缩方案中,法(3)的赶工费率最小,因此再对工作H的工期进行压缩。工作H压缩2天,增加费用:2×420=840元,总工期:172-2=170天。
(5)经过上面的工期计划调整,仍能够按照原计划的170天将单项工程完成。所需投入的赶工费为:1000+1500+1200+840=4540元。
4 程序设计
4.1 代码
#include
int Max(int x,int y,int z)
{
int max;
max=x;
if(y>max)
max=y;
if(z>max)
max=z;
return max;
}
void main()
{
int a,b,c,d,e,f,g,h;
int Tmax[10]={75,40,15,55,25,35,20,15};
int Tks[10]={0,5,3,10,5,10,10,5};
int P[10]={200,200,100,300,200,150,120,420};
int Tys[10],Tc,Ps,Pmin=999999999,i=0;
for(a=0;a<=Tks[0];a++)
{
for(b=0;b<=Tks[1];b++)
{
for(c=0;c<=Tks[2];c++)
{
for(d=0;d<=Tks[3];d++)
{
for(e=0;e<=Tks[4];e++)
{
for(f=0;f<=Tks[5];f++)
{
for(g=0;g<=Tks[6];g++)
{
for(h=0;h<=Tks[7];h++)
{
Tc=Tmax[0]-a+Tmax[1]-b+Max((Tmax[2]-c+Tmax[5]-f),(Tmax[3]-d),(Tmax[4]-e+Tmax[6]-g))+Tmax[7]-h;
Ps=a*P[0]+b*P[1]+c*P[2]+d*P[3]+e*P[4]+f*P[5]+g*P[6]+h*P[7];
if(Tc==170&&Ps { Pmin=Ps; Tys[0]=a;Tys[1]=b;Tys[2]=c;Tys[3]=d;Tys[4]=e;Tys[5]=f;Tys[6]=g;Tys[7]=h; } } } } } } } } } printf("Pmin=%d\\n",Pmin); printf("工作 A B C D E F G H \\n缩减天数 "); while(i<8) { printf("%-4d",Tys[i]); i++; } getchar(); } 4.2 结果 4.3 解析 (1)首先,程序定义了一个能选出最大值的函数。 (2)其次,分别定义了a-h(压缩工期)、Tmax(各工作初始工期)、Tks(各工作可压缩工期)、P(各工作赶工费用)、Tys(各工作已压缩的天数)、Tc(计算的总工期)、Ps(总赶工费用)。并分别赋予其实际工程中的限制条件。 (3)然后,利用for嵌套循环语句列举出所有趕工方案,将满足最小赶工费用即Ps值最小且总工期满足要求即Tc=170的方案筛选出来。 (4)记录方案。 (5)输出结果。 4.4 软件论证 采用斑马·梦龙网络计划2018软件进行结果论证图3所示。 5 结语 网络计划技术的应用对工程项目整体的监督管理起到十分重要的影响作用。本文将双代号网络计划图与c语言相结合,通过建立基于网络计划图的C语言计算模型,旨在为双代号网络计划优化中的费用优化提供一种算法解决思路。但缺点是在制定网络计划方案前,要首先进行工程项目相关内容的总结分析,梳理施工方案和各工作之间的逻辑关系,从而完成网络图的绘制和时间参数的计算等,过程比较繁琐,而且主要适用于逻辑性较强的项目中,对每一阶段的工作持续时间也进行了明确的规定。 参考文献 [1]左守强.基于网络计划技术的工程项目工期优化研究[D].蚌埠:安徽财经大学,2016:1-15. [2]聂增民,聂文婷,唐祥.施工项目“工期—成本”优化及案例分析[J].工程经济,2018,28(10):39-40.