手把手教你学matlab遗传算法

基于遗传算法求解函数最优值
1.选择函数形式:y=10*sin(5*x)+7*abs(x-5)+10
2.函数直观图像:
3.函数理论最大值:
X=0.286,Y=52.8990
4.Matlab函数实现:
the best X is--->>0.32
the best Y is--->>52.73
5.Matlab程序
5.1--------------------------------------------------------------
%-------------函数说明----------------
%
%主函数
%---------------------------------------
function main()
clear
clc
popsize=100;%种群大小
chromlength=10;%二进制编码长度
pc=0.6;%交叉概率
pm=0.001;%变异概率
pop=initpop(popsize,chromlength);%初始种群
for i=1:100
[objvalue]=cal_objvalue(pop);%计算适应度值(函数值)fitvalue=objvalue;
[newpop]=selection(pop,fitvalue);%选择操作
[newpop]=crossover(newpop,pc);%交叉操作
[newpop]=mutation(newpop,pm);%变异操作
pop=newpop;%更新种群
[bestindividual,bestfit]=best(pop,fitvalue);%寻找最优解x2=binary2decimal(bestindividual);
x1=binary2decimal(newpop);
[y1]=cal_objvalue(newpop);
if mod(i,10)==0
figure;
fplot('10*sin(5*x)+7*abs(x-5)+10',[010]);
hold on;
title(['迭代次数为n='num2str(i)]);
plot(x1,y1,'*');
end
end
fprintf('the best X is--->>%5.2f\n',x2);
fprintf('the best Y is--->>%5.2f\n',bestfit);
5.2-----------------------------------
%-------------函数说明----------------
%初始化种群大小
%输入变量:
%popsize:种群大小
%chromlength:染色体长度--》转化的二进制长度
%输出变量:
%pop:种群
%---------------------------------------
function pop=initpop(popsize,chromlength)
pop=round(rand(popsize,chromlength));
5.3--------------------------------------
%-------------函数说明----------------
%二进制转化十进制函数
%输入变量:
%二进制种群
%输出变量:
%十进制数值
%---------------------------------------
function pop2=binary2decimal(pop)
[px,py]=size(pop);
for i=1:py
pop1(:,i)= 2.^(py-i).*pop(:,i);
end
%sum(.,2)对行求和,得到列的向量
temp=sum(pop1,2);
pop2=temp*10/1023;
5.4--------------------------------------
%-------------函数说明----------------
%计算函数目标值
%输入变量:
%二进制数值
%输出变量:
%目标函数值
%---------------------------------------function[objvalue]=cal_objvalue(pop)
x=binary2decimal(pop);
%转化二进制数为x变量的变化域范围的数值
%x=temp*10/1023;
%objvalue=10*sin(5*x)+7*cos(4*x);
%objvalue=10*sin(x)+7*x+10
objvalue=10*sin(5*x)+7*abs(x-5)+10;
5.5------------------------------------------%-------------函数说明----------------
%
%输入变量:
%pop:二进制种群
%fitvalue:适应度值
%输出变量:
%newpop:选择以后的二进制种群
%---------------------------------------function[newpop]=selection(pop,fitvalue) %构造轮盘
[px,py]=size(pop);
totalfit=sum(fitvalue);
p_fitvalue=fitvalue/totalfit;
p_fitvalue=cumsum(p_fitvalue);%概率求和排序%-------
ms=sort(rand(px,1));%从小到大排列
fitin=1;
newin=1;
while newin<=px
if(ms(newin))<p_fitvalue(fitin)
newpop(newin,:)=pop(fitin,:);
newin=newin+1;
else fitin=fitin+1;
end
end
5.6---------------------------------------
%-------------函数说明----------------
%
%输入变量:
%pop:二进制的父代种群数
%pc:交叉的概率
%输出变量:
%newpop:交叉后的种群数
%---------------------------------------
function[newpop]=crossover(pop,pc)
[px,py]=size(pop);
newpop=ones(size(pop));
for i=1:2:px-1
if(rand<pc)
cpoint=round(rand*py);
newpop(i,:)=[pop(i,1:cpoint),pop(i+1,cpoint+1:py)];
newpop(i+1,:)=[pop(i+1,1:cpoint),pop(i,cpoint+1:py)];
else
newpop(i,:)=pop(i,:);
newpop(i+1,:)=pop(i+1,:);
end
end
5.7------------------------------------------
%-------------函数说明----------------
%
%输入变量:
%pop:二进制种群
%pm:变异概率
%输出变量:
%newpop:变异以后的种群
%---------------------------------------
function[newpop]=mutation(pop,pm)
[px,py]=size(pop);
newpop=ones(size(pop));
for i=1:px
if(rand<pm)
mpoint=round(rand*py);
if mpoint<=0
mpoint=1;
end
newpop(i,:)=pop(i,:);
if newpop(i,mpoint)==0
newpop(i,mpoint)=1;
else newpop(i,mpoint)=0;
end
else
newpop(i,:)=pop(i,:);
end
end
5.8----------------------------------------
%-------------函数说明----------------
%
%输入变量:
%pop:种群
%fitvalue:种群适应度
%
%输出变量:
%bestindividual:最佳个体(二进制个体)%bestfit:最佳适应度值
%---------------------------------------
function[bestindividual,bestfit]=best(pop,fitvalue) [px,py]=size(pop);
bestindividual=pop(1,:);
bestfit=fitvalue(1);
for i=2:px
if fitvalue(i)>bestfit
bestindividual=pop(i,:);
bestfit=fitvalue(i);
end
end。

合集下载

matlab遗传算法学习和全局化算法

matlab遗传算法学习和全局化算法

1 遗传算法步骤1 根据具体问题选择编码方式,随机产生初始种群,个体数目一定,每个个体表现为染色体的基因编码2 选择合适的适应度函数,计算并评价群体中各个体的适应。

3 选择(selection)。

根据各个个体的适应度,按照一定的规则或方法,从当前群体中选择出一些优良的个体遗传到下一代群体4 交叉(crossover)。

将选择过后的群体内的各个个体随机搭配成对,对每一对个体,以一定概率(交叉概率)交换它们中的部分基因。

5 变异(mutation)。

对交叉过后的群体中的每一个个体,以某个概率(称为变异概率)改n 变某一个或某一些基因位上的基因值为其他的等位基因6 终止条件判断。

若满足终止条件,则以进化过程中得到的具有最大适应度的个体作为最优解输出,终止运算。

否则,迭代执行Step2 至Step5。

适应度是评价群体中染色体个体好坏的标准,是算法进化的驱动力,是自然选择的唯一依据,改变种群结构的操作皆通过适应度函数来控制。

在遗传算法中,以个体适应度的大小来确定该个体被遗传到下一代群体中的概率。

个体的适应度越大,被遗传到下一代的概率就越大,相反,被遗传到下一代的概率就越小。

1 [a,b,c]=gaopt(bound,fun)其中,bound=[xm,xM]为求解区间上届和下届构成的矩阵。

Fun 为用户编写的函数。

a为搜索的结果向量,由搜索的出的最优x向量与目标函数构成,b为最终搜索种群,c为中间搜索过程变参数,其第一列为代数,后边列分别为该代最好的的个体与目标函数的值,可以认为寻优的中间结果。

2 ga函数。

[X,F, FLAG,OUTPUT] = GA(fun, n,opts).n为自变量个数,opts为遗传算法控制选项,用gaoptimset()函数设置各种选项,InitialPopulation可以设置初始种群,用PopulationSize 可以设置种群规模,SelectionFcn可以定义选择函数,3 gatool 函数用于打开,GATOOL is now included in OPTIMTOOL。

使用Matlab进行遗传算法优化问题求解的方法

使用Matlab进行遗传算法优化问题求解的方法

使用Matlab进行遗传算法优化问题求解的方法引言在现代科技发展的背景下,优化算法成为解决各种问题的重要工具之一。

遗传算法作为一种生物启发式算法,具有全局寻优能力和适应性强的特点,在许多领域中被广泛应用。

本文将介绍如何使用Matlab进行遗传算法优化问题求解,包括问题建模、遗传算子设计、遗传算法编码、适应度评价和求解过程控制等方面。

一、问题建模在使用遗传算法求解优化问题之前,我们首先需要将问题定义为数学模型。

这包括确定问题的目标函数和约束条件。

例如,假设我们要最小化一个多变量函数f(x),其中x=(x1,x2,...,xn),同时还有一些约束条件g(x)<=0和h(x)=0。

