📄 initpareto.sci
字号:
function [newpareto,newparetoVal,v]=InitPareto(EvalFuns,vals) // initailize the Pareto result set
numfun=size(EvalFuns); // number of Evaluation functions
numvar=size(vals,1); // number of variables
betterflag=zeros(numvar,1); // initailize the better flag
for i=1:numvar
for j=i+1:numvar
if all(vals(j,:)<=vals(i,:))&~(all(vals(j,:)==vals(i,:))) then // if variable i better than variable j
if betterflag(i)>=0
betterflag(i)=1; // i th individual is Pareto border
end
betterflag(j)=-1; // j th individual is not Pareto border
elseif all(vals(i,:)<=vals(j,:))&~(all(vals(i,:)==vals(j,:))) then // if variable j better than variable i
betterflag(i)=-1; // i th individual is not Pareto border
if betterflag(j)>=0
betterflag(j)=1; // j th individual is Pareto border
end
end
end
end
// get every point's distance from Pareto Border
dis2pareto=zeros(numvar,1); // initailize the distance
dis2pareto(find(betterflag<0))=-%inf; // initailize the Pareto distance
for i=1:numvar
for j=i+1:numvar
if (betterflag(j)>=0)&(betterflag(i)<0) then // if j is Pareto border
dis=-Distance(vals(j,:),vals(i,:));
if dis>dis2pareto(i) then
dis2pareto(i)=dis; //get shortest distance from i th to border points
end;
end
if (betterflag(i)>=0)&(betterflag(j)<0) then // if i is Pareto border
dis=-Distance(vals(i,:),vals(j,:));
if dis>dis2pareto(j) then
dis2pareto(j)=dis; //get shortest distance from j th to border points
end;
end
end
end
np=dis2pareto(find(betterflag<0)); //get distance of all non-Pareto individuals
if (np==[]) then
newparetoVal = 0;
else
newparetoVal=-min(np);
end
v=dis2pareto+newparetoVal; //get fitness of all individual
newpareto=vals(find(betterflag>=0),:); //get new pareto value
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -