python粒子群优化算法

合集下载

python 库 粒子群算法

python 库 粒子群算法

python 库粒子群算法粒子群算法是一种基于群体智能的优化算法,常用于解决复杂的优化问题。

它模拟了自然界中鸟群、鱼群等群体行为的思想,通过群体中的个体之间的信息传递和相互协作,找到全局最优解。

Python提供了一些库可以帮助我们实现粒子群算法,并应用于各种优化问题。

下面将介绍几个常用的Python库和它们在粒子群算法中的应用。

1. PySwarm:PySwarm是一个强大的粒子群优化(PSO)库,它提供了丰富的功能和灵活的接口,可以用于解决各种优化问题。

它使用Python语言实现了标准的粒子群算法,并提供了多种适应性函数和优化目标函数的定义方式。

通过PySwarm,我们可以快速构建并解决自己的优化问题,从而得到满足要求的最优解。

2. DEAP:DEAP是一个用于进化计算的Python库,也可以用于实现粒子群算法。

它提供了进化算法和进化策略中常用的工具和方法,并支持多种遗传进化搜索算法的实现。

DEAP中的粒子群算法模块可以方便地创建并运行粒子群算法,并通过自定义适应度函数和问题参数来优化不同的目标。

3. PyGMO:PyGMO是一个高性能的开源优化库,可以用于求解优化问题和执行各种优化算法,包括粒子群算法。

它提供了多种算法实现和问题建模的方式,支持并行计算和多线程优化,并提供了友好的Python接口和可视化工具。

PyGMO可以帮助我们快速构建并解决各种优化问题,并得到高质量的优化结果。

4. Optunity:Optunity是一个基于Python的优化库,提供了多种优化算法和搜索方法的实现。

它可以用于解决参数选择、模型优化等问题,也可以用于实现粒子群算法。

Optunity支持自定义目标函数和约束条件的定义,通过灵活的接口和参数设置,可以用于解决各种复杂的优化问题,并得到满意的优化结果。

以上是几个常用的Python库,在粒子群算法中的应用。

它们提供了灵活多样的接口和强大的功能,可以帮助我们快速构建并解决各种优化问题。

粒子群优化算法(PSO)Python实现

粒子群优化算法(PSO)Python实现

粒子群优化算法(PSO)Python实现粒子群优化算法(Particle Swarm Optimization, PSO)是一种基于群体智能的优化算法,它模拟了鸟群或鱼群等群体协同的行为。

PSO算法通过模拟每个个体(粒子)在解空间中的移动,以找到最优解。

在PSO算法中,粒子的位置和速度表示解空间中的一个点,而每个粒子的局部最优解和全局最优解则用来指导粒子的方向。

下面是一个简单的PSO算法的Python实现:```pythonimport random#定义粒子类class Particle:def __init__(self, dimensions, min_values, max_values):self.dimensions = dimensionsself.min_values = min_valuesself.max_values = max_valuesself.position = [random.uniform(min_values[i], max_values[i]) for i in range(dimensions)]self.velocity = [random.uniform(-(max_values[i] -min_values[i]), max_values[i] - min_values[i]) for i inrange(dimensions)]self.best_position = self.position.copydef update_velocity(self, global_best_position,inertia_weight, cognitive_weight, social_weight):for i in range(self.dimensions):r1 = random.randomr2 = random.randomdef update_position(self):for i in range(self.dimensions):self.position[i] += self.velocity[i]if self.position[i] < self.min_values[i]:self.position[i] = self.min_values[i]elif self.position[i] > self.max_values[i]:self.position[i] = self.max_values[i]def update_best_position(self):if objective_function(self.position) <objective_function(self.best_position):self.best_position = self.position.copy#定义目标函数(此处仅为示例,实际应用中需根据问题进行定义)def objective_function(position):return sum(position)def pso(num_particles, dimensions, min_values, max_values, num_iterations, inertia_weight, cognitive_weight, social_weight): particles = [Particle(dimensions, min_values, max_values)for _ in range(num_particles)]global_best_position = particles[0].position.copyfor _ in range(num_iterations):for particle in particles:particle.update_velocity(global_best_position,inertia_weight, cognitive_weight, social_weight)particle.update_positionparticle.update_best_positionif objective_function(particle.best_position) <objective_function(global_best_position):global_best_position = particle.best_position.copyreturn global_best_position#示例使用num_particles = 30dimensions = 2min_values = [-5, -5]max_values = [5, 5]num_iterations = 100inertia_weight = 0.5cognitive_weight = 0.8social_weight = 0.8best_position = pso(num_particles, dimensions, min_values, max_values, num_iterations, inertia_weight, cognitive_weight, social_weight)print("最优解:", best_position)print("最优值:", objective_function(best_position))```在上面的代码中,首先定义了一个`Particle`类来表示粒子。