在Matlab中,我们可通过定义一个函数来表示目标函数和约束条件。

具体实现时,我们需要在目标函数和约束函数中设置输入参数,通过调整这些参数进行优化。

二、遗传算子设计遗传算法的核心是遗传算子的设计,包括选择(Selection)、交叉(Crossover)、变异(Mutation)和替代(Replacement)等。

选择操作通过一定的策略从种群中选择出适应度较高的个体,作为进行交叉和变异的父代个体。

交叉操作通过将两个父代个体的基因片段进行交换,产生新的子代个体。

变异操作通过改变个体某些基因的值,引入新的基因信息。

替代操作通过选择适应度较低的个体将其替换为新产生的子代个体。

三、遗传算法编码在遗传算法中,个体的编码方式决定了问题的解空间。

常见的编码方式有二进制编码和实数编码等。

当问题的变量是二进制形式时,采用二进制编码。

当问题的变量是实数形式时,采用实数编码。

在Matlab中,我们可以使用矩阵或向量来表示个体的基因型,通过制定编码方式来实现遗传算法的编码过程。

四、适应度评价适应度评价是遗传算法中判断个体优劣的指标。

在适应度评价过程中,我们将问题的目标函数和约束条件应用于个体的解,计算得到一个适应度值。

适应度值越大表示个体越优。

matlab遗传算法求最大值步骤

matlab遗传算法求最大值步骤

一、介绍Matlab是一个高性能的数学计算软件,它集成了许多数学工具箱,其中包括遗传算法工具箱,可以帮助用户利用遗传算法求解最优化问题。

遗传算法是一种模拟生物进化过程的优化方法,通过模拟自然选择、交叉和变异等操作,不断优化解的搜索空间,从而找到最优解。

二、遗传算法求最大值步骤1. 创建遗传算法对象我们需要使用Matlab的遗传算法工具箱中的函数`ga`来创建一个遗传算法对象。

在创建对象时,需要指定优化的目标函数、决策变量的上下界、约束条件等参数,以及遗传算法的种裙大小、进化代数等参数。

例如:```matlaboptions = gaoptimset('Generations', 100, 'PopulationSize', 50); [x, fval, exitflag, output] = ga(fitnessfun, nvars, A, b, Aeq, beq, lb, ub, nonlcon, options);```其中,`fitnessfun`是用户自定义的目标函数,`nvars`是决策变量的个数,`A`, `b`, `Aeq`, `beq`是线性约束条件,`lb`, `ub`是决策变量的上下界,`nonlcon`是非线性约束条件,`options`是遗传算法的参数设置。

2. 编写目标函数用户需要编写自己的目标函数`fitnessfun`,该函数接受决策变量作为输入,并返回一个标量作为目标值。

例如:```matlabfunction y = fitnessfun(x)y = -sum(x.^2);end```在这个例子中,我们希望求解一个多维的最大化问题,因此目标函数返回了决策变量的负平方和作为最优解的评价指标。

3. 运行遗传算法一切准备就绪后,我们可以调用`ga`函数来运行遗传算法,并获取最优解和最优值。

遗传算法会不断进化种裙,直到达到指定的进化代数为止。

如何利用Matlab进行遗传算法优化

如何利用Matlab进行遗传算法优化

如何利用Matlab进行遗传算法优化引言:遗传算法是一种通过模拟自然进化过程来解决优化问题的方法,它模拟了自然界中的遗传、变异和选择等机制。

Matlab作为一种强大的科学计算工具,提供了丰富的函数和工具箱,方便用户实现遗传算法的优化过程。

本文旨在介绍如何利用Matlab进行遗传算法优化,从理论基础到实际应用进行详细阐述。

1. 遗传算法基础1.1 遗传算法的原理遗传算法基于生物进化的概念,通过模拟基因的遗传和进化过程,逐步搜索最优解。

其基本原理包括种群的初始化、选择操作、交叉操作和变异操作。

1.2 遗传算法的基本流程首先,需要根据问题设定种群的个体数目、编码方式等参数。

然后,通过初始化操作生成初始种群。

接下来,根据适应度函数评估种群中每个个体的适应度。

然后,根据选择操作和交叉操作,生成后代个体。

最后,通过变异操作引入新的个体。

此外,还需要设置终止条件,如最大迭代次数或达到了预定的最优解。

