📄 mypath2.m
字号:
%定义遗传算法参数
%xo=zeros(1000,1000) ;
%yo=zeros(1000,1000) ;
%eval=zeros(1000,1000) ;
m=20;
nind=100;%%%%%%%%40
%%%%%%%%%%%%%%%%nind=40;
maxgen=2000;%最大遗传代数
ggap=0.9;%代沟
trace=zeros(maxgen,2);%遗传算法性能跟踪初始值
basev=crtbase(m,m);%初始种群
chrom=crtbp(nind,basev);
chrom=chrom+ones(nind,m);
gen=0;
objv=testtargetlloc(nind,chrom);%计算初始种群值
while gen<maxgen;
fitnv=ranking(objv);%分配适应度值
selch=select('sus',chrom,fitnv,ggap);%选择
selch=recombin('xovsp',selch,0.7);%交叉重组
f=rep([1;m],[1,m]);
selch=mutbga(selch,f);%变异
selch=fix(selch);%取整
objvsel=testtargetlloc(nind*0.9,selch);%计算子代目标函数值
[chrom objv]=reins(chrom,selch,1,1,objv,objvsel);%重新插入
gen=gen+1;
trace(gen,1)=min(objv);
trace(gen,2)=sum(objv)/length(objv);
end;
[Y,R]=min(objv);
%%%%%%%%%%%%%chrom(R,:),Y;
r=[200 150];%最后画图函数
g=[500 300];
n=m;
l=sqrt((g(1)-r(1))^2+(g(2)-r(2))^2);
dm=l/m;
dn=l/2/n;
w=R;
ss(1)=200;
ss(2)=150;
for i=1:m %%%%%%%%% for i=1:m
% A=r(2)*(g(2)+r(2))+r(1)*(g(1)-r(1))+dm*i*l;
% B=r(1)*(g(2)-r(2))-r(2)*(r(1)-g(1))+dn*l*chrom(w,i)-(l^2)/4;
A=r(2)*(g(2)-r(2))+r(1)*(g(1)-r(1))+dm*i*l;
B=-r(1)*(g(2)-r(2))+r(2)*(g(1)-r(1))+dn*l*chrom(w,i)-(l^2)/4;%%% B=-r(1)*(g(2)-r(2))+r(2)*(g(1)-r(1))+dn*l*chrom(w,i)-(l^2)/4
if i==m
xo(i,chrom(w,i))=500;
yo(i,chrom(w,i))=300;
else
xo(i,chrom(w,i))=(A*(g(1)-r(1))-B*(g(2)-r(2)))/(l^2);
yo(i,chrom(w,i))=(B*(g(1)-r(1))+A*(g(2)-r(2)))/(l^2);
end;
%plot(xo(i,chrom(w,i)),yo(i,chrom(w,i)),'o');%%%%%%%%%%% 'dg'
% %%
% %%%连线函数
dd(1)=xo(i,chrom(w,i));
dd(2)=yo(i,chrom(w,i));
plot([ss(1) dd(1)],[ss(2) dd(2)]);
hold on;
ss(1)=dd(1);
ss(2)=dd(2);
% %%%%%%
% %%
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -