private void evolution() {
for (int t = 0; t < MAX_GEN; t++) {
for (int k = 0; k < scale; k++) {
ArrayList<SO> vii = new ArrayList<>();
//第一部分:惯性保持部分,自身交换对
int len = (int) (w * listV.get(k).size());
for (int i = 0; i < len; i++) {
vii.add(listV.get(k).get(i));
}
//第二部分:自我认知部分,和当前粒子中出现最好的结果比较,得出交换序列
//ra(Pid-Xid)
ArrayList<SO> a = minus(mUnits.get(k).getPath(), Pd.get(k).getPath());
float ra = random.nextFloat();
len = (int) (ra * a.size());
for (int i = 0; i < len; i++) {
vii.add(a.get(i));
}
//第三部分:社会认知部分,和全局最优的结果比较,得出交换序列
//rb(Pgd-Xid)
ArrayList<SO> b = minus(mUnits.get(k).getPath(), ());
float rb = random.nextFloat();
len = (int) (rb * b.size());
for (int i = 0; i < len; i++) {
vii.add(b.get(i));
}
(0);
listV.add(vii);
//执行交换,生成下一个粒子
exchange(mUnits.get(k).getPath(), vii);
}
//更新适应度的值
for (int i = 0; i < scale; i++) {
mUnits.get(i).upDateFitness();
if (Pd.get(i).getFitness() > mUnits.get(i).getFitness()) {
(i, mUnits.get(i));
}
if (() > Pd.get(i).getFitness()) {
Pgd = Pd.get(i);
bestT = t;
}
}
}
}