留下点赞,揭晓答案!
目标:# 计算f(x) = x12 + x22 - 3x1 + 4x2 + 2x1x2 的最小值, -10<xi<10 i=1,2
利用演化计算的DE差分进化算法1.0实现
import random
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
# 计算f(x) = x1**2 + x2**2 - 3x1 + 4x2 + 2x1x2 的最小值, -10<xi<10
class DE(object):
def __init__(self):
self.Max_epoch = 100 # 最大迭代次数
self.F = 0.5 # 缩放常数
self.CR = 0.9
self.population_size = 30
self.population = np.array([[random.random() * 20 - 10 for i in range(self.population_size)],
[random.random() * 20 - 10 for i in range(self.population_size)]])
print(self.population)
self.Min = -10
self.Max = 10
# 初始化种群
self.fig = None
self.ax = None
# 选择操作
def choose(self, pX_ori, pU_new):
Good = np.zeros_like(self.population)
x1 = pU_new[0<