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

📄 getallparetooptimal.m

📁 离散算法
💻 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 + -