人工鱼群算法

在一片水域中,鱼往往能自行或尾随其他鱼找到营养物质多的地方,因而鱼生存数目最多的地方一般就是本水域中营养物质最多的地方,人工鱼群算法就是根据这一特点,通过构造人工鱼来模仿鱼群的觅食、聚群及追尾行为,从而实现寻优。

中文名 人工鱼群算法 典型行为觅食行为 特 点 具有较快的收敛速度 停止条件 均方差小于允许的误差。

算法描述

在一片水域中,鱼往往能自行或尾随其他鱼找到营养物质多的地方,因而鱼生存数目最多的地方一般就是本水域中营养物质最多的地方,人工鱼群算法就是根据这一特点,通过构造人工鱼来模仿鱼群的觅食、聚群及追尾行为,从而实现寻优,以下是鱼的几种典型行为:

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实现相关推荐

  1. 【智能优化算法-人工蜂鸟算法】基于人工蜂鸟算法求解多目标优化问题附matlab代码MOAHA

    1 内容介绍 在这项工作中提出了一种新的仿生优化算法,称为人工蜂鸟算法(AHA)来解决优化问题. AHA算法模拟自然界中蜂鸟的特殊飞行技能和智能觅食策略.模拟了觅食策略中使用的三种飞行技能,包括轴向. ...

  2. matlab基于人工蜂群算法的函数优化分析【matlab优化算法十一】

    基于人工蜂群算法的函数优化分析 自然界中的群居昆虫,它们虽然个体结构简单,但是通过个体间的合作却能够表现出极其复杂的行为能力.受这些社会性昆虫群体行为的启发,研宄者通过模拟这些群体的行为提出了群集智能 ...

  3. Matlab代码:ADMM算法在考虑碳排放交易的电力系统最优潮流中的应用

    Matlab代码:ADMM算法在考虑碳排放交易的电力系统最优潮流中的应用 关键词:交替方向乘子法, ADMM , 最优潮流 ,碳排放, 分布式优化 仿真软件:Matlab软件调用cplex求解器进行求 ...

  4. Matlab基于人工鱼群算法求解TSP问题

    一. 人工鱼的结构模型 人工鱼是真实鱼抽象化.虚拟化的一个实体,其中封装了自身数据和一系列行为,可以接受环境的刺激信息,做出相应的活动.其所在的环境由问题的解空间和其他人工鱼的状态,它在下一时刻的行为 ...

  5. 【智能优化算法】基于人工蜂群算法求解多目标优化问题附matlab代码

    1 简介 人工蜂群算法(Artificial Bee Colony Algorithm, 简称ABC算法)是一个由蜂群行为启发的算法,在2005年由Karaboga小组为优化代数问题而提出.​ 2 部 ...

  6. 基于PCA 人脸识别/人脸识别算法/人脸检测程序源码MATLAB ELM+PCA人脸识别 PCA人脸识别matlab代码 基于PCA算法的人脸识别

    1.基于PCA的人脸识别代码 2.MATLAB ELM+PCA人脸识别 2.基于PCA的人脸识别(matlab)(采用PCA算法进行人脸识别,通过抽取人脸的主要成 分,构成特征脸空间,识别时将测试图像 ...

  7. rgv动态调度MATLAB代码,基于贪心算法的智能RGV的动态调度策略

    李胜成 摘  要:一种智能加工系统由8台计算机数控机床(CNC).1辆轨道式自动引导车(RGV).1条RGV直线轨道.1条上料传送带.1条下料传送带等附属设备组成.文章通过研究RGV的选择判断规律,以 ...

  8. 复合梯形公式matlab代码_MATLAB龙贝格积分算法

    什么是龙贝格积分算法 龙贝格(Romberg)积分算法也被称为逐次分半加速算法,通过把积分区间逐次分半的方法进行数值积分求解.由于其采用的是逐次分半计算,后一次计算是对前一次近似结果的修正,因此相对于 ...

  9. 层次聚类 matlab代码_聚类算法解析一

    01 概述 本次针对聚类算法进行讲解,因为内容较多,会分多篇文章进行讲解,主要的内容包括聚类算法的整体介绍,针对不同类别的聚类算法比如划分聚类.层次聚类.密度聚类等算法进行介绍,在讲解每类算法时会结合 ...

  10. 人工蜂群算法python_python如何实现人工蜂群算法 python实现人工蜂群算法代码示例...

    python如何实现人工蜂群算法?本篇文章小编给大家分享一下python实现人工蜂群算法代码示例,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. ABSIndividual. ...

最新文章

  1. zblog php和asp功能,ZBlog是否适合PHP或ASP?我们该如何选择?
  2. nginx正则表达式
  3. bootstrap-table 列属性_Bootstrap Table 列参数columns使用总结
  4. 徐州计算机应用宿舍,江苏徐州财经高等职业技术学校住宿条件
  5. 失恋33天——我用57天考了一个5A
  6. pdf旋转后如何保存?操作工具有这些
  7. 多省市出台关于区块链人才引进的计划
  8. TMI8150芯片驱动开发
  9. 国产FPGA研究框架
  10. linux如何查看证书过期时间,shell脚本:通过域名获取证书的过期时间
  11. HTML5笔记Day_01注释;标签;特殊符号;块元素和行内元素
  12. [初学Spring Boot](1):打不开localhost:8080/hello
  13. 揭秘PLC(三)RTS之IO篇
  14. 梦幻新开服务器维护,梦幻西游12月新开服务器
  15. vue父子组件之间的传值,及互相调用父子组件之间的方法
  16. centos下面,解压.gar.gz文件
  17. 断糖饮食和蜂蜜冲突吗?断糖减肥可以喝蜂蜜吗?
  18. 网络协议分析软件Sniffer Pro 4.7.5 破解版
  19. XiaoMi手机MIX 2S线刷固件和刷入Recovery、Root
  20. 企业管理内容有哪些了,分别是什么?

热门文章

  1. MonkeyTest——简单无脑的移动端自动化测试(初级篇)
  2. unity3d资源商店买的素材下载遇到问题
  3. 小白如何开始学习计算机编程?
  4. Oracle创建函数
  5. 简述java内存模型
  6. Windows 虚拟机介绍以及安装系统教程
  7. 算法导论第三版 第1章习题答案
  8. 深入理解JVM虚拟机 3.6
  9. webots使用以及第三方模型导入装配、运动学仿真教程
  10. 一文了解plc编程、电脑编程、手机APP编程、组态编程、云编程(下)