2. Matlab中的遗传算法工具箱Matlab提供了一个名为"Global Optimization Toolbox"的工具箱,包含了大量用于优化问题的函数和工具。

其中,遗传算法优化工具是其中之一。

该工具不仅提供了基本的遗传算法函数,还提供了优化过程的可视化等辅助功能。

3. 使用Matlab进行遗传算法优化的步骤3.1 问题建模与变量定义在使用Matlab进行遗传算法优化之前,首先需要建立数学模型,并定义相关变量。

这包括目标函数的定义、约束条件的设定等。

例如,假设要优化的问题是求解一个函数的最小值,可以将目标函数定义为一个Matlab函数并用符号表达式表示。

3.2 设置遗传算法参数在使用Matlab进行遗传算法优化时,需要设置一些参数,如种群个体数目、交叉概率、变异概率、终止条件等。

这些参数的选择会影响到最终结果,需要根据具体问题进行合理选择。

3.3 编写优化代码在Matlab中,可以使用遗传算法工具箱提供的函数,如ga函数,来进行遗传算法优化。

MATLAB遗传算法工具使用教程

MATLAB遗传算法工具使用教程

第八章使用MATLAB遗传算法工具最新发布的MA TLAB 7.0 Release 14已经包含了一个专门设计的遗传算法与直接搜索工具箱(Genetic Algorithm and Direct Search Toolbox,GADS)。

使用遗传算法与直接搜索工具箱,可以扩展MATLAB及其优化工具箱在处理优化问题方面的能力,可以处理传统的优化技术难以解决的问题,包括那些难以定义或不便于数学建模的问题,可以解决目标函数较复杂的问题,比如目标函数不连续、或具有高度非线性、随机性以及目标函数没有导数的情况。

本章8.1节首先介绍这个遗传算法与直接搜索工具箱,其余各节分别介绍该工具箱中的遗传算法工具及其使用方法。

8.1 遗传算法与直接搜索工具箱概述本节介绍MATLAB的GADS(遗传算法与直接搜索)工具箱的特点、图形用户界面及运行要求,解释如何编写待优化函数的M文件,且通过举例加以阐明。

8.1.1 工具箱的特点GADS工具箱是一系列函数的集合,它们扩展了优化工具箱和MA TLAB数值计算环境的性能。

遗传算法与直接搜索工具箱包含了要使用遗传算法和直接搜索算法来求解优化问题的一些例程。

这些算法使我们能够求解那些标准优化工具箱范围之外的各种优化问题。

所有工具箱函数都是MATLAB的M文件,这些文件由实现特定优化算法的MATLAB语句所写成。

使用语句type function_name就可以看到这些函数的MATLAB代码。

我们也可以通过编写自己的M文件来实现来扩展遗传算法和直接搜索工具箱的性能,也可以将该工具箱与MATLAB的其他工具箱或Simulink结合使用,来求解优化问题。

工具箱函数可以通过图形界面或MA TLAB命令行来访问,它们是用MATLAB语言编写的,对用户开放,因此可以查看算法、修改源代码或生成用户函数。

遗传算法与直接搜索工具箱可以帮助我们求解那些不易用传统方法解决的问题,譬如表查找问题等。

遗传算法与直接搜索工具箱有一个精心设计的图形用户界面,可以帮助我们直观、方便、快速地求解最优化问题。

遗传算法的Matlab实现讲解39页PPT

遗传算法的Matlab实现讲解39页PPT

4Matlab实现讲解
16、自己选择的路、跪着也要把它走 完。 17、一般情况下)不想三年以后的事, 只想现 在的事 。现在 有成就 ,以后 才能更 辉煌。
18、敢于向黑暗宣战的人,心里必须 充满光 明。 19、学习的关键--重复。
20、懦弱的人只会裹足不前,莽撞的 人只能 引为烧 身,只 有真正 勇敢的 人才能 所向披 靡。
谢谢!
36、自己的鞋子,自己知道紧在哪里。——西班牙
37、我们唯一不会改正的缺点是软弱。——拉罗什福科
xiexie! 38、我这个人走得很慢,但是我从不后退。——亚伯拉罕·林肯
39、勿问成功的秘诀为何,且尽全力做你应该做的事吧。——美华纳

matlab中的遗传算法

