算法原理请看https://blog.csdn.net/ztf312/article/details/78432711
下面是python 实现
# -*- coding: cp936 -*-
import numpy as np
import matplotlib.pyplot as plt
import math
import random
# Rastrigr 函数
def object_function(x):
f = 0
for i in range(0,len(x)):
f = f + (x[i] ** 2 - (10 * math.cos(2 * np.pi * x[i])) + 10)
return f
# 参数
def initpara():
NP = 100 # 种群数量
F = 0.6 # 缩放因子
CR = 0.7 # 交叉概率
generation = 2000 # 遗传代数
len_x = 10
value_up_range = 5.12
value_down_range = -5.12
return NP, F, CR, generation, len_x, value_up_range, value_down_range
# 种群初始化
def initialtion(NP):
np_list = [] # 种群,染色体
for i in range(0,NP):
x_list = [] # 个体,基因
for j in range(0,len_x):
x_list.append(value_down_range + random.rando