多目标粒子群优化算法python

多目标粒子群优化算法python

多目标粒子群优化算法python多目标粒子群优化算法(Multi-objective Particle Swarm Optimization,MOPSO)是一种常用于解决多目标优化问题的进化算法。

本文将介绍多目标优化问题的概念和特点,然后详细介绍MOPSO算法的原理和步骤,最后通过一个简单的案例来说明该算法的应用。

一、多目标优化问题多目标优化问题是指在优化过程中存在多个相互矛盾的目标函数,寻找这些目标函数的最优解是一个复杂且具有挑战性的任务。

在实际应用中,往往会出现多个冲突的目标,例如在设计一辆汽车时需要同时考虑车辆的性能、安全性、燃油经济性等多个指标。

解决多目标优化问题的传统方法包括加权法、约束法和分层法等,然而这些方法存在一些局限性,无法得到全局最优解。

二、MOPSO算法的原理MOPSO算法是基于粒子群优化算法(Particle Swarm Optimization,PSO)的一种改进算法,通过引入非支配排序和拥挤度距离的概念,实现了对多个目标的优化。

MOPSO算法的基本原理如下:1. 初始化粒子群:随机生成一定数量的粒子,每个粒子代表一个解,同时记录每个粒子的个体最优解和全局最优解。

2. 更新粒子速度和位置:根据粒子的个体最优解和全局最优解,以及一定的权重系数,更新粒子的速度和位置。

3. 非支配排序:对所有粒子根据其在目标空间的支配关系进行排序,得到一系列非支配解集合。

4. 拥挤度距离计算:计算每个非支配解的拥挤度距离,用于保证解的多样性。

5. 环境选择:根据非支配排序和拥挤度距离,选择一定数量的粒子作为下一代群体。

6. 终止条件判断:根据预设的终止条件,判断是否达到终止条件,如果未达到则返回步骤2,否则输出结果。

三、MOPSO算法的步骤MOPSO算法的步骤可以总结如下:1. 初始化粒子群:随机生成一定数量的粒子,并初始化其速度和位置。

2. 更新粒子速度和位置:根据粒子的个体最优解和全局最优解,以及一定的权重系数,更新粒子的速度和位置。

粒子群优化算法python

粒子群优化算法python

粒子群优化算法python粒子群优化算法(Particle Swarm Optimization,简称PSO)是一种基于群体智能的优化算法,它模拟了鸟群觅食行为,通过不断更新粒子的位置和速度,来寻找最优解。

在本文中,我们将介绍粒子群优化算法的原理及其在Python中的实现。

一、粒子群优化算法原理粒子群优化算法的核心思想是通过模拟鸟群觅食行为来进行优化。

算法中的每个粒子都代表了搜索空间中的一个解,而粒子的位置和速度则代表了解的状态和搜索方向。

在算法开始时,每个粒子都会被随机初始化,并赋予一个随机的速度。

接着,粒子会根据自身当前位置和速度,以及全局最优解和个体最优解的信息,来更新自己的速度和位置。

粒子群优化算法中的速度更新公式如下所示:v(t+1) = w * v(t) + c1 * r1 * (pbest - x(t)) + c2 * r2 * (gbest - x(t))其中,v(t+1)表示粒子在下一时刻的速度,w是惯性权重,c1和c2分别是加速因子,r1和r2是[0,1]之间的随机数,pbest表示粒子的个体最优解,gbest表示全局最优解,x(t)表示粒子的当前位置。

粒子的位置更新公式如下所示:x(t+1) = x(t) + v(t+1)其中,x(t+1)表示粒子在下一时刻的位置,x(t)表示粒子的当前位置,v(t+1)表示粒子在下一时刻的速度。

