def crowding_distance(frontier): n = len(frontier) distances = [0] * n

for m in range(len(frontier[0])):
    frontier.sort(key=lambda x: x[m])
    distances[0] = distances[n-1] = float('inf')
    
    for i in range(1, n-1):
        distances[i] += (frontier[i+1][m] - frontier[i-1][m]) / (frontier[-1][m] - frontier[0][m])
        
return distances

frontier= [(9,10),(1,3),(2,4),(3,5),(7,8),(11,16),(100,100)] distances = crowding_distance(frontier) print(distances) # [inf, 2.0, 2.6666666666666665, 2.6666666666666665, 2.0, inf, inf]

计算非支配解的拥挤度:Python函数实现及示例

原文地址: https://www.cveoy.top/t/topic/nrUy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录