差分进化算法python实现
时间: 2023-12-04 11:57:55 浏览: 170
差分进化 的 Python 实现,用于投资组合优化的上下文中_python_代码_下载
5星 · 资源好评率100%
差分进化算法(Differential Evolution,DE)是一种基于群体智能的全局优化算法,广泛应用于优化问题的求解。下面是差分进化算法的 Python 实现示例:
```
import random
import numpy as np
# 定义目标函数
def target_func(x):
return x[0]**2 + x[1]**2
# 差分进化算法主函数
def DE(func, bounds, size=100, max_iter=1000, F=0.5, CR=0.3):
# 初始化种群
pop = np.zeros((size, len(bounds)))
for i in range(size):
for j in range(len(bounds)):
pop[i][j] = random.uniform(bounds[j][0], bounds[j][1])
# 开始迭代
for i in range(max_iter):
for j in range(size):
# 随机选择 3 个不同的个体
idxs = [idx for idx in range(size) if idx != j]
a, b, c = random.sample(idxs, 3)
# 变异操作
mutant = pop[a] + F * (pop[b] - pop[c])
# 交叉操作
trial = np.zeros(len(bounds))
j_rand = random.randint(0, len(bounds) - 1)
for k in range(len(bounds)):
if random.random() < CR or k == j_rand:
trial[k] = mutant[k]
else:
trial[k] = pop[j][k]
# 选择操作
if func(trial) < func(pop[j]):
pop[j] = trial
# 返回最优解和最优值
best_idx = np.argmin([func(p) for p in pop])
best_sol = pop[best_idx]
best_val = func(best_sol)
return best_sol, best_val
```
上述代码中,`target_func` 函数为目标函数,`bounds` 为变量范围,`size` 为种群大小,`max_iter` 为最大迭代次数,`F` 和 `CR` 分别为差分进化算法的两个参数。函数返回最优解和最优值。
阅读全文