遗传算法选择测试

import numpy as np
import geatpy as ea
import random

pop=np.array([[1, 11, 21],
                  [2, 12, 22],
                  [3, 13, 23],
                  [4, 14, 24],
                  [5, 15, 25],
                  [6, 16, 26],
                  [7, 17, 27],
                  [8, 18, 28]])
def selection(pop):
    FitnV = [[1.2], [0.8], [2.1], [3.2], [0.6], [2.2], [1.7], [0.2]]  # 是一个多维数组,对应每个个体染色体的适应度
    FitnV_l = sum(FitnV, [])  # 转化为列表
    FitnV2 = FitnV_l[:]  # 通过分片操作将列表FitnV_l的元素全部拷贝给FitnV2,产生一个新副本
    FitnV2.sort(reverse=True)  # 适应度降序排序,产生一个排序好的副本,同时保持原有列表不变
    USeF = FitnV2[5:]  # 精英选择中未被选择的个体
    USeF1=np.array(USeF).reshape(3,1) #转化为多维数组
    return ea.rws(USeF1, 3)  # 得到被选择个体的索引
code=selection(pop)
# print(code)
pop_1 = pop[code]#数组
# print(pop_1)
发布了13 篇原创文章 · 获赞 0 · 访问量 116

猜你喜欢

转载自blog.csdn.net/huahua20190514/article/details/103186534