⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 initpareto.sci

📁 基于SCILAB的The Genetic Algorithm Toolbox for SCILAB (GATS)工具箱
💻 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 + -