#库的导入
import numpy as np
import matplotlib.pyplot as plt
import heapq
#待求解问题,求解问题为求最小值
def function(x):
y1 = 0
for i in range(len(x)-1):
y2 = 100*((x[i+1] - x[i]**2)**2)+(x[i]-1)**2
y1 = y1 + y2
y = abs(0 - y1)
return y
m = 30 #种群数量
imax = 100 #迭代次数
dimen = 20 #解的搜索维度
rangelow = -10 #解的最小取值
rangehigh = 10 #解的最大取值
amax = 2 #系数向量初始值
#pop用于存储种群个体的位置信息,pop_fitness用于存储个体对应的适应度值
pop = np.zeros((m,dimen))
pop_fitness = np.zeros(m)
#对种群个体进行初始化并计算对应适应度值
for j in range(m):
pop[j] = np.random.uniform(low=rangelow, high=rangehigh,size=(1, dimen))
pop_fitness[j] = function(pop[j])
#allbestpop,allbestfit分别存储种群在历史迭代过程中最优个体解及对应适应度
allbestpop,allbestfit = pop[pop_fitness.argmin()].copy(),pop