📄 getallparetooptimal.m
字号:
% 函数功能: 对不同算法输入的函数值,求出其中的最优解,并返回 特定算法 获得的解在最优解中的个数
function [out_allParetoOptimal, out_myAlgCount] = getAllParetoOptimal(in_algFunVals, in_funInd, in_algsInd, in_myAlgNum)
% 输入:
% in_algFunVals: 需排列的元素,(1 × valueCount)维
% 输出:
%
f_solCount = size(in_algFunVals, 1);
% 初始所有的解都是最优解
isOptimal = ones(f_solCount, 1);
% 对每一个 目前还是最优解的解,与当前的最优解 比较,差的话去掉最优解称号,退出,找下一个;被比较的最优解差的话,也去掉称号,换下一最优解比较
for (iSol = 1: f_solCount)
comSol = 1;
while (isOptimal(iSol, 1) == 1) && (comSol <= f_solCount)
if (isOptimal(comSol, 1) == 1) % 是最优解才比较
if (in_algFunVals(comSol, in_funInd) <= in_algFunVals(iSol, in_funInd)) && (in_algFunVals(comSol, in_funInd + 1) <= in_algFunVals(iSol, in_funInd + 1)) && ...
((in_algFunVals(comSol, in_funInd) + in_algFunVals(comSol, in_funInd + 1)) < (in_algFunVals(iSol, in_funInd) + in_algFunVals(iSol, in_funInd + 1)))
isOptimal(iSol, 1) = 0;
elseif (in_algFunVals(iSol, in_funInd) <= in_algFunVals(comSol, in_funInd)) && (in_algFunVals(iSol, in_funInd + 1) <= in_algFunVals(comSol, in_funInd + 1)) && ...
((in_algFunVals(iSol, in_funInd) + in_algFunVals(iSol, in_funInd + 1)) < (in_algFunVals(comSol, in_funInd) + in_algFunVals(comSol, in_funInd + 1)))
isOptimal(comSol, 1) = 0;
end
end
comSol = comSol + 1;
end % 结束 while (isOptimal(iSol, 1) == 1) && (comSol <= f_solCount)
end
%%------------------------------------------%%
% 将最优解存入 allParetoOptimal 中
out_allParetoOptimal =[];
allPOCount = 0;
out_myAlgCount = 0;
for (iSol = 1: f_solCount)
if (isOptimal(iSol, 1) == 1)
out_allParetoOptimal = [out_allParetoOptimal; in_algFunVals(iSol, :)];
allPOCount = allPOCount + 1;
if (in_algFunVals(iSol, in_algsInd) == in_myAlgNum)
out_myAlgCount = out_myAlgCount + 1;
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -