结构力学优化算法:多目标优化:多目标优化原理与方法_第1页
结构力学优化算法:多目标优化:多目标优化原理与方法_第2页
结构力学优化算法:多目标优化:多目标优化原理与方法_第3页
结构力学优化算法:多目标优化:多目标优化原理与方法_第4页
结构力学优化算法:多目标优化:多目标优化原理与方法_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

结构力学优化算法:多目标优化:多目标优化原理与方法1绪论1.1多目标优化的基本概念在工程设计和科学研究中,我们常常面临需要同时优化多个目标的情况,这就是多目标优化问题。与单目标优化问题不同,多目标优化问题中,目标函数之间可能存在冲突,无法同时达到最优。例如,在结构力学优化中,我们可能希望结构既轻便又坚固,但这两个目标往往相互矛盾。多目标优化的目标是找到一组解,这些解在所有目标上都是最优的,或者在某些目标上牺牲一点以在其他目标上获得更大的收益,这组解被称为帕累托最优解集。1.1.1帕累托最优帕累托最优(ParetoOptimality)是多目标优化中的一个核心概念,指的是在多目标优化问题中,不存在另一个解在所有目标上都优于当前解。换句话说,如果一个解在某个目标上优于另一个解,但在其他目标上不劣于另一个解,那么这个解就是帕累托最优的。帕累托最优解集构成了一个决策者在不同目标之间进行权衡的“前沿”。1.2结构力学优化的重要性结构力学优化在现代工程设计中扮演着至关重要的角色。它不仅能够帮助工程师设计出更高效、更经济的结构,还能确保结构的安全性和可靠性。在多目标优化的框架下,结构力学优化能够同时考虑结构的重量、成本、强度、刚度等多个因素,从而在设计空间中找到一个平衡点,满足工程项目的多方面需求。1.2.1示例:使用NSGA-II算法进行结构优化NSGA-II(Non-dominatedSortingGeneticAlgorithmII)是一种广泛应用于多目标优化的遗传算法。下面是一个使用Python和DEAP库进行结构优化的示例代码:importrandom

fromdeapimportbase,creator,tools,algorithms

#定义问题的类型

creator.create("FitnessMin",base.Fitness,weights=(-1.0,-1.0))

creator.create("Individual",list,fitness=creator.FitnessMin)

#定义目标函数

defevaluate(individual):

weight=sum(individual)#结构的总重量

strength=min(individual)#结构的最小强度

returnweight,strength

#初始化种群

toolbox=base.Toolbox()

toolbox.register("attr_float",random.random)

toolbox.register("individual",tools.initRepeat,creator.Individual,toolbox.attr_float,n=5)

toolbox.register("population",tools.initRepeat,list,toolbox.individual)

#注册遗传操作

toolbox.register("mate",tools.cxTwoPoint)

toolbox.register("mutate",tools.mutGaussian,mu=0,sigma=1,indpb=0.2)

toolbox.register("select",tools.selNSGA2)

toolbox.register("evaluate",evaluate)

#进行优化

pop=toolbox.population(n=50)

hof=tools.ParetoFront()

stats=tools.Statistics(lambdaind:ind.fitness.values)

stats.register("avg",numpy.mean,axis=0)

stats.register("std",numpy.std,axis=0)

stats.register("min",numpy.min,axis=0)

stats.register("max",numpy.max,axis=0)

pop,logbook=algorithms.eaMuPlusLambda(pop,toolbox,mu=50,lambda_=100,cxpb=0.5,mutpb=0.2,ngen=10,stats=stats,halloffame=hof)

#输出结果

print("ParetoFront:")

forindinhof:

print(ind)1.2.2代码解释定义问题类型:使用deap库创建一个最小化问题的适应度类型,同时考虑两个目标(结构的总重量和最小强度)。定义目标函数:evaluate函数计算个体的总重量和最小强度,返回这两个值作为目标函数的输出。初始化种群:创建一个包含50个个体的初始种群,每个个体由5个随机浮点数组成,代表结构的不同参数。注册遗传操作:定义了交叉、变异和选择操作,使用NSGA-II的选择策略selNSGA2。执行优化:使用eaMuPlusLambda算法进行进化,生成10代后代,每代包含100个个体。同时,记录并输出每代的统计信息,如平均值、标准差、最小值和最大值。输出结果:最后,输出帕累托最优解集中的所有个体,这些个体代表了在结构重量和强度之间达到最优平衡的设计方案。通过上述代码示例,我们可以看到多目标优化算法如NSGA-II如何在结构力学优化中应用,帮助我们找到在多个目标之间权衡的最优解集。这不仅提高了设计的效率,也确保了设计方案的多样性和可行性。2多目标优化原理2.1Pareto最优解的定义在多目标优化问题中,Pareto最优解(ParetoOptimalSolution)是一个关键概念。当一个解在所有目标中都不劣于其他任何解,并且在至少一个目标上优于其他解时,这个解被称为Pareto最优解。在多目标优化中,通常不存在一个解能够同时优化所有目标,因此Pareto最优解集提供了一组解,这些解在目标之间形成了一个权衡。2.1.1示例假设我们有两个目标函数:成本最小化和性能最大化。我们有三个设计选项A、B、C,其目标函数值如下:设计选项成本性能A10050B12060C11055在这个例子中,设计B和C是Pareto最优的,因为不存在一个设计在成本和性能上同时优于它们。2.2多目标优化问题的数学描述多目标优化问题可以数学上描述为寻找一组决策变量x,使得多个目标函数fix(2.2.1数学形式minimize其中,fix是目标函数,gj2.3目标函数与约束条件的处理在多目标优化中,处理目标函数和约束条件的方法多种多样。一种常见的方法是将所有目标函数转化为一个单一的综合目标函数,通过加权求和或使用其他综合技术。另一种方法是使用进化算法,如NSGA-II,直接在多目标空间中搜索Pareto最优解。2.3.1示例:加权求和法假设我们有两个目标函数f1x和F其中,w1和w代码示例#加权求和法示例代码

defweighted_sum_objective(x,w1,w2):

"""

计算加权求和目标函数值

:paramx:决策变量

:paramw1:第一个目标函数的权重

:paramw2:第二个目标函数的权重

:return:综合目标函数值

"""

f1=x[0]**2+x[1]**2#第一个目标函数:最小化

f2=(x[0]-1)**2+(x[1]-1)**2#第二个目标函数:最小化

returnw1*f1+w2*f2

#示例数据

x=[0.5,0.5]

w1=0.5

w2=0.5

#计算综合目标函数值

F=weighted_sum_objective(x,w1,w2)

print("综合目标函数值:",F)在这个例子中,我们定义了两个目标函数f1x和f2x,并通过加权求和法将它们转化为一个综合目标函数Fx。我们使用了Python语言来实现这个算法,并提供了一个具体的决策变量x2.3.2示例:NSGA-II算法NSGA-II(Non-dominatedSortingGeneticAlgorithmII)是一种流行的多目标优化算法,它直接在多目标空间中搜索Pareto最优解。代码示例#NSGA-II算法示例代码

fromdeapimportbase,creator,tools,algorithms

importrandom

#定义问题

creator.create("FitnessMin",base.Fitness,weights=(-1.0,-1.0))

creator.create("Individual",list,fitness=creator.FitnessMin)

#目标函数

defevaluate(individual):

f1=individual[0]**2+individual[1]**2

f2=(individual[0]-1)**2+(individual[1]-1)**2

returnf1,f2

#初始化种群

toolbox=base.Toolbox()

toolbox.register("attr_float",random.random)

toolbox.register("individual",tools.initRepeat,creator.Individual,toolbox.attr_float,n=2)

toolbox.register("population",tools.initRepeat,list,toolbox.individual)

#注册评估函数

toolbox.register("evaluate",evaluate)

#进化算法参数

POP_SIZE=100

NGEN=100

#创建种群

pop=toolbox.population(n=POP_SIZE)

#进化算法

pop,logbook=algorithms.eaMuPlusLambda(pop,toolbox,mu=POP_SIZE,lambda_=POP_SIZE,cxpb=0.5,mutpb=0.2,ngen=NGEN)

#输出Pareto前沿

pareto_front=tools.sortNondominated(pop,len(pop),first_front_only=True)

print("Pareto前沿:",pareto_front)在这个例子中,我们使用了Python的DEAP库来实现NSGA-II算法。我们定义了两个目标函数f1x和通过以上原理和示例的介绍,我们可以看到多目标优化问题的处理方法多样,从简单的加权求和法到复杂的进化算法,每种方法都有其适用场景和优缺点。在实际应用中,选择合适的方法对于找到满意的Pareto最优解至关重要。3多目标优化方法3.1权重法详解权重法是多目标优化中的一种常用方法,它通过将多个目标函数转化为一个加权的单目标函数来简化问题。这种方法的关键在于如何合理地设置各个目标的权重,以反映决策者对不同目标的偏好。3.1.1原理假设我们有一个包含两个目标函数的优化问题:f1x和f2x,其中x是决策变量。权重法的基本思想是定义一个权重向量ωF通过调整权重向量ω,可以得到不同的单目标优化问题,从而找到一系列的Pareto最优解。3.1.2示例假设我们有一个结构设计问题,目标是最小化成本f1x和最大化结构强度importnumpyasnp

fromscipy.optimizeimportminimize

#定义目标函数

defobjective(x,w):

f1=x[0]**2+x[1]**2#成本函数

f2=-(x[0]+x[1])#强度函数,取负值以实现最大化

returnw[0]*f1+w[1]*f2

#定义约束条件

defconstraint1(x):

returnx[0]+x[1]-10

#定义优化问题的约束

cons=({'type':'ineq','fun':constraint1})

#初始猜测

x0=np.array([1.0,5.0])

#设置权重向量

w=np.array([0.5,0.5])

#进行优化

res=minimize(objective,x0,args=(w,),constraints=cons,method='SLSQP')

#输出结果

print(res.x)在这个例子中,我们使用了SciPy的minimize函数,通过设置权重向量ω,我们可以找到成本和强度之间的平衡点。3.2ε-约束法ε-约束法是一种将多目标优化问题转化为一系列单目标优化问题的方法。它通过固定某些目标函数的值,将问题转化为对剩余目标函数的优化。3.2.1原理在ε-约束法中,我们选择一个目标函数作为主要优化目标,而将其他目标函数的值限制在一个可接受的范围内,即ε约束范围内。这种方法可以生成Pareto前沿上的多个解,每个解对应不同的ε约束值。3.2.2示例考虑一个包含两个目标函数的优化问题,我们使用ε-约束法来优化其中一个目标,同时将另一个目标的值限制在ε范围内:importnumpyasnp

fromscipy.optimizeimportminimize

#定义目标函数

deff1(x):

returnx[0]**2+x[1]**2

deff2(x):

return-(x[0]+x[1])

#定义ε约束法的优化函数

defobjective(x,epsilon):

returnf1(x)

#定义约束条件

defconstraint1(x):

returnx[0]+x[1]-10

defconstraint2(x):

returnf2(x)+epsilon

#定义优化问题的约束

cons=({'type':'ineq','fun':constraint1},

{'type':'ineq','fun':constraint2})

#初始猜测

x0=np.array([1.0,5.0])

#设置ε值

epsilon=0.0

#进行优化

res=minimize(objective,x0,args=(epsilon,),constraints=cons,method='SLSQP')

#输出结果

print(res.x)通过改变ε值,我们可以找到不同的Pareto最优解。3.3非支配排序遗传算法(NSGA-II)NSGA-II是一种高效的多目标遗传算法,它通过非支配排序和拥挤距离来选择和进化种群,以找到Pareve前沿上的解。3.3.1原理NSGA-II算法首先对种群进行非支配排序,然后根据拥挤距离选择个体进行交叉和变异操作。非支配排序确保了种群中个体的多样性,而拥挤距离则用于在Pareto前沿上保持解的均匀分布。3.3.2示例使用Python的DEAP库来实现NSGA-II算法:importrandom

fromdeapimportbase,creator,tools,algorithms

#定义问题的维度和目标函数

creator.create("FitnessMin",base.Fitness,weights=(-1.0,-1.0))

creator.create("Individual",list,fitness=creator.FitnessMin)

#定义目标函数

defevaluate(individual):

f1=sum(individual)

f2=sum(x**2forxinindividual)

returnf1,f2

#初始化种群

toolbox=base.Toolbox()

toolbox.register("attr_float",random.random)

toolbox.register("individual",tools.initRepeat,creator.Individual,toolbox.attr_float,n=2)

toolbox.register("population",tools.initRepeat,list,toolbox.individual)

#注册评估、选择、交叉和变异操作

toolbox.register("evaluate",evaluate)

toolbox.register("mate",tools.cxTwoPoint)

toolbox.register("mutate",tools.mutGaussian,mu=0,sigma=1,indpb=0.2)

toolbox.register("select",tools.selNSGA2)

#设置算法参数

POP_SIZE=100

NGEN=100

#运行NSGA-II算法

pop=toolbox.population(n=POP_SIZE)

hof=tools.ParetoFront()

stats=tools.Statistics(lambdaind:ind.fitness.values)

stats.register("avg",np.mean,axis=0)

stats.register("std",np.std,axis=0)

stats.register("min",np.min,axis=0)

stats.register("max",np.max,axis=0)

pop,logbook=algorithms.eaMuPlusLambda(pop,toolbox,mu=POP_SIZE,lambda_=POP_SIZE,

cxpb=0.5,mutpb=0.2,ngen=NGEN,

stats=stats,halloffame=hof)

#输出Pareto前沿上的解

forindinhof:

print(ind)在这个例子中,我们定义了两个目标函数f1x和3.4多目标粒子群优化算法(MOPSO)MOPSO是粒子群优化算法(PSO)的多目标版本,它通过引入多个目标函数和非支配排序来寻找Pareto最优解。3.4.1原理MOPSO算法中的粒子不仅根据单个目标函数的值来更新自己的位置和速度,还考虑了其他目标函数的值。通过非支配排序,MOPSO可以保持种群的多样性,从而在Pareto前沿上找到多个解。3.4.2示例使用Python的PyMOPSO库来实现MOPSO算法:frompymopsoimportMOPSO

fromblemimportZDT1

#定义问题

problem=ZDT1()

#初始化MOPSO算法

mopso=MOPSO(problem,pop_size=100,max_iter=100)

#运行算法

mopso.run()

#输出Pareto前沿上的解

forindinmopso.population:

ifind.status==1:#非支配解

print(ind.objectives)在这个例子中,我们使用了ZDT1测试问题,这是一个包含两个目标函数的多目标优化问题。通过运行MOPSO算法,我们可以找到Pareto前沿上的多个解。以上就是关于多目标优化方法的详细介绍,包括权重法、ε-约束法、NSGA-II和MOPSO算法。每种方法都有其适用场景和优缺点,选择合适的方法对于解决多目标优化问题至关重要。4结构力学中的多目标优化4.1结构重量与刚度的优化在结构力学设计中,结构的重量和刚度往往是相互矛盾的目标。减轻结构重量可以提高效率,减少材料成本,但同时可能降低结构的刚度,影响其稳定性和承载能力。多目标优化技术允许我们在这些目标之间找到一个平衡点,即“Pareto最优解”。4.1.1原理多目标优化问题可以表示为:minimize其中,fx是目标函数向量,gix和hjx分别是不等式和等式约束。在结构优化中,4.1.2方法非支配排序遗传算法(NSGA-II):这是一种常用的多目标优化算法,通过遗传操作和非支配排序来寻找Pareto前沿。多目标粒子群优化(MOPSO):基于粒子群优化算法,通过引入多个目标函数来优化结构设计。4.1.3示例假设我们有一个简单的梁结构,需要优化其重量和刚度。我们使用Python的pymoo库来实现NSGA-II算法。importnumpyasnp

frompymoo.algorithms.moo.nsga2importNSGA2

frompymoo.factoryimportget_problem

frompymoo.optimizeimportminimize

frompymoo.visualization.scatterimportScatter

#定义问题

problem=get_problem("dtlz2",n_var=10,n_obj=2)

#定义算法

algorithm=NSGA2(pop_size=100)

#执行优化

res=minimize(problem,

algorithm,

('n_gen',200),

seed=1,

verbose=True)

#可视化结果

plot=Scatter()

plot.add(res.F)

plot.show()在这个例子中,我们使用了DTLZ2测试问题,它是一个多目标优化问题的标准测试函数。实际应用中,f1x和4.2结构动力学性能优化结构的动力学性能,如振动频率、阻尼比等,对于许多工程应用至关重要。优化结构的动力学性能,可以提高其在动态载荷下的响应,减少振动和噪声,提高使用寿命。4.2.1原理动力学性能优化通常涉及结构的模态分析,通过调整结构的几何形状、材料属性或约束条件,来优化其模态参数。4.2.2方法模态保证准则(MAC):用于评估优化前后结构模态的相似性,确保优化过程不会显著改变结构的动态特性。遗传算法(GA):可以用于动力学性能优化,通过随机搜索和进化策略来寻找最优解。4.2.3示例使用MATLAB进行结构动力学性能优化,我们可以通过调整结构的几何参数来优化其第一阶固有频率。%定义目标函数

function[f,g,h]=objective_function(x)

%x:设计变量向量

%f:目标函数值

%g:不等式约束

%h:等式约束

f=-x(1);%假设我们想要最大化第一阶固有频率

g=[];

h=[];

end

%定义优化问题

problem=optimproblem('Objective',@objective_function);

%定义设计变量

x=optimvar('x',2,'LowerBound',0,'UpperBound',10);

%添加设计变量到问题

problem=optimproblem('Variables',x);

%定义遗传算法

options=optimoptions('ga','PopulationSize',50,'Generations',100);

%执行优化

[sol,fval]=ga(problem,2,options);在这个例子中,我们使用MATLAB的ga函数来执行遗传算法优化。设计变量x代表结构的两个几何参数,我们假设通过最大化x(1)可以提高第一阶固有频率。4.3结构稳定性与安全性的优化结构的稳定性和安全性是设计中的关键因素,特别是在极端载荷条件下。多目标优化可以帮助我们找到在成本和安全性之间平衡的设计方案。4.3.1原理结构稳定性与安全性的优化通常涉及对结构的极限状态进行分析,确保在所有可能的载荷情况下,结构都能保持稳定和安全。4.3.2方法极限状态设计(LSD):基于结构在极限状态下的性能,来优化设计。可靠度优化:考虑结构的可靠度,即在给定时间内结构保持安全的概率。4.3.3示例使用Python的scipy.optimize库,我们可以定义一个优化问题,其中包含结构稳定性和成本两个目标。fromscipy.optimizeimportminimize

importnumpyasnp

#定义目标函数

defobjective_function(x):

#x:设计变量向量

#返回一个包含两个目标的向量

cost=x[0]+x[1]#假设成本是两个设计变量的和

stability=1/(x[0]*x[1])#假设稳定性与设计变量的乘积成反比

returnnp.array([cost,stability])

#定义约束

defconstraint(x):

returnx[0]*x[1]-1#假设设计变量的乘积必须大于1

#执行优化

res=minimize(objective_function,[1,1],method='SLSQP',constraints={'type':'ineq','fun':constraint})

#输出结果

print(res.x)在这个例子中,我们定义了两个目标:成本和稳定性。我们使用scipy.optimize.minimize函数,通过SLSQP方法来执行优化。约束条件确保设计变量的乘积大于1,这可以代表某种结构稳定性的要求。以上示例和方法展示了在结构力学优化中如何应用多目标优化技术,通过平衡不同的设计目标,找到最优的设计方案。5案例分析5.1桥梁结构的多目标优化设计5.1.1原理与方法在桥梁结构设计中,多目标优化旨在同时优化多个相互冲突的目标,如成本、安全性和美观性。这通常通过定义目标函数和约束条件,然后使用优化算法来寻找帕累托最优解集实现。帕累托最优解是指在不恶化任一目标的情况下,无法进一步改善其他目标的解。方法论定义目标函数:成本最小化、安全性最大化、美观性最大化等。确定约束条件:材料强度、几何尺寸、荷载条件等。选择优化算法:如遗传算法、粒子群优化、差分进化等。执行优化:算法迭代,寻找满足所有约束条件下的帕累托最优解。结果分析:评估不同解的优劣,选择最合适的方案。5.1.2示例:使用Python进行桥梁结构多目标优化假设我们设计一座桥梁,目标是最小化成本和最大化安全性,同时考虑材料强度和荷载条件的约束。#导入必要的库

importnumpyasnp

frompymoo.algorithms.moo.nsga2importNSGA2

frompymoo.factoryimportget_problem

frompymoo.optimizeimportminimize

frompymoo.visualization.scatterimportScatter

#定义问题

defbridge_design(x):

cost=x[0]*x[1]*x[2]#成本函数,假设与材料、尺寸相关

safety=1/(x[0]+x[1]+x[2])#安全性函数,假设与材料、尺寸的总和成反比

return[cost,safety]

#约束条件

defconstraints(x):

g1=x[0]-10#材料强度约束

g2=x[1]-5#尺寸约束

g3=x[2]-2#荷载条件约束

return[g1,g2,g3]

#优化算法

algorithm=NSGA2(pop_size=100)

#问题定义

problem=get_problem("dtlz2",n_var=3,n_obj=2,n_constr=3)

#执行优化

res=minimize(problem,

algorithm,

('ineq',constraints),

seed=1,

verbose=True)

#结果可视化

plot=Scatter()

plot.add(res.F)

plot.show()解释问题定义:使用pymoo库中的dtlz2问题作为示例,它是一个多目标优化问题,有3个变量和2个目标。优化算法:选择NSGA2算法,这是一种常用的多目标遗传算法。约束条件:定义了三个不等式约束,确保设计满足材料强度、尺寸和荷载条件。结果可视化:使用Scatter类可视化帕累托前沿,帮助分析不同解的特性。5.2飞机机翼的多目标优化分析5.2.1原理与方法飞机机翼的多目标优化设计需要平衡空气动力学性能、结构重量和制造成本。这通常涉及复杂的流体动力学和结构力学分析,通过数值模拟和优化算法来实现。方法论流体动力学分析:使用CFD(计算流体动力学)软件模拟机翼的气动性能。结构力学分析:使用FEA(有限元分析)软件评估机翼的结构强度和重量。定义目标函数:气动效率、结构重量最小化、成本最小化等。确定约束条件:强度、刚度、气动稳定性等。选择优化算法:如多目标粒子群优化(MOPSO)、多目标遗传算法(MOGA)等。执行优化:算法迭代,寻找满足所有约束条件下的帕累托最优解。结果分析:评估不同设计方案的气动性能、结构特性和成本,选择最佳方案。5.2.2示例:使用Python进行飞机机翼多目标优化假设我们优化飞机机翼设计,目标是提高气动效率和减少结构重量,同时考虑强度和刚度的约束。#导入必要的库

importnumpyasnp

frompymoo.algorithms.moo.nsga2importNSGA2

frompymoo.factoryimportget_problem

frompymoo.optimizeimportminimize

frompymoo.visualization.scatterimportScatter

#定义问题

defwing_design(x):

aerodynamic_efficiency=x[0]*x[1]#气动效率函数,假设与翼型和翼展相关

weight=x[2]*x[3]#结构重量函数,假设与材料和厚度相关

return[aerodynamic_efficiency,weight]

#约束条件

defconstraints(x):

g1=x[0]-0.5#翼型约束

g2=x[1]-10#翼展约束

g3=x[2]-2#材料强度约束

g4=x[3]-0.1#厚度约束

return[g1,g2,g3,g4]

#优化算法

algorithm=NSGA2(pop_size=100)

#问题定义

problem=get_problem("dtlz2",n_var=4,n_obj=2,n_constr=4)

#执行优化

res=minimize(problem,

algorithm,

('ineq',constraints),

seed=1,

verbose=True)

#结果可视化

plot=Scatter()

plot.add(res.F)

plot.show()解释问题定义:使用dtlz2问题作为示例,有4个变量和2个目标。优化算法:选择NSGA2算法。约束条件:定义了四个不等式约束,确保设计满足翼型、翼展、材料强度和厚度的要求。结果可视化:使用Scatter类可视化帕累托前沿,帮助分析不同设计方案的气动效率和结构重量。通过上述案例分析,我们可以看到多目标优化在结构力学设计中的应用

温馨提示

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

评论

0/150

提交评论