initpareto.sci

来自「站长您好!GATS是一种遗传算法工具箱」· SCI 代码 · 共 50 行

SCI
50
字号
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 + =
减小字号Ctrl + -
显示快捷键?