📄 multievaluate.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 + -