第一篇:管道铺设问题
实验三:管道铺设施工的最佳方案
一.问题描述 1.实验题目:
需要在某个城市n个居民小区之间铺设煤气管道,则在这n个居民小区之间只需要铺设n-1条管道铺设n-1条管道即可。假设任意两个小区之间则可以铺设管道,但由于地理环境不同,所需要的费用也不尽相同。选择最优的方案能使总投资尽可能小,这个问题即为求无向网的最小生成树。2.基本要求:
在可能假设的m条管道中,选取n-1条管道,使得既能连通n个小区,又能使总投资最小。每条管道的费用以网中该边的权值形式给出,网的存储采用邻接表的结构。3.测试数据:
使用下图给出的无线网数据作为程序的输入,求出最佳铺设方案。
A38.244.618.28.7112.IB5.9CH52.541.1.379.256.4G10.585.667.3D参考解: 21E98.7F
AI.32B5.988.H7C41.1EGD二.需求分析
1.程序所能达到的基本可能: 2110.5F
在某个城市n个居民小区之间铺设煤气管道,则在这n个居民小区之间只需要铺设n-1条管道铺设n-1条管道即可。假设任意两个小区之间则可以铺设管道,但由于地理环境不同,所需要的费用也不尽相同。选择最优的方案能使总投资尽可能小,在可能假设的m条管道中,选取n-1条管道,使得既能连通n个小区,又能使总投资最小。
2.输入输出形式及输入值范围:程序运行后,显示提示信息:请输入顶点数和边数(输入格式为:顶点数,边数)之后程序从文件名为”C:data.txt读入顶点信息和边的信息,之后显示提示信息输入开始节点,执行生成最小树程序,输出生成的最小树信息。
3.测试数据要求:顶点数边数为整数,顶点信息为大写字母,边的权值为浮点型,C:data.txt文件内容为:ABCDEFGHI 1 2 32.8 2 3 5.9 1 3 44.6 3 4 21.3 4 5 67.3 4 6 98.7 5 6 85.6 5 7 10.5 3 7 56.4 6 9 79.2 7 8 52.5 1 8 12.1 8 9 8.7 1 9 18.2 3 5 41.1 三.概要设计
1.所用到得数据结构及其ADT typedef struct node //边表结点 { int NO;//邻接点域;vertexType adjvex;.379.2.112 EdgeType info;//权值
struct node *next;//指向下一个邻接点的指针域
}EdgeNode;
typedef struct vnode //顶点表节点 { vertexType vertex;//顶点域 EdgeNode *firstedge;//编表头指针
}VertexNode;
typedef struct //邻接表 { VertexNode adjlist[MaxVertexNum];int n,e;//顶点数和边数
}ALGraph;// ALGraph是以邻接表方式存储的图类型 基本操作:ALGraph * CreateALGraph()//建表 2.主程序流程及其模块调用关系 1)主程序模块
开始显示主界面建表生成最小树结束
建表模块ALGraph * CreateALGraph()开始打开文件fp=fopen(“C:data.txt”,“r”);fp==NULL读取G->n,G->e顶点数边数printf(“Cann't open the file!n”);打开文件失败i=1i<=G->nYG->adjlist[i].vertex=fgetc(fp);G->adjlist[i].firstedge=NULL;visited[i]=i;Nk=1k<=G->eYfscanf(fp,“%d”,&i);fscanf(fp,“%d”,&j);fscanf(fp,“%f”,&m);输入边的信息N关闭文件结束i++;将边的信息存储到邻接表中k++最小生成树模块void tree(ALGraph *G,int m)开始sum=0;low[m]=0;visited[m]=0;i=1Ni<=G->nYlow[i]=1000;teed[i]=m;s=G->adjlist[m].firstedge;Ns!=NULLi=1结束Ylow[s->NO]=s->info;s=s->next;Ni
函数调用关系图
CreateALGraph();建表main()主函数tree(G,i);生成最小树
四、详细设计
1.实现每个操作的伪码,重点语句加注释 1)建表模块
ALGraph * CreateALGraph()//建表 {
int i,j,k;float m;FILE *fp;EdgeNode *s,*t;ALGraph *G;fp=fopen(“C:data.txt”,“r”);//打开文件 if(fp==NULL)//未找到文件 {
} printf(“Cann't open the file!n”);exit(1);G=(ALGraph *)malloc(sizeof(ALGraph));
printf(“请输入顶点数和边数(输入格式为:顶点数,边数)n”);scanf(“%d,%d”,&G->n,&G->e);for(i=1;i<=G->n;i++)//建立顶点信息 { G->adjlist[i].vertex=fgetc(fp);G->adjlist[i].firstedge=NULL;visited[i]=i;
} for(k=1;k<=G->e;k++){ // printf(“请输入第%d条边的两个端点序号,输入格式为:i,jn”,k);// scanf(“%d,%d”,&i,&j);
fscanf(fp,“%d”,&i);fscanf(fp,“%d”,&j);s=(EdgeNode *)malloc(sizeof(EdgeNode));t=(EdgeNode *)malloc(sizeof(EdgeNode));// printf(“请输入第%d条边的对应权值n”,k);
t->NO=i;t->adjvex=G->adjlist[i].vertex;
fscanf(fp,“%f”,&m);//保存边信息,以无向网方式 s->NO=j;s->adjvex=G->adjlist[j].vertex;s->info=m;s->next=G->adjlist[i].firstedge;G->adjlist[i].firstedge=s;t->info=m;
t->next=G->adjlist[j].firstedge;G->adjlist[j].firstedge=t;
} } fclose(fp);//关闭文件 return G;2)生成最小生成树模块 void tree(ALGraph *G,int m){
float low[100];int teed[100];int k,i,j;float min,sum=0;EdgeNode *s;low[m]=0;visited[m]=0;for(i=1;i<=G->n;i++)
{
} s=G->adjlist[m].firstedge;while(s!=NULL)//数组初始化 {
} for(i=1;i
min=1000;for(j=1;j<=G->n;j++){ low[s->NO]=s->info;s=s->next;low[i]=1000;teed[i]=m;
}
} if(visited[j]>0&&low[j] } min=low[j];k=j;//标记节点 sum+=min;visited[k]=0;s=G->adjlist[k].firstedge;while(s!=NULL){ } if(visited[s->NO]>0&&s->info } s=s->next;low[s->NO]=s->info;teed[s->NO]=k;printf(“最佳铺设方案n”); } 3)主函数模块 void main(){ ALGraph *G;int i;for(i=1;i<=G->n;i++)//输出最小生成树信息 if(i!=m)printf(“(%d,%d)%.2ft”,i,teed[i],low[i]);printf(“最小权值为:%.2fn”,sum);time_t rawtime;struct tm * timeinfo;time(&rawtime);timeinfo = localtime(&rawtime);printf(“ 实验名称:实验三:管道铺设施工的最佳方案n”);printf(“ 学号:031350102n”);printf(“ 姓名:王亚文n”);printf(“=============================================n”); printf(“程序运行开始,”);printf(“Current local time and date:%s”,asctime(timeinfo));G=CreateALGraph();//建表 printf(“输入开始节点n”);scanf(“%d”,&i);tree(G,i);//生成最小树 //printfALGraph(G);printf(“n”); } 五、调试分析 1.设计与调试过程中遇到的问题分析、体会 1)一开始对文件读写操作不熟,采用从键盘输出的方式验证正确与否,对应程序如下: int i,j,k; float m;EdgeNode *s,*t;ALGraph *G;printf(“Current local time and date:%s”,asctime(timeinfo));G=(ALGraph *)malloc(sizeof(ALGraph)); printf(“请输入顶点数和边数(输入格式为:顶点数,边数)n”);scanf(“%d,%d”,&G->n,&G->e);for(i=1;i<=G->n;i++)//建立顶点信息 { G->adjlist[i].vertex=fgetc(fp);G->adjlist[i].firstedge=NULL;visited[i]=i; } for(k=1;k<=G->e;k++){ printf(“请输入第%d条边的两个端点序号,输入格式为:i,jn”,k); scanf(“%d,%d”,&i,&j);s=(EdgeNode *)malloc(sizeof(EdgeNode));t=(EdgeNode *)malloc(sizeof(EdgeNode));printf(“请输入第%d条边的对应权值n”,k); } 对应截屏如下:发现这种方式输入耗时长,而且在生成树程序不正确时修改程序需要重复输入,较为麻烦 t->NO=i;t->adjvex=G->adjlist[i].vertex; scanf(“%f”,&m);//保存边信息,以无向网方式 s->NO=j;s->adjvex=G->adjlist[j].vertex;s->info=m;s->next=G->adjlist[i].firstedge;G->adjlist[i].firstedge=s;t->info=m; } return G;t->next=G->adjlist[j].firstedge;G->adjlist[j].firstedge=t; 2)为检验所建立的无向网,编写了一个输出函数,输出各个顶点以及与该顶点相邻的其他顶点以及对应权值,输出函数为void printfALGraph(ALGraph *G)//输出表 { int i;EdgeNode *s;printf(“输出信息n”);for(i=1;i<=G->n;i++) } 输出测试截屏如下证明从文件读写的与所需要建立的无向网相符 { } printf(“%c的邻接点及权值:n”,G->adjlist[i].vertex);s=G->adjlist[i].firstedge;while(s!=NULL){ } printf(“n”);printf(“%c %.2f ”,s->adjvex,s->info);s=s->next; 2.主要算法的时间复杂度分析 六、使用说明 程序运行后,显示提示信息:请输入顶点数和边数(输入格式为:顶点数,边数)之后程序从文件名为”C:data.txt读入顶点信息和边的信息,之后显示提示信息输入开始节点,执行生成最小树程序,输出生成的最小树信息。 七、测试结果 3)这个程序遇到的第一个主要问题是在建表过程,因为边的顶点信息是大写英文字母,一开始我是用的ASCLL码值,使用不方便,后来采用在定义时考虑多定义一个量,原程序: typedef struct node //边表结点 { vertexType adjvex; //邻接点域;EdgeType info;//权值 struct node *next;//指向下一个邻接点的指针域 }EdgeNode;修正后的程序为: typedef struct node //边表结点 { int NO;//邻接点域;vertexType adjvex;EdgeType info;//权值 struct node *next;//指向下一个邻接点的指针域 }EdgeNode;这样多定义了一个量在后面的过程中会简单许多,其次书上给的程序是生成有向网的,一开始我是考虑的将边输入两边,就是在循环时的终止条件设为k<=2*G->e;这样虽然能解决无向网问题,但是一条边重复输入两边,较为麻烦,后期修正为: s->NO=j; s->adjvex=G->adjlist[j].vertex;s->info=m; s->next=G->adjlist[i].firstedge;G->adjlist[i].firstedge=s;t->NO=i;t->adjvex=G->adjlist[i].vertex;t->info=m;t->next=G->adjlist[j].firstedge;G->adjlist[j].firstedge=t;修正后的函数虽然语句较之前的多了5句但在输入时少输了一半的边信息。其次解决耗时最长的一个错误是在建表中,原程序: typedef VertexNode Adjlist[MaxVertexNum]; typedef struct //邻接表 { Adjlist adjlist;//int n,e;//顶点数和边数 int n;int e;}ALGraph;// ALGraph是以邻接表方式存储的图类型 这个程序是抄的书上的,一开始不觉得书上的程序会是错的,结果一直没有看这个定义,在输入边的信息时循环次数总是不对,一直尝试着改动写的输入信息,弄了一下午也没有搞定这个问题,于是去求助研究生学长,下面是研究生学长发过来的邮件帮我指出错误所在,看了学长的这封邮件后,重新改了一下自己的程序,修正后的程序为 typedef struct //邻接表 { VertexNode adjlist[MaxVertexNum];int n,e;//顶点数和边数 }ALGraph;// ALGraph是以邻接表方式存储的图类型 程序修正后输入正常了,就开始进入下一个阶段生成最小树的程序。 3)在生成最小树这个程序的编写中,开始因为编程序是在老师讲解生成树之前,所以一开始是完全没有地方下手,网上百度了一下如何生成最小树,发现有两种方法,Kruskal和prim算法,但研究生学长这个适合用prim算法,Kruskal算法适合与边稀疏的连通图求解最小生成树,所以在编写时主要研究的是用prim算法,在编写prim算法时除了很多问题,例如一开始我并没有在循环中写teed[i]=m;这句话,导致在最后输出边的信息时会有随机数产生,截图如下: 想到随机数产生可能是因为没有赋值,所以加上teed[i]=m;这句话果然最后就输出正确了,再次在输出时,产生的结果中有重复的一个节点,<1,1>1000.00这个不应该被输出,所以考虑在输出时加一个限制条件 if(i!=m)再次输出就没有了,中间编写时问题不大,之前有看过prim算法的详细介绍,所以在主思路上没有太大的错误,相对写起来也比较顺利。 2)建立邻接表的复杂度为O(n+e);Prim算法的时间复杂度为O(elogn); 八、附录 #include int NO;//邻接点域;vertexType adjvex;EdgeType info;//权值 struct node *next;//指向下一个邻接点的指针域 }EdgeNode; typedef struct vnode //顶点表节点 { vertexType vertex;//顶点域 EdgeNode *firstedge;//编表头指针 }VertexNode; typedef struct //邻接表 { VertexNode adjlist[MaxVertexNum];int n,e;//顶点数和边数 }ALGraph;// ALGraph是以邻接表方式存储的图类型 ALGraph * CreateALGraph()//建表 { int i,j,k;float m;FILE *fp;EdgeNode *s,*t;ALGraph *G;fp=fopen(“C:data.txt”,“r”);//打开文件 if(fp==NULL)//未找到文件 { } printf(“Cann't open the file!n”);exit(1);G=(ALGraph *)malloc(sizeof(ALGraph)); printf(“请输入顶点数和边数(输入格式为:顶点数,边数)n”);scanf(“%d,%d”,&G->n,&G->e);for(i=1;i<=G->n;i++)//建立顶点信息 { G->adjlist[i].vertex=fgetc(fp);G->adjlist[i].firstedge=NULL;visited[i]=i; } for(k=1;k<=G->e;k++){ // printf(“请输入第%d条边的两个端点序号,输入格式为:i,jn”,k);// scanf(“%d,%d”,&i,&j); fscanf(fp,“%d”,&i);fscanf(fp,“%d”,&j);s=(EdgeNode *)malloc(sizeof(EdgeNode));t=(EdgeNode *)malloc(sizeof(EdgeNode));// printf(“请输入第%d条边的对应权值n”,k); } fscanf(fp,“%f”,&m);//保存边信息,以无向网方式 s->NO=j;s->adjvex=G->adjlist[j].vertex;s->info=m;s->next=G->adjlist[i].firstedge;G->adjlist[i].firstedge=s;t->NO=i;t->adjvex=G->adjlist[i].vertex;t->info=m; } fclose(fp);//关闭文件 return G;t->next=G->adjlist[j].firstedge;G->adjlist[j].firstedge=t;void tree(ALGraph *G,int m){ float low[100];int teed[100];int k,i,j;float min,sum=0;EdgeNode *s;low[m]=0;visited[m]=0;for(i=1;i<=G->n;i++) { low[i]=1000;teed[i]=m; } s=G->adjlist[m].firstedge;while(s!=NULL)//数组初始化 { } for(i=1;i min=1000;for(j=1;j<=G->n;j++){ } sum+=min;visited[k]=0;s=G->adjlist[k].firstedge;while(s!=NULL){ } if(visited[s->NO]>0&&s->info } s=s->next;low[s->NO]=s->info;teed[s->NO]=k;if(visited[j]>0&&low[j] } min=low[j];k=j;//标记节点 low[s->NO]=s->info;s=s->next;} printf(“最佳铺设方案n”); } /*void printfALGraph(ALGraph *G)//输出表 { int i;EdgeNode *s;printf(“输出信息n”);for(i=1;i<=G->n;i++)//输出最小生成树信息 if(i!=m)printf(“(%d,%d)%.2ft”,i,teed[i],low[i]);printf(“最小权值为:%.2fn”,sum);for(i=1;i<=G->n;i++) } */ void main(){ ALGraph *G;int i;time_t rawtime;{ } printf(“%c的邻接点及权值:n”,G->adjlist[i].vertex);s=G->adjlist[i].firstedge;while(s!=NULL){ } printf(“n”);printf(“%c %.2f ”,s->adjvex,s->info);s=s->next;struct tm * timeinfo;time(&rawtime);timeinfo = localtime(&rawtime);printf(“ 实验名称:实验三:管道铺设施工的最佳方案n”);printf(“ 学号:031350102n”);printf(“ 姓名:王亚文n”);printf(“=============================================n”); printf(“程序运行开始,”);printf(“Current local time and date:%s”,asctime(timeinfo));G=CreateALGraph();//建表 printf(“输入开始节点n”);scanf(“%d”,&i);tree(G,i);//生成最小树 //printfALGraph(G);printf(“n”); } 九、实验收获和感想 在这个管道铺设问题的程序设计中,弄懂题意后发现其实这个题需要解决两个问题,一个是建立无向网的问题,另一个就是最小生成树的求解,所以这个程序设计还是需要模块化设计这个思路,首先需要解决的是如何建立无向网,在这个过程中我编写了一个输出函数以检验所建立的无向网是否是我们所需要的,建立无向网这个过程是我编写这个程序耗时最长的,因为开始一味的相信书上的程序是正确的所以吃了不少苦,最后还是多亏了研究生学长才得以解决这个问题,这个教训也告诫我不能一味的相信书本,最后能输出正确结果的才是正确的程序,在之后的程序编写时不要再因为是书本的原程序就原封不动的抄上在后续出错时也不检查是否是这个抄的程序的错误,再次是要善于用自己所学的知识简化问题而不是只用一种方法解决这个问题,在这个程序中建立边表信息时再多建立一个NO信息就可以大大简化问题,所以编写程序时还是要多想想其他办法,还有就是这个测试数据有9个顶点信息,15条边的信息,在测试时挨个输入显然会很麻烦,所以善于运用文件操作会很方便的,但printf(“Current local time and date:%s”,asctime(timeinfo));是最开始我是使用的键盘输入,并且将原语句保留在程序中,使用时可以使用键盘输入,或者在定义的文件C:data.txt中改变边和顶点信息,不管怎么说,使用文件操作后真的是方便很多,在经历了一次又一次要输入9个顶点信息15条边信息后第一次使用文件操作后感悟还是蛮大的,而且通过上面截图对比发现界面也简洁很多,所以还是要多学些东西这样才可以在某些时候简化问题,使问题解决的更加方便,还有就是要善于求助,例如在建立无向网时被一个问题坑了一下午,这个时候去求教学长,不仅可以解决问题,而且能更加清晰的记住这个问题,还有因为这个程序最开始编写时老师没有讲到prim算法,书上也没有相关知识,而自己又无从下手时,这个时候可以考虑上网查些资料,毕竟网上资源还是很丰富的。 总之,这个管道铺设问题程序语句最后写下来并没有很多行,但还是暴露了自己的很多问题,在解决问题的过程中慢慢完善自己,希望自己的编程能力能有所提高。 自来水管道铺设协议书 甲方: 乙方: 签约地点: 签订日期: 年 月 日 根据《中华人民共和国合同法》及国家其他有关法律、法规的规定,甲、乙双方在平等、自愿、等价有偿、公平、诚实信用的基础上,经友好协商,就甲方委托乙方铺设自来水管道达成一致意见,特签订本合同,以资信守。 一、工程概况 (1)工程名称:关集小学自来水管道铺设 (2)工程地点: 关集小学院内 二、承包方式及安装要求 (1)本工程采用包税费、包工包料、包工期。包质量方式执行: 1)双方审定工程造价由乙方进行一次性包干。 2)工程量:140米 3)管道质量标准:32mmPEC水管 4)价格:甲方以综合价没米25元价格承包一方,工程总价为3500.00元(大写:叁仟伍佰元整) (2)安装要求:达到国家自来水供水管及水表安装要求。 三:工期 3天 四:工程质量 (1)乙方必须严格甲方指定路线铺设管道并按期完工。 (2)乙方在水管接头上必须接受甲方的监督,做到不漏水 五、验收: 乙方应提前1 日书面通知甲方进行竣工验收,工程质量及工程内容符合要求的,双方在“竣工工程验收证明书”上签章。 六、付款方式 :甲方提供验收证明,乙方开具国家法定票据,由甲方报中心校转账。 本协议一式三份,甲乙双方各执一份,报中心校一份。 甲方签字盖章: 乙方签字: ****年**月**日 年 月 日 自来水管道铺设验收证明 由李超同志为我校铺设的自来水管道共140米,经我校验收小组验收,数量属实,管道质量、直径与协议要求一致,上下水路接口严密,无漏水现象,认定合格。工程总价款为3500.00元(大写:叁仟伍佰元整),特此证明,同意开票付款。验收人: 关集镇中心小学 年 月 日 非开挖铺设管道施工技术 随着我国社会经济的快速发展,城市公用管道建设项目日益增多,常规的施工技术越来越不适应城市发展的需要。开槽铺设地下管线需要占用路面妨碍交通;开挖回填时容易损坏原有管线;渣土排放引起遗洒扬尘;坑槽回填及路面恢复容易造成不均匀沉降,路面下陷或突起给车辆和行人带来不便。因此,非开挖铺设地下管线施工技术以其安全、高效、环保的技术先进性己经进入管道施工领域,随着地下管线探测精度的提高、施工地层的多样性、管道新材料的应用等方面的发展,铺设地下管线施工将会首先选用非开挖技术,扩大该技术的应用范围。 一、特点: 非开挖管道施工技术在不开挖沟槽,不妨碍交通、不破坏环境的前提下,完成各类管线的铺设和置换工程。 二、适用范围: 铺设直径在Ф50~Ф2000㎜范围内的PE管、PVC管、钢管、混凝土管、广泛应用于电力、通讯、煤气、供水、雨水、污水等领域的各类管线铺设工程。 三、工艺应用: 1.管棚岩石加固技术 管棚岩土加固技术是指在地下隧道或通道的挖掘施工前,采用导向铺管或气动夯管施工法在其断面周围或局部,平行于通道轴线排布多根钢管,并且注入水泥浆,对特殊地段进行结构性支护的施工方法。采用管棚支护能够优先稳定地层,严防塌陷与控制沉降,多用于砂卵石、粉细沙、松散地层或穿越上部建筑物的隧道或地下通道、停车场的施工中。 2.水平旋喷、控制压浆岩土加固技术 水平旋喷岩土加固技术是采用控向技术钻进引孔,在回拉提上钻具的事时旋转高压喷射水泥浆或混合浆液,在松散地层中形成具有一定强度的固结柱体,根据设计需要,采用不同的钻孔组合,形成不同形状的固结体,达到加固强化地层或封堵渗漏的目的。控制压浆岩土加固技术是采用控向技术钻进引孔,在回拉提上钻具的同时,根据设计数据调整控制注入水泥浆液的压力,控制浆液注入范围或压裂地层,达到加固强化地层或封堵渗漏的目的。 铺设海底电缆管道管理规定 第一条 为维护中华人民共和国国家主权和权益,合理开发利用海洋,有秩序地铺设和保护海底电缆、管道,制定本规定。 第二条 本规定适用于在中华人民共和国内海、领海及大陆架上铺设海底电缆、管道以及为铺设所进行的路由调查、勘测及其他有关活动。 第三条 在中华人民共和国内海、领海及大陆架上铺设海底电缆、管道以及为铺设所进行的路由调查、勘测及其他有关活动的主管机关是中华人民共和国国家海洋局(以下简称主管机关)。 第四条 中国的企业、事业单位铺设海底电缆、管道,经其上级业务主管部门审批同意后,为铺设所进行的路由调查、勘测等活动,依照本规定执行。 外国的公司、企业和其他经济组织或者个人需要在中华人民共和国内海、领海铺设海底电缆、管道以及为铺设所进行的路由调查、勘测等活动,应当依照本规定报经主管机关批准;需要在中华人民共和国大陆架上进行上述活动的,应当事先通知主管机关,但其确定的海底电缆、管道路由,需经主管机关同意。 第五条 海底电缆、管道所有者(以下简称所有者),须在为铺设所进行的路由调查、勘测实施六十天前,主向管机关提出书面申请。申请书应当包括以下内容: (一)所有者的名称、国籍、住所; (二)海底电缆、管道路由调查、勘测单位的名称、国籍、住所及主要负责人; (三)海底电缆、管道路由调查、勘测的精确地理区域; (四)海底电缆、管道路由调查、勘测的时间、内容、方法和设备,包括所用船舶的船名、国籍、吨位及其主要装备和性能。 主管机关应当自收到申请之日起三十天内作出答复。 第六条 海底电缆、管道路由调查、勘测完成后,所有者应当在计划铺设施工六十天前,将最后确定的海底电缆、管道路由报主管机关审批,并附具以下资料: (一)海底电缆、管道的用途、使用材料及其特性; (二)精确的海底电缆、管道路线图和位置表以及起止点、中继点(站)和总长度; (三)铺设工程的施工单位、施工时间、施工计划、技术设备等; (四)铺设海底管道工程对海洋资源和环境影响报告书; (五)其他有关说明资料。 主管机关应当自收到申请之日起三十天内作出答复。 第七条 铺设施工完毕后,所有者应当将海底电缆、管道的路线图、位置表等说明资料报送主管机关备案,并抄送港监机关。 在国家进行海洋开发利用、管理需要时,所有者有义务向主管机关进一步提供海底电缆、管道的准确资料。 第八条 海底电缆、管道的铺设和为铺设所进行的路由调查、勘测活动,不得在获准作业区域以外的的海域作业,也不得在获准区域内进行未经批准的作业。 第九条 获准施工的海底电缆、管道在施工前或施工中如需变动,所有者应当及时向主管机关报告。如该项变动重大,主管机关可采取相应措施,直到责令其停止施工。 第十条 海底电缆、管道的维修、改造、拆除和废弃,所有者应当提前向主管机关报告。路由变动较大的改造,依照本规定重新办理有关手续。 外国船舶需要进入中国内海、领海进行海底电缆、管道的维修、改造、拆除活动时,除履行本条第一款规定的程序外,还应当依照中国法律的规定,报经中国有关机关批准。 铺设在中国大陆架上的海底电缆、管道的维修、改造、拆除活动时,除履行本第一款规定的程序外,还应当依照中国法律的规定,报经中国有关机关批准。 铺设在中国大陆架上的海底电缆、管道遭受损害,需要紧急修理时,外国维修船可在向主管机关报告的同时进入现场作业,但不得妨害中国的主权权利和管辖权。 第十一条 海底电缆、管道的路由调查、勘测和铺设、维修、拆除等施工作业,不得妨害海上正常秩序。 海底电缆、管道的铺设或者拆除工程的遗留物,应当妥善处理,不得防害海上正常秩序。 第十二条 铺设海底电缆、管道及其他海上作业,需要移动已铺设的海底电缆、管道时,应当先与所有者协商,并经主管机关批准后方可施工。 第十三条 从事海上各种活动的作业者,必须保护已铺设的海底电缆、管道。造成损害的应当依法赔偿。 其他海洋开发利用和已铺设的海底电缆、管道的正常使用发生纠纷时,由主管机关调解解决。 第十四条 主管机关有权对海底电缆、管道的铺设、维修、改造、拆除、废弃以及为铺设所进行的路由调查、勘测活动进行监督和检查。对违反本规定的,主管机关可处以警告、罚款直至责令其停止海上作业。 前款所列处罚的具体办法,由主管机关商____有关主管部门制定。 第十五条 为海洋石油开发所铺设的超出石油开发区的海底电缆、管理的路由,应当在油(气)田总体开发方案审批前报主管机关,由主管机关商国家能源主管部门批准。 在海洋石油开发区内铺设平台间或者平台与单点系泊间的海底电缆、管道,所有者应当在为铺设所进行的路由调查、勘测和施工前,分别将本规定第五条、第六条规定提供的内容,报主管机关备案。 第十六条 铺设、维修、改造、拆除、废弃海底电缆、管道以及为铺设所进行的路由调查、勘测活动,本规定未作规定的,适用国家其他有关法律、法规的规定。 第十七条 中华人民共和国军用海底电缆、管道的铺设依照本规定执行。军队可以制定具体实施办法。 第十八条 主管机关应当收集海底地形、海上构筑物分布等方面的资料,为海底电缆、管道的铺设及其调查、勘测活动提供咨询服务。 第十九条 本规定中的“电缆”系指通信电缆及电力电缆;“管道”系指输水、输气、输油及输送其他物质的管状输送设施。 第二十条 本规定由中华人民共和国国家海洋局负责解释。 第二十一条 本规定自****年____月___日起施行。 雨、污水承插管道铺设 一、雨、污管道沟槽土方开挖 (1)在进行管坑开挖前,利用在全范围进行地下管线探测,如有管线,应设置标志牌标记地下管线的种类位置和埋深,并进行保护,对施工有影响的需报设计和监理工程师进行处理。 (2)开挖坑槽前,应向挖掘机司机详细交底,交底内容一般包括挖槽断面、堆土位置,现有地下构筑物情况及施工技术、安全要求等,并指定专人与司机配合,其配合人员应熟悉机械挖土有关安全操作规程,并及时量测槽底高程和宽度,防止超挖。如超挖,超挖部分应按监理工程师同意的材料回填,并夯压密实。 (3)采用挖掘机开槽,人工捡平人工配合机械安管,施工顺序按由下游至上游的施工顺序施工,以利坑槽的临时排水。域采用放坡开挖,放坡系数视土质而定,并满足规范要求;若遇软弱土层可采取放坡加压砂包的支护方式。 (4)管沟开挖时,先进行详细有测量定位并用石灰标示出开挖边线,复测无误后可指挥挖掘机进行开挖,挖掘机一边开挖一边后退,开挖出来的余泥直接运至定地点弃置,不得乱堆乱弃,破坏环境。 (5)管沟开挖时,质安人员要加强巡视现场,密切注意周围土体的变形情况及坑槽内可能出现的涌水、涌砂及坑底土体的隆起反弹,一旦发现问题,应立即停止开挖,并知会监理工程师协同处理。(6)施工中应利用截水沟等方法防止地面水流入沟坑内造成塌方或基土破坏。施工时根据地下水情况,采取经济、有效的方法降低地下水位,确保干槽施工。当地下水位较高、地下水较多、明排不能确保干槽施工时应考虑使用深井降水,其井位布置间距和深度应根据管道埋深和地下水情况而定,要求将地下水降低至槽底设计高程50cm以下。当采取明排水能确保干槽施工时,则采取明排排水以降低成本。开挖至设计管沟底后,可在管沟槽底的一侧做一排水小沟,每30m设一集水井,收集管沟底的积水并用泵抽出管沟;雨季时,为防止管沟底土壤受水浸泡,预留人工整平的20cm一层的土体应待下一工序进行前方予挖除。基坑底面土不得超挖或扰动(指挖松或浸泡等)。若发生超挖或扰动,应将扰动部分清除,并将超挖和清除位置填回石粉或碎石、砂,并予夯实。 (7)基坑挖至设计高程,应迅速进行复核中线位置和高程,验收合格后立即进行管基施工,匆使基坑长期暴露而被地下水或雨水浸泡。 (8)管沟槽开挖的宽度按管道基础的宽度加上每边工作面和模板、支撑的厚度进行开挖。开挖时,随时测量监控,保证开挖边坡、基坑尺寸,轴线、槽底的高程达到CJJ3-90中沟槽验收规定的要求。 二、管基(1).雨、污水管若管道处于淤泥层上,则应先将淤泥清除,然后按照设计要求作换填处理。 (2)测量基础中心轴线、标高,并放出基础边线。在沟底设置水平小木桩,桩顶标高为管道平基顶面的标高。 (3)砂石管基施工。清除基底的杂物和浮土,排干沟底的积水,进行基础铺筑。先在基底铺筑砂石平基,边铺边捡平,用平板振动器和打夯机按交叉、错开、重叠的原则,夯压密实。然后进行管道安装,待管道安装好后,再第二次进行管基(管座)施工,应分层填筑,每层厚度不大于15cm,用打夯机历压密实,施工时应在管道两侧对称进行,不得使管道发生偏移,夯实时不得破坏管道。 三、安管 (1)下管前,先清除管坑内杂物,加固基坑的支撑,排除基坑内的积水,然后在平基上放出管道中线,复核平基面标高。 (2)管材应附有出厂合格证,安装前检查管的外观质量,不使用有裂缝、蜂窝等现象的管材。 (3)根据管径大小和现场情况,采用人力下管和吊车下管相结合,人工进行稳管。自下游向上游进行下管,并用中心线法或边线法控制管道的中线和高程。下管方式:管径D≤500mm时,采用人力下管;管径D≥600mm时,采用吊机下管。人力下管采用双压绳法下管,在管沟一侧距槽边3m左右,将两个撬杠打入地下60-80cm,将大绳一端栓在撬杠下部,将管子缠绕,撬杠上增加了磨擦力,使人拉大绳的力量减少,便于控制下管速度。机械下管采用汽车吊或起重机下管,起重机械离沟边至少1米,保证槽壁不坍。下管时,必须有专人指挥,保证两侧放绳速度一致,以保管子平稳下降,否则会摔坏。下管时,沟槽内不得有人站立,以确保安全。 排管顺序应自下游排向上游,承口向上游方向,插口向下游方向;每节管道应紧贴于垫层或基座上,使管道受力均匀。用钢丝刷将各管节的承口内表和插口外表油污杂物清除干净,按管径规格选用相应的橡胶密封圈,并套入插口槽内,要求做到四周均匀、平顺、无扭曲,在橡胶圈表面和前节管子的内表涂抹“851”防水涂料,以防渗水。铺管时,将管节平稳吊下,平移到排管的接口处,调整管节的中线和高程,然后用紧管设备将管子的插口慢慢插人承口。在承插管子的过程中,管节仍需悬吊,以降低紧管时的拉力。管节拉紧后,调整管子的轴线和标高,然后用管枕击实。管节插入时,应注意橡胶圈不出现扭曲、脱槽等现象。 安管时采取以下方法控制中线和高程: 中线控制:采用中心线法,连接在两块坡度板的中心钉之间的中线上挂一垂球,当垂球通过水平尺中心时,表示管子已对中。 高程控制:管道高程控制前,在坡度板上标出高程钉,相邻两坡度钉分别到管底的标高的垂直距离相等,两高程钉之间的边线的坡度即为管底坡度。将高程尺垂直放在管底,当标记和坡度线重合时,表时高程正确。 控制中心线与高程必须同时进行,使二者同时符合设计规定。 管道必须垫稳,管底坡度不得倒流水,管道内不得有泥土、砖石、砂浆、木块等杂物。 四、进水井、检查井砌体 施工前,进行平面及水准控制测量及复测,保证井中心位置高程及井距符合设计要求,并定出中心点,划上砌筑位置及标出砌筑高度,便于操作人员掌握。 砌筑检查井应校核内径,收口段要每皮砖检查有无偏移,且要事先确定收口段的高度,可按规定每皮砖缩入2cm,砌一皮砖即缩入4cm。在井下部干管伸入处,特别是管底两侧,要用砂浆碎砖捣插密实,其余则要每层錾砖砌包妥当,务使不渗漏,且要避免上下层砖对缝。 检查井内外都用1:2水泥砂浆抹面厚2cm,井底设置砖砌流槽。井底浇筑C15砼垫层。 长方形井井壁必须互相垂直,井形方正,并且井身的长轴线应与侧平面平行;砖垫井壁必须灰缝饱满、平整,抹灰应平顺密实,不得有空鼓、裂缝等现象。 井砌筑完毕及时安装上井盖座,井盖按设计要求放置平稳,确保与路面标高保持一致。要求井壁必须互相垂直,不得有通缝,必须保证灰浆饱满,灰缝平整,抹面压光,不得有空壳裂缝等现象。井内流槽应平顺,踏步应安装牢固、位置准确,不得有建筑垃圾等杂物。检查井井座、井盖必须完整无缺,安装平稳,位置准确。井框、井盖必须完整无损,安装平稳,位置准确。 井盖座须座浆,位于车道上的井盖顶面要求与路面齐平;回填土时,先将井盖座座浆,井盖盖好,在井身周围同时回填,回填土密实度要求不低于95%。 五、闭水试验 管道在回填土前应进行闭水试验,试验管段按井距分隔,通常以一个井段为一个测试单位,有时因井距太短或为减少闭水堵墙,但是每次串联的管段不宜太长,过长会影响测试结果的准确性,按规范要求串联管段的总长度不超过1000m。且要求带井试验。管道接口工作结束72小时后,接口的水泥砂浆或其他接口材料已经具有一定强度后,方可进行试验。 管道两端用砖砌缝堵,并养护3-4天,使其达到一定强度后,向闭水段的检查井内注水,注水至规定水位后,开始记录。根据井内水面在规定时间内的下降值计算渗水量,渗水量不得超过施工规范规定的允许值为合格。 确保闭水试验合格是管道施工质量的关键。造成排水管道漏水主要部位有接口位置、排水管接入检查井位置、井壁砂眼等,为了确保闭水试验验收合格,采取以下措施: (1)应认真进行管道接口工作,用钢丝刷将各管节的承口内表和插口外表油污杂物清除干净,按管径规格选用相应的橡胶密封圈,在橡胶圈表面和前节管子的内表涂抹“851”防水涂料,以防渗水。管节插入时,应注意橡胶圈不出现扭曲、脱槽等现象。 (2)污水管接入检查井位置用水泥砂浆内外压实。(3)井壁抹面必须光滑直顺,不能有砂眼出现。(4)管道内灌满水24h后进行闭水实验。 六、回填 (1)回填前,将坑内积水抽干,清干净施工杂物。(2)回填土应分层夯实,每层不超过20cm,每层的密实度应满足设计和规范要求。 (3)管顶上50cm内不得回填大于100mm的石块、砖块等杂物;全部采用符合要求的砂砾石作为填料进行填筑。 (4)回填土压实度是管沟回填土质量的关键。确保回填土压实度质量的主要措施: A、分层回填、分层夯实。按照规范要求的频率及时检验回填土压实度。分层厚度不大于20cm,每层的压实度应达到规范和设计要求。 B、填写检测报告,报监理工程师验收合格后进入下一道工序。第二篇:自来水管道铺设协议书
第三篇:非开挖铺设管道施工技术
第四篇:铺设海底电缆管道管理规定
第五篇:雨、污水承插管道铺设