通过不断迭代更新粒子的位置和速度,粒子群优化算法能够逐渐收敛到全局最优解。

二、粒子群优化算法的Python实现在Python中,我们可以使用numpy库来进行粒子群优化算法的实现。

下面是一个简单的示例代码:```pythonimport numpy as npdef objective_function(x):# 定义目标函数,这里以Rosenbrock函数为例return (1 - x[0])**2 + 100 * (x[1] - x[0]**2)**2def PSO(objective_function, num_particles, num_dimensions, max_iter):# 初始化粒子群particles = np.random.uniform(low=-5, high=5, size=(num_particles, num_dimensions))velocities = np.zeros((num_particles, num_dimensions))pbest = particles.copy()gbest = particles[np.argmin([objective_function(p) for p in particles])]# 设置参数w = 0.5c1 = 1c2 = 1# 迭代更新粒子位置和速度for _ in range(max_iter):for i in range(num_particles):r1 = np.random.uniform()r2 = np.random.uniform()velocities[i] = w * velocities[i] + c1 * r1 * (pbest[i] - particles[i]) + c2 * r2 * (gbest - particles[i])particles[i] = particles[i] + velocities[i]if objective_function(particles[i]) < objective_function(pbest[i]):pbest[i] = particles[i]if objective_function(pbest[i]) < objective_function(gbest):gbest = pbest[i]return gbest# 使用粒子群优化算法求解目标函数的最小值gbest = PSO(objective_function, num_particles=30, num_dimensions=2, max_iter=100)print("最优解:", gbest)print("最优解对应的目标函数值:", objective_function(gbest))```在上述代码中,我们首先定义了一个目标函数`objective_function`,这里以Rosenbrock函数为例。

pso优化bp算法python代码

pso优化bp算法python代码

pso优化bp算法python代码PSO优化BP算法Python代码是基于粒子群算法(PSO)和BP(反向传播)神经网络算法的优化算法,用于解决分类和回归问题。

以下是一些关键的Python代码段来实现此算法:1. 导入必要的库```pythonimport numpy as npimport random```2. 定义神经网络类```pythonclass NeuralNetwork:def __init__(self, inputs, hidden, outputs):self.input_nodes = inputsself.hidden_nodes = hiddenself.output_nodes = outputsself.weights_ih = np.random.randn(self.hidden_nodes, self.input_nodes)self.weights_ho = np.random.randn(self.output_nodes, self.hidden_nodes)self.bias_h = np.random.randn(self.hidden_nodes, 1)self.bias_o = np.random.randn(self.output_nodes, 1)```3. 定义激活函数sigmoid```pythondef sigmoid(x):return 1 / (1 + np.exp(-x))```4. 定义前向传播函数```pythondef feedforward(self, input_array):inputs = np.array(input_array, ndmin=2).Thidden_inputs = np.dot(self.weights_ih, inputs) +self.bias_hhidden_outputs = sigmoid(hidden_inputs)final_inputs = np.dot(self.weights_ho, hidden_outputs) + self.bias_ofinal_outputs = sigmoid(final_inputs)return final_outputs```5. 定义损失函数```pythondef mse_loss(self, input_array, target):inputs = np.array(input_array, ndmin=2).Ttargets = np.array(target, ndmin=2).Toutputs = self.feedforward(inputs)return np.mean((targets - outputs)**2)```6. 定义粒子类```pythonclass Particle:def __init__(self, dim):self.position = np.random.randn(dim, 1)self.velocity = np.random.randn(dim, 1)self.best_position = self.positionself.best_cost = float('inf')```7. 定义PSO算法类```pythonclass PSO:def __init__(self, cost_function, dimension, swarm_size, max_iter):self.cf = cost_functionself.dim = dimensionself.swarm_size = swarm_sizeself.max_iter = max_iterself.swarm = [Particle(self.dim) for i inrange(self.swarm_size)]self.best_swarm_position = self.swarm[0].positionself.best_swarm_cost = float('inf')```8. 定义更新粒子位置和速度的函数```pythondef update_particle(self, particle):w = 0.729c1 = 1.49445c2 = 1.49445r1 = random.random()r2 = random.random()new_velocity = w * particle.velocity + c1 * r1 * (particle.best_position - particle.position) + c2 * r2 * (self.best_swarm_position - particle.position)new_position = particle.position + new_velocityparticle.velocity = new_velocityparticle.position = new_position```9. 定义运行PSO算法的函数```pythondef run(self):for i in range(self.max_iter):for particle in self.swarm:cost = self.cf(particle.position)if cost < particle.best_cost:particle.best_position = particle.positionparticle.best_cost = costif cost < self.best_swarm_cost:self.best_swarm_position = particle.positionself.best_swarm_cost = costfor particle in self.swarm:self.update_particle(particle)```10. 实例化神经网络和PSO算法,运行PSO优化BP算法```pythonnn = NeuralNetwork(2, 3, 1)pso = PSO(nn.mse_loss, nn.weights_ih.size +nn.weights_ho.size + nn.bias_h.size + nn.bias_o.size, 20, 100) pso.run()```以上是使用Python实现PSO优化BP算法的主要代码段。

