鱼群算法matlab代码,人工鱼群算法MATLAB实现
人工鱼群算法
在一片水域中,鱼往往能自行或尾随其他鱼找到营养物质多的地方,因而鱼生存数目最多的地方一般就是本水域中营养物质最多的地方,人工鱼群算法就是根据这一特点,通过构造人工鱼来模仿鱼群的觅食、聚群及追尾行为,从而实现寻优。
中文名 人工鱼群算法 典型行为觅食行为 特 点 具有较快的收敛速度 停止条件 均方差小于允许的误差。
算法描述
在一片水域中,鱼往往能自行或尾随其他鱼找到营养物质多的地方,因而鱼生存数目最多的地方一般就是本水域中营养物质最多的地方,人工鱼群算法就是根据这一特点,通过构造人工鱼来模仿鱼群的觅食、聚群及追尾行为,从而实现寻优,以下是鱼的几种典型行为:
1)觅食行为:一般情况下鱼在水中随机地自由游动,当发现食物时,则会向食物逐渐增多的方向快速游去。
2)聚群行为:鱼在游动过程中为了保证自身的生存和躲避危害会自然地聚集成群,鱼聚群时所遵守的规则有三条:分隔规则:尽量避免与临近伙伴过于拥挤;对准规则:尽量与临近伙伴的平均方向一致;内聚规则:尽量朝临近伙伴的中心移动。
3)追尾行为:当鱼群中的一条或几条鱼发现食物时,其临近的伙伴会尾随其快速到达食物点。
4)随机行为:单独的鱼在水中通常都是随机游动的,这是为了更大范围地寻找食物点或身边的伙伴。
特点
1)具有较快的收敛速度,可以用于解决有实时性要求的问题;
2)对于一些精度要求不高的场合,可以用它快速的得到一个可行解;
3)不需要问题的严格机理模型,甚至不需要问题的精确描述,这使得它的应用范围得以延伸。
停止条件
1) 判断连续多次所得的均方差小于允许的误差;
2)判断某个区域的人工鱼群的数目达到某个比率;
3)连续多次所获取的值均不能超过已找到的极值。
4)迭代次数达到预设次数
一维函数寻优MATLAB代码:
①main.m
MATLAB
clc
clear all
close all
tic
figure(1);hold on
ezplot('x*sin(10*pi*x)+2',[-1,2]);
%% 参数设置
fishnum=50; %生成50只人工鱼
MAXGEN=50; %最多迭代次数
try_number=100;%最多试探次数
visual=1; %感知距离
delta=0.618; %拥挤度因子
step=0.1; %步长
%% 初始化鱼群
lb_ub=[-1,2,1];
X=AF_init(fishnum,lb_ub);
LBUB=[];
for i=1:size(lb_ub,1)
LBUB=[LBUB;repmat(lb_ub(i,1:2),lb_ub(i,3),1)];
end
gen=1;
BestY=-1*ones(1,MAXGEN); %每步中最优的函数值
BestX=-1*ones(1,MAXGEN); %每步中最优的自变量
besty=-100; %最优函数值
Y=AF_foodconsistence(X);
while gen<=MAXGEN
fprintf(1,'%d\n',gen)
for i=1:fishnum
%% 聚群行为
[Xi1,Yi1]=AF_swarm(X,i,visual,step,delta,try_number,LBUB,Y);
%% 追尾行为
[Xi2,Yi2]=AF_follow(X,i,visual,step,delta,try_number,LBUB,Y);
if Yi1>Yi2
X(:,i)=Xi1;
Y(1,i)=Yi1;
else
X(:,i)=Xi2;
Y(1,i)=Yi2;
end
end
[Ymax,index]=max(Y);
figure(1);
plot(X(1,index),Ymax,'.','color',[gen/MAXGEN,0,0])
if Ymax>besty
besty=Ymax;
bestx=X(:,index);
BestY(gen)=Ymax;
[BestX(:,gen)]=X(:,index);
else
BestY(gen)=BestY(gen-1);
[BestX(:,gen)]=BestX(:,gen-1);
end
gen=gen+1;
end
plot(bestx(1),besty,'ro','MarkerSize',100)
xlabel('x')
ylabel('y')
title('鱼群算法迭代过程中最优坐标移动')
%% 优化过程图
figure
plot(1:MAXGEN,BestY)
xlabel('迭代次数')
ylabel('优化值')
title('鱼群算法迭代过程')
disp(['最优解X:',num2str(bestx,'%1.4f')])
disp(['最优解Y:',num2str(besty,'%1.4f')])
toc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
clc
clearall
closeall
tic
figure(1);holdon
ezplot('x*sin(10*pi*x)+2',[-1,2]);
%%参数设置
fishnum=50;%生成50只人工鱼
MAXGEN=50;%最多迭代次数
try_number=100;%最多试探次数
visual=1;%感知距离
delta=0.618;%拥挤度因子
step=0.1;%步长
%%初始化鱼群
lb_ub=[-1,2,1];
X=AF_init(fishnum,lb_ub);
LBUB=[];
fori=1:size(lb_ub,1)
LBUB=[LBUB;repmat(lb_ub(i,1:2),lb_ub(i,3),1)];
end
gen=1;
BestY=-1*ones(1,MAXGEN);%每步中最优的函数值
BestX=-1*ones(1,MAXGEN);%每步中最优的自变量
besty=-100;%最优函数值
Y=AF_foodconsistence(X);
whilegen<=MAXGEN
fprintf(1,'%d\n',gen)
fori=1:fishnum
%% 聚群行为
[Xi1,Yi1]=AF_swarm(X,i,visual,step,delta,try_number,LBUB,Y);
%% 追尾行为
[Xi2,Yi2]=AF_follow(X,i,visual,step,delta,try_number,LBUB,Y);
ifYi1>Yi2
X(:,i)=Xi1;
Y(1,i)=Yi1;
else
X(:,i)=Xi2;
Y(1,i)=Yi2;
end
end
[Ymax,index]=max(Y);
figure(1);
plot(X(1,index),Ymax,'.','color',[gen/MAXGEN,0,0])
ifYmax>besty
besty=Ymax;
bestx=X(:,index);
BestY(gen)=Ymax;
[BestX(:,gen)]=X(:,index);
else
BestY(gen)=BestY(gen-1);
[BestX(:,gen)]=BestX(:,gen-1);
end
gen=gen+1;
end
plot(bestx(1),besty,'ro','MarkerSize',100)
xlabel('x')
ylabel('y')
title('鱼群算法迭代过程中最优坐标移动')
%%优化过程图
figure
plot(1:MAXGEN,BestY)
xlabel('迭代次数')
ylabel('优化值')
title('鱼群算法迭代过程')
disp(['最优解X:',num2str(bestx,'%1.4f')])
disp(['最优解Y:',num2str(besty,'%1.4f')])
toc
②dist.m
MATLAB
%计算第i条鱼与所有鱼的位置,包括本身。
function D=dist(Xi,X)
col=size(X,2);
D=zeros(1,col);
for j=1:col
D(j)=norm(Xi-X(:,j));
end
1
2
3
4
5
6
7
8
%计算第i条鱼与所有鱼的位置,包括本身。
functionD=dist(Xi,X)
col=size(X,2);
D=zeros(1,col);
forj=1:col
D(j)=norm(Xi-X(:,j));
end
③AF_swarm.m
MATLAB
function [Xnext,Ynext]=AF_swarm(X,i,visual,step,deta,try_number,LBUB,lastY)
% 聚群行为
%输入:
%X 所有人工鱼的位置
%i 当前人工鱼的序号
%visual 感知范围
%step 最大移动步长
%deta 拥挤度
%try_number 最大尝试次数
%LBUB 各个数的上下限
%lastY 上次的各人工鱼位置的食物浓度
%输出:
%Xnext Xi人工鱼的下一个位置
%Ynext Xi人工鱼的下一个位置的食物浓度
Xi=X(:,i);
D=AF_dist(Xi,X);
index=find(D>0 & D
nf=length(index);
if nf>0
for j=1:size(X,1)
Xc(j,1)=mean(X(j,index));
end
Yc=AF_foodconsistence(Xc);
Yi=lastY(i);
if Yc/nf>deta*Yi
Xnext=Xi+rand*step*(Xc-Xi)/norm(Xc-Xi);
for i=1:length(Xnext)
if Xnext(i)>LBUB(i,2)
Xnext(i)=LBUB(i,2);
end
if Xnext(i)
Xnext(i)=LBUB(i,1);
end
end
Ynext=AF_foodconsistence(Xnext);
else
[Xnext,Ynext]=AF_prey(Xi,i,visual,step,try_number,LBUB,lastY);
end
else
[Xnext,Ynext]=AF_prey(Xi,i,visual,step,try_number,LBUB,lastY);
end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
function[Xnext,Ynext]=AF_swarm(X,i,visual,step,deta,try_number,LBUB,lastY)
%聚群行为
%输入:
%X所有人工鱼的位置
%i当前人工鱼的序号
%visual感知范围
%step最大移动步长
%deta拥挤度
%try_number最大尝试次数
%LBUB各个数的上下限
%lastY上次的各人工鱼位置的食物浓度
%输出:
%XnextXi人工鱼的下一个位置
%YnextXi人工鱼的下一个位置的食物浓度
Xi=X(:,i);
D=AF_dist(Xi,X);
index=find(D>0&D
nf=length(index);
ifnf>0
forj=1:size(X,1)
Xc(j,1)=mean(X(j,index));
end
Yc=AF_foodconsistence(Xc);
Yi=lastY(i);
ifYc/nf>deta*Yi
Xnext=Xi+rand*step*(Xc-Xi)/norm(Xc-Xi);
fori=1:length(Xnext)
ifXnext(i)>LBUB(i,2)
Xnext(i)=LBUB(i,2);
end
ifXnext(i)
Xnext(i)=LBUB(i,1);
end
end
Ynext=AF_foodconsistence(Xnext);
else
[Xnext,Ynext]=AF_prey(Xi,i,visual,step,try_number,LBUB,lastY);
end
else
[Xnext,Ynext]=AF_prey(Xi,i,visual,step,try_number,LBUB,lastY);
end
④AF_prey.m
MATLAB
function [Xnext,Ynext]=AF_prey(Xi,ii,visual,step,try_number,LBUB,lastY)
%觅食行为
%输入:
%Xi 当前人工鱼的位置
%ii 当前人工鱼的序号
%visual 感知范围
%step 最大移动步长
%try_number 最大尝试次数
%LBUB 各个数的上下限
%lastY 上次的各人工鱼位置的食物浓度
%输出:
%Xnext Xi人工鱼的下一个位置
%Ynext Xi人工鱼的下一个位置的食物浓度
Xnext=[];
Yi=lastY(ii);
for i=1:try_number
Xj=Xi+(2*rand(length(Xi),1)-1)*visual;
Yj=AF_foodconsistence(Xj);
if Yi
Xnext=Xi+rand*step*(Xj-Xi)/norm(Xj-Xi);
for i=1:length(Xnext)
if Xnext(i)>LBUB(i,2)
Xnext(i)=LBUB(i,2);
end
if Xnext(i)
Xnext(i)=LBUB(i,1);
end
end
Xi=Xnext;
break;
end
end
%随机行为
if isempty(Xnext)
Xj=Xi+(2*rand(length(Xi),1)-1)*visual;
Xnext=Xj;
for i=1:length(Xnext)
if Xnext(i)>LBUB(i,2)
Xnext(i)=LBUB(i,2);
end
if Xnext(i)
Xnext(i)=LBUB(i,1);
end
end
end
Ynext=AF_foodconsistence(Xnext);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
function[Xnext,Ynext]=AF_prey(Xi,ii,visual,step,try_number,LBUB,lastY)
%觅食行为
%输入:
%Xi当前人工鱼的位置
%ii当前人工鱼的序号
%visual感知范围
%step最大移动步长
%try_number最大尝试次数
%LBUB各个数的上下限
%lastY上次的各人工鱼位置的食物浓度
%输出:
%XnextXi人工鱼的下一个位置
%YnextXi人工鱼的下一个位置的食物浓度
Xnext=[];
Yi=lastY(ii);
fori=1:try_number
Xj=Xi+(2*rand(length(Xi),1)-1)*visual;
Yj=AF_foodconsistence(Xj);
ifYi
Xnext=Xi+rand*step*(Xj-Xi)/norm(Xj-Xi);
fori=1:length(Xnext)
ifXnext(i)>LBUB(i,2)
Xnext(i)=LBUB(i,2);
end
ifXnext(i)
Xnext(i)=LBUB(i,1);
end
end
Xi=Xnext;
break;
end
end
%随机行为
ifisempty(Xnext)
Xj=Xi+(2*rand(length(Xi),1)-1)*visual;
Xnext=Xj;
fori=1:length(Xnext)
ifXnext(i)>LBUB(i,2)
Xnext(i)=LBUB(i,2);
end
ifXnext(i)
Xnext(i)=LBUB(i,1);
end
end
end
Ynext=AF_foodconsistence(Xnext);
⑤AF_init.m
MATLAB
function X=AF_init(Nfish,lb_ub)
%输入:
% Nfish 鱼群大小
% lb_ub 鱼的活动范围
%输出:
% X 产生的初始人工鱼群
% example:
% Nfish=3;
% lb_ub=[-3.0,12.1,1;4.1,5.8,1];
%%这里的lb_ub是2行3列的矩阵,每行中前两个数是范围的上下限,第3个数是在该范围内的数的个数
% X=Inital(Nfish,lb_ub)
%%就是产生[-3.0,12.1]内的数1个,[4.1,5.8]内的数1个
%%两个数一组,这样的数一共Nfish个
row=size(lb_ub,1);
X=[];
for i=1:row
lb=lb_ub(i,1);
ub=lb_ub(i,2);
nr=lb_ub(i,3);
for j=1:nr
X(end+1,:)=lb+(ub-lb)*rand(1,Nfish);
end
end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
functionX=AF_init(Nfish,lb_ub)
%输入:
%Nfish鱼群大小
%lb_ub鱼的活动范围
%输出:
%X产生的初始人工鱼群
%example:
%Nfish=3;
%lb_ub=[-3.0,12.1,1;4.1,5.8,1];
%%这里的lb_ub是2行3列的矩阵,每行中前两个数是范围的上下限,第3个数是在该范围内的数的个数
%X=Inital(Nfish,lb_ub)
%%就是产生[-3.0,12.1]内的数1个,[4.1,5.8]内的数1个
%%两个数一组,这样的数一共Nfish个
row=size(lb_ub,1);
X=[];
fori=1:row
lb=lb_ub(i,1);
ub=lb_ub(i,2);
nr=lb_ub(i,3);
forj=1:nr
X(end+1,:)=lb+(ub-lb)*rand(1,Nfish);
end
end
⑥AF_foodconsistence
MATLAB
function [Y]=AF_foodconsistence(X)
fishnum=size(X,2);
for i=1:fishnum
Y(1,i)=X(i)*sin(10*pi*X(i))+2;
end
1
2
3
4
5
function[Y]=AF_foodconsistence(X)
fishnum=size(X,2);
fori=1:fishnum
Y(1,i)=X(i)*sin(10*pi*X(i))+2;
end
⑦AF_follow.m
MATLAB
function [Xnext,Ynext]=AF_follow(X,i,visual,step,deta,try_number,LBUB,lastY)
% 追尾行为
%输入:
%X 所有人工鱼的位置
%i 当前人工鱼的序号
%visual 感知范围
%step 最大移动步长
%deta 拥挤度
%try_number 最大尝试次数
%LBUB 各个数的上下限
%lastY 上次的各人工鱼位置的食物浓度
%输出:
%Xnext Xi人工鱼的下一个位置
%Ynext Xi人工鱼的下一个位置的食物浓度
Xi=X(:,i);
D=AF_dist(Xi,X);
index=find(D>0 & D
nf=length(index);
if nf>0
XX=X(:,index);
YY=lastY(index);
[Ymax,Max_index]=max(YY);
Xmax=XX(:,Max_index);
Yi=lastY(i);
if Ymax/nf>deta*Yi;
Xnext=Xi+rand*step*(Xmax-Xi)/norm(Xmax-Xi);
for i=1:length(Xnext)
if Xnext(i)>LBUB(i,2)
Xnext(i)=LBUB(i,2);
end
if Xnext(i)
Xnext(i)=LBUB(i,1);
end
end
Ynext=AF_foodconsistence(Xnext);
else
[Xnext,Ynext]=AF_prey(X(:,i),i,visual,step,try_number,LBUB,lastY);
end
else
[Xnext,Ynext]=AF_prey(X(:,i),i,visual,step,try_number,LBUB,lastY);
end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
function[Xnext,Ynext]=AF_follow(X,i,visual,step,deta,try_number,LBUB,lastY)
%追尾行为
%输入:
%X所有人工鱼的位置
%i当前人工鱼的序号
%visual感知范围
%step最大移动步长
%deta拥挤度
%try_number最大尝试次数
%LBUB各个数的上下限
%lastY上次的各人工鱼位置的食物浓度
%输出:
%XnextXi人工鱼的下一个位置
%YnextXi人工鱼的下一个位置的食物浓度
Xi=X(:,i);
D=AF_dist(Xi,X);
index=find(D>0&D
nf=length(index);
ifnf>0
XX=X(:,index);
YY=lastY(index);
[Ymax,Max_index]=max(YY);
Xmax=XX(:,Max_index);
Yi=lastY(i);
ifYmax/nf>deta*Yi;
Xnext=Xi+rand*step*(Xmax-Xi)/norm(Xmax-Xi);
fori=1:length(Xnext)
ifXnext(i)>LBUB(i,2)
Xnext(i)=LBUB(i,2);
end
ifXnext(i)
Xnext(i)=LBUB(i,1);
end
end
Ynext=AF_foodconsistence(Xnext);
else
[Xnext,Ynext]=AF_prey(X(:,i),i,visual,step,try_number,LBUB,lastY);
end
else
[Xnext,Ynext]=AF_prey(X(:,i),i,visual,step,try_number,LBUB,lastY);
end
⑧AF_dist
MATLAB
function D=AF_dist(Xi,X)
%计算第i条鱼与所有鱼的位置,包括本身。
%输入:
%Xi 第i条鱼的当前位置
%X 所有鱼的当前位置
% 输出:
%D 第i条鱼与所有鱼的距离
col=size(X,2);
D=zeros(1,col);
for j=1:col
D(j)=norm(Xi-X(:,j));
end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
functionD=AF_dist(Xi,X)
%计算第i条鱼与所有鱼的位置,包括本身。
%输入:
%Xi第i条鱼的当前位置
%X所有鱼的当前位置
%输出:
%D第i条鱼与所有鱼的距离
col=size(X,2);
D=zeros(1,col);
forj=1:col
D(j)=norm(Xi-X(:,j));
end
效果
参考文献
Feng Shi. MATLAB 智能算法-30个案例分析[J]. 2015.
鱼群算法matlab代码,人工鱼群算法MATLAB实现相关推荐
- 【智能优化算法-人工蜂鸟算法】基于人工蜂鸟算法求解多目标优化问题附matlab代码MOAHA
1 内容介绍 在这项工作中提出了一种新的仿生优化算法,称为人工蜂鸟算法(AHA)来解决优化问题. AHA算法模拟自然界中蜂鸟的特殊飞行技能和智能觅食策略.模拟了觅食策略中使用的三种飞行技能,包括轴向. ...
- matlab基于人工蜂群算法的函数优化分析【matlab优化算法十一】
基于人工蜂群算法的函数优化分析 自然界中的群居昆虫,它们虽然个体结构简单,但是通过个体间的合作却能够表现出极其复杂的行为能力.受这些社会性昆虫群体行为的启发,研宄者通过模拟这些群体的行为提出了群集智能 ...
- Matlab代码:ADMM算法在考虑碳排放交易的电力系统最优潮流中的应用
Matlab代码:ADMM算法在考虑碳排放交易的电力系统最优潮流中的应用 关键词:交替方向乘子法, ADMM , 最优潮流 ,碳排放, 分布式优化 仿真软件:Matlab软件调用cplex求解器进行求 ...
- Matlab基于人工鱼群算法求解TSP问题
一. 人工鱼的结构模型 人工鱼是真实鱼抽象化.虚拟化的一个实体,其中封装了自身数据和一系列行为,可以接受环境的刺激信息,做出相应的活动.其所在的环境由问题的解空间和其他人工鱼的状态,它在下一时刻的行为 ...
- 【智能优化算法】基于人工蜂群算法求解多目标优化问题附matlab代码
1 简介 人工蜂群算法(Artificial Bee Colony Algorithm, 简称ABC算法)是一个由蜂群行为启发的算法,在2005年由Karaboga小组为优化代数问题而提出. 2 部 ...
- 基于PCA 人脸识别/人脸识别算法/人脸检测程序源码MATLAB ELM+PCA人脸识别 PCA人脸识别matlab代码 基于PCA算法的人脸识别
1.基于PCA的人脸识别代码 2.MATLAB ELM+PCA人脸识别 2.基于PCA的人脸识别(matlab)(采用PCA算法进行人脸识别,通过抽取人脸的主要成 分,构成特征脸空间,识别时将测试图像 ...
- rgv动态调度MATLAB代码,基于贪心算法的智能RGV的动态调度策略
李胜成 摘 要:一种智能加工系统由8台计算机数控机床(CNC).1辆轨道式自动引导车(RGV).1条RGV直线轨道.1条上料传送带.1条下料传送带等附属设备组成.文章通过研究RGV的选择判断规律,以 ...
- 复合梯形公式matlab代码_MATLAB龙贝格积分算法
什么是龙贝格积分算法 龙贝格(Romberg)积分算法也被称为逐次分半加速算法,通过把积分区间逐次分半的方法进行数值积分求解.由于其采用的是逐次分半计算,后一次计算是对前一次近似结果的修正,因此相对于 ...
- 层次聚类 matlab代码_聚类算法解析一
01 概述 本次针对聚类算法进行讲解,因为内容较多,会分多篇文章进行讲解,主要的内容包括聚类算法的整体介绍,针对不同类别的聚类算法比如划分聚类.层次聚类.密度聚类等算法进行介绍,在讲解每类算法时会结合 ...
- 人工蜂群算法python_python如何实现人工蜂群算法 python实现人工蜂群算法代码示例...
python如何实现人工蜂群算法?本篇文章小编给大家分享一下python实现人工蜂群算法代码示例,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. ABSIndividual. ...
最新文章
- zblog php和asp功能,ZBlog是否适合PHP或ASP?我们该如何选择?
- nginx正则表达式
- bootstrap-table 列属性_Bootstrap Table 列参数columns使用总结
- 徐州计算机应用宿舍,江苏徐州财经高等职业技术学校住宿条件
- 失恋33天——我用57天考了一个5A
- pdf旋转后如何保存?操作工具有这些
- 多省市出台关于区块链人才引进的计划
- TMI8150芯片驱动开发
- 国产FPGA研究框架
- linux如何查看证书过期时间,shell脚本:通过域名获取证书的过期时间
- HTML5笔记Day_01注释;标签;特殊符号;块元素和行内元素
- [初学Spring Boot](1):打不开localhost:8080/hello
- 揭秘PLC(三)RTS之IO篇
- 梦幻新开服务器维护,梦幻西游12月新开服务器
- vue父子组件之间的传值,及互相调用父子组件之间的方法
- centos下面,解压.gar.gz文件
- 断糖饮食和蜂蜜冲突吗?断糖减肥可以喝蜂蜜吗?
- 网络协议分析软件Sniffer Pro 4.7.5 破解版
- XiaoMi手机MIX 2S线刷固件和刷入Recovery、Root
- 企业管理内容有哪些了,分别是什么?