灾情巡视.doc_第1页
灾情巡视.doc_第2页
灾情巡视.doc_第3页
灾情巡视.doc_第4页
灾情巡视.doc_第5页
免费预览已结束,剩余17页可下载查看

下载本文档

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

文档简介

重大灾情最优巡查路线设计第24组: 指导老师: 摘要灾情巡视对于受灾地的救援工作有着重要意义,快速了解受灾地的情况,有利于加快援救工作,所以研究最佳巡视路线有着重要意义。针对灾情的最佳巡视路线,本文主要结合MTSP和遗传算法模型,以及由远及近的思想,并利用matlab和图论软件进行求解验证,设计出最佳灾情巡视路线。针对问题一,基于MTSP数学模型,运用了遗传算法,建立了最佳巡视路线模型,通过matlab编程,求解得出总路程最短且相对均衡的3组巡视路线,各组巡视路线如下:第一组:OP262728Q30Q29RA3331323534D1O第二组:OM2520L19J18I15I161722K212324N26PO第三组:OC3D48E9F10F12H1413G11E7652O针对问题二,通过估计方法估量组数范围,再利用问题一中所使用模型,对输入矩阵进行加权修改,构成定向时间矩阵,并通过matlab计算出结果,最后针对计算结果中的误差,验证估计结果是否正确,结果显示4组为最少组数。 针对问题三,利用由远及近的“就远原则”,直接巡视离县政府路程最远的乡镇或村并沿路返回而不在其它乡镇或村停留,即得完成巡视的最短时间为6.44小时,并将已经停留点置于已过集合。然后在未过集合中寻在次远点,仿照最远点的作法,利用最小生成树法计算6.44小时内能过最多镇或村的路线,并将已过镇或村的结点放入已过集合中。以此类推,即可得问题三条件下的最优路线。关键词:MTSP数学模型 遗传算法 定向时间矩阵 就远原则一、问题重述灾情视察是了解受灾地重要方法,设计合理快速的巡视路线对提高了解灾情的效率非常有帮助,根据下图一,回答以下问题:图一1若分三组(路)巡视,设计路线最短且相对均衡的路线。2.假定巡视人员在各乡(镇)停留时间T=2小时,在各村停留时间t=1小时,汽车行驶速度V=35公里/小时。要在24小时内完成巡视,至少应分几组。3.在上述关于T , t和V的假定下,如果巡视人员足够多,完成巡视的最短时间是多少,设计时间最短下的最佳巡视路线。 二、问题分析设计最佳的巡视路线有利于提高视察灾情的效率,对尽快找到应对灾情的方案有很大的帮助。为方便计算和观察,我们将原图制成一下如图二:图二针对问题一,题目要求3组总路线最短,且各组路线路程尽量达到均衡。经初步分析,当只有一组人遍历所有乡镇和村的时候所花的时间最短,而随着人数的增加,总路程会随之增加,因此,我们要达到均衡,才有计算最短路线的意义。我们可以根据MTSP数学模型和遗传算法的方法,构造出各乡镇或村之间距离矩阵A和最小距离矩阵B,以3组中路程最大的巡视路线路程尽量小为目标,利用matlab编程,近似设计出3组总路线最短且各组路程最均衡的最佳灾情巡视路线。针对问题二,问题要求在24小时内,在限定行车速度,巡视停留时间的前提下,寻找最佳巡视路线,此可基于问题一的遗传算法MTSP数学模型来解决,但比问题一相关问题稍为复杂。问题二要求在24小时内完成巡视,根据我们的经验可知,时间越短,要完成遍历,只能增加组数,因此,我们将时间定在24小时,就可以保证组数最少。为了避免运算的繁琐,我们事先对组数进行预计,然后再更改MTSP数学模型中的矩阵,将矩阵A改为有向时间矩阵,最后用matlab计算出最优解。又由于matlab在运行时会出现重复路过的结点,从而造成最优解的时间大于24,因此最后我们要对结果进行修正,再得出真正的最优解。针对问题三,为了确定完成巡视的最短时间,可直接找出距离县政府最远的乡镇或村,并对其沿路返回而不在其它乡镇或村停留,因此其所需的时间即为完成巡视的最短时间。虽允许巡视人员足够多,但现实灾情考察中希望能设计出各组路线均衡、合情合理的最佳巡视路线,因此可根据由远及近原则,每次在未被巡视的乡镇或村中找出距离县政府最远的乡镇或村,并通过穷举思想选择满足最短时间限制的关联乡镇或村结点,而巡视人员将会在该联乡镇停留,类似不断地进行循环直至回到县政府起点。这样由远到近不断循环地判断选择路线结点过程,能够设计出各组比较符合现实情况又满足在最短时间范围内的灾情巡视路线。三、模型的假设(1)假设巡逻过程中没有出现特殊意外。(2)假设已被访问的点仅被巡逻一次,重复经过的点不作为巡逻结点加入路径。四、符号说明:符号符号说明最佳巡视路线值距离矩阵道路被选择的概率路线组合的概率关联边权重关联边总权重所有道路与村镇停留总时间县政府至各乡镇或村所需最短时间的最大值各结点的权,即在各乡镇或村停留的时间结点间连线弧长,即路经各乡镇或村之间的所需时间所需的最短时间路经任意乡镇或村两两之间所需的最短时间(不包括停留时间)五、模型的建立与求解5.1 基于遗传算法的MTSP模型遗传算法是模拟生物界自然选择和遗传机制的一种随机搜索最优解的算法,主要通过随机方式产生若干个数字编码(染色体)从而形成初始种群,并设定一个适应度函数,优胜劣汰并选择适应高的个体进行遗传操作,直到找到最优解。针对从县政府分三组路线巡视考察灾情并使得总路线最短的情形,结合这两种原理,并考虑各组路线路程的均衡要求,即达到所有最大巡视路线的路程最小,这样能比较快速、准确地寻求出各组巡视路线。5.1.1问题一的模型建立(1)初始产生编码 图中起点县政府表示为“1”,乡镇节点“A,B,C,R”分别表示为“2,3,18”,村节点“1,2,3,35”分别表示为“19,20,21,22,53”,则乡镇、村之间的对称距离矩阵为53X53的矩阵,记为A。其中,使用一个较大的数“inf”表示两节点间无直接连接。因灾情巡视路线分成三条,需再插入两个虚拟点54,55表示路线起点县政府(并没有将其纳入矩阵A内),从而得到一个55位随机染色体编码,如:1,6,2,7,9,18,54,3,8,22, ,34,55,8,35,.45。对此,得到的三条路线可表示为: 16279181; 13822341;1835451。 同时,矩阵A的应设为一个较大的数,“inf”,以防出现“111”的路线,并且计算任意两节点间最小距离,得到矩阵B。(2)建立目标函数目标函数是使三条巡视路线中路程最大的路线路程最小,满足均衡条件,即:y=min(max()其中,而表示弧(i, j)的长度,即为(i, j)的权。(3)确定适值函数,进行选择因为以路程最小作为优化目标,因此可将适值函数定为:,为正实数若某个节点i的适值为,则其被选择的概率为 然后对各染色体编码计算出其累积的概率: 最后利用轮盘赌选择法进行选择。为了选择匹配的节点,需进行多轮选择,每一轮产生一个0,1均匀随机数,将随机数作为选择指针来确定备选节点。(4)部分匹配交叉与交换变异部分匹配交叉操作要求随机选取两个交叉点,由此确定一个匹配段,根据两个交叉点之间的中间段给出映射关系生成两个新节点。交换变异,即交换随机位置上的基因,变异的概率不宜过高或过低。(5)解码将的到的最有染色体进行解码,得出三条适宜的路线。在根据题目中所给的城镇距离构建一个5353的矩阵,将该矩阵设为D。最后利用矩阵D和三条最优路线解码得出结果。5.1.2模型的求解模型的求解过程主要是通过matlab编程实现,代码见【附录1】。(1) 根据该县的乡镇和村公路网示意图,得出镇村之间距离矩阵A。其中,i,j均表示城镇,表示镇i与镇j的距离。则有:将矩阵A输入到matlab程序中。(2)将矩阵输入后,程序运行得出结果如下:由此可知,三组的走的路程如下表一所示:表一 路线1的分组路线长度组数第一组第二组第三组路程194.9159.3215.9为比较均衡度,我们利用以上作法,做出多次结果,对其均衡度进行比较,比较根据为:结果如表二:表二 多组路线路程和均衡度比较表组数总路程第一组第二组第三组均衡度路线1570.1194.9159.3215.90.734路线2632.2199.1228.1205.10.874路线3622.9193.9236.5192.50.814路线4630.7230.3202.8197.60.858由此可知,路线1的均衡度最低,但是路程最短,因此我们还是选择路线1。路线如图三:图三 路线1三条最短路线示意图第一组(红色线):OP262728Q30Q29RA3331323534D1O第二组(绿色线):OM2520L19J18I15I161722K212324N26PO第三组(白色线):OC3D48E9F10F12H1413G11E7652O5.1.3 结果分析由上述结果可知,三组的路程分别为194.9,159.3,和215.9.总路程为570.1公里,而且三条路线长度相差不远,均衡度较高。因此,这种方案是可取的优化路线。5.1.4 模型评价对于问题一的解答,主要运用了遗传算法和MTSP模型。而这一个模型存在着随机性,而且得出的结果是近似解,不能保证每一次的结果都是符合实际要求的最优解。运用matlab进行求解的过程中,由于matlab的局限性,求解速度较慢。模型的求解中求得的是局部优化,求解过程容易导致形成局部最优解,而不是全局最优解,从而得到较大的误差。5.2 MTSP数学估计模型通过对问题一的探究,我们知道了分三组的情况下,利用遗传算法和MTSP数学模型得出了均衡下的最短总路程的路线。问题二加入了限制条件,但理论上的内部机制是相同的。因此我们对第一问的MTSP数学模型进行修改,将MTSP中的矩阵A中的数据改变有向矩阵,将无向图以有向矩阵的形势表现。5.2.1 问题二的模型建立(1)将矩阵A的数据改变,改变规则如下:i.将矩阵中表示距离的权重改为路程S除以速度V,即关联边的权重改为时间。并将节点的权重加入指向的边中。即,若i,j均表示城镇,则表示从镇i到镇j的时间加上镇j的权重。更改后的有向矩阵如下:ii预测分组数目。令路线权重为,=A,B,C,D,R,1,2,3,35求出所有关联边的权重:E=95.13关联边的总权重表示的是走遍所有的路程所用的总时间,令N为分组数目,预测N约为:=3.96由此可知,分组数目大约在3至4组。下面我们将用修改后的MTSP数学模型进行验证。iii.利用matlab程序,将组数定为3和4,分别运行两次,观察结果。由于遗传算法的特点,导致最短路线有重复停留,计算结果会比实际结果大,因此要根据画出的路线,进行结果修正。5.2.2 模型的求解模型的求解主要是利用matlab程序中的语句达成。将组数N定为3和4,分别运行两次。得到4组的结果如下:此可知,四组的分别用的时间如下表三:表三 软件求解四组的时间组数第一组第二组第三组第四组时间30.5422.0329.3226.48由得出的结果发现,当组数为3时,不管如何均衡,都无法使时间最长组的最小时间小于24,而组数为4时可以,因此我们认为在问题二的条件下,要在24小时内完成巡逻,至少要分4组。路线图如图四:图四 24时内完成巡逻的四组路线图由上图可知,在计算最短路径时易出现重复经过同一个节点,因此要进行结果修正,得出准确的最短时间。路线如下:第一组(红色线):O2019J11G12F109E84DO第二组(咖啡色线):OR29Q303231333534A1BCO第三组(白色线):O2521K18I1514H13L76523O第四组(绿色线):OP2627282423171622NMPO5.2.3 结果分析由上面结果求解的过程可知,由编程得出的最优解是有重复经过的,因此我们要将重复经过的节点的权重删去。上图中的,均为重复遍历的结点。计算得每条路线的时间如下:第一组:=30.54-8=22.54(小时)第二组:=22.03(小时)第三组:=29.32-8=21.32(小时)第三组:=26.48-7=19.48(小时)因此,我们至少可以用四组,在24小时内完成巡逻。时间分配如下表四:表四 修改后的四组时间表组数第一组第二组第三组第四组时间22.5422.0321.3219.485.2.4 模型评价第二问的解答是在第一问的基础上,加上了限制的条件,因此第二问计算时也存在着近似最优解的情况,因此需要对结果进行修正。模型二改造了MTSP数学模型中的矩阵A,将矩阵A变为有向矩阵,方便本题的计算,使最优解的得出得以实现。模型二利用简单估计的方法,为计算增加了便利性,减少计算中不必要的重复计算。5.3 “就远原则”优化模型已知巡视人员在各乡(镇)停留时间T=2小时,在各村停留时间t=1小时,汽车行驶速度V=35公里/小时。假定允许巡视人数足够多,即对巡视人员分组不作严格要求,但在灾情考察现实情形下,希望巡视效率高的同时每组参与人员也尽量多。因此,在最短时间内完成巡视并使得每组巡视人员访问的乡镇农村尽可能多,是我们需要寻找的最佳路线。此处,基于就远原则,对离县政府较远的乡镇或村进行优先巡视,然后在满足最短时间要求下逐次巡视较近的乡镇或村。5.3.1 模型的建立 (1)算出路线以及乡镇或村的时间权,并运用图论软件画出路线图,如图五:图五(2)基于上图,直接利用图论软件Floyd表得出巡视任意乡镇和村之间的所需最小时间(不包括停留时间)矩阵C,取县政府到任意乡镇或村(不包括停留时间)所需最小时间,如下表五:表五 县政府至各乡(镇)或村之间的所需最小时间(不包括停留时间)表ABCDEFGHIJKLM0.460.340.330.630.201.581.802.221.711.561.251.120.57NPQR1 234567890.891.580.830.370.170.260.400.990.500.780.991.431.42101112131415161718192021221.891.611.931.842.091.961.691.501.481.331.101.131.41232425262728293031323334351.121.270.910.590.810.640.601.050.630.860.670.791.02(3)计算出最短时间 将各个乡镇或村记为“”,则各乡镇或村的权(停留时间)为,取.因此,所需最短时间为:2*+。(4)寻找路线i:当=时,表示从起点1到点k所需最短时间最大,有点1到点k最短时间路线序列,如:148k,并沿路返回且不在其它乡镇或村停留,得到第一条巡视路线为:14845k45841,所需时间为。ii:排除k点,记=,ik,得到巡视路线序列,此时,所用时间。设, ,(i ,j=2,3,,53)且表示为从点i与j (不在i或j停留)所需的时间循环判断过程如下:假设=1,且满足,即表示点i与点之间可连通并且它们到起点i所需时间依次从大到小排列。若,则在序列中点i后添加点,得148i。此时,已用时间t=, =1,且将点形如点i上述步骤按有远到近进行顺序循环。否则,继续判断是否成立,若成立,如上述循环步骤,不断增长路线序列,直至回到县政府起点;若不成立,继续判断至。 5.3.2 模型的求解根据“就远原则”模型循环判断,在保证最短时间内,寻找出各组的最佳巡视路线,如下表六:表六 最佳巡视路线表组数最远乡镇或村路径被巡视乡镇或村时间t1H0-2-5-6-7-E-9-F-12-H-12-F-9-E-7-6-5-2-0H6.442140-2-5-6-L-19-J-13-14-13-J-19-L-6-5-2-013,146.183150-M-25-21-K-18-I-15-I-16-17-K-21-25-M-015,166.244120-2-5-6-7-E-9-F-12-G-11-E-7-6-5-2-011,125.955100-2-5-6-7-E-9-F-10-F-9-E-7-6-5-2-09,105.786G0-2-5-6-7-E-11-G-11-E-7-6-5-2-0G5.67I0-M-25-21-K-18-I-18-K-21-25-M-0I,186.428F0-2-5-6-7-E-9-F-9-E-7-6-5-2-0F,76.169J0-2-5-6-L-19-J -19-L -6-5-2-0J,196.1210170-M-25-21-K-17-22-24-N-26-P-017,22,246.211180-2-5-6-7-E-8-4-D-5-2-04,5,86.1912K0-M-25-21-K-21-25-M-0K,215.513E0-2-5-6-7-E-7-L-6-5-2-0E,65.9414L0-2-5-6-L-20-25-M-0L,205.2415230-P-26-N-23-N-26-P-0N,23,266,.2416300-R-29-Q-30-32-35-34-A-1-030,32,355.791740-2-3-D-4-D-3-2-0D,45.2118250-M-25-M-0M,254.8219Q0-R-29-Q-28-27-26-P-0Q,27,286.1120340-1-A-34-A-33-A-1-0A,33,34621310-R-31-R-1-0R,314.2622D0-2-3-D-3-2-0D,2,34.6323290-P-29-P-0P,294.4424B0-C-B-1-0B,C,15.885.3.3 结果分析由上表可看出,在允许巡视人员足够多的情况下,完成巡视的最短时间是6.44小时,并可分成24条巡视路线。并且,巡视离县政府较远的乡镇或村路线所需的时间比尽可能大,比较接近最短时间6.44;巡视离县政府较远的乡镇或村路线所需的时间反而较小,一般在4-5小时范围内,这是由该“就远原则”由远及近地寻找最佳灾情巡视路线的特点。5.3.4 模型评价(1)优点:容易理解,算法简单,能找出比较合适的最佳灾情巡视路线;(2)缺点:过程繁琐,实质上是按由远及近顺序的穷举法,解答消耗时间大,并且各路线之间有许多重复的乡镇或村结点,同时有些许路线相比其它路线并不是很均衡。5.3.4 模型的改进针对回答问题三所用的“就远原则”模型,过程繁琐,耗费时间长,出错率高的缺点,我们可以选择利用C+编程实现这个过程。因为C+运算速度高,准确率高,有利于我们更好完成“就远原则”模型。六、参考文献1 运筹学基础及运用(第五版) 胡运权 20082 数学建模与数学实验(第二版) 赵静 但琦 20063 实用运筹学 韩中庚 20074 基于遗传算法的一类多旅行商问题 王海龙 周辉仁 魏颖辉 20095 基于遗传算法的多人旅行尚问题求解 代坤 鲁士文 蒋祥刚 2004【附录】function varargout = mtspf_ga(dmat,salesmen,min_tour,pop_size,num_iter,show_prog,show_res)%dmat 任意两点的最短路径矩阵通过floyed算法求得结果。%salesmen 考察组组数%min_tour 每个巡查组访问的村(镇)数%pop_size 种群个体数%num_iter 迭代的代数%show_prog,show_res 显示的参数设定nargs = 7; %处理输入参数,用来给定一些默认的参数;for k = nargin:nargs-1 switch k case 0 dmat = 10*rand(20,20); case 1 salesmen = 5; case 2 min_tour = 2; case 3 pop_size = 80; case 4 num_iter = 5e3; case 5 show_prog = 1; case 6 show_res = 1; otherwise endend% 检查输入 矩阵nr,nc = size(dmat);if nr = nc error(Invalid XY or DMAT inputs!)endn = nr - 1; % 除去起始的点后剩余的城镇的数% 输入参数的检查salesmen = max(1,min(n,round(real(salesmen(1);min_tour = max(1,min(floor(n/salesmen),round(real(min_tour(1);pop_size = max(8,8*ceil(pop_size(1)/8);num_iter = max(1,round(real(num_iter(1);show_prog = logical(show_prog(1);show_res = logical(show_res(1);% 初始化路线、断点的选择num_brks = salesmen-1;dof = n - min_tour*salesmen; % 可以自由访问的点数addto = ones(1,dof+1);for k = 2:num_brks addto = cumsum(addto);endcum_prob = cumsum(addto)/sum(addto);% 初始化种群pop_rte = zeros(pop_size,n); % 路径集合的种群pop_brk = zeros(pop_size,num_brks); % 断点集合的种群for k = 1:pop_size pop_rte(k,:) = randperm(n)+1; pop_brk(k,:) = randbreaks();end% 选择绘图时的巡查组的颜色 可删去;clr = 1 0 0; 0 0 1; 0.67 0 1; 0 1 0; 1 0.5 0;if salesmen 5 clr = hsv(salesmen)end% 开始运行遗传算法过程global_min = Inf; %初始化最短路径total_dist = zeros(1,pop_size);dist_history = zeros(1,num_iter);tmp_pop_rte = zeros(8,n); %当前的路径设置tmp_pop_brk = zeros(8,num_brks); %当前的断点设置new_pop_rte = zeros(pop_size,n); %更新的路径设置new_pop_brk = zeros(pop_size,num_brks);%更新的断点设置if show_prog pfig = figure(Name,MTSPF_GA | Current Best Solution,Numbertitle,off);endfor iter = 1:num_iter % 评价每一代的种群 适应情况并作出选择。 for p = 1:pop_size d = 0; p_rte = pop_rte(p,:); p_brk = pop_brk(p,:); rng = 1 p_brk+1;p_brk n; for s = 1:salesmen d = d + dmat(1,p_rte(rng(s,1); % 添加开始的路径 for k = rng(s,1):rng(s,2)-1 d = d + dmat(p_rte(k),p_rte(k+1); end d = d + dmat(p_rte(rng(s,2),1); % 添加结束的的路径 dis(p,s)=d; %d=d+myLength(dmat,p_rte(rng(s,1):rng(s,2);%可调用函数处理 end total_dist(p) = d; %distan(p)=max(dis(p,:);%计算三个人中的最大值 end % 在每代种群中找到最好的路径 min_dist,index = min(total_dist); dist_history(iter) = min_dist; %+max(distan); if min_dist global_min global_min = min_dist; opt_rte = pop_rte(index,:); %最优的最短路径 opt_brk = pop_brk(index,:); %最优的断点设置 rng = 1 opt_brk+1;opt_brk n; %设置记录断点的方法 end % 遗传算法算子的操作集合 rand_grouping = randperm(pop_size); for p = 8:8:pop_size rtes = pop_rte(rand_grouping(p-7:p),:); brks = pop_brk(rand_grouping(p-7:p),:); dists = total_dist(rand_grouping(p-7:p); ignore,idx = min(dists); best_of_8_rte = rtes(idx,:); best_of_8_brk = brks(idx,:); rte_ins_pts = sort(ceil(n*rand(1,2); I = rte_ins_pts(1); J = rte_ins_pts(2); for k = 1:8 % 产生新的方案 tmp_pop_rte(k,:) = best_of_8_rte; tmp_pop_brk(k,:) = best_of_8_brk; switch k case 2 % 倒置操作 tmp_pop_rte(k,I:J) = fliplr(tmp_pop_rte(k,I:J); case 3 % 互换操作 tmp_pop_rte(k,I J) = tmp_pop_rte(k,J I); case 4 % 滑动平移操作 tmp_pop_rte(k,I:J) = tmp_pop_rte(k,I+1:J I); case 5 % 更新断点 tmp_pop_brk(k,:) = randbreaks(); case 6 % 倒置并更新断点 tmp_pop_rte(k,I:J) = fliplr(tmp_pop_rte(k,I:J); tmp_pop_brk(k,:) = randbreaks(); case 7 % 互换并更新断点 tmp_pop_rte(k,I J) = tmp_pop_rte(k,J I); tmp_pop_brk(k,:) = randbreaks(); case 8 % 评议并更新断点 tmp_pop_rte(k,I:J) = tmp_pop_rte(k,I+1:J I); tmp_pop_brk(k,:) = randbreaks(); otherwise % 不进行操做 end end new_pop_rte(p-7:p,:) = tmp_pop_rte; new_pop_brk(p-7:p,:) = tmp_pop_brk; end pop_rte = new_pop_rte; pop_brk = new_pop_brk;end% 返回结果部分rng = 1 opt_brk+1;opt_brk n;dis_e=zeros(1,salesmen) %设置并计算每个巡查组的最短路径for s = 1:salesmen dis_e(s)=myLength(dmat,opt_rte(rng(s,1):rng(s,2);endif nargout varargout1 = opt_rte; varargout2 = opt_brk; varargout3 = min_dist; varargout4 = dis_e;end%做出迭代过程的图示plot(dist_history)grid on;xlabel(迭代的代数);ylabel(所走的路径之和) % 随机产生一套断点 的集合 function breaks = randbreak

温馨提示

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

评论

0/150

提交评论