pso算法python

pso算法python

pso算法pythonPSO算法是一种基于群体智能的优化算法。

其基本思想就是通过多个粒子之间的群体行为,来寻找最优解。

PSO算法的这种群体行为是根据每个粒子当前的位置和速度来进行的。

具体来说,PSO算法是这样工作的:首先,算法随机生成一些初始的粒子,并对每个粒子的位置和速度进行初始化。

接着,算法不断迭代,每一次迭代中,粒子的位置和速度都会根据一些规则进行更新。

例如,每个粒子会根据自己的历史最优位置和整个群体的历史最优位置调整自己的速度和位置。

然后,算法会判断整个群体是否已经找到了最优解。

如果没有找到,就继续迭代,否则,算法结束,得到最优解。

下面是一个简单的Python实现:```pythonimport randomimport mathclass Particle():def __init__(self, dim, min_x, max_x):self.position = [random.uniform(min_x, max_x) for i in range(dim)]self.velocity = [0.0] * dimself.best_pos = self.position[:]self.best_score = float('inf')def update_velocity(self, best_pos_g):w = 0.5 # 惯性权重c1 = c2 = 1 # 学习因子for i in range(len(self.velocity)):r1 = random.random()r2 = random.random()vel_cognitive = c1 * r1 * (self.best_pos[i] - self.position[i])vel_social = c2 * r2 * (best_pos_g[i] -self.position[i])self.velocity[i] = w * self.velocity[i] +vel_cognitive + vel_socialdef update_position(self, bounds):for i in range(len(self.position)):self.position[i] += self.velocity[i]if self.position[i] > bounds[i][1]:self.position[i] = bounds[i][1]self.velocity[i] = 0.0elif self.position[i] < bounds[i][0]:self.position[i] = bounds[i][0]self.velocity[i] = 0.0def evaluate(self, cost_func):self.score = cost_func(self.position)if self.score < self.best_score:self.best_pos = self.position[:]self.best_score = self.scoreclass PSO():def __init__(self, cost_func, dim, n_particles, n_iter, bounds):self.cost_func = cost_funcself.dim = dimself.n_particles = n_particlesself.n_iter = n_iterself.bounds = boundsself.particles = [Particle(dim, bounds[i][0], bounds[i][1]) for i in range(dim)]self.best_pos_g = [random.uniform(bounds[i][0], bounds[i][1]) for i in range(dim)]self.best_score_g = float('inf')def run(self):for iter in range(self.n_iter):for particle in self.particles:particle.evaluate(self.cost_func)if particle.score < self.best_score_g:self.best_pos_g = particle.position[:]self.best_score_g = particle.scorefor particle in self.particles:particle.update_velocity(self.best_pos_g)particle.update_position(self.bounds)def get_best_position(self):return self.best_pos_gdef get_best_score(self):return self.best_score_g```在这个实现中,Particle类表示一个粒子,包含了位置、速度、历史最优位置和历史最优得分等信息。

遗传算法和粒子群算法结合代码python

遗传算法和粒子群算法结合代码python

遗传算法和粒子群算法结合代码python遗传算法和粒子群算法是两种非常实用的优化算法,在实际应用中具有广泛的适用性。

在本篇文章中,我们将介绍如何将遗传算法和粒子群算法结合起来,以实现更加高效和准确的优化过程。

具体来说,我们将以python语言为基础,编写代码来实现这种结合。

1. 遗传算法遗传算法是一种类似于进化过程的优化算法,它通过模拟生物进化过程来实现优化。

基本思路是将问题的可行解按照一定的方式编码成染色体序列,然后通过交叉、变异等操作产生新的染色体,按照适应度进行筛选,最终得出最优解。

在python中,我们可以使用遗传算法库DEAP(Distributed Evolutionary Algorithms in Python)快速地实现遗传算法。

以下是一段使用DEAP库实现遗传算法的代码:```import randomfrom deap import base, creator, tools# 定义一个求最小值的适应度函数def eval_func(individual):return sum(individual),# 创建遗传算法工具箱creator.create("FitnessMin", base.Fitness, weights=(-1.0,))creator.create("Individual", list, fitness=creator.FitnessMin)toolbox = base.Toolbox()# 注册染色体初始化函数(0或1)toolbox.register("attr_bool", random.randint, 0, 1)# 定义遗传算法实现函数def ga_algorithm():pop = toolbox.population(n=50)CXPB, MUTPB, NGEN = 0.5, 0.2, 50# 迭代遗传算法for gen in range(NGEN):# 交叉offspring = tools.cxBlend(pop, alpha=0.1)# 变异for mutant in offspring:if random.random() < MUTPB:toolbox.mutate(mutant)del mutant.fitness.values# 评估适应度fits = toolbox.map(toolbox.evaluate, offspring)for fit, ind in zip(fits, offspring):ind.fitness.values = fit# 选择pop = toolbox.select(offspring + pop, k=len(pop))gen_count += 1# 输出每代最小适应度和均值fits = [ind.fitness.values[0] for ind in pop]print("第 %d 代:最小适应度 %f, 平均适应度 %f" % (gen_count, min(fits), sum(fits) / len(pop)))# 返回最优解best_ind = tools.selBest(pop, 1)[0]print("最优解:", best_ind)```上述代码中,我们首先定义了一个求最小值的适应度函数,然后使用DEAP库创建了遗传算法工具箱。

不等式约束粒子群算法 python

不等式约束粒子群算法 python

不等式约束粒子群算法 python不等式约束粒子群算法是一种有效地求解带有不等式约束的优化问题的方法。

在实际应用中,很多问题都存在不等式约束,例如优化流程、工艺参数等。

本文介绍了如何使用 Python 实现不等式约束粒子群算法。

首先,我们需要了解什么是不等式约束优化问题。

不等式约束优化问题可以表示为:minimize f(x) subject to g_i(x) ≤ 0, i=1,2,...,m 其中,f(x) 是目标函数,g_i(x) 是不等式约束条件。

接下来,我们可以使用粒子群算法来解决这个问题。

粒子群算法是一种启发式搜索算法,通过模拟鸟群捕食行为来寻找最优解。

在粒子群算法中,每个粒子代表一个解,群体中所有粒子的运动状态随着时间的推移而改变。

在不等式约束粒子群算法中,每个粒子的位置和速度需要满足不等式约束条件。

具体实现方式如下:1. 随机生成初始粒子群,其中每个粒子的位置和速度都在约束条件范围内。

2. 计算每个粒子的适应度值,即目标函数的值。

3. 更新粒子的速度和位置,使其符合不等式约束条件。

4. 重复步骤 2 和 3,直到满足停止条件。

在步骤 3 中,可以使用投影算法来将粒子的速度和位置投影到不等式约束条件范围内。

下面是一个不等式约束粒子群算法的 Python 实现示例:```pythonimport numpy as npdef fitness_func(x):'''计算适应度值'''return 1 / (1 + np.sum(x ** 2))def project(x, lower, upper):'''投影算法'''x[x < lower] = lowerx[x > upper] = upperreturn xdef particle_swarm_optimization(fitness_func, lower, upper,num_particles=100, max_iter=1000,w=0.5, c1=1, c2=2):'''不等式约束粒子群算法'''num_dims = len(lower)# 随机初始化粒子群x = np.random.uniform(lower, upper, (num_particles, num_dims))# 随机初始化粒子速度v = np.random.uniform(-1, 1, (num_particles, num_dims))# 计算初始适应度值fitness = np.array([fitness_func(x[i]) for i inrange(num_particles)])# 记录最优解best_x = x[np.argmax(fitness)]best_fitness = fitness.max()# 迭代优化for i in range(max_iter):# 更新速度和位置v = w * v + c1 * np.random.uniform(0, 1, (num_particles, num_dims)) * (best_x - x)+ c2 * np.random.uniform(0, 1, (num_particles, num_dims)) * (x - x.mean(axis=0))x += v# 投影到约束条件范围内x = project(x, lower, upper)# 计算适应度值fitness = np.array([fitness_func(x[i]) for i inrange(num_particles)])# 更新最优解if fitness.max() > best_fitness:best_x = x[np.argmax(fitness)]best_fitness = fitness.max()# 停止条件if np.all(np.abs(v) < 1e-6):breakreturn best_x, best_fitness```上述代码中,fitness_func 是目标函数,project 是投影算法,particle_swarm_optimization 是不等式约束粒子群算法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

python粒子群优化算法
粒子群优化算法(Particle Swarm Optimization,PSO)是一种基于群体智能的优化算法,模拟了鸟群寻找食物的行为。

它通过不断迭代更新粒子的位置和速度来搜索最优解。

本文将介绍粒子群优化算法的原理、应用领域以及优缺点。

一、算法原理
粒子群优化算法受到鸟群觅食行为的启发,每个粒子代表一个解,而整个粒子群则代表了解空间。

算法的基本思想是通过粒子之间的合作与竞争,不断更新粒子的位置和速度,以找到最优解。

具体而言,算法的步骤如下:
1. 初始化粒子群,包括粒子的位置和速度,以及每个粒子的个体最优解和群体最优解;
2. 根据每个粒子的个体最优解和群体最优解,更新粒子的速度和位置;
3. 根据新的位置更新个体最优解和群体最优解;
4. 重复步骤2和步骤3,直至达到终止条件。

在更新粒子速度和位置的过程中,需要考虑两个因素:个体经验和群体经验。

个体经验表示粒子自身的搜索经验,而群体经验表示粒子群中其他粒子的搜索经验。

粒子根据这两个经验来调整自己的速度和位置。

二、应用领域
粒子群优化算法在很多领域都有广泛的应用。

以下列举几个典型的应用领域:
1. 函数优化:粒子群优化算法可以用于求解单目标函数的最优解。

通过适当的编码方式,可以将问题转化为数值优化问题,从而利用粒子群优化算法求解。

2. 物流路径规划:在物流领域,粒子群优化算法可以用于求解最优的路径规划问题。

通过将每个粒子看作一个物流路径方案,可以通过优化粒子群中的位置和速度来得到最优路径。

3. 神经网络训练:粒子群优化算法可以应用于神经网络的训练过程中。

通过调整神经网络的权重和偏置,可以利用粒子群优化算法优化神经网络的性能。

4. 机器学习:粒子群优化算法在机器学习领域也有广泛应用。

例如,可以利用粒子群优化算法优化支持向量机的参数,以提高分类的准确率。

三、优缺点
粒子群优化算法具有以下优点:
1. 简单易实现:粒子群优化算法的原理简单,易于理解和实现。

2. 全局搜索能力强:由于粒子之间的信息共享,粒子群优化算法具
有较强的全局搜索能力。

3. 适用范围广:粒子群优化算法适用于多种问题的求解,具有很强的通用性。

然而,粒子群优化算法也存在一些缺点:
1. 对参数敏感:粒子群优化算法的性能很大程度上依赖于参数的设置,不同参数设置可能导致不同的结果。

2. 可能陷入局部最优:粒子群优化算法在搜索过程中可能会陷入局部最优解而无法找到全局最优解。

粒子群优化算法是一种基于群体智能的优化算法,通过模拟鸟群寻找食物的行为来搜索最优解。

它在函数优化、物流路径规划、神经网络训练和机器学习等领域都有广泛应用。

虽然粒子群优化算法具有简单易实现和全局搜索能力强的优点,但也存在对参数敏感和可能陷入局部最优的缺点。

在实际应用中,需要根据具体问题的特点来选择合适的优化算法。

相关文档
最新文档