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

📄 multievaluate.sci

📁 基于SCILAB的The Genetic Algorithm Toolbox for SCILAB (GATS)工具箱
💻 SCI
字号:
function  [newpareto,newparetoVal,v]=MultiEvaluate(EvalFuns,pareto,paretoVal,vals)

numfun=size(EvalFuns);				// number of Evaluation functions
numvar=size(vals,1);				// number of variables
numpareto=size(pareto,1);			// number of exist Pareto border points
betterflag=zeros(numvar,1);			// initailize the better flag
renewflag=zeros(numpareto,1);		// initailize the renew flag 
dis2pareto=ones(numvar,1)*%inf;		// initailize the distance

//check wheterh i th is better than exist Pareto border points
for i=1:numvar
    for j=1:numpareto
        dis=Distance(pareto(j,:),vals(i,:));
        if  dis<dis2pareto(i)
            dis2pareto(i)=dis;
        end;
        if all(pareto(j,:)<=vals(i,:))&~(all(pareto(j,:)==vals(i,:)))
            betterflag(i)=1;				// i th is better than exist Pareto border
            renewflag(j)=1;
        elseif all(pareto(j,:)>=vals(i,:))
            betterflag(i)=-1;				// i th is not Pareto border
        end
    end
    if (betterflag(i)==-1)
        dis2pareto(i)=-dis2pareto(i);
    elseif (betterflag(i)==0)
        dis2pareto(i)=0;
    end
end

//check wheterh i th is better than each other
// to exclude those better than exist border but worse than some one 
for i=1:numvar
    for j=i+1:numvar
        if (betterflag(j)>=0)&(betterflag(i)>=0) then
            if all(vals(j,:)<=vals(i,:))&~(all(vals(j,:)==vals(i,:))) then
                betterflag(j)=-1;		// j th is not Pareto border
            end
        end
        if (betterflag(i)>=0)&(betterflag(j)>=0) then
            if all(vals(i,:)<=vals(j,:))&~(all(vals(i,:)==vals(j,:))) then
                betterflag(i)=-1;		// i th is not Pareto border
            end
        end
    end
end

// get Pareto value
np=dis2pareto(find(betterflag>0));
if (np==[]) then
    newparetoVal=mean(np)+paretoVal;
else
    newparetoVal=paretoVal;
end
v=dis2pareto+paretoVal;

// refresh new Pareto border
newpareto=[pareto(find(renewflag==0),:);vals(find(betterflag>=0),:)];





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -