📄 mypath1.m
字号:
function [eval]=testtargetlloc(nind,chrom)
xo=zeros(1000,1000) ;
yo=zeros(1000,1000) ;
eval=zeros(1000,1000) ;
r=[1 1];
g=[30 20];
p=[3 3;7 9;14 16];
m=10;
n=m;
jqr=1.6;
da=200;
db=0.3;
u=0;
v=0;
zag=3;
l=sqrt((g(1)-r(1))^2+(g(2)-r(2))^2);
dm=l/m;
dn=l/2/n;
a(1)=-l*(g(2)-r(2))/4/(sqrt((r(1)-g(1))^2+(g(2)-r(2))^2))+r(1);
a(2)=-l*(r(1)-g(1))/4/(sqrt((r(1)-g(1))^2+(g(2)-r(2))^2))+r(2);
b(1)=l*(g(2)-r(2))/4/(sqrt((r(1)-g(1))^2+(g(2)-r(2))^2))+r(1);
b(2)=l*(r(1)-g(1))/4/(sqrt((r(1)-g(1))^2+(g(2)-r(2))^2))+r(2);
c(1)=l*(g(2)-r(2))/4/(sqrt((r(1)-g(1))^2+(g(2)-r(2))^2))+g(1);
c(2)=l*(r(1)-g(1))/4/(sqrt((r(1)-g(1))^2+(g(2)-r(2))^2))+g(2);
d(1)=-l*(g(2)-r(2))/4/(sqrt((r(1)-g(1))^2+(g(2)-r(2))^2))+g(1);
d(2)=-l*(r(1)-g(1))/4/(sqrt((r(1)-g(1))^2+(g(2)-r(2))^2))+g(2);
x=[a(1) b(1) c(1) d(1) a(1)];
y=[a(2) b(2) c(2) d(2) a(2)];
axis([0 60 0 60]);
plot(x,y);
hold on;
for i=1:1:3,
plot(p(i,1),p(i,2),'rp');
hold on;
end;
for w=1:nind
for i=1:(m-1)
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;%%%%%%%%%%%%%%%%% chrom
xo(i,chrom(w,i))=(A*(g(1)-r(1))-B*(r(2)-g(2)))/(l^2);
yo(i,chrom(w,i))=(B*(r(1)-g(1))-A*(r(2)-g(2)))/(l^2);
xiaol=sqrt((g(1)-xo(i,chrom(w,i)))^2+(g(2)-yo(i,chrom(w,i)))^2);
dal=l-dm*i;
du=xiaol/dal;
u=u+du;
for k=1:zag
e=(xo(i,chrom(w,i))-p(k,1))^2+(yo(i,chrom(w,i))-p(k,2))^2-jqr^2;
if e>0
dv=0;
else dv=e^2;
end;
v=v+dv;
end;
end;
eval(w,1)=da*u+db*v;
end;
%定义遗传算法参数
m=10;
nind=40;
%%%%%%%%%%%%%%%%nind=40;
maxgen=400;%最大遗传代数
ggap=0.9;%代沟
trace=zeros(maxgen,2);%遗传算法性能跟踪初始值
basev=crtbase(m,m);%初始种群
chrom=crtbp(nind,basev);
%%%chrom=chrom;
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=[1 1];%最后画图函数
g=[30 20];
n=m;
l=sqrt((g(1)-r(1))^2+(g(2)-r(2))^2);
dm=l/m;
dn=l/2/n;
w=R;
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;
xo(i,chrom(w,i))=(A*(g(1)-r(1))-B*(r(2)-g(2)))/(l^2);
yo(i,chrom(w,i))=(B*(r(1)-g(1))-A*(r(2)-g(2)))/(l^2);
plot(xo(i,chrom(w,i)),yo(i,chrom(w,i)),'dg');
hold on;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -