多目标算法 FCS算法
FCS(the farthest candidate selection)算法一种类似于拥挤距离算法的算法.
一个又一个的选取个体,保持解的分布性.
该算法伪代码(有点像matlab)如下
% 选取K个个体,每个个体有V个decision 变量,此变量存储已选择的点
Saccept = zeros(K,V);
% D向量是用来记载种群里每个个体的欧几里得距离的
D= zeros(N,1);
% 用于标记有几个 个体被选中 Saccept里
count = 0;
% 对于m个目标向量值逐个进行处理
for i = 1: m
% 选取出在第m个目标函数上的函数值 最小和最大的个体
Saccept = Saccept + argmin(f(:,i)) + argmax(f(:,i));
count+=2;
% 计算 每个未选择的点和已选择的点的 最小欧几里得距离
for i =1 : N
% x是 (P - Saccept) 中的个体, x'是Saccept中的个体
D(i) = min(distance (x,x'));
for i 1: K - count
% temp存储 欧几里得距离最大的个体
temp = population(D.max);
Saccept = Saccept + temp;
% 更新D里的值
for each x in (P- Saccept) ,x的index --> i
D(i) = min (D(i),distance(x,x'));