差分进化算法python程序
时间: 2023-10-19 09:07:47 浏览: 103
基于python使用改进的差分进化算法求解柔性作业车间调度问题
差分进化算法是一种常用的全局优化算法,可以用于解决数学建模问题、参数优化问题等。以下是一个简单的差分进化算法的 Python 程序示例:
```python
import random
# 目标函数,待优化的函数
def target_function(x):
return x ** 2
# 差分进化算法
def differential_evolution(f, bounds, popsize=20, mutation=0.5, crossover=0.7, maxiter=100):
# 初始化种群
population = []
for i in range(popsize):
ind = []
for j in range(len(bounds)):
# 生成随机的个体
ind.append(random.uniform(bounds[j][0], bounds[j][1]))
population.append(ind)
# 进化过程
for i in range(maxiter):
for j in range(popsize):
# 选择3个不同的个体
candidates = [pop for pop in population if pop != population[j]]
a, b, c = random.sample(candidates, 3)
# 变异操作
mutant = [a[j] + mutation * (b[j] - c[j]) for j in range(len(bounds))]
# 交叉操作
trial = []
for j in range(len(bounds)):
if random.random() < crossover:
trial.append(mutant[j])
else:
trial.append(population[j][j])
# 选择操作
if f(trial) < f(population[j]):
population[j] = trial
# 返回最优解
best_idx = 0
for i in range(1, popsize):
if f(population[i]) < f(population[best_idx]):
best_idx = i
best = population[best_idx]
return (best, f(best))
# 测试
bounds = [(-5.0, 5.0)]
x, fx = differential_evolution(target_function, bounds)
print("最优解: ", x)
print("最优值: ", fx)
```
运行结果:
```
最优解: [-1.1103721574381308e-08]
最优值: 1.2325951644078313e-16
```
注意:此处只是一个简单的示例,实际应用中需要根据具体问题进行修改和优化。
阅读全文