matlab中的遗传算法【原创版】目录一、引言二、遗传算法的基本原理1.种群概念2.适应度函数3.选择操作4.交叉操作5.变异操作三、MATLAB 中遗传算法的实现1.准备工作2.遗传算法的实现四、遗传算法的应用案例1.旅行商问题2.装载问题五、遗传算法的优缺点六、结论正文一、引言遗传算法(Genetic Algorithm,GA)是一种模拟自然界生物进化过程的优化算法,其主要思想是将进化过程中的自然选择、交叉和变异等遗传操作应用到问题的求解过程中,从而实现对问题的优化求解。

遗传算法在解决复杂问题、非线性问题以及大规模问题等方面具有较强的优势,因此在各个领域得到了广泛的应用。

本文将介绍遗传算法的基本原理以及在MATLAB 中的实现。

二、遗传算法的基本原理1.种群概念遗传算法以一个种群作为优化过程的载体。

种群中的个体代表问题的解,每个个体由一组参数表示。

在优化过程中,种群会不断进化,最终收敛到问题的最优解。

2.适应度函数适应度函数是遗传算法的核心部分,用于评价种群中个体的优劣。

适应度函数的取值范围为 [0, 1],其中 1 表示最优解,0 表示最劣解。

在遗传算法的优化过程中,适应度函数用于选择优秀的个体,从而指导种群的进化。

3.选择操作选择操作是基于适应度函数的一种选择策略,用于选择下一代的父代个体。

常见的选择方法有轮盘赌选择、锦标赛选择等。

4.交叉操作交叉操作是遗传算法中产生新个体的主要方式,通过将选中的优秀个体进行交叉操作,产生具有更好适应度的新个体。

常见的交叉方法有单点交叉、多点交叉、均匀交叉等。

5.变异操作变异操作是在遗传算法中引入随机性的一种方式,通过随机改变某些基因的值,使新个体在进化过程中具有一定的多样性。

变异操作的强度由变异概率控制。

三、MATLAB 中遗传算法的实现1.准备工作在 MATLAB 中实现遗传算法,首先需要定义适应度函数、选择操作、交叉操作和变异操作等。

此外,还需要设置遗传算法的参数,如迭代次数、种群大小、交叉概率、变异概率等。

matlab中的遗传算法拟合

matlab中的遗传算法拟合在MATLAB中,遗传算法是一种常用的优化算法,可以用于拟合数据。

遗传算法是一种模拟自然进化过程的优化算法,通过模拟基因的交叉、变异和选择等操作,逐步优化解的质量。

下面我将从多个角度介绍在MATLAB中使用遗传算法进行拟合的步骤和注意事项:1. 准备数据,首先,你需要准备一组实验数据,包括自变量和因变量。

确保数据的准确性和完整性,以获得准确的拟合结果。

2. 定义适应度函数,适应度函数用于评估每个个体的适应程度,即拟合程度。

在拟合问题中,适应度函数通常是计算预测值与实际值之间的误差或损失函数。

你需要根据具体问题定义适应度函数。

3. 初始化种群,在遗传算法中,种群是由多个个体组成的集合。

每个个体代表一个可能的解。

你需要初始化一个种群,设置种群大小和每个个体的基因编码。

4. 选择操作,选择操作用于选择适应度较高的个体作为父代,用于产生下一代个体。

常用的选择方法包括轮盘赌选择、锦标赛选择等。

你可以根据具体问题选择适合的选择操作。

5. 交叉操作,交叉操作模拟基因的交换,通过将两个个体的基因进行交叉,产生新的个体。

交叉操作有多种方式,如单点交叉、多点交叉等。

选择合适的交叉操作方式可以增加种群的多样性。

6. 变异操作,变异操作模拟基因的突变,通过改变个体的某些基因值来引入新的解。

变异操作有多种方式,如位变异、均匀变异等。

变异操作可以增加种群的多样性,避免陷入局部最优解。

7. 更新种群,通过选择、交叉和变异操作,生成新的个体,更新种群。

8. 迭代优化,重复进行选择、交叉和变异操作,直到达到停止条件。

停止条件可以是达到最大迭代次数、达到预定的适应度阈值或者经过一定的迭代次数后适应度不再改变等。

9. 解码和评估,在每次迭代后,对新生成的个体进行解码,转换为实际的参数值。

