遗传算法计算函数最小值f(x)=∑xi^2 基于matlib与python对比
采用种群数100,实数编码,进化100代交叉概率0.8,变异概率0.1
# -*- coding: utf-8 -*-
"""
"""
import numpy as np
#适应度函数
def func2(x):
summ=sum(pow(x,2))
return summ
D=10
NP=100
Xs=20
Xx=-20
G=100
Pc=0.8
Pm=0.1
nf=np.zeros((D,NP))
f=np.random.rand(D,NP)*(Xs-Xx)+Xx
Sortf=np.zeros((D,NP))
NSortf=np.zeros((D,NP))
MSLL=np.zeros(NP)
NMSLL=np.zeros(NP)
NMSLL1=np.zeros(NP)
#Index=np.zeros(NP)
trace=[]
for w in range(NP):
MSLL[w]=func2(f[:,w]) #MSLL是f的适应度
Index=np.argsort(MSLL)
SortMSLL=sorted(MSLL) #SortMSLL是从低到高排序后的MSLL
Sortf=f[:,Index] #由f升序得到
for gen in range