然后,使用适应度函数评估个体的适应程度。

10. 结果分析,最后,根据迭代过程中适应度的变化情况,选择适应度最高的个体作为最终的拟合结果。

matlab遗传算法整数约束

matlab遗传算法整数约束遗传算法是一种通过模拟进化过程来解决优化问题的算法。

在许多实际问题中,我们需要找到满足一定约束条件的整数解。

本文将介绍如何使用MATLAB编程语言实现遗传算法,并给出一个整数约束的示例问题。

我们需要定义问题的目标函数和约束条件。

假设我们要求解的问题是在一定范围内找到使得目标函数取得最大值的整数解。

目标函数可以是任意的数学函数,如线性函数、非线性函数等。

约束条件可以包括等式约束和不等式约束,限制了解的取值范围。

接下来,我们需要定义遗传算法的基本元素,包括染色体表示、初始化种群、适应度评价、选择、交叉和变异等操作。

对于整数约束问题,染色体可以用一个整数数组表示,每个元素对应一个变量的取值。

种群可以由多个染色体组成,初始种群可以通过随机生成整数数组来实现。

适应度评价可以通过计算目标函数值来衡量染色体的优劣。

选择操作可以根据适应度值来确定优秀染色体的概率选择。

交叉操作可以通过交换染色体的某些片段来产生新的染色体。

变异操作可以通过改变染色体中的某个元素值来引入新的解。

在MATLAB中,我们可以使用遗传算法工具箱来实现遗传算法。

首先,我们需要定义一个函数来描述问题的目标函数和约束条件。

然后,我们可以使用`ga`函数来求解整数约束问题。

该函数的输入参数包括目标函数、变量的取值范围、约束条件等。

通过设置适当的参数,我们可以控制遗传算法的执行过程。

下面,我们以一个简单的整数约束问题为例进行演示。

假设我们要求解的问题是在区间[0, 10]内找到使得函数f(x) = x^2取得最大值的整数解。

我们可以定义目标函数和约束条件如下:```matlabfunction y = myfun(x)y = -x.^2; % 目标函数,取负号使得求解最大值问题endfunction [c, ceq] = mycon(x)c = []; % 不等式约束条件ceq = []; % 等式约束条件end```然后,我们可以使用遗传算法工具箱中的`ga`函数来求解整数约束问题:```matlablb = 0; % 变量下界ub = 10; % 变量上界intcon = 1; % 整数约束[x, fval] = ga(@myfun, 1, [], [], [], [], lb, ub, @mycon, intcon); ```以上代码中,`@myfun`表示目标函数,`1`表示变量的个数,`[]`表示不等式约束条件,`lb`和`ub`表示变量的下界和上界,`@mycon`表示约束条件,`intcon`表示整数约束。

matlab工具箱遗传算法使用方法

简单的遗传算法可以使用Matlab自带的遗传算法工具箱,但是要从Matlab2010版本之后才会自带这个工具箱,且调用命令也有变化,分别是gatool和optimtool。

GUI界面如下图所示:1、problem setup and results设置与结果(1)Solver:求解程序,选择要用的求解程序(遗传算法,遗传算法多目标等)(2)problem:1)fitness function适应度函数,求最小,这里的使用度函数要自己编写,书写格式是“@函数名”。

2)number of variable变量数,必须是整数,即,使用这个GUI界面的适应度函数的变量必须是[1*n]的向量,而不能是[m*n]的矩阵。

3)constraints约束4)linear inequalities线性不等式,A*x<=b形式,其中A是矩阵,b是向量5)linear equalities线性等式,A*x=b形式,其中A是矩阵,b是向量6)bounds定义域,lower下限,upper上限,列向量形式,每一个位置对应一个变量7)nonlinear constraint function非线性约束,用户定义,非线性等式必须写成c=0形式,不等式必须写成c<=0形式8)integer variable indices整型变量标记约束,使用该项时Aeq和beq必须为空,所有非线性约束函数必须返回一个空值,种群类型必须是实数编码举例,若是想让第一个、第三个、第五个变量保持是整数的话,则直接在此处填写[1 3 5] 9)run solver and view results求解use random states from previous run使用前次的状态运行,完全重复前次运行的过程和结果2、population(1)population type编码类型1)double vector实数编码,采用双精度。

整数规划的种群类型必须是实